一 軟件工程的本質(zhì)
- 本質(zhì):
- 不同抽象層次之間的
映射
過程。任何軟件系統(tǒng)開發(fā)的共同本質(zhì)在于:從現(xiàn)實空間的需求到計算機(jī)空間的軟件代碼之間的映射與轉(zhuǎn)換。
- 不同抽象層次之間的
- 映射方法:
-
單步映射與多步映射
:在軟件開發(fā)過程中,從需求過程映射到代碼空間采取的方式。顧名思義,單步映射一次性完成,而多步映射需要分成多布進(jìn)行。多步映射可以通過犧牲“時間”來提高“質(zhì)量”
; -
概念映射與邏輯映射
:概念映射是問題空間的概念與解空間的模型化概念之間的的映射;邏輯映射是問題空間的處理邏輯與解空間處理邏輯之間的映射。前者對應(yīng)與數(shù)據(jù)結(jié)構(gòu),后者對應(yīng)算法。
-
- 映射過程:
- 包括4個部分——需求分析、軟件設(shè)計、實現(xiàn)、驗證/確定。
二 軟件工程所關(guān)注的目標(biāo)
- 關(guān)注對象:
- 產(chǎn)品:各個抽象層次的產(chǎn)出物;
- 過程:在各個抽象層次之間進(jìn)行映射和轉(zhuǎn)換。
- 特點:
- 具有“
產(chǎn)品與過程二相性
”的特點,即把二者結(jié)合起來去考慮,不能忽略其中任何一方。
- 具有“
- 關(guān)注目標(biāo):
- 功能性需求(FR):軟件所實現(xiàn)的功能達(dá)到它的設(shè)計規(guī)范和滿足用戶需求的程度;例如:完備性、正確性、健壯性、可靠性...
- 非功能性需求(NFR):系統(tǒng)能夠完成所期望的工作的性能與質(zhì)量;例如:效率、可用性、可維護(hù)性、可移植性、清晰性、安全性、兼容性、經(jīng)濟(jì)性、商業(yè)質(zhì)量...
三 軟件開發(fā)的多角色
- 顧客企業(yè):
- 決策者;
- 終端用戶;
- 系統(tǒng)管管理員。
- 軟件開發(fā)公司:
- 決策者;
- 軟件銷售與市場人員;
- 咨詢師、需求分析師;
- 軟件構(gòu)架師、軟件設(shè)計師;
- 開發(fā)人員:開發(fā)經(jīng)理/項目經(jīng)理、程序員;
- 維護(hù)人員。
四 軟件工程=最佳實踐
-
原因:
- 軟件系統(tǒng)的
復(fù)雜性、動態(tài)性
使得高深的軟件理論在軟件開發(fā)中變得無用武之地;即使應(yīng)用理論方法來解決,得到的結(jié)果也往往難以與現(xiàn)實保持一致;因此軟件工程被看成一種時實踐的藝術(shù): - 做過越多的軟件項目,犯的錯誤就越少,積累的經(jīng)驗越多,隨后做項目的成功率就越高;
- 對新手來說,要通過多實踐、多犯錯來積累經(jīng)驗,也要多吸收他人的失敗與教訓(xùn)和成功的經(jīng)驗。
當(dāng)你把所有的錯誤都犯過之后,你就是正確的了。
- 軟件系統(tǒng)的
-
最佳實踐的例子:
- 軟件工程的七條原理;
- 與顧客溝通的最佳實踐原則;
- IBM RUP最佳實踐原則...
五 軟件工程的四個核心理論概念
- 復(fù)用:
- 在一個新系統(tǒng)中,大部分的內(nèi)容是成熟的,只有小部分內(nèi)容是全新的;
- 構(gòu)造新的軟件系統(tǒng)可以不必每次從零開始;
- 直接使用已經(jīng)有的軟構(gòu)體,即可組裝成新的系統(tǒng);
- 復(fù)用已有的功能模塊,既可以提高開發(fā)效率,也可以改善新開發(fā)過程中帶來的質(zhì)量問題。
- 分治
- 將復(fù)雜問題分解為若干可獨立解決的簡單子問題,并分別獨立求解,以降低復(fù)雜性;以降低復(fù)雜性;
- 然后再將各子問題的解綜合起來,形成最初復(fù)雜問題的解。然后再將各子問題的解綜合起來,形成最初復(fù)雜問題的解。
- 折中
- 不同的需求之間往往存在矛盾與沖突,需要通過折中來作出的合理的取舍,找到使雙方均滿意的點。
- 演化:
- 軟件系統(tǒng)在其生命周期中面臨各種變化;
- 核心問題:在設(shè)計軟件的初期,就要充分考慮到未來可能的變化,并采用恰當(dāng)?shù)脑O(shè)計決策,使軟件具有適應(yīng)變化的能力;
- 即:
可修改性
、可維護(hù)性
、可擴(kuò)展性
。