軟體工程:必須以有組織的質量保證為基礎,全面質量管理和過程改進使得更加成熟的軟體工程方法的不斷出現。
目標:軟體工程旨在開發滿足使用者需要、及時交付、不超過預算和無故障的軟體,其主要目標如下:
(1) 合理預算開發成本,付出較低的開發費用;
(2) 實現預期的軟體功能,達到較好的軟體效能,滿足使用者的需求;
(3) 提高所開發軟體的可維護性,降低維護費用;
(4) 提高軟體開發生產率,及時交付使用。
過程:軟體過程是為獲得軟體產品,在軟體工具支援下由軟體工程師完成的一系列軟體工程活動。
生命週期:
(1) 計畫階段
確定待開發系統的總體目標和範圍,研究系統的可行性和可能的解決方案,對資源、成本及進度進行合理的估算。軟體計畫的主要內容包括所採用的軟體生命週期模型、開發人員的組織、系統解決方案、管理的目標與級別、所用的技術與工具,以及開發的進度、預算和資源分配。
沒有乙個客戶會在不清楚軟體預算的情況下批准軟體的方案,如果開發組織低估了軟體的費用,便會造成實際開發的虧本。反之,如果開發組織過高地估計了軟體的費用,客戶可能會拒絕所提出的方案。如果開發組織低估了開發所用的時間,則會推遲軟體的交付,從而失去客戶的信任。反之,如果開發組織過高地估計了開發所用的時間,客戶可能會選擇進度較快的其他開發組織去做。因此,對乙個開發組織來說,首先必須確定所交付的產品、開發進度、成本預算和資源配置。
(2) 分析階段
分析、整理和提煉所收集到的使用者需求,建立完整的分析模型,將其編寫成軟體需求規格說明和初步的使用者手冊。通過評審需求規格說明,確保對使用者需求達到共同的理解與認識。需求規格說明明確地描述了軟體的功能,列出軟體必須滿足的所有約束條件,並定義軟體的輸入和輸出介面。
在開發的初期,客戶從概念上描述軟體的概貌,但是這些描述可能是模糊的、不合理的或不可能實現的。由於軟體的複雜性,軟體開發人員很難將待開發的軟體及其功能視覺化,這對於乙個不懂得計算機專業知識的客戶來說是一件十分糟糕的事情。因此,需求階段常常產生錯誤,也許當開發人員將軟體交付給客戶時,客戶會說:"這個軟體是我們要求的,但並不是我們真正需要的。"為了避免或減少需求的錯誤,需要採用合適的需求獲取和需求分析技術,如快速原型和用例建模的方法等。
(3) 設計階段
設計階段的目標是決定軟體怎麼做,設計人員依據軟體需求規格說明文件,確定軟體的體系結構,進而確定每個模組的實現演算法、資料結構和介面等,編寫設計說明書,並組織進行設計評審。
軟體設計主要集中於軟體體系結構、資料結構、使用者介面和演算法等方面,設計過程將現實世界的問題模型轉換成計算機世界的實現模型,設計同樣需要文件化,並應當在編寫程式之前評審其質量。
(4) 實現階段
實現階段是將所設計的各個模組編寫成計算機可接受的程式**,與實現相關的文件就是源程式以及合適的注釋。
(5) 測試階段
在設計測試用例的基礎上,測試軟體的各個組成模組。然後,將各個模組整合起來,測試整個產品的功能和效能是否滿足已有的規格說明。
一旦生成了**,就可以開始模組測試,這種測試一般由程式設計師完成。但是,對於使用者來說,軟體是作為乙個整體執行的,而模組的整合方法和順序對最終的產品質量具有重大的影響。因此,除了單個模組的測試外,還需要進行整合測試、確認測試和系統測試等。
(6) 維護階段
一旦產品已交付執行之後,對產品所做的任何修改就是維護。維護是軟體過程的乙個組成部分,應當在軟體的設計和實現階段充分考慮軟體的可維護性。維護階段需要測試是否正確地實現了所要求的修改,並保證在產品的修改過程中,沒有做其他無關的改動。
開發模型:
增量模型(incremental model)
與建造大廈相同,軟體也是一步一步建造起來的。在增量模型中,軟體被作為一系列的增量構件來設計、實現、整合和測試,每乙個構件是由多種相互作用的模組所形成的提供特定功能的**片段構成,如圖1.8所示。
增量模型在各個階段並不交付乙個可執行的完整產品,而是交付滿足客戶需求的乙個子集的可執行產品。整個產品被分解成若干個構件,開發人員逐個構件地交付產品,這樣做的好處是軟體開發可以較好地適應變化,客戶可以不斷地看到所開發的軟體,從而降低開發風險。但是,增量模型也存在以下缺陷:
(1) 由於各個構件是逐漸併入已有的軟體體系結構中的,所以加入構件必須不破壞已構造好的系統部分,這需要軟體具備開放式的體系結構。
(2) 在開發過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應這種變化的能力大大優於瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟體過程的控制失去整體性。
在使用增量模型時,第乙個增量往往是實現基本需求的核心產品。核心產品交付使用者使用後,經過評價形成下乙個增量的開發計畫,它包括對核心產品的修改和一些新功能的發布。這個過程在每個增量發布後不斷重複,直到產生最終的完善產品。
例如,使用增量模型開發字處理軟體。可以考慮,第乙個增量發布基本的檔案管理、編輯和文件生成功能,第二個增量發布更加完善的編輯和文件生成功能,第三個增量實現拼寫和文法檢查功能,第四個增量完成高階的頁面布局功能。
軟體工程學習筆記
1 軟體工程的基本概念 軟體的概念 軟體 程式 文件 軟體是能夠完成預定義功能的可執行的電腦程式和使程式正常執行所需要的資料,加讓描述程式的操作和文件。程式 適合計算機處理的語句序列 它的目的是啥呢?是為了解決某個特殊的問題 文件 開發活動的記錄 用於通訊和交流,開發過程的管理和執行階段的維護 軟體...
軟體工程學習小結
軟體工程階段學習小結 第一部分 軟體工程知識 初次學習涉及軟體工程,在印象中時乙個很大很大的概念,涉及了理科中的方方面面,但正是有了軟體工程,使得我們做乙個專案的時候,變得有條不紊。我們把軟體工程定義為 軟體工程師應用電腦科學理論和技術以及功臣個管理原則和方法,按預定和進度實現滿足使用者要求的軟體產...
軟體工程學習思考
構建之法 現代軟體工程 相比於學習新知識,我覺得教材是在教我們怎麼去合理地管理專案 這對我們以後實際的工作有很大的幫助。課程需要動手的專案很多,開發方式多元,作業量也相對的大。即使是一周的個人小專案,也有類似 將實現的功能移植到乙個網頁程式上 的要求,這對我們進行知識的綜合應用有很大的幫助。第一周專...