軟件工程第一次閱讀做業

項目 內容
本次做業所屬課程 2019BUAA軟件工程
本次做業要求 閱讀《構建之法》,初步瞭解軟件工程
我在本課程的目標 熟悉軟件工程相關規範,學會結對編程和團隊編程
本次做業的幫助 在《構建之法》的基礎上解惑,在老師幫助下了解軟件工程

1.快速看完整部教材,列出你仍然不懂的5到10個問題

問題1 第二章 我的技術和流程 2.1 單元測試

問:若是用隨機數以增長測試的真實性,好麼?git

答:通常狀況下很差,若是某個隨機數致使程序出錯,可是下一次運行又不能重複這一錯誤,則於事無補。咱們仍是要用隨機數等辦法「增長測試的真實性」,但不是在單元測試中。單元測試不能解決全部問題,沒必要指望它會發現全部的缺陷。……github

​ 「某個隨機數致使程序出錯,可是下一次運行又不能重複這一錯誤」,在隨機生成單元測試的時候,爲什麼下一次運行不能重複這個錯誤呢?隨機生成的數據對測試者來講應該是可見的,在隨機生成單元測試的時候,若某個隨機數致使出錯,可不能夠記錄這個數據,下一次測試就不須要從新隨機生成了呢?數據庫

還有,對於相似隨機數生成器這個程序自己,若是要進行單元測試要怎麼進行呢? 這是我在查詢以上疑問的時候遇到的新問題,可是彷佛沒有獲得解答。編程

問題2 第二章 我的技術和流程 2.3 我的開發流程

我的項目耗時對比記錄表編程語言

……函數

·若是數據不許確或有遺失,怎麼辦?讓工程師編造一些?工具

​ 正如書中提出的問題,當PSP中數據不許確或有遺失應該怎麼辦呢?我我的以爲編造應該是不可取的,這樣失去了PSP的意義。在回憶不起來的時候,若是單項時間缺失,能夠從其餘項目來計算時間;若是數據多項缺失… 有沒有什麼補救措施呢?gitlab

問題3 第三章 軟件工程師的成長 3.3 技能的反面

​ 書中用魔方的精通來類比編程技能的精通,這樣說來,C++之類的語言精通應該遠比C語言困可貴多,但即便是c語言,達到「精通」的標準也有必定難度。不少人編程的過程都被調侃或者自嘲爲「面向谷歌編程」,那麼是否意味着一門編程語言,當我還不能脫離文檔或者谷歌獨立完成一個項目的時候,我就不能聲稱我「精通」這門語言呢?單元測試

問題4 第三章 軟件工程師的成長 3.4 技能的反面 練習與討論

​ 在本章的練習與討論裏看到一個有趣的問題,也就是練習與討論的第四題學習

​ ……

他愈來愈意識到本身原來設計中的弱點,……

若是如今就改弦更張,那勢必要影響本身原來估計的準確性,並會花費額外的時間,這樣他的老闆、同事也許會所以看不起他。若是他循序漸進地按既定設計完成,最後整個團隊還要花更多時間在後續集成上,但那就不是他我的的問題了,怎麼辦?

​ 這個問題感受有那麼一點點相似「電車困境」,對於這個問題,我我的的見解是向團隊說明本身的失誤,並想辦法更正之前的錯誤,後者確定是不可取的,浪費整個團隊的時間同時也是浪費本身的時間。可是我在這裏想提問的是,有沒有更好的解決方案呢?

問題5 第四章 兩人合做 4.2 代碼風格規範 4.2.4 斷行與空白的{}行

if(condition){

​ DoSomething();

}

else{

DoSomethingElse();

}

​ 書上提倡每一個大括號都佔一行,可是沒有提到過如上的大括號換行規範,即一個第一個大括號不換行。我以爲這種寫法也是相對清晰的,而且在網上搜索了一下,採用上述格式和書上的格式D的人都有,甚至你們戲謔地稱對方爲「異端」。那麼第一個大括號換不換行究竟有沒有一些我沒有考慮到的講究呢?實例代碼比較簡單,顯得我在鑽牛角尖,可是我在想若是在複雜的代碼中是否兩者的某種優點或者劣勢會被放大。

問題6 第四章 兩人合做 4.2 代碼風格規範 4.3.4 如何處理C++中的類

……

4)當你拿不定注意的時候,用成員函數,不要用運算符。

請問爲何這樣說呢?我是這樣想的,拿不定注意的時候,說明兩者皆可,這個時候運算符重載會使得代碼可讀性更高,尤爲是有嵌套調用的時候,因此我我的以爲運算符更好,不知道爲何要這個時候要用成員函數。

問題7 第十一章 軟件設計與實現 11.5 開發階段的平常管理

​ 文中的提到設定一個閾值,若是開發人員Bug數量超過這個閾值則須要他專心修復Bug,也就是掉進「小強地獄」。對於一個新的項目組,假如你們的代碼能力咱們都不是很瞭解,而自己這個閾值又不適合常常修改,那到底應該如何制定出合適的閾值呢?制定很差對於項目進度的影響是否會有負面效果?

2.請問 「軟件」 和 「軟件工程」 這些詞彙是如何出現的 - 什麼時候、何地、何人?

軟件:

根據維基百科

The first theory about software—prior to creation of computers as we know them today—was proposed by Alan Turing in his 1935 essay On Computable Numbers, with an Application to the Entscheidungsproblem (decision problem).

軟件理論的提出者是 Alan Turing

軟件工程:

根據維基百科

1968年秋季,NATO(北約)的科技委員會召集了近50名一流的編程人員、計算機科學家和工業界巨頭,討論和制定擺脫「軟件危機」的對策。在那次會議上第一次提出了軟件工程(software engineering)這個概念.

3.你們知道了軟件和軟件工程的起源,請問軟件工程發展的過程當中有什麼你以爲有趣的冷知識和故事?

著名計算機科學家Donald Knuth(高德納)(學計算機的確定知道這我的)寫的排版軟件TeX版本號能夠算是個趣事,從TeX第三版開始,以後的升級是在小數點後加入一個新數位,使之愈來愈接近Pi的值。TeX目前的版本是3.1415926。於2008年3月更新。

這個程序很穩定,高德納許諾要是誰發現一個bug,就獎勵他一些錢(1美分開始,每一年翻倍),通常真的發現bug的人,會把支票裱起來。

做者:FMiaoZ

連接:https://www.zhihu.com/question/20774002/answer/16134516

來源:知乎

著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

在知乎查找到一則有趣的故事,在此就直接引用了。

4.上網調查一下目前流行的源程序版本管理軟件和項目管理軟件都有哪些, 各有什麼優缺點?

目前流行的包括Microsoft TFS、git、Trac、Bugzilla等。

  1. git(github、gitlab等)

    • 優勢:
      • 功能強大,使用方便。
      • 用戶基數大,方便用戶間交流學習。
    • 缺點:
      • 初期有必定學習成本。
  2. Trac

    • 優勢:
      • 輕量級。
      • 插件豐富,可拓展性強。
    • 缺點:
      • 不支持多項目。
      • 需求和缺陷沒有分離。
      • 核心功能不多,不安裝插件基本上無法用。
  3. Microsoft TFS

    • 優勢:
      • 易於使用。
      • 高度集成其餘工具(VS、ItelliJ等).
      • 自動化生成和發佈。
    • 缺點:
      • 用戶數量不夠多。
  4. Bugzilla

    • 優勢:
      • 豐富的配置設定,定製能力強
      • 免費開源
    • 缺點:
      • 裝須要Perl和配置MYSQL數據庫,過程比較繁瑣
      • 修改配置文件麻煩
      • 漢化容易出現亂碼
相關文章
相關標籤/搜索