軟件開發(fā)生命周期
- 軟件定義時(shí)期:包括可行性研究和詳細(xì)需求分析過程
- 軟件開發(fā)時(shí)期:軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 軟件運(yùn)行和維護(hù)
軟件系統(tǒng)文檔
- 用戶文檔:描述系統(tǒng)功能和使用方法
- 系統(tǒng)文檔:描述系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測試等各方面的內(nèi)容
軟件系統(tǒng)工具
- 軟件開發(fā)工具:需求分析工具、設(shè)計(jì)工具、編碼和排錯(cuò)工具
- 軟件維護(hù)工具:版本控制工具、文檔分析工具、開發(fā)信息庫工具、逆向工程工具、再工程工具
- 軟件管理和軟件支持工具:項(xiàng)目管理工具、配置管理工具、軟件評價(jià)工具、軟件開發(fā)工具的評價(jià)和選擇
軟件設(shè)計(jì)
四個(gè)活動(dòng)
- 數(shù)據(jù)設(shè)計(jì)
- 架構(gòu)(體系結(jié)構(gòu))設(shè)計(jì)
- 人機(jī)界面(接口)設(shè)計(jì)
- 過程設(shè)計(jì)
能力成熟度模型
CMM(能力成熟度模型)
CMM(Capability Maturity Model) 是一個(gè)用于評估和改進(jìn)軟件開發(fā)過程成熟度的模型。最初由美國卡內(nèi)基梅隆大學(xué)軟件工程研究所(SEI)提出,主要用于軟件開發(fā)過程的改進(jìn),后來發(fā)展為 CMMI(能力成熟度模型集成),應(yīng)用范圍更廣。CMM 將軟件開發(fā)過程的成熟度劃分為五個(gè)級別,每個(gè)級別代表更高水平的過程優(yōu)化和控制能力。
1. 初始級(Initial,Level 1)
- 過程是無序的、不可預(yù)測的,依賴個(gè)人能力。
- 成功取決于個(gè)人英雄主義,而不是組織的標(biāo)準(zhǔn)化流程。
- 項(xiàng)目可能會(huì)超預(yù)算、延期,質(zhì)量難以保證。
2. 可重復(fù)級(Repeatable,Level 2)
- 組織建立了基本的項(xiàng)目管理流程,能夠重復(fù)過去成功的經(jīng)驗(yàn)。
- 采用軟件項(xiàng)目管理實(shí)踐,如需求管理、配置管理、質(zhì)量保證等。
- 過程可重復(fù),但仍然依賴于具體項(xiàng)目或個(gè)人,可能缺乏一致性。
3. 已定義級(Defined,Level 3)
- 組織已制定和文檔化標(biāo)準(zhǔn)的軟件開發(fā)過程,并在全組織范圍內(nèi)執(zhí)行。
- 過程標(biāo)準(zhǔn)化,不同項(xiàng)目遵循統(tǒng)一的方法,減少依賴個(gè)人經(jīng)驗(yàn)。
- 強(qiáng)調(diào)軟件工程管理和組織級的過程改進(jìn)。
4. 已管理級(Managed,Level 4)
- 組織使用量化數(shù)據(jù)監(jiān)控和控制軟件開發(fā)過程,關(guān)鍵過程變量(如質(zhì)量、生產(chǎn)率)可預(yù)測。
- 過程績效的度量和分析成為核心,數(shù)據(jù)驅(qū)動(dòng)決策,減少過程的變異性。
- 目標(biāo)是提升可預(yù)測性,提高軟件產(chǎn)品質(zhì)量。
5. 優(yōu)化級(Optimizing,Level 5)
- 組織持續(xù)優(yōu)化軟件開發(fā)過程,能夠自適應(yīng)變更,持續(xù)改進(jìn)。
- 采用先進(jìn)的技術(shù)和方法,如根因分析、缺陷預(yù)防、過程自動(dòng)化等。
- 關(guān)注創(chuàng)新,持續(xù)提升生產(chǎn)率和質(zhì)量。
敏捷模型
開發(fā)宣言:個(gè)體和交互勝過過程和工具、可以工作的軟件勝過面面俱到的文檔、客戶合作勝過合同談判、響應(yīng)變化勝過遵循計(jì)劃
逆向工程
軟件的逆向工程是分析程序,力圖在比源代碼更高抽象層次上建立程序的表示過程,逆向工程是程序的恢復(fù)過程。逆向工程的四個(gè)級別
- 實(shí)現(xiàn)級
- 結(jié)構(gòu)級
- 功能級
- 領(lǐng)域級
其中,領(lǐng)域級抽象級別最高,完備性最低,實(shí)現(xiàn)級抽象級別最低,完備性最高

系統(tǒng)設(shè)計(jì)
系統(tǒng)設(shè)計(jì)的主要目的:為系統(tǒng)制定藍(lán)圖,在各種技術(shù)和實(shí)施方法中權(quán)衡利弊,精心設(shè)計(jì),合理地使用各種資源,最終勾畫出新系統(tǒng)的詳細(xì)設(shè)計(jì)方法
系統(tǒng)設(shè)計(jì)方法:結(jié)構(gòu)化設(shè)計(jì)方法、面向?qū)ο笤O(shè)計(jì)方法
系統(tǒng)設(shè)計(jì)的主要內(nèi)容:概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)
概要設(shè)計(jì)基本任務(wù):又成為系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì),是將系統(tǒng)的功能需求分配給軟件模塊,確定每個(gè)模塊的功能和調(diào)用關(guān)系,形成軟件的模塊結(jié)構(gòu)圖,即系統(tǒng)結(jié)構(gòu)圖,產(chǎn)出概念設(shè)計(jì)說明書
詳細(xì)設(shè)計(jì)基本任務(wù):模塊內(nèi)詳細(xì)算法設(shè)計(jì)、模塊內(nèi)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫的物理設(shè)計(jì)、其他設(shè)計(jì)(代碼、輸入/輸出格式、用戶界面)、編寫詳細(xì)設(shè)計(jì)說明書,評審
系統(tǒng)設(shè)計(jì)基本原理:抽象化、自頂而下,逐步求精、信息隱蔽(封裝)、模塊獨(dú)立(高內(nèi)聚低耦合)
系統(tǒng)設(shè)計(jì)原則:保持模塊的大小適中、盡可能減少調(diào)用的深度、多扇入少扇出(扇入:其他模塊調(diào)用我,扇出:我調(diào)用其他模塊)、單入口單出口、模塊的作用域應(yīng)該在模塊之內(nèi)、功能應(yīng)該是可預(yù)測的
系統(tǒng)結(jié)構(gòu)圖(SC):又稱為模塊結(jié)構(gòu)圖,它是軟件概要設(shè)計(jì)階段的工具,反應(yīng)系統(tǒng)的功能實(shí)現(xiàn)和模塊之間的聯(lián)系與通信,包括各模塊之間的層次結(jié)構(gòu),即反映了系統(tǒng)的總體結(jié)構(gòu)
內(nèi)聚性
針對單個(gè)模塊,內(nèi)聚程度

耦合性
針對模塊之間,耦合程度

詳細(xì)設(shè)計(jì)
基本步驟:
- 分析并確定**輸入/輸出數(shù)據(jù)的邏輯結(jié)構(gòu)
- 找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元
- 按一定的規(guī)則由輸入、輸出的數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)
- 列出基本操作與條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)為止
- 用偽代碼寫出程序
詳細(xì)設(shè)計(jì)的表示工具有圖形工具、表格工具和語言工具。其中圖形工具有業(yè)務(wù)流圖、程序流程圖、PAD圖、NS流程圖
- 程序流程圖:又稱為程序框圖。用方框表示一個(gè)處理步驟,菱形表示一個(gè)邏輯條件,箭頭表示控制流向。其優(yōu)點(diǎn)是:結(jié)構(gòu)清晰、易于理解、易于修改。其缺點(diǎn)是:只能**描述執(zhí)行過程而不能描述有關(guān)的數(shù)據(jù)
- NS流程圖:又稱為盒圖。是一種強(qiáng)制使用結(jié)構(gòu)化構(gòu)造的圖示工具,也稱為方框圖。其具有以下特點(diǎn):功能域明確、不可能任意轉(zhuǎn)移控制、很容易確定局部和全局?jǐn)?shù)據(jù)的作用域、很容易表示嵌套關(guān)系及模塊的層次關(guān)系
- PAD圖:一種改進(jìn)的圖形描述方式,可以用來取代程序流程圖,相比程序流程圖更直觀,結(jié)構(gòu)更清晰。其最大的優(yōu)點(diǎn)是能夠反應(yīng)和描述自頂向下的歷史和過程。PAD圖提供了5種基本控制結(jié)構(gòu)的圖示,并允許遞歸使用
人機(jī)界面設(shè)計(jì)
三大黃金原則
- 置于用戶控制之下
- 減少用戶的記憶負(fù)擔(dān)
- 保持界面的一致性