軟體工程實踐總結作業
xiaoknownothing發表於2017-12-27
一、請回望暑假的第一次作業,你對於軟體工程課程的想象
1)對比開篇部落格你對課程目標和期待,“希望通過實踐鍛鍊,增強計算機專業的能力和就業競爭力”,對比目前的所學所練所得,在哪些方面達到了你的期待和目標,哪些方面還存在哪些不足,為什麼?
- 接近一個學期的軟工實踐,所花費的時間的確比我預想的多得多,一次次作業的deadline,一天天的衝刺,雖然有一學期的課程,但是感覺時間飛快。現在回頭看看第一次作業的部落格,感覺程式碼能力有一點提高,更大的收穫是這次的課程+《構建之法》的閱讀讓我瞭解了整個軟體開發的具體流程和團隊協作是如何開展的,學著在有限時間內掌握新的工具和新的知識,團隊協作中不僅需要程式設計人員也需要PM、測試員,軟體開發中程式碼開發也不是唯一重要的部分,需求調查和原型設計在一定程度上決定後期返工率。瞭解平常使用的APP的開發過程大體是怎麼樣的。
- 不足之處在於:剛開始接觸github 只是簡單的push、fork沒有真正使用GitHub來進行程式碼管理。安卓的使用,因為成員各自有任務分配,以《第一行程式碼》為例,Andriod只學到了前幾章,說不上基本入門Andriod。文件編寫上面負責的比較少,主要是看別人編寫的文件獲取一些資料引數。有個不好的習慣,不喜歡或者說不習慣看文件,習慣直接問寫文件的同學。
2)總結這門課程的實踐總結和給你帶來的提升,包括以下內容:
1、統計一下,你在這門軟體工程實踐中,完成了多少行的程式碼;
2、軟工實踐的各次作業分別花了多少時間?(做一個列表)
作業 |
時間 |
第一次作業 |
3h |
第二次作業 數獨 |
26h |
結對1.原型設計 |
3.5h |
結對2.部門與學生匹配 |
24h |
團隊選題 |
3h |
團隊預則立&&他山之石 |
3h |
需求說明書 |
3h |
團隊系統設計 |
6h |
團隊UML |
1h |
團隊Alpha衝刺 |
60h |
同學錄 |
13h |
個人技術部落格 |
6h |
軟體產品案例分析(華為雲) |
5h |
團隊Beta衝刺 |
24h |
個人軟體工程實踐總結作業 |
5h |
|
3、哪一次作業讓你印象最深刻?為什麼?
- 團隊Alpha階段,一開始程式設計遇到了許多問題,當使用GitHub、AndriodStdio這樣的工具的時候出現問題束手無策,後來學著看報錯,谷歌搜尋解法,查資料找部落格解決問題,特別是在團隊裡面,有問題大家一起解決,在Alpha衝刺的時候,每天抱著電腦大家就在一起打程式碼的經歷真的不多。
4、累計花了多少個小時在軟工實踐上?平均每週花多少個小時?
- 累計190小時左右,α階段衝刺+β階段的時候比較多每週30小時左右,平常一週會有15小時左右,之間兩週因為考試每週10小時左右。
5、學習和使用的新軟體;
- AndroidStudio、Git、XMind、StarUML
6、學習和使用的新工具;
- Git,markdown、墨刀、visual studio2017
7、學習和掌握的新語言、新平臺;
- Java、入門GitHub、MOb平臺、部落格園、AndroidStudio
8、學習和掌握的新方法;
9、其他方面的提升。
二、寫下屬於自己的人月神話——個人或結對或團隊專案實踐中的經驗總結+例項/例證結合的分析
- 團隊專案中原型設計很重要,後期修改很費時間還會打擊組員信心。
- 程式設計過程中解debug能力要努力加強,要學會看報錯資訊,也要求自己英語好一點吧,再來查詢解決問題的辦法。更進一步就是學會思考。
- 有些問題給自己設定一個期限,比如使用git merge的時候出了問題先自己動手找原因,如果過了2、3個小時還沒有解決,要馬上問組員或者助教、老師了。這些問題也許精通的同學兩三分鐘就搞定了,請教的過程也是一個學習 的過程。
- 開發過程中會用到一些工具,工具的使用也很重要,要比較快的達到工具使用的入門等級,這時候一些教程會比較有用,感謝一些西瓜學長的博文,畢竟跟著操作,不懂原理也可以上手,但是要想更好的使用工具的話,學習一些原理也是必備的。一般的部落格裡面也是有展開的。
三、對下一屆實踐的建議,或者對於開學初的你,對於大一的你,對於開學初的我,你有什麼想建議和告知的呢?對於後來人的期許。 特別地,特別地,下一屆要不要中途換隊員?
- 對於下一屆的同學還是強烈推薦軟工實踐課,雖然已經是必修了,但是這門實踐課是到目前為止最接近實際開發的課程,開學初選了這門課的話可以先找一下團隊,這時候靠譜的組長就很重要了,找一個溝通能力好+有責任感+會分配任務的組長就很棒棒了。
- 開學初就可以準備一下前期知識儲備了,學語言、熟悉工具,尤其是工具的使用會花費比較多的時間,《構建之法》可以伴隨作業的安排一步步看下去,沒到那個部分的時候看書的話,其實我沒多大實感這一階段到底要做成什麼樣子,結合老師所講+書上內容就可以比較容易上手了。
- 大一的話,學語言,儘可能的嘗試,找到擅長或者喜歡的方向都是不錯的,而且儘快學習一些相關內容的話,後期你的技術才有更大可能實現你的想法,完成任務的時候也會更從容一點。
- 如果已經開始著手開發的話,需求分析和原型設計很重要,後期返工會爆炸。還有就是這門課花費的時間真的很多,要協調好其他科目的時間。
- 對於換隊員,我們組換走了大神,換來了大神,新組員適應能力max,程式碼功力也很強,所以就這個結果而言,換隊員還不錯。這次時間趕加上考試時間一擠壓,如果是自己被換走,真的壓力很大,心態會崩,可能對這個事件太害怕了導致有點抵抗。
但是下一屆的話,還是換隊員,對於換隊員之後的緩衝期可以長一點。
四、分析一下自己所處的團隊。軟體工程實踐是大學裡少有的認真的團隊協作經驗。《構建之法》上說團隊的發展有幾個階段,你的團隊都經歷過麼,最後到達了“創造”階段了麼?(參考《構建執法》第17章 人、績效和職業道德);
- 一開始我們團隊屬於萌芽階段,大家交流的不是很多,止於分配任務各自完成,主要是組長在劃分任務,我們執行。在選題、系統設計、UML設計一次次的團隊作業中,每次開會大家都會交流各自的想法,有什麼問題提出解決。
- 之後在α階段的時候屬於磨合階段,大家開會集體程式設計的時候會對於各自負責模組中出現的問題討論,尤其是好幾個模組間有交集的時候,會比較慎重,由技術較好的同學查詢一些方法或者例子,覺得可以實現,再往下做。
- 接下來規範階段的話實際感覺比較短,前期靠詢問,後期靠文件。
- 創造階段的話,Beta階段,整個團隊協力完成一個APP,互幫互助,勁頭還很足。但是角色和職能能夠根據專案的要求自然轉換這一點還是有點困難,勉強達到吧;對於我們最終的產品,可能達不到這個級別。
五、怎樣證明你學會了軟體工程?
1)研發出符合使用者需求的軟體
- 專案初始進行了需求分析,α階段完成後也發給一些真實使用者做試用,根據反饋進行改進。目前我們組員都在使用。
2)通過一系列工具,流程,團隊合作,能夠在預計的時間內釋出 “足夠好” 的軟體
- 專案規劃、需求、設計、實現、釋出、維護,和定時的進度釋出都在作業部落格中有體現,我們團隊也有每天通過git提交程式碼,每日進度和計劃也會進行彙報和總結。
3)並且通過資料展現軟體是可以維護和繼續發展的。
- GitHub上面有我們專案的原始碼和程式碼規範、需求說明等一些文件,可以進行維護和後續發展。
七、個性發揮,包括圖文、照片和創意等
軟工實踐即將結束,感謝一起努力的隊友還有老師、助教們的付出。