软件的定义
软件=程序+数据+文档+服务
软件的特点
1.软件是一种逻辑实体,而不是具体的物理实体
2.软件的生产于硬件不同
3.在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题
4.软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖
5.软件的开发至今尚未完全摆脱手工业的开发方法
6.软件是复杂的,人类能够创造的最复杂的产物是计算机软件
7.软件成本相当昂贵
8.相当多的软件工作涉及到社会因素
软件开发方法的模型
软件危机定义
定义:软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题
主要包含两方面的问题:
1.如何开发软件,怎样满足对软件日益增长的需求
2.如何维护数量不断膨胀的已有软件
软件危机的主观原因
不正确的开发方法,软件开发和维护有许多错误的认识和作法。
口忽视需求分析
口软件开发=程序编写
口轻视软件维护
什么是软件工程
工程方法+管理技术+技术方法
软件工程的三要素
方法 、工具和过程
1.软件工程方法为软件开发提供了“如何做” 的技术
2.软件工具为软件工程方法提供了自动的或半自动的软件支撑环境
3.软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的
软件工程的基本原理
- 按软件生存期分阶段制定计划并认真实施
- 坚持进行阶段评审
- 坚持严格的产品控制
- 使用现代程序设计技术
- 明确责任,使得工作结果能够得到清楚的审查
- 用人少而精
- 不断改进开发过程
软件工程框架
软件工程过程
定义:软件工程过程是为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动
ISO9000定义:把输入转化为输出的一组彼此相关的资源和活动
包括软件规格说明,软件开发,软件确认,软件演讲
软件工程过程特性
- 易理解性
- 可见性
- 可支持性
- 可接受性
- 可靠性
- 健壮性
- 可维护性
- 速度
软件开发周期
定义:软件产品从考虑其概念开始到该软件产品不再能使用为止的整个时期。
三个阶段:即定义阶段、开发阶段和运行维护阶段,每个阶段需完成几个任务。
软件开发周期各阶段任务
模型
软件工程的范型
过程性范型
面向对象范型
逻辑性范型
面向进程范型
面向存取范型
函数型范型
说明性范型
软件工程的原则(重点)
抽象与自顶向下、逐层细化
模块化
信息隐蔽和数据封装
局部化
一致性
完备性
可验证性