《軟體設計精要與模式》讀書筆記(一)

來源:互聯網
上載者:User

     最近在學習設計模式方面的內容,買了幾本關於設計方面的書籍,這兩天在看《軟體設計精要與模式》,本書是部落格園開發人員征途系列、由張逸所著。

 

     第一章:設計之道。

     1.1 計劃的設計和演化的設計

     其實以前自己並沒有意識到設計還是分方式的,這裡作者提出兩種方式:計劃的設計和演化的設計。我個人認為對於設計的取捨可以根據軟體的開發模型來決定,比如採用瀑布模型使用計劃的設計比較方便(因為需求變化較小或者說需要擴充的可能性不大等),採用螺旋形模型/迭代模型可以採用演化模型。這裡有些人可能會有些疑問,到底是先由設計還是先確定模型,個人認為是先確定模型(因為模型是項目開發的整個過程,而設計只是裡面的一個環節)。其實無論設計或者開發模型都是以需求為驅動的。這裡我需要引用作者“拷問自己”的幾句話:

     “我對客戶的需求都理解了嗎?”

     “我能確定客戶的需求不再變化嗎?”

     “我設計的軟體架構真的能滿足需求嗎?”

 

     1.2 架構設計的標準

     本節可以作為架構設計的參考:

     (1)程式組織(Program Organization)

     (2)資料設計(Data Design)

     (3)安全性(Security)

     (4)效能(Performance)

     (5)可擴充性(Scalability)

     (6)可靠性(Reliability)

     (7)可用性(Usability)

 

     1.3 過度設計,還是簡單設計

     本節我引用一句話來概括吧:“然而簡單並非意味著簡易,所謂‘大道至簡’,自簡入繁並不難,化繁為簡才真正需要大智慧。”

 

     1.4 需要設計模式嗎

     廢話啊,不然我還看這本書幹嘛?

     需要提醒的幾點:“重要的不是你熟記了多少個模式的名稱,關鍵在於付諸實踐的運用。”

     “言必談‘模式’,並不能是你成為優秀的架構師。真正出色的設計師,懂得判斷運用模式的時機。”

 

     1.5 重構是必然的

     看看《重構--改善既有代碼的設計》吧,最少偶是買了一本的,但是推薦在項目後期有時間改進時買,感觸頗深啊。

 

     1.6 UML 重要嗎

     作者這裡提到“演化的設計降低了UML 的重要性,按照極限編程的開發原則,我們僅需要對眼前的需求進行編碼、測試,然後重構”,其實如果真正按照演化的設計,那麼UML 的設計是否會處於裡面的一環?我們這裡談的是設計,幹嗎非要把極限編程的開發原則作為演化的設計拉進來說?UML 是設計的一種實現。如何去用UML 才是我們需要著重考慮的問題,而不是是否採用極限編程!

 

     1.7 測試驅動開發

     “‘大膽設計,小心求證。’測試驅動開發的精髓。”      “測試驅動開發的主要精神可以概括為‘測試先行,快速反饋’。”

     測試驅動開發,真正能夠做到的有多少?雖說是個好東西,但是要去做還需要時間。

     

     計劃的設計與演化的設計“它們非但不會在戰場上成為敵我雙方,反而是相輔相成、並行不悖的協作部隊。當我們面對一個大型系統的時候,‘分而治之’是我們唯一能夠選擇的解決之道。如何‘分之’,正是計劃的設計所需要關注的,解構出系統的層次、構成及其之間的關係,將整個系統分為能與外界通訊,同時又獨立為一體的不同模組。如何‘治之’,則可以應用演化的設計,以簡單、適用作為設計前提,從不斷的演化中創造客戶所需。”這裡我有些疑問,兩種設計真的能夠完全並存嗎?或者是過程局部並存?如果將設計作為一個流程,那麼是採用兩個流程交替還是互相制約?那種設計為主?這裡個人疑問太多。

     

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.