文档介绍:第一章软件工程概述
一、复习要求
1. 了解软件概念、特点及分类方法。
2. 了解软件发展及软件危机的起因。
3. 了解软件工程过程及软件生存期的概念。
4. 了解软件工程的概念及其要素。
5. 了解软件工程的基本目标和原则。
二、内容提要
1. 软件的概念、特点
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。
软件的特点是:
(1) 软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。
(2) 软件的生产与硬件不同,它没有明显的制造过程。对软件的质量控制,必须着重在软件开发方面下功夫。
(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。任何机械、电子设备在运行和使用中,(a)所示的U型曲线(即浴盆曲线)。而软件的情况与此不同,因为它不存在磨损和老化问题。然而它存在退化问题,必须要多次修改(维护)软件,(b)所示。
失效率曲线
(4) 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5) 软件的开发至今尚未完全摆脱手工艺的开发方式。
(6) 软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7) 软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8) 相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心理。它直接影响到项目的成败。
(1) 按软件的功能进行划分:
·系统软件: 能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。例如,操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。
·支撑软件: 是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。
·应用软件: 是在特定领域内开发,为特定目的服务的一类软件。
(2) 按软件规模进行划分:
按开发软件所需的人力、时间以及完成的源程序行数,可确定六种不同规模的软件。
类别
参加人员数
研制期限
产品规模(源程序行数)
微型
1
1~4周
小型
1
1~6月
1k~2k
中型
2~5
1~2年
5k~50k
大型
5~20
2~3年
50k~100k
甚大型
100~1000
4~5年
1M(=1000k)
极大型
2000~5000
5~10年
1M~10M
规模大、时间长、很多人参加的软件项目,其开发工作必须要有软件工程的知识做指导。而规模小、时间短、参加人员少的软件项目也得有软件工程概念,遵循一定的开发规范。其基本原则是一样的,只是对软件工程技术依赖的程度不同而已。
(3) 按软件工作方式划分:
·实时处理软件: 指在事件或数据产生时,立即予以处