1.0 简述软件工程的历史
- 软件工程作为一门独立的学科,其发展已逾五十年。
- 20世纪60年代,由于高级语言的流行,使得计算机的应用范围得到了较大扩展,对软件系统的需求急剧上升,软件的规模急剧增长,从而出现了所谓的“软件危机”。
- 软件开发从质量、效率等方面均远远不能满足需求。
- 20世纪60年代末,如何克服“软件危机”,为软件开发提供高质、高效的技术支持,收到人们的高度关注。
- 1968年,在NATO会议上首次提出了“软件工程”这一概念,从而使软件开发开始了从“艺术”“技巧”和“个体行为”向“工程化”和“群体协同工作”转化的历程。
- 多年来,软件工程的研究和实践取得了长足的发展,虽然与彻底解决“软件危机”尚有较大差距,但对软件开发的工程化以及软件产业的发展起到了积极的推动作用,提供了良好的技术支持。
1.1.1 软件的定义
- 软件是计算机系统中与硬件相互依存的另一部分。
- 软件是包括程序、数据以及其相关文档的完整集合。
- 程序:是按实现设计的功能和性能要求执行的指令序列
- 数据:为进行同行、解释和处理而使用的信息的形式化表现形式
- 文档:是与程序开发、维护和使用相关的图文材料
1.1.2 软件的特征
软件是整个计算机系统中的一个逻辑部件,而硬件是一个物理部件。
软件具有硬件完全不同的特性:
- 软件是一种逻辑实体,不是具体的物理实体。
软件具有抽象性,可以存储在存储介质中,但却无法看到软件本身的形态,必须经过观察、分析、思考和判断去了解它的功能、性能以及其他特性。 - 软件和硬件的生产方式不同。
- 在软件的开发过程中,没有明显的制造过程
- 也不像硬件那样,一旦研制成功就可以重复制造,可以在制造过程中进行质量控制以保证产品的质量
- 软件是通过人们的智力活动把知识与技术转化为信息的一种产品。
- 一旦某一软件项目研制成功,以后就可以大量地复制同一内容的副本,应用到更多的地方。
- 软件与硬件的维护方式不同。
- 一方面来自它所反映的实际问题的复杂性
- 另一方面也来自程序结构的复杂性
- 许多软件的开发和运行涉及到机构、体制及管理方式等问题,甚至涉及人的观念和人们的心里,它直接影响到项目的成败
1.1.3 软件的分类
1.按软件的功能进行划分
- 系统软件:
- 能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。
- 例如:操作系统、数据库管理系统、设备驱动程序以及通信处理程序等
- 支撑软件:
- 是协助用户开发软件的工具性软件
- 其中包括帮助程序人员开发软件产品的工具
- 也包括帮助管理人员控制开发进程的工具
- 是协助用户开发软件的工具性软件
- 应用软件:
- 是在特定领域内开发,为特定目的服务的一类软件
2.按软件规模进行划分
- 按开发软件所需的人力、时间以及完成的源程序行数,可确定6种不同规模的软件。
类别 | 参加人数 | 研制期限 | 产品规模(源程序行数) |
---|---|---|---|
微型 | 1~4 | 10周以下 | 1k |
小型 | 5~20 | 2~10月 | 2k~10k |
中型 | 20~50 | 1~2年 | 10k~100k |
大型 | 50~500 | 2~4年 | 100k~1M |
甚大型 | 500~1000 | 4~6年 | 1M~10M |
极大型 | 1000以上 | 7年以上 | 10M以上 |
- 规模大、时间长、很多人参加的软件项目,其开发工作必须要有软件工程的知识做指导。
- 规模小、时间短、参加人员少的软件项目也要有软件工程的概念,遵循一定的开发规范。
- 任何软件的开发的基本原则是一样的,只是对软件工程技术的以来的程度不同而已。
3.按软件工作方式划分
- 实时处理软件:
- 指在事件或数据产生时,立即予以处理,并及时反馈信 ,控制需要监测和控制的过程软件。
- 主要包括数据采集、分析、输出三部分。
- 分时软件:
- 允许多个联机用户同时使用计算机
- 交互式软件:
- 能实现人机通信的软件
- 批处理软件:
- 把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。
4.按软件服务对象的范围划分
- 项目软件(定制软件):
- 是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。
- 例如,军用防空指挥系统、卫星控制系统。
- 产品软件:
- 是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。
- 例如:文字处理软件、文本处理软件、财务处理软件、人事管理软件等。
5.按使用的频度进行划分
- 有的软件开发出来仅供一次使用。
- 例如:用于人口普查、工业普查的软件。
- 有些软件具有较高的使用频度。
- 例如:天气预 软件。
6.按软件失效的影响进行划分
- 有的软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大。
- 有的软件一旦失效,可能酿成灾难性后果。这类软件被称为关键软件。
- 例如:财务金融、交通通信、航空航天等
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!