但凡是搞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程式設計和重構並不意味著不再需要設計
而是在不斷變化的需求中
讓軟體的設計去適應這些變化
軟體才能具有足夠的靈活性、較強的生命期
????????????????????????????
?那麼作為一名開發人員、程式設計師 ?
?我們是應該關注軟體的功能,還是軟體的設計 ?
?是關注軟體的功能是否滿足客戶當前和未來的需要 ?
?還是關注軟體的設計是否滿足客戶當前和未來的需求 ?
????????????????????????????
我對軟體開發的一點思考
但凡是搞 的 對軟體架構 設計模式 xp程式設計 極限程式設計 或是敏捷開發 重構 這些軟體開發的思想或方法都不陌生 但是它們之間究竟有什麼聯絡?在實際的開發過程應該如何做?才能構建乙個好的程式 簡單來說 開發乙個軟體的常規做法是 先設計整個系統的總體架構 架構包含一些 層 的思想 希望你了解 層 ...
軟體開發的一點感想
這兩天,遇到工作中的兩個小問題,加深了我以前對軟體開發的看法。b 乙個是關於firefox崩潰問題的處理。b 其實,現在最難的就是 b 問題發生在 b 根據現象,我覺得問題應該是發生在firefox初始化時,需要連線到網路,譬如檢測firefox最新版。在定位問題後,我用firefox的安全模式 f...
軟體開發中排錯的一點想法
軟體開發中排錯的一點想法 孫文濤 2008 07 26 前幾天工作時,總是碰到編譯錯誤,因為是跨平台,對編譯器,開關等都不是特別的熟,所以不知道如何去排一些錯誤。在公司的很長一段時間裡,工作的好大一部分都要排錯。總的來說,軟體開發依循的規律就是 迭代開發 增量式的開發。每乙個phrase都必須要保證...