什么是软件
1、软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据以及其相关文档的完整集合
2、按事先设计的功能和性能要求执行的指令序列
3、数据是使程序能正常操纵信息的数据结构
软件的特点
1是一种逻辑实体,不是具体的物理实体,所以具有抽象性
2在运行和使用过程中,没有硬件那样的机械磨损和老化问题
3一般情况下会受到计算机系统的限制,有着不同程度的依赖性
软件的分类
系统软件
- 操作系统
- 通信处理程序
- 设备驱动程序
- 数据库管理系统
服务对象
- 项目软件
- 只接受某个客户的委托,开发机构在合同的约束下开发软件
- 产品软件
- 开发完一个产品直接推向市场,为众多的用户使用的软件
使用频度
- 一次
- 针对某一个问题
- 频繁
- 形成一个产品
失效影响
- 高可靠性
- 重要部门
- 一般可靠性
- 项目软件
软件工程过程
规格说明P(plan): 根据用户的需求按照计算机的术语描述出来
软件开发D(do): 设计、调试
软件确认C(check): 用户使用
软件演进A(advancement):维护
特点:易理解性、可见性、可支持性、可接受性、可靠性、健壮性、可维护性、速度
软件的生存期
特别注意:这个软件被废弃不是说不能用了,而是说它被新的软件所代替了
软件分析
可行性分析
需求分析
软件需求说明书
软件设计
- 概要设计——把各项需求转换成软件的体系结构
- 详细设计——某块与某块之间的数据结构
软件测试
- 单元测试
- 查找各模块在功能和结构上存在的问题并加以纠正
- 组装测试
- 将已测试过的模块按一定顺序组装起来
生命周期模型
<瀑布型>
1、思想
从制作时间上按工序把问题化简,将功能实现与制作分开便于分工协作
2、优点
奠定了软件工程方法的基础
流水依赖,便于分工协作
推迟物理实现,易于修改文档,有复审质量保证
3、不足
与用户见面晚,成功率低,一般为25%
4、适用范围
适用与系统要求明确的系统和各种应用软件的开发均可使用
<快速原型模型>(Rapid Prototyping Model)
<渐增模型>(Incremental Model)
1、思想
允许从部分需求出发,先建立一个不全面的系统通过测试这个系统,进一步使系统扩充和完善
2、优点
问题可以很好的并且立即修改,很好的满足用户的需求
3、使用范围
适用与那些知识型软件系统的开发
4、特点
从整体结构上不如瀑布型清晰,软件的文档也不如瀑布型划分严格
周期长,成本高,与用户见面快,开发效率高
<螺旋模型>
四部分组成:制定计划、风险分析、实施工程、客户评估
<喷泉模型>
软件工程的定义
Boehm:运用现代科学技术知识来设计并构成计算机程序及为开发、运行和维护这些程序所必需的相关文件资料
IEEE:软件工程是开发、运行、维护和修复软件的系统方法
软件工程三要素
方法、工具、过程
软件工程的基本目标
较低的开发成本、达到要求的软件功能、取得较好的软件性能、开发的软件易于移植
需要较低的维护费用、可以按时完成开发工作,及时交付使用
软件工程的原理
分解、独立性、一致性、确定性