能力成熟度模型(CMM)是美國卡內(nèi)基梅隆大學(xué)軟件工程研究所建立的、用于評(píng)價(jià)軟件機(jī)構(gòu)的軟件過程能力成熟度的模型,它將能力成熟度定義為5個(gè)等級(jí):初始級(jí)、可重復(fù)級(jí)、已定義級(jí)、已管理級(jí)、優(yōu)化級(jí)[3]。建立CMM的目的在于:通過改進(jìn)軟件過程管理,幫助軟件開發(fā)機(jī)構(gòu)建立一個(gè)有規(guī)律的、成熟的軟件過程,使其軟件過程能力得到循序漸進(jìn)的提高。不能不提的是統(tǒng)一建模語言(UML)[4],它是一種圖形化了的語言,是一種構(gòu)建模型的工具,它隨著面向?qū)ο蠹夹g(shù)的發(fā)展而發(fā)展, 1997年11月OMG (ObjectManagementGroup)接納UML1·1為基于面向?qū)ο蠹夹g(shù)的標(biāo)準(zhǔn)建模語言,從那時(shí)開始, UML得到廣泛應(yīng)用,成為軟件工程的重要內(nèi)容之一。由此可以看出構(gòu)建模型思想在軟件工程中的重要地位。
先設(shè)計(jì)全局,后設(shè)計(jì)局部的思想,當(dāng)你開始設(shè)計(jì)一個(gè)比較大的問題解決方案時(shí),一般來說,先進(jìn)行全局設(shè)計(jì)、后進(jìn)行局部設(shè)計(jì)。先進(jìn)行全局設(shè)計(jì),就是先從宏觀上把握這個(gè)問題,構(gòu)建好解決問題的總體框架結(jié)構(gòu),將大問題分解為局部性小問題,暫時(shí)不考慮局部性小問題如何設(shè)計(jì)。在解決問題的總體框架結(jié)構(gòu)已經(jīng)構(gòu)建好的前提下,再去考慮局部性小問題如何設(shè)計(jì),詳細(xì)研究每個(gè)局部性小問題的解決方案。軟件工程中介紹的結(jié)構(gòu)化軟件設(shè)計(jì)方法,就是“先設(shè)計(jì)全局,后設(shè)計(jì)局部”思想的典型體現(xiàn),結(jié)構(gòu)化軟件設(shè)計(jì)方法將設(shè)計(jì)分“總體設(shè)計(jì)”和“詳細(xì)設(shè)計(jì)”兩個(gè)階段,先進(jìn)行“總體設(shè)計(jì)”,后進(jìn)行“詳細(xì)設(shè)計(jì)”??傮w設(shè)計(jì)將被開發(fā)的軟件系統(tǒng)劃分成若干個(gè)模塊,每個(gè)模塊具有一定功能,各模塊間具有一定的聯(lián)系,這樣就將軟件的總體宏觀結(jié)構(gòu)搭建好了。詳細(xì)設(shè)計(jì)是根據(jù)每個(gè)模塊應(yīng)該具有的功能,設(shè)計(jì)實(shí)現(xiàn)其功能的算法和數(shù)據(jù)結(jié)構(gòu),這樣就將每個(gè)局部問題(每個(gè)模塊)設(shè)計(jì)好了。
分層次進(jìn)行分解與合成的思想,大而復(fù)雜的問題不好處理,但如果將問題分解為一個(gè)一個(gè)的小問題,就好處理了。這種分解一般是分層次進(jìn)行的,先進(jìn)行第一層分解,將大問題分解成幾個(gè)稍小的問題,再進(jìn)行第二層分解,將上一層的每個(gè)問題分解為更小的問題,直到不需要分解為止。合成是由若干個(gè)小的部分組合成一個(gè)大的整體。這種合成一般也是分層次進(jìn)行的,從最底層開始,先進(jìn)行第一層合成,將所有小的部分合成為若干個(gè)稍大的部分,再進(jìn)行第二層合成,得到幾個(gè)更大的部分,直到所有的各部分合成為一個(gè)整體。在軟件工程中,有多處知識(shí)中蘊(yùn)涵了這種思想。在畫軟件系統(tǒng)的數(shù)據(jù)流圖[5]時(shí),就是通過分層次分解來畫的。先畫頂層數(shù)據(jù)流圖,這時(shí)只有一個(gè)“處理框”;然后進(jìn)行第一層分解,將頂層數(shù)據(jù)流圖中的“處理框”分解成幾個(gè)“處理框”和其它部分,得到第二層數(shù)據(jù)流圖;然后進(jìn)行第二層分解,將第二層數(shù)據(jù)流圖中的“處理框”再進(jìn)行分解;如此下去,直到得到不必再分解的詳細(xì)的數(shù)據(jù)流圖。在進(jìn)行軟件體系結(jié)構(gòu)設(shè)計(jì)時(shí)采用的模塊化結(jié)構(gòu),也是通過分層次分解來構(gòu)建的,根據(jù)系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能,將系統(tǒng)分層次分解成若干個(gè)模塊,形成一個(gè)層次化的模塊結(jié)構(gòu)圖,每個(gè)模塊負(fù)責(zé)實(shí)現(xiàn)系統(tǒng)的某部分功能。詳細(xì)設(shè)計(jì)所用的幾種工具[6],也體現(xiàn)出分層次進(jìn)行分解與合成來處理問題的思想。例如PAD圖,對(duì)于復(fù)雜問題的設(shè)計(jì),可以通過分層次畫PAD圖來完成,分層次所畫的各個(gè)PAD圖,體現(xiàn)出分解與合成相結(jié)合的思想。例如判定樹,非常直觀地體現(xiàn)出分層次進(jìn)行分解與合成的思想。
借鑒其它領(lǐng)域成功經(jīng)驗(yàn)的思想,他山之石,可以攻玉。借鑒其它領(lǐng)域的經(jīng)驗(yàn),來解決本領(lǐng)域問題,是通向成功的快捷之路。從軟件工程概念提出到現(xiàn)在,還不到50年的時(shí)間,而軟件工程理論發(fā)展如此之快,在很大程度上是得益于借鑒其它領(lǐng)域的成功經(jīng)驗(yàn)來解決問題。許多工業(yè)產(chǎn)品是通過使用零部件組裝方式生產(chǎn)的,各種零部件按
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線啦!快來測(cè)測(cè)你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html