天天看點

軟體工程 第二周

軟體工程 第二周

目錄

1.提出問題

1. 提出問題

  1. 第一章一上來就提出了幾個問題,作者也試着作出了自己的解答。但是我看完之後,我覺得程式(算法、資料結構)是基本功,這個觀點似乎論證得不夠充分,文中隻帶過了這麼一句“……源程式,就是這麼一行行的代碼。它們是建立在資料結構上的一些算法。……”,同樣也沒有能夠解答我的疑惑。這一章的介紹更偏重于軟體工程之于軟體的重要性。那我的問題是資料結構作為計算機專業學生的必修課,最重要的原因是什麼;老師反複強調算法的重要性的原因又是什麼?這個問題,我亟待了解。我們大二的學弟學妹們,就因為幾乎沒什麼人選算法,最後這門課幹脆直接取消,似乎大家都覺得算法這門課沒什麼用。資料結構大家學了之後也基本都扔掉了,隻有考研的時候才會再撿起來。确實我們随便上GitHub上找找,就能發現别人都已經實作好的資料結構或者是實作好的算法,我們大部分時間也是調用别人已經寫好的庫或者是子產品,親自造輪子的真的算是少數。是以這樣的理論課到底應該是所有人的必修,還是少數人的選修?
  2. 第三章中有一個絞刑架和職業發展的讨論,想問下作者,就您的認為,現在的軟體開發工作相比于10年前、20年前、甚至30年前軟體工具和軟體工程理論方興未艾之時,是更容易了還是更複雜了?關于這個問題能不能用典型的人口增長模型來解釋呢(雖然這個模型有一些缺陷,但是相對來說友善了解)?程式員的數量相比于過去肯定是增加的,為什麼會增加呢?這個數量存不存在一個上界來限制,如果有的話,限制程式員數量增加的緊俏資源是什麼呢?
  3. 關于使用者體驗的這個部分,有個文字編輯的對比。Word 2007之後的版本可以輕按兩下文檔正中實作居中,我也是今天才知道的。那這種一般比較難發現的功能,即使寫出來了怎麼去讓别人發現,更加友善别人使用呢?還有針對LaTeX和VI這樣的,認知阻力相對比較大的軟體,有必要為了降低認知阻力而作出一些改進嗎,如果有,那應該作出那些改變呢?我覺得這就像算法當中一個時空平衡的概念,算法改進到一定的地步,要繼續降低空間開銷,就必須增加時間開銷,反之亦然。那這些軟體是否也是這樣?很多人寫論文會用LaTeX,用VI或者EMACS的也都是熟練的計算機專業人員,那麼這些軟體的使用者人群是不是也就是這些人?
  4. 這本書的頁碼為什麼是标在章标題的左邊,而不是傳統的目錄結構,而且為什麼小節都沒有頁碼,作者這樣設計的目的是什麼?
  5. 最後一個問題就是關于這門課的本身。這邊就問一個确實很愚蠢的問題,對于不同方向的學生到底應該以什麼樣的态度去對待這麼課?我問出這個問題并不是想偷懶,恰恰相反,很多課我都感興趣,都想學得很好,但是這無疑就是要花更多的時間,隻是正如作者在書中所說“不可能在兩個地方同時做豬,這太難了”。去年在Java課上第一次接觸到了部落格,就覺得手忙腳亂,對于基礎不是那麼好的自己或許要花很多時間才能夠讓部落格作業看上去不那麼敷衍,同時還要準備競賽,還要跟進老師的項目等等,很多時候都逼自己熬到晚上一兩點鐘。這幾天粗糙地讀了一遍書,很顯然軟體工程更是一個龐然大物,确實又害怕了起來,不知道該怎麼應對,再加上這次主要又是團隊開發,要非常非常努力,或許才能看上去不是像在劃水、在混日子,那其他的課程應該怎麼兼顧?準備考研的同學應該怎麼配置設定時間?以後不搞軟體開發的同學又該怎麼應付?雖然在哪個地方做豬是自己的決定,但是還是希望作者和老師能夠傳授一些人生的經驗,稍稍指點我們一下。我也知道有很多學長學姐都通過軟體工程學習到了很多東西,做出了很好的軟體,那他們又都是怎麼應對的呢?