現代軟體工程 第四章 練習與討論

來源:互聯網
上載者:User

標籤:blog   http   資料   width   art   io   

4.7.1  結對項目的案例和論文

在現代軟體工程教學的過程中,同學們已經總結了不少切身體會。例如:

總結1[i]:
那是project到了比較關鍵的創造階段,整整一天,我們倆椅子靠椅子的坐在電腦前,一邊討論一般coding,那次才真正的體會到結對真的能夠帶來效率。一整天的coding是容易走神的事,還好有pair在旁邊指導,總是不斷在我敲某某變數之前提前告訴我成員變數的名字,資料修改時幫忙檢查是否有漏掉的,變數和函數定義的時候一起為其取名字,感覺有點眼花了,就換了個角色,我也開始對他“指指點點”了,一個人coding,一個人review,確實能減少一些不必要的錯誤,減少一些漏洞,演算法實現後一起做些簡單的測試,看到bug了再一起分析,我能明顯的感覺到與以前的個人編程不一樣,我們能比較快的找到bug初始點,並能提出比較的修改方法。特別是當看到功能進一步實現時,心裡確實挺happy,更重要的這份感受有同伴與你一起分享。

總結2[ii]:
於是我們進行了項目中最關鍵的一次Pair Programming,我們利用編譯課上機時間,在機房裡Pair完成了整個項目的類的設計與程式結構的設計。我們一起分析出類,然後找屬性,寫方法頭,開始是WG用鍵盤,後來我用。一個明顯的好處是,寫完一條自己不確定的語句,馬上可以跟Pair一起縷一縷思路。一下午下來,感覺甚為清爽,因為終於清楚這個項目的做法了。

學術界、工業界對結對程式設計已經有不少研究,請閱讀至少兩篇相關論文或論文[iii]。

4.7.2  性格對合作的影響

人和人不一樣,在和別人合作的時候,要注意各人表達觀點的方式和思考的方式不盡相同。請看網上關於MBTI的文章[iv],測試並分享各自的MBTI類型,討論不同性格類型對合作有多大的影響, 在合作的各個階段應該如何應對[v]。

4.7.3  是否需要有代碼規範

對於是否需要有代碼規範[vi],請考慮下列論點並反駁/支援:

  1. 這些規範都是官僚制度下產生的浪費大家的編程時間、影響人們開發效率, 浪費時間的東西。
  2. 我是個藝術家,手藝人,我有自己的規範和原則。
  3. 規範不能強求一律,應該允許很多例外。
  4. 我擅長制定編碼規範,你們聽我的就好了。
4.7.4  代碼複審的討論

小飛: 哇,這麼多酷的C++ 功能都不能用,那我們還學什麼C++,為了迎接考試,我都把Operator Overload、Polymorphism背得滾瓜爛熟了,為什麼不讓我用?

阿超: 我們寫程式是為瞭解決問題,不是“為賦新詞強說愁”,這些進階的語言特性,不是不讓用,而是要用得謹慎,不要動不動就寫三五個類,一個套一個,要把注意力集中在能否用簡潔的方法解決問題上來。

小飛: 這麼多規範,我不知道怎麼寫第一行程式了。

阿超: 自我複審也很重要——把代碼擺在面前,當作是別的菜鳥寫的。把你通常問別人的,以及別人會問你的問題都自己問一遍。這樣就能發現不少問題。

小飛: 如果開發人員很厲害,那麼複審者就沒有什麼作用,也許這些複審都是走過場?

阿超: 同理可以推論,如果開發人員很厲害,那麼測試人員也沒什麼作用,也是走過場,乾脆把他們送回家得了。我們敢這樣做麼?

小飛: 這些規範啊, 建議啊, 都是細枝末節的東西, 我們要做世界級的軟體,搞這些東西是不是太小家子氣了?

阿超: 首先世界級的軟體也會因為小小的紕漏而導致世界級的問題。例如我們常常聽到的安全性漏洞和緊急補丁。其次,軟體的開發是一個社會性的活動, 有它的規律。其中一個規律就是“破窗效應”(broken windows theory)[vii][YEKA1] [XZ2] ,如果團隊成員看到同伴們連一些細小的規範都不遵守,那自己還要嚴格執行單元測試嗎?另一個成員看到這個模組連單元測試都沒有,那他自己也隨意修改算了。這樣下去,整個軟體的品質可想而知。


[i]      參見:http://www.cnblogs.com/ustc_msra_ase/archive/2010/11/28/1890424.html

[ii]      參見:http://www.cnblogs.com/xinz/archive/2010/11/27/1889978.html

[iii]     參見:http://c2.com/cgi/wiki?PairProgrammingCaseStudy 以及 http://www.thefreelibrary.com/Case+study%3a+using+pair+programming+in+development+of+a+complex+module.-a0246014267 以及 http://www.cs.utexas.edu/users/mckinley/305j/pair-hcs-2006.pdf

[iv]     請看: http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator

[v]     另外請參見 《對性格內向者的10個誤解》: http://blog.jobbole.com/12488/

[vi]     參見:http://www.vaikan.com/the-conventions-we-follow/   
http://www.aqee.net/things-everyone-should-do-code-review/
http://scientopia.org/blogs/goodmath/2011/07/14/stuff-everyone-should-do-part-2-coding-standards/ 

[vii]     參見:http://en.wikipedia.org/wiki/Broken_windows_theory

 

 

 [YEKA1]上一章已經給出了注釋,此處刪去注釋?

 [XZ2]都挪走

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.