软件工程导论第12章.ppt

合集下载

软件工程导论(PPT 69页)

软件工程导论(PPT 69页)

程序员
程序员
程序员
分工: (1)主程序员:体系结构设计、关键部分详细设计,技术指导。 (2)后备程序员:协助主程序员,必要时接替主程序员。 (3)编程秘书:负责事务性工作。
吉林省精品课程:软件工程导论
CCUTSE 2013
45
12 人员组织
2.主程序员组
编程秘书
主程序员 后备程序员
程序员
程序员
程序员
③Boehm简单模型:
E=3.2×(KLOC)1.05
④ Doty模型(KLOC>9时):E=5.288×(KLOC)1.047
吉林省精品课程:软件工程导论
CCUTSE 2013
32
11.2 工作量估计
1.静态单变量模型
(2)面向FP的估算模型
①Albrecht&Gaffney模型: E=-13.39+0.0545FP
11
导言
软件的配置管理
软件配置项 程序
× 文档
数据
变化管理
标识变化 版本控制 变化控制
配置审计 报告
吉林省精品课程:软件工程导论
CCUTSE 2013
12
导言
能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。
吉林省精品课程:软件工程导论
CCUTSE 2013
13
导言
能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。
缺点: (1)主程序员:是高级程序员和优秀管理者的结合体,难找。 (2)后备程序员:期望与主程序员一样优秀,难找。 (3)编程秘书:专业人员厌烦事务工作,难找。
吉林省精品课程:软件工程导论
CCUTSE 2013
46

软件工程导论(全)张海藩PPT课件

软件工程导论(全)张海藩PPT课件

与方法。

主要内容包括:软件工程概述、软件生存周期及软件
海 藩
需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开
发的整个过程。为了让学生真正得以实践,结合实际软件
开发项目,让学生从问题定义开始,经过可行性研究、需
求分析、概要设计、详细设计、编码直到最后要对自己开
软制品

(软体)


软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。
2020/8/1

件 工
2、软件特点


. 软件是一种逻辑实体,而不是具体的物理实体
. 软件的生产与硬件不同
. 在软件的运行和使用期间,没有硬件那样的机械

磨损,老化问题



磨合
修改点 失
实际曲线
张 海 藩
具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些
则不能?为什么有些软件能够在市场上成功
,而有些则受到冷落?由此可见,开发软件
并不一定难,难就难在如何开发有用的软件。
微软凌小宁博士
2020/8/1
支持管理: 标准检验程序 库管理程序
2020/8/1

件 工
2、按软件的规模进行划分
程 导
按开发软件所需的 人力、时间以及完成的
源代码行数。
张 海
类别
参加人数
研制期限 产品规模(源代码行数)

微型
1
1-4周
约500行

软件工程导论(共65张PPT)可编辑全文

软件工程导论(共65张PPT)可编辑全文
–期刊管理系统之借阅子系统
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙

软件工程导论概述

软件工程导论概述
件、逻辑(符号)推理型软件、人 机交互型软件、数据密集型软件
2020/4/25
软件工程导论
7
1.1.3 软件的种类
基本概念 软件危机 系统开发 软件工程 本章小结
按功能分:
系统软件 应用软件
➢ 管理软件 ➢ 实时软件 ➢ 工程分析和科学计算软件 ➢ 嵌入式软件 ➢ 人工智能软件
2020/4/25
软件工程导论
过程驱动控制 理方式
处理方式
消息驱动控制 数据驱动控制
2020/4/25
软件工程导论
28
1.3.3 系统开发方法
基本概念 各种方法特点比较:
软件危机 系统开发 软件工程 本章小结
结构化软件 面向对象软件 专家系统软件
开发重点 设计
分析
应用
数据类型比较简 大型复杂的人
单的数值计算和 机交互式软件
数据统计管理软 和数据统计管
软件工程导论
27
1.3.3 系统开发方法
基本概念 各种方法特点比较:
软件危机 系统开发 软件工程 本章小结
结构化软件 面向对象软件 专家系统软件
概念 功能的集合 事物的集合 知识的集合
构成
过程+数据 (数据+相应的 知识+推理 以过程为中心 操作)的封装 以知识为中心
以数据为中心
运行控制 顺序处理方式 交互式、并行处 交互式、并行
过程设计 编码调试 运行维护
常用方法:数据流程图法、结构 化分析/设计方法、IDEF方法、 Jackson方法
软件工程导论
22
1.3.3 系统开发方法
基本概念 软件危机 系统开发 软件工程 本章小结
面向对象方法:
对象的基本特性
➢ 标识唯一性 ➢ 分类性 ➢ 多态性 ➢ 继承性 ➢ 封装性

软件工程基础第12章PPT课件

软件工程基础第12章PPT课件

▪软件质量的特性:
➢功能性
➢可靠性
➢易使用性
➢效率
17
第17页/共21页
12.6.2 软件质量保证措施
• 软件质量保证是软件工程管理的重要内容。
包括以下措施: ❖应用好的技术方法 ❖测试软件 ❖进行正式的技术评审 ❖标准的实施 ❖ ❖程序正确性证明Байду номын сангаас❖记录、保存和报告软件过程信息
18
第18页/共21页
• 1. 计算最早时刻
• 2. 计算最迟时刻
• 3. 关键路径
12
• 4. 机动时间
第12页/共21页
对图12.1所示的工程中各项任务的进度安排, 可用Gantt图画出:
13
第13页/共21页
1. 开发人员12.4 人员组织 2. 组织机构 • 按课题划分的模式(Project Format) • 按职能划分的模式(Functional Format) • 矩阵形模式(Matrix Format) • 程序设计小组的组织形式有3种:
数为 3。
10
第10页/共21页
12.3 进度计划 12.3.1 Gantt 图
11
第11页/共21页
12.3.2 工程网络技术
• 工程网络技术又 称 PERT(Program Evaluation and Review Te c h n i q u e ) 技 术 , 利用PERT图制定 进度计划。
12.7 软件工程标准与软件文档
12.7.1 软件工程标准
• 1. • 2.软件工程标准的分类 ➢FIPS 135是美国国家标准局发布的《软件文档管理指南》 ➢NSAC-39是美国核子安全分析中心发布的《安全参数显示系统

《软件工程导论》课件

《软件工程导论》课件

定义
软件维护是指在软件运行过程中,为了改 正错误、满足新的需求或改进性能等目的 ,对软件进行的修改和调整。
预防性维护
为了提高软件的可维护性和可靠性而进行 的维护活动。
改正性维护
为了纠正软件中存在的错误而进行的维护 活动。
完善性维护
为了扩充和增强软件功能而进行的维护活 动。
适应性维护
为了使软件适应外部环境的变化而进行的 维护活动。
介绍如何评估软件架构的合理性 、可扩展性和可维护性,以及如 何根据业务需求和系统规模选择 合适的架构。
架构设计原则
强调架构设计时应遵循的几个重 要原则,如模块化、开放-封闭原 则、单一职责原则等。
数据设计
数据模型
介绍常见的数据模型,如关系模型、面向对象模型、键-值存储模型等,以及它们的应 用场景和优缺点。
02
03
界面设计原则
交互设计
强调界面设计时应遵循的几个重 要原则,如用户友好、一致性、 可用性等。
介绍常见的交互方式,如按钮、 菜单、对话框等,以及如何通过 良好的交互设计提高用户体验。
05
CHAPTER
软件测试
单元测试
总结词
单元测试是对软件中的最小可测试单元进行检查和验 证,通常以函数或方法为单位进行测试。
详细描述
单元测试主要关注软件中的细节问题,检查单个函数 或方法的正确性、性能和边界条件等。通过单元测试 ,可以尽早发现代码中的错误和缺陷,提高软件质量 。
集成测试
总结词
集成测试是在单元测试的基础上,将多个模块或组件 组合在一起进行测试,以验证它们之间的集成是否正 常工作。
详细描述
集成测试的主要目的是检查模块之间的接口和通信是否 正常,以及是否存在潜在的缺陷或问题。通过集成测试 ,可以确保软件在组合时能够正常工作,满足设计要求 。

《软件工程导论》第12章_面向对象实现ppt课件

《软件工程导论》第12章_面向对象实现ppt课件

8. 持久保存对象 n 一些面向对象语言,没有提供直接存储对象的
机制。这些语言的用户必须自己管理对象的输 入输出,或者购买面向对象的数据库管理系统。
n 另外一些面向对象语言(例如,Smalltalk),把 当前的执行状态完整地保存在磁盘上。
n 还有一些面向对象语言,提供了访问磁盘对象 的输入输出操作。
12.1.1 面向对象语言的优点
1. 一致的表示方法 n 一致的表示方法既有利于在软件开发过程中始终使用
统一的概念,也有利于维护人员理解软件的各种配置 成分。 2. 可重用性 n 为了能带来可观的商业利益,必须在更广泛的范围中 运用重用机制。 3. 可维护性 n 一般说来,应该尽量选用面向对象语言来实现面向对 象分析、设计的结果。
2. 减小方法的规模 n 应该减小方法的规模,如果某个方法规模过大,
则应该把它分解成几个更小的方法。
3. 保持方法的一致性 n 一般说来,功能相似的方法应该有一致的名字、数
特征、返回值类型、使用条件及出错条件等。
4. 把策略与实现分开 n 策略方法:负责做出决策,提供变元,并且管理全局
资源。
n 实现方法:负责完成具体的操作,但却并不做出是否 执行这个操作的决定,也不知道为什么执行这个操作。
息是降低耦合度的一项主要措施。 7. 利用继承机制 n 调用子过程。 n 分解因子。 n 使用委托。 n 把代码封装在类中。
12.2.2 提高可扩充性
n 封装实现策略 n 不要用一个方法遍历多条关联链 n 避免使用多分支语句 n 精心确定公有方法
12.2.3 提高健壮性
n 预防用户的操作错误 n 检查参数的合法性 n 不要预先确定限制条件 n 先测试后优化
9. 参数化类 n 所谓参数化类,就是使用一个或多个类型去参

软件工程导论全套精品课件(第六版)(张海潘编著)

软件工程导论全套精品课件(第六版)(张海潘编著)

2
第1章 软件工程学概述
引言
3
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
主要内容
4
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
1.1 软件危机
1.1 软件危机
1.1.1 软件危机的介绍
14
件,把经过时间考验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来,以经济地开发出高质量的 软件并有效地维护它,这就是软件工程。
第1章 软件工程学概述
1.2.1
软件工程的介绍
软件工程
1968年在第一届NATO会议上曾经给出了软件工程的一个
15
早期定义:“软件工程就是为了经济地获得可靠的且能在 实际机器上有效地运行的软件,而建立和使用完善的工程 原理。” 1993年IEEE进一步给出了一个更全面更具体的定义: “软件工程是: ①把系统的、规范的、可度量的途径应用 于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。
与软件本身特点有关
软件不同于硬件, 1管理和控制软件 开发过程相当困 难。 软件在运行过程 2中不会因为使用 时间过长而被 “用坏 “如果运 行中发现了错误, 很可能是遇到了 一个在开发时期 引入的在测试阶 段没能检测出来 的错误。 软件不同于一般 3程序 ,它的一个 显著特点是规模 庞大 ,而且程序 复杂性将随着程 序规模的增加而 呈指数上升。
9
错误的认识和做法 6主要表现为忽视软 件需求分析的重要 性,认为软件开发 就是写程序并设法 使之运行,轻视软 件维护等

张海藩《软件工程导论》(第6版)(课后习题 第12章 面向对象实现)【圣才出品】

张海藩《软件工程导论》(第6版)(课后习题 第12章 面向对象实现)【圣才出品】

第12章面向对象实现1.面向对象实现应该选用哪种程序设计语言?为什么?答:(1)面向对象实现应该尽量选用面向对象语言来实现面向对象分析、设计的结果。

(2)原因①一致的表示方法。

面向对象开发基于不随时间变化的、一致的表示方法。

既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。

②可重用性。

既可重用面向对象分析结果,也可重用相应的面向对象设计和面向对象程序设计结果。

③可维护性。

程序显式地表达问题域语义,对维护人员理解待维护的软件有很大帮助。

在选择编程语言时,应该考虑的首要因素是哪个语言能最恰当地表达问题域语义。

2.面向对象程序设计语言主要有哪些技术特点?答:(1)支持类与对象概念的机制。

(2)实现聚集结构的机制。

(3)实现泛化结构的机制。

(4)实现属性和服务的机制。

(5)类型检查机制。

(6)类库。

(7)效率。

(8)持久保存对象的机制。

(9)参数化类的机制。

(10)开发环境。

3.选择面向对象程序设计语言时主要应该考虑哪些因素?答:(1)将来能否占主导地位。

(2)可重用性。

(3)类库和开发环境。

(4)其他因素,包括售后服务、对运行环境的需求、集成已有软件的难易程度等。

4.良好的面向对象程序设计风格主要有哪些准则?答:面向对象程序设计风格应遵循如下准则:(1)提高重用性。

(2)提高可扩展性。

(3)提高健壮性。

5.测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点?答:(1)单元测试,是在类层面上的测试。

由于继承和复合,类(或对象)在很多情况下已不再是单纯意义上的单个操作。

因此,具体的测试将在多有与操作有关的每个子类语境中进行。

(2)集成测试,由于面向对象软件中类的成分直接和间接交互,使得传统测试放法已经失去意义。

因此有两种策略可供选择,分别是基于线程的测试和基于使用的测试。

(3)确认测试,关注与用户可见的动作和用户识别的系统输出,但基于场景的测试总是主宰面向对象系统的确认测试。

软件工程导论PPT课件

软件工程导论PPT课件

软件(software)是计算机系统中与硬件 (hardware)相互依存的另一部分,
它包括程序(program)、 相关数据(data)及其 说明文档(document)。
软件特指大型复杂的程序
2021
5
软件的发展
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。
2021
21
围棋与软件工程的感想
围棋
围棋棋谱拿过来的时候, 大师问“后面应该走哪里?”
十个初级爱好者选择的落
点散布在棋盘各处…… 十个职业棋手说的落子点
都差不多,甚至包括后面的几 步……
这就是高手和低手的差
别……
2021
13
软件危机的原因
● 一方面是与软件本身的特点 有关
● 另一方面是由软件开发和维 护的方法不正确有关
2021
14
软件开发工作量分配比例
40% ~ 50%
10% ~ 20%
测试
程序
其它
2021
15
引入同一变化付出的代价随时间变化的趋势
2021
16
费用分配比例
55%~70%
软件维护 其它
2021
25
总之: 软件工程是应用计算机科学、 数学及管理科学等原理开发软 件的工程。它借鉴传统工程的 原则、方法,以提高质量,降 低成本为目的。
2021
26
软件工程是一门交叉学科
软件工程的主要研究内容
软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境
软件工程管理:软件管理学 软件经济学 软件心理学
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3. 可维护性
尽管人们反复强调保持文档与源程序一致的必要性, 但是,在实际工作中很难做到交付两类不同的文档, 并使它们保持彼此完全一致。特别是考虑到进度、 预算、能力和人员等限制因素时,做到两类文档完 全一致几乎是不可能的。因此,维护人员最终面对 的往往只有源程序本身。
以ATM系统为例,说明在程序内部表达问题域语 义对维护工作的意义。假设在维护该系统时没有合 适的文档资料可供参阅,于是维护人员人工浏览程 序或使用软件工具扫描程序,记下或打印出程序显 式陈述的问题域语义,维护人员看到“ATM”、 “账户”、“现金兑换卡”等,这对维护人员理解 所要维护的软件将有很大帮助。
2. 可重用性
为了能带来可观的商业利益,必须在更广泛的范围 中运用重用机制,而不是仅仅在程序设计这个层次 上进行重用。因此,在OOA,OOD直到OOP中都 显式地表示问题域语义,其意义是十分深远的。随 着时间的推移,软件开发组织既可能重用它在某个 问题域内的OOA结果,也可能重用相应的OOD和 OOP结果。
到底应该选用面向对象语言还是非面向对象语言, 关键不在于语言功能强弱。从原理上说,使用任何 一种通用语言都可以实现面向对象概念。当然,使 用面向对象语言,实现面向对象概念,远比使用非 面向对象语言方便,但是,方便性也并不是决定选 择何种语言的关键因素。选择编程语言的关键因素, 是语言的一致的表达能力、可重用性及可维护性。 从面向对象观点看来,能够更完整、更准确地表达 问题域语义的面向对象语言的语法是非常重要的, 因为这会带来下述几个重要优点:
12.1 程序设计语言
12.1.1 面向对象语言的优点
面向对象设计的结果既可以用面向对象语言、也可 以用非面向对象语言实现。
使用面向对象语言时,由于语言本身充分支持面向 对象概念的实现,因此,编译程序可以自动把面向 对象概念映射到目标程序中。使用非面向对象语言 编写面向对象程序,则必须由程序员自己把面向对 象概念映射到目标程序中。所有非面向对象语言都 不支持一般-特殊结构的实现,使用这类语言编程 时要么完全回避继承的概念,要么在声明特殊化类 时,把对一般化类的引用嵌套在它里面。
2. 实现整体-部分(即聚集)结构的机制
一般说来,有两种实现方法,分别使用指针和独立 的关联对象实现整体-部分结构。大多数现有的面 向对象语言并不显式支持独立的关联对象,在这种 情况下,使用指针是最容易的实现方法,通过增加 构的机制
既包括实现继承的机制也包括解决名字冲突的机制。 所谓解决名字冲突,指的是处理在多个基类中可能 出现的重名问题,这个问题仅在支持多重继承的语 言中才会遇到。某些语言拒绝接受有名字冲突的程 序,另一些语言提供了解决冲突的协议。不论使用 何种语言,程序员都应该尽力避免出现名字冲突。
因此,在选择编程语言时,应该考虑的首要因素, 是在供选择的语言中哪个语言能最好地表达问题域 语义。一般说来,应该尽量选用面向对象语言来实 现面向对象分析、设计的结果。
12.1.2 面向对象语言的技术特点
面向对象语言的形成借鉴了历史上许多程序语言的 特点,从中吸取了丰富的营养。当今的面向对象语 言,从20世纪50年代诞生的LISP语言中引进了动 态联编的概念和交互式开发环境的思想,从20世纪 60年代推出的SIMULA语言中引进了类的概念和继 承机制,此外,还受到20世纪70年代末期开发的 Modula_2语言和Ada语言中数据抽象机制的影响。
1. 一致的表示方法
从前面章节的讲述中可以知道,面向对象开发基于 不随时间变化的、一致的表示方法。这种表示方法 应该从问题域到OOA,从OOA到OOD,最后从 OOD到面向对象编程(OOP),始终稳定不变。一致 的表示方法既有利于在软件开发过程中始终使用统 一的概念,也有利于维护人员理解软件的各种配置 成分。
下面介绍在选择面向对象语言时应该着重考察的一 些技术特点。
1. 支持类与对象概念的机制
所有面向对象语言都允许用户动态创建对象,并且 可以用指针引用动态创建的对象。允许动态创建对 象,就意味着系统必须处理内存管理问题,如果不 及时释放不再需要的对象所占用的内存,动态存储 分配就有可能耗尽内存。
有两种管理内存的方法,一种是由语言的运行机制 自动管理内存,即提供自动回收“垃圾”的机制; 另一种是由程序员编写释放内存的代码。自动管理 内存不仅方便而且安全,但是必须采用先进的垃圾 收集算法才能减少开销。某些面向对象的语言允许 程序员定义析构函数(destructor)。每当一个对象超 出范围或被显式删除时,就自动调用析构函数。这 种机制使得程序员能够方便地构造和唤醒释放内存 的操作,却又不是垃圾收集机制。
目前,软件测试仍然是保证软件可靠性的主要措施, 对于面向对象的软件来说,情况也是如此。面向对 象测试的目标,也是用尽可能低的测试成本发现尽 可能多的软件错误。但是,面向对象程序中特有的 封装、继承和多态等机制,也给面向对象测试带来 一些新特点,增加了测试和调试的难度。必须在实 践中努力探索适合于面向对象软件的更有效的测试 方法。
第12章 面向对象实现
12.1 程序设计语言 12.2 程序设计风格 12.3 测试策略 12.4 设计测试用例 12.5 小结 习题
面向对象实现主要包括两项工作: 把面向对象设 计结果翻译成用某种程序语言书写的面向对象程序; 测试并调试面向对象的程序。
面向对象程序的质量基本上由面向对象设计的质量 决定,但是,所采用的程序语言的特点和程序设计 风格也将对程序的可靠性、可重用性及可维护性产 生深远影响。
20世纪80年代以来,面向对象语言像雨后春笋一样 大量涌现,形成了两大类面向对象语言。一类是纯 面向对象语言,如Smalltalk和Eiffel等语言。另一 类是混合型面向对象语言,也就是在过程语言的基 础上增加面向对象机制,如C++等语言。
一般说来,纯面向对象语言着重支持面向对象方法 研究和快速原型的实现,而混合型面向对象语言的 目标则是提高运行速度和使传统程序员容易接受面 向对象思想。成熟的面向对象语言通常都提供丰富 的类库和强有力的开发环境。
相关文档
最新文档