計算機網絡NAS轉發中心大作業總結反思
收獲
代碼
知識積累的應用
完成了自己有史以來規模最大的Web Application項目
經過長時間的C++和Java訓練,終於可以自信的說自己已經掌握了面向對象設計的流程。在對php不了解的情況下能夠直接使用面向對象的設計方法。
用上了長時間的Web開發經驗積累,頁面構建十分嫻熟,DOM完全掌握,基本bootstrap框架樣式已經可以熟練使用。環境配置熟練掌握,開發路線明顯比其他人明確,完全掌握工具。
非常開心,從四年級開始一點一點學html到現在能掌握一整套web application的開發方法,靠的是十年如一日的積累。並且能做出一套不落窠臼的項目,收獲的東西不是對php的掌握,對呈現方法的掌握,而是對設計模式的掌握,拿到需求之後能夠把學過的方法用起來,面向對象的開發方法讓腳本也具有結構性。這一套設計思想的價值更大。一次一騎絕塵的證明足夠樹立很高的信心。
設計能力的進步
功能提煉有循序漸進的過程,代碼整體性比較強,模塊很清楚(層次整合卻失敗了,在後面講),對debug有很大的幫助。架構上是非常清晰的,如果沒有一開始特別明確的功能劃分,驗收當天不可能完成debug
項目
知識積累的應用
項目概念分析用上了以前學過的經驗模型。將學過的知識應用到了項目規劃中,對兩人配合完成的部分起到了架構明確的幫助。也發揮了自己統籌全局的強項。
大致理解了軟件工程中需求分析、概念設計、邏輯設計、物理設計步驟的功能是什麽。當項目體積變大的時候可以起到梳理功能的作用,因為越早規劃出架構讓它接近成品功能規模,我的開發過程就越穩。比做出難點更重要的是安排每個部分是做什麽的以及他們的關系。
工程素養
應用了自己平時積累的素養,平時積累一整套習慣,在開發中不會因為工具鏈的問題拖後腿,反而是為我加速的。
不足
代碼
我居然看到了自己寫的兩篇知識點一模一樣的博客???當時犯了錯誤找了好久查到了記下來了,結果現在忘了又去找了好久。
沒有對環境重視起來
runtime不是代碼的陪襯,runtime環境是和代碼同等重要的甚至決定著項目穩定性和功能的關鍵。而我寫代碼只考慮代碼不考慮運行時,這是致命操作,因為架構再好也是承載在運行環境上的,環境關系都沒搞好那寫得再好一點用都沒有,該崩潰還崩潰。所以運行環境也是1期需要考慮的問題。
項目
前期規劃不足
雖然是掌握並使用了軟件工程分析方法,但是趕工的性質太大,沒有真的考慮到如何去做這個項目的分析去滿足功能點。導致的結果就是我到開發後期還反反復復的改文件,挪來挪去,重名的功能提煉不出來。這都是1期和2期要解決的很重要的問題,根本性的問題。
作為web app部分的負責,我沒能整合好整個框架的關系,把轉發中心的web app本來是自己份內的東西扔給隊友了。因為我感覺自己可能主系統都寫不完,而寫不完的原因是我也不可避免的犯了很多基礎性錯誤,功能重復,大量重復性代碼,一邊寫後方的功能一邊去調整前面寫過的代碼。開發復雜度成了N方-N,直接拖了項目的後退。
沒有運行時測試
真機測試很重要,因為我前面架構沒做全面,架構是很清楚但是功能涵蓋和關系都沒做全,導致後面拖慢了時間,進而沒有時間做真機測試了。大量的測試都是我該自己完成的,卻直接拖到驗收當天,這在真實的項目中是絕對不可能再給我機會現場調的(如果是真的有含金量的項目,我也不可能現場調的出來)
單元測試沒做,運行時沒測,耦合測試沒做,整體測試沒做。時間!時間是要和開發代碼一起計算的東西,哪怕對項目有大致的估計也不能擠掉單元測試的時間。
反思
今後的開發中
- 1期分析,2期概念設計太重要了,一定要考慮全,考慮運行時,考慮單元測試,考慮耦合關系,沒有這些代碼寫得好項目也會崩的。
- 提煉設計,減少無用功。項目拖慢經常是我在重復代碼、無用功上花的時間太多了。沒效果,完全是浪費了。合理提煉非常重要,要充分用起來學過的知識。
- 發揮整體分析的優點。和其他人相比我的長出在於初期規劃的思路清晰,就在這個環節按照我的長出去加強,一個合理的規劃能夠處理掉後期大量的問題。
- 進一步紮實基本功,8年Linux使用按理說是我的強項,但是linux真正的功能性的部分我不是很熟練,反應不夠快,他是系統調用特性相關的東西必須要掌握。設計思想需要再去溫習,MVC控制方法的彈性應用是比較重要的。開發工具鏈要更加熟練,各個環節要靈活起來。不能再細枝末節上掉鏈子。
計算機網絡NAS轉發中心大作業總結反思