1 / 42

軟體工程與系統開發概論

第 1 章. 軟體工程與系統開發概論. 1-1 軟體與資訊系統 1-2 軟體工程的基礎 1-3 軟體開發生命週期 1-4 軟體生命週期模型. 1-1 軟體與資訊系統. 1-1-1 軟體 1-1-2 資訊系統. 1-1-1 軟體 - 軟體與硬體. 「軟體」( Software )是能夠控制電腦執行工作的技術和方法,它就是使用程式語言( Programming Language )建立的程式( Programs ),一種在電腦上可執行的應用程式或軟體系統。

Download Presentation

軟體工程與系統開發概論

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 軟體-軟體與硬體的差異 • 軟體和硬體特性上的差異,如下表所示:

  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 軟體工程-相關術語

  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),如下圖所示:

More Related