渐进式的软体开发流程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《渐进式的软体开发流程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 渐进 软体 开发 流程 课件
- 资源描述:
-
1、軟體工程綜觀為何需要軟體工程n軟體工程是如何開發軟體的方法n資訊硬體日新月異,人們需要高品質且多功能性的軟體有效發揮硬體效用。n軟體已從單一程式演變成複雜系統。n單打獨鬥的開發方式已無法應付此種變化。n軟體工程愈來愈受到重視。軟體工程的重要性n軟體架構工程師與程式設計員有差異。n軟體架構工程師了解、設計系統而程式設計員撰寫程式。n系統開發勿採用土法煉鋼的方式,要有工法。n實踐軟體工程要成本與人力,但值得(在維護階段)。軟體開發的生命周期n 軟體規格建立n 軟體的設計與建置n 軟體測試驗收n 軟體維護更新軟體規格的建立n 軟體系統開發之前需要先進行需求分析並訂定功能。n 事先未規劃好軟體的功能,
2、會導致需求無限擴張。n 影響整個開發時程、資源、資金與成功與否。n 分析需求後,軟體功能已確定,接著系統設計。n 對軟體功能提出解決方案,同時設計軟體架構。n 複雜系統的開發可以切割成多個子系統再進行開發。n 同時由不同的開發者進行開發,最後再進行整合。n 可縮短期程,避免在發生錯誤時影響整個系統。軟體規格的建立n 規格產出後需檢視其中各子系統的關連性與介面設計是否合適n 模糊的規格需再次定義。軟體規格的建立專案發展(Project development)n 專案發展的過程通稱為專案生命週期發展(Project Life Cycle Develpment),以後簡稱為PLCD。n PLCD定
3、義軟體開發的過程,使軟體開發過程有跡可循。循序專案開發過程(Sequential PLC)n SPLC軟體開發過程分為幾個階段:n 專案開始(Project Initiation)n 系統分析(System Analysis)n 系統設計(System Design)n 系統實作(System Implementation)需求工程(Requirements Engineering)n 此階段得到系統的功能,以及使用上的限制條件。n 需求工程產出軟體系統規格:1.需求即客戶需求2.需求規格就是系統的功能與性能與效能規格3.軟體系統的規格屬於技術性的規格,是後續設計及製作的基礎。4.軟體系統規格
4、與需求規格有對應關係5.軟體系統規格涵蓋大部分細節。需求獲得策略1.由上而下(top-down):從企業的觀點出發,整合各部門需求。2.由下而上(bottom-up):從作業層次與部門的觀點出發。成效快成本低但容易忽略整合性。應用系統的需求n 系統規格經過確證(Validation)後才可定案。n 應用系統的需求會隨時間或環境改變。n 需求改變會造成系統設計及製作上的變更。需求分析流程n 一定要有領域的專家參與。n 先收集需求,再分析文件。n 消除互相衝突的需求或合併類似的需求。分析方法n分析方法:例如資料流(Data-flow analysis)。n分析結果的表示:例如資料流程圖。n系統模型
5、的規範:系統模型有既定的規範,使系統開發人員有統一的溝通標準。n語意資料模型(Semantic data model):描述資料的型態與資料之間的關係。n圖示說明:n矩形代表所描述的資料項目n相連的橢圓形代表資料項目的資料屬性n菱形代表所連接的資料項目的關係n1:M代表一對多的關係,例如一張訂單可能會產生多筆製造單。Semantic Data Mode1需求的定義n 軟體系統的需求分功能性的需求(Functional requirements)與非功能性的需求(Non-functional requirements)。n 功能性的需求與軟體系統必須提供的功能相關。n 非功能性的需求涵蓋了與功能
6、無關的其他需求。n 需求的定義要有觀念性描述與技術細節。n 需求規格為了避免誤解,要使用正規的方式描述。描述需求規格常見的方式n 需求規格語言:特定的語法及語意描述需求規格。n 圖形表示法:以圖形的方式來描述需求規格。n 結構化的自然語言:以結構化的定義加強自然語言的描述能力。n 數學表示法:以正規化的數學表示法描述需求的規格。n 類程式敘述表示法:使用類似於程式語言的語法與語意(Pseudo-code)定義系統的作業方式。需求決定方法nJAD(Joint Application Design):分析師、使用者、管理者都參與,由系統分析師主導。nJAD參與的人多,每個人發言的機會少,發言可能傾
7、向某一類意見,有人可能完全不發言,都是JAD的潛在問題。nGSS(Group Support System):嘗試克服JAD的缺點,例如讓參與者可匿名的表達意見。nCASE工具:運用在系統開發初期。包括規劃的工具、繪圖的工具與雛形化的工具。n雛形系統(Prototyping):建立簡易雛形系統以體驗系統的初步功能。透過雛形可評估某些較無法確定的需求。專案開始及系統分析階段n 專案開始:可行性評估n 開發需要成本,開發前要確定開發價值。n 系統分析:軟體開發生命週期(SDLC,Software development life cycle)的第一步。n SDLC先進行系統分析找出系統需求、初步設
8、計使用者介面。系統設計與實作n 系統分析師定義系統需求,軟體工程師再根據系統需求把系統設計出來。n 系統設計建立嚴謹的系統規格(Specification)n 系統設計可分成幾個步驟:u概念化設計(Conceptual Design):系統功能的初步設計。u系統架構設計(Architectural Design):循序架構還是物件導向的架構。u系統實作:撰寫程式、單元測試、系統整合。系統模型(System Model)n 模型描述真實世界的一部分,模型建立過程稱為塑模(modeling)。n 系統模型將需求結構化,更清楚地描述一個軟體系統。邏輯模型與實體模型n 系統分析與設計的各種模型分為邏輯
9、模型(Logical model)與實體模型(Physical model)。n 邏輯模型描述系統本身與功能,跟系統如何實作出來無關。n 基於邏輯模型,系統用什麼方式實作都可。n 邏輯模型也稱概念模型(Conceptual Model)或業務模型(Business model)n 實體模型加上實作的方法與技術,進一步描述邏輯模型的內容。n 實體模型必須考量技術限制,又稱為實作模型(Implementation model)或是技術模型(Technical model)。處理(Process)的概念n 處理是軟體系統的基本組成。把系統的處理都找出就能拼湊出系統。n 處理描述業務事件(busine
10、ss events),處理資料成資訊。n 處理的塑模過程,除了解其特性與功能外,還要確立與周圍環境、其他系統,以及其他處理的關係。n 系統本身就是一個處理。系統與環境透過輸入與輸出溝通。n 處理代表輸入或發生了事件進而完成的一件工作。n 處理塑模同樣有邏輯處理塑模(Logical process modeling)與實體處理塑模(Physical process modeling)之分。n 邏輯處理說明完成什麼工作,實體處理則說明如何完成。資料流程圖(Data Flow Diagram,DFD)n 處理塑模是傳統的軟體工程。n 資料流程圖描述系統資料的流向,及其處理。n 資料流程圖的圖示:1.
11、圓角方形代表處理(process)。2.方形代表外部實體(external agents),如資料來源(source)或是資料去處(sink)。3.開放區域代表資料儲存(data store),表示檔案或資料庫。4.帶箭頭的線段表示資料流(data flow)、輸入,或輸出。資料流程圖的表示法n DFD表示法採用Gane&Sarson的圖示,DeMarco&Yourdon也提出類似的表示方式。處理(process)實體(entity)資料儲存區(data store)資料流處理(data folw)資料流程圖繪製的規則n 繪製資料流程圖必須遵循一些規則1。0.0process不正確的畫法Dat
12、a flow0.0process 正確的畫法Data flowData flow規則:一個處理不能只有輸出處理邏輯描述n 資料流程圖表達系統的處理,並標示出處理之間關係。n 每個處理內部詳細的運作邏輯並沒有記錄,要靠邏輯塑模(logic modeling)說明。n 不必跟程式語言有關。n 工具包括純粹結構化的語言描述、決策表(Decision table)、決策樹(Decision tree)與狀態變化圖(State-transition diagram)等。Level-0 DFDn Process 0由其他的處理組成。n Level-0 DFD是系統最頂層的處理表示。n 系統分析師可以進一步
13、分析系統,繪出Level-0、Level-1、Level-n的DFD。n DFD是一種系統化與結構化的系統分析方法。n DFD未說明處理發生的時間、資料量或是資料流發生的頻率n 許多細節沒有交待,DFD僅描述邏輯概念的資料流程。資料塑模(Data modeling)n 資料塑模針對系統資料的特性進行分析。n 資料塑模是所有塑模技術中最重要的:1.資料是系統的核心,由多個處理共用。2.資料塑模建立了後續實作的基礎。資料塑模的方法n 物件導向的分析與設計透過劇情(scenarios)與使用案例(use case)了解系統需求並找出系統資料n ER模型,實體(entity)是首先要找出的n 物件導向
14、模型,則是先找出類別(class)。資料塑模常用的方法n使用者面談:溝通找出關鍵詞彙,並了解名稱與術語代表涵義。n面談:直接詢問使用者或客戶有那些資料需要處理、儲存或產生。n檢視現有表單或報表:找出需要定義與處理的資料。n運用CRC、腦力激盪等找出實體或類別n運用CASE工具與反向工程(Reverse engineering)技術從既有的資料庫反推資料模型。系統設計n 需求分析得到軟體系統的具體規格文件。n 軟體系統的設計是系統實作前的步驟。n 將規格化的需求轉換成具體的系統設計藍圖。n 設計流程(Design process)分成幾個不同階段的細部設計。n 設計的優劣對於軟體系統影響很大n
15、設計流程因開發者的技能、偏好與背景而異。設計的流程1.架構設計(Architectural design):決定子系統之間的關係。2.抽象規格(Abstract specification):建立子系統的抽象規格。(抽象指規格的表示不受限於工具或實作方式,是較高層次的設計)3.軟體規格(Software specification):軟體規格確定系統各部分的功能。4.介面設計(Interface design):GUI設計或子系統間的介面設計,例如API的設計。設計的流程5.元件設計(Component design):子系統內元件及其交互作用的設計。對於子系統的描述更詳細。6.資料結構設計(
16、Data structure design):資料結構定義系統的各種資料,是實作時需要的資料。9.(Algorithm design):演算法描述處理的邏輯,。常見的系統模型n 資料流程模型(Data flow model):描述資料的流程,資料在各子系統的進出狀況。n 實體關係模型(Entity-relationship model):描述系統的實體(entity)及實體間的關係。n 實體的涵意很廣,系統的人、事、物,甚至抽象的觀念,都可以是實體。n 結構化模型(Structural model):描述系統內的所有組件,及之間的交互作用。物件導向和軟體系統的設計n 物件導向的設計方法成熟,可
17、簡化設計。n 良好的系統設計必須易懂、易維護、有彈性,子系統間要能密切合作,且相依性越少越佳。函數導向的設計n 函數導向的設計適用於共用資料少的系統。n 函數導向的設計,函數內部的演算方式是獨立的一個單元。n 如果共用資料多,軟體系統的維護會變得很複雜。函數導向設計的基本觀念1f1f3f2f4f5f6共用資料共用資料函數導向設計的步驟1.資料流程(Data-flow)設計:以資料流程圖描述資料在系統中被處理的過程,並找出負責處理的函數。2.結構化分解(Structural decomposition):函數再分解成副函數(Sub-function)。3.細部設計:描述函數與次函數的細節,包括資
18、料的定義與程式的控制結構(Program control structure)。資料流程圖轉換成函數n 輸入資料的轉換:輸入的處理分解成細部的副函數。n 輸出資料的轉換:輸出資料的格式化與準備等分解成細部的副函數。n 資料的處理:資料輸入與輸出的處理之外的任何處理分解成細部的副函數。軟體設計的實務n 物件導向設計透過類別之間的繼承關係提升程式碼與設計的複用性(reuse)。n 有穩固的觀念與豐富的開發經驗,熟悉新的開發工具時所花的時間也會比較短處理設計n 對輸入、輸出、使用者介面、資料庫、互動等系統的組成都進行設計。n 系統內部的設計叫做系統的處理設計(process design),是系統的
19、內涵(system internals)。n 應詳細地描述,讓程式碼的撰寫有所依據。處理設計的指引n 怎樣才是好的處理設計?完成的系統容易了解、修改。n 處理設計的指引:1.系統要有分解結構(factored):系統應該要適度的分割,但又具高度的結合性。2.模組控制範圍(span of control):父模組不要包含太多的子模組,會增加系統的複雜度。3.模組的大小:一個模組的程式行數目約在50100行。4.模組的結合性(cohesion):模組的功能應該單純,不要包括多種功能。5.模組的共用:子模組的功能盡量讓其他模組共用。耦合(Coupling)的種類n 耦合性,系統模組之間的相關性,越低
20、越好。n 常見的耦合性:1.資料耦合(data coupling):模組之間因交換資料產生耦合,以資料做為模組的溝通媒介可降低模組的連動性不高。2.戳記耦合(stamp coupling):模組之間因交換資料結構產生連結,缺點是讓系統變複雜了。3.控制耦合(control coupling):模組之間因交換控制資訊而產生耦合。4.共用耦合(common coupling):模組使用全域資料(global data)而產生耦合。5.內容耦合(content coupling):模組可以直接引用其他模組內部的內容。模組內涵的設定n 模組的執行細節可採用二種方式來描述:1.類程式碼(pseudoco
21、de):跟程式碼類似,但不像程式語言要求嚴謹的語法。2.那西史奈德門圖(Nassi-Shneiderman diagram):以圖示表達程式的執行流程。有模型再寫程式是軟體開發的正常流程n 已有程式碼再試著去建立模型,是為了讓軟體系統好維護。n 有些模型可以用來自動產生程式碼,節省軟體撰碼成本軟體設計與開發流程1專案開始專案啟動與規劃Logicaldesign建造需求發展Physicaldesign維護處理設計(Process design)n 系統分析階段繪製資料流程圖(data flow diagran)了解系統的處理(process)。n 設計的結果影響整個系統的建造。處理設計的考量1.
22、如何得到好的設計:結構化系統設計可以採用模組化方法(modularization)。2.結合度(cohesion):系統的每一個元件專注於一種功能。3.耦合性(coupling):系統中不同元件間的相依性。結構圖(Structure charts)n 以階層(hierarchy)的方式表示系統的組成。n 描述系統及其組成之間的關係。n 從結構圖裡可看到系統如何分成多個組成的內部結構。結構圖的圖示n 結構圖中的模組透過參數的傳遞溝通,以資料鍵(data couple)或旗標(flag)表示。n 資料鍵代表兩個模組之間交換的資料,以有箭頭線段的空心小圓圈表示,箭頭的方向表示資料的流向。n 旗標代表
23、兩個模組之間交換的控制資料,以帶有箭頭線段的實心小圓圈表示。n 模組(module)是形成結構圖的基本單元結構圖的慣用表示圖案Read XOpen APQXflagerrordatacouple預先定義的模組預先定義的模組內嵌的模組條件式的呼叫從資料流程圖到結構圖n 結構圖從資料流程圖轉換過來,方法有兩種:轉換分析(transform analysis)與交易分析(transaction analysis)。1.以交易為主的系統(transaction-centered system):系統的主要功能是將資料傳到適當的目的地。2.以轉換為主的系統(transform-centered syst
24、em):系統的主要功能是從現有的資料產生新的資料。使用者介面設計n 使用者介面設計是以使用者為中心的設計活動。n 完成設計以後可以建立雛形,做為初步評估的基礎。n 物件導向技術有兩個主要的影響:應用系統的資料模型與應用系統的開發。n 資料模型的影響來自於新的資料庫應用。n 系統開發的影響來自於軟體工程及圖型化使用者介面(GUL Graphical User Interface)的進展。物件導向軟體工程物件導向軟體工程n 1990年代物件導向分析與設計開始發展n 1994年IBM正要導入物件導向技術,發展SOM(system object model)n Booch的OO大作。n 物件導向編程觀
展开阅读全文