這個做業屬於北航計算機學院軟件工程
這個做業的要求位於此連接
我在這個課程的目標是:積累軟件項目開發經驗,取得大於85分的成績。
這個做業在以下方面幫助我實現目標:快速瀏覽全書,掌握課程的總體結構。經過查閱資料,瞭解軟件工程的歷史。html
(1)第33頁,將代碼段linux
for(int i = 0; i < m_wordList.Count; i++)
更改成git
int count = m_wordList.Count; for (int i = 0; i < count; i++)
第34頁寫道:「你們也要注意避免沒有作分析就過早地進行‘效能提升’。」
問:相似上述代碼的優化,是否能夠視爲必然可以提升效能,而無需每次都進行分析呢?程序員
(2)第7章 第137頁
「有些團隊把開發和測試有意無心地對立起來,好像兩者是矛盾的。」 「這種對立情緒,也許在短時間內能刺激成員的工做熱情,而從長遠來看是有害的。」
北航計算機學院的「面向對象設計與構造」課程的每份做業都採用以下的評分標準:修課的同窗代碼隨機分配至其餘人手裏,找出別人的BUG會爲本身加分,而本身的程序被別人找出BUG會被減分。這種評分規則是否能夠看做違反了上述原則,而應被廢止或修改呢?編程
(3)第8章 需求分析 之中的內容,有一部分與北航經管教材上的知識重合。例如167頁的「用戶滿意度模型」、177頁的「分而治之」思想。
能否認爲軟件工程在進行需求分析時,較多地借鑑了傳統管理學知識?或者認爲軟件工程是管理學的一個分支?api
(4)11.5.2 每日構建(235~237頁)
這一節的寫做有些漏洞。阿超與小飛的對話,主要論證的是「構建」的重要性,卻忽略了論述「每日」進行構建的必要性。
因此,每一天都進行構建工做是不是有必要的?若是不是,這一名稱是否有修改的必要?服務器
(5)第14章 質量保障 第312頁
做者設想了第三方的軟件質量認證服務將爲人們的生活帶來的便利。那麼,第三方認證軟件質量爲何尚處於起步階段,其難點在哪裏?網絡
根據百度百科「軟件工程」詞條的描述,軟件與軟件工程的發展經歷了以下階段:electron
「軟件」一詞的提出者通常認爲是美國數學家John Tukey。他的維基百科中有以下論述:編程語言
In 2000, Fred Shapiro, a librarian at the Yale Law School, published a letter revealing that Tukey's 1958 paper "The Teaching of Concrete Mathematics" contained the earliest known usage of the term "software" found in a search of JSTOR's electronic archives, predating the OED's citation by two years.
而「軟件工程」的提出者和實踐者通常認爲是Margaret Hamilton。她開發了「阿波羅」飛船飛行控制軟件。在一次採訪中她提到:
軟件在這個計劃的初期還被看成初初學步的孩子通常對待,徹底不像其餘工程學科;例如像硬件工程那樣的受到重視,並且在你們的眼光中他就像是藝術、魔術通常,而不是一門科學。我一直以來堅信這項發明流着藝術與科學的血液,雖然當時不多人是這麼想。所以,我致力於爲軟件以及那些發明者爭取應有的正統性與尊重,因此我開始使用「軟件工程」這樣的字眼來將之與硬件還有其餘工程學類作出區別。
——引用自《就是她,寫出了讓阿姆斯壯成功登錄月球的代碼!》
事實上,儘管Hamilton是半路出家,可是她在軟件測試方面貢獻了一些卓有成效的思想。
一天,勞倫在擺弄 MIT 控制艙模擬器的顯示器鍵盤一體機 DSKY。當她在鍵盤上亂按的時候,一條錯誤信息忽然出現。勞倫不知怎地啓動了一個叫作 P01 的預運行程序,本來正在飛行狀態的模擬器一會兒崩潰了。
雖然通常來講宇航員不會犯這樣的錯,但瑪格麗特仍是想加一段代碼防止這種情況的發生。這一提議被 NASA 否決,「他們一遍又一遍地跟我說宇航員不會犯任何錯誤,他們被訓練得近乎完美,」瑪格麗特說。她轉而加了一句程序說明,全部 NASA 工程師和宇航員都能看到:「不要在飛行過程當中按下 P01」。她回憶說,「全部人都說,『那樣的事情永遠都不會發生』。」
但事情的的確確發生了。時間大約在 1968 年的聖誕節,進入阿波羅 8 號飛船的第五天飛行,宇航員吉姆·洛威爾 (Jim Lovell) 不當心在飛行中啓動了 P01 程序。當電話從休斯頓打來的時候,瑪格麗特正在儀器實驗室的 2 層會議室。啓動 P01 程序致使此的導航數據所有清空,阿波羅計算機沒法計算出如何返回地球。
瑪格麗特和 MIT 的程序員們須要想出一個補救的辦法,必須是無錯漏的完美辦法。在花費 9 小時鑽研過面前 8 英寸厚的程序列表後,他們有了一個計劃。休斯頓方面須要上傳一份新的導航數據,然後一切都會順利進行。
——引用自《代碼傳奇 | 明明能夠靠顏值 卻用代碼把人類送上了月球的女人——Margaret Hamilton》
Git是一個開源的分佈式版本控制系統,能夠有效、高速地處理從很小到很是大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
優勢:
缺點:
Mercurial 是一種輕量級分佈式版本控制系統,採用 Python 語言實現,易於學習和使用,擴展性強。其是基於 GNU General Public License (GPL) 受權的開源項目。
優勢:
缺點:
Trac是一個爲軟件開發項目須要而集成了Wiki和問題跟蹤管理系統的應用平臺,是一個開源軟件應用。Trac以簡單的方式創建了一個軟件項目管理的Web應用,以幫助開發人員更好地寫出高質量的軟件。
Bugzilla 是一個開源的缺陷跟蹤系統(Bug-Tracking System),它能夠管理軟件開發中缺陷的提交(new),修復(resolve),關閉(close)等整個生命週期。
Bugzilla是一開源Bug Tracking System,是專門爲Unix定製開發的。