构建之法第一章读后感
首先,文章對于程序、用戶需求、工程等等概念用了阿超給兒子編寫的一個出題程序來分別解釋了個中的含義,尤其是程序和工程的區別,
程序大概就是用很多語言或工具編寫的一個簡單能實現目標要求的一行行代碼,而工程就是在這個程序的基礎上不斷滿足用戶的需求、修復程序的bug、提供后續維護等服務。
需求分析:梳理需求,逐步展開后續工作,如設計(軟件架構)、實現(寫數據結構和算法),測試,發布軟件
軟件=程序+軟件工程(軟件企業=軟件+商業模式)
軟將工程的核心部分:構建管理、源代碼管理、軟件設計、軟件測試、項目管理(廣義上還有用戶體驗、用戶界面設計等
對于我們這些剛剛入門的學生來說,第一章提供了一個軟件所應該實現的部分,對于以后開發一個真正的實發性的軟件都是很有幫助的。
?
其中也提供了比較令人深思的部分就是軟件開發過程中的五點難題
?
1.復雜性(Complexity)
?
“軟件的各個模塊之間有各種顯性或隱性的依賴關系,隨著系統的成長和模塊的增多,這些關系的數量往往以幾何級數的速度增長,而理解運用這些復雜性的人并沒有太大的變化“,這樣意味著雖然現在的軟件看起來功能越來越強大,使用也非常便捷,但實際上這種強大是建立在更多的人手和更長的開發時間上的,所以如何解決人力問題是今后快速開發大型復雜問題的重中之重。
?
2.不可見性(Invisibility)
?
“軟件以機器碼的形式高速運行,還可能在幾個CPU核上同時運行,工程師是‘看‘’不到自己的源代碼如何具體地在用戶的機器上被執行的”,就是程序總會以自己無法預知的方式執行,當程序出錯時,幾乎無法完整重現程序到底出了什么問題,這對于bug的修復實在是有點無力。
?
3.易變性(Changeability)
?
“正確地修改軟件是一件很困難的事情”,這點在我們親自編程的過程中已經有了深刻地了解。。。
?
4.服從性(Conformity)
?
“軟件不能獨立存在,它總要運行在硬件上面,它要服從系統中其他組成部分的要求,它還要服從用戶的要求、行業系統的要求”,意味著如果想要廣為發布一個程序,除了程序本身的正確性,還要考慮很多外在因素才能保證程序的良好運行。
?
5.非連續性(Discontinuity)
?
“有時輸入上很小的變化,會引起輸出上極大的變化”,這需要從設計上著手考慮如何讓用戶更好地熟悉一個程序的操作,不能讓用戶對自己操作的結果摸不著頭腦。
?
轉載于:https://www.cnblogs.com/yuezhihao/p/6362242.html
總結
以上是生活随笔為你收集整理的构建之法第一章读后感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NOI[2001]食物链
- 下一篇: js-阻止冒泡