收藏 分享(赏)

软件工程概论课后答案.doc

上传人:tangtianxu2 文档编号:2890493 上传时间:2018-09-29 格式:DOC 页数:30 大小:235.51KB
下载 相关 举报
软件工程概论课后答案.doc_第1页
第1页 / 共30页
软件工程概论课后答案.doc_第2页
第2页 / 共30页
软件工程概论课后答案.doc_第3页
第3页 / 共30页
软件工程概论课后答案.doc_第4页
第4页 / 共30页
软件工程概论课后答案.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、第 1 章 作业参考答案1第 1 章 软件与软件工程的概念1.1 举出你所知道的应用软件的例子。办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。1.2 认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果

2、相当于建筑设计的设计图纸。1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。典型表现:(1)对软件开发成本和进度的估计常常很不准确。(2)用户对“已完成的 ”软件系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例逐年上升。(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。 产生软件危机的原因: 除了软件本身的特点,其原因主要有以下几个方面: (1

3、) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。(2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。(3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。第 1 章 作业参考答案21.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到

4、的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.6 简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么?(1) 问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么” 。可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值得做?” 。(2) 需求分析:这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”这个问题。(3) 软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制定设计方案,把已确定的各项需求转换成相应的软件体系结构。结构中的每一组成部分都

5、是意义明确的构件,此即所谓概要设计。进而具体描述每个构件所要完成的工作,为源程序编写打下基础,此即所谓详细设计。(4) 程序编码和单元测试:本阶段要解决的问题是“正确地实现已做的设计” ,为此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。(5) 集成测试和系统测试:集成测试的任务是将已测试过的模块按设计规定的顺序组装起来,在组装的过程中检查程序连接的问题。系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定

6、已开发的软件是否符合用户需求,能否交付用户使用。为了更有效地发现系统中的问题,通常这个阶段的工作由开发人员、用户之外的第三者承担。(6) 运行维护:已交付的软件投入正式使用,便进入运行维护阶段。这一阶段可能持续若干年。软件在运行中可能由于多方面的原因,需要对它进行维护。通常有四种类型的维护:改正性维护、适应性维护、完善性维护和预防性维护。1.7 常见的软件生存期模型主要有哪些?每种模型的优缺点是什么?常见的软件生存期模型主要有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型和统一过程。第 1 章 作业参考答案3(1) 瀑布模型优点:可强迫开发人员采用规范化的方法;严格地规定了每个阶段必须提

7、交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要;用户往往需要等待很长时间才能看到可以运行的程序;适应需求变更的能力比较差。适用范围:瀑布模型只适用于项目开始时需求已确定的情况。 (2) 快速原型模型优点:有助于满足用户的真实需求;原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。缺点:要求开发人员快速建立原型。适用范围:适用于需求不明确的软件项目。(3) 增量模型优点: 能在较短时间内向用户提交可完成一些基本功能的产品,即从第一个构件交

8、付之日起,用户就能做一些有用的工作。 逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。 项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。 优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试。缺点: 在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。 软件体系结构必须是开放的,即向现有产品中加入新构件的过程必须简单、方便。适用范围:适用于工期紧张、功能可以划分、比较复杂的软件项目。软件工程师必须有较高的技术水平,

9、能够设计出开放的软件体系结构。(4) 螺旋模型优点: 第 1 章 作业参考答案4 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标; 减少了过多测试或测试不足所带来的风险; 在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。缺点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。 适用范围:适用于内部开发的大型软件(开发周期长、比较容易受到社会因素影响的软件项目) ,软件开发人员具有丰富的风险评估知识和经验。(5)

10、喷泉模型优点:在开发过程中使用统一的概念和方法,各阶段之间没有明显的界限,容易实现各个开发过程的多次反复迭代,达到了认识的逐步深化,降低了出错的可能性。缺点:由于各个阶段之间的界线不明确,容易造成软件开发过程的无序。适用范围:适用于面向对象的软件开发。 (6) 统一过程优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供了较大的通用性。缺点:RUP 只是一个开发过程,并没有涵盖软

11、件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。适用范围:适用于基于构件的软件开发。第 2 章 软件工程方法与工具2.1 软件工程的三种基本要素是什么,各自的作用是什么?软件工程的三种基本要素是方法、工具和过程。(1) 软件工程方法(method)为建造软件提供技术上的解决方法(“如何做”)。目第 1 章 作业参考答案5前使用得最广泛的方法是传统方法(结构化方法)和面向对象方法。(2) 工具为方法的运用提供自动的或半自动的软件支撑环境。(3) 过程是为了获得高质量的软件所需要完成的一系列任务的

12、框架,它规定了完成各项任务的工作步骤。2.2 简述传统方法和面向对象方法的特点。(1) 传统方法的特点传统方法也称为生命周期方法或结构化范型。它采用结构化技术来完成软件开发的各项任务。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务。每一个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始标准。 传统方法的主要缺点是在适应需求变化方面不够灵活,另外,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。(2)面向对象方法的特点面向对象方法把数据和行为看成同等重要,是将数据和对数据的操作紧密地结合起来

13、的方法,这也是面向对象方法与传统方法的重要区别。面向对象方法的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识问题和解决问题的方法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致。对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势。2.3 形式化方法的特点是什么?形式化方法的主要特点是:(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。通过一系列变换将形式的规格说明细化成为程序。 2.5 安装 Rational Rose2000/2002/2003,并

14、练习基本操作。略。第 1 章 作业参考答案6第 3 章 软件需求获取与结构化分析方法3.1 为什么结构化分析要叫“结构化”?有其他可替代的术语吗?“结构化”一词应来源于“结构化程序设计”,先有“结构化程序设计”的思想,后有结构化设计及结构化分析。有时称传统的分析方法,指的就是结构化分析方法。3.2 顶层数据流图或称环境图的作用是什么?顶层数据流图(或称环境图)仅包括一个数据处理过程,也就是要开发的目标系统。其作用如下:(1) 确定系统在其环境中的位置,与系统有联系的外部实体(包括硬件、软件、组织机构及人)有哪些。(2) 通过确定系统的输入和输出与外部实体的关系确定系统的边界,也就是要确定哪些功

15、能或处理属于系统范围之内,哪些属于系统范围之外,需要由其他系统处理或人工处理。3.3 在对数据流图进行分解时需要注意哪些问题?在对数据流图进行分解时,需要注意以下两个问题:(1) 当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。(2) 注意分层细化时对编号的处理方法。3.4 银行存款业务如下:客户到银行柜台存款时,首先填写存款单(包括帐号、姓名、存款金额、存款类型),如果还没有开户,则需要先开户,填写开户单(包括姓名、身份证号、地址、电话、是否留密码)。填写完存款单或开户单后,交给营业员,营业员将存款单或开户单信息输

16、入计算机,系统记录开户信息或存款单信息,如果是开户并选择留密码,则需要客户输入密码。最后印出开户单或存款单给用户。请画出银行存款业务的分层数据流图(至少画出两层)。(1) 识别外部实体及输入输出数据流 外部实体:储户、业务员。输入数据流:存款单,开户单,密码。可以将存款单和开户单抽象为事务。输出数据流:存款单,开户单。(2) 顶层数据流图第 1 章 作业参考答案7(3) 一层数据流图对银行储蓄系统进行分解,从大的方面分解为接收事务、处理开户、处理存款三部分,得到一层数据流图。 (4) 二层数据流图对 “处理存款”及“处理开户”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理开户的数

17、据流图。 处理存款的数据流图第 1 章 作业参考答案8处理开户的数据流图3.5 按照以下描述,画出 ER 图。一本教材由许多章组成,每一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。ER 图如下:教材 章 节小结 习题序号 标题 序号 标题第 1 章 作业参考答案9第 4 章 结构化设计方法4.1 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?在“编写”程序时并没有设计软件。软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。4.4 是否存在一种情况:复杂问题需要较少的工作去解决?这样的情况对模块化观点有什么影响?通过对复杂的问题进

18、行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。这种情况能够较好地支持模块化的观点,每个子问题用单独的模块去解决,模块之间应该是高内聚、低耦合的,这样才能减少工作量,否则,虽然每个模块的工作简单了,但模块之间的联系很复杂,也增加了问题解决的难度和工作量。4.8 用面向数据流的方法设计第 3 章习题 3.4 所描述的银行存款业务的软件结构,并使用改进方法对模块结构进行精化。(1) 对第 3 章习题 3.4 给出的数据流图进行精化,确定其边界,如下图所示。(2) 对上图按事务型数据流进行处理,完成第一级分解,得到顶层和一层模块结构图。第 1 章 作业参考答案10第一级分解

19、后的结构图(3) 完成第二级分解。对上图所示的“输入数据”、“输出数据”和“调度”模块进行分解,得到未经精化的输入结构、输出结构和事务结构。未经精化的输入结构未经精化的输出结构存款业务输入数据 调度 输出数据输入数据输入事务 输入密码输出数据打印存款单 打印开户单调度处理存款 处理开户记录存款信息 记录开户信息 记录密码第 1 章 作业参考答案11未经精化的事务结构将上面的三部分合在一起,得到初始的软件结构,如下图所示。初始软件结构图(4) 对软件结构进行精化。1) 由于调度模块下只有两种事务,因此,可以将调度模块合并到上级模块中,如图所示。将调度模块合并到上级模块后的软件结构2) “记录密码

20、”模块的作用范围不在其控制范围之内(即“输入密码”模块不在“记录密码”模块的控制范围之内),需对其进行调整,如图所示。存款业务输入数据 调度 输出数据输入事务 输入密码 打印存款单 打印开户单处理存款 处理开户记录存款信息 记录开户信息 记录密码存款业务输入数据 输出数据输入事务 输入密码 打印存款单 打印开户单处理存款 处理开户记录存款信息 记录开户信息 记录密码存款业务输入事务 输出数据输入密码打印存款单 打印开户单处理存款 处理开户记录存款信息 记录开户信息 记录密码第 1 章 作业参考答案123) 提高模块独立性,对模块结构进行调整,如下图所示。调整后的模块结构图4.9 将大的软件划分

21、成模块有什么好处?是不是模块划分得越小越好?划分模块的依据是什么?将大的软件划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责。这种方法有利于将复杂的问题简单化,是分而治之策略的具体表现。尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了;但是,随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。 划分模块的依据是,模块只具有单一的功能且与其他模块没有太多的联系。4.11 结构化程序设计禁止使用 goto 语句吗?如果程序中使用了 goto 语句,是否就可以断定它

22、是非结构化的?结构化程序设计并不禁止使用 goto 语句。如果程序中使用了 goto 语句,并不能断定它是非结构化的。4.12 对于给定的算法,如何判断它是否是结构化的?对于给定的算法,如果符合以下三条原则,就可以判断它是结构化的。(1) 使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。(2) 选用的控制结构只准许有一个入口和一个出口。(3) 程序语句组成容易识别的块(Block ),每块只有一个入口和一个出口。存款业务输入事务输入密码打印存款单 打印开户单处理存款 处理开户记录存款信息 记录开户信息 记录密码第 1 章 作业参考答案134.13 对于图 4-49 所示的流程图,

23、试分别用 N-S 图和 PAD 表示之。 图 4-49 流程图对应的N-S图如下: 对应的PAD如下:4.14 图 4-50 所示的流程图完成的功能是使用二分查找方法在 table 数组中找出值为 item的数是否存在。(1) 判断此算法是否是结构化的,说明理由。(2) 若算法是非结构化的,设计一个等价的结构化算法,并用 N-S 图表示。FSTARTABQENDTFTPwhile PABuntil !Qwhile PAuntil !Q B第 1 章 作业参考答案14FFFTFFtable(i)item(finish-start)1table(start)=itemtable(finish)=i

24、temflag=0 flag=1i(startfinish)/2table(i)=itemtable(I)1 (minOfB- maxOfC)2 result; (3) 下一步可以继续对 2.1 和 3.1 进行细化。具体略。4.16 设计算法完成下列任务:输入一段英文后,无论输入的文字都是大写,还是小写,或大小写任意混合,都能将其整理成除每个句子开头字母是大写外,其他都是小写的文字。假设在输入的文字中,两个单词间只允许是空格、,、.、?、!,则在输出的文字中,大写的情况有以下几种:(1) 整段文字的第一个字母是大写;(2) “.”后的第一个字母是大写;(3) “?”后的第一个字母是大写;(4

25、) “!”后的第一个字母是大写;设变量 a 存储输入的字符串,变量 b 存储结果字符串,变量 c 存储当前处理的字符,变量 e 存储 c 之前的字符(当 c 为第一个字符时除外)。算法如下:输入字符串 a, n = strlen(a)如果 a 的第一个字符是字母,则转成大写。b0=a0for ( i=1; iaj+1) temp=aj; aj=aj+1; aj+1=temp;改进后的代码如下:for (i=1; iaj+1) temp=aj; aj=aj+1; aj+1=temp;第 1 章 作业参考答案195.7 请对下面代码的布局进行改进,使其符合规范其更容易理解。for (i=1; ib

26、i) bi = aij; /*求 a 中每一列的最小值数组 c*/ for (j=0; j bi) minOfB = bi;/*求数组 c 中的最大值maxOfC*/ maxOfC = c0;for (i=1; i7 个(3)首字符 “京”(4) 非“京”(5)第 2 个字符 字母(6) 非字母(7)第 37 个字符 数字(8) 非数字(9)测试用例如下:1)京 H87774 (1),(4),(6),(8)2)京 H8777 (2)3)京 H877745 (3) 4)冀 H87774 (5)5)京 987774 (7)6)京 BA7774 (9) 6.6 比较 测试与 测试,说明其异同。 测试

27、与 测试都是集成测试之后所进行的测试,都属于系统测试。所不同的是,测试是在开发环境中所做的测试,主要由开发方人员进行。而 测试则是在用户实际工作环境中所做的测试,不受开发人员的干预。补充题:设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IF A5THEN X=10ELSE X=1END IFINPUT(A,B,C)A5X=10 X=1B10Y=20 Y=2Y NY NC15Z=30 Z=3Y NPRINT(X,Y,Z)第 1 章 作业参考答案23IF B10THEN Y=20ELSE Y=2END IFIF C15THEN Z=30ELSE Z=3END IF

28、PRINT(X,Y,Z)STOP设输入数据为,输出数据为。语句覆盖测试用例:【,】, 【,】路径覆盖测试用例:【,】【,】【,】【,】【,】【,】【,】第 1 章 作业参考答案24【,】第 7 章 统一建模语言 UML 概述7.2 UML 中有哪些关系?解释类图中聚合和关联的相同点和不同点。在 UML 中,常见的关系有泛化、聚合、关联、依赖和实现。在类图中,关联是一种结构关系,它描述了两个或多个类的实例之间的连接关系。聚合描述了整体和部分之间的结构关系。按照关联关系的定义,聚合属于一种特殊的关联关系,只不过这种关联关系具有明确的整体-部分含义而已。从耦合度的角度看,聚合关系要强于关联关系。7.

29、4 讨论顺序图与协作图的关系,何时用顺序图建模优于协作图建模,以及相反的情况。顺序图和协作图都能描述对象间的交互关系,但两者的侧重点不同,顺序图着重表现交互的时间顺序,协作图则着重表现交互对象的静态链接关系。但即使他们各有侧重,但从语义上来说是等价的,可从一种图自动转换为另一种图。一般情况下,当需要强调消息传递的时间顺序时,采用顺序图;当表示涉及很多对象的模型时,协作图比顺序图更形象。顺序图在分析中更常用,而协作图则在设计中更常用。7.5 考虑银行系统中的帐户会有哪几种状态,画出帐户对象的状态图。账户的状态包括开户、正常使用、透支、休眠、冻结和注销。账户对象的状态图如下图所示。第 8 章 面向

30、对象分析8.1 比较面向对象的分析方法和面向数据流的分析方法,阐述它们各自的特点。面向对象的分析方法使用用例模型来表示用户的功能需求,用例模型相当于功能模型,在对用例模型进行细化的过程中,也伴随着对功能的分解。但面向对象的分析方法并不是以功能分解为核心,在获取并分析用户的功能需求之后,重点以类和对象为核心,建立对第 1 章 作业参考答案25象模型,交互模型也是围绕对象模型进行的。面向数据流的分析方法是从建立顶层数据流图(环境图)开始,之后逐层对加工进行分解。面向数据流的分析方法是以功能分解为核心的。8.2 面向对象分析需要建立的三个模型是什么?面向对象分析需要建立的 3 个模型是:由用例和场景

31、表示的功能模型(用例模型) ;用类和对象表示的静态模型(对象模型) ;由状态图和顺序图表示的动态模型(交互模型) 。8.3 用例建模的主要步骤是什么?用例建模的主要步骤如下:(1) 确定业务参与者可以是与系统有交互的外部硬件、软件、组织、人等。(2) 确定业务需求用例参与者需要系统提供的完整功能。(3) 创建用例图标识参与者与用例之间、用例与用例之间的关系。8.5 用例与用例之间的关系主要有哪两种?其区别是什么?用例之间的关系主要有包含 (也称使用 )和扩展 。包含表示一个用例所执行的功能中总是包括被包含用例的功能;扩展是指一个用例的执行可能需要由其他用例的功能来扩展, 扩展联系可用于对期望或

32、可选的行为建模,但其主要用途是使基本用例的功能不依赖于扩展用例。8.6 对于复杂的系统,其对象模型应该由哪五个层次组成?对于复杂的系统,对象模型应该由下述 5 个层次组成:主题层(也称为范畴层) 、类-对象层、结构层、属性层和服务层,如图所示。对象模型的五个层次8.7 解释关联类的作用,在什么时候需要使用关联类?关联类的作用是描述关联的属性。在关联关系比较简单的情况下,关联关系的语义用关联关系的名字来概括。但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问,为此可以建立关联类(association class ) 。8.8 按照以下描述,画出 UML 类图:一本教材由许多章组成,每

33、一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。第 1 章 作业参考答案26UML 类图如下:8.9 考虑一个计算机超市,出售硬件、外设和软件。分析谁是这个系统的参与者?这个系统有哪些主要用例?画出用例图。系统的参与者:系统管理员(administrator) ,售货员(salesperson ) ,客户(customer ) 。主要用例编号 参与者 用例 说明1Maintain product information(维护商品信息)增加、修改、删除商品信息(商品编号、名称、型号、价格)2administratorMaintain membership information(维护

34、会员信息) 增加、修改、删除会员信息(会员编号、姓名、身份证号、办卡日期)3Scan membership card(扫描会员卡)在商品出售之前,系统通过扫描仪刷卡(会员卡)来确认顾客的会员身份4Scan product code(扫描商品的条形码)通过扫描商品的条形码,自动识别商品的名称和价格5salespersonInput amount of product(输入商品数量)对于已经扫描的条形码,手工输入购买的此件商品的数量6salesperson,customerAccept payment(接收现金付款)Charge payment to card(使用银行卡付款)7 salesper

35、son Print receipt(打印收据)用例图如下:第 1 章 作业参考答案27第 10 章 面向对象设计10.1 软件模块之间的依赖性可以从哪些角度和抽象层次进行分析?在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。 10.2 消除包之间循环依赖性的方法是什么? 本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下:在下图中,包 A 依赖于包 B,反过来包 B 又依赖包 A,构成了循

36、环依赖。具体解决办法是:将包 B 依赖的包 A 中的元素从包 A 中分离出来,组成包 C,使得包 B 不再依赖包A,而是依赖包 C。第 1 章 作业参考答案2810.3 请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML 规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑

37、和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。选择你熟悉的编程语言说明怎样定义一个构件。(略)10.4 典型的面向对象设计模型在逻辑上由哪几部分组成?

38、对每一部分进行设计时所包含的主要内容是什么?典型的面向对象设计模型在逻辑上将系统划分为 4 个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。 1) 问题域部分的设计在面向对象设计过程中,可能要对面向对象分析所得出的问题域模型进行补充或调整。例如,调整需求、复用已有的类、把问题域类组合在一起、增添泛化类以建立类间的协议、调整继承的支持级别、改进性能等。2) 人机交互部分的设计人机交互界面的设计质量直接影响到用户对软件的使用。在设计阶段,必须根据需求把交互细节加入到用户界面设计中,包括人机交互所必需的实际显示和输入。3) 任务管理部分的设计任务管理主要包括任务的选择和调整。常见

39、的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务和协调任务等。设计任务管理子系统时,需要确定各类任务,并将任务分配给适当的硬件或软件去执行。4) 数据管理的设计在采用面向对象方法进行软件开发时,数据的存储还是普遍使用关系数据库。在面向对象设计中,可以将 UML 类图看作是数据库的概念模型,一个类可以映射为一个表或多个表,此外,还要考虑类之间的关联关系、继承关系的映射。10.5 用面向对象方法设计网上购书系统的软件结构,网上购书系统的业务如下:某书店为方便客户通过 Internet 购买相关图书,开发一个“网上购书系统”,客户可以通第 1 章 作业参考答案29过 Web 页面注册并登录

40、“网上购书系统”,通过 Web 页面查看、选择图书,系统根据用户选择的图书单价、数量,系统自动生成订单,并计算总价格。客户在提交订单之前,必须填写关于寄送地址和发票及付款方式等细节,一旦订单被提交,系统显示确认信息,并附上订单的详细信息。客户可以在线查询订单的状态。系统管理人员查看客户的订单,验证客户的信用和付款方式,向仓库请求所购图书,打印发票并发货。本系统从逻辑结构上分为三层,Web 页面层,业务逻辑层和数据库层。 Web 页面层负责接收用户的请求,业务逻辑层在获知用户请求后,执行相应的业务逻辑,向数据库层发出数据请求,获得所需要的数据后,通知 Web 页面层将数据呈现给用户。从业务的角度,又可以将系统划分为订购管理、客户信息管理和系统管理三个子系统(包)。系统的软件结构如图所示。10.6 对 10.5 中的网上购书系统设计其问题域的类图。问题域类包括客户、信用信息、订单、图书、发票及发货单。类图如下所示:第 1 章 作业参考答案30

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报