軟工實踐總結作業
忽然間,說結束就結束了。
明明是一直以來覺得頭疼無比、時間占用巨大的這門課程,在結束的時候,卻沒有想象中的輕松,反而有一絲失落。
1.課程總結:
翻開剛剛開課時寫下的目標,字里行間讀出的,半是憧憬,半是迷茫。計劃中要做的,有一些沒有完成:
原打算學習java,最后卻學習了一些php和mysql;
想要學會更好的管理時間,熬夜的次數好像卻更加頻繁;
原以為可以初步成長為一個合格的pm,但是回頭看看自己做的好像也不怎么樣..
.當然,也有不少的收獲:
學會了一些軟件的使用,例如原型開發軟件Axure,類圖樣例圖繪制軟件star uml,還有js單元測試工具(雖然僅僅使用了一次),最重要的當然是版本管理工具git的使用,當然網頁登不上一直是一個很頭疼的問題,以至于一開始一直使用qq群進行文件管理,這個后面還會再說到;
學習了一些php,主要是mysql和web開發方面;
還學會了關于服務器的部署等...
技能方面的收獲主要是這些,還有一些更重要的心態方面的改變:
首先,是要勇于學習新鮮的東西,很多時候,碰到問題總會想從已經掌握的能力去解決,因為這樣比較省力,但是實際上,這樣經常會導致很多能力沒有得到應有的鍛煉,而只是把時間浪費在重復勞動之上,不利于自己的能力提高;
其次,碰到問題要盡快解決,拖延會使解決問題的成本不斷上升,尤其是在團隊開發的時候,問題可能導致的后果會更嚴重;
最后,其實助教一直有提到一句話:無論如何,一定要堅持到底。在整個課程的過程中,會碰到很多各方面的困難,就算無法完成的很漂亮,至少要做到有始有終,任務完成的那一刻,無與倫比的成就感會告訴你一切都是值得的~
2.項目歷程:
項目開發占據了實踐課程的絕大部分,從最開始的結對編程,到后來的團隊開發,不得不說,都是一段艱難而難忘的回憶。
項目的開發過程收獲了不少寶貴的經驗,摘錄其中一些印象比較深的例子:
- 教師報課時,如何處理報課記錄和對應備注
(為了方便說明,以下加引號的表示字段,如”備注“表示表頭的備注字段,”報課情況“表示表頭的 選擇該門課 字段)
在處理報課頁面時,對于判斷是否報課,我們采用的是不定長的數組來命名”報課情況“的name的方式,如圖所![]()
這樣處理的好處是,只要在后臺獲取class_select數組的值,就可以從數組的長度判斷選中課程數量,不必采用遍歷的方式來確定哪些課是被選中的,提高了處理效率;但是同時引入了一個新的問題 -- 如何處理對應的備注呢?
假設我們也采用和處理報課情況一樣的方式來處理,那么可以獲取到正確的”備注“數量,但是由于”備注“不是必填項,所以當出現 選了某一門課但是不寫對應備注 的情況時(如上圖),該方法將導致獲取的報課記錄和備注無法一一對應,那么所有的報課數據都要作廢;
如果我們采用逐行遍歷來檢查的方式,效率太低,一旦數據量擴大,處理速度將會非常慢;經過小組討論,我們改變了思考的路線:”備注”的填寫獲取要依附于“報課情況“的填寫,即”某一行的"報課記錄"被選中時,獲取相應的備注內容“,最終我們確定了以下方案:
step1.使用課程的id值作為”報課情況“的value值,由于報課情況只是一個多選框,它的value值并沒有實際上的用途,所以我們把這個屬性利用起來,作為”備注“的name值;
step2.在后臺利用數組獲取所有的”報課情況“時,遍歷數組,對于每一個值,(其實就是對應的”備注“的name),獲取對應的value(這個就是對應報課情況的備注),這樣就可以準確無誤的把"報課情況"和"備注"一一對應,并且沒有降低到原來的效率。
簡單的來說,就是在”報課情況”數組中存放對應備注的name;根據name再找對應的value;
- 賬號密碼字符串的空格處理問題
這也算是我們時間過程中碰到比較經典的問題之一,由于采用的是客戶提供的賬號密碼信息表,采用wps表格保存,在導入數據庫后臺的時候我們發現 導入的賬號密碼前面都多了一個空格;
查了一下php的空格去除函數是trim(),但是使用之后卻發現并沒有效果;經過查找,又采用了正則表達式的方式mb_ereg_replace('^( | )+', '', $str);來解決問題, 后來經過學長的指導:
可能因為wps的編碼是GBK編碼,我們看到不是半角空格而是全角空格,所以要按照以下步驟:
(1).將GBK字符串轉成 UTF-8,
(2).將全角空格轉成UTF-8
(3).將替換后的字符串改成GBK
(4).去除頭尾空格
(5).返回字符串
這樣才能完整的處理字符串問題;
- 教師報課時,如何處理報課記錄和對應備注
還有一些錯誤是因為php語法基礎不好而導致的,例如字符串匹配的時候使用了“==”而不是“===”,直接后果就是像“00012”這樣的賬號只需要輸入“12”即可匹配,原因在于“==”只是值匹配,“===”是完全匹配,值和類型都要相等;還有在php mysql連接的時候,混用了mysql和mysqli兩種連接方式和對應的函數;還有在alpha版本的時候沒有對sql的結果進行為空判斷,導致當查找的結果不存在的情況下會報錯。
再說說從團隊合作里面收獲的一些經驗:
1.站立時會議的時間宜設置在15分鐘之內;首先,采取站立式會議的好處就是可以讓開會的人能夠更集中注意力,但是如果時間過長,成員會很疲憊,而每日任務的分配和總結本來就應該在15分鐘內完成;為了更好的實現這種方式,可以采用一些措施輔助:組長提早擬定好今日會議的時間以及主要內容,讓成員做好準備,以免把開會時間花在想內容上;在每日會議結束后及時總結當天的會議情況,有問題的及時改進;
2.如果要進行項目沖刺,最好安排在連續的時間里。比如說任務要求沖刺7天,給的總時間是14天,那么最好安排連續3/4天的沖刺,而不是完全割裂成1~2天的多次沖刺,分割的次數越多,就要花越多的時間在回想之前的項目進度;
3.在任務過程中如果碰到組員有任務無法完成,組長可以想辦法調配人員協助完成,但是絕對不能拖延進度,一旦有了不好的開頭,就很難達到預期的結果;
4.每日的會議記錄要寫的簡潔清晰,任務落實到具體的成員;
5.最后談一下關于github的使用。github是一個版本管理的工具,由于早期的認識和經驗不足,只把它認為是一個像網盤、qq群一樣的存儲類工具,再加上訪問github網頁經常上不去,所以沒有體會到它的優勢,在beta版本中,由于助教老師的嚴格要求,不得不惡補了一下git的使用,現在已經習慣了使用git進行項目的迭代管理。相比于qq群文件,github最大的優勢就在于版本的管理,我們在寫項目過程中,肯定會有不斷的更新和迭代,如果對于每天的修改都進行打包、封裝、保存,一來工作量很大,二來無法直觀看出各個文件之間的差異,而github不僅保留了從項目上傳到結束的每個版本,而且可以看到每次修改和更新的內容備注,有了分支管理的功能,在團隊開發的時候會更加方便,至于網頁經常上不去的問題,我后來是采用軟件FQ的方法來解決,還有一個從同學那里得來的方法,如果銳捷上不去,可以連手機熱點上去;git剛剛使用起來確實會有很多按難題,但是等到熟練以后就會感受其中的好處,就像游戲中的后期英雄,前期越累,后期越能拯救世界。
3.寫給后來的學弟學妹
1.棟哥的軟件工程相較于其他老師確實更累,而且會要求用博客記錄每次任務的情況,安排在大三上這個課程緊密的不像話、并且全是專業課的學期里面,熬夜基本是躲不了的,但是收獲也是肯定會有的。在選老師之前請慎重考慮自己的出發點,如果感覺自己掌控能力不強但是想好好學一些東西,那就選棟哥的課,如果選了,請無論如何堅持到底!
2.軟件工程課不會教編程!
軟件工程課不會教編程!
軟件工程課不會教編程!
重要的事情說三遍,在這門課上,老師會介紹各種軟件開發過程中的工具使用,但是也基本僅限于介紹,還是要靠自己去摸索,所以如果沒有語言或者技術基礎的同學,建議你們在組隊的時候要認真一些,最好其中有一個人有一定的基礎或者學習熱情很足,這樣到后面的項目開發的時候不至于太累,但是還是建議你們在這門課開始之前有一些相關的儲備。
3.剛開始一定要用git而不要用github for windows,git是命令行操作,github for windows是圖形化界面,對于初學者來說,自然更傾向難度低的后者(我之前也是這樣),但是使用git的過程會通過每一條命令加深對github的理解,前面提到了github對于初學者可能會有困難,而git就是不斷熟悉這個過程的最好工具,github for windows對于在理解git方面沒有多少幫助;其次,github for windows只適合簡單的操作如commit、sync(其實就是push),如果碰到合并沖突、版本回退等問題的話,還是要用命令行來解決。git的教程有很多這里就不提供鏈接了,另:我的博客中有一篇關于git使用里常見問題的解決經驗,希望也能對你們有幫助!
4.還有一些團隊項目經驗請參考前文內容
5.大三上的課程會很緊而且難度相對之前大很多(都是專業課,沒有體育毛概馬哲行測這一類);所以時間安排和目標取舍很重要,加油!
4.對未來的期許
1.雖然課程結束了,但是實踐的項目并乜有達到自己的目標,還會繼續修改下去;
2.希望自己在接下來的日子里,會以更加積極的心態學習新的知識;
3.在編碼能力加強的同時,對于軟件開發過程的各種思想理解會更深刻;
5.最后的總結
其實有些遺憾,本學期的軟工實踐課程沒有很認真的去學習,特別是前幾節關于各種工具的介紹和使用的時候,由于個人時間安排不合理,基本是應付過去的。
不管怎么說,萬幸還是堅持走到了最后。

剛剛開始組隊的時候還是穿著秋天的短袖;

到最后結束時已經穿上厚厚的冬裝。
從10月到12月,從金秋到寒冬,兩個月的共同奮斗也培養了幾個人之間的友情,話不多但認真細心的俊達,偶爾會遲到、善于攻堅、幽默搞笑的毓順、認真學習又經常犯二的昆明,還有掛著組長之名卻經常沒有耐心、做事急躁的自己...幾個性格各異的人,為了一個共同的目標一起開會討論、一起熬夜加班、一起交流學習,這段難忘的回憶,將刻在寶貴的大學生涯里。We are the code.R!
開學的時候棟哥說過一句話“靡不有初,鮮克有終”。能夠堅持到底的同學都是好樣的。一路走來,感謝棟哥每一次課程的認真規劃,感謝助教老師的每一份博客的細致審核,以及提出的寶貴意見,感謝實踐過程中同學的提醒和幫助,感謝一路走來、一直勤勤懇懇、完全配合、不鬧情緒的隊友。特別感謝一直提供技術幫助和解答的又帥又會寫代碼的偉鵬學長。
軟工實踐之路就到這里,但是成為一名合格的程序員之路還有很長。
靡不有初, 鮮克有終。


浙公網安備 33010602011771號