第一章:概论
开发过程:
一个简单的程序一个满足各种功能的应用软件一个能保证维修的软件服务。
软件=程序+软件工程
软件企业=软件+商业模式
软件开发的不同阶段:玩具阶段(纸飞机)业余爱好阶段(氢气球)探索阶段(实验飞机)成熟的产业阶段(民用飞机、航空业)
写程序练习数据结构/算法用Javascript、ASP.NET、Ruby写网站钻研新技术、应用新技术创新银行软件系统,搜索引擎,操作系统
软件的特殊性:
- 复杂性Complexity 。代码、文件量巨大,模块之间有各种隐性或显性的依赖关系(且随程序规模的增长指数式增长),而软件工程师的阅读能力并不异于常人。
- 不可见性 Invisibility。 工程师无法知道程序即源代码是如何在具体的机器上运行的。即使商业软件在出错时会留下痕迹(错误代码,大致目标代码位置,错误信息),但无法完整重现。
- 易变性
- 服从性
- 非连续性
初步掌握软件工程的要求:
- 研发符合用户需求的软件。
- 通过一定的软件流程在预计的时间内发布足够好的软件。
- 并通过数据和其他方式展现所开发的软件是可以维护和继续发展的。