軟件工程老師給我們留了閱讀作業,剛開始覺得老師留的作業閱讀量太大,而且時間太短,對此感到不是很理解,但是當我開始閱讀《移山之道》這本書的時候,感覺這本書真的寫的很通俗易懂,利用移山軟件公司人員開發經營石頭銷售的軟件的故事貫穿整本書,使我們很清楚的理解每個環節的順序和重要性,同時也給我們實例展示了怎么開發項目。通過這本書的閱讀,我意識到以下幾個問題,這都是以前我的誤區和不曾想到的事情。
1,軟件開發的工具和方法十分重要。想要做出高質量高水平的軟件並不是團隊中只要有高超的編程能力和熟練地技巧就能完成的。一個軟件開發團隊需要一系列的管理工具,協作工具,軟件構建工具,以及能保證軟件質量的測試工具。軟件開發的方法很多,每種方法都有着各自的使用原則,雖然說瀑布模型和螺旋模型已經過時的,但是依然有着各自的優勢,不能被忽略。
2,軟件開發過程不同角色的成員有着不同的作用。剛開始接觸的時候,總覺得會編程的就是牛人,個人技術好的就能夠獨當一面,通過這次閱讀,扭轉了我的這種想法。PM雖然聽起來好像級別高,其實和團隊中的每個人都是一樣的,只是工作不同;DEV看似是軟件工程的核心,沒有好的DEV就無法完成代碼編程,無法實現高超的功能,也就沒法完成軟件開發,但是DEV並不是萬能的,如果沒有PM的需求規划,項目管理,沒有好的測試人員尋找小強,就無法完善自己的程序,無法開發出滿足顧客需求的軟件;開始時覺得測試人員無關緊要,但是通過老師的講解,我懂得了軟件測試是必不可少的也是至關重要的環節,對於一個功能完整的軟件,遇到的典型用戶和情景非常之多,而且還有很多情況會違規操作,還有很多特殊的情況我們容易忽略,這些都需要好的測試人員來挖掘。每每個角色的成員都要各司其職,共同對項目負責。
3,軟件開發流程必需每步都做好。上學期學面向對象的時候,我們是這樣寫項目的,首先我們編寫代碼,如果中途覺得想要添加什么功能就繼續補充,寫完之后開始根據我們寫好的代碼編寫需求文檔等等,結果發現我們有很多功能我們想要補充但是很麻煩,而且和我們剛開始想的有很大的出處。現在懂得了我們的失誤之處。在考慮軟件開發的時候要考慮NABC,哪一個環節沒有想清楚都會給以后的工作帶來麻煩,並不能一味的要求寫代碼。需求文檔,設計文檔都必須考慮清楚,並用這些指導我們編程。
4,充分利用TFS,規划好每天的工作。開發軟件並不像我們參加競賽編寫一道程序題目一蹴而就,每天定期的規划好團隊中每個人要做什么是十分必要的。根據整體的規划來決定自己的進度,並且告知同伴自己的成果,以便他人使用。雖然說這樣有些麻煩,但是這是保證每個人按照進度步步前行的必要手段。
雖然說這次閱讀作業收獲很多,但是還是有很多的知識沒有太理解,有很多概念也不是很清楚,需要自己重新閱讀和查找。大致列出自己疑惑的問題:
1,VSTS功能好復雜,每天查看TFS也很麻煩,很多時候難以做到更新,有些人可能完成了也懶得修改,這樣勢必給團隊協作造成影響,如果遇到這種情況又該采取怎樣的辦法。
2,如果一個人同時參與了不同的項目,那么能用一台機器同時管理這兩個項目嗎?
3,在敏捷開發時,提及程序可修改性和迭代性,可是我們在做軟件開發的過程中,難道不應該時考慮清楚,規划清楚,不能出現提及到的汽車安裝失誤的事情嗎?
4,在軟件開發的過程中,我們應該面對大多數用戶的需求,那么還需要考慮添加特殊的功能嗎?這樣會不會增加軟件開發的時間和成本,但是也沒有特別顯著的效果?
5,我們可以利用VSTS學習所有的經驗,俗話說的好“紙上得來終覺淺”,我們可以借鑒閱讀別人的經驗教訓,可是能有多大的作用?我們都很清楚,在高中的時候經常聽到別人說這個地方容易出錯,可是還是得等到我們自己正在在這個地方出錯之后才能明白為什么才能記住。
6,MSF團隊模型中講究角色平等,重要的決定又大家共同提出,可是如果大家各執己見,協調需要花費時間,而且可能出現多數人的建議並不太理想。有一個好的leader是十分重要的,可以很好地把握軟件開發的方向,那么究竟是有一個領頭人還是MSF團隊模型好?
7,MSF過程模型和傳統的瀑布開發模型有什么區別,不都是規划好每個階段嗎?不都是完成一個階段就進入另一個階段嗎?
8,如果一個團隊的項目取得成功,那么怎么評論誰的功勞最大?對於MSF團隊是不是很難確定?而且糾紛不斷?
9,在團隊開始期間和在團隊進行到后期測試階段,那么DEV是不是就空閑下來,那么這么長的一段時間都沒有什么重要的事情要做?
10,如果在項目開始時進行代碼規范,那么如果有人不習慣這樣的修改怎么辦?如果不同的項目要求不同的規范,那么豈不是很麻煩?如果代碼規范大家都不自覺的不使用,那豈不是沒有任何價值?
11,代碼復審的效果會不會很低?個人覺得如果查看別人的代碼會比較無聊也很浪費時間,而且查看一般無法發現問題,而且兩人意見不一致容易出現分歧。
12,一次次的迭代過程會不會很浪費時間,能不能把主體功能一次實現,如果遇到問題再修改?
13,使用VSTS,對於我們軟件開發究竟在哪方面起到很大的作用,如果我們不使用這個,但是基本上都會按照軟件開發的流程開發,兩者有多大的差別?
給本書的建議:
1,最好再把具體的概念講解清楚些,建立各種概念之間的聯系
2,舉例詳細的分析不同開發流程和方法的區別,這樣可以使讀者閱讀更加清楚
3,文章中的故事很清晰地表達軟件開發過程中需要做的事情和遇到的問題,最好能最后總結整理一下
4,軟件開發工具介紹的多余其他方面,希望其他方面再完備些,寫的在具體詳細些。
5,本書的條理清晰,實例講解印象深刻,如果在每章講解故事的同時旁邊標注具體的知識點,會使讀者更容易學習