1. 程式人生 > >初識《現代軟件工程——構建之法》

初識《現代軟件工程——構建之法》

com con 零部件 pro 有序 不協調 color put and

一、軟件

1、軟件概念

在學習軟件工程這門課的時候,對於軟件的概念還局限於軟件=程序,程序就是軟件,軟件就是程序。

但是在這學期學習了軟件工程這門課程後我知道了軟件=程序+軟件工程,軟件不只是有程序組成的還有軟件工程,這才是軟件的組成結構。

軟件的開發和發展是需要很多的條件的,像前期的策劃(需求分析、市場價值等)、後期的改進和營銷等。這些都是決定一個軟件的發展必要條件。

2、軟件開發有四個階段

1、玩具階段

2、業余愛好者階段

3、探索階段

4、成熟的產業階段

3、軟件的特殊性:

1、復雜性

2、不可見性

3、易變性

4、服從性

5、非連續性

就像書中將軟件比喻成飛機,飛機的零部件有可能因為結構不協調或者某些方面造成飛機故障,然後修修補補就飛行了,可能運行的一些時間還會出現這種情況。這就是和軟件一樣,如果前期沒有把程序的結構什麽的搞清楚,那麽也是會出現一系列的問題。這是我們就需要軟件工程了。

二、軟件工程

1、軟件工程概念

軟件工程這個概念是在1968年提出來的。

那麽軟件工程又是什麽?軟件工程是把系統的、有序的、可量化的方法應用到軟件的開發、運營和維護上的過程。

軟件工程包括以下領域:軟件需求分析、軟件設計、軟件構建、軟件測試和軟件維護。當然軟件工程在各個學科上也是有很大的作用的。

我們在開發、運營、維護軟件的過程中有很多技術、做法、習慣和思想體系。軟件工程把這些相關的技術和過程統一到一個體系,叫“軟件開發流程”。但是光有體系還不夠我們還需要保證這些思想在實踐上能運用那麽我們就用到了一些工具。工具有很多例如:編譯工具、代碼管理工具、Microsoft visual studio、GitHub、eclipse等。

2、軟件工程的知識領域

軟件工程這個學科到底包含了什麽樣的知識,這些知識又是在什麽基礎上建立的。2014年IEEE發布了SWEBOK V3.0,完整的回答了這個問題,下面提到了15個知識領域:

1、Software Requirements

2、software design

3、software construction

4、software testing

5、software maintenance

6、software configuration management

7、software engineering process

8、software engineering management

9、software engineering models and methods

10、software quality

11、software engineering professional practice

12、software engineering economics

13、computing foundations

14、mathematical foundations

15、engineering foundations

上面15個知識領域中,1-12描述了軟件工程學科本身的知識領域;13-15描述了軟件工程的三大類基礎知識領域:計算基礎、數學基礎和工程基礎。

3、軟件工程的目標

軟件工程的目標是:創造“足夠好”的軟件。

那麽“足夠好“的定義是什麽?是沒有缺陷的軟件嗎?如果能做到沒有缺陷是最好的,但是開發軟件確實受很多限制像時間、成本等很多方面決定的。

但是我們要做一個接近於完美的軟件,那麽怎麽衡量一個軟件呢?這需要參考軟件的開發效率、用戶滿意度、可靠性和維護性。

上面這些是我在讀《現代軟件工程——構建之法》這本書中對什麽是軟件?什麽是軟件工程?的一個概括和理解。


在速讀本書過程中想提出幾個問題,希望在今後的學習中自己能找到答案並能夠解答。

1、軟件工程師的發展需求?怎麽才能成為一名合格的軟件工程師?在職業發展中需要鍛煉什麽樣的技能和發展空間是怎麽樣的?

2、團隊合作和非團隊合作之間的區別和需要註意的地方有什麽?

3、怎麽才能用最好的方法來設計和實現軟件?

4、軟件測試中哪種測試方法和工具最好?

5、怎麽樣才能保持創新思維?


以上想法和總結大部分均來自《現代軟件工程——構建之法》第三版

初識《現代軟件工程——構建之法》