天天看點

[2017BUAA軟工]第1次個人作業

  • 快速看完整部教材,列出你不懂的5-10個問題,釋出在你的個人部落格上。

1. 為什麼說軟體是人類創造的最複雜的系統類型?大型建築、飛行器甚至長篇小說的結構也可以非常複雜,并且容易變得難以了解和維護,認為軟體系統十分複雜是不是因為軟體工程還沒有充分發展?

2. 用形式邏輯的方法驗證需要高可靠性的大型軟體的正确性是否可行?例如航空的軟體系統。

3. 如何發現社會的潛在需求?類似小黃車這樣的項目,之前從未有人提出來過,這種颠覆性的創新是如何提出并且恰好被市場認可?

4. 為什麼作者堅持認為代碼應該手寫?用技術提高寫代碼的效率,除了造輪子,實作代碼的自動生成是否也是一條出路?

5. 作為上司者,當團隊急需看到成就時,是應該更多依賴直覺快速決策還是依賴分析決策?

6. Program Manager 如何保持和開發、測試、UX等人員平等的地位?如果PM負責統籌規劃,其他人員是否還是他實際意義下的下屬?如果PM和DEV發生不可調和的分歧,該聽PM的嗎?

7. 該如何控制項目的風險?特别是在中國目前的經濟、文化政策下,很難預知軟體釋出時是否出台了更嚴格的審查政策,在這樣的環境下,如果資金和人力不豐厚,如何保持項目的健壯性?

8. 客戶不斷增加新需求,打亂開發流程該怎麼辦?如何讓軟體架構适應不斷變化的需求?

9. 一般的項目經理需要怎樣的技術能力?工程師覺得項目經理不懂技術,不服上司,是否有道理?項目經理是否應該有足夠的技術功底?

10. 作為以程式設計為生的程式員,在這個人人會程式設計的年代,保持不可替代性的方法,除了學習軟體工程等專業開發知識,還有什麼?

  • 請問 “軟體” 和 “軟體工程” 這些詞彙是如何出現的 - 何時、何地、何人?

1. “軟體(software)”一詞用于描述電腦程式最早出現在1958年1月,由John W. Tukey在Princeton大學提出.(http://www.historyofinformation.com/expanded.php?id=936)

2. “軟體工程”在1968年,由Peter Naur和Brian Randell提出,在Garmisch, 德國。(《建構之法第二版》,鄒欣,P19)

  • 上網調查一下目前流行的源程式版本管理軟體和項目管理軟體都有哪些, 各有什麼優缺點? (提示:搜尋一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rationale,Apple XCode)?

Microsoft TFS:

優點:

    • 任務版上能将需求、項目進度一覽無餘,對于小團隊而言,比甘特圖更有用
    • 內建了項目管理、版本控制、BUG 跟蹤,能有效實作 SCRUM
    • 能與 VS 無縫接合

缺點:

    • 用ASP實作,用浏覽器通路很慢
    • 團隊的郵件細節配置很複雜

Git:

    • 免費的開源軟體
    • 很好地實作分支、合并、送出、復原
    • 項目安全性好,誤操作警告豐富
    • 概念過于複雜
    • 文法設計比較随意
    • 對初學者不友好,代碼封裝性差
    • 總有辦法破壞版本庫的内容

Mercurial:

    • 指令有雙字母簡稱
    • 指令相容svn
    • 指令封裝性好
    • 伺服器部署相對容易
    • 分支管理不靈活
    • 支援社群略差

Github:

  使用人數:24,377,273 , https://www.quora.com/How-many-users-does-GitHub-have

  優點:

    • pull request和issue功能友善社群協作
    • 個人展示、合作平台
    • 有大量優秀的開源項目
    • wiki 功能太弱
    • 學習曲線陡峭
    • 可能未來某天被牆
    • 企業應用費用太高

Bitbucket:

    • 支援私有免費項目
    • 支援git
    • 受歡迎度不如Github
    • 網站功能不如Github豐富

Trac:

   優點:

  • 作為一個SCM配置管理平台,具有良好的擴充性
  • 權限體系設計完備
  • 非常靈活
  • 不支援多項目
  • 需求和缺陷沒有分離
  • wiki 作為文檔的學習代價比較高

Bugzilla:

    • 強大的檢索功能
    • 通過跟蹤和描述處理Bug
    • 強大的後端資料庫支援功能
    • 免費開源
  • 界面不友善
  • 本地化不夠好

Apple XCode:

  • 內建了C、 C++、Swift等大量語言和程式設計模型
  • 編譯成各種架構
  • 編寫iOS App
  • GUI工具
  • 可以自動撤銷、重做、儲存
  • 比較臃腫
  • 隻能在Mac環境中運作
  • 非官方管道的XCode開發的App可能被惡意植入程式

【附加題】:大家知道了軟體和軟體工程的起源,請問軟體工程發展的過程中有什麼你覺得有趣的冷知識和故事?(+2')

提到程式員,你腦海裡會出現什麼形象?

年輕男性?戴眼鏡、邋遢、不善言辭的極客?總之,第一反應是女性的恐怕不多。

但幾十年前是恰好相反的。

那時候,程式設計被視為女孩的職業,人們甚至認為女性的天賦很适合這個工作。1967年出版的一份就業指導裡,這樣寫道:“程式設計需要耐心、恒心、關注細節,這些正是女生的特點”。

其實,人類曆史上第一個程式員就是女性。她叫埃達·洛夫萊斯(Ada Lovelace),是英國著名詩人拜倫的女兒。

事實上她寫的程式僅僅作為數學推演,而并未在實際的計算機上運作過。