软件
什么是软件?
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整的集合。
- 程序是按事先设计的功能和性能要求执行的指令序列
- 数据是使程序能正常操纵信息的数据结构
- 文档是与程序开发,维护和使用有关的图文材料
软件的特点
- 软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
- 软件的开发至今尚未完全摆脱手工艺的开发方式。
- 软件本身是复杂的
实际问题的复杂性
程序逻辑的复杂性 - 软件成本相当昂贵
- 相当多的软件工作涉及到社会因素
软件分类
- 功能:系统软件,支撑软件,应用软件
- 规模:微型,小型,中型,大型,甚大型,极大型。
- 工作方式:实时处理软件,分时软件,交互式软件,批处理软件
- 服务对象:项目软件,产品软件
- 使用频度:一次使用,频繁使用
- 失效的影响:高可靠性软件,一般可靠性软件
软件发展阶段
- 程序设计阶段(硬件限制)——50至60年代
- 程序系统阶段——60至70年代
- 软件工程阶段——70年代以后
软件工程
软件工程的定义
运用现代科学技术知识来设计并构造计算机程序及开发、运行和维护这些程序所必需的相关文件资料。
软件工程三要素
- 软件工程方法为软件开发提供了“如何做”的技术
- 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境
- 软件工程过程定义了:
方法使用的顺序
要求交付的文档资料
为保证质量和适应变化所需要的管理
软件开发各个阶段完成的里程碑
软件工程的项目的基本目标
- 付出较低的开发成本
- 达到要求的软件功能
- 取得较好的软件性能
- 开发的软件易于移植
- 需要较低的维护费用
- 能按时完成开发工作,及时交付使用
软件危机
定义
软件危机指的是软件开发和维护过程中遇到的一系列严重的问题
产生原因
- 软件本身:逻辑部件,难检验,难评价
- 开发管理人员:轻视维护
- 管理技术:没有统一的软件质量管理规范
表现
- 产品不符合用户的实际需要
- 软件开发速度不满足需要
- 软件产品的质量差
- 对软件开发成本和进度的估计常常不准确
- 软件的可维护性差
- 软件文档资料通常既不完整也不合格
- 软件的价格昂贵
解决方法(软件工程的7条原理)
- 用分阶段的生存周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚的审查
- 合理安排软件开发小组的人