序
擔任系統設計師的職位一年了,盡管自己到現在為止仍然是個不合格的設計師,雖然這一年以來也不是完全從事設計的工作,但畢竟站在這個崗位上,主要從事的還是系統設計方面的工作,加上自己也有志于在這個方向發展,所以做一個年度總結是有必要的,也希望能對希望進入設計崗位的朋友們有些幫助,同時也希望得到在設計崗位上有經驗的同行們的指點。
這也是自己真正擔任系統設計師這個崗位的第一年,盡管在以前的工作中也曾經負責過設計部分,但現在回顧起來,覺得如果不在這個職位上,很多時候是無法了解到這個職位應該做的事的,自然也就無法去做了,在整個一年的工作中學到了很多的東西,同時也暴露了自己很多的不足,但總體而言自己是覺得已經踏入了系統設計的大門,但還需要不斷的提高。
學到的東西
概述
一年以來作為系統設計師主要參與了公司的一個C/S結構的產品的研發、工作流系統研發的規劃、一個辦公應用系統的項目以及現在手頭上的一個開發框架中。
詳細
在從事C/S結構的產品的研發上,此產品的系統架構主要為插件體系架構,不過在實際實現過程中做的不夠好,不過一直到現在插件體系架構仍然是我最為關注的,而且自己也在做這方面的事情,從設計角度的考慮上來說完成了遠程調用、增量緩存等的設計實現方案,同時也根據場景運用了合適的模式。在這個產品中遠程調用角度引入了同步、異步的機制,盡管后來異步一直沒搞定,不過畢竟去摸索了,呵呵,現在倒是有解決方案了;增量緩存方面則是為了提升客戶端與服務端的數據交互效率;模式方面運用的主要有命令模式、責任鏈模式、Template模式、Observer模式。這是自己第一次作為系統設計師負責整個產品的設計,現在回顧起來自己在那個階段做的是不夠的好,主要是在整體系統的設計上做的不夠的周全,系統全貌的體現仍然不夠,其實從一定程度上來講就是架構不夠完善,而且在架構的實現上做的也不到位。
在從事工作流系統研發的規劃上,自己主要是作為規劃人員對整個工作流系統的研發進行規劃,同時也作為系統設計師對整個工作流系統進行設計,工作流系統一直是工作以來的重點,相對來說在這方面的經驗比較的多,整個工作流系統研發的規劃做的比較順利,可惜后來由于公司的某些原因,無疾而終。
在辦公應用系統的項目上自己作為項目經理和系統架構師雙重角色,這里主要講系統設計方面的工作,在這個項目上根據自己以往的經驗完成了一個辦公類應用系統的架構設計,同時完成了一個完整的權限系統以及一個基本的CMS的設計工作上,收獲不小的項目。權限系統的設計也是在blog上曾經專門寫了一個系列,而在CMS中的話主要是完成了緩存、模板機制、CMS模型的設計工作。
目前手頭上則是一個開發框架的東西,這個東西則讓自己開始真正的做框架級的設計,和實際項目的那種感覺是不一樣的,難度大大增加,現在主要是做數據集的表現層組件、代碼、配置文件的自動生成、緩存策略、通用子系統部分的設計和實現工作。
小結
一年以來覺得自己在系統設計方面學到的最多的就是產品的規劃、設計、需求驅動的設計方式(需求到設計的映射)、領域模型的運用以及模式的適當運用。
最大的進步就在于逐漸的學會了從系統全局去分析系統,形成一個系統需求分析--->設計--->實現的步驟,對于系統的架構設計、概要設計以及詳細設計也能夠更加清楚的了解,設計的目的就是為了需求的實現,所以設計需要根據需求來產生。
架構設計中最重要的是根據對需求共性的分析形成系統的骨架,架構中考評的重點是對于系統實現的支撐
、擴展以及對非功能性需求的滿足,同時還需要考慮架構中具體引入的技術或者框架,這個更多的是需要根據team、項目的大小、時間緊急等因素來決定,這也是架構設計中最為困難的一步,目前在做架構設計時更多的是參考業界內已有的架構體系,只是有些時候需要考慮特殊業務需求的實現方法,最后根據職責單一、內聚和松耦合的重要原則形成系統模塊的劃分以及接口的定義。
概要設計最重要的在于根據模塊的劃分以及接口的定義形成模塊的設計和接口的實現設計,模塊的設計受架構的約束形成。
詳細設計則是具體的模塊的設計的實現以及對象接口的定義。
關于架構、概要、詳細設計將專門寫blog來闡述。
另外一點來說就是在一個公司而言通常來說面對的往往是同類型的項目占多,這個時候架構的重用是非常明顯的,在這種情況下為了保證公司的項目技術結構的統一以及技術人員的統一,通常會有框架的需求,這點以后也將專門寫blog來闡述。
最后一點就是這一年來真正在架構體系的接觸上來說應該就是插件架構體系,其他方面則主要是些系統方面的模型設計,如,自己在這個方面也是投入了巨大的關注,目前也在做這方面的東西,這個在我完成目前手上的東西后將專門來闡述插件架構體系以及其應用模式。
不足
在一年來各個項目的自己所做的設計來看,最大的不足在于自己缺乏一套系統的、理論的系統設計過程的指導,個人覺得即使這套理論不是很優秀也沒關系,這個可以根據自己的實踐經驗來調整,但需要的是一個系統的過程,這點我覺得是自己現在最大的不足。
在自己的不足上,主要列了以下幾點:
1、系統的、理論的系統設計過程的學習
需要有個清晰的系統設計過程的體現,并能足以明確的說明其形成的過程。
2、需求驅動以及領域驅動的深入實踐和改進
設計對于需求的滿足性以及符合性的體現。
領域模型驅動的體現以及建模的體現。
3、加強技術基本功
作為架構設計師,最重要的是設計合適的架構,特別是作為國內目前大部分的中小企業來說,面對的系統其實在業界內都是有成熟的架構體系的,關鍵是要根據team、時間等方面因素來做出選擇,這個時候就要求架構師對于各種技術的選擇、框架的選擇需要有個準確的判斷。
4、架構的合理性
這點和3中說的有重復,就是如何做出一個適合一定背景的架構?
5、模式的合理運用
對于模式的運用需要更加的純熟,包括分析模式、架構模式和設計模式。