軟考架構師(6)——系統開發基礎知識
一:軟體生命週期
軟體生存週期,分為8個階段: 1、可行性研究與計劃 2、需求分析 3、概要設計 4、詳細設計 5、實現 6、整合測試 7、確認測試 8、使用和維護
二:軟體開發模型
1:瀑布模型
開發如同瀑布,從一個階段流向下一個階段。其思想認為軟體開發是一個階段化的精確過程,每一個步驟都劃分得很明確,階段之間有明顯的界線。
當軟體需求明確、穩定時,可以採用瀑布模型,一旦需求變動劇烈,往往到測試階段才暴露,造成修改代價太大,風險難以控制。
2:演化模型
若干次瀑布模型的迭代。原型的基礎上,根據使用者在呼叫原型的過程中提出的反饋意見和建議,對原型進行改進,獲得原型的新版本,重複這一過程,直到演化成最終的軟體產品。
根據迭代內容,演化模型可以演變為螺旋模型、增量模型和原型法開發。
3:增量模型
增量釋出將系統劃分為若干版本,每一個版本都是完整的。版本的劃分要均勻。
4:螺旋模型
特點是強調風險,每次瀑布模型迭代前,引入風險控制。將軟體專案分解成一個個小專案,每個都標識風險,直到所有風險都被確定。 演化模型適合高風險專案。
5:原型
部分衍生關係:
6:快速應用開發(RAD)
是一個增量型的軟體開發過程模型,強調極短的開發週期。RAD模型是瀑布模型的一個高速變種,通過大量使用可複用構件,採用基於構件的建造方法贏得快速開發。如果需求理解得好且約束了專案的範圍,利用這種模型可以很快地創建出功能完善的資訊系統。其流程從業務建模開始,隨後是資料建模、過程建模、應用生成、測試及反覆。
7:構件組裝模型
面向構件的程式設計(COP):
關注於如何支援建立面向構件的解決方案。一個基於一般 OOP 風格的 COP 定義如下( Szyperski ,1995):
面向構件的程式設計需要下列基本的支援:
——多型性(可替代性);
——模組封裝性(高層次資訊的隱藏);
——後期的繫結和裝載(部署獨立性);
——安全性(型別和模組安全性)。
8:統一過程
二維模型,橫軸是時間,縱軸是工作內容。
RUP 也稱為 UP 、統一過程,其核心特點是:以架構為中心,用例驅動,迭代與增量。該開發模型分4個階段,分別為:
初始:是為系統建立業務模型並確定專案的邊界。
細化:確定系統的體系結構細化階段的任務是分析問題領域,建立健全的架構基礎,淘汰專案中最高風險的元素。
構造:在構建階段,要開發所有剩餘的構件和應用程式功能,把這些構件整合為產品,並進行詳細測
移交:
交付階段的重點是確保軟體對終端使用者是可用的。交付階段的主要任務是進行β測試,製作產品釋出版本;對終端使用者支援文件定稿;按使用者的需求確認新系統;培訓使用者和維護人員;獲得使用者對當前版本的反饋,基於反饋調整產品,如進行除錯、效能或可用性的增強等。
9:敏捷開發
敏捷開發是面向物件的。
1:極限程式設計
2:特徵驅動開發
3:Scrum
增量迭代開發,整個開發過程由若干個短的迭代週期組成,一個短週期稱為一個sprint,長度2到4周,甚至1周。 scrum按照優先順序對使用者需求進行排序、開發,每個條目稱為使用者故事。
10:軟體重用
11:基於架構的軟體設計
1:ABSD
1)ABSD有3個基礎: 功能分解 選擇架構風格來實現質量和業務需求 使用軟體模板
2)ABSD方法與生命週期
3:ABSD開發模型
ABSDM。將這種基於架構的軟體過程劃分為 架構需求、設計、文件化、複審、實現、演化6個子過程。
三:軟體開發方法
淨室方法
淨室方法從使用盒結構表示的分析和設計模型入手,一個“盒”在某特定的抽象層次上封裝系統(或系統的某些方面)。通過逐步求精的過程,盒被精化為層次,其中每個盒具有引用透明性:每個盒規約的資訊內容對定義其精華是足夠的,不需要信賴於任何其他盒的實現。這使得分析人員能夠層次地劃分一個系統,從在頂層的本質表示轉移向在底層的實現特定的細節。
淨室方法主要使用三種盒型別:
(1)黑盒。這種盒刻劃系統或系統的某部分的行為。通過運用由激發得到反應的一組變遷規則,系統(或部分)對特定的激發(事件)作出反應。
(2)狀態盒。這種盒以類似於物件的方式封裝狀態資料和服務(操作)。在這個規約檢視中,表示出狀態盒的輸入(激發)和輸出(反應)。狀態盒也表示黑盒“啟用歷史”,即,封裝在狀態盒中的,必須在蘊含的變遷間保留的資料。
(3)清晰盒。在清晰盒中定義狀態盒所蘊含的變遷功能,簡單地說,清晰盒包含了對狀態盒的過程設計。
結構化方法
結構化方法屬於自頂向下的開發方法,其基本思想是“自頂向下,逐步求精”,強調開發方法的結構合理性及所開發軟體的結構合理性。結構是指系統內各個組成要素之間的相互聯絡、相互作用的框架。結構化開發方法提出了一組提高軟體結構合理性的準則,如分解與抽象、模組獨立性、資訊隱蔽等。針對軟體生存週期各個不同的階段,
它包括了結構化分析(Structured Analysis,A)、結構化設計(Structured Design,SD)結構化程式設計(Structured Programing,P)
面向物件方法
內容較多,再整理
原型法
逆向工程
再工程
軟體重構
逆向工程
實現級:包括程式的抽象語法樹、符號表、過程的設計表示。
結構級:包括反映程式分量之間相互依賴關係的資訊,例如呼叫圖、結構圖、程式和資料結構。
功能級:包括反映程式段功能及程式段之間關係的資訊,例如資料和控制流模型。
領域級:包括反映程式分量或程式諸實體與應用領域概念之間對應關係的資訊,例如實體關係模型。
四:系統規劃
1:可行性分析
(1)技術可行性。
(2)經濟可行性。
(3)操作可行性。
2:成本效益分析
3:新舊系統分析與比較
五:需求工程
1:需求獲取
使用者訪談,使用者調查,現場觀摩,閱讀歷史文件,聯合討論會
2:需求分析
業務流程分析:
資料流圖:資料的流動方向
資料字典:資料的資訊集合
3:需求定義
4:需求管理
各個人員(領域專傢什麼的)
六:軟體測試
1:型別
動態測試:執行程式時發現錯誤,分為黑盒,白盒,灰盒
靜態測試:指被測試程式不在機器上執行,而採用人工檢測和計算機輔助靜態分析的手段對程式進行檢測,有桌前檢查,程式碼審查,程式碼走查
2:測試的階段:
1:單元測試
2:整合測試
3:確認測試
4:系統測試