如何做详细设计之序
詳細設計是軟件開發中非常重要的環節,無論你是工作幾年的技術大牛,還是只有一兩年工作經驗的小菜。可能你看到設計兩個字,就覺得非常高大上,然而你只要在用心寫代碼,在思考如何定義方法,如何定義類,你都在做著詳細設計。至于做的怎么樣,那就另說了。
詳細設計涉及哪些內容?
首先詳細設計不同于架構設計,架構設計主要關注系統的架構模型、系統開發語言選型、系統數據存儲方式選型、系統模塊的劃分以及系統模塊間的關系,關鍵技術的選型,系統部署架構,系統硬件需求、系統的安全性擴展性等內容。
詳細設計不同于代碼實現,代碼實現主要關注方法級別的算法實現,以及方法級別的調試,單元測試,以及各個模塊間的接口聯調。
那么詳細設計是包括哪些內容?詳細設計包括業務接口的定義、領域模型的定義、持久化層接口定義、關鍵業務設計模式的選用、關鍵業務模塊的設計方案、關鍵方法的實現算法的選用等。當然如果web項目還包括請求響應接口的定義,我認為這是一個非常重要的工作。哪些地方可以使用ajax,哪些地方選用直接輸出html。直接影響著響應速度以及用戶體驗。
詳細設計需要具備什么能力?
1、深刻理解架構設計模型,理解為什么選用這種架構。這種架構對于目前系統的利與弊。
2、深入理解業務需求,并且能夠預測部分需求的變化方向。能夠理解業務的本質。
3、具備面向對象思維,熟悉面向對象的基本設計原則,熟悉設計模式、重構技術。
我只是暫時想到了那么多,還涉及其他能力。當然我也是在為達到以上的能力努力中。從以上可以看出,成為一名好的詳細設計人員還是非常有難度的。這可能具備良好這種能力人少的原因之一吧。
詳細設計重要嗎?
當然對于一個小的系統或者一個簡單的系統,詳細設計做的非常好可能不是必須的。但是對于一個互聯網產品,我認為還是非常重要的。現在很多互聯網產品都提倡敏捷開發。在不斷快速迭代的過程中,如果詳細設計沒做好的話,隨著迭代版本的增加,代碼會變得面目全非。甚至推倒重來。
1、詳細設計決定著系統的質量。在軟件系統開發過程中,可能一直存在這個問題,修了一個bug可能引起一堆bug,這個可能都不陌生。詳細設計人員需要考慮設計的方方面面,比如職責如何分離,接口職責如何定義。可以有效減少這種情況出現的可能性。當然不能完全杜絕,^_^。
2、詳細設計決定著系統的可擴展性。系統的擴展性,一直是一個頭疼的問題。特別是在互聯網產品中,需求變化之快,以及用戶量增加又比較迅速。詳細設計人員需要考慮業務方面的擴展性,也需要考慮一些性能上的擴展性(當然性能的可擴展性,大部分屬于架構設計的范疇)
3、詳細設計決定著系統的可維護性。可維護性指的是改正、改進、改動軟件的難度,這個的控制大部分把握在詳細設計人員的手里。詳細設計做的好對于軟件的迭代非常有利的。
4、詳細設計決定著你需不需要加班。這個就不用說了。相信大家都明白。
我也是一位學習者
以上扯得夠多了,本系統主要總結一些詳細設計的方法,大家共同學習,首先我不是詳細設計的大牛,只是菜鳥,之所以寫本系列,主要是對于詳細設計的一些思考總結分享給大家,使自己也能夠技術上得到進步。對于本系列中的思考,非常感謝znyin,和他共事將近一年,學到了很多詳細設計方法以及思想,給了我很多寶貴的實踐機會,非常感謝,本系列也是我從他那學習的技術的總結。
本系列計劃包括如下內容:
1、如何做詳細設計之序
2、如何做詳細設計之設計即編碼
3、如何做詳細設計之規范
4、如何做詳細設計之設計原則
5、如何做詳細設計之理解業務本質
6、如何做詳細設計之重構
7、如何做詳細設計之設計模式
8、如何做詳細設計之總結
本系列文中觀點僅是個人觀點,歡迎討論。
本文同步http://yywang.info,每天同步一篇,將全部系列同步至博客園
轉載于:https://www.cnblogs.com/JerryWang1991/p/4204583.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: FineUI第七天---文件上传
- 下一篇: iBatis 的插入一个实体