# 軟體工程 Chapter2 ###### tags: `軟體工程` ## Three phase of the work associated with software engineering - definetion phase : what? - development phase : how? - support phase : change associated with correction , adaptaion , enhancement , and prevention ## Framework Activites :::success - communication - planning - modeling - analysis of requirements - design - construction - code generation - testing - deployment ::: ## Umbrella Activities :::success - software project management - formal technical reviews - software quality assurance - software configuration management - document preparation and production - reusability management - measurement - risk management ::: ## Types of process flow 1. linear flow ![](https://i.imgur.com/ttJ1Sfw.png =90%x) 2. iterative flow ![](https://i.imgur.com/snPOjiL.png =90%x) 3. evolution flow ![](https://i.imgur.com/3NRbYTi.png =70%x) 4. parallel flow ![](https://i.imgur.com/AjuRd8g.png =70%x) ## Process Models **Linear process model** :::success ##### Waterfall model - 定義 : ![](https://i.imgur.com/PostUvQ.png =70%x) - 問題 : 很少有project能按照sequential flow完成,客戶也很難把所有需求表達出來 - 適合的專案類型 : well-defined and stable requirements ##### V model - 定義 : 為瀑布式開發的變形,每⼀階段皆會進⾏測試,以確保該階段之產物符合要求。 - 適合的專案類型 : 適用於專案需求明確、結構穩定、風險較低的專案開發項目,如: 傳統桌面軟體開發、醫療器械軟體開發等等。 ![](https://i.imgur.com/8rCREm7.png =50%x) ::: **Prototyping model** :::success - 定義 : 從poorly understood requirements開始,目標為理解整個系統的需求 - 問題 : 半成品,compromise while implementation ![](https://i.imgur.com/bj1Tmy1.png =50%x) ::: :::info ##### Waterfall model with prototyping ![](https://i.imgur.com/5AMuMaG.png =70%x) ::: **Incremental model** - 定義 : combine elements of linear and parallel process flows,start with well-understood requirements,work with customers to evovle a final system. ![](https://i.imgur.com/qRpz34j.png) - waterfall v.s. incremental waterfall比較適合簡單的project,incremental適合複雜的。 - evolutionary v.s. incremental 一開始從部分完整功能開始,逐漸產生其他功能,最後形成一個完整系統 ![](https://i.imgur.com/I2TIPtK.png =70%x) 一開始從完整版的雛型開始,慢慢調整系統功能 ![](https://i.imgur.com/pQbA0Nm.png =70%x) **Spiral model** - 定義 : software is developed in a series of evolutionary releases - 問題 : - uncertain number of cycles to construct product - 需要專業評估風險的人(增加cost) - problem will occur if a major risk is not uncovered and managed - 適合的專案類型 : development of large-scale system ![](https://i.imgur.com/2JLuVK2.png) **Concurrent development model** - 定義 : define a series of events that will trigger transition from state to state , used to represent iterative and concurrent elements of any process models - ![](https://i.imgur.com/UjaO4Mb.png =80%x) **Specialized process model** :::success ##### Componenet-based development model(元件式開發模型) - 定義 : 將一些可重複使用的元件調整後加入到新的project裡面 ![](https://i.imgur.com/3NwAb3m.png =90%x) ::: :::info ##### Formal methods model - 定義 : apply when a mathematical specification is to be developed , ambiguity , incompleteness , and inconsistency can be discovered and corrected more easily. - 問題 : time-consuming and expensive ::: :::warning ##### Aspect-oriented software development(AOSD) - Aspect : customer concerns that cut across multiple system functions , features and information e.g. user interface aspects distribution aspects persistence aspects security aspects transaction aspects - 定義 : provide a process and methodological approach for defining , specifying , designing , and constructing aspects ; it usually adopts evolutionary and concurrent process model ::: ## Unified process **phase** : - inception : 了解客戶需求,開始初步規劃 - elaboration : 詳細、擴充規劃和use-case - construction : 寫程式 - transition : 利用beta版本或是使用手冊測試 - production ![](https://i.imgur.com/d3Iftuu.png) ## Personal software process(PSP) - framework activites - planning - high-level design - high-level design review - development - postmortem : 紀錄bug的發生原因,所有activities皆要留下紀錄 - PSP represents a disciplined , metrics-based(量化指標) approach to software engineering ## Team software process(TSP) - 定義 : provide a defined process framework for managing , tracking and reporting the team's progress - framework activities: - launch - high-level design - implementation - integration and test - postmortem ## PSP , TSP , and CMMI ![](https://i.imgur.com/u94xIhL.png =70%x) ## The primary goal of software process High quality = project timeliness , less work