本文章主要對此次軟工三課程項目("THU琴房預(yù)約")進行總結(jié)。
文章分為以下部分:
- 個人分工
- 編程總結(jié)
- 團隊合作
- 對軟件工程的思考
- 個人總結(jié)
- 課程建議
- 博客地址匯總
1. 個人分工
在此次項目中,我主要負責以下模塊:
- 后端:數(shù)據(jù)庫接口
- web管理端前端:琴房管理坛猪、公告管理曙寡、長期預(yù)約勤讽、檢票等
- 測試:壓力測試意狠、數(shù)據(jù)庫接口測試
- 部署:docker部署
2. 編程總結(jié)
編程經(jīng)驗
這次課程大作業(yè)中,對于工程的理解更加深刻言询。主要分為以下方面:
- 軟件系統(tǒng)架構(gòu)設(shè)計很重要:我們小組之前都沒有接觸過小程序的開發(fā),所以一開始做系統(tǒng)調(diào)研的時候下了不少功夫傲宜。同樣运杭,因為是第一次,我們也沒有被“歷史包袱”所累蛋哭。比如县习,最開始我們在選擇web框架的時候,沒有選擇大家熟悉的django谆趾,而是使用koa躁愿。事實證明,koa豐富的中間件以及node的高性能為開發(fā)和項目性能提升帶來了很多好處沪蓬。
- 想清楚再動手:舉個例子彤钟,比如數(shù)據(jù)庫的設(shè)計。在項目初期跷叉,我負責數(shù)據(jù)庫接口逸雹,后來發(fā)現(xiàn)設(shè)計的數(shù)據(jù)表有些跟不上需求的擴增营搅。于是在開始開發(fā)幾天后,小組成員集中開會梆砸,討論三個小時之后转质,設(shè)定出了最終的數(shù)據(jù)庫設(shè)計方案。實際上這個方案一直被我們用到最后帖世,并且對于需求擴容的適應(yīng)性非常好休蟹。
寫代碼
代碼管理真的很重要,尤其是這次代碼量已經(jīng)超過了小組任何一個成員的可控范圍日矫。對于這次寫代碼的經(jīng)驗有以下感受:
一定要使用代碼管理工具(比如git):在本學(xué)期同期的另外一門課上赂弓,我們?nèi)齻€人組隊,本來是個非常簡單的小項目哪轿,我們卻因為多個同時改一個文件盈魁,手動merge浪費了很多時間,本來想省時卻走了彎路窃诉。
代碼審查是個好方法:在軟工課上杨耙,練習(xí)過一次代碼走查,這次我們小組也進行了代碼審查飘痛,發(fā)現(xiàn)了幾個寫的不規(guī)范的地方按脚,比如js使用“==”。而且這也是一次非常好的學(xué)習(xí)優(yōu)秀代碼的機會敦冬。
測試先行:我們是到了項目中期才開始著手寫測試的辅搬,寫測試之后才深刻感受到測試省去了很多麻煩,比如每次新增功能之后脖旱,不用繁瑣的將之前的功能重新測試一遍堪遂。
3. 團隊合作
非常感謝給力的隊友和團隊。這次團隊項目讓我對于軟工團隊有了這些認識:
- 系統(tǒng)架構(gòu)一起想:群策群力才能想出好的設(shè)計方案萌庆。
- 分工明確溶褪,兼顧所長:非常感謝團隊中的女生,挽救了三個工科男的審美践险。
- 集中開發(fā)猿妈,結(jié)對編程:我們每周會有2-3次的集中開發(fā),晚上六點開始平均持續(xù)大概8小時巍虫。因為我們對于人員分工是按照前后端分工彭则,而不是按照功能劃分,所以在處理前后端接口的時候占遥,需要大家相互配合俯抖。
4. 對軟件工程的思考
規(guī)范操作才有好項目
- 工程開發(fā)的流程不可省略:需求分析、原型設(shè)計瓦胎、迭代開發(fā)芬萍、測試尤揣、優(yōu)化。這些步驟是絕對不能省略的柬祠。而且規(guī)范的按照開發(fā)流程來做北戏,對于項目的進展非常有幫助。
- 代碼管理規(guī)范:“先開分支再push”漫蛔,“及時commit”最欠。舉個例子,由此自己寫了管理端前端的幾個路由(大概1.5k行)惩猫,手殘reset代碼,結(jié)果導(dǎo)致全部被覆蓋蚜点。不過還好轧房,之前把代碼加到了暫存區(qū),救了回來绍绘。
- 接口規(guī)范性:在數(shù)據(jù)庫測試的過程中深刻體會到了這一點奶镶,因為接口文檔沒有及時更新,導(dǎo)致測試用例沒過陪拘,耽誤了一些時間厂镇,直到溝通之后才發(fā)現(xiàn)。
明確需求才有好項目
這個項目確實超過了我的掌控范圍左刽,需求點非常零散并且繁雜捺信。直到開發(fā)過程開始,才體會到需求分析的必要和重要性欠痴。需求分析相當于是個任務(wù)清單迄靠,是我們沒有遺漏功能;同時喇辽,需求分析也可以做估算掌挚,估計每個模塊的工作量。最開始明確需求還可以避免多次重構(gòu)菩咨,隨著需求的擴展吠式,開始的解決方法會變得不適用,這時候就需要重構(gòu)抽米。如果最開始就分析清楚特占,或者預(yù)留解決方案就會好很多,比如數(shù)據(jù)庫設(shè)計冗余字段等云茸。
5. 個人總結(jié)
- 再次感謝給力隊友摩钙。
- 踩坑的方式對于理解一項技術(shù)很重要。
- 以工程視角去思考設(shè)計項目查辩,開始設(shè)計時就考慮到性能和代碼實現(xiàn)胖笛。
- 有幸成為全棧工程師网持。
6. 課程建議
- 可以要求學(xué)長介紹一些代碼經(jīng)驗:比如設(shè)計冗余字段等
- 在介紹往期項目的時候,介紹一些數(shù)據(jù)庫的設(shè)計的思路长踊,給同學(xué)啟發(fā)
- 測試課程提前講