看了Eric77的軟件開發的一些感想(五年工作經驗總結),很有感觸。這個世界真是好大,自己作為個體真是太渺小,還有太多的東西需要學習。
把他文章的部分轉接過來,順便自己也備注下,對自己有個參考。
一、需求分析,設計,開發,測試和項目管理整個流程:
對任何系統來說: 無非是做好3件事: IPO. 也就是Input,Process,Output. (偏重于設計,類似于計算機本身,作為總結本身還是蠻清楚的)
對需求分析來說: 你最重要的是搞明白,用戶的需求.也就是搞清用戶的輸入(Input)和輸出(Output)是什么,它的要求達到的功能(Process)是什么. 明白以后,你就可以寫一些用戶需求說明書,描述用例,輸入輸出處理異常什么的,或者做一個簡單的Demo系統,拿去給用戶看,看看這個界面是不是用戶喜歡的,這個流程是不是用戶所需要的等等.(注:如果加入點管理,就豐滿了。還有以后的需求變更,要知道需要可能是不斷變化的)
然后就是系統分析: 首先,你需要對用戶的需求分模塊,每個模塊的IPO是什么,他們應采用什么架構,需要和那些模塊交互,互相之間的接口是怎樣的,需要使用什么技術.每個模塊的運行環境是什么樣子的,對效率,安全或者容錯等特性是否要著重考慮.(注:考慮的蠻多的,加個詞:系統的可擴展性)
接著就是系統設計: 每個模塊的數據庫要怎么設計,所用技術和架構決定后,要確定不同層次有哪些接口,比如說表現層,業務邏輯層,數據庫訪問層,相互之間怎么調用,定好框架和開發模式和格式,剩下的就是編碼了..(注:說的似乎少了點)
編碼部分: 首先團隊要有一個良好的編碼規范.并且對每個人提交的代碼要review,我發現程序編多了,自己就成了一臺計算,看到程序就會知道會出現什么結果,根本都不用跑起來.(注:編碼的時候,多考慮下:復用和模式)
測試: 單元測試是否編寫測試用例? Junit是個好工具.每個人都要保證好自己的代碼沒有問題. 整體測試就要整個流程的跑一下,看看需求實現的對不對,還有沒有什么其他紕漏. .(注:測試分好多種,單元,壓力,持久性、黑白盒等,有專門的測試部分或組就不一樣了)
風險管理: 這一點很重要,要時刻知道自己的項目有什么風險,無論是人員的,技術的,時間的,還是協調上面的.都要心里有數,按時按周向領導匯報。
以下部分——
記得我去IBM面試的時候,問過,以后有幾條職業發展的方向,回答有三條,一條是IT Specialist,一條是Project Manager,還有一條是IT Architect. 我還曾要求以后能不能向IT Architect發展,那人說,Architect要熟悉很多技術呢,我問了兩遍,他這樣回答了兩遍.后來給我訂了Advisory I/T Specialist. 我當時很納悶,我搞Java這么久,J2ME,J2SE,J2EE全都搞過,而且對Gof的<Design Pattern>也悟了5年,了熟于心,各種各樣的經典書籍也看了不少,怎么不能向Architect發展呢. 現在我加入了IBM,進入一個香港的項目,過段時間要去香港培訓幾星期,才明白了,原來一個大項目會涉及到各種各樣的語言,技術,什么Cobal(音譯),forturn(音譯),java,vb,C#,soa xx總線模式,mq,大型機開發,等,很多我只在書上看到過的古老語言,還有一些聽都沒聽過的語言,框架,模式,全都出現了.我當時這個汗哪,我才發現我真的很無知.知識就是一個氣球,你知道的越多,接觸的越多就會發現自己越無知.所以這也是我要今天趕緊把這個寫出來的原因. 我怕以后又有了變故,還要沉淀,需要時間.
本文部分來自CSDN博客:http://blog.csdn.net/Eric77/archive/2010/08/01/5781573.aspx