Presentation is loading. Please wait.

Presentation is loading. Please wait.

第1章 軟體工程與系統開發概論 1-1 軟體與資訊系統 1-2 軟體工程的基礎 1-3 軟體開發生命週期 1-4 軟體生命週期模型.

Similar presentations


Presentation on theme: "第1章 軟體工程與系統開發概論 1-1 軟體與資訊系統 1-2 軟體工程的基礎 1-3 軟體開發生命週期 1-4 軟體生命週期模型."— Presentation transcript:

1 第1章 軟體工程與系統開發概論 1-1 軟體與資訊系統 1-2 軟體工程的基礎 1-3 軟體開發生命週期 1-4 軟體生命週期模型

2 1-1 軟體與資訊系統 1-1-1 軟體 1-1-2 資訊系統

3 1-1-1 軟體-軟體與硬體 「軟體」(Software)是能夠控制電腦執行工作的技術和方法,它就是使用程式語言(Programming Language)建立的程式(Programs),一種在電腦上可執行的應用程式或軟體系統。 「硬體」(Hardware)是我們可以實際看到的東西,單純擁有電腦硬體並無法發揮電腦的功能,只有在軟體和硬體都具備的情況下,電腦才能替我們工作,幫助我們解決問題。

4 1-1-1 軟體-軟體與硬體的差異 軟體和硬體特性上的差異,如下表所示: 軟體(Software) 硬體(Hardware) 邏輯元素
實體元素 使用工程化的方法進行開發 使用工廠生產線製造 沒有備用零件,不會損壞,但是功能可能不再符合需求 有備用零件,因為用久了會損壞,可以替換零件 大部分是客製化的產品 大都是使用大量生產的零件所組裝而成

5 1-1-1 軟體-軟體的種類 對於電腦系統來說,在電腦上執行的軟體可以分為兩大類,如下所示:
系統軟體(System Software):負責連接電腦硬體與應用程式,讓電腦可以正常工作的軟體,例如:作業系統、系統最佳化工具和掃毒程式等。 應用程式(Applications):一種處理特定工作的電腦程式,例如:數學計算分析、文書處理、試算表和程式語言整合開發工具等。

6 1-1-1 軟體-軟體的組成元素 對於電腦來說,軟體是電腦上執行的一種程式,但是對於軟體工程來說,完整軟體應該由三部分所組成(Pressman,2001),如下所示: 電腦程式(Computer Programs):使用各種程式語言撰寫程式碼所編譯成的執行檔,這是一種儲存在媒體上的二進位資料。 文件(Documents):與電腦程式相關的文件,例如:需求文件、模型和使用手冊等。 資料與資料結構(Data & Data Structures):電腦程式執行時所管理的資料結構。

7 1-1-2 資訊系統-說明 「系統」(System)是一組可以達成特定目的,有組織、互動和相關元素的集合。「資訊系統」(Information System)是一種軟體,不過,它並不是一種簡單的應用程式,而是一種大型軟體系統(Large Software System),包含多種相關的子系統,在硬體架構上,更可能是多層企業系統架構,或Web基礎的網路應用程式,如下圖所示:

8 1-1-2 資訊系統-範例 網路銀行的資訊系統,可以讓客戶直接透過網路銀行執行帳戶管理。基本上,資訊系統包含的元件有:員工(人)、資料或資訊、程序、軟體、硬體和通訊(Benson & Standing,2002)。

9 1-2 軟體工程的基礎 1-2-1 軟體工程 1-2-2 軟體開發的完整流程

10 1-2-1 軟體工程-說明 軟體工程(Software Engineering)主要是在研究如何使用系統化、組織化和量化方法來進行軟體系統的開發,也就是嘗試使用一些經過驗證且可行的方法,在可接受的時間和預算內開發出高品質的軟體系統。 簡單的說,軟體工程是一門學科,可以整合方法、工具和流程來將真實世界的需求轉換成軟體世界的軟體,如下圖所示:

11 1-2-1 軟體工程-方法、工具和流程 方法(Methods):一種建立軟體的方法,即第1-3節軟體開發生命週期的各種活動:需求、分析、設計、實作、測試和部署等。 工具(Tools):自動或半自動支援方法的工具,包含語法檢查、文件出版、專案管理和系統分析設計工具等,即所謂的CASE工具(Computer-Aided Software Engineering Tools)。 流程(Procedures):定義各活動執行順序的流程來建立軟體,並且提供軟體品質的管控與變更的協調。

12 1-2-1 軟體工程-三大階段 定義階段(Definition Phase): 著重在軟體需求是什麼(What),即軟體提供哪些功能、處理哪些資訊、建立哪種使用介面、擁有哪些限制條件和驗證標準等。 開發階段(Development Phase): 著重於如何達成軟體需求(How),即決定使用的資料結構、軟體系統架構、實作程序、撰寫程式碼和執行測試等。 維護階段(Maintenance Phase):也稱為支援階段(Support Phase),著重在軟體的變更(Change),即除錯、升級、增加功能和提昇效能等。

13 1-2-1 軟體工程-相關術語 術語 說明 專案(Project)
專案包含軟體開發相關的所有活動(Activities),簡單的說,就是走完整個軟體開發生命週期來完成軟體系統的開發 活動(Activity) 一組作業(Tasks)集合來達成特別的目的,例如:需求、分析、設計和實作等 參與者(Participant) 參與專案的人員,包含客戶(Client)、開發者(Developer)、專案管理者(Project Manager)和終端使用者(End User,即使用者)等 里程碑(Milestone) 重要的專案事件 主要里程碑(Major Milestone) 指重要商業決策事件的時間點,例如:預算或預定時程等 階段(Phase) 大部分軟體開發模型的階段就是活動,不過,Rational統一流程是指開發過程的2個主要里程碑之間,詳見第1-4-5節的說明 作業(Task) 活動的組成元素,這是可管理的最小工作單位 工作產品(Work Product) 在軟體開發過程建立的產品,包含文件或部分軟體的半成品,也稱為產出物(Artifact)

14 1-2-2 軟體開發的完整流程 一般來說,當公司或行號需要軟體來幫助進行商業活動,或解決特定問題時,就可以開始進行軟體開發的流程,完整的軟體開發流程如右圖所示:

15 1-3 軟體開發生命週期-說明 「軟體開發生命週期」(Software Development Life Cycle,SDLC)包含軟體開發過程的活動和建立的工作產品(Work Products),主要分成兩大類,如下所示: 以活動為中心(Activity-Centered):專注於整個軟體開發過程的活動(Activities)。 以實體為中心(Entity-Centered):專注於整個軟體開發過程中,在上述活動建立的工作產品(Work Products)。

16 1-3 軟體開發生命週期-基本活動 雖然目前有相當多種軟體開發生命週期,不過各種軟體開發生命週期擁有的基本活動,或稱為階段(Phases)有: 需求 分析 設計 實作 測試 部署

17 1-3 軟體開發生命週期-需求 需求(Requirement)是程式開發者與客戶和使用者共同定義的系統需求,可以擷取出系統的功能性和非功能性需求,其簡單說明如下所示: 功能性需求(Functional Requirements):描述系統一定需要提供的功能,也就是定義系統輸入和輸出行為的規格。例如:選課系統提供註冊和選課功能。 非功能性需求(Nonfunctional Requirements):描述系統特性或一些限制條件。例如:選課系統限制學生只能選15門課。

18 1-3 軟體開發生命週期-分析 在定義出系統需求後,就可以針對需求進行分析(Analysis),以便將系統需求抽象化到應用系統之中。簡單的說,就是從系統需求找出解決方案。目前仍然是以高階角度來看問題,並不涉及應用程式的軟硬體架構,和使用哪一種程式語言來實作。

19 1-3 軟體開發生命週期-設計 在取得系統需求和完成分析(Analysis)後,設計(Design)是建立完整的解決方案,詳細描述如何建立整個軟體系統來滿足定義的系統需求。主要可以分成兩部分,如下所示: 系統設計(System Design):決定系統的軟硬體架構,使用的作業系統,並且將系統分割成子系統,評估是否使用資料庫系統來儲存永久性資料(Persistent Data)等。 物件設計(Object Design):將分析建立的分析模型(Analysis Model)或概念模型(Conceptual Model)轉換成設計模型(Design Model),也就是找出完整的物件屬性、方法和更詳細的類別關係(Relationships)。

20 1-3 軟體開發生命週期-實作 實作(Implementation)就是撰寫程式碼(Coding),將建立的設計模型(Design Model)使用指定程式語言來撰寫出原始程式碼,例如:C++、C#、Viaual Basic和Java等語言,即所謂的實作模型(Implementation Model)。

21 1-3 軟體開發生命週期-測試 測試(Testing)如同工廠生產線的品質管制,其目的是確認已經成功建立一套可用的軟體程式。其主要工作有兩項,如下所示: 證實(Verification):檢查實作建立的程式是否符合定義的需求。 驗證(Validation):測試是否真正解決客戶問題和滿足客戶需求。

22 1-3 軟體開發生命週期-部署 部署(Deployment)是在軟體完成測試後,將最終釋出版本的軟體交至客戶的使用者,包含軟體安裝、教育訓練和使用手冊等。

23 1-4 軟體生命週期模型 1-4-1 瀑布式模型 1-4-2 反覆式與漸進式模型 1-4-3 雛型模型 1-4-4 螺旋模型
1-4-5 Rational統一流程 1-4-6 模型驅動架構

24 1-4 軟體生命週期模型 「軟體生命週期模型」(Software Lifecycle Models)簡稱生命週期模型,或稱為系統開發流程模型(System Development Process Models),可以用來指導我們如何進行分析、設計、開發和維護資訊系統。

25 1-4-1 瀑布式模型-簡介 瀑布式模型(Waterfall Model)源於早期結構化系統開發(Structured System Development),屬於一種傳統的生命週期模型,它是1970年代最常用的生命週期模型,並且成功使用COBOL語言建立多個大型專案。 瀑布式模型對於程式開發者來說,這是一種相當直覺的軟體開發過程,它就是循序執行一序列的開發與管理過程(Processes),每一個過程就是第1-3節的活動,開發過程需要等到前一個活動完成後,才允許進入下一個活動。

26 1-4-1 瀑布式模型-圖例

27 1-4-2 反覆式與漸進式模型-簡介 隨著物件導向技術的成熟,再加上物件導向分析與設計的普及,瀑布式開發過程因為無法快速建立產品且缺乏彈性的問題,已經逐漸被反覆式與漸進式模型(Iterative and Incremental Model)所取代。 反覆式與漸進式模型首先針對幾個主要需求來進行開發,以便快速建立初期版本的產品,然後將產品交給客戶試用,程式開發者針對試用結果的回應來修正系統,以便儘早發現可能的錯誤。

28 1-4-2 反覆式與漸進式模型-圖例

29 1-4-3 雛型模型-簡介 雛型模型(Prototyping Model)主要是針對哪些在專案初期無法了解完整需求的情況,因為使用者只知道系統部分功能的大概,而無法詳細描述系統完整的特點和功能。此時,我們可以使用雛型模型來進行系統開發,而不用一開始就了解使用者的完整需求。 雛型模型在作法上是先建立一個簡單的初期版本,即雛型,然後提交給客戶進行評估,這部分也屬於雛型模型流程的一部分,等到客戶回應後,再依據回應的需求開發新系統,通常雛型的程式碼會捨棄,然後依據客戶確認的需求來開發全新的系統。

30 1-4-3 雛型模型-圖例

31 1-4-4 螺旋模型-簡介 螺旋模型(Spiral Model)是整合瀑布式和雛型模型的優點,並且導入風險分析(Risk Assessment)的生命週期模型,風險分析是在開發流程新增步驟來評估每一個版本的雛型,以決定是否繼續開發,如果客戶覺的風險太高,整個專案可能會停止。 螺旋模型的整個開發流程是使用螺旋方式來進行每一次的循環,共分為4個象限:計劃(Planning)、風險分析(Risk Assessment)、工程(Engineering)和客戶評估(Customer Evaluation)。

32 1-4-4 螺旋模型-圖例

33 1-4-5 Rational統一流程-說明 IBM公司的Rational統一流程(Rational Unified Process,RUP)不僅僅是一個生命週期模型,還是一個支援開發者的完整開發環境,稱為RUP平台(RUP Platform),可以使用IBM公司的CASE工具來進行Rational統一流程的物件導向系統開發,即Rational Rose或Software Architect。 物件導向方法論 Rational統一流程是Ivar Jacobson、Grady Booch和James Rumbaugh融合他們的OOSE、Booch和OMT物件導向方法論後,在Rational公司提出的物件導向方法論,可以使用物件導向技術來開發軟體或資訊系統。 方法論(Methodology)是指能夠解決各種問題的方法集合。方法(Methods)則是定義一種可重複使用的技術來解決指定的問題,這是一個能夠複製的流程,以便取得解決指定問題的可靠結果,如下圖所示:

34 1-4-5 Rational統一流程-物件導向方法論
Rational統一流程是Ivar Jacobson、Grady Booch和James Rumbaugh融合他們的OOSE、Booch和OMT物件導向方法論後,在Rational公司提出的物件導向方法論,可以使用物件導向技術來開發軟體或資訊系統。 方法論(Methodology)是指能夠解決各種問題的方法集合。方法(Methods)則是定義一種可重複使用的技術來解決指定的問題,這是一個能夠複製的流程,以便取得解決指定問題的可靠結果,如下圖所示:

35 1-4-5 Rational統一流程-主要特點 使用案例驅動(Use-Case Driven):Rational統一流程是一種使用案例驅動的軟體程式開發過程,使用案例不只可以使用在需求階段,它還主導整個開發過程。在方法論的每一個反覆過程都是由選擇的使用案例來啟動,程式開發者從使用案例出發進行物件導向分析與設計;測試者以使用案例來測試實作的系統是否符合使用案例的需求。 架構中心(Architecture-Centric):因為軟體架構會影響系統重要的靜態和動態觀點,所以,Rational統一流程是以架構為中心來進行軟體系統開發。在選擇的軟體架構下建立多種使用案例來描述系統功能,不過只有5%到10%的主要使用案例會用來建構系統的核心功能,呈現出子系統、建立類別和元件。 反覆式與漸進式(Iterative and Incremental):Rational統一流程是一種反覆式與漸進式的軟體開發過程。

36 1-4-5 Rational統一流程-工作流程 Rational統一流程共有9個核心工作流程(Core Workflows),分為6個核心處理工作流程(Core Process Workflows)和3個核心支援工作流程(Core Supporting Workflows),如下圖所示:

37 1-4-5 Rational統一流程-四個階段 Rational統一流程是一種反覆式與漸進式的生命週期模型,提供一套完整的軟體開發工作流程,包括商業塑模、需求、分析、設計、實作、測試和部署等。基本上,Rational統一流程適用在大型資訊系統的開發,其開發過程分成四個階段,如下圖所示:

38 1-4-5 Rational統一流程-反覆過程 Rational統一流程的四個階段各自擁有多個反覆過程,每個反覆過程包含商業塑模、需求、分析、設計、實作、測試和部署等工作流程,如下圖所示:

39 1-4-5 Rational統一流程-四個階段的說明
初始階段(Inception Phase):在此階段訂出專案的範圍與目標,列出可能的軟體架構,識別出可能的風險和決定如何處理它。 強化階段(Elaboration Phase):在此階段的目標是建立足夠的能力,在開發小組面對財務、時程和其他限制條件下建立新系統,其主要工作是以使用案例來執行需求擷取和定義系統架構。 建構階段(Construction Phase):使用反覆式和漸進式模型來建立軟體系統,可以在客戶測試環境成功的執行此系統。 轉換階段(Transition Phase):將軟體系統安裝與上線使用,釋出Beta測試版本取得使用者回應,以便依據使用者的回應來更新系統,完成此階段的主要里程碑就是釋出正式版本。

40 1-4-6 模型驅動架構-說明 模型驅動架構(Model Driven Architectiure,MDA)是由OMG(Object Management Group)組織開發的生命週期框架(Lifecycle Framework),這是使用模型驅動方式(Model Driven Approach)來進行軟體系統的開發。 模型(Models)是使用文字或圖形來描述系統規格和其環境,模型驅動就是在生命週期的分析、設計、實作、測試和部署流程,專注於不同層次模型的建立。 MDA是將統一塑模語言(Unified Modeling Language)視為一種可執行規格(Executable Specifications),可以將我們使用UML建立的模型直接轉換成不同平台的程式碼。

41 1-4-6 模型驅動架構-架構流程

42 1-4-6 模型驅動架構-變形與對映 變形(Transformation)是一種過程,可以將PIM加上其他資訊來變形轉換產生PSM,多個PSM變形產生不同的程式碼,例如:Java或C#程式碼。一般來說,CASE工具可以支援模型之間的自動變形轉換,當然部分變形轉換仍然需要人工來處理,換句話說,在MDA建立的模型是一種「變形模型」(Transformation Model),如下圖所示:

43 End


Download ppt "第1章 軟體工程與系統開發概論 1-1 軟體與資訊系統 1-2 軟體工程的基礎 1-3 軟體開發生命週期 1-4 軟體生命週期模型."

Similar presentations


Ads by Google