第1章概论
1.1 软件 = 程序+ 软件工程
程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。
1.1.1 软件开发的不同阶段
1.玩具阶段
2.业余爱好阶段
3.探索阶段
4.成熟的产业阶段
1.2软件工程是什么
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
1.2.1 软件的特殊性
1.复杂性
2.不可见性
3.易变性
软件看上去很容易修改。但是,正确地修改软件是一件很困难的事。
4.服从性
5.非连续性
1.2.2 软件工程与计算机科学的关系
计算机和软件工程的不同侧重点
计算机科学 |
软件工程 |
发现和研究长期的、客观的真理 |
短期的实际结果(具体的软件会过时) |
理想化的 |
对各种因素的折衷 |
确定性,完美,通用性 |
对不确定性和风险的管理,足够好,具体的应用 |
各个学科独立深入研究,作出成果 |
关注和应用各个相关学科的知识,解决问题 |
理论的统一 |
百花齐放的实践方法 |
强调原创性 |
最好的、成熟的实践方法 |
形式化、追求简明的公式 |
在实践中建立起来的灵感和直觉 |
正确性 |
可靠性 |
1.2.4 软件工程的目标——创造“足够好”的软件1. 研发出合乎用户需求的软件
2. 通过一定的软件流程,在预计的时间内发布“足够好”的软件
3. 并通过数据和其他方式展现所开发的软件是可以维护和继续发展的