浅谈《软件工程》常用的几种软件开发方法
-
軟件工程
在上個世紀60年代中期爆發了眾所周知的軟件危機。為了克服這一危機,在1968、1969年連續召開的兩次著名的NATO會議上提出了軟件工程這一術語,并在以后不斷發展、完善。與此同時,軟件研究人員也在不斷探索新的軟件開發方法。
-
軟件開發方法
目前常用的開發方法有四種,分別是結構化方法、原型法和面向對象方法。接下來我們會一一敘述這些軟件開發方法的實現過程和其中的特點以及優缺點。
結構化方法
結構化方法:結構化方法是應用最為廣泛的一種開發方法。按照信息系統生命周期,應用結構化系統開發方法,把整個系統的開發過程分為若干階段,然后一步一步她依次進行,前一階段是后一階段的工作依據;每個階段又劃分詳細的工作步驟,順序作業。
每個階段和主要步驟都有明確詳盡的文檔編制要求,各個階段和各個步驟的向下轉移都是通過建立各自的軟件文檔和對關鍵階段、步驟進行審核和控制實現的。它是由結構化分析、結構化設計和結構化程序設計三部分有機組合而成的。
它的基本思想:把一個復雜問題的求解過程分階段進行,而且這種分解是自頂向下,逐層分解,使得每個階段處理的問題都控制在人們容易理解和處理的范圍內。以數據流圖,數據字典,結構化語言,判定表,判定樹等圖形表達為主要手段,強調開發方法的結構合理性和系統的結構合理性的軟件分析方法。結構化方法具有如下特點。
(1)遵循用戶至上原則。
(2)嚴格區分工作階段,每個階段有明確的任務和取得的成果。???
(3)強調系統開發過程的整體性和全局性。???
(4)系統開發過程工程化,文檔資料標準化。?
結構化分析方法是一種面向數據流而基于功能分解的分析方法, 在該階段主要通過采用數據流程圖、編制數據字典等工具, 描述邊界和數據處理過程的關系, 力求尋找功能及功能之間的說明。
該方法的優點是:理論基礎嚴密,它的指導思想是用戶需求在系統建立之前就能被充分了解和理解。由此可見,結構化方法注重開發過程的整體性和全局性。
該方法的缺點是:開發周期長;文檔、設計說明繁瑣,工作效率低;要求在開發之初全面認識系統的信息需求,充分預料各種可能發生的變化,但這并不十分現實;若用戶參與系統開發的積極性沒有充分調動,造成系統交接過程不平穩,系統運行與維護管理難度加大。?
結構化設計方法的局限性:
i.不能直接反映問題域: 結構化分析方法以數據流為中心, 強調數據的流動及每一個處理過程, 不是以問題域中的各事物為基礎, 打破了各事物的界限, 分析結果不能直接反映問題域, 容易隱蔽一些對問題域的理解偏差。
ii.數據和代碼缺乏保護機制: 一個特定全程數據既可以被操作這些數據的過程訪問, 也可以被其他過程訪問, 這給程序設計帶來了不安定因素, 一個不正常的數據修改或者過程調用可能會破壞正常的程序執行流程或結果。
iii.分析和設計體系不一: 結構化分析的結果是數據流圖, 結構化設計的結果是模塊結構圖。 二者的表示體系不一致, 分析文檔很難與設計文檔對應, 所以從分析到設計的“ 轉換”過程容易因理解上的錯誤而使得設計文檔與用戶的原本需求相差甚遠。
iv.開發過程復雜: 由于結構化方法將過程和數據分離為相互獨立的實體, 程序員在編程時必須時刻考慮到所要處理的數據的格式。 對于不同的數據格式做相同的處理或對于相同的數據格式做不同的處理都需要編寫不同的程序, 而且往往不能對數據的安全性進行有效的控制。 如果程序進行擴充或升級, 也需要大量修改函數, 因此結構化程序的可重用性不好。 要使數據與程序始終保持兼容, 已成為程序員的一個沉重的負擔。
面向對象方法
面向對象方法是一種運用對象、類、封裝、繼承、多態和消息等概念來構造、測試、重構軟件的方法。隨著應用系統日益復雜龐大和面向對象程序設計語言的日益成熟,面向對象的系統開發方法以其直觀、方便的優點獲得廣泛應用。?是以認識論為基礎,用對象來理解和分析問題空間,并設計和開發出由對象構成的軟件系統(解空間)的方法。?
由于問題空間和解空間都是由對象組成的,這樣可以消除由于問題空間和求解空間結構上的不一致帶來的問題。簡言之,面注重軟件開發中人的作用。?
面向對象設計基本步驟:
-
根據概念層類圖,進行實體類設計。
-
設計實體類的操作入口,如管理器類和容器類。
-
根據GRASP九大原則,進行業務邏輯類的設計。涉及到活動圖。
-
用例實現。一般會涉及到類圖和協作圖。
基本思想:盡可能模擬人類習慣的思維方式,使開發軟件的方法與過程盡可能接近人類認識世界、解決問題的方法與過程, 也就是使描述問題的問題空間與實現解法的求解空間在結構上盡可能一致。
面向對象分析是把對問題域和系統的認識理解, 正確地抽象為規范的對象( 包括類、繼承層次) 和消息傳遞聯系, 最終建立起問題域的簡潔、精確、可理解的面向對象模型, 為后續的面向對象設計和面向對象編程提供指導。面向對象分析通常建立三種模型: 對象模型、動態模型、功能模型。其中, 對象模型描述了系統的靜態結構,確定類的名稱和類間的關系;動態模型表示瞬時的、行為化的系統的“ 控制”性質, 規定了對象模型中的對象的合法變化序列;功能模型表明了系統中數據之間的依賴關系, 以及有關數據的處理功能。
面向對象方法的局限:
i.開發過程管理要求高:在面向對象分析過程中,需要多次迭代,開發過程要經過“修改-評價-再修改”的多次反復
ii.系統復用性低:面向對象方法通過信息隱藏和封裝等手段屏蔽了對象內部的執行細節,控制了錯誤的蔓延,但發生錯誤時,定位故障代價大,對于需求變化頻繁的系統,很難得到一個高度可復用的面向對象軟件系統設計。
iii.開發人員易將原型取代規范系統分析:缺乏規范化的文檔資料,不易于后期維護。
面向對象方法學的優點:
i.與人類習慣的思維方法一致。
ii.穩定性好。傳統方法所建立起來的軟件系統的結構緊密依賴于系統要完成的功能。當功能需求發生變化時將引起軟件結構的整體改變。面向對象方法基于構造問題領域的對象模型,以對象為中心構造軟件系統。當功能需求發生變化時,往往僅需要一些局部性的修改。
iii.可重用性好,重用是提高生產效率的最主要的方法。對象是比較理想的模塊和可重用的軟件成分。類重用的方法,創建該類的實例,派生。
iiii.較易開發大型軟件。
iiiii.可維護性好面向對象的軟件穩定性比較好。面向對象的軟件比較容易修改,面向對象的軟件比較容易理解,易于測試和調試
原型法
原型法的基本思想與結構化方法不同,原型法認為在很難一下子全面準確地提出用戶需求的情況下,首先不要求一定要對系統做全面、詳細的調查、分析,而是本著開發人員對用戶需求的初步理解,先快速開發一個原型系統,然后通過反復修改來實現用戶的最終系統需求。是在投入大量的人力,物力之前,在限定的時間內,用最經濟的方法開發出一個可實際運行的系統模型,用戶在運行使用整個原型的基礎上,通過對其評價,提出改進意見,對原型進行修改,統一使用,評價過程反復進行,使原型逐步完善,直到完全滿足用戶的需求為止。?
適用范圍:處理過程明確、簡單系統;涉及面窄的小型系統不適合于:大型、復雜系統,難以模擬;存在大量運算、邏輯性強的處理系統;管理基礎工作不完善、處理過程不規范;大量批處理系統???
原型應當具備的特點如下。???
(1)實際可行。???
(2)具有最終系統的基本特征。???
(3)構造方便、快速,造價低。???
原型法的特點在于原型法對用戶的需求是動態響應、逐步納入的,系統分析、設計與實現都是隨著對一個工作模型的不斷修改而同時完成的,相互之間并無明顯界限,也沒有明確分工。
系統開發計劃就是一個反復修改的過程。適于用戶需求開始時定義不清的系統開發,開發方法更宜被用戶接受;但如果用戶配合不好,盲目修改,就會拖延開發過程。?
-
總結
通過對這幾種方法的實現簡介和它們的優缺點介紹,不同的方法適用于不同的軟件開發。如果說想要找一個統一的,合適所有軟甲開發工程的開發方法,在目前階段是不合適的,因為如果你用原型法去做大型軟件,其中的花費,會拖垮大部分的公司,而且系統的使用大概率的會出現不能正常使用的狀態,所以,開發軟件用合適的開發方法,才是軟件開發人員的主要作用。
總結
以上是生活随笔為你收集整理的浅谈《软件工程》常用的几种软件开发方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 外部表 时间戳,Hive建
- 下一篇: [Leedcode][JAVA][第28