1、软件工程的概念
软件 是软件工程的研究对象,也是软件工程的产品形态与客观存在。
工程 是将理论和知识应用于实践的科学,其目的是经济有效地解决实际问题。
2、什么是软件
软件 = 程序 + 数据 + 文档
- 程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能;
- 数据:使得程序能够适当地操作信息的数据结构;
- 文档:描述程序的研制过程、方法和使用的图文资料;
3、软件的本质特性
软件具有复杂性、一致性、可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因。
4、软件开发面临的挑战
- 客户不满意:交付的许多功能不是客户需要的;交付的日期没有保障;客户使用时发现许多Bug
- 项目过程失控:客户需求变化频繁,无力应对;无法预见软件的交付质量;对流程盲目遵从,忽视客户业务价值
- 风险与成本问题:开发团队专注技术,忽视风险;无能力预测成本,导致预算超支
- 无力管理团队:无法评估开发人员的能力及工作进度;困扰于如何提升团队的能力与效率
5、软件开发趋势
1956年—1967年 史前时代
- 软件开发没有方法可寻
- 软件设计是在开发人员头脑中完成的隐藏过程
- 60世纪中期的软件危机
1968年—1982年 瀑布过程模型
- 1968年提出“软件工程”
- 结构化开发方法
- 瀑布式软件生命周期模型成为典型
1983年—1995年 质量标准体系
- 面向对象开发方法
- 软件过程改进运动
- CMM/ISO9000/SPICE等质量标准体系
20世纪90年代至今
- 敏捷开发方法流行
- 更紧密的团队协作
- 有效应对需求变化
- 快速交付高质量软件
- 迭代和增量开发过程