1. 1. 敏捷開發在今天的軟體行業逐漸流行,那麼它脫穎而出的原因是什麼呢?
敏捷開發在最近流行,原因在於他的快速迭代性。如今的很多應用軟體都以網路為基礎,具有高度的動態性,這就要求開發人員更強調與使用者緊密的交流,在使用者反饋的基礎上迅速改進,快速迭代。具體來說,敏捷開發有以下幾個不同於傳統開發模式的性質:第一,敏捷開發更強調與使用者的交流,設計的宗旨是以使用者的想法為中心;第二,將防止品質缺陷定為團隊品質控制的首要任務,盡量減少開發階段的可能系統缺陷,從而使由開發到測試的周期變短;第三,保證項目品質隨時可用,儘可能達到開發過程隨時安裝與發布;第四,則是對過程的精簡,也就是所有事情的目的是得到可用軟體,盡量避免把時間用在繁瑣的開發流程上。
2. 2. 在課程作業中,我們的雙人項目用到了結對程式設計,那麼結對程式設計究竟有哪些利弊?
結對程式設計的優點在於,隨時的複審和交流,使程式的初始品質很高,身下了很多修改和測試的時間。另外在兩人的互相監督下,編程效率也會提高。而且結對中,兩人都得到了學習對方編程風格的機會,可能會改掉自己長久以來的不良編程習慣,而這種不良習慣也許在個人編程中永遠不能被發現。然而,在我們進行結對程式設計項目時,也許是經驗不足,我們發現的更多是結對程式設計的弊端。由於兩個人都對silverlight不夠熟悉,處於探索階段,而在一個電腦上不方便查資料,浪費了很多時間。另外,有的時候,監督的不能跟上主要編程者的思路,不能充分體現結對程式設計優勢。所以,在選擇編程方式時,應該根據實際情況選擇最適合的方式。
3. 3. 到今天為止,團隊編程近半,那麼團隊編程究竟要經曆那些階段呢?
前兩周,我們團隊經曆了初始的萌芽和磨合期。由於團隊中的五個人分別來自四個系,不瞭解彼此的性格和編程習慣,我們在討論項目題目和對未來宏觀規劃的過程中,瞭解了對方的愛好,也認識了大家的編程水平,這為今後的任務分配及組內管理打下了基礎。兩周后,我們項目的題目基本確定了,pm分配了各自的任務,並且制定了一些統一的編程模式和標準,團隊發展進入規範階段。而現在,大夥的任務都在熱火朝天地展開,隊員們相互之間配合默契,alpha版本即將誕生,這便是創造階段。
4. 4. 項目結束後,每個隊員的工作成績應如何衡量呢?
傳統的衡量方式,是按照項目中成員的不同角色,制定不同的評價標準,比如Test的評價標準可以使每個版本發布後發現Bug的個數,Dev的則是程式碼完成前的簽入品質和是否按期交付,以及程式碼完成後的Bug數目和代碼重構能力。對於我們組,由於大家的分工相對獨立且平行,成績評價則可按照負責模組的完成效果,與預期的差別,使用者體驗等角度做評價。
5. 5 如果你今後不想從事軟體開發工作,你認為學習軟體工程的目的何在?
如果今後不從事軟體開發,那麼書中一些具體的開發方法可以忽略,但其中對一個工程如何完成的方法論是從事任何工作的人所要學習的,比如說專案工作的分配原則,完成周期和業績評價。可以說,軟體工程教給我們更多的是團隊合作的方法,而課程中的項目又讓我們真正體會到合作中會出現的諸多問題以及其固有的魅力。
陳曉萌