软件工程学习笔记概要
一、軟件工程的框架
?? 目標(biāo)、過程、原則
?
1.目標(biāo):正確性、可用性、開銷合宜
??????? 軟件工程活動:
需求->設(shè)計(jì)->實(shí)現(xiàn)->確認(rèn)->支持等活動
需求:問題分析:需求定義
需求分析:功能規(guī)約
設(shè)計(jì):概要設(shè)計(jì):整個軟件體系結(jié)構(gòu)
詳細(xì)設(shè)計(jì):程序員可用的模塊說明
實(shí)現(xiàn):得到可執(zhí)行的程序代碼
確認(rèn):貫穿于整個開發(fā)過程
支持:包括修改和完善
還有管理過程、支持過程、培訓(xùn)過程等
?
2.軟件工程過程:
生產(chǎn)一個最終能滿足需求 且 達(dá)到工程目標(biāo) 的軟件產(chǎn)品所需要的步驟。
開發(fā)過程、運(yùn)作過程、維護(hù)過程
覆蓋需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)、支持及維護(hù)等活動
?
3.軟件工程的原則
圍繞工程設(shè)計(jì)、工程支持、工程管理在軟件開發(fā)過程中必須遵守的原則
1.選取適宜的開發(fā)范型
2.選取合適的設(shè)計(jì)方法
3.提供高質(zhì)量的工程支持
4.重視開發(fā)過程的管理
?
二、開發(fā)模型
1.V模型:快速應(yīng)用開發(fā)模型(RAD),開發(fā)和測試同時(shí)進(jìn)行
?
需求分析:需求規(guī)格說明書
概要設(shè)計(jì):搭建架構(gòu)、表述各模塊功能、模塊接口、數(shù)據(jù)傳遞的實(shí)現(xiàn)等事務(wù)
詳細(xì)設(shè)計(jì):達(dá)到偽代碼級別,包含數(shù)據(jù)庫設(shè)計(jì)說明
軟件編碼
單元測試:主要測試程序代碼,確保各個模塊正確編譯(具體到模塊、類、函數(shù))
集成測試:主要測試各模塊間組合后功能實(shí)現(xiàn)情況,模塊接口連接是否成功、數(shù)據(jù)傳遞是否正確,主要目的是檢查軟件單元之間的接口是否正確
系統(tǒng)測試:按照軟件規(guī)格說明書中要求,測試功能性能是否符合需求,系統(tǒng)是否存在漏洞
驗(yàn)收測試:用戶拿到軟件時(shí),在使用現(xiàn)場按規(guī)格說明書做相應(yīng)測試確定軟件達(dá)到效果
?
缺陷:
僅把測試過程當(dāng)做編碼之后的一個階段,忽視了對需求分析、系統(tǒng)設(shè)計(jì)的驗(yàn)證,需求的滿足情況到后期驗(yàn)收測試才被驗(yàn)證
解決思路:測試在軟件做需求分析時(shí)就有測試用例的跟蹤
?
適用范圍:
適用于一些傳統(tǒng)信息系統(tǒng)應(yīng)用的開發(fā),
而高風(fēng)險(xiǎn)高性能的系統(tǒng)、互聯(lián)網(wǎng)軟件或者難以具體模塊化的系統(tǒng)不適用,需要更強(qiáng)調(diào)迭代的開發(fā)模型或敏捷開發(fā)模型
?
2.瀑布模型:
?
階段間具有順序性和依賴性:
前一階段完成后一階段才能開始
前一階段輸出文本為后一階段的輸入文本
推遲實(shí)現(xiàn)的觀點(diǎn)
質(zhì)量保證:每個階段必須交付合格的文檔;對文檔進(jìn)行審核
?
缺點(diǎn):開始時(shí)必須把需求做到最全,懼怕用戶測試中的反饋和需求變更
?
三、軟件生命周期(SDLC)
軟件的產(chǎn)生直到報(bào)廢的生命周期
1.瀑布型生命周期:
包括可行性分析與開發(fā)項(xiàng)計(jì)劃、需求分析、設(shè)計(jì)(概要和詳細(xì))、編碼、測試、維護(hù)等階段
典型六階段:
1.問題的定義及規(guī)劃:主要確定軟件的開發(fā)目標(biāo)及其可行性
2.需求分析:在確定軟件開發(fā)可行的情況下,對軟件需要實(shí)現(xiàn)的各個功能進(jìn)行詳細(xì)分析。必須制定需求變更計(jì)劃來應(yīng)對變化
3.軟件設(shè)計(jì):主要根據(jù)需求分析的結(jié)果,對整個軟件系統(tǒng)進(jìn)行設(shè)計(jì),如系統(tǒng)框架設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)等
4.程序編碼:將軟件設(shè)計(jì)的結(jié)果轉(zhuǎn)換成計(jì)算機(jī)可運(yùn)行的程序代碼。
5.軟件測試:整個測試過程分為單元測試、組裝測試、系統(tǒng)測試三階段;測試方法有白盒測試、黑盒測試兩種;應(yīng)建立詳細(xì)測試計(jì)劃并按計(jì)劃進(jìn)行測試
6.運(yùn)行維護(hù):持續(xù)時(shí)間最長的階段,包括糾錯性維護(hù)和改進(jìn)型維護(hù)兩個方面
?
四、敏捷開發(fā)
以用戶的需求進(jìn)化為核心,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開發(fā)。軟件項(xiàng)目在構(gòu)建初期被切分為多個子項(xiàng)目,并分別完成。此過程中軟件一直處于可使用狀態(tài)
宣言原則:
1.最重要,盡早、不斷交付有價(jià)值的軟件滿足客戶需求
2.能過駕馭變化,保持客戶競爭優(yōu)勢
3.經(jīng)常交付可以工作的軟件
4.業(yè)務(wù)人員與開發(fā)者朝夕相處
5.給開發(fā)者提供適宜的環(huán)境滿足他們的需要
6.相信開發(fā)者能夠完成任務(wù)
7.開發(fā)小組最有效率的信息傳達(dá)方式是面對面交流
8.可以工作的軟件是主要度量尺度
9.提倡可持續(xù)開發(fā),各方應(yīng)維持不變的節(jié)奏
10.對卓越技術(shù)與良好設(shè)計(jì)的不斷追求有助于提高敏捷性
11.盡可能減少工作量的藝術(shù)至關(guān)重要
12.最好的架構(gòu)、需求和設(shè)計(jì)都源自于自我組織的團(tuán)隊(duì)
13.每隔一段時(shí)間都要進(jìn)行總結(jié)
?
五、高內(nèi)聚低耦合
1.定義
內(nèi)聚:描述模塊內(nèi)的功能聯(lián)系,一個好的內(nèi)聚模塊應(yīng)當(dāng)恰好做一件事
耦合:描述軟件結(jié)構(gòu)中各模塊之間相互聯(lián)系的關(guān)系,耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問一個模塊的點(diǎn)以及通過接口的數(shù)據(jù)
2.概念
耦合性(塊間聯(lián)系):模塊間的聯(lián)系越緊密,其耦合性越強(qiáng),模塊間相互獨(dú)立性越差。模塊間相互獨(dú)立性取決于模塊間接口的復(fù)雜性、調(diào)用的方式及傳遞的信息
內(nèi)聚性(塊內(nèi)聯(lián)系):模塊功能強(qiáng)度的度量,模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。模塊內(nèi)各元素聯(lián)系越緊密,內(nèi)聚性越高。
高內(nèi)聚:單一責(zé)任原則,一個模塊由相關(guān)性很強(qiáng)的代碼組成,只負(fù)責(zé)一項(xiàng)任務(wù)
低耦合:一個完整的系統(tǒng),模塊與模塊之間盡可能的獨(dú)立存在
3.分類:
a.內(nèi)容耦合:一個模塊直接訪問另個模塊的內(nèi)容
b.公共耦合:一組模塊都訪問同一個全局?jǐn)?shù)據(jù)結(jié)構(gòu)
較松散的:模塊只是向公共數(shù)據(jù)環(huán)境輸入或取出數(shù)據(jù)
較緊密的:既輸入,又取出
c.外部耦合:一組模塊都訪問同一全局簡單變量,而不通過參數(shù)列表傳遞
d.控制耦合:模塊之間傳遞的不是數(shù)據(jù)信息而是控制信息,如標(biāo)志、開關(guān)量等
e.標(biāo)記耦合:調(diào)用模塊和被調(diào)用模塊之間傳遞數(shù)據(jù)結(jié)構(gòu)而不是簡單數(shù)據(jù),又稱特征耦合。參數(shù)名為標(biāo)記,實(shí)際傳遞的地址
f.數(shù)據(jù)耦合:調(diào)用模塊和被調(diào)用模塊之間只傳遞簡單的數(shù)據(jù)項(xiàng)參數(shù)。相當(dāng)于高級語言中的值傳遞
g.非直接耦合:兩個模塊之間沒有直接關(guān)系,他們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用實(shí)現(xiàn)。耦合度最低
*設(shè)計(jì)原則:若模塊間必須存在耦合,應(yīng)盡量使用數(shù)據(jù)耦合,少用控制耦合,慎用公共耦合并限制公共耦合的范圍,盡量避免內(nèi)容耦合
?
內(nèi)聚度由弱到強(qiáng):
a.偶然內(nèi)聚:一個模塊間各處理元素之間沒有任何聯(lián)系,只是偶然被湊到一起,又稱巧合內(nèi)聚
b.邏輯內(nèi)聚:把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由參數(shù)決定該模塊完成哪種功能
c.時(shí)間內(nèi)聚:需要同時(shí)執(zhí)行的動作組合到一起形成的模塊
d.過程內(nèi)聚:模塊內(nèi)處理元素是相關(guān)的,且必須按特定次序執(zhí)行
e.通信內(nèi)聚:模塊內(nèi)各個組成部分都是用相同的數(shù)據(jù)結(jié)構(gòu)或者產(chǎn)生相同的數(shù)據(jù)結(jié)構(gòu)
f.順序內(nèi)聚:模塊內(nèi)前一個處理元素的輸出是后一個處理元素的輸入
g.功能內(nèi)聚:模塊內(nèi)各個組成部分全部都為完成同一個功能而存在,共同完成一個單一的功能,模塊不可再分。
*模塊劃分原則:一個模塊一個功能
總結(jié)
以上是生活随笔為你收集整理的软件工程学习笔记概要的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7原版镜像_淘汰固态变U盘,不用工
- 下一篇: linux控制cache使用值e,[轉]