第12章 分析建模
在技術(shù)層次上,軟件工程是從一系列建模任務(wù)開始的,這些任務(wù)導(dǎo)致了對(duì)被建立的軟件的完整的需求規(guī)約和全面的設(shè)計(jì)的表示。分析模型——實(shí)際上是一組模型,是系統(tǒng)的第一個(gè)技術(shù)表示。在過去的數(shù)年中,人們提出了許多種分析建模的方法,然而,其中兩種在分析建模領(lǐng)域占有主導(dǎo)地位,第一個(gè)是“結(jié)構(gòu)化分析”,這是傳統(tǒng)的建模方法,將在本章進(jìn)行描述。另一種方法——“面向?qū)ο蟮姆治觥保瑢⒃诘?0章詳細(xì)介紹。12.8節(jié)將對(duì)其他普遍使用的分析方法進(jìn)行簡(jiǎn)要的介紹。
結(jié)構(gòu)化分析是一種建立模型的活動(dòng)。通過使用滿足第11章描述的操作性分析原則的符號(hào)體系,我們創(chuàng)建描述信息(數(shù)據(jù)和控制)內(nèi)容和流的模型、依據(jù)功能和行為對(duì)系統(tǒng)進(jìn)行劃分、并描述必須要建立的要素。結(jié)構(gòu)化分析不是被所有的使用者一致使用的單一方法,相反,它是發(fā)展了幾乎20多年的一個(gè)混合物。
可能沒有其他的軟件工程方法引起了如此多的興趣、被如此眾多的人試用(經(jīng)常是被拋棄,然后再試用)、激起如此多的批評(píng)、以及引發(fā)如此多的辯論,但這種方法成功了,并在軟件工程界獲得了大量的追隨者。
在這個(gè)學(xué)科的創(chuàng)始書籍中,Tom DeMarco[DEM79]這樣描述結(jié)構(gòu)化分析:
回顧被識(shí)別的問題和分析階段的失敗,我建議對(duì)分析階段的目標(biāo)進(jìn)行以下的增補(bǔ)。
·分析的產(chǎn)品必須是高度可維護(hù)的。這特別被應(yīng)用于目標(biāo)文檔(軟件需求規(guī)約)。
·必須使用有效的劃分方法控制問題的規(guī)模。維多利亞時(shí)代小說式的規(guī)約是不行的。
·盡可能地使用圖形符號(hào)。
·必須區(qū)分邏輯的(本質(zhì)的)和物理的(實(shí)現(xiàn))考慮。
至少,我們需要:
·某種方法來幫助我們劃分需求,并在規(guī)約前用文檔記錄該劃分。
·某種跟蹤和評(píng)價(jià)接口的手段。
·比敘述性的正文更好的新工具來描述邏輯和策略。
這樣,Tom DeMarco建立了在世界上使用廣泛的分析方法的主要目標(biāo)。在本章,我們將考察這種方法及其擴(kuò)展。
12.1 簡(jiǎn)史
象許多對(duì)軟件工程的重要貢獻(xiàn)一樣,結(jié)構(gòu)化分析并不是由里程碑式的明確地涉及這個(gè)主題的一篇文章或一本書引入的。分析建模的早期工作開始于1960年代后期和1970年代初期,但結(jié)構(gòu)化分析方法的第出現(xiàn)是作為另一個(gè)重要課題——結(jié)構(gòu)化設(shè)計(jì)的附屬品而出現(xiàn)的。研究者(如參考文獻(xiàn)[STE74]和[YOU78]需要一種圖形符號(hào)體系來表示數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行變換的處理(加工),這些處理將終被映射到體系結(jié)構(gòu)設(shè)計(jì)中去。
術(shù)語“結(jié)構(gòu)化分析”,初由Douglas Ross提出,由DeMarco[DEM79]進(jìn)行了推廣。在他關(guān)于這個(gè)主題的書中,DeMarco引入并命名了使得分析員可以創(chuàng)建信息流模型的主要圖形記號(hào)、提出了使用這些符號(hào)的啟發(fā)信息、建議“數(shù)據(jù)字典”和“處理說明”可以作為信息流模型的補(bǔ)充、并給出了說明如何使用這種新方法的大量實(shí)例。在以后的幾年中, Page-Jones[PAG80]、Gane和Sarson[GAN82]等人提出了結(jié)構(gòu)化分析方法的一些變種,在這些變種中,方法關(guān)注于信息系統(tǒng)的應(yīng)用,而沒有提供足夠的符號(hào)來表示實(shí)時(shí)工程問題中的控制和行為方面的問題。
在1980年代中期,結(jié)構(gòu)化分析(當(dāng)試圖應(yīng)用于面向控制的應(yīng)用中時(shí))的不足明顯地表現(xiàn)了出來。Ward和Mellor[WAR85]以及以后的Hatly和Pirbhai[HAT87]實(shí)時(shí)引入了“擴(kuò)展”版結(jié)構(gòu)化分析,這些擴(kuò)展版導(dǎo)致了可以有效地應(yīng)用于工程問題的一個(gè)更加強(qiáng)壯的分析方法。人們還進(jìn)行了開發(fā)一致符號(hào)體系的努力[BRU88]以及適應(yīng)CASE工具使用的現(xiàn)代處理[YOU89]方法。
12.2 分析模型的元素
分析模型必須達(dá)到三個(gè)主要目標(biāo):(1)描述客戶的需要;(2)建立創(chuàng)建軟件設(shè)計(jì)的基礎(chǔ);(3)定義在軟件完成后可以被確認(rèn)的一組需求。為了達(dá)到這些目標(biāo),在結(jié)構(gòu)化分析中導(dǎo)出的分析模型采用圖12—1所描述的形式。
在模型的核心是“數(shù)據(jù)字典”——包含了軟件使用或生產(chǎn)的所有數(shù)據(jù)對(duì)象描述的中心庫(kù)。圍繞著這個(gè)核心有三種圖,“實(shí)體—關(guān)系圖”(ERD)描述數(shù)據(jù)對(duì)象間的關(guān)系,ERD是用來進(jìn)行數(shù)據(jù)建模活動(dòng)的記號(hào),在ERD中出現(xiàn)的每個(gè)數(shù)據(jù)對(duì)象的屬性可以使用“數(shù)據(jù)對(duì)象描述”來描述。
“數(shù)據(jù)流圖”(DFD)服務(wù)于兩個(gè)目的:(1)指明數(shù)據(jù)在系統(tǒng)中移動(dòng)時(shí)如何被變換;(2)描述對(duì)數(shù)據(jù)流進(jìn)行變換的功能(和子功能)。DFD提供了附加的信息,它們可以被用于信息域的分析,并作為功能建模的基礎(chǔ)。在DFD中出現(xiàn)的每個(gè)功能的描述包含在“加工規(guī)約”(PSPEC)中。
“狀態(tài)—變遷圖”(STD)指明作為外部事件的結(jié)果,系統(tǒng)將如何動(dòng)作,為此,STD表示了系統(tǒng)的各種行為模式(稱為“狀態(tài)”)以及在狀態(tài)間進(jìn)行變遷的方式,STD是行為建模的基礎(chǔ)。關(guān)于軟件控制方面的附加信息包含在“控制規(guī)約”(CSPEC)中。
分析模型包含了圖12-1中提到的各種圖、規(guī)約、描述和字典。以下各節(jié)將對(duì)分析模型中的這些元素進(jìn)行更加詳細(xì)的討論。
12.3 數(shù)據(jù)建模
數(shù)據(jù)建?;卮鹋c任何數(shù)據(jù)處理應(yīng)用相關(guān)的一組特定問題:系統(tǒng)處理哪些主要的數(shù)據(jù)對(duì)象?每個(gè)數(shù)據(jù)對(duì)象的組成如何,哪些屬性描述了這些對(duì)象?這些對(duì)象當(dāng)前位于何處?每個(gè)對(duì)象與其他對(duì)象有哪些關(guān)系?對(duì)象和變換它們的處理之間有哪些關(guān)系?
在技術(shù)層次上,軟件工程是從一系列建模任務(wù)開始的,這些任務(wù)導(dǎo)致了對(duì)被建立的軟件的完整的需求規(guī)約和全面的設(shè)計(jì)的表示。分析模型——實(shí)際上是一組模型,是系統(tǒng)的第一個(gè)技術(shù)表示。在過去的數(shù)年中,人們提出了許多種分析建模的方法,然而,其中兩種在分析建模領(lǐng)域占有主導(dǎo)地位,第一個(gè)是“結(jié)構(gòu)化分析”,這是傳統(tǒng)的建模方法,將在本章進(jìn)行描述。另一種方法——“面向?qū)ο蟮姆治觥保瑢⒃诘?0章詳細(xì)介紹。12.8節(jié)將對(duì)其他普遍使用的分析方法進(jìn)行簡(jiǎn)要的介紹。
結(jié)構(gòu)化分析是一種建立模型的活動(dòng)。通過使用滿足第11章描述的操作性分析原則的符號(hào)體系,我們創(chuàng)建描述信息(數(shù)據(jù)和控制)內(nèi)容和流的模型、依據(jù)功能和行為對(duì)系統(tǒng)進(jìn)行劃分、并描述必須要建立的要素。結(jié)構(gòu)化分析不是被所有的使用者一致使用的單一方法,相反,它是發(fā)展了幾乎20多年的一個(gè)混合物。
可能沒有其他的軟件工程方法引起了如此多的興趣、被如此眾多的人試用(經(jīng)常是被拋棄,然后再試用)、激起如此多的批評(píng)、以及引發(fā)如此多的辯論,但這種方法成功了,并在軟件工程界獲得了大量的追隨者。
在這個(gè)學(xué)科的創(chuàng)始書籍中,Tom DeMarco[DEM79]這樣描述結(jié)構(gòu)化分析:
回顧被識(shí)別的問題和分析階段的失敗,我建議對(duì)分析階段的目標(biāo)進(jìn)行以下的增補(bǔ)。
·分析的產(chǎn)品必須是高度可維護(hù)的。這特別被應(yīng)用于目標(biāo)文檔(軟件需求規(guī)約)。
·必須使用有效的劃分方法控制問題的規(guī)模。維多利亞時(shí)代小說式的規(guī)約是不行的。
·盡可能地使用圖形符號(hào)。
·必須區(qū)分邏輯的(本質(zhì)的)和物理的(實(shí)現(xiàn))考慮。
至少,我們需要:
·某種方法來幫助我們劃分需求,并在規(guī)約前用文檔記錄該劃分。
·某種跟蹤和評(píng)價(jià)接口的手段。
·比敘述性的正文更好的新工具來描述邏輯和策略。
這樣,Tom DeMarco建立了在世界上使用廣泛的分析方法的主要目標(biāo)。在本章,我們將考察這種方法及其擴(kuò)展。
12.1 簡(jiǎn)史
象許多對(duì)軟件工程的重要貢獻(xiàn)一樣,結(jié)構(gòu)化分析并不是由里程碑式的明確地涉及這個(gè)主題的一篇文章或一本書引入的。分析建模的早期工作開始于1960年代后期和1970年代初期,但結(jié)構(gòu)化分析方法的第出現(xiàn)是作為另一個(gè)重要課題——結(jié)構(gòu)化設(shè)計(jì)的附屬品而出現(xiàn)的。研究者(如參考文獻(xiàn)[STE74]和[YOU78]需要一種圖形符號(hào)體系來表示數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行變換的處理(加工),這些處理將終被映射到體系結(jié)構(gòu)設(shè)計(jì)中去。
術(shù)語“結(jié)構(gòu)化分析”,初由Douglas Ross提出,由DeMarco[DEM79]進(jìn)行了推廣。在他關(guān)于這個(gè)主題的書中,DeMarco引入并命名了使得分析員可以創(chuàng)建信息流模型的主要圖形記號(hào)、提出了使用這些符號(hào)的啟發(fā)信息、建議“數(shù)據(jù)字典”和“處理說明”可以作為信息流模型的補(bǔ)充、并給出了說明如何使用這種新方法的大量實(shí)例。在以后的幾年中, Page-Jones[PAG80]、Gane和Sarson[GAN82]等人提出了結(jié)構(gòu)化分析方法的一些變種,在這些變種中,方法關(guān)注于信息系統(tǒng)的應(yīng)用,而沒有提供足夠的符號(hào)來表示實(shí)時(shí)工程問題中的控制和行為方面的問題。
在1980年代中期,結(jié)構(gòu)化分析(當(dāng)試圖應(yīng)用于面向控制的應(yīng)用中時(shí))的不足明顯地表現(xiàn)了出來。Ward和Mellor[WAR85]以及以后的Hatly和Pirbhai[HAT87]實(shí)時(shí)引入了“擴(kuò)展”版結(jié)構(gòu)化分析,這些擴(kuò)展版導(dǎo)致了可以有效地應(yīng)用于工程問題的一個(gè)更加強(qiáng)壯的分析方法。人們還進(jìn)行了開發(fā)一致符號(hào)體系的努力[BRU88]以及適應(yīng)CASE工具使用的現(xiàn)代處理[YOU89]方法。
12.2 分析模型的元素
分析模型必須達(dá)到三個(gè)主要目標(biāo):(1)描述客戶的需要;(2)建立創(chuàng)建軟件設(shè)計(jì)的基礎(chǔ);(3)定義在軟件完成后可以被確認(rèn)的一組需求。為了達(dá)到這些目標(biāo),在結(jié)構(gòu)化分析中導(dǎo)出的分析模型采用圖12—1所描述的形式。
在模型的核心是“數(shù)據(jù)字典”——包含了軟件使用或生產(chǎn)的所有數(shù)據(jù)對(duì)象描述的中心庫(kù)。圍繞著這個(gè)核心有三種圖,“實(shí)體—關(guān)系圖”(ERD)描述數(shù)據(jù)對(duì)象間的關(guān)系,ERD是用來進(jìn)行數(shù)據(jù)建模活動(dòng)的記號(hào),在ERD中出現(xiàn)的每個(gè)數(shù)據(jù)對(duì)象的屬性可以使用“數(shù)據(jù)對(duì)象描述”來描述。
“數(shù)據(jù)流圖”(DFD)服務(wù)于兩個(gè)目的:(1)指明數(shù)據(jù)在系統(tǒng)中移動(dòng)時(shí)如何被變換;(2)描述對(duì)數(shù)據(jù)流進(jìn)行變換的功能(和子功能)。DFD提供了附加的信息,它們可以被用于信息域的分析,并作為功能建模的基礎(chǔ)。在DFD中出現(xiàn)的每個(gè)功能的描述包含在“加工規(guī)約”(PSPEC)中。
“狀態(tài)—變遷圖”(STD)指明作為外部事件的結(jié)果,系統(tǒng)將如何動(dòng)作,為此,STD表示了系統(tǒng)的各種行為模式(稱為“狀態(tài)”)以及在狀態(tài)間進(jìn)行變遷的方式,STD是行為建模的基礎(chǔ)。關(guān)于軟件控制方面的附加信息包含在“控制規(guī)約”(CSPEC)中。
分析模型包含了圖12-1中提到的各種圖、規(guī)約、描述和字典。以下各節(jié)將對(duì)分析模型中的這些元素進(jìn)行更加詳細(xì)的討論。
12.3 數(shù)據(jù)建模
數(shù)據(jù)建?;卮鹋c任何數(shù)據(jù)處理應(yīng)用相關(guān)的一組特定問題:系統(tǒng)處理哪些主要的數(shù)據(jù)對(duì)象?每個(gè)數(shù)據(jù)對(duì)象的組成如何,哪些屬性描述了這些對(duì)象?這些對(duì)象當(dāng)前位于何處?每個(gè)對(duì)象與其他對(duì)象有哪些關(guān)系?對(duì)象和變換它們的處理之間有哪些關(guān)系?

