軟件工程課程學習總結
-
- 經過了一個學期對於軟件工程的學習,我們經歷了個人編程、結對編程再到團隊編程這個過程,我覺得“規范化團隊合作”是整個課程給我印象
- 最為深刻的關鍵詞。在開始這門課程之前,我以為團隊合作就是分工明確之后,各自完成任務,在自己的工作空間內完成代碼的編寫與調試,當各
- 個模塊的任務准確完成后,大家把工作合成一起就是整個團隊合作的過程,在學習完這門課程之后,我發現先之前想法是極度片面的,那並不是真
- 正意義上的團隊合作,那僅僅是工作量的平均分單。然而通過了一個學期關於軟件工程的學習,我發現工程的團隊合作並不是隨意的工作量疊加,
- 而是有科學性的方法和理論可循的。
- 從課程初期開始,教授就在向我們強調設計的重要性,在作業中,我也切身的體會到了設計的意義。從最開始的個人項目,只是簡單的算法設
- 計,到后期團隊項目的整體設計,雖然總是告訴自己設計很重要,其對整個工程的影響程度遠大於其之后的代碼實現部分,但是在代碼實現的時候
- 總是后悔自己當初為什么不能設計的更周密一些,感覺在之后真正代碼實現的過程就是在一個個的填補自己之前設計不周到給自己埋下的坑。所幸
- 自己在學習過程中感覺有所自覺,設計階段所用的時間占整體工程所用的時間的比例逐漸增長,因為我發現,磨刀不誤砍柴工,設計階段想到的每
- 一個可能出現、可以規避的問題,最終都會十分現實的體現在代碼完成的順利程度上,想到的問題少,容易出現的突發錯誤就會很多,導致實現過
- 程本應該是按照草圖搭建框架再到逐步填充細化的過程,不自覺的就變成了發現問題,緊急打一個補丁,在發現新問題,緊急打一個新補丁這樣的
- 惡性循環了,最終往往容易和之前自己預計的設計相差甚遠,改着改着就連原來的樣子都完全沒有了,完全失去了設計的意義。而如果能將設計想
- 得盡可能完善一些,就想給未來的自己寫了一份預知未來的說明書,代碼完成階段只要根據指導一步一步的完成,就會很有步驟感,而且能夠更准
- 確的預測各個部分完成所需的大致時間,這樣的話對於工程進度的把握更加清晰,計划感更加明確。當然在設計階段必定不能預知所有可能遇到的
- 問題,這是在所難免的,當遇到沒有考慮到的問題時,只要不是絕對致命的,總能想一些辦法解決的。
- 整體的進度管理是一項十分有意義但極具難度的事情。在開始團隊項目前,我以為進度管理只要把每個人的任務都划分清楚了,然后到了dead
- line去找每個人要工作成果就ok了。其實不然,進度管理需要在一開始就遇見整個工程中幾乎所有的工作量,然后根據每個隊員的能力、工作時間
- 、工作間的前置后置條件等等因素,將所有工作量有序的分配下去,預計各個模塊所需的時間,還要為突發情況打出額外的時間富余。在我們的團
- 隊項目中,就會出現明明計划好的工作,突然發現由於各種原因導致的突發沖突,而要解決這些問題,可能需要額外的、不確定長的時間,可能是
- 一個小問題,只要自己搜搜資料,私下解決一下就好,也可能是影響整體的一個問題,突然就需要做出很大的修改,而這對於整個項目的進度上的
- 影響就很難估計了,這時候,如果之前打出了充裕的應急時間,可能解決問題的可能性就更大,對整個項目的影響程度就能盡可能縮小。項目經理
- 是一件十分艱巨的工作,不僅需要充足的耐心還需要極強的責任感,感謝我們團隊項目經理為整個項目的付出。
- 說明文檔與注釋。說明文檔和注釋之前一直不是特別注意,覺得反正代碼是自己寫的,過一段時間終歸是能想起來的吧,忘了的話好好想想也是能
- 想起來個大概,說明文檔也是在上學期面向對象課上,老師的要求下為了完成作業寫過幾次,平時很少想到要寫說明文檔這件事。在本學期的團隊
- 項目中,我切身的感受到了說明文檔和注釋的重要性,一開始拿到的項目沒有說明文檔,整個團隊在了解上一屆工作上就出現了很多困難, 首先是
- 需要自己去探索整個工程的整體結構,除了一點一點看代碼就只能猜,可是在看代碼的時候也遇到了相似的問題,不明白每一段代碼的功能和作用
- ,所以就只能通過調試功能一行一行的看程序運行到哪一步,有了什么效果,再根據變量名大概猜測每一個變量的意義,這個過程是十分痛苦的,
- 所以我們決定為了能讓之后的我們和下一屆學生能夠更好的了解我們的工作,我們將每個模塊用到的函數都寫了說明規格和輔助信息,希望能在之
- 后的理解上提供盡量多的幫助。
- git和博客。這兩個之前真的是很少用,通過學習這門課,感覺稍微開始接觸這兩個東西了,首先是git,之前幾乎所有老師都說過,git是個好東
- 西,他能幫你版本控制,當你手殘了以后就靠它來救你,以后你們終歸要用它的。相似的誇了很多,但是平時很少想到要用他,大作業的團隊合作
- 也是兩個人寫好了各自的代碼,找個時間抽空合一下,然后刪刪改改,把代碼合在一起,就成了整個項目。但是這次在團隊合作中發現,沒有git真
- 的很不方便,組員不可能每個人每天都抽出時間聚在一起,把今天完成的工作量合在一起,而且經常會有不小心改錯個東西,滿篇找到底自己哪里
- 手殘了這種情況,使用了git之后除了可以解決上面說的那些問題,還可以很清楚的看到整體工作是那些,自己完成了那些,還有哪些未完成,這樣
- 就很清楚的規划自己之后的工作安排,每完成一項,就去關閉一個issue,看着項目一點一點完成還是挺有成就感的。其次是博客,之前真的是沒有
- 寫博客的習慣,因為平時在網上搜到的看到的幾乎都是大佬們的文章,看起來高端大氣,自己每天研究個啥那點小破事就往上寫感覺不是特別好意
- 思,而且基於之前的學習,感覺只要我把代碼完成了,報告隨便寫一點就可以了,所以在文字報告上感覺自己特別薄弱。這學期上完課發現,其實
- 每個人的博客就是記錄每個人努力的過程,可能一開始寫出來的東西確實沒什么技術含量,而且讀起來也挺枯燥的,但是可以慢慢來嘛,每次寫一
- 點自己的心得體會,一點一點學習其他人寫的很好的博客,從中學習博客排版、文字敘述、語言風格的技巧,我覺得只要慢慢努力終究是能寫出來
- 好看一些的博客的。我的博客現在寫的還存在很多問題,排版特別難看,這點我是有自覺的,還在學習中,其次是表現的不夠豐富,有時候想說的
- 話不知道怎么表達出來,文字和代碼的穿插關系把握的還不夠清楚,我繼續努力。
- 總之,通過一學期的軟件工程課程,感覺自己學到的東西遠比想象中的要多,原本以為只是大家一起碼代碼的課,后來發現學到的東西遠比編程
- 要實用得多,我將繼續把學到的知識用在之后的學習工作中。