首页 > 代码库 > 《构建之法》学习(1)——软件与软件工程

《构建之法》学习(1)——软件与软件工程

《构建之法》学习(1)——软件与软件工程

 

1. 软件=程序+软件工程

 

  从一个小故事引入,点出了软件工程的核心部分:构建管理、源代码管理、软件设计、软件测试、项目管理。以及它的推论:

  软件=程序+软件工程

  软件企业=软件+商业模式

 

  在我们学习了数据结构和算法之后,就有了程序。在程序之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户的利益。

 

2. 软件工程是什么

 

  以航空产业与软件产业类比,软件开发分为玩具阶段、业余爱好阶段、探索阶段、成熟的产业阶段

 

2.1软件

 

  软件是可以运行在计算机及电子设备中的指令和数据的有序集合。

  软件具有其特殊性:复杂性、不可见性、易变性、服从性、非连续性

 

  软件的特性:

  有许多不同的程序设计语言、软件工具和软件开发平台

  存在许多不同的软件开发流程

  软件团队中存在许多不同的角色

  软件通常既可以存储在磁带上,也可以存储在CD/DVD上

 

  软件可以说是人类创造的最复杂的系统类型,看上去很容易修改,修改软件比修改硬件容易多了,但是正确地修改软件是一件很困难的事情。

 

2.2软件工程

        

  软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

  以开篇的故事为例,我们之前学习过c、c++、JAVA,实现某个基础算法可能很简单,但是软件工程不仅仅是编写代码,在“软件”的基础上有软件需求分析、软件构建、软件测试和软件维护

 

3. 软件工程与计算机科学的关系

 

  软件工程与许多学科都相关,例如:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户界面设计。

 

  计算机科学:                                                               软件工程:

  发现和研究长期的、客观的真理                                       短期的实际结果(具体的软件会过时)

  理想化的                                                                     对各种因素的折衷

  确定性,完美,通用性                                                   对不确定性和风险的管理,足够好,具体的应用

  各个学科独立深入研究,做出成果                                    关注和应用各个相关学科的知识,解决文体

  理论的统一                                                                  百花齐放的实践方法 

  强调原创性                                                                  最好的、成熟的实践方法 

  形式化,追求简明的公式                                                在实践中建立起来的灵感和直觉      

  正确性                                                                        可靠性

  

4. 软件工程的目标

 

  研发出符合用户需求的软件

  创造“足够好”的软件

  展现所开发的软件是可以维护和继续发展的

 

《构建之法》学习(1)——软件与软件工程