軟件開發所經歷的生命周期
總的來說,軟件開發都會經歷一下生命周期
- 分析需求:分析問題領域,了解用戶的需求
- 軟件設計:設計軟件的總體架構,把整個軟件系統划分成大大小小的多個子系統,設計每個子系統的具體結構
- 軟件編碼:用選定的編程語言來編寫軟件功能,實現軟件設計階段所勾畫出來的軟件藍圖
- 軟件測試:測試軟件是否實現特定的功能,以及軟件的運行性能
- 軟件部署:為用戶安裝軟件系統,幫助用戶正確的使用軟件
- 軟件維護:修復軟件中存在的BUG,當用戶的需求發生變化時(增加新的功能,或更改現有功能的實現方式)修改相應的軟件模塊
為了提高軟件的開發效率,降低軟件的開發成本,一個良好的軟件系統應具備以下特點
- 可重用性:減少軟件的重復代碼,避免重復編程
- 可擴展性:當軟件系統的需求必須放生更改時,可以方便的在現有架構的基礎上構建新的子系統,也不需要改變軟件系統的現有結構且不影響其它以存在的子系統
- 可維護性:當軟件系統的某個功能需要更改時只需修改相關子系統的少量代碼即可,而不需要修改軟件系統中的多個子系統。
如何才能使軟件系統具備以上特點呢?加入吧整個軟件系統分解成多個小的子系統,每個子系統之間相對獨立把這些子系統像最積木一樣靈活的組裝起來構成整個大的軟件系統。這樣設計出來的軟件肯定能獲得以上的優良特性。軟件系統中的子系統具備以下特性:
- 結構穩定性:軟件設計階段把一個軟件系統划分成更小的子系統時,設計合理,是系統的結構健壯能適應用戶變化的需求
- 可擴展性:當軟件必須增減新的功能時,能夠在現有子系統的基礎上創建出新的子系統,該子系統繼承了原有子系統的一些特性,並且還具有一些新的特性,從而提高的系統的可重用性及可擴展性
- 內聚性:每個子系統只完成特定的功能,每個子系統不會有功能的重疊
- 可組合性:若干個小的子系統組合起來就成了一個完整的大系統,子系統的可組合性會提高軟件的可維護性及可重用性 並簡化開發過程
- 松耦合:每個子系統之間相對獨立,修改一個子系統不會影響到其它的子系統。
面向對象開發:
咋面向對象的開發方法中把軟件系統看成是各種對象的集合,對象就是最小的子系統,一組相關的對象能夠組合成更復雜的子系統。面向對象的開發方法具有以下優點
- 把軟件系統堪稱是各種對象的集合,這更符合人類的自然思維方式
- 軟件需求的改動往往是功能的改動,而功能的執行者————對象一般不會有太大的變化這使得按照對象設計出來的系統結構比較穩定
- 對象包括屬性(數據)和行為(方法)把對象的數據及方法的實現方式一起封裝起來,這使得方法以及與之相關的數據不再分離,提高的子系統的相對獨立性,從而提高的軟件的可維護性
- 支持封裝、繼承、多態和抽象,提高的系統的可重用性、可維護性和可擴展性
對象模型:
在面向對象的分析和設計階段,致力於建立模擬問題領域的對象模型,建立對象模型包括自底向上的抽象過程也包括自頂向下的分解過節過程。
建立對象模型的第一步使從問題領域入手,徹底搞清用戶的需求,然后建立正確的對象模型,開發人員需要進行一下自低向上的抽象思維
- 吧問題領域的屬性和行為抽象成具體的對象
- 把具有相同屬性和行為的對象抽象成類
- 若多個類中存在共性(具有相同的屬性和行為)把這些共性抽象到父類中
在自底向上的抽象過程中,為了使子類能更好的繼承父類的屬性和行為,可能需要自頂向下的修改,從而使類體系更加合理。由於這種類體系的構造是由具體到抽象,再從抽象到具體,符合人類的思維規律,因此能更好更快的完成任務。