【軟體工程】一、基本概念
一、概論
1.定義
軟體的定義:
電腦科學百科全書:計算機系統中的程式和文件;
軟體的特點:
系統維護佔大多數時間。
軟體的種類:
系統軟體:作業系統,編譯程式
支撐軟體:資料庫
應用軟體
2.軟體工程的起源
1947年馮諾依曼提出“程式設計”的概念,開啟了軟體設計時代。
1968年第一次提出“軟體工程”概念(北大西洋公約組織在德國的軟體開發會議),並倡導以工程的原理來開發軟體,以此解決軟體危機。(標準化)
軟體工程定義:以工程化的方法制作軟體的工程。(為什麼要強調這是一個工程呢?因為在馮諾依曼提出程式設計後,軟體誕生,但開發毫無效率,沒有標準化,導致了軟體危機,所以需要工程化的方法、原則、原理,進而誕生軟體工程。)
3.軟體工程的本質和基本手段
本質:
不同抽象層之間術語之間的“對映”
不同邏輯層之間處理邏輯的“對映”
從問題到軟體開發過程中需要建立模型:
模型:對事物抽象本質的概括。
建模:找到解決問題的一般途徑。
4.軟體工程框架
軟體工程可定義為三元組:<目標,原則,活動>
二、軟體生存週期
1.軟體生存週期過程的概念
Q1:軟體開發有哪些活動一即要做哪些對映?
Q2:應如何正確組織開發活動,形成求解軟體的邏輯?
整體框架:
軟體生存週期:
軟體產品/系統的全週期。形成概念–>開發–>使用–>維護–>淘汰。
軟體生存週期過程(軟體過程):
軟體生存週期中一系列相關過程。
為了表述軟體開發需要做“什麼活動(對映)”,引入了以下三個概念:過程是活動的集合,活動是任務的集合,任務是把輸入轉換成輸出的操作。
2.過程分類
(1)基本過程(primary processes)
是指那些與軟體生產直接相關的活動集。如:開發,維護等。
(2)支援過程(supporting processes)
是有關各方按其目標所從事的一系列支援活動集。如:文件,評審,驗證。
(3)組織過程(institutional processes)
是指那些與軟體生產組織有關的活動集。如:管理,基礎設施,人力資源等。
3.生存週期模型
常見軟體週期模型:
3.1瀑布模型(古老)
一句話:一步一步順序的開發。
(1)瀑布模型將軟體生存週期的各項活動規定為依固定順序而連線的若干階段工作;
(2)瀑布模型規定了每一階段的輸入,以及本階段的工作成果,作為輸出傳入下一階段。
優點:
每階段進行復審,支援使用者參與。
缺點:
客戶必須完整、清晰的表達他們的需求。
缺乏靈活性。
專案結束之前不能演示系統能力。
3.2增量模型
該模型有一個假設,即需求可以分段,成為一系列增量產品,每一增量可以分別地開發。
優點:
第一個可交付版本所需成本和時間少。
可減少使用者需求變更。
允許增量投資
缺點:
早期需求不完整,不穩定可能導致重新開發。
增加管理成本。
3.3演化模型
一句話:先開發核心的,剩下的慢慢來。
是一種有彈性的過程模式,由一些小的開發步組成,每一步歷經需求分析、設計、實現和驗證,產生軟體產品的一個增量。通過這些迭代,完成最終軟體產品的開發。
3.4噴泉模型
特徵:迭代,無縫
與面向物件技術的關係
學習筆記來源於中國大學Mooc上北京大學的《軟體工程》選修課。