第一章 軟件體系結構和工具的選擇
第二章 軟件開發方法綜述
第三章 怎樣培養軟件工程的思維與方法
第四章 軟件開發的發展變化
第五章 我們是否需要軟件工程
第六章 我國軟件工程發展的現狀
第七章 我有一個夢
第一章 軟件體系結構和工具的選擇
軟件體系結構表示了一個軟件系統的高層結構,主要特點有:1)軟件系統結構是一個高層次上的抽象,它并不涉及具體的系統結構(比如B/S還是C/S),也不關心具體的實現。2)軟件體系結構必須支持系統所要求的功能,在設計軟件體系結構的時候,必須考慮系統的動態行為。3)在設計軟件體系結構的時候,必須考慮有現有系統的兼容性、安全性和可靠性。同時還要考慮系統以后的擴展性和伸縮性。所以有時候必須在多個不同方向的目標中進行決策。
當前已經有一些關于規范化軟件體系結構,比如:ISO的開放系統互聯模型、X Window系統等等。軟件系統的結構通常被定義為兩個部分:一個是計算部件。另一個就是部件之間的交互。如果把軟件系統看成一幅圖的話,計算部件就是其中的節點,而部件之間的交互就是節點之間的弧線。部件之間的連接可以被認為是一種連接器,比如過程調用、事件廣播、數據庫查詢等等。正確的體系結構設計是軟件系統成功的關鍵。
我們理解了軟件工程的重要性以后,我們沒有相應的工具,我們也很難很好的完成一個系統。在需求分析和設計階段,我們需要什么樣的工具呢?
當然最好是基于UML的CASE工具。當前比較流行的就是Rose,它是一個很好的分析和建立對象和對象關系的工具。在具體編碼的時候,我們需要版本控制工具,MS的SourceSafe就是一個很好的版本管理工具和項目管理工具。具體的開發工具當然很多,但是如果你是一個對VC侵淫了多年的程序員,你一定會選擇它,因為它會讓你感到什么是真正的面向對象的編程,而你在用VB,PowerBuilder,Delphi時很少會有同樣的感受。至于數據庫模式構建,我一向是采用Sybase的S-Design,更好的工具就不知道了。
另外需要注意的是,我們需要建立文檔編寫的若干模板,以便開發人員按照這個模板編寫規范的技術和說明文檔。幫助文檔可以用微軟的HTML Help Workshop(hhw.exe)制作,你也可以編譯成.chm格式,它打包了文本和圖形,只有一個文件,使用和分發比較方便。最后,如果開發人員不是集中在一個地方的話,最好建立一個郵件列表,開發人員可以通過郵件系統討論開發中的各項事宜。
第二章 軟件開發方法綜述
國外大的軟件公司和機構一直在研究軟件開發方法這個概念性的東西,而且也提出了很多實際的開發方法,比如:生命周期法、原型化方法、面向對象方法等等。下面介紹幾種流行的開發方法:
1、結構化方法
結構化開發方法是由E.Yourdon 和 L.L.Constantine 提出的,即所謂的SASD 方 法, 也可稱為面向功能的軟件開發方法或面向數據流的軟件開發方法。Yourdon方法是80年代 使用最廣泛的軟件開發方法。它首先用結構化分析(SA)對軟件進行需求分析,然后用結構化設計(SD)方法進行總體設計,最后是結構化編程(SP)。它給出了兩類典型的軟件結構(變換型和事務型)使軟件開發的成功率大大提高。
2、面向數據結構的軟件開發方法
Jackson方法是最典型的面向數據結構的軟件開發方法,Jackson方法把問題分解為可由三種基本結構形式表示的各部分的層次結構。三種基本的結構形式就是順序、選擇和重復。三種數據結構可以進行組合,形成復雜的結構體系。這一方法從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其它細節,就可得到完整的程序結構圖。這一方法對輸入、輸出數據結構明確的中小型系統特別有效,如商業應用中的文件表格處理。該方法也可與其它方法結合,用于模塊的詳細設計。
3、 面向問題的分析法
PAM(Problem Analysis Method)是80年代末由日立公司提出的一種軟件開發方法。 它的基本思想是考慮到輸入、輸出數據結構,指導系統的分解,在系統分析指導下逐步綜 合。這一方法的具體步驟是:從輸入、輸出數據結構導出基本處理框;分析這些處理框之間的先后關系;按先后關系逐步綜合處理框,直到畫出整個系統的PAD圖。這一方法本質上是綜合的自底向上的方法,但在逐步綜合之前已進行了有目的的分解,這個目的就是充分考慮系統的輸入、輸出數據結構。PAM方法的另一個優點是使用PAD圖。這是一種二維樹形結構圖,是到目前為止最好的詳細設計表示方法之一。當然由于在輸入、輸出數據結構與整個系統之間同樣存在著鴻溝,這一方法仍只適用于中小型問題。
4、原型化方法
產生原型化方法的原因很多,主要隨著我們系統開發經驗的增多,我們也發現并非所有的需求都能夠預先定義而且反復修改是不可避免的。當然能夠采用原型化方法是因為開發工具的快速發展,比如用VB,DELPHI等工具我們可以迅速的開發出一個可以讓用戶看的見、摸的著的系統框架,這樣,對于計算機不是很熟悉的用戶就可以根據這個樣板提出自己的需求。
開發原型化系統一般由以下幾個階段:
(1) 確定用戶需求
(2) 開發原始模型
(3) 征求用戶對初始原型的改進意見
(4) 修改原型。
原型化開發比較適合于用戶需求不清、業務理論不確定、需求經常變化的情況。當系統規模不是很大也不太復雜時采用該方法是比較好的。
5、面向對象的軟件開發方法
當前計算機業界最流行的幾個單詞就是分布式、并行和面向對象這幾個術語。由此可以看到面向對象這個概念在當前計算機業界的地位。比如當前流行的兩大面向對象技術DCOM和CORBA就是例子。當然我們實際用到的還是面向對象的編程語言,比如C++。不可否認,面向對象技術是軟件技術的一次革命,在軟件開發史上具有里程碑的意義。
隨著OOP(面向對象編程)向OOD(面向對象設計)和OOA(面向對象分析)的發展,最終形成面向對象的軟件開發方法OMT (Object Modeling Technique)。這是一種自底向上和自頂向下相結合的方法,而且它以對象建模為基礎,從而不僅考慮了輸入、輸出數據結構,實際上也包含了所有對象的數據結構。所以OMT徹底實現了PAM沒有完全實現的目標。不僅如此,OO技術在需求分析、可維護性和可靠性這三個軟件開發的關鍵環節和質量指標上有了實質性的突破,基本地解決了在這些方面存在的嚴重問題。
綜上所述,面向對象系統采用了自底向上的歸納、自頂向下的分解的方法,它通過對對象模型的建立,能夠真正建立基于用戶的需求,而且系統的可維護性大大改善。當前業界關于面向對象建模的標準是UML(Unified Modeling Language)。
這里我們需要談一下微軟的MSF(Microsoft Solutions Framework)的框架,它簡單的把系統設計分成三個階段:概念設計、邏輯設計和物理設計。概念設計階段就是從用戶的角度出發可以得到多少個對象,并且以對象為主體,畫出業務框架。邏輯設計階段就是對概念設計階段的對象進行再分析、細分、整合、刪除。并建立各個對象的方法屬性以及對象之間的關系。而物理設計實際上就是要確定我們實際需要的組件、服務和采用的框架結構、具體的編程語言等。MCF整個結構比較清楚是基于對象開發的一個比較好的可操作的框架系統。
文章來源于領測軟件測試網 http://www.kjueaiud.com/