什么是软件?
计算机系统中与硬件相互依存的另一部分,包括程序,数据及其相关文档的完整性
什么是程序?
按事先设计的功能和性能要求的代码指令
什么是数据?
使程序能正常操纵信息的数据结构
软件的特点?
1.是一种逻辑实体,不是具体的物理实体(抽象性)
2.在开发过程中没有明显的制造过程(开发阶段就是制造过程)
3.运行和使用期间,没有老化磨损
4.开发中需要依赖或者是受到硬件的限制
5.至今尚未完全摆脱手工艺开发的方式
6.本身复杂
实际问题的复杂性
程序逻辑结构的复杂性
7.成本昂贵(相对于硬件)
8.涉及到社会因素(版权问题)
软件的分类
按功能划分:
1.系统软件:操作系统、数据库管理系统、设备驱动程序、通讯处理程序等
2.支撑软件:文本编辑程序、文件格式化程序、程序库系统等
3.应用软件:商业数据处理软件、工程和科学计算软件、CAB、系统仿真软件、CAI等
按规模划分
按工作方式划分
1.实时处理软件:在事件或数据发生的时候,必须及时处理,反馈信号
2.分时软件:把时间轮流分给用户
3.交互软件
4.批处理软件:把一组输入的程序或数据,按照一定的顺序排好队,计算机按顺序来运行
按服务对象划分
1.项目软件:接受某个特定客户的委托,由一个或多个软件开发机构,在合同的约束下开发的软件,一般来讲是以特殊需求为主,不以盈利为目的
2.产品软件:有软件机构开发,然后推送到市场,为用户服务的软件,以盈利为目的
按使用的频度进行划分:
1.一次使用(如人口普查)
2.频繁使用(如天气预报)
按软件失效的影响划分
1.高可靠性软件:要害的部门或者重要的机关
2.一般可靠性软件:一般的场合
软件的发展阶段
1.程序设计阶段:50-60年代
2.程序系统阶段:60-70年代
3.软件工程阶段:70年代以后
软件工程过程
1.软件规格说明:规定的功能和运行的限制(计划)
2.软件开发:产生满足规格说明的软件
3.软件确认:提交的软件能完成用户的需求
软件工程过程的特性
1.易理解性
2.可见性
3.可支持性
4.可接受性
5.可靠性
6.健壮性
7.可维护性
8.速度
软件的生存期
开发-运营-不再使用(孕育、诞生、成长、成熟、衰亡的过程)的过程即为计算机软件的生存期
制定计划
1.确定总目标
2.给出功能、性能、可靠性等要求(很重要)
3.完成该软件任务的可行性研究(技术、经济、法律、操作四个方面)
4.需求分析和定义(文档和表格,编写软件说明书)
软件设计
1.概要设计:把需求转换成体系结构,每个需求都需定义一个明确的模块
2.详细设计:确定每个模块里面的数据结构,模块与模块之间的接口等
软件测试
1.静态测试:在未上机的情况下可以人工查阅
2.动态测试:可以上机调试,通过实例看看是否正确
3.单元测试:一般来说由开发者完成
4.组装测试(集成测试):将已测试过的模块组合起来测试(检查模块之间的接口)
测试过程中没有错误不代表没有错误,只代表你没有发现错误