標籤:
第1章概括介紹軟體工程的曆史發展和基本原理,討論IEEE和ACM最新提出的軟體工程知識體系和軟體工程職業道德規範。在第一節裡我們把軟體分為了通用軟體與定製軟體兩種,隨後我們瞭解了軟體的特性知道它是複雜的,不可見的,變化及定製的。然後瞭解了軟體的發展與危機。
在第二節裡,我們知道了軟體工程的兩種概念,以過程,方法和工具三要素組成,以關注軟體品質為目標,即開發出高品質軟體。而CASE系統可以分為工具,工作台和環境三個層次,但是在現在的挑戰也有許多,如:1.遺留系統方面的問題。2.高可信軟體開發的需求。3.軟體開發方式的變化等等。
而軟體工程知識體系的產生有巨大意義,其組成為10個知識領域,分別為:軟體需求(Software requirements),軟體設計(Software design),軟體建構(Software construction),軟體測試(Software test),軟體維護與更新(Software maintenance),軟體構型管理(Software Configuration Management, SCM),軟體工程管理(Software Engineering Management),軟體開發過程(Software Development Process),軟體工程工具與方法(Software Engineering Tools and methods),軟體品質(Software Quality)。
而軟體的開發到底是一門科學還是一門工程,這是一個被爭論了很久的問題。很多人認為軟體工程基於電腦科學和資訊科學就如傳統意義上的工程學之於物理和化學一樣。下表就是它們差別的一個匯總:
軟體工程與電腦科學的差別[15] |
| |
軟體工程 |
電腦科學 |
目標 |
在時間、資源、人員這3個主要限制條件下構建滿足使用者需求的軟體系統。 |
探索正確的計算和建模方法,從而改進計算方法本身。 |
產品 |
軟體(比如辦公包和編譯器)。 |
演算法(比如希爾排序法)和抽象的問題(比如哲學家進餐問題)。 |
進度與時間表 |
軟體項目都有特定的進度與時間表 |
研究項目一般不具有設定的進度與時間表 |
關注點 |
軟體工程關注如何為使用者實現價值。 |
軟體理論關注的是軟體本身啟動並執行原理,比如時間複雜度,空間複雜度,和演算法的正確性。 |
變化程度 |
隨著技術和使用者需求的不斷變化,軟體開發人員必須時刻調整自己的開發以適應當前的需求。同時軟體工程本身也處於不斷的發展中。 |
對於某一種特定問題的正確解決方案將永遠不會改變。 |
需要的其他知識 |
相關領域的知識。 |
數學。 |
著名的探索者和教育家 |
Barry Boehm,David Parnas,佛瑞德·布魯克斯。 |
Edsger Dijkstra,高德納,Robert Tarjan,Peter Slater,艾倫·圖靈,姚期智。 |
著名的實踐者 |
John Backus,Dan Bricklin,蒂姆·伯納斯-李,林納斯·托瓦茲,理查德·馬修·斯托曼。 |
無。 |
在職業道德規範裡我們也有著IEEE與ACM準則,我們需要遵從。
軟體工程:理論、方法與實踐 緒論讀後感