下一页
计算机软件基础
The software basic of computer
主讲:赵英良
第 15单元
软件工程概论
下一页
上一页
停止放映
第 2页
教学内容
? 本讲介绍四个问题:
? 一, 软件工程的基本概念
? 二, 软件生存周期
? 三, 软件工程管理
? 四, 知识产权保护
下一页
上一页
停止放映
第 3页
软件基础大作业须提交的文档
? 技术说明书,(书面)
– 任务书、任务分配、开发计划、需求分析、设计说明、测
试说明、维护说明
? 使用说明书,(书面)
– 安装说明、使用说明
? 个人小结(每个人要写一份,书面):
– 个人承担的任务、完成过程的介绍、遇到的困难和解决办
法、待解决的问题、收获、体会。
以上可装订在一起
? 运行程序 (电子)
? 源程序 (电子)
所有内容,以组为单位压缩为“组长学号,zip”提交
下一页
上一页
停止放映
第 4页
本单元涉及内容
? 概述
– 软件的基本概念
– 软件的发展和软件危机
? 第 9章 软件工程
– 9.1 软件工程
– 9.2 软件生存周期
– 9.3 软件工程管理
下一页
上一页
停止放映
第 5页
一、软件工程的基本概念
? 介绍以下几个问题,
? 1.什么是软件工程
? 2.软件工程的目标
? 3.软件工程的指导思想
? 4.软件工程基本原理
? 5.软件工程应用范围
? 6.传统软件工程模式
? 7.现代软件工程模式
下一页
上一页
停止放映
第 6页
一、软件工程的基本概念
?,软件工程, 一词是 1968年北大西洋公约组
织的计算机科学家在当时联邦德国召开的专
门讨论解决, 软件危机, 的国际会议上正式
提出并使用的, 并由此诞生了一门新兴学
科 ——软件工程学 。
?, 软件工程学, 是一门交叉学科, 它涉及计
算机科学, 管理科学, 工程学和数学 。
? 计算机科学培养的是计算机科学家, 而 软件
工程 则是培养软件工程师 。
下一页
上一页
停止放映
第 7页
1.什么是软件工程
软件工程 IEEE定义,软件工程是以
系统的、规范的、定量的方法应用
于软件的开发、运营和维护,以及
这些方法的研究。
软件工程学,研究软件开发、生产内
在规律的学科。
下一页
上一页
停止放映
第 8页
2.软件工程的目标
? 软件工程的基本目标是:
?开发尽可能多的软件产品;
?提高软件的生产效率;
?满足应用的功能需要;
?降低软件开发成本 。
下一页
上一页
停止放映
第 9页
3.软件工程的指导思想
? 为解决软件危机, 把, 软件, 这种特殊商品的生
产, 管理过程纳入传统工程管理的轨道;
– 用计算机科学 中的最新成果应用于软件工程中
– 用管理学 的原理和方法进行软件生产管理
– 用工程学 的观点进行核算, 制定工程进度和实
施方案
– 用数学 方法建立软件的可靠模型和各种有效算

– 采用科学的方法进行软件的开发和管理
下一页
上一页
停止放映
第 10页
4.软件工程基本原理
? 自 1968年提出, 软件工程, 的概念以来,
专家学者又陆续突出了 100多条关于软件
工程的准则。
? 著名软件工程专家 B.W.Boehm于 1983年发
表的一篇论文中提出了软件工程的七条基
本原理。他认为这 七条原理是确保软件产
品质量和开发效率的 最小准则集合 。
下一页
上一页
停止放映
第 11页
软件工程七条基本原理
– (1)用 分阶段 的生命周期计划严格管理
– (2)坚持进行 阶段评审
– (3)实行严格的 产品控制
– (4)采用 现代程序设计技术
– (5)结果 应能清楚地审查
– (6)开发小组人员 少而精
– (7)承认不断改进 软件工程实践的 必要

计划、评审、控制、新、形、精、学
下一页
上一页
停止放映
第 12页
(1)用分阶段生命周期计划 严格管理
? 在软件的整个生命周期中应该制定并严
格执行 六类计划,项目概要, 项目进度
表, 项目控制, 产品控制, 验证及运行
维护计划 。
? 不同层次的管理人员必须严格按照计划
各尽其职地去管理软件开发与维护工作,
绝不能受客户或上级的影响而擅自背离
预定计划 。
下一页
上一页
停止放映
第 13页
(2)坚持进行阶段评审
? 软件的质量保证工作不能等到编码阶段
结束之后再进行 。 这是因为:
– 大部分错误是在编码之前造成的 ( 根
据 Boehm统计, 设计错误占软件错误
的 63%,编码错误占 37%) 。
– 错误发现与改正得越晚, 所付出的代
价也越高 。
因此, 在每个阶段进行严格的评审, 尽
早发现并修正各个阶段中所犯的错误是
一条必须遵循的重要原则 。
下一页
上一页
停止放映
第 14页
示意图关于阶段评审作用
评审时间越晚,代价越高
下一页
上一页
停止放映
第 15页
(3)实行严格的产品控制
? 在软件开发过程中 不应随意改变需求 ( 改
变一项需求往往要付出很高的代价 ), 但
不能禁止更改需求 。 当必须修改时, 为了
保持软件各配置成分的一致性, 必须实行
严格的产品控制 ( 主要是实行基准配置管
理 ) 。
? 一切有关修改软件的建议 ( 特别是涉及到
对基准配置的修改建议 ) 都必须按照严格
的规程进行评审, 获准后才能实施修改 ) 。
? 绝对不能谁想修改就随意进行修改的行为 。
下一页
上一页
停止放映
第 16页
(4)采用现代程序设计技术
? 以前的 结构化程序设计 技术, 如今的 面
向对象程序设计 技术都被实践证明是各
个不同历史阶段的优秀程序设计技术和
方法 。
? 采用 先进的技术既可以提高软件开发的
效率, 又可以提高软件维护的效率 。
公公欲善其事,必先利其器
下一页
上一页
停止放映
第 17页
(5)结果应能清楚地审查
? 软件产品是看不见, 摸不着的逻辑产品,
软件开发人员的工作进展情况可见性差 。
为了提高开发过程的可见性, 应根据软
件开发项目中的目标完成期限, 规定开
发组织的责任和产品标准, 使得到的结
果能够清楚的审查 。
下一页
上一页
停止放映
第 18页
(6)开发小组人员少而精
? 开发小组成员的素质应该高,人员不宜
过多。人员素质和数量是影响产品质量
和开发效率的重要因素。
? 素质高的人开发效率比低的人高几倍甚
至几十倍,而错误则明显得少;
? 人数增加,管理难度也增加。
下一页
上一页
停止放映
第 19页
(7)承认不断改进软件工程实践的必要性
? 要积极主动地 采纳新的软件技术,
要 不断总结经验 ;不能自以为是,
固步自封, 唯我独好 。
? 大千世界, 错综复杂, 只有不断学
习, 才能不断进取, 不断进步 。
下一页
上一页
停止放映
第 20页
5.软件工程应用范围
? 个人程序、中小型或一般程序同
开发人员之间的关联较小,应用
SE方法收效甚微。
? 大型程序 要由若干个程序员小组
承担开发,相互关系极其复杂,
因此,必须自始至终坚持 SE方法。
下一页
上一页
停止放映
第 21页
应用程序分类
分类 程序规模 模块数 开发时间 开发人数
极小 500行以下 10~20 1~4周 1人
小 1K~2K行 25~50 1~6月 1人
中 5K~50K行 250~1000 1~2年 2~5人
大 50K~100K行 1000以上 2~3年 5~20人
甚大 1M行 4~5年 100~1000人
极大 1M~10M行 5~10年 2000~5000
下一页
上一页
停止放映
第 22页
6.传统软件工程模式
? 70年代, 计算机技术水平不高, 开发工具少
而且性能差 。 对于大型复杂问题的求解方法
有很大的局限性影响 。
? 软件工程采用的方法,把 软件生存周期 划分
成若干个阶段, 每个阶段的任务相对独立,
而且比较简单, 便于不同人员分工协作, 从
而降低整个软件开发工程的困难程度 。
? 在实现每个阶段的任务时, 采用的是 系统化
的技术方法 —— 结构化分析和结构化设计技
术 。
? 传统软件工程模式的缺点, 强调 了分阶段实
施模块化, 结构化程序设计技术和方法, 而
忽视 了人在软件开发过程中的地位和作用 。
下一页
上一页
停止放映
第 23页
7.现代软件工程模式
? 现代软件工程是在传统软件工程模式的基础上, 为了
强调人在系统开发中的作用, 同时为了适应软件新技
术的发展趋势而提出的 。 其基本要点是:
1,以人为主, 充分利用软件开发方法及软件开发工具;
2,开发人员的 组织管理 对软件开发成功与否至关重要 ;
3,基于软件组件的软件开发技术 。 各种功能的可重用软
件组件不断问世 。 这使得在软件开发过程中编程工作
量日趋减少, 取而代之的是在设计好系统体系结构后,
利用软件组件构造或重构软件系统 。
4,由于软件组件是 标准化设计, 成品化生产 的, 极易构
造使用, 从而大大简化了设计, 编程, 测试各个环节
的工作量, 提高了工作效率和生产效率 。
? 由于在软件开发过程中最大限度地采用软件组件, 使
得软件开发过程变为系统分析, 系统构造, 系统测试
的集成过程 。
下一页
上一页
停止放映
第 24页
现代软件工程模式
阶段的划分及主要任务
1) 系统分析
2) 系统设计
3) 系统测试
4) 软件组件
5) 系统开发人员的组织管理
下一页
上一页
停止放映
第 25页
系统分析
? 系统分析 从系统需求入手, 从用户观点出发建立系
统用户模型 。 用户模型从概念上全方位表达系统需
求及系统与用户的相互关系 。 系统分析在用户模型
的基础上, 建立适应性强的独立于系统实现环境的
逻辑结构 。
? 分析阶段 独立于系统实现环境, 可以保证建立起来
的系统结构具有相对的稳定性, 便于系统维护, 移
植或扩充 。
? 在 系统分析阶段, 系统的逻辑结构应从以下三方面
全面反映系统的功能与性能:
( 1) 信息 。 完整描述系统中所处理的全部信息;
( 2) 行为 。 完全描述系统状态变化所需处理或功能;
( 3) 表示 。 详细描述系统的对外接口与界面 。
下一页
上一页
停止放映
第 26页
系统设计
? 在系统设计阶段, 首先考虑具体的实现环境 。 在设
计时, 可能会对系统结构作一些调整, 但为了保持
系统结构的稳定性, 应尽可能避免由于实现环境的
特定要求而改变系统结构 。
? 设计, 构造系统的软件组件 。 设计软件组件的主要
内容是定义组件的结构, 功能和外部接口, 以及组
件之间的相互关系和通信方式 。 对于复杂的大系统,
还可以根据组件之间关联的紧密程度, 将关联密切
的多个组件形成一个子系统, 子系统之间具有松散
的耦合 。
? 在系统实现阶段, 对于需要开发的软件组件, 选择
采用某种合适的程序设计语言编写相应的源代码程
序, 完成系统实现工作 。
下一页
上一页
停止放映
第 27页
系统测试
? 系统测试包括 单元测试, 集成测
试 和 系统测试 。 就功能而言与传
统软件工程模式中系统测试的功
能相同 。
下一页
上一页
停止放映
第 28页
软件组件
? 在现代软件工程的开发过程中, 软件组件只是一
个辅助或支撑系统构造的一个过程 。
? 软件组件开发主要是开发与维护系统构造过程中
用到的组件 。 将软件组件作为一个单独的过程,
目的是将 组件作为构造软件的, 零部件, 。
? 随着软件技术的不断发展及软件工程的不断完善,
软件组件将会作为一种独立的软件产品出现在市
场上, 供应用开发人员在构造应用系统时选用 。
下一页
上一页
停止放映
第 29页
系统开发人员的组织管理
? 现代软件工程不仅包括软件开发方法, 工具和过
程, 更强调人在开发过程中的作用 。 一个复杂的
系统开发过程, 涉及到众多的以人为主的各种开
发活动, 通过这些活动的有机配合与协调才能保
证系统开发的成功 。 因此, 系统开发人员的组织
管理是现代软件工程中的重要方面 。
? 组织管理方法有以下几个要点:
① 明确系统 开发人员与用户 之间的责任与义务;
② 明确各类 开发人员的 主要 工作及责任 ;
③ 制定或选择工程开发 规范 。
下一页
上一页
停止放映
第 30页
二、软件生命周期
? 1.软件生命周期各个阶段任务
? 2.软件生存周期模型 —瀑布模型
? 3.软件生存周期模型 —原型模型
(样品模型)
? 4.软件生存周期模型 —螺旋模型
? 5.其他模型
下一页
上一页
停止放映
第 31页
二、软件生命周期
? 软件生存周期 指从软件的需求分
析、设计、编程、测试、交付用
户使用到版本升级或被自然淘汰
的过程。
? 软件工程的应用模式 也称为软件
生存周期模式。通常也称其为
“瀑布模型,( B.W.Bohem提
出的该模型 )。
下一页
上一页
停止放映
第 32页
⒈ 软件生命周期各个阶段任务
? 一般分为五个阶段:
? ( 1)需求分析、定义
? ( 2)系统总体设计
? ( 3)系统编程
? ( 4)系统测试
? ( 5)系统维护
? 阶段
下一页
上一页
停止放映
第 33页
⑴ 需求分析、定义
? 任务是,收集、分析、理解、确定用户的要求;
然后把用户的要求精确、完整地描述表达出来。
? 目的,要回答“要解决什么问题?”,
既系统” 做什么?“。
? 分两步骤,
– 可行性研究, 制定软件开发计划
– 进行需求分析
? 阶段结果,
– 可行性报告、软件计划、需求说明书
下一页
上一页
停止放映
第 34页
⑵ 系统总体设计
? 任务是,
– 设计软件系统的模块层次结构
– 模块间逻辑关系、参数
– 每个模块的功能
? 目的,要回答,如何解决该问题?”,
既系统” 怎样做?“。
? 分两步骤,
– 概要设计,解决系统的模块划分、模块的层次
结构及数据库设计。
– 详细设计, 解决每个摸块内部算法和数据结构。
? 阶段结果,
– 系统设计说明书和模块功能说明书 。
下一页
上一页
停止放映
第 35页
⑶ 系统编程
? 任务是,
根据设计说明书中每个模块
的控制流程 编出 相应的 程序 。
? 阶段结果,
软件系统的源程序。
下一页
上一页
停止放映
第 36页
⑷ 系统测试
? 任务是:检查、发现程序中的错误,提高软件的可靠
性。回答:,该系统是否能实现规定的操作?”。
? 分三个阶段,
– 模块测试 测试每个模块的程序是否有错; (单元测试)
– 组装测试 测试模块之间的接口是否正确; (集成测试)
– 确认测试 测试整个软件系统是否满足用户功能、性能要求。
? 测试三大基本技术,
– 逻辑覆盖 (白盒法)
– 边值分析 (黑盒法)
– 等价类划分 (黑盒法)
? 阶段结果,测试报告;说明测试数据的选择,测试对
象、测试结果是否符合预期结果等。
下一页
上一页
停止放映
第 37页
⑸ 系统维护
? 任务是,改正软件系统在使用过程中
发现的隐含错误,扩充在使用过程中
的新的功能要求;
? 目的,维护软件系统的正常运行;
? 阶段结果,软件系统的问题报告和软
件修改报告(记录发现软件错误的情
况以及修改软件的过程)。
下一页
上一页
停止放映
第 38页
⒉ 软件生存周期模型 — 瀑布模型
需求分析 7%
系统设计 6%
软件编程 7%
软件测试 13%
软件维护 67%
用户要求
分析报告
系统设计报告
源程序
测试报告
更改要求
U
A
M A
T
M
M
P
U
T
P U
A
M
P
A 系统分析员
M 项目管理员
P 程序员
T 高级程序员
U 用户
下一页
上一页
停止放映
第 39页
瀑布模型的特点
? ( 1)瀑布模型具有 顺序性 和 依赖性,即
后一阶段的工作必须在前一阶段的工作完
成后才能开始。
? ( 2)把 逻辑设计与物理设计 清楚地 划分开,
是瀑布模型的重要指导思想。
? ( 3)瀑布模型强调的是优质,即 每一步都
循序渐进,及早消除隐患,从而保证软件
质量。
? ( 4)它的 致命 缺点 在于只有做出 精确的
需求分析,才能取得预期的结果。由于各
种客观、主观的原因,需求分析往往不很
精确,常常给日后的开发带来隐患。
下一页
上一页
停止放映
第 40页
⒊ 原型模型 —— 样品模型
? 原型模型的主要思想:
先借用已有系统作为原型模型,通过,样品,不断
改进,使得最后的产品就是用户所需要的。
? 原形模型的特点,
(1) 开发人员和用户在, 原型, 上达成一致 。 这样
一来, 可以减少设计中的错误和开发中的风险,
也减少了对用户培训的时间, 而提高了系统的实
用, 正确性以及用户的满意程度 。
( 2) 缩短了开发周期, 加快了工程进度 。
( 3) 降低成本 。
? 原型模型的 缺点,
当告诉用户, 还必须重新生产该产品时, 用户是很
难接受的 。 这往往给工程继续开展带来不利因素 。
下一页
上一页
停止放映
第 41页
快速原型模型
分析原型
样品
模型 设计
编程
测试
使用
修改

改进
在系统分析与
设计中,采用
交互式,反复
修改与不断改
进的方式进行。
还有的把原型模式嵌套在瀑布模型中运用。
下一页
上一页
停止放映
第 42页
⒋ 螺旋模型
? 螺旋模型将工程划分为 4个主要活动, 制定计划, 风
险分析, 实现工程和用户评价 。 4个活动螺旋式地重
复执行, 直到最终得到用户认可的产品 。
① 制定 计划, 确定软件目标,选定实施方案,弄清项目开
发限制条件 。
② 风险 分析,分析可选方案,分析识别风险,研究解决化
解风险的办法 。
② 实现 工程,实施软件产品的开发 。
③ 用户 评价,对当前工作结果进行评价, 提出改进产品
的建议 。
螺旋模型的缺点,很难让用户确信这种演化方法的结果
是可以控制的,
下一页
上一页
停止放映
第 43页
⒌ 其他模型
? 智能模型 也称基于知识的软件开发模型,它与专
家系统结合在一起。该模型应用基于规则的系统,
采用归纳和推理机制,帮助软件人员完成开发工作,
并使维护在系统规格说明一级进行。
? 该模型在实施过程中要建立知识库,将模型本身、
软件工程知识与特定领域的知识分别存入数据库。
以软件工程知识为基础的生成规则构成的专家系统
与含应用领域知识规则的其他专家系统相结合,构
成这一应用领域软件的开发系统。
? 面向对象生存周期模型 其 主导思想是:在整个
软件开发过程中将面向对象技术贯穿于整个生存周
期。当然,还要结合传统开发模式中好的、已被无
数成功开发活动证明是可行的经验和技术。
下一页
上一页
停止放映
第 44页
三、软件工程管理
1,软件工程 项目 管理的任务
2,软件 人员 组织与管理
3,软件 配置 管理
下一页
上一页
停止放映
第 45页
⒈ 软件工程项目管理的任务
? 软件工程项目管理所涉及的范围覆盖了整个软件
工程过程 。 它管理的任务是:根据项目合同书的
要求, 制定项目计划和工程进度安排, 监督和检
查项目实施过程, 保证工程满足要求的质量标准,
分析确定并排除风险, 在规定的期限和预算成本
内完成项目 。 包括:
项目 计划 和进度安排
项目 追踪 和质量保证
成本 估算
风险 分析
下一页
上一页
停止放映
第 46页
① 项目计划和进度安排
? 项目计划要列出软件开发要做的主要工作和任务清
单, 要回答, 软件工程项目做什么, 。
? 在工作和任务清单中要清楚地描述出,
– 项目划分的各个实施 阶段
– 每个 阶段 的工作重点和 任务 是什么
– 完成本阶段工作和任务的 人 力, 资源 需求, 时间
期限
– 阶段工作和任务的 成果形式
– 项目实施过程中对风险, 疑难, 其他 不可预见因
素 等 的处理机制
– 各任务组及 开发人员之间的组织, 协调关系等 。
下一页
上一页
停止放映
第 47页
进度安排
? 在制定项目进度安排时,主要依据是合同书
和项目计划。通常的做法是把复杂的整体项
目分解成许多可以准确描述、度量、可独立
操作的相对简单的任务,然后安排这些任务
的执行顺序,确定每个任务的完成期限、开
始时间和结束时间。
? 开始需要考虑的主要问题是:
– 项目可以支配的人力及资源
– 项目的关键路径
– 生存周期各个阶段工作量的划分
– 工程进展如何度量
– 各个阶段任务完成标志
– 如何自然过渡到下一阶段的任务等。
下一页
上一页
停止放映
第 48页
② 项目追踪和质量保证
? 项目追踪实施由项目管理人员负责 。 他们必
须 按进度安排表追踪检查每一个任务 。 如果
任务实际完成日期滞后于进度安排, 则管理
人员可以行使职权范围内的权力 采取各种补
救措施以减少进度误期所造成的影响 。 包括
对资源重新定向, 对任务重新安排, 甚至可
以修改交付日期以调整已经暴露的问题 。
? 质量保证在软件生存周期中是至关重要的 。
人们在管理项目时往往只强调必须按期完成
任务, 必须遵循进度计划, 必须把成本控制
在预算范围内, 却忽视了在生存周期各个阶
段工作和任务应满足规定的质量标准 。
下一页
上一页
停止放映
第 49页
软件质量主要因素包括
正确性 在预定的系统环境下能正确地完成预期的功能;
健壮性 在预定意外环境下系统能适当地给予预期的响应;
完整性 对未经授权的操作, 系统能够进行控制;
可用性 系统在完成预定任务的功能时能够圆满地实现;
灵活性 系统应能满足硬件环境升级和部分功能扩充需求;
可理解性 用户和维护人员应非常容易的理解和使用系统;
可维护性 用户按文档资料应能排除常见系统故障, 保持
系统正常运行;
可移植性 在厂家协助下, 系统可以移植到其他硬件环境
且费用可以接受;
可重用性 系统全部或部分代码可以在其他应用系统中被
使用;
可测试性 系统容易测试 。
下一页
上一页
停止放映
第 50页
保证软件质量的措施
? 为了保证软件质量,在软件开发过
程中应采取下列措施:
( 1) 审查
( 2) 复查和管理复查
( 3) 测试
下一页
上一页
停止放映
第 51页
审查
? 在软件生存期各个阶段结束之前,都要对该阶段产
生的结果和软件配置文档进行严格技术审查。
? 审查过程包括,
① 计划:组织审查组、分发材料等;
② 概况介绍:对大的项目,让主程序员介绍概况;
③ 准备:评审员阅读材料,取得项目有关知识;
④ 评审会:目的是发现和记录错误;
⑤ 返工:开发者修改已经发现的问题;
⑥ 复查:检查返工是否真正解决了问题。
下一页
上一页
停止放映
第 52页
复查和管理复查
? 复查是检查已有的材料, 以断定本阶段
的工作是否能够开始或继续 。 每个阶段
开始时的复查是为了肯定前一个阶段结
束时确实进行了认真的复查, 已经具备
了开始当前阶段工作所必须的材料 。
? 管理复查是指:向开发组织或使用部门
的管理人员提供有关项目的总体状况以
及进度等方面的情况, 以便他们从管理
的角度对开发工作进行审查 。
下一页
上一页
停止放映
第 53页
测试
? 测试是用测试用例执行系统, 以检查测试结
果是否和预期结果一致 。
? 在测试过程中将产生以下文档:
① 测试计划,确定测试范围, 方法, 测试用例
和所需资源等;
② 测试过程,详细描述与每个测试方案有关的
测试步骤和数据 ( 包括测试预期结果 ) ;
③ 测试结果,把每次测试运行的结果归入文档,
如果运行出错, 则应产生问题报告, 并且要
通过调试解决所发现的问题 。
下一页
上一页
停止放映
第 54页
③ 成本估算
? 成本估算和成本管理是软件项目管理的核心任务
之一 。 在制定项目计划时, 就必须对项目需要的
人力及其他资源, 项目持续时间和项目成本做出
估算 。 如果新项目和以往的项目类似, 估算可以
参考以前的成本费用 。
? 现在已有一些用于软件成本估算的技术可供借鉴 。
这些估算技术各有其优缺点, 但以下 几方面 是共
同的:
– 事先建立软件的工作范围;
– 以软件度量 ( 经验度量, 相似工程类比的度
量 ) 为基础做出估算
– 把项目分解为可单独进行估算的小块
下一页
上一页
停止放映
第 55页
成本估算方法
? 就方法论而言, 有两种基本的成本估算方法:
自顶向下和自底向上 。
? 自顶向下法 是对整个工程项目的 总开发时间
和总工作量 做出估算, 然后将它们按阶段,
步骤和任务进行分配 。
? 自底向上法则正好相反, 先分别估算各个任
务所需要的工作量和开发时间, 再相加, 从
而得到总的工作量和总的开发时间 。 这两种
方法都要求采用某种方法做出估算 。
? 有许多 估算方法 可以利用, 大致划分为三类:
专家估算法, 类推估算法, 算式估算法 。
下一页
上一页
停止放映
第 56页
成本估算方法简介
? 专家估算法 依靠一个或多个专家对项目做出估算,
其精度主要取决于专家对估算项目的定性参数的了
解和他们的经验 。
? 类推估算法 在自顶向下法中, 类推估算法将估算项
目的总体参数与类似项目进行直接比较得到结果;
在自底向上法中, 类推是在两个具有相似条件的工
作单元之间进行 。
? 算式估算法 前两种估算法的缺点在于:它们依靠的
是带有主观猜测和盲目性的估算方法 。 算式估算法
则是企图避免主观因素影响的一种方法 。 算式估算
法有两种基本类型,由理论导出的算法和由经验得
出的算法 。
下一页
上一页
停止放映
第 57页
④ 风险分析
? 在开发新的软件系统过程中, 由于存
在许多不确定因素, 软件开发失败的
风险是客观存在的 。 因此, 风险分析
对于软件项目管理是决定性的 。 风险
分析实际上就是贯穿在软件工程过程
中的一系列风险管理步骤, 其中包括:
风险识别, 风险估计, 风险管理策略,
风险解决和风险监督等 。
下一页
上一页
停止放映
第 58页
主要风险因素
① 产品大小 。实践经验表明项目风险和产品的大小
成正比。公认产品大小度量单位是以代码行或功能
点计。
② 技术相关。 未曾使用过的新技术都存在风险。包
括未使用过的新型硬件、支持软件,缺乏标准与规
范的非传统的开发方法等。技术过时也是风险。技
术风险一般难于改正。
③ 开发环境 。适用的开发工具不足、不可靠、使用
不方便等因素,都会降低开发效率。
④ 组织规模和人员经验 。
⑤ 客户因素 。表现在客户需求经常矛盾,不了解客
户的特殊需要,客户不了解项目中采用的新技术,
且双方又难于沟通等。
下一页
上一页
停止放映
第 59页
⒉ 软件人员组织与管理
? 人员是软件工程项目最重要, 也是
最为活跃的资源因素 。 如何组织得
更加合理, 如何管理得更加有效,
从而最大限度地发挥这一重要的资
源潜力, 对于成功地完成软件工程
项目至关重要 。
1) 项目组的组织结构
2) 程序设计小组的组织形式
3) 软件项目的管理
下一页
上一页
停止放映
第 60页
⑴ 项目组的组织结构
? 开发组织采用什么形式, 要针对软件项目的特
点来决定, 同时也与参加人员的素质有关 。
? 建立项目组织时要考虑这样一些 原则,
① 项目责任制度 。 项目必须实行项目负责人责
任制 。 项目责任人对项目的完成负全部责任 。
② 人员少而精 。 项目组成员之间的交流和协作
是项目成败的关键 。 人员少, 具有便于组织
管理, 合理分工, 减少通信等优点;人员精,
有利于互相激励, 发挥各自的特长优势, 提
高工作效率 。
下一页
上一页
停止放映
第 61页
选择组织结构的模式
( 1) 按课题划分 按课题划分小组 。 小组成员自始至终参加
所承担课题的各项任务 。
( 2) 按职能划分 按任务的工作阶段划分成若干个专业小组 。
例如, 分别建立计划组, 需求分析组, 设计组, 实现组,
测试组, 质量保证组, 维护组等 。 要开发的软件产品在每
个专业小组完成阶段加工后, 沿工序流水线向下传递 。 这
种流水线模式便于小组人员熟悉本组的工作, 进而变成这
方面的专家 。 但也有小组之间的通信接口增多, 通信路径
延长等问题 。
( 3) 矩阵形模式 这种模式实际上是以上两种模式的结合 。
既设立项目经理负责项目的管理, 又成立一些专门组, 每
个成员参加其中一个组的实际工作 。 矩阵形结构组织的优
点是:参加专门组的成员可在组内交流其在各项目中取得
的经验, 这更有利于发挥专业人员的作用 。 而且各个项目
有专人负责, 有利于项目的完成 。
下一页
上一页
停止放映
第 62页
⑵ 程序设计小组的组织形式
? 一般情况下, 程序设计人员是在一定
程度上独立自主地完成各自的任务 。
但这并不意味着互相之间没有联系 。
事实上, 人员之间联系得多少和联系
方式与生产效率直接相关 。
? 程序设计小组内人数少, 如 2~ 3人,
则人员之间的联系比较简单 。 但随着
人数的增加, 相互之间的联系是按非
线性关系变得复杂起来 。 因此, 小组
内部人员的组织形式对生产率也有很
大的影响 。
下一页
上一页
停止放映
第 63页
① 主程序员组
? 组由主程序员, 程序员和后援工程师为核心组成 。
? 主程序员 是经验丰富能力强的高级程序员, 负责小组全
部技术活动的计划, 协调与审查工作, 还负责设计和实
现项目中的关键部分 。
? 后援工程师 协助和支持主程序员的工作, 为主程序员提
供咨询, 也做部分分析, 设计和实现的工作, 并在必要
时代替主程序员工作, 以便使项目能继续进行 。
? 程序员 负责项目的具体分析与开发, 以及文档资料的编
写工作 。 根据系统规模大小及难易程度, 小组还可以聘
请一些专家, 辅助人员, 软件资料员协助工作 。
? 主程序员组这种集中领导的组织形式突出了主程序员的
领导作用, 简化了人际通信 。 这种组织形式能否取得好
的效果, 很大程度上取决于主程序员的技术水平和管理
才能 。 美国的软件产业中大多采用主程序员组的组织形
式 。
下一页
上一页
停止放映
第 64页
② 民主小组
? 小组由经验丰富的技术人员组成 。 项目有关的所
有重大决策都由全体成员集体讨论, 确定解决 。
这种组织形式强调发挥每个成员的积极性, 要求
每个成员充分发挥主动精神和协作精神 。 通过充
分讨论, 也是在互相学习, 因而在组内形成一个
良好合作的工作气氛 。 但有时也会因此削弱个人
的责任心和必要的权威作用 。 有人认为这种组织
形式适合于研制时间长, 开发难度大的项目 。
? 日本软件产业中大多采用这种组织形式, 取得较
好的效果 。 这种组织形式在强调发挥每个成员的
积极性的同时, 也创造了一个尊重每个成员的良
好工作环境 。 由于小组成员在工作上能够很好地
配合, 因而做到了较长时间稳定的人员合作关系 。
这样的小组形式避免了美国因软件人员频繁流动
对工作造成的严重干扰 。
下一页
上一页
停止放映
第 65页
③ 层次小组
? 小组内人员分为 3级:组长, 高级程序员
和程序员 。
? 组长 负责全组工作, 包括任务分配, 技
术评审和复查, 掌握工作量和参加技术
活动 。 组长直接领导 2至 3名高级程序员 。
? 高级程序员 通过基层小组, 管理若干个
程序员 。 这种组织结构只允许必要的人
际通信 。 它比较适合项目本身就是层次
结构状的课题以及大型软件项目的开发 。
下一页
上一页
停止放映
第 66页
⑶ 软件项目的管理
? 软件项目管理包括:项目指导和项目检验 。
? 指导的目的是在软件项目的实施过程中, 动
员和促进工作人员积极完成所分配的任务 。
? 检验是软件管理的最后一个方面 。 它是对照
计划检查执行情况的过程, 同时也是对照软
件工程标准检查实施情况的过程 。 在发现项
目的实施与计划或标准有较大的偏离时, 应
采取措施加以解决 。
? 管理内容包括,
指导工作的要点
检验管理的要点
检验管理的工作范围
下一页
上一页
停止放映
第 67页
指导工作的要点
① 鼓励 。 恰当而且及时地鼓励是非常重要的 。 要
建立健全竞争和激励机制, 它可使人们充满信
心, 勇于继续克服困难, 愿意努力进一步提高
工作效率, 迎接新任务的挑战 。
② 引导 。 通常, 人们愿意追随那些能够体谅个人
要求或实际困难的领导 。 高明的领导人应能体
察到这些, 并能巧妙地把个人的要求和目标与
项目工作的整体目标结合起来, 至少应能做到
在一定程度上的协调, 或在一个工作周期内一
致 。 要制定相对优惠的, 留人, 政策, 稳定骨
干队伍 。 从风险分析中可知, 大幅度的人员调
整是非常有害的, 即使是人员的临时观念也会
使项目付出无形的代价, 因而蒙受无谓的损失 。
下一页
上一页
停止放映
第 68页
检验管理的要点
① 重大偏离 。 在软件项目实施过程中, 必须注
意:工作与计划之间, 任务与标准之间的重
大偏离 。 遇到有这种情况时应及时向管理部
门报告并采取相应的措施给予适当的处置 。
② 选定标准 。 检验管理需要事先确定应当遵循
的标准, 使得软件项目的工作进展可以用某
些客观, 精确且有实际意义的标准加以衡量 。
③ 特殊情况 。 管理人员必须注意软件项目实施
的一些特殊情况, 认真分析其中的一些特殊
问题, 加以解决 。
下一页
上一页
停止放映
第 69页
检验管理的工作范围
? 检验管理可能涉及到以下几个方面:
① 质量管理 。 包括明确度量软件质量的因素
和准则, 决定质量管理的方法和工具, 以
及实施质量管理的组织形式 。
② 进度管理 。 检验进度计划执行的情况 。
③ 成本管理 。 度量并控制软件项目的开销 。
④ 文档管理 。 检验文档编写是否符合要求 。
⑤ 配置管理 。 检验, 控制软件配置项的变更 。
下一页
上一页
停止放映
第 70页
⒊ 软件配置管理
? 软件配置管理是人们在软件工程实
践过程中总结出的一套管理办法和
原则 。 软件配置管理将伴随整个软
件生存周期 。
1) 软件配置管理和基线
2) 配置管理的任务
下一页
上一页
停止放映
第 71页
⑴ 软件配置管理和基线
? 什么是软件配置项? 一般认为:软件生存周
期各个阶段活动的产物经审批后即可称之为
软件配置项 。
? 软件配置项包括,
① 与合同, 过程, 计划和产品有关的文档和
资料;
② 源代码, 目标代码和可执行代码;
③ 相关产品, 包括软件工具, 库内的可重用
软件, 外购软件及顾客提供的软件等 。
下一页
上一页
停止放映
第 72页
基线
? 什么是基线? 第一次提出的软件配置项就构成基线配
置项 。 基线分类列表如下:
– 系统功能说明 。 系统模型, 项目计划, 进度安排;
– 软件需求规格说明 。 包括:图形分析模型, 过程, 原型, 数
学规格说明;
– 设计规格说明 。 包括:数据设计, 体系结构设计, 界面设计,
对象的描述等;验收规格说明;
– 测试规格说明 。 包括:测试计划, 测试用例, 测试预期结果,
测试记录等;
– 数据库描述 。 包括:数据模式, 记录结构, 数据项描述;
– 模块规格说明 。 包括:模块功能, 模块算法, 模块接口等描述;
– 运行系统 。 包括:模块代码, 链接模块, 数据库, 支持及工具
程序等;
– 用户文档 。 包括:安装说明, 操作说明, 用户手册等;培训计
划;维护文档, 包括:故障报告, 维护要求, 更改记录等;
– 项目采用的有关标准和规程 。
下一页
上一页
停止放映
第 73页
⑵ 配置管理的任务
① 标识软件配置项
② 版本控制
③ 变更管理
④ 审计
下一页
上一页
停止放映
第 74页
① 标识软件配置项
? 大型软件工程项目开发过程中可能会产生许多技
术文档 。 随着软件系统的变更, 有关文档也将发
生变化 。 因此, 对软件配置项的管理是一个动态
管理的过程 。 为了便于管理, 首先要便于检索 。
而要检索就必须对所有的配置项进行 标识, 命名 。
标识软件配置项是配置项管理的重要基础工作 。
? 所有的软件配置项均可以当作对象来标识 。 例如,
基本对象可以是一段需求规格说明, 一个模块的
源代码清单, 一组测试用例等 。 将这些正文单元
命名后作为 基本对象, 再将基本对象按内部逻辑
进行组合, 就形成 复合对象 。 复合对象表示的是
一本设计规格说明书, 一个完整的源程序清单 。
下一页
上一页
停止放映
第 75页
② 版本控制
? 版本更新是软件生存期中的自然现象 。 软件系统
每做一次修改, 就应该变更一次版本 。 不同版本
反映的是不同时期, 不同硬件环境, 不同用户需
求的该软件系统的特定功能 。 为了保持该软件系
统一脉相承的完整性, 每一个软件配置项修改后
的以前版本都要保留 。
? 版本更新就好像一棵生长的树 。 所有版本均按版
本模型 ( 树形结构 ) 存放于仓储库中 。 为节省仓
储库的存储空间, 版本存放采用增量法, 即只存
放新版本与旧版本不同部分的内容 。
下一页
上一页
停止放映
第 76页
③ 变更管理
? 有变更的需求就要有变更的控制和
管理 。 它的主要任务包括:
1,分析变更的必要性和合理性, 确
定是否实施变更 ;
2,记录变更信息, 填写变更控制单;
3,做出 更改, 并交上级审批;
4,修改相应的软件配置项 ( 基线 ),
确立新的版本;
5,评审后发布新版本 。
下一页
上一页
停止放映
第 77页
④ 审计
? 软件配置项的更改反映了用户提高, 扩充软件系
统功能和性能的要求以及软件开发人员对软件需
求定义的认识的提高 。
? 如何保证变更需求和变更实施结果的一致性? 如
何保证任何一个变更能顺利正确地完成? 这正是
审计的作用 。 为保证软件配置项变更的合理性和
严肃性, 必须实行严格的审计控制 。
? 一般采用两种方法进行审计:
– 正式技术评审 着重检查对软件配置项的变更
的 技术正确性 。 综合考虑此软件配置项的变更
对其它配置项乃至整个软件系统的潜在影响和
作用 。
– 软件配置审核 是审核变更的落实情况 ;变更
修改是否完成? 变更手续是否完备? 变更修改
有无违反标准?
下一页
上一页
停止放映
第 78页
四、软件知识产权保护
? 计算机软件是人类知识, 智慧和创造性劳动的结晶, 软件产
业是知识和资金密集型的新兴产业 。 由于它具有开发工作量
大, 周期长, 而生产 ( 复制 ) 容易, 费用低等特点, 因此,
长期以来, 软件的知识产权得不到尊重, 软件的真正价值得
不到承认, 靠非法窃取他人软件而牟取商业利益成了信息产
业中投机者的一条捷径 。 因此, 软件产权保护已成为急待解
决的一个社会问题, 是我国软件产业健康发展的前提 。
? 1967年在瑞典斯得哥而摩成立了世界知识产权组织 。 1980年
我国正式加入该组织 。 1990年 9月我国颁布了, 著作权法,,
确定计算机软件为保护的对象 。 1991年 6月由国务院正式颁
布了我国, 计算机软件保护条例, 。
? 应该学习并掌握必要的软件保护法律知识 。 一方面要尊重别
人的智力劳动成果, 不应任意侵犯他人的软件版权;另一方
面要采取切实的保护措施保护自己以及本单位开发的软件成
果 。
下一页
上一页
停止放映
第 79页
⑴ 软件知识产权的法律保护
? 知识产权 又称为智力成果产权和智慧财产权, 是指对智力
活动所创造的精神财富所享有的权利 。
? 知识产权分为:工业产权和版权;前者主要包括专利权, 商
标专有权和制止不正当竞争权;后者专指计算机软件 。
? 知识产权的主要特点是:
① 无形性 。 是指其保护对象是无形的 。 知识产权的权利人只
有当其主张自己权利的时候, 才能确认为权利人 。
② 专有性 。 指未经知识产权人的同意, 除法律有规定的情况
外, 他人不得占有或使用该项智力成果 。
③ 地域性 。 指法律保护知识产权的有效地区范围 。 任何国家
法律所确认的知识产权, 只在其本国领域内有效, 除非该
国与他国签订有双边协定或该国参加了有关知识产权保护
的国际公约 。
④ 时间性 。 指法律保护知识产权的有效期限, 期限届满即丧
失效力 。 这是为限制权利人不致因自己对其智力成果的垄
断期过长而阻碍社会经济, 文化和科学事业的发展 。
下一页
上一页
停止放映
第 80页
⑵ 计算机软件是著作权保护的客体
① 软件著作权保护的基本条件 对计算机软件来说, 著作权法并
不要求软件达到某个较高的技术水平, 只要是开发者独立地
自行开发的软件, 即可享有著作权 。 一个仅处于作者构思过
程中, 未表现出来的软件, 不享有著作权 。 一个软件必须在
其创作出来, 并固定在某种有形物体 ( 如纸, 磁带, 磁盘 )
上面, 能为他人感知, 传播, 复制的情况下, 才能享有著作
权保护 。
② 软件著作权的特征 计算机软件的体现形式是程序和文件 。 文
件是受著作权法保护的 ( 包括:人无法识别的目标代码 ) 形
式的程序, 固化在只读存储器 ( ROM) 中的程序等 ) 。
③ 软件著作权的保护范围 著作权法的基本原则是,只保护作品
的表现, 而不保护作品中所体现的思想, 概念 。 因此, 在软
件中哪些是思想, 概念? 哪些是表现? 要确定著作权保护客
体的范围是比较困难的 。 目前人们比较一致的认为:软件的
功能目标应用属于思想, 概念, 不受著作权法的保护;而软
件的程序代码则是表现, 应属于著作权保护的客体之内 。
下一页
上一页
停止放映
第 81页
⑶ 软件著作权人享有的专有权力
根据我国著作权法的规定, 作品著作人 ( 或称
版权人 ) 享有5项专有权力:
① 发表权 。 决定作品是否公布于众的权力 。
② 署名权 。 表明作者身份, 在作品上有署名权 。
③ 修改权 。 修改或授权他人修改作品的权力 。
④ 保护作品完整权 。 保护作品不受篡改的权力 。
⑤ 使用权和获得报酬权 。 以复制, 表演, 播放,
展览, 发行, 摄制电影, 电视, 录像或改编,
翻译, 注释, 编辑等方式使用作品的权力,
以及许可他人以上述方式作为作品, 并由此
获得报酬的权力 。
下一页
上一页
停止放映
第 82页
⑷ 软件著作权的登记
?, 计算机软件保护条例, 中对办理软件著作权登
记有以下基本要求:
① 凡完成开发一年之内的软件均可向软件登记机
构办理登记申请 。
② 凡已在软件登记机构办理登记的软件, 在其专
有权力发生转让活动时, 受让方应在转让合同
正式签订后的两个月之内向软件登记机构备案 。
③ 当国籍或定居地为中国的著作权人或其受让者,
在中国境内开发的计算机软件的专有权力要向
境外许可或转让时, 许可方或转让方应首先报
请国务院有关主管部门批准, 并向软件登记机
构备案 。
下一页
上一页
停止放映
第 83页
⑸ 办理软件著作权登记的基本要求:
① 办理软件著作权和软件著作转让或许可的登记, 备案手续, 应
当到法定的或国家指定的软件登记机构办理 。
② 办理上述登记手续应当是软件专有权人 ( 包括公民, 法人或非
法人组织 ) 或者是软件专有权人委托的代理人 。 但代理人须向
软件登记管理机构出示写明委托权限的委托书 。
③ 通常一个独立的软件, 只能办理一次著作权的登记 。 若软件是
由多个独立的软件组成的, 也可以分别办理软件著作权的登记
手续 。
④ 办理软件著作权登记均应以书面的形式进行 。 在软件申请书
( 登记表 ) 上应有申请者或代理人的签章 。
⑤ 办理软件著作权登记时, 申请者应提交该软件具有独创性事实
和转让, 许可证明等有关鉴别材料 。
⑥ 对于软件登记申请中出现的有关问题和遗漏, 软件申请者应积
极配合软件登记机构予以纠正 。
⑦ 所办理的软件登记手续, 均应在法定的期限内完成, 否则将失
去机会 。
⑧ 办理登记手续时, 应交纳法定的手续费 。
下一页
上一页
停止放映
第 84页
思考题
第 9章习题:
P271 1~24
下一页
上一页
停止放映
第 85页
结束语
? 欢迎参加到中心网站, 软件基础, 课程的学习讨
论中来。
? 中心网址:
http,//ctec.xjtu.edu.cn
? 课件下载地址,
ftp,//ctec.xjtu.edu.cn
? 的 E-mail地址,
xjtuzhao@sina.com
谢谢!