結合軟體工程課 談談最近閱讀的所想所得 -- 個人閱讀作業2

不慎獨不成活發表於2014-11-12

  最近讀了老師推薦的一篇經典論文《沒有銀彈》,瞭解學習了網上關於相關內容的相關知識。同時讀了關於產品方面的書籍《人人都是產品經理》。下面就寫寫我的學習筆記。

  首先,我來說說這篇《沒有銀彈》寫了什麼。首先,它指出了一個現實,那就是計算機軟體的發展速度要遠低於計算機硬體的更新速度,而這不是因為軟體更新的太慢而是因為硬體太快了。而要讓軟體也快速發展,必須找到所謂的“銀彈”。

  接著他將計算機軟體工程中的困難分類:

  根本的:軟體特性中固有的困難,次要的:出現在目前生產中,但是並非與生俱來的困難。他是這麼描述這兩種困難的:"我認為軟體開發中困難的部分是規格說明、設計和測試這些概念上的結構,而不是對概念進行表達和對實現逼真程度進行驗證。當然,我們還是會犯一些語法錯誤,但是與絕大多數系統中的概念錯誤相比,它們是微不足道的。"

  為什麼根本困難無法規避呢?因為對於計算機軟體,有著無法規避的內在特性:複雜度,一致性,可變性,不可見性。而這些,是通過一些規範化的方法無法克服的,他給出的解決辦法是:培養優秀的設計人員。即人腦思維的問題,最終還是需要由人來解決。

  這篇論文的說法有人支援有人反對,無論怎樣,事實是軟體工程發展的這幾年,我們嘗試了不同的軟體開發方式,可軟體開發的進度像絕大多數的產業一樣,確實沒有像硬體一樣飛速提高。在軟體工程領域,我們形成了不同開發方法,下面介紹一下我理解的瀑布式開發和敏捷開發。

  瀑布式開發:流程性的開發模式,把專案分解為有限地階段、估算時間,並按順序執行。優點:對專案估計方便,專案的目的性明確。缺點:對開發人員要求過高,評估容易不準確。無法及時反饋與修改。

  敏捷開發:一種以人為本、擁抱變化、崇尚簡單地開發方式。以迭代更新為基本流程,可以認為是將瀑布式開發分解為更小的迭代週期,實時更新實時執行。

  

  在我們這一週多完成軟體工程作業的過程中,我們在老師的要求下也開始嘗試使用敏捷開發的相關思想和流程。因為我們是有了一個比較完整的程式,所以不斷地測試、完善功能就是我們的主要任務,而完成這個任務的過程中,敏捷開發的思想真的很適合我們。我們每兩三天就要召集所有成員開一次會,討論我們上一週的期的完成情況,同時探討有什麼需要更新的功能,在完成會議後,分配任務並且迅速進行下一輪的迭代,迅速高效,及時反饋任何BUG或新功能的問題,對我們的產品完善有很大的幫助。

  而作為我們小組的“產品經理”,我的感受是,在學校做軟體和在企業做軟體感覺是不一樣的。首先,我們的爬蟲系統更像是一個專案而非產品。因為它不是一個完整的可以供使用者長期使用不斷完善的產品,更像是一個有明確目的,實現爬蟲功能的專案。同時,它不像產品一樣有特定的使用者需求,我們的使用者只有下一個組的成員,而他們也是邊學邊瞭解邊做,所以我們並不能完全地調查使用者需求並改進我們的產品。所以我們的專案進行方式是憑我們對產品的瞭解,“臆想”出可能需要的產品需求,將產品做的更完善一些。這樣的方法更適合我們現在的處境。

  我們的上課方式與前大班不一樣,任務量更重更麻煩。雖然嘴上經常吐槽,但是心裡感覺這樣的上課方式還是挺好的,能讓我對現在的產品開發方式,網際網路公司的企業流程有一個直觀的瞭解,對於我們今後工作有很大的幫助。

  所以,努力學習,加油!

相關文章