官术网_书友最值得收藏!

1.5 軟件工程實踐論

1.5.1 軟件工程實踐論的提出

軟件工程方法論中的4 種軟件開發(fā)方法,究竟哪一種方法最好呢?在開發(fā)一個大型軟件系統(tǒng)時,到底怎樣選取合適的軟件開發(fā)方法呢?這就是軟件工程實踐論中需要詳細討論的問題。

本章的重點之二,就是詳細討論“五個面向”的軟件工程實踐論。它源于大型信息系統(tǒng)的開發(fā)實踐,所以首先給出信息系統(tǒng)的定義。

利用計算機網(wǎng)絡技術、數(shù)字通信技術與數(shù)據(jù)庫技術實現(xiàn)信息采集和處理的系統(tǒng),稱為信息系統(tǒng)。

“五個面向”實踐論是指“面向流程分析、面向元數(shù)據(jù)設計、面向對象實現(xiàn)、面向功能測試、面向過程管理”。

“五個面向”實踐論,綜合了軟件工程方法論中各種開發(fā)方法的優(yōu)點,是人們在軟件開發(fā)實踐中經(jīng)驗的結晶,是軟件工程方法論在軟件工程實踐中的具體運用。

在論述“五個面向”實踐論時,我們首先從信息系統(tǒng)出發(fā),然后再推廣到非信息系統(tǒng)。

1.5.2 面向流程分析

面向流程分析(Flow-Oriented Analysis),就是面向流程進行需求分析。

任何軟件系統(tǒng),都要滿足用戶的需求,這往往表現(xiàn)在用戶的工作流程上,無論是系統(tǒng)的功能、性能、接口、界面,通過系統(tǒng)流程這條主線,都會全部暴露出來。因此,在信息系統(tǒng)需求分析時,系統(tǒng)分析員要面向業(yè)務流程、資金流程、信息流程進行分析。只有將這“三個流程”分析透了,才能建立有效的系統(tǒng)業(yè)務模型和功能模型(包括性能模型和接口模型)。因為計算機網(wǎng)絡在本質上只識別數(shù)據(jù)及數(shù)據(jù)流(嚴格地講,它只識別二進制數(shù)據(jù)和二進制數(shù)據(jù)流),而且這“三個流程”,可以用“數(shù)據(jù)流”這一個流程來代替,或者說“三個流程”是“數(shù)據(jù)流”在三個不同方向的投影。

由此可見,在需求分析時,抓住了軟件系統(tǒng)的流程,就掌握了需求分析的鑰匙,就能取得需求分析的成功。

1.5.3 面向元數(shù)據(jù)設計

面向元數(shù)據(jù)設計(Meta-data Oriented Design),就是面向元數(shù)據(jù)進行概要設計。

例如,在信息系統(tǒng)設計時,設計師要采用面向元數(shù)據(jù)的方法進行概要設計。其主要任務是建立系統(tǒng)的數(shù)據(jù)模型,包括概念數(shù)據(jù)模型CDM和物理數(shù)據(jù)模型PDM,以及體現(xiàn)業(yè)務規(guī)則的存儲過程和觸發(fā)器,然后以數(shù)據(jù)模型為支撐,去實現(xiàn)信息系統(tǒng)的業(yè)務模型和功能模型。為此,要對元數(shù)據(jù)進行分析、識別、提取,只有將元數(shù)據(jù)分析透了,才能建立由元數(shù)據(jù)所構成的數(shù)據(jù)模型。

信息系統(tǒng)設計的重中之重,是數(shù)據(jù)庫服務器上數(shù)據(jù)層的設計,而數(shù)據(jù)層的設計是面向元數(shù)據(jù)的,不是面向過程或對象的。當然,其他層上的設計是面向對象的。

1.5.4 面向對象實現(xiàn)

面向對象實現(xiàn)(Object-Oriented Implementation),就是面向對象進行詳細設計和編程實現(xiàn)。

表示層和中間層上進行詳細設計和編程實現(xiàn)時,要采用面向對象的方法。目前流行的編程語言大多數(shù)是面向對象的語言。成熟的軟件企業(yè)已經(jīng)利用面向對象語言建設了本企業(yè)的商業(yè)類庫,積累了大量的商業(yè)軟構件,甚至建造好了自己的業(yè)務基礎平臺,為面向對象詳細設計和編程實現(xiàn)創(chuàng)造了良好的開發(fā)環(huán)境。當然,在數(shù)據(jù)層上的詳細設計和編程實現(xiàn),仍然要采用面向元數(shù)據(jù)的方法,因為主要是設計和編寫存儲過程與觸發(fā)器,它們是面向元數(shù)據(jù)的,不是面向對象的。必須指出:詳細設計與編程實現(xiàn)的絕大部分工作量,是在表示層與中間層上進行的,是面向對象的,所以叫做面向對象實現(xiàn)。

詳細設計和編程實現(xiàn),實質上是用構件加上程序來實現(xiàn)系統(tǒng)的業(yè)務模型和功能模型(包括性能模型和接口模型)。只有對系統(tǒng)的三個模型思想(業(yè)務模型、功能模型、數(shù)據(jù)模型)吃透了,才能設計和編寫出規(guī)范的程序。

因為類的實例化就是對象,所以面向對象實現(xiàn),實質上是面向類實現(xiàn)。面向對象方法的軟件分析師與程序員時刻要牢記:分析設計時由對象抽象出類,程序運行時由類還原到對象。

1.5.5 面向功能測試

面向功能測試(Functional-Oriented Test),就是面向功能進行模塊測試、集成測試、Alpha測試和Beta測試。

面向功能測試的方法就是黑盒測試方法,隨著第4 代程序設計語言和構件技術的發(fā)展,該測試方法的應用將越來越廣泛。今后采用白盒測試方法(面向程序執(zhí)行路徑測試)的人,只是從事軟件構件生產的底層人員。因此,測試部門的專職測試人員,主要是掌握面向功能的黑盒測試方法。

黑盒測試方法的測試思路是:針對需求分析時建立的系統(tǒng)功能模型,將每一個需求功能點,分解為多個測試功能點。再將每一個測試功能點,分解并設計為多個測試用例。對每一個測試用例,都執(zhí)行測試過程,產生測試記錄數(shù)據(jù)。最后,匯總并分類整理所有的測試記錄數(shù)據(jù),形成測試報告。

一般而言,面向功能的黑盒測試報告,就是軟件系統(tǒng)的內部驗收測試報告,即Alpha測試報告。而Beta測試報告,是用戶驗收測試報告。

1.5.6 面向過程管理

面向過程管理(Procedure-Oriented Management),就是面向軟件生命周期過程,對軟件生命周期各個階段進行過程管理與過程改進。

因為軟件產品質量及軟件服務質量的提高與改進,完全取決于軟件企業(yè)軟件過程的改善。無論是CMMI,還是ISO 9001,都是站在軟件生命周期的層面上,去提高軟件企業(yè)的過程管理素質。

軟件組織的軟件過程管理與改進,是面向過程的,它既面向開發(fā)過程,又面向管理過程。可視、可控、優(yōu)化的白箱操作過程,能保證軟件工作產品的高質量。

質量源于過程,過程需要改進,改進需要模型,改進永無止境,這就是CMMI精神和軟件工程實踐論中的面向過程管理。

1.5.7 軟件工程實踐論小結

由上可知,“五個面向”實踐論,構成了一個完整的軟件工程實踐論體系。它源于軟件企業(yè)對軟件工程方法論的長期實踐,指導軟件企業(yè)對信息系統(tǒng)的開發(fā)建設,它是軟件工程方法論在軟件實踐活動中的活學活用。

現(xiàn)在的問題是,“五個面向”實踐論是否具有片面性,是否只適合于信息系統(tǒng)建設,不太適合于其他軟件系統(tǒng)建設?為了回答這個問題,我們需要仔細分析“五個面向”的具體內涵:面向流程分析、面向對象實現(xiàn)、面向功能測試、面向過程管理,這4 個面向應該是沒有問題的,對任何軟件系統(tǒng)都是適用的。剩下的只是“面向元數(shù)據(jù)設計”了,難道它只適合于信息系統(tǒng)、不適合其他系統(tǒng)?其實不然。

如前所述,只要將“元數(shù)據(jù)”的概念稍加擴充,即元數(shù)據(jù)是所有軟件系統(tǒng)中組織數(shù)據(jù)的數(shù)據(jù),那么,對于信息系統(tǒng)之外的其他領域,面向元數(shù)據(jù)方法也是適用的。同理,對于信息系統(tǒng)之外的其他軟件系統(tǒng),“五個面向”實踐論也是完全適用的。

若將一切組織數(shù)據(jù)的數(shù)據(jù)都定義為元數(shù)據(jù),那么“五個面向”實踐論就在軟件工程中具有普遍意義。事實上,由于網(wǎng)絡上的軟件等于程序、數(shù)據(jù)和文檔的集合,而數(shù)據(jù)包括兩部分內容:組織數(shù)據(jù)的數(shù)據(jù)(元數(shù)據(jù))和被組織的數(shù)據(jù)。從這一觀點看,任何軟件設計都應該是面向元數(shù)據(jù)設計,而不是面向被元數(shù)據(jù)所組織的數(shù)據(jù)設計。例如,在面向對象方法中,面向對象設計本質上是面向類(Class)的設計,不是面向對象(Object)的設計,因為類由元數(shù)據(jù)組成(類名、屬性名、方法名都是元數(shù)據(jù)),所以類是組織數(shù)據(jù)的數(shù)據(jù),而對象是被元數(shù)據(jù)(類)組織的具體數(shù)據(jù)。這既是事實,也是常識。

在“五個面向”的實踐中,都要制定并遵守相應的規(guī)程、標準和規(guī)范,因為軟件工程的質量,源于這“五個面向”實踐的質量。實踐是檢驗真理的唯一標準,“五個面向”實踐論,還將在軟件工程的長期實踐中接受檢驗。

主站蜘蛛池模板: 萍乡市| 贵阳市| 钟山县| 庆云县| 芦溪县| 新河县| 唐山市| 社会| 巴马| 若羌县| 东安县| 绥棱县| 乐平市| 尤溪县| 余江县| 永康市| 彰化市| 西畴县| 慈利县| 固安县| 布拖县| 云和县| 巩留县| 武城县| 宣武区| 台安县| 巴中市| 图们市| 江口县| 河北省| 九江市| 江门市| 百色市| 同德县| 康平县| 南漳县| 乌苏市| 宣化县| 长岛县| 无棣县| 墨脱县|