最近正在猛看軟件工程,發(fā)現(xiàn)這門學(xué)科真的很有用,尤其是對于企業(yè)級別的軟件的開發(fā)作用巨大。下面我就寫一些關(guān)于軟件工程方面的東西,就當(dāng)作總結(jié)一下所學(xué)的內(nèi)容吧。
我想這個問題應(yīng)該從軟件危機開始講起吧,軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重的問題。具體來說:
l????????
對軟件開發(fā)成本和進度的估計常常很不準(zhǔn)確。
l????????
用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。
l????????
軟件產(chǎn)品的質(zhì)量往往靠不住。
l????????
軟件常常是不可維護的。
l????????
軟件通常沒有適當(dāng)?shù)奈臋n資料。
l????????
軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。
l????????
軟件開發(fā)生產(chǎn)率提高的速度,既跟不上硬件的發(fā)展速度,也遠遠跟不上計算機應(yīng)用迅速普及深入的趨勢。
而軟件工程這門學(xué)科的出現(xiàn)也是為了從宏觀的角度來觀察軟件,解決危機。軟件工程師把系統(tǒng)化的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運行和維護的過程,也就是把工程化應(yīng)用于軟件中;研究中提到的途徑。
軟件工程的過程可以用軟件生命周期來表示,生命周期的具體內(nèi)容為:問題定義、可行性研究、需求分析、概要設(shè)計、詳細設(shè)計、編碼和單元測試、綜合測試、軟件維護。生命周期模型又分為以下幾種:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型。
E-R
圖、數(shù)據(jù)流圖、狀態(tài)轉(zhuǎn)換圖是結(jié)構(gòu)化分析中的重點圖。
E-R
圖中包含了實體、關(guān)系和屬性等三種基本成分。通常用矩形框代表實體,用連接相關(guān)實體的菱形框表示關(guān)系、用橢圓形或圓角矩形表示實體的屬性,并用無向邊把實體與其屬性連接起來。數(shù)據(jù)流圖有四種基本符號:正方形表示數(shù)據(jù)的源點或終點;圓角矩形代表變換數(shù)據(jù)的處理;開口矩形代表數(shù)據(jù)存儲;箭頭表示數(shù)據(jù)流,即特定數(shù)據(jù)的流動方向。在狀態(tài)圖中,初態(tài)用實心圖表示,終態(tài)有一對同心圓表示。中間狀態(tài)用圓角矩形表示,可以用兩條水平橫線把它分成上、中、下
3
個部分。上面部分為狀態(tài)的名稱,這部分是必須有的;中間部分為狀態(tài)變量的名字和值,這部分時可選的;下面部分是活動表,這部分也是可選。
數(shù)據(jù)字典是所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的有組織的列表,并且包含了對這些數(shù)據(jù)元素的精確、嚴格的定義,從而使得用戶和系統(tǒng)分析員雙方對輸入、輸出、存儲的成分甚至中間計算有結(jié)果有共同的理解。簡而言之,數(shù)據(jù)字典是描述數(shù)據(jù)的信息的集合,是對系統(tǒng)中使用的所有數(shù)據(jù)元素的定義的集合。大多數(shù)數(shù)據(jù)字典都包含以下信息:名字、別名、使用地點與方式、內(nèi)容描述、補充信息。
說完了結(jié)構(gòu)化分析,該說說結(jié)構(gòu)化設(shè)計了。其中模塊是很重要的概念。模塊是由邊界元素限定的相鄰的程序元素的序列,而且有一個總體標(biāo)識符來代表它。有五條標(biāo)準(zhǔn)來評價一種設(shè)計方法定義有效的模塊系統(tǒng)的能力:模塊可分解性、模塊可組裝性、模塊可理解性、模塊連續(xù)性、模塊保護性。有效的模塊化的軟件比較容易開發(fā)出來。這是由于能夠分割功能而且接口可以簡化,當(dāng)許多人分工合作開發(fā)同一個軟件時,這個優(yōu)點尤其重要。獨立的模塊比較容易測試和維護。這是因為相對說來。修改設(shè)計和程序需要的工作量比較小,錯誤傳播范圍小,需要擴充功能時能夠“插入”模塊。模塊的獨立程度可以由兩個定性標(biāo)準(zhǔn)來度量,這兩個標(biāo)準(zhǔn)分別成為內(nèi)聚和耦合。耦合衡量不同模塊彼此間互相依賴的緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。最好能做到松耦合、高內(nèi)聚。
表示軟件結(jié)構(gòu)的圖形工具有層次圖、
HIPO
圖和結(jié)構(gòu)圖,通常使用層次圖描繪軟件的層次結(jié)構(gòu)。在層次圖中一個矩形框代表一個模塊,框間的連線表示調(diào)用關(guān)系。在自頂向下逐步求精設(shè)計軟件的過程中,使用層次圖很方便。
HIPO
圖是美國
IBM
公司發(fā)明的“層次圖加輸入
/
處理
/
輸出圖”的英文縮寫。為了使
HIPO
圖具有可追蹤性,在層次圖里除了頂層的方框之外,每個方框都加了編號。結(jié)構(gòu)圖和層次圖類似,也是描述軟件結(jié)構(gòu)的圖形工具,圖中一個方框代表一個模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系。因為按照慣例總是圖中位于上方的方框代表的模塊調(diào)用下方的模塊,即使不用箭頭也不會產(chǎn)生二義性,為了簡單起見,可以只用直線而不用箭頭表示模塊間的調(diào)用關(guān)系。
之后應(yīng)該是過程設(shè)計了。過程設(shè)計的工具有:程序流程圖、盒圖(
N_S
圖)、
PAD
圖、判定表、判定樹、過程設(shè)計語言(
PDL
)。程序流程圖又成為程序框圖,它是歷史最悠久的使用最廣泛的描述過程設(shè)計的方法,然而它也是用得最混亂的一種方法。盒圖有下述特點:
l????????
功能域明確,可以從盒圖上一眼就看出來。
l????????
不可能任意轉(zhuǎn)移控制。
l????????
很容易確定局部和全程數(shù)據(jù)的作用域。
l????????
很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊層次結(jié)構(gòu)。
PAD
圖是問題分析圖的英文縮寫,自
1973
年由日本日立公司發(fā)明以后,已得到一定程度的推廣。判定表能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。一張判定表由四部分組成,左上部列出所有條件,左下部是所有可能作的動作,右上部是表示各種條件組合的一個矩陣,右下部是和每種條件組合相對應(yīng)的動作。判定表右半部的每一列實質(zhì)上是一條規(guī)則,規(guī)定了與特定的條件組合相對應(yīng)的動作。(未完待續(xù))