集大軟件工程15級我的做業Week2

集大軟件工程15級我的做業Week2

快速通讀教材《構建之法》,並參照提問模板,提出5個問題。linux

  • 在每一個問題後面,請說明哪一章節的什麼內容引發了你的提問,提供一些上下文
  • 列出一些事例或資料,支持你的提問。
  • 說說你提問題的緣由,你說由於本身的假設和書中的不一樣而提問,仍是不懂書中的術語,仍是對推理過程有疑問,仍是書中的描述和你的經驗(直接經驗或間接經驗)矛盾?

【附加題】:請將問題提交至豆瓣:https://book.douban.com/subject/27069503/, 並在博客中給出連接
在豆瓣頁面的最下方 「讀書筆記」 那裏發言, 《構建之法》的做者會親自答覆問題android

Q1 : 我的技術和流程

來自第2章 p36web

PSP有如下的特色:算法

  • ...
  • PSP依賴於工程輸入數據,記錄工程師的各項活動,這自己就須要不小的時間代價
  • 若是數據不許確或者有遺失,怎麼辦?讓工程師編造一些?
  • 若是一些數據不利於工程師本人(例如:花不少時間修改缺陷),咱們怎麼才能保證工程師願意如實地記錄這些數據呢?

個人問題是,PSP是否不適合學生編程

正如書中所言,PSP這一模型在實施的時候彷佛有一些困難的地方,尤爲是對於學生來講,例如:windows

  • 數據如何才能較爲精確的獲取到
  • 各個階段之間的分界點不明確
  • 學生的時間比較分散,因此極可能會出現學生利用了好幾塊分散的時間才作完了一個階段的事情,那麼這樣子又該如何統計呢?顯然這之間不能簡單地線性相加,例如,我要設計接下來一個項目的各模塊接口。我花了三天沒課的上午在onenote上寫好了文檔,可是實際上從我開始準備寫文檔那一刻起,個人腦中就開始構思各模塊的接口之間的關係了,可能在某一節無聊的課堂上,也多是在食堂裏吃飯的時候...對於常常沒有完整時間塊的學生來講,PSP的數據很難獲取到
  • 文中所舉例舉例的工程師的問題固然一樣也適用於學生身上

問題提出的緣由是與我在平常學習生活中的經驗矛盾編程語言

Q2 :兩人合做

來自第4章 p87函數

如何結對編程單元測試

  1. 駕駛員:寫設計文檔,進行編碼和單元測試等XP開發流程。
  2. 領航員:審閱駕駛員地文檔;監督駕駛員對編碼等開發流程的執行;考慮單元測試的覆蓋率;思考是否須要和如何重構;幫助駕駛員解決具體的技術問題。領航員也能夠設計TDD中的測試用例
  3. ......

我認爲,結對編程可能在現今的大學環境下難以發揮效果。學習

首先看到書中關於結對編程的例子,通常都是公司內部的兩個工程師,兩者同爲一家公司的工程師,那他們之間通常來講技術、關於技術的思想等等就不會差距太大,而這個技術差距偏偏是學生之間和工程師之間的不一樣之處。好比說用0到10的數字表示一我的對有關結對編程中使用技術的掌握程度,兩個工程師是4和7,而學生之間甚至可能出現0和1的狀況(沒有其它人比學生更瞭解學生,做爲計算機學院的學生,四年下來連要求的某些編程語言的基本語法都沒有學會的也不是沒有)。這樣的狀況下,根本無法結對,別說設計單元測試了,可能連表述出來的設計需求都聽不懂。

問題出發點一樣是與學習環境中的經驗不符。

Q3 : 實戰中的軟件工程

來自第7章 141

保持敏捷,預期和適應變化......

以及 第3章 p53

「過早優化是一切罪惡的根源」......

當我看到敏捷的思想的時候,就回想起了在本書前面看到的過早擴大化/泛化等的問題。前者的要點是:要預料變化,適應變化,對變化作好準備;然後者的要點是:不要過早地泛化......我感受這兩種思想彷佛有着衝突的地方,問題是該如何在兩者在過早泛化和提早爲變化作好準備之間找到平衡點呢

舉個更具體的例子,我要用C++寫一個web/linux/windows/iOS/android上均可以使用的我的事項管理軟件。我打算從windows客戶端開始設計,在設計其中一些方法的時候,我是應該將函數所有泛型化,抽取出變化的部分所有設置成參數?仍是先將這一平臺的當前需求以合理的資源和算法結構等先設計實現出來呢?

Q4 :軟件測試

來自第13章

章節中的各類測試技術的應用場景......

在閱讀軟件測試等章節的時候,我認爲確實單元測試和軟件測試等等都是十分有必要的,那麼一個GUI軟件該如何更好地測試呢,或者說GUI軟件的自動化測試有沒有必要呢?

這是我找到的部分觀點:

在我看來,GUI測試因爲其變化可能性大,測試(覆蓋率/成本) 率高,因此難以進行大規模的自動化測試,就像某前輩所說的

keep the UI very, very thin—all it does is forward user gestures to some underlying code, and display the results. No logic. Definitely no database access.

UI就該作UI的事情,而且只作那件事

在測試問題上,該如何找到最佳的GUI測試方案呢

Q5 : 人,績效和職業道德

來自第17章 p411

軟件工程師的職業道德

其中有一個規範:

原則1 公衆
軟件工程師的行爲應與公衆利益一致
原則2 客戶與僱主
軟件工程師應以其客戶和僱主利益最大化的方式作事,與公衆利益保持一致
......

看到這種一條一條的的準則,就會產生疑問:

  • 如何衡量是否與公衆利益一致
  • 若公衆利益與僱主利益不一致,甚至互斥怎麼辦

舉個例子 某大廠開發的一款即時通信軟件,在發佈後因爲其出色地整合了許多同類應用的優秀功能而大火。以後僱主(公司老闆)要求工程師設計出一套付費vip的服務,對於使用該應用的用戶來講,這固然不利於他們的利益,可是從僱主的角度來講,他能夠憑藉該應用的巨大用戶基數怒賺一筆

相關文章
相關標籤/搜索