软件工程——认识方法、模型、工具和技术
做任何事情都要講究一個方法,好的方法可以起到事半功倍的效果,提高我們的做事效率。在我們身邊,有的人做事效率很高,處理事情井井有條;有的人做事效率就比較低下,處理事情拖拖拉拉。做事效率低下的人不代表他們的工作能力就差,而是沒有一個好的做事方法,來指導他們如何去處理各類事情。
在20世紀初,伯利恒鋼鐵公司的創始人查爾斯·施瓦布為了提高團隊的工作效率,約見了當時頗有名望的工作效率顧問艾維·李,謀求提高團隊工作效率的方法。艾維·李經過細致調研后,給出了提高團隊工作效率的方法:
1、每天列出一張數目不超過六項的待辦事項清單;
2、給清單上的待辦事項按照重要程度排序;
3、按照排序依次處理清單上的待辦事項;
4、清單上的待辦事項如果當天沒有完成,沒完成的事項放入第二天的待辦事項清單,待辦事項數目依然不能超過六項;
5、每天重復上述過程。
施瓦布和他的團隊在工作中使用這個方法后,取得了非常好的效果,工作效率得到很大提升,這就是方法的作用。
?
什么是系統開發方法?
開發軟件項目是一個非常復雜的過程,涉及到開發團隊(研發人員)、用戶(最終使用軟件的人)、軟件功能、硬件(運行軟件的計算機、服務器、手機等)、數據(數據庫、音視頻、圖片、文檔等)、網絡(網絡協議、互聯網)等眾多相關資源。
大多數開發者最初拿到的僅僅是招標書、合同、項目基本需求等文檔,這些文檔對軟件功能和資源的需求描述都是對現實問題域的描述,不能直接映射到在計算機中可運行的軟件結構,而且現實問題域的內容在團隊溝通中也會出現大問題,團隊成員對問題域的理解可能不盡相同,導致開發出的軟件功能,與招標書、合同規定的軟件要求會有較大差異。
最好的方法是細化招標書、合同、項目基本需求等文檔提出的軟件功能和資源需求,并通過模型、工具和技術將文檔中實現的問題域,映射為可以被編程語言識別的軟件結構,這個映射過程就是項目的開發方法,也稱為系統開發方法。
系統開發方法提供完成系統開發生命周期每一步的詳細指導,包括具體的模型、工具、技術。系統開發方法呈現出來就是一些文檔,這些文檔規定了在項目開發過程中具體要做的工作。例如,項目開發遵循的過程、如何建立需求和設計模型,如何書寫文檔等等。
?
什么是模型?
模型是現實世界中事務的表示和抽象。一些模型在外觀上類似于真實產品,如飛機模型、汽車模型等等;一些模型使用繪圖進行描述,如圖紙、AutoCAD建筑模型等;一些模型則是抽象的數學符號,如數學公式等。在建筑設計中,建筑工程師使用AutoCAD繪制大量不同的建筑模型,因此要成為一名建筑工程師需要學會創建和使用各種模型。
對于軟件開發來說,建立軟件模型也非常重要。軟件模型雖然不像飛機模型和建筑模型那樣標準或精確,但也需要通過模型能夠明確表達出軟件的功能、過程、系統結構、數據結構、輸入與輸出等內容。大多數的軟件模型是圖形模型,包括使用公認的符號和慣例畫表示圖,這些模型統稱為圖表,流程圖也是一種軟件模型,用流程圖可以表示軟件程序模塊的邏輯結構。
常用的軟件模型有流程圖、數據流圖(DFD)、實體-聯系圖(ER)、結構圖、用例圖、類圖、順序圖、部署圖。用于管理軟件開發過程的一些模型有PERT圖、甘特圖、組織層次圖等。
?
什么是工具?
軟件模型需要借助工具來繪制和生成,就像建筑模型需要用AutoCAD來繪制一樣。工具也許是創建圖表的簡單繪圖程序,也許包括一些存儲關于項目信息的數據庫應用程序,例如Visio繪圖程序、Microsoft Project項目管理程序等等。有些工具是為軟件開發而專門設計的,如程序員比較熟悉的Eclipse、Microsoft Visual Studio等集成開發環境(IDE),集成開發環境提供了許多工具幫助程序員進行編程,例如代碼編輯器、上下文相關幫助和調試工具。
?
什么是技術?
技術是一組方法的組合,這組方法可以幫助開發者完成軟件開發活動或任務。例如軟件測試技術貫穿整個軟件開發生命周期、對軟件產品進行驗證和確認。軟件測試技術包括回歸測試法、壓力測試法、性能測試法等多種測試方法的組合。
?
小結
1、方法如何把模型、工具和技術組合在一起呢?方法包括一組用來完成軟件開發每一階段活動的技術。這些活動包括完成各種模型以及其它文檔和交付資料。開發者使用軟件工具來幫助他們完成這些活動。下圖給出了方法、模型、工具和技術之間的關系。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
2、技術和方法的關系。技術和方法的關系是我中有你,你中有我。在開發方法中包含了多個技術,在每個技術中又包含了多個方法。易學中的陰陽圖給出了很好的解釋,圖中陰陽雙魚象征陰陽之間本為一體,然相互對立,互動消長,你中有我,我中有你。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
總結
以上是生活随笔為你收集整理的软件工程——认识方法、模型、工具和技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么Docker容器将占领世界
- 下一篇: 使用redis批量生成主键(订单)Id