昨天看了一篇關於 做項目 方面的文章,也想談談自己做項目的經驗。本人雖然從事IT行業多年,但是主要從事的工作都是技術研發方面的,比較出名的就是ALinq 了,ALinq Dynamic 是最近做的一個,感興趣的朋友可以看看。 我做的項目不是很多,這方面的經驗比較有限,因此,本文的一個目的是希望能夠拋磚引玉的作用。
熟悉業務
開發項目的第一步,就是要熟悉業務了,這個是必須的,只有熟悉業務,才能夠了解到客戶的需求,從客戶的角度去思才問題。否則,開發出來的項目,和客戶想要的完全是兩碼事。具體來說,就是溝通。而和客戶溝通,我覺得一個比較有效的手段就是流程圖,界面的草圖。我現在用的是本子記錄,雖然記錄方便,但是修改很不方便,很想知道,PAD上有沒有這樣的一個好用的工具,當然,一定要好用。在這個階段,還有一個要做的,就是抽象出各個實體,並且理順它們的關系(一對一,一對多,多對多)。最后,整理好流程圖,流程圖每一個步驟所對的界面圖,實體關系圖。先在自己的頭腦里走一遍,然后交由客戶確認。要確認的是,步驟有沒有漏,界面上的字段少了沒有。實體關系圖就不必給客戶了,這個不關客戶的事情,也沒有哪個客戶看得懂。
方案制定
在熟悉完業務后,就開始制定方案了。
1、分層,還是不成層?現在一稍微有點規模的應用,都是采用多層架構了。但是,如果是微型團隊,那么兩三個人,追求的是短平快,並且項目規模很小,就不要分層了。 多層架構的優點在於:
- 有比較好的擴展性。因為界面層與業務層分開了,可以很便於界面層的替換,雖然一般情況下都不會換。
- 比較有利於分工合作。
2、界面層的選擇。是采用Win界面,還是WEB界面。現在有一個傾向,就是采用JS框架來寫界面層,理論上,封裝的好的JS框架,在操作的便利上,開發速度上,是可以很逼近采用 Win 界面層的。但是,只能是逼近,在調試上還是很坑爹的。而且使用JS框架,對開發成員的素質要求比高。如果說,僅從開發成本上和操作的便利性來考慮,還是采用 Win 作為界面層比較適合。有朋友跟我說,用Win 不如用 WPF,它是 Win 的升級版。至於 ASP.NET 或者說 MVC 這些,個人覺得比較適合做網站,而不適合用來開發企業級的開發,因為要有很好的客戶體驗,必然要有大量的JavaScript,一旦夾雜了大量的JavaScript,倒不如直接用 JavaScript 框架了,這樣反而更容易維護。
3、架構的設計,在完成了上面的工作,就需要制定軟件的架構了。具體來說,就是說都要有哪些類,這些類的職責是什么,並且它們之間相互依賴的關系。一定要明確這些類的職責,並且要強調。不然團隊的成員,需要加個方法,往往會不知道寫在哪個類里,當然,要盡可能避免這種事情,雖然是難免。
4、就需要制定接口、方法了。必須想好,每個界面,都涉及到哪些類,以及方法的調用,同時在界面上標注出來。
開發討論
1、方案的討論。在項目開發的開始之前,必須要對方案進行討論,討論的目的在於,讓隊員理解需求,知道這個項目要做些什么,架構為什么要這么設計,檢驗方案是否合理以及有沒有遺漏的地方。
2、開發的討論。在這個階段,要討論的內容包括:界面需要調用到哪些類,哪些方法,界面的制作涉及到到哪些技術,或者第三方框架。
3、項目的分工。關於項目的分工,主要有兩種,橫向和豎向。模向指的是,按界面層、業務層來分工,還是按功能點來分工。如果業務的功能是比較分散的,並且沒有太多的相互依賴,可以豎向分工。如果業務的依賴關系,邏輯性很強的,則橫向分工。
當然,在這個階段,還要把數據庫表的設計給做好。關於數據庫的選擇,為什么沒有單獨寫出來呢?其實也就那幾種類數據,高負荷,不差錢的用Oracle,想省錢的用 MySQL,沒幾個用戶,低負荷的用 Access 或者 SQLite 也行。至於 ORM,強烈推薦使用 ALinq ^_^ 。
進度設定
1、排好進度。當整個項目都細化了,項目需要的時間,進度也就容易確認了。同時,如果項目落后了,也容易發現問題,最起碼,可以追蹤到個人。
2、設好里程碑。一旦到了里程碑,里程碑所設定的功能都必須完成。然后,拿去和客戶討論,發現問題,及早解決。千萬不要等做完了再給客戶看,切記!
優點與缺點
下面來談談這種開發模式的優點與缺點
優點:
1、穩打穩扎,步步推進。
2、對於Leader,能夠掌控全局。
3、對於問題能夠及時發現。
缺點:
1、溝通交流的時間要多
2、項目的分析設計時間較長,開發人員閑着,老板心里不好受 ^_^ 。
3、Leader會比較累,因為整個項目的細節都要想好。
以下就是我做項目的一些經驗之談,如果對大家用,還請點一下推薦,謝謝。