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

1.4 軟件開發方法

軟件開發方法是一種使用定義好的技術集及符號表示組織軟件開發的過程,它的目標是在規定的時間和成本內,開發出符合用戶需求的高質量的軟件。因此,針對不同的軟件開發項目和對應的軟件過程,應該選擇合適的軟件開發方法。

1.4.1 基本的軟件開發方法

1.結構化方法

1978年,E.Yourdon和L.L.Constantine提出了結構化方法,也可稱為面向功能的軟件開發方法或面向數據流的軟件開發方法。1979年,Tom DeMarco對此方法做了進一步的完善。

結構化方法采用自頂向下、逐步求精的指導思想,應用廣泛,技術成熟。它首先用結構化分析對軟件進行需求分析,然后用結構化設計方法進行總體設計,最后是結構化編程。這一方法不僅開發步驟明確,而且給出了兩類典型的軟件結構(變換型和事務型),便于參照,使軟件開發的成功率大大提高,因而深受軟件開發人員的青睞。

2.面向數據結構方法

1975年,M.A.Jackson提出了一類軟件開發方法。這一方法從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其他細節,就可得到完整的程序結構圖。這一方法對輸入、輸出數據結構明確的中小型系統特別有效,如商業應用中的文件表格處理。該方法也可與其他方法結合,用于模塊的詳細設計。Jackson方法有時也稱為面向數據結構的軟件設計方法。

1974年,J.D.Warnier提出的軟件開發方法與Jackson提出的方法類似。差別有3點:一是使用的圖形工具不同,分別使用Warnier圖和Jackson圖;二是使用的偽碼不同;第三點,也是最主要的差別,在構造程序框架時,Warnier方法僅考慮輸入數據結構,而Jackson方法不僅考慮輸入數據結構,而且還考慮輸出數據結構。

3.面向對象方法

面向對象方法是軟件技術的一次革命,在軟件開發史上具有里程碑的意義。隨著面向對象編程向面向對象設計和面向對象分析的發展,最終形成面向對象的軟件開發方法。

這是一種自底向上和自頂向下相結合的方法,而且它以對象建模為基礎,從而不僅考慮了輸入、輸出數據結構,實際上也包含了所有對象的數據結構。面向對象方法在需求分析、可維護性和可靠性這3個軟件開發的關鍵環節和質量指標上有了實質性的突破,很大程度上解決了在這些方面存在的嚴重問題。

面向對象方法有Booch方法、Goad方法和OMT(Object Modeling Technology)方法等。為了統一各種面向對象方法的術語、概念和模型,1997年推出了統一建模語言(UML),通過統一的語義和符號表示,將各種方法的建模過程和表示統一起來。

4.形式化方法

形式化方法最早可追溯到20世紀50年代后期對程序設計語言編譯技術的研究,研究高潮始于20世紀60年代后期。針對當時的“軟件危機”,人們提出種種解決方法,歸納起來有兩類:一類是采用工程方法來組織、管理軟件的開發過程;另一類是深入探討程序和程序開發過程的規律,建立嚴密的理論,以用來指導軟件開發實踐。前者導致“軟件工程”的出現和發展,后者則推動了形式化方法的深入研究。

經過多年的研究和應用,如今人們在形式化方法這一領域取得了大量重要的成果,從早期最簡單的一階謂詞演算方法到現在的應用于不同領域、不同階段的基于邏輯、狀態機、網絡、進程代數和代數等眾多形式化方法,形式化方法的發展趨勢逐漸融入軟件開發過程的各個階段。

1.4.2 開源軟件開發方法

開源軟件開發活動以互聯網軟件社區為平臺,其開發過程和制品數據對外開放(共享),允許不同的開發者參與其中(協同),能夠有效匯聚來自互聯網的創意和貢獻。

開源軟件開發指的是由開源軟件項目組開發開源軟件或類似原件的過程,其中,開源軟件的源代碼是公開可用的。這些軟件產品及其源代碼在開源許可下可用,它們常常被用于研究、更改和改進其設計。一些流行的開源軟件產品的例子有Mozilla Firefox、Google Chromium、Android、LibreOffice和VLC媒體播放器等。

開源項目可以被分為以下四類。

1)有各種各樣的軟件程序和庫,它們由獨立的代碼段組成,有些甚至可能依賴于其他開源項目。這些項目服務于特定目的并滿足特定需求。此類項目的示例包括Linux內核、Firefox Web瀏覽器和LibreOffice辦公工具套件等。

2)發行版是另一種類型的開源項目。發行版是從同一來源發布的具有共同目的的軟件集合。發行版最突出的例子是操作系統。有許多Linux發行版(如Debian、Fedora Core、Mandriva、Slackware、Ubuntu等)提供Linux內核和許多用戶級組件。還有其他發行版,如ActivePerl,用于各種操作系統的Perl編程語言,以及用于Microsoft Windows開源程序的Cygwin發行版等。

3)其他開源項目,如BSD衍生品,在一個版本控制系統中維護整個操作系統、內核及其所有核心組件的源代碼,作為一個團隊一起開發整個系統。這些操作系統開發項目與其他基于分布式的系統相比,更緊密地集成了它們的工具。

4)還有圖書或獨立文檔項目。這些項目通常不作為開源軟件包的一部分提供。例如,Linux文檔項目承辦了許多此類項目,這些項目記錄了GNU/Linux操作系統的各個方面。

開源項目的工作可以通過以下多種方式進行。

1)意識到項目需求的個人宣布了公開開發項目的意圖。

2)開發人員在有限但有效的代碼倉庫上工作,將其作為開源程序的第一個版本發布給公眾。

3)到期項目的源代碼向公眾發布。

4)一個完善的開源項目可以由感興趣的外部用戶派生。

1.4.3 群體化軟件開發方法

通常,軟件開發都是基于自己組織的開發團隊,或者企業、組織機構的內部人員組織的開發團隊。以這種方式組織的開發團隊,針對一般的要實現的軟件功能還是能應付的。但是,對某些比較大型、復雜的軟件系統,軟件系統的交付質量和交付時間要求得比較高,此時使用傳統的軟件開發方法在并發效率或是軟件質量等方面就無法勝任了。

隨著互聯網技術的發展,軟件開發技術和開發模式都有了很多新的概念。其中,以開源和眾包為代表的群體化軟件開發方法極大地優化了軟件開發。開源軟件開發方法在第1.4.2小節中已經討論過了,這里不再贅述。眾包軟件開發指的是公開發布軟件開發任務,由參與競爭的個人或團隊給出解決方案的軟件開發方法。軟件開發的任何階段都可以是眾包的,如需求(功能、用戶界面、性能)、設計(算法、架構)、編碼(模塊和組件)、測試(包括安全測試、用戶界面測試)、維護、用戶體驗或這些階段的任意組合。

群體化軟件開發方法最大的特點是面向公眾。開源軟件開發方式可以被看作是一種以合作為主的群體化軟件開發方法,而眾包軟件開發方法則更類似于競爭性的群體化軟件開發方法。它們的目的都是集合互聯網中眾多開發人員的智慧和力量,以更低的成本實現更完善的軟件項目。

互聯網能夠將全世界各地的開發人員連接起來,他們彼此之間可以進行交流、分工合作。軟件開發可借助開放群體的智慧和力量。開源軟件就是常用的方法。借助開源軟件的托管社區,互聯網上的眾多軟件開發人員可通過自組織方式進行分工合作,開發出很多優秀的開源項目,展示出了他們的創造力、開發效率和軟件質量。

群體化軟件開發方法融合工業化軟件生產和開源軟件的開發方式,連接互聯網開發人員群體與企業/組織機構的開發團隊,通過群體化協同、開放式共享和持續性評估等實現高效的軟件開發。

群體化軟件開發方法遵循的核心原則:開放、平等、共享、全局行動。

與群體化軟件開發方法相關的模型有:代碼與證據緊密耦合的可信軟件演化模型;創作與生產緊密耦合的軟件開發過程模型;協同、共享、監控與分析緊密耦合的服務支撐模型。

群體化軟件開發方法將軟件開發過程全面開放并快速迭代,不斷發布系統原型,吸引互聯網大眾體驗,借助互聯網平臺開展各種形式的交流、協同和共享,實現群體需求及創意的匯聚。軟件開發團隊對大眾需求創意進行識別審查,借助工業化生產的強組織模式來組織軟件開發過程,實現高質量軟件產品的輸出。群體化軟件方法將大眾群體的軟件創作過程有機地融入開發團隊的軟件生產流程中,能夠充分發揮大眾群體和開發團隊在軟件開發過程中各自的優勢,有效地支持網絡環境下的軟件開發。

除了上述幾種軟件開發方法,軟件開發方法還包括問題分析法、可視化開發方法等。本書接下來的章節中將會對結構化方法和面向對象方法進行更加詳細和更深入的介紹。

主站蜘蛛池模板: 土默特左旗| 牙克石市| 壶关县| 泸水县| 渭源县| 潼关县| 茶陵县| 玉环县| 鲁山县| 宝清县| 天镇县| 丹凤县| 虞城县| 清涧县| 卢氏县| 靖宇县| 汉中市| 梓潼县| 巨鹿县| 长葛市| 阿勒泰市| 会同县| 富阳市| 青川县| 屯昌县| 焉耆| 洛隆县| 石河子市| 青河县| 花莲县| 绥芬河市| 乐陵市| 平邑县| 中江县| 台前县| 进贤县| 浮梁县| 开阳县| 昆山市| 积石山| 隆安县|