当前位置:文档之家› 软件工程与项目管理 (1)

软件工程与项目管理 (1)


第1章 概 述
1.2.2 软件工程的三要素 软件工程以关注软件质量为目标,由方法、工具和过
程三个要素构成,如图1.3所示。 软件工程方法为软件开发提供了“如何做”的技术,涉及
软件工程的多个方面,如项目计划与估算、软件系统需求分析、 数据结构、系统总体结构的设计、算法过程的设计、编码、测 试以及维护等。
无需支付许可 证费用便可得到 和使用的软件 ,发行渠道类 似 于共享软件
没有版权,任何人 均可以使用而 且可以获得源 代码的软件
第1章 概 述
(1) 实时软件
3
按工作方 式分类
(2) 分时软件
(3) 交互式软件
(4) 批处理软件
(1) 定制软件
按销售方
4
式分类 (2) 产品软件
用于及时处理 实时发生的事件 的软件,如控 制、订票系 统等
第1章 概 述
软件并不是一种有形的产品,因此也就不存在所谓的“磨 损”问题。理想情况下,软件的故障曲线应该是图1.2中所示 的理想曲线。在软件的运行初期,未知的错误使得程序有较高 的故障率,当修正了这些错误而且未引入新的错误时,软件将 进入一种比较理想的平稳运行期。这说明软件是不会“磨损” 的。但在实际情况中,软件尽管不会“磨损”,但会退化,如 图1.2中的实际曲线那样。这是因为软件在其生命周期中会经 历多次修改,每次修改都会引入新的错误,而对这些错误又要 进行新的修改,使得软件的故障曲线呈现一种锯齿形,导致最 后的故障率慢慢升高,即软件产生了退化,而这种退化缘于修 改。
(3) 缺乏有力的方法学和工具方面的支持,过分依靠程序 设计人员的技巧和创造性。重编程,轻需求分析;重开发,轻 维护;重程序,轻文档。这样做的后果就是在软件系统中“埋 藏”了许多故障隐患,直接危害着系统的可靠性和稳定性。
第1章 概 述
1.1.5 解决软件危机的途径 分析了造成软件危机的原因后,人们开始探索用工程的方
软件工程工具为软件工程方法提供了自动的或半自动的软 件支撑环境。目前,已经推出了许多软件工程工具,这些软件 工程工具集成起来,建立起了称之为计算机辅助软件工程 (Computer Aided Software Engineering,CASE)的软件开发 支撑系统。CASE将各种软件工程工具、开发机器和一个存放开 发过程信息的工程数据库组合起来,形成一个软件工程 环境。
第1章 概 述
图1.1 硬件故障率曲线
第1章 概 述
图1.2 软件故障率曲线
第1章 概 述
(4) 绝大多数软件都是定制的且是手工编写的。在硬件制 造业,构件的复用是非常自然的。理想情况下,软件构件应该 能够被复用于不同的程序。但由于软件本身的特殊性,软件构 件复用才刚刚起步。尽管今天的面向对象技术、构件技术已经 使软件的复用逐渐成为流行,但这种复用还不能做到像硬件产 品那样拿来即用,还需要进行必要的定制(构件之间的组合、 接口的设计、功能的修改与扩充等),而且软件开发中构件的 使用比例也是有限的。整个软件产品的设计基本上还依赖于人 们的智力与手工劳动。
决定 质量 的因 素
开发 技术 和手 段
个人编程技术
小组技 术水平
子程序 程序库
结构化 程序设计
管理水平
数据库、开发工具、开发环 境、工程 化开发方法、标准和 规范、网 络及分布式开 发、面 向对象技术
维护责任 者 硬件特征
程序设计者
开发小 组
专职维护 人员
价格高
价 格降 低 ,速 度 、容
存储容量 小
第1章 概 述
(5) 开发过程的复杂与昂贵的费用。现代软件的体系结构 越来越复杂,规模越来越庞大,所涉及的学科也越来越多,导 致了软件的开发过程也异常复杂。靠一个人单枪匹马开发一套 软件的时代已经一去不复返了,而是需要一个分工明确、层次 合理、组织严密的团队才能完成。这样,软件的开发成本也会 越来越昂贵。
第1章 概 述
1.1.4 软件危机产生的主要原因 随着社会对计算机应用需求的增长,软件系统的规模越来
越庞大,开发难度和成本越来越高,软件需求量剧增,软件质 量没有可靠的保证,软件开发的生产率低。这些因素构成了软 件生产的恶性循环。软件生产的复杂性和高成本,使大型软件 的生产出现了很大的困难,由此出现了“软件危机”,其具体 表现如下:
第1章 概 述
2.软件的分类 软件的应用非常广泛,几乎渗透到各行各业。因此要给出 一个科学的、统一的、严格的计算机软件分类标准是不现实也 是不可能的,但可以从不同的角度对软件进行适当的分类。常 用的软件分类方法及典型应用如表1.1所示。
第1章 概 述
分类 序号
1
2
分类方法
按功能 分类
按版权 分类
第1章 概 述
● 在运行中能提供所希望的功能与性能的程序; ● 使程序能够正确运行的数据及其结构; ● 描述软件研制过程和方法的文档。
第1章 概 述
1.软件的特点 从广义来说,软件与硬件一样,也是产品,但两者之间是 有差别的,了解并理解这种差别,对理解软件工程是非常重要 的。软件的特点包括以下几点: (1) 软件角色的双重性。软件作为一种产品具有双重性: 一方面它是一个产品,利用它来表现计算机硬件的计算潜能, 无论它是在主机中还是驻留在设备(如手机)中,软件就是一个 信息转换器,可以产生、管理、获取、修改、显示或传送信息; 另一方面它又是产品交付使用的载体,它可以控制计算机(如 操作系统),可以实现计算机之间的通信,又可以创建其他程 序与控制。
法进行软件生产的可能性,即用软件工程的概念、原理、技术 和方法进行软件的开发、管理、维护和更新。于是,计算机科 学的一个新领域——“软件工程”诞生了。
第1章 概 述
1.2 软 件 工 程
1.2.1 软件工程的概念 通俗地说,软件工程即借用传统工程设计的基本思想,采
用工程化的概念、原理、技术和方法来开发与维护软件,突出 软件生产的科学方法,把经过时间考验而证明正确的管理技术 与当前能够得到的最好的技术和方法结合起来,降低开发成本, 缩短研制周期,提高软件的可靠性和生产效率。软件工程是指 导计算机软件开发和维护的工程学科。
多个联机用户 同时使用计算机 的软件 能够实现人机 通信的软件 将多个作业或 多批数据一次运 行、顺序处理 的软件 受某个特定客 户委托,在合同 的约束下开发 的软件
由软件开发机 构开发,可以为众 多用户服务并 直接提供给 市 场的软件
第1章 概 述
1.1.2 软件的发展 自20世纪40年代出现了世界上第一台计算机以后,就有了
第1章 概 述
第1章 概 述
1.1 软件 1.2 软件工程 1.3 软件生命周期 1.4 软件工程的目标 1.5 软件工程的开发原则 1.6 软件工程方法学 1.7 计算机辅助软件工程 1.8 软件工程与其他相关学科的关系 1.9 软件工程职业道德规范 1.10软件工程发展趋势 1.11实战训练
第1章 概 述
第1章 概 述
经过40多年的发展,软件的工程化生产已成为软件产业。 软件已成为产品,它涉及产值、市场、版权和法律保护等方面 的问题。
软件工程是一门交叉学科,需要用管理学的原理和方法来 进行软件生产管理,用工程学的观点来进行费用估算,制定进 度和实施方案,用数学方法来建立软件可靠性模型并分析各种 算法。
程序的概念,可以认为它是软件的前身。经过了几十年的发展, 人们对软件有了更深刻的认识。在这几十年中,计算机软件经 历了程序设计、程序系统和软件工程三个发展时期。
表1.2列出了三个发展时期主要特征的对比,由此可以看 出几十年来软件最根本的变化。
第1章 概 述
特点
软件所指 对象
主要 程序 设计 语言
软件工作 范围 需求者 开发 软件 的组 织
程序编写 程序设计者本 人
包括设计和测 试 少数用户
软 件生存期 市 场用户
个人
开发小组
开 发 小组 及大 中型 软件 开发 机构
第1章 概 述
续表
特点 软件规模
程序设计 (20世纪
50~ 60年代) 小型
程序 系统 (20世纪 60~ 70年代) 中小型
软件工程 (20世纪 70年代以
后) 大中小型
(1) 开发人员和用户之间的矛盾。用户在开发初期,由于 各种原因往往不能准确地提出需求描述;开发人员在还没有准 确、完整地了解用户的实际需求后就急于编程。
第1章 概 述
(2) 大型软件项目需要组织一定的人力共同完成,多数管 理人员缺乏开发大型软件系统的经验;多数软件开发人员缺乏 协同方面的经验;软件项目开发人员不能有效地、独立自主地 处理大型软件的全部关系和各个分支,因此容易产生疏漏和错 误。
第1章 概 述 图1.3 软件工程三要素
第1章 概 述
软件工程过程将软件工程的方法和工具综合起来,以达到 合理、及时地进行计算机软件开发的目的。过程定义了方法使 用的顺序、要求交付的文档资料、为保证质量和协调变化所需 要的管理及软件开发各个阶段完成的里程碑。
第1章 概 述
列严重问题。 软件危机主要表现在以下方面: (1) 软件开发进度难以预测; (2) 软件开发成本难以控制; (3) 用户对软件产品的功能要求难以满足; (4) 软件产品的质量无法保证,系统中的错误难以消除; (5) 软件产品难以维护; (6) 软件缺少适当的文档资料; (7) 软件开发的速度难以满足社会需求的增长。
1.1 软 件
1.1.1 软件的特点及分类 软件的定义是随着计算机技术的发展而逐步完善的。在20
世纪50年代,人们认为软件就等于程序;60年代人们认识到软 件的开发文档在软件中的作用,提出软件等于程序加文档,但 这里的文档仅是指软件开发过程中所涉及的分析、设计、实现、 测试、维护等方面的文档,不包括管理文档;到了70年代人们 又给软件的定义中加入了数据。因此,软件是计算机系统中与 硬件相互依存的一部分,它包括:
相关主题