但凡是搞IT的
對軟體架構、設計模式、XP程式設計(極限程式設計)或是靈活開發、代碼重構
這些軟體開發的思想或方法都不陌生
但是它們之間究竟有什麼聯系???
在實際的開發過程應該如何做???
才能建構一個好的程式……
簡單來說
開發一個軟體的正常做法是
先設計整個系統的總體架構
架構包含一些“層”的思想
(希望你了解“層”的好處,分“層”是我們解決問題的常用方法,不僅限在計算機領域)
再考慮各“層”采用的模式
最後是編寫代碼
不遵循這個過程的慘痛教訓令很多計算機前輩們記憶猶新
提稍早的開發過程意義其實不大
它隻會勾起我們的“痛苦”回憶
是以我們才思考新的軟體開發思想~~~
在這個過程中
我們比較關注軟體設計的架構和模式問題
是以花費的時間也相對多些
但XP程式設計(或靈活開發)改變了這一切
它不會在設計軟體的架構和采用的模式上花費太多時間
因為我們不斷地體會到
即使再好的設計也會在稍後的開發過程中改變
與其這樣
倒不如在開發中不斷地改善和完善設計
使軟體具有良好的可維護性、可擴充性和健壯性
軟體架構(Software Architecture)它是一個系統的草圖,是一系列抽象
它抽象的事物可以直接構成系統的元件
來指導軟體各個方面工作——設計工作
軟體架構的幾個基本概念包括元件(元件)、連接配接器和配置以及任務流等
在實際項目中
元件可以是某個類或是程式集
元件之間的連接配接器通常為接口
将這裡的“接口”了解為面向對象思想中的“接口”是狹隘的
而是類或程式集公開的、供其他類和程式集調用的方法和屬性
早在六十年代時戴克斯特拉就已經涉及了結構化設計的問題
此後的Rational Software Corporation、Microsoft和卡内基梅隆大學以及加州大學埃爾文分校都做了很多研究
我們常說的“三層架構”就是軟體架構的一種
設計模式(Design Pattern)是90年代由“GoF(四人幫)”提出的
“GoF”指的是四個人——Gamma、Helm、Johnson•Vlissides、Addison•Wesley
他們将建築學的設計思想引入到計算機領域
并于1995年出版《設計模式》一書
第一次将軟體的設計提升到理論高度
要注意軟體架構比設計模式更加抽象
簡單地說
至少軟體架構不會涉及具體的類或程式集
而軟體模式考慮的就是具體的類和程式集
XP程式設計(Extreme Programming)是由Kent•Beck于1996年提出
它屬于輕量級的軟體開發方法
而重構(Reflectoring)是實作XP程式設計的一種方法或手段
它的兩位最早的擁護者是Ward•Cunningham和Kent•Beck
重構既不修正錯誤,又不增加新的功能
而是用于提高代碼的可讀性或改變代碼内部的設計和結構
并删除死代碼,使其在将來更容易維護
重構和XP程式設計是密切聯系的
軟體架構、設計模式和XP程式設計是一種軟體開發思想
代碼重構則是一種的方法和手段
雖然軟體架構和設計模式決定軟體的生死
但設計軟體架構和考慮使用的模式是一個相對漫長的過程
畢竟
隻有充分了解了客戶需求後才能設計得當
這必然會延長軟體開發的時間、增加成本
這是任何一個老總都不希望看到的~~~
是以才出現XP程式設計、靈活開發
既然再好的設計都會改變
那麼就在開發中不斷地去改善和完善
縮短開發時間
但有一點
XP程式設計和重構并不意味着不再需要設計
而是在不斷變化的需求中
讓軟體的設計去适應這些變化
軟體才能具有足夠的靈活性、較強的生命期
????????????????????????????
?那麼作為一名開發人員、程式員 ?
?我們是應該關注軟體的功能,還是軟體的設計 ?
?是關注軟體的功能是否滿足客戶目前和未來的需要 ?
?還是關注軟體的設計是否滿足客戶目前和未來的需求 ?
????????????????????????????