软件工程导论_第十章
软件工程导论(第六版)
1.1.1 软件危机的介绍
1.1 软件危机
6
软件危机的典型表现
4、软件通常没有适当的文档资料。
5、软件成本在计算机系统总成本中所占的比例 逐年上升。
6、软件开发生产率提高的速度,远远跟不上计 算机应用迅速普及深入的趋势。
第1章 软件工程学概述
1.1.1 软件危机的介绍
1.1 软件危机
1.1.2 产生软件危机的原因
第1章 软件工程学概述
1.1.2 产生软件危机的原因
11
1.1 软件危机
1.1.3 消除软件危机的途径
1 2 3 首先应该对计 算机软件有一
充分认识到软 件开发不是某
推广使用在实 践中总结出来
个正确的认识。 种个体劳动的 的开发软件的
神秘技巧 ,
成功的技术和
而应该是各类 方法,并且研
人员协同配合, 究探索更好更
1.2.1 软件工程的介绍
1.2 软件工程
16
1.2.2 软件工程的基本原理
1、用分阶段的生命周期计划严格管理 2、坚持进行阶段评审 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果应能清楚地审查 6、开发小组的人员应该少而精 7、承认不断改进软件工程实践的必要性
第1章 软件工程学概述
1.2.2 软件工程的基本原理
1.4 软件过程
33
1.4 软件过程
软件过程是为了获得高质量软件所需要完成的一系列任务 的框架,它规定了完成各项任务的工作步骤。
软件过程描述为了开发出客户需要的软件,什么人(who )、在什么时候(when)、做什么事(what)以及怎样( how)做这些事以实现某一个特定的具体目标。
第1章 软件工程学概述
第1章 软件工程学概述
软件工程导论张海藩课后习题答案(完整版)
作业及解答(第4章)
其中, ✓符号∷=表示定义为; ✓符号[...]表示可选项; ✓符号a|b表示a或b。 假设有这样一个有穷状态机:以一串字符为输入,判断字符 串中是否含有合法的浮点二进制数。试对这个有穷状态机进 行规格说明。
作业及解答(第4章)
该有穷状态机的初态是“等待字符串输人”。在初态若接收 到字符十、或字符一、或二进制位,则进人“输人尾数” 状态;在初态若接收到其他字符,则进人终态“非浮点二 进制数”。在“输人尾数”状态若接收到二进制位,则保 持该状态不变;若接收到字符 E ,则进人“等待输人指数 ”状态;若接收到其他字符,则进人终态“非浮点二进制 数”。在“等待输人指数”状态若接收到字符+、或字符 一、或二进制位,则进人“输人指数”状态;若接收到其 他字符,则进人终态“非浮点二进制数”。在“输人指数 ”状态若接收到二进制位,则保持该状态不变;若输人其 他字符,则进人终态“非浮点二进制数”;若输人结束, 则进人终态“浮点二进制数”。
E2 病人
F2生理信号
E3 时钟
F3日前、时间
F5安全范围 D2患者安全范围
P2 分析信号
危及病人信息
P3 产生警告信息
F2生理信号
F4警告信息
P1 接收信号
F2生理信号
E1 护士
P4 定时取样 生理信号
定时的生理信号 F6日志
P5 更新日志
D1患者日志
E1 护士
F6日志 F1要求报告
P6 产生病情报告
(3) 假设在1995年存储器字长为32位,一名程序员每天可 开发出30条指令,程序员的月平均工资为6000美元,重 复(1)、(2)题。
作业及解答(第1-2章)
(1)在1985年对计算机存储容量的需求,估计是
软件工程导论_张海藩(第五版)课后习题答案
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程导论复习重点总结很全第六版
第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
软件工程导论_第十章
2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
10.3 建立对象模型(类图)
1. 描述系统静态的对象模型(类图)是面向对象
的三个模型中的基本模型。 2. 它表述了系统中各个对象的类型及其间存在 的各种关系。在面向对象建模中,建立类图是最 基本的任务;建立类图也是最需要花费精力和时 间的技术活动。
3. 该模型主要关心系统中的:
①对象的结构; ②属性; ④关联; ⑤类的层次。 ③操作和方法;
软件工程导论(第六版)张海藩课后习题部分答案(20201006230822)
第一章1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-3 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学( 2 种):1. 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-6 什么是软件过程?它与软件工程方法学有何关系?z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。
软件生命周期由软件定义、软件开发和运行维护 3 个时期组成,每个时期又进一步划分成若干个阶段。
生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
瀑布模型的优点: 1. 可强迫开发人员采用规范的方法; 2. 严格规定了每个阶段必须提交的文档;3. 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点: 1. 在软件开发初期,指明用户全部需求是困难的; 2. 需求确定后,经过一段时间才得到软件最初版本; 3. 完全依赖规格说明,导致不能满足用户需求。
适用中小型项目。
快速原型模型的优点: 1 满足用户需求程度高; 2 用户的参与面广; 3 返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。
软件工程导论课件(第六版)(张海潘编著)(1-13章)
13
件,把经过时间考验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来,以经济地开发出高质量的 软件并有效地维护它,这就是软件工程。
第1章 软件工程学概述
1.2.1
软件工程的介绍
1.2 软件工程
1968年在第一届NATO会议上曾经给出了软件工程的一个
14
早期定义:“软件工程就是为了经济地获得可靠的且能在 实际机器上有效地运行的软件,而建立和使用完善的工程 原理。” 1993年IEEE进一步给出了一个更全面更具体的定义: “软件工程是: ①把系统的、规范的、可度量的途径应用 于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。
第1章 软件工程学概述
1.2.1
软件工程的介绍
1.2 软件工程
软件具有的本质特性
软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 必须有效地支持它的用户 两种背景的人创造产品这个特性与前两个特性紧密相关
15
第1章 软件工程学概述
充分认识到软 2件开发不是某 种个体劳动的 神秘技巧 , 而应该是各类 人员协同配合, 共同完成的工 程项目。 推广使用在实 3践中总结出来 的开发软件的 成功的技术和 方法,并且研 究探索更好更 有效的技术和 方法。
11
首先应该对计 1算机软件有一 个正确的认识。
应该开发和使 4用更好的软件 工具。
1.4 软件过程
1.4 软件过程
1.4.1 瀑布模型
34
瀑布模型一直是唯一被广泛采用的生命周期模型,现在它 仍然是软件工程中应用得最广泛的过程模型。如下图所示为 传统的瀑布模型
图1.2传统的瀑布模型如图1.2所示为传统的瀑布模型。
(完整word版)软件工程导论(第6版)(word文档良心出品)
第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
软件工程导论class10实现
效率 处理机时间 存储器容量 3条原则 (1)效率是性能要求,因此应该在需求分析阶段确定 效率方 面的要求 (2)效率是靠好设计来提高的 (3)程序的效率和程序的简单程度是一致的,不要牺 牲程序 的清晰性和可读性来不必要地提高效率
(1)程序运行时间
写程序时应用下述原则
2 数据说明 数据说明的次序应该标准化 当多个变量名在一个语句中说明时,应该按 字母顺序排 列这些变量 设计时使用了一个复杂的数据结构,则应该 用注解说明用程序设计语言实现这个数据结 构的方法和特点
3 语句构造 不要为了节省空间而把多个语句写在同一行; 尽量避免复杂的条件测试; 尽量减少对“非”条件的测试; 避免大量使用循环嵌套和条件嵌套; 利用括使逻辑表达式或算术表达式的运算 次序清晰直 观。
高级语言选用实用标准
(1)系统用户的要求:如果所开发的系统由用户负 责维护,用户通常要求用他们熟悉的语言书写程序 (2)可以使用的编译程序:运行目标系统的环境中 可以提供的编译程序往往限制了可以选用的语言的 范围 (3)可以得到的软件工具:如果某种语言有支持程 序开发的软件工具可以利用,则目标系统的实现和 验证都变得比较容易。 (4)工程规模:如果工程规模很庞大,现有的语言又 不完全适用,那么设计并实现一种供这个工程项目 专用的程序设计语言, 可能是一个正确的选择。
7.2.2 软件测试准则
(1) 所有测试都应该能追溯到用户需求,最 严重的错误是导致程序不能满足用户需求的 那些错误 (2) 应该远在测试开始之前就制定出测试计 划,完成了需求模型就可以着手制定测试计 划,在建立了设计模型后就可以立即开始设 计详细的测试方案。
软件工程导论张海潘(第六版)第1-13章总结 PPT课件
+
[ ]
{ }
( )
意思是等价于(或定义为);
+
意思是和(即,连接两个分量);
[ ]意思是或(即,从方括弧内列出的若干个分量中选择一 个),通常用“|”号隔开供选择的分量; { } 意思是重复(即,重复花括弧内的分量);常常使用上限 和下限进一步注释表示重复的花括弧。 ( ) 意思是可选(即,圆括弧里的分量可有可无)。
从下述3个方面研究每种解法的可行性:
1)技术可行性 2)经济可行性 3)操作可行性 其他方面:运行可行性、法律可行性
2、典型的可行性研究有下述一些步骤:
1.复查系统规模和目标。
3.导出新系统的高层逻辑模型 5.导出和评价供选择的解法 7.草拟开发计划
2.研究目前正在使用的系统
4.进一步定义问题 6.推荐行动方针 8.书写文档提交审查。
(1)建立数据模型——E-R图 (2)描绘数据结构——层次方框图和Warnier图 (3)数据结构规范化
32
第三章
4、需求分析过程建立三种模型
数据模型:实体-联系图
需求分析
功能模型:数据流图
行为模型:状态转换图
数据字典是分析模型的核心
5、实体-联系图 数据模型中包含3种相互关联的信息:数据对象、数据 对象的属性、数据对象彼此间相互连接的关系。 联系可分为以下三种类型:一对一,一对多和多对
外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9]
a)拨校外电话需先拨0, 若是本市电话则再接着拨8位 数 字(第1位不是0); b)若是外地电话则拨3位区 码再拨8位电话号码(第1位不 是0)。
数字零=0
软件工程导论 第10章 面向对象分析
第10章面向对象分析不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。
分析工作主要包括3项内容,这就是理解、表达和验证。
首先,系统分析员通过与用户及领域专家的充分交流,力求完全理解用户需求和该应用领域中的关键性的背景知识,并用某种无二义性的方式把这种理解表达成文档资料。
分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。
由于问题复杂,而且人与人之间的交流带有随意性和非形式化的特点,上述理解过程通常不能一次就达到理想的效果。
因此,还必须进一步验证软件需求规格说明的正确性、完整性和有效性,如果发现了问题则进行修正。
显然,需求分析过程是系统分析员与用户及领域专家反复交流和多次修正的过程。
也就是说,理解和验证的过程通常交替进行,反复迭代,而且往往需要利用原型系统作为辅助工具。
面向对象分析(OOA)的关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。
在用面向对象观点建立起的3种模型中,对象模型是最基本、最重要、最核心的。
10.1面向对象分析的基本过程10.1.1 概述面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。
通常,面向对象分析过程从分析陈述用户需求的文件开始。
可能由用户(包括出资开发该软件的业主代表及最终用户)单方面写出需求陈述,也可能由系统分析员配合用户,共同写出需求陈述。
当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。
需求陈述通常是不完整、不准确的,而且往往是非正式的。
通过分析,可以发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,从而使需求陈述更完整、更准确。
因此,不应该认为需求陈述是一成不变的,而应该把它作为细化和完善实际需求的基础。
在分析需求陈述的过程中,系统分析员需要反复多次地与用户协商、讨论、交流信息,还应该通过调研了解现有的类似系统。
软件工程导论第1章(第4版)
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
张海藩《软件工程导论》(第6版)(章节题库 第10章 面向对象分析)【圣才出品】
第10章面向对象分析一、选择题1._____是系统一个特定执行期间所发生的事件序列。
【答案】脚本2.功能模型描述系统内的计算,它和_____、_____共同构成系统模型结构的三大支柱。
【答案】对象模型;动态模型3.状态是对象的_____、_____的一种抽象。
【答案】属性值;链接4.在对象模型中,访问操作是直接从类的_____和_____中导出的。
【答案】属性;关联5.对象模型为建立_____和_____,提供了实质性框架。
【答案】动态模型;功能模型6.功能模型由多个_____组成,每个_____说明了操作和结束的含义。
【答案】数据流图;数据流图7.功能模型由多张数据流图组成。
数据流图中包含_____、_____、_____对象和_____对象。
【答案】处理;数据流;动作;数据存储8.事件跟踪图用来表示_____、_____对象和_____对象。
_____和_____可用一条垂直线表示,各_____用水平箭头表示,箭头方向是从_____对象指向_____对象。
【答案】事件;事件的接收;发送;接收对象;发送对象;事件;发送;接收9.状态转换图是_____的重要工具。
【答案】启发分析员认识对象服务10.说明一个状态可采用_____、_____、_____、_____、_____等内容描述。
【答案】状态名;状态目的描述;产生该状态的事件序列;表示状态特征的事件;在状态中接收的条件二、填空题1.一个()能用不同的方法表示它的特征。
A.事件B.抽象C.状态D.脚本【答案】C【解析】状态是对象的属性值和链接的一种抽象。
根据影响对象总的行为的性质,一系列组合在一起是一个状态。
它能用不同的方法表示它的特征。
2.在对象模型中,访问操作是直接从类的属性和关联中导出的。
下列不是对象模型的访问操作的是()。
A.查询B.动作C.抽象D.活动【答案】C【解析】对象模型的访问操作主要包括三大类:查询、活动和动作。
3.()对整个对象的状态/行为关系的图示,它附属于该对象的类描述模板。
软件工程导论课件第10章-面向对象的分析(第六版)(张海潘编著)
步骤: 理解----用户、分析员和领域专家 表达----需求规格说明书(对象模型、动态模型、功能模型)
验证----二义性,完善性
对象模型最基本、最重要、最核心。
6
第6页,共63页。
10.1 面向对象分析的基本过程
2、3个子模型与5个层次
3个子模型 在面向对象分析中,主要由对象模型、动态模型和功能模型
10
第10页,共63页。
10.2 需求陈述
10.2.2 实例:自动取款机(ATM)系统
ATM机系统问题描述
银行网络中包含柜员和 ATM,ATM 被共享中心所分享。
每家银行利用自己的计算机维护自己的账户并处理账户所属的交 易,这些交易包括存款和取款。
某些银行拥有自己的柜员站,柜员站直接和该银行的计算机通信, 柜员键入账户数据和交易数据。
29
第29页,共63页。
经过筛选之后,得到ATM系统中各个类的属性,如图所示: 图中还标出了一些限定词:“卡号”、“分行代码”、“账号”、“雇员
号”、“站号”
30
第30页,共63页。
10.3.5 识别继承关系
建立类间的继承是为了共享其公共性质/属性。
继承也对类按层次加以组织。 继承关系反映出一定深度的领域知识,需领域专家密
拥有 ATM
➢ 储户
拥有 帐户
➢ 分行计算机 维护 帐户
➢ ……
…… ……
2)需求陈述中隐含的关联
➢ 分行
组成 总行
➢ 分行
保管 帐户
➢ ……
…… ……
3)根据问题域知识得出的关联
➢ 现金兑换卡 访问 帐户
➢ 分行
雇用 柜员
(NEW)张海藩《软件工程导论》(第6版)配套题库【名校考研真题+课后习题+章节题库+模拟试题】
一、选择题
1.软件工程是采用( )的概念、原理、技术方法指导计算机 程序设计的工程学科。[中国传媒大学2014研]
A.工程 B.系统工程 C.体系结构 D.结构化设计 【答案】A 【解析】软件工程是采用工程的概念、原理、技术和方法来开发与 维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最 好的技术方法结合起来,从而经济地开发出高质量的软件,并且进行有 效地维护。 2.随着开发小组人数的( ),因交流开发进展情况和讨论遇 到的问题而造成的通信开销也急剧增加。[中国传媒大学2014研] A.增加 B.降低 C.稳定 D.不稳定 【答案】A 【解析】当开发小组变得更大时,即开发小组人数增加时,每个人 需要用更多时间与组内其他成员讨论问题、协调工作,因此,通信开销
12.为了解决软件危机,人们提出了用( )的原理来设计软 件。[中国传媒大学2013研]
A.运筹学 B.工程学 C.软件学 D.数学 【答案】B
【解析】为了解决软件危机,通过采用软件工程来指导软件的设 计。软件工程是采用工程的概念、原理、技术和方法来开发与维护软 件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技 术方法结合起来,以经济地开发出高质量的软件并有效地维护。
16.结构化维护与非结构化维护的主要区别在于( )。[中国 传媒大学2013研]
A.软件是否结构化 B.软件配置是否完整 C.程序的完整性 D.文档的完整性
【答案】B 【解析】非结构化维护需要付出很大代价,这种维护方式是没有使 用良好定义的方法学开发出来的软件的必然结果;结构化维护是在软件 开发的早期应用软件工程方法学的结果。因此,结构化维护与非结构化 维护的主要区别是软件配置的完整性,有了软件的完整配置能减少精力 的浪费并且能提高维护的总体质量。 17.下面是被测模块的流程图。测试数据为:A=1,B=0,X=3; A=2,B=1,X=1。判断符合如下哪个等级的逻辑覆盖:( )。
软件工程导论课后习题答案.
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工程的本质特征:(1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化(4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具(5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户(7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径:(1) 对计算机软件有一个正确的认识(软件≠程序)(2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目(3) 推广使用在实践中总结出来的开发软件的成功技术和方法(4) 开发和使用更好的软件工具三、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.4.1 编写脚本
编写脚本的过程,实质上就是分析用户对系 统交互行为的要求的过程。在编写脚本的过程中, 需要与用户充分交换意见,编写后还应该经过他们 审查与修改。 动态分析寻找事件的开始,然后确定各对象 的可能事件的顺序。 例:要建一个自动取款机的动态模型,就要找出 取款事件、存款事件、查询事件。
10.3.4 确定属性
属性通常用形容词或名词词组来表示。 先列出属性,再删除不必要和不正确的属性。 识别属性的启发性策略:
1. 按一般常识确定。对象的某些属性很直观,如:对 象“人”应该具有姓名、性别、年龄等属性。 2. 在当前的问题域中,对象应有的属性。如:商品的 条形码在超市中是重要属性。
3. 根据系统的责任要求确定属性。如:信用卡的透支 等级。 4. 为对象在操作中实现特定功能,增设属性。如:为 实现温度传感器的报警功能,需设立属性“临界值” 5. 寻找用户给出的需求说明中作定语的词汇。如:红 色的汽车,30岁的人,晴朗的天等,这些定语词汇 都可能是相应对象的属性。
• 接下来分析确定问题域中对象彼此之间的关系。 “每天工作安排”和“每周工作安排”有许多 共同点,可以从它们泛化出一个父类“工作安 排”。此外,问题域的对象之间还有下述关联 关系:牙科诊所诊治多名病人;一位病人有一 份病人记录;一位病人可能预约多次也可能一 次也没预约;牙科诊所在一段时间内将打印出 多份病人清单;牙科诊所开业以来已经建立了 多份预约登记表;预约登记表中记录了多位病 人的预约;根据预约登记表在不同时间可以制 定出不同的工作安排。 • 综上所述,可以画出图中所示的牙科诊所管理 系统的对象模型。
第10章 面向对象分析
10.1 10.2 10.3 10.4 10.5 10.6 10.7 习题 面向对象分析的基本过程 需求陈述 建立对象模型 建立动态模型 建立功能模型 定义服务 小结
10.1 面向对象分析的基本过程
1. OOA阶段
面向对象的分析(OOA)是软件生命周期的一个 阶段,具有一般分析方法所共有的内容、目标及策 略。 也是使用面向对象的概念、原理、分析问题 域、求解问题域的重要阶段。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
10.3.3 划分主题(建立包图)
在开发大型、复杂系统的过程中,为了降低复杂 程度,人们习惯于把系统再进一步划分成几个不同的 主题,也就是在概念上把系统包含的内容分解成若干 个范畴。
对一个较为复杂的系统建模,要使用大量的模型 元素。把一组具有较强联系的类组织在一起而得到的 类的集合,不但可以控制模型的复杂度,有助于理解, 也有助于开发。
3. 建立动态模型可以安排在基本模型建立之后也可同 时进行。
4. 建立详细说明的活动应该分散进行,并结合 在其他活动之中。最后做一次集中的审查与 补充。 5. 原型开发可反复的进行,开发早期的原型主 要用于证实用户的需求。 6. 分析较小的系统时,可以省略分包的活动, 在分析大中型系统时,可以按需求先划分包, 根据包进行分工。
包图是一种比类和对象抽象层次更高、力 度更大,用以建立系统的高层抽象视图。 包图是在OOA基本模型(类图对象图)之上 建立一个能够帮助人们从不同的认识层次来理解 系统的补充模型。
• 包可直接理解为命名空间,文件夹,是用来组织图形 的封装,包图可以用来表述功能组命名空间的组织层 次。 • 在面向对象软件开发的视角中,类显然是构建整个系 统的基本构造块。但是对于庞大的应用系统而言,其 包含的类将是成百上千,再加上其间“阡陌交纵”的 关联关系、多重性等,必然是大大超出了人们可以处 理的复杂度。这也就是引入了“包”这种分组事物构 造块。 • 包的作用是: 1)对语义上相关的元素进行分组; 2)定义模型中的“语义边界”; 3)提供配置管理单元; 4)在设计时,提供并行工作的单元; 5)提供封装的命名空间,其中所有名称必须惟一
系统将核实病人的名字并提供记录的病人数据, 数据包括病人的病历号等。在每次治疗或清洗 后,助手或保健员将标记相应的预约诊治已经 完成,如果必要的话会安排病人下一次再来。 系统能够按病人姓名和按日期进行查询,能够 显示记录的病人数据和预约信息。接待员可以 取消预约,可以打印出前两天预约尚未接诊的 病人清单。系统可以从病人记录中获知病人的 电话号码。接待员还可以打印出关于所有病人 的每天和每周的工作安排。
2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• 通常,通过词法分析找到的候选对象中 有许多并不是问题域中真正有意义的对 象,因此,必须对这些候选对象进行严 格的筛选,从中删去不正确的或不必要 的,只保留确实应该记录其信息或需要 其提供服务的那些对象。 • 具体说到牙科诊所问题,“王大夫”只 不过是牙医的一个实例,实际上,本软 件系统的主要功能是管理病人的预约, 并不关心诊所内每名工作人员的分工, 因此,牙医、牙科助手、牙科保育员和 接待员都不是问题域中的对象;
• 答:从对牙科诊所问题的陈述中,可以 找出下列名称作为对象的候选者: • 王大夫,小镇,牙科诊所,牙科助手, 牙科保育员,接待员,软件系统,预约, 病人,预约登记表,就诊时间,预约时 间,约定时间,系统,名字,记录的病 人数据,病历号,姓名,日期,预约信 息,病人清单,病人记录,电话号码, 每天工作安排,每周工作安排。
10.4.2 设想用户界面确定所有事件
确定所有事件、条件和外部事件,事件包 括所有来自用户和设备的输入信息和发行出去 给用户和设备的输出信息。不要有遗漏、异常 事件和条件。
10.4.3 画事件跟踪图(顺序图)
一、确定事件 应该仔细分析每个脚本,以便从中提取出所有外 部事件。事件包括系统与用户( 或外部设备 ) 交互的所有信 号、输入、输出、中断、动作等 等。
一般说来,使用两种方式建立继承(即泛化)关系: 1)自底向上,把现有类的共同性质一般化成一个父类, 如:月报表、日报表、组成一个大类报表。 2)自上向下,把现有类再细化成更小的类,例:菜单 细化成固定菜单、顶部菜单、弹出菜单、下拉菜单等。
10.3.6 反复修改
对象建模不可能一次就保证模型是 完整正确的,面向对象开发的整个过程, 就是不断完善的过程,有些细化和完善工 作是在设计阶段才开始,即在设计和实现 过程中发现问题再回来细化和完善。
• “记录的病人数据”实际上就是“病人记 录”,可以统一使用“病人记录”作为 对象名;“病历号”和“电话号码”是 病人记录的属性,不是独立的对象;从 问题陈述可知,“病人清单”是已预约 但尚未就诊的病人名单,应该包含病人 姓名、预约的就诊时间等内容,它和 “预约信息”包含的内容基本相同,可 以只保留“病人清单”作为问题域中的 对象。
10.3.1 确定类与对象
类与对象是在问题域中客观存在的,系统分析员 的主要任务就是通过分析找出这些类与对象。首先找 出所有候选的类与对象,然后从候选的类与对象中筛 选掉不正确的或不必要的。
10.3.2 确定关联
两个或多个对象之间的相互依赖、相互 作用的关系就是关联。 1.大多数关联可以通过直接提取需求陈述中的 动词词组而得出。 2.通过分析需求陈述,还能发现一些在陈述中 隐含的关联。 3.最后,分析员还应该与用户及领域专家讨论 问题域实体间的相互依赖、相互作用关系, 根据领域知识再进一步补充一些关联。
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
OOA具体过程看下图:
获取用户基本需求
标识类和对象
定义类的结构和层次 表示类(对象)间的关系 为对象行为建模
建立对象模型
8. 实施OOA过程的几点建议:
1.ቤተ መጻሕፍቲ ባይዱ把对系统的需求的捕获与描述放在分析工作的开始。 通过定义用况和建立用况图对用户需求进行规范化 的描述。 2. 把建立基本模型的三个活动安排得比较接近,根据 需要随时从一个活动切换到另一个活动。
3. OOA特点1
OOA采用的概念与问题域的事务保持了最大程度 的一致,对象、对象的属性和操作的命名都强调与 客观事务保持一致。
4. OOA特点2
OOA模型不考虑与系统的具体实现有关的因素例 如采用什么编程语言、用户界面、数据库等,因此 OOA模型独立于具体的现实环境。OOD则是针对系统 的具体实现。
5. OOA的目标是: 建立一个符合问题域、满足用户需求的OOA模型。 6. 用面向对象方法开发软件,通常建立3种形式的模 型,分别是: 描述系统静态的对象模型(类图), 描述系统控制结构的动态模型 描述系统功能的功能模型
7. OOA过程
建立静态模型 描述系统的结构特征,类图。 建立动态模型 描述系统的动态行为特征,交互图、活动图和状 态图。 建立功能模型 描述系统的功能的用例图 写详细说明 注意:三个模型的建立不需要按顺序,不分先后。
4. 建立动态模型的步骤:
第一步,是编写典型交互行为的脚本。 第二步,从脚本中提取出事件,确定触发每个事件的 动作对象以及接受事件的目标对象。 第三步,排列事件发生的次序,确定每个对象可能有 的状态及状态间的转换关系,并用顺序图、状态图 描绘它们。 第四步,比较各个对象的状态图,检查它们之间的一 致性,确保事件之间的匹配。