《软件设计与体系结构课后习题答案秦航.pdf》由会员分享,可在线阅读,更多相关《软件设计与体系结构课后习题答案秦航.pdf(20页珍藏版)》请在金锄头文库上搜索。
1、牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 1 软件设计与体系结构答案 目录: 第一章.4 1.什么是软件?软件的特点是什么?软件有那些分类? 2.软件设计应该包括哪些要素?软件设计在软件工程中所处的位置和重要性如何? 3.请用自己的话说明软件体系结构。传统的建筑体系结构科学和软件体系结构有何相似之处?有何不同之处? 4.软件设计和软件体系结构有何关系?软件体系结构的出现有何必然性和重要意义? 5.在软件设计过程中,人们需要重点考虑软件系统结构的哪些方面? 第二章.5 1.什么是软件模型? 2.软件模型对软件体系结构的作用是什么? 3.常用的软件模型有哪些? 4.什么是软件模型
2、的非形式化描述和形式化描述? 5.软件体系结构设计方法中的水平型设计和垂直型设计各有什么特点? 6.什么是 ADL? 7.典型的 ADL 有哪几种? 第三章.6 1.在整个开发过程中,UML 主要起到什么作用? 2.如何利用模式解决在面向对象系统分析与设计中遇到的问题? 3.UML 中都包含哪些图?简述这些图的作用。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 2 4.简述用例图之间的关系。 5.简述协作图和序列图的区别。 6.神舟六号描述画出能正确表示它们之间关系的 UML 图。 7.某个网上银行的用户登录过程用一个时序图描述这个过程。 第四章9 1.简述抽象与逐步求精的含义
3、。 2.简述模块化与信息隐藏的关系。 3.为什么软件要追求高内聚、低耦合? 4.软件设计过程中包含哪些活动? 5.试总结本章列举的软件体系结构设计方法的特点。 第五章.10 1.选择一个熟悉的大型软件系统,分析其体系结构中用到的风格,以及表现出的特点(为什么要采用这种风格?采用这种风格带来哪些优势?具有哪些不足?) 2.选择 4 种风格,设计简单的体系结构,并实现简单的原型系统 3.不同的体系结构风格具有各自的特点、优劣和用途,试对管道-过滤器风格,分层系统、C2 风格和基于消息总线(基于事件的隐式调用)的风格进行分析比较。 第六章.13 1.简述面向对象方法支持的 3 种基本活动. 2.简述
4、面向对象的系统开发生命周期。 第七章.13 1.结构化分析需要从哪几个方面建立系统的模型?对于任意一个系统来说,结构化分析提供的每个模型都是必需的吗?如果不是请给出选择建立各种模型的依据。 2.结构化分析中的各种建模技术有何特点?为什么能刻画系统的某个方面? 3.下面是某大学图书管理系统的问题描述,请给出该系统的数据流图,并给出相应的数据字典。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 3 4.一个图书管理系统中有书目、书籍、读者、图书管理员等数据对象,根据你对这些数据对象的理解给出 ER 图。 5.一个人带着一头狼、一头羊和一颗青菜,处于河的左岸。请用状态-迁移图来描绘这一
5、过程。 第八章.17 1.简述设计良好界面的主要途径。 2.简述用户界面分析包含的内容。 3.简述用户界面设计过程及所要考虑的主要问题。 4.简述用户界面原型的实施。 5.简述用户界面设计评估。 7.举一到两个由于界面设计缺陷而可能导致非常严重后果的例子。 第九章.19 1.什么是设计模式?设计模式的目标是什么? 2.设计模式具有哪三大特点? 3.简述单例模式的两种实现方法,并说明其优缺点。 4.常用的 GOF 设计模式有几种?GOF 设计模式按照目的可分为哪三类? 5.MVC 模式是一个复合模式,请写出两种你知道的 MVC 中使用的模式。 6.简述面向对象程序设计的六大基本原则 7.在面向对
6、象程序设计中,经常需要避免过多地使用 case 语句或者 if 语句 8.某房地产公司准备开发一套房产信息管理系统,如果对上述场景编程,那么上述(1)和(2)可能会用到哪些设计模式? 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 4 第一章 1.什么是软件?软件的特点是什么?软件有那些分类? 计算机软件是由专业人员开发并长期维护的软件产品; 特点: 1)软件不是在传统意义上生产制造的,而是由设计开发的; 2)软件不会像硬件那样磨损和老化; 3)随着构件构造模式的发展,软件需要根据实际需求定制; 分类:计算机软件分为 7个大类: 系统软件应用软件嵌入式软件科学和工程计算软件产品线软
7、件人工智能软件Web应用软件 2.软件设计应该包括哪些要素?软件设计在软件工程中所处的位置和重要性如何? 元素:分析模型数据/类设计体系结构设计接口设计构件级设计 位置:软件需求分析-需求规格说明-软件设计-设计文档-软件编码 重要性: 软件设计是软件工程中形成质量的地方,设计为我们提供了质量评估的软件表示,设计是我们能够将用户需求准确地转化为软件产品或系统的唯一方法。是所有软件工程活动和随后的软件支持活动的基础。没有设计,就会有构造不稳定系统的风险。 3.请用自己的话说明软件体系结构。传统的建筑体系结构科学和软件体系结构有何相似之处?有何不同之处? 软件体系结构是软件系统的基本组织,包含构件
8、、构件之间、构件与环境之间的关系 ,以及相关的设计与演化原则等。 相似之处: 都是所构建系统的计划,都具有确保得到期望的特性,也是所构建系统的描述。 不同之处: 建筑师创建的是相对静止的静态描述而软件体系结构师创建的体系结构描述、代码在以后将被执行多次,靠许多组件的交互来得到期望结果。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 5 4.软件设计和软件体系结构有何关系?软件体系结构的出现有何必然性和重要意义? 1)体系结构是系统设计的一部分,突出了某些细节,并通过抽象省略掉另一些细节。所以体系结构是设计的一个子集。 2)必然性和重要意义: 软件体系结构作为控制软件复杂性、提高软
9、件系统质量、支持软件开发和复用的重要手段之一,自提出以来就受到软件研究者和实践者的关注,有了软件体系结构,设计人员或者项目管理者就能在一个比较高的层次上俯瞰软件的整体状况。同时,软件体系结构可以复用,减少开发成本,降低软件的开发风险。 5.在软件设计过程中,人们需要重点考虑软件系统结构的哪些方面? 人们需要重点考虑体系结构风格和模式;领域特定的软件体系结构;软件产品线技术; 第二章 1.什么是软件模型? 软件模型是指软件的一种抽象,目前,一般通过非数学模型来描述,本书中将统一基本单元的抽象称为软件模型。 2.软件模型对软件体系结构的作用是什么? 软件模型作为软件组成的最基本单元的抽象,既反映了
10、软件体系结构构建的核心思想,也奠定了软件体系结构构建的基础。一方面,它定义了软件体系结构构建的基本单元元素的形态;另一方面它定义了基本单元元素之间关系的基本形态。不同的软件模型隐式地定义了软件体系结构构建的不同方法。 3.常用的软件模型有哪些? 功能模型对象模型组件模型配置型组件模型服务模型抽象模型 4.什么是软件模型的非形式化描述和形式化描述? 1)非形式化描述的典型代表是基于UML的统一建模方法,大量使用了自然语言与非形式化的图形符号。 2)形式化描述是指用于软件与硬件系统的说明、开发与验证的数学化方法,形式化的基础就是数学化理论。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整
11、理 6 5.软件体系结构设计方法中的水平型设计和垂直型设计各有什么特点? 1)水平型设计是指运用通用的建模设计工具和表达语言所进行的软件体系结构的设计。所使用的建模设计工具和表达语言不是专门针对软件体系结构的,因此水平型设计具有较大的自由度及其带来的不一致性。 2)垂直型设计是指运用面向体系结构的专用建模设计工具及其表达模型所进行的软件体系结构的设计,一般来说这种专用工具针对软件体系结构的描述首先定义一种表达模型,然后围绕该模型,通过提供相应的设计工具来支持软件体系结构的设计。 6.什么是 ADL? ADL是一种用于描述的语言,它可以在指定的抽象层次上描述软件体系结构,它同样拥有形式化的语法、
12、语义以及严格定义的表达符号,或者是简单易懂的直观抽象表达。 7.典型的 ADL 有哪几种? WRIGHT C2 Darwin ACME xADL -ADL KDL 第三章 1.在整个开发过程中,UML 主要起到什么作用? UML是一种通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模,它融入了软件工程领域的新思想、新方法和新技术,它的作用域不仅支持面向对象的分析和设计,而且支持从需求分析开始的软件开发的全过程。 2.如何利用模式解决在面向对象系统分析与设计中遇到的问题? 在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起
13、来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。 3.UML 中都包含哪些图?简述这些图的作用。 类图:用来刻画软件中类等元素的静态结构和关系。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 7 对象图:显示类的多个对象实例而不是真实的类。 构件图:用于静态建模,表示构件类型的组织以及各种
14、构件之间的依赖关系。 部署图:描述系统运行时的结构,展示硬件的配置及其软件如何部署到网络结构中 用例图:列出来系统中的用例和系统外的参与者,并显示了哪个参与者参与了哪个用例的执行。 顺序图:描述对象之间的动态交互关系,着重表现对象间消息传递的时间顺序。 通信图:与顺序图不同,通信图关注参与交互的对象通过连接组成的结构。 交互概览图:类似于活动图方式,描述交互之间的流程,给出交互控制流的概览。 时序图:显示对象之间交互的图,对象按时间顺序排列。 状态图:描述一个类的实例、子系统甚至整个系统在其生命周期中所处状态如何随着外部激励而发生变化。 活动图:描述活动的顺序,展现一个活动到另一个活动的控制流
15、。 4.简述用例图之间的关系。 1)参与者之间是泛化关系,即特殊、一般化关系。 2)用例之间 有包含关系、扩展关系和泛化关系。 3)参与者和用例之间是关联关系。 5.简述协作图和序列图的区别。 协作图和序列图都表示对象之间的交互作用,区别在于序列图描述对象交互的时间顺序,协作图描述对象在交互中承担的角色,序列图可以表示对象的激活状态和去激活状态,也可以表示出对象的创建和销毁的相对时间,协作图则没有这些功能。 6.神舟六号是神舟系列飞船的一种,它由轨道舱、返回舱、推进舱和逃逸救生塔组成。航天员使用返回舱来驾驭飞船,轨道舱是航天员工作和休息的场所。在紧急情况下,航天员使用逃逸救生塔逃离。飞船的两侧
16、有多个太阳能电池翼,它为飞船提供电能。根据以上描述画出能正确表示它们之间关系的 UML 图。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 8 神舟飞船神舟飞船神州六号飞船神州六号飞船+ +提供电能提供电能()()太阳能电池翼太阳能电池翼+ +工作工作()()+ +休息休息()()+ +吃饭吃饭()()+ +漱洗漱洗()()+ +方便方便()()- -longlong( (长度长度):):doubledouble- -diameterdiameter( (直径直径) ):doubledouble轨道舱轨道舱+ +提供监测提供监测()()+ +确保温度确保温度()()+ +降落伞降
17、落伞()()+ +监测地面监测地面()()- -longlong( (长度长度) ):doubledouble- -diameterdiameter(直径直径):):doubledouble- -chairchair( (座椅座椅) ):intint返回舱返回舱+ +提供调整姿态提供调整姿态()()+ +提供调整轨道提供调整轨道()()+ +制动减速所需用的动力制动减速所需用的动力()()- -longlong( (长度长度:doubledouble) )- -diameterdiameter(直径直径):):doubledouble- -bottonDiameterbottonDiamete
18、r( (底部直径底部直径) ):doubledouble- -motormotor(发动机发动机):):stringstring- -propellantpropellant(推进剂推进剂):):stringstring推进舱推进舱+ +驾驶飞船驾驶飞船()()- -heightheight(高高):):doubledouble- -motormotor(发动机发动机):):stringstring- -parachuteparachute(降落伞降落伞)逃逸救生塔逃逸救生塔- -namename( (姓名姓名) ):stringstring- -ageage( (性别性别) ):intint
19、- -weightweight(体重体重):):intint- -heughtheught(身高身高):):decimaldecimal航天员航天员 7.某个网上银行的用户登录过程如下:用户先填写用户名和口令,要求登录。如果用户名和密码正确,则要求输入一个验证码。此时,该用户的手机上将收到一个短信,包含一个验证码,用户将此验证码填入下一个页面,再提交服务器。如果验证码正确,则能正常登录,并且验证码只能有效一次,用一个时序图描述这个过程。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 9 第四章 1.简述抽象与逐步求精的含义。 1)抽象是控制复杂性的基本策略,要求将注意力集中在某一
20、层次上考虑问题,而忽略那些低层次的细节; 2)逐步求精是更为详细的描述代替上一层次的抽象描述; 2.简述模块化与信息隐藏的关系。 模块化设计使得其所含的信息对于那些不需要这些信息的模块不可访问,每个模块只完成一个相对独立的特定功能,模块之间仅仅交换那些为完成系统功能必须交换的信息,因此模块化是信息隐藏的直接结果。 3.为什么软件要追求高内聚、低耦合? 内聚度标志一个模块内部各个成分彼此结合的紧密程度,内聚度越高越好; 耦合度是对软件结构中模块间关联程度的一种度量,在设计软件时应追求尽可能松散耦合的系统,因为这类系统中的任一模块的设计、测试和维护相对独立,模块间的联系较少,错误在模块间的传播的可
21、能性也随之变小。 :用户 :Web登录 :服务器 :用户手机 登录 输入用户名口令 登录请求 验证通过登录成功 通过并请求发送验证码 发送验证码输入验证码 验证码 登录成功 发送验证码 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 10 4.软件设计过程中包含哪些活动? 设计活动进行计划 实施体系结构设计 界面设计 模块/子系统设计 过程/算法设计 数据模型设计 5.试总结本章列举的软件体系结构设计方法的特点。 1)软件体系结构的多视图建模 通过逻辑视图,开发视图、进程视图、物理视图、进程来描述的软件体系结构。 2)基于评估与转换的软件体系结构设计 通过迭代的开发方式,直至满足客
22、户的需求 3)模式驱动的软件体系结构设计 通过总结、记录、复用来实现的体系结构设计 4)领域特定的软件体系结构设计 借鉴领域中已经成熟的软件体系结构来实现解决方案在某个领域内的复用。 5)软件产品线方法 软件复用发展的一个更高阶段,它并不仅仅局限于以前人们在软件复用中考虑的对函数、模块、类、体系结构甚至子系统的复用。 6)基于目标推理的软件体系结构设计方法 功能需求和非功能需求皆被表达为要达到的目标 7)基于属性的软件体系结构设计方法 基于目标图推理的体系结构设计方法、基于属性的体系结构设计方法 第五章 1.选择一个熟悉的大型软件系统,分析其体系结构中用到的风格,以及表现出的特点(为什么要采用
23、这种风格?采用这种风格带来哪些优势?具有哪些不足?) 对社交软件 QQ 的分析:采用 C/S风格,并且在一定程度上算三层 C/S风格 表示层:社交信息的显示,并提供了更新和搜索等操作 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 11 功能层:具有搜索、在线聊天、离线留言、文件传输等功能 数据层:有数据库服务器提供留言、相册、好友信息等数据 优点:使逻辑结构更为清晰,分类明确,给用户更好的体验 缺点:需要数据通信的支持,对网络的依赖很高,没有网络,许多功能将没有意义 2.选择 4 种风格,设计简单的体系结构,并实现简单的原型系统。 这个还没找到答案,可以自由发挥哈 3.不同的体系
24、结构风格具有各自的特点、优劣和用途,试对管道-过滤器风格,分层系统、C2 风格和基于消息总线(基于事件的隐式调用)的风格进行分析比较。 管道-过滤器风格:每个功能模块都有一组输入和输出,功能模块从输入集合读入数据流,并在输出集合产生输出数据流; 优点: 1)由于每个构件的行为不受其他构件影响,因此整个系统的行为比较易于理解; 2)支持功能模块的复用; 3)具有较强的可维护性和可扩展性; 4)支持特殊的分析; 5)支持并发执行; 缺点: 1)往往会导致系统处理过程的成批操作; 2)在处理两个独立但有相关的数据流时可能会遇到困难; 3)在需要对数据传输进行特定的处理时,会导致对每个过滤器的解析输入
25、和格式化输出要做出更多的工作,从而带来系统复杂性的上升; 4)并行处理获得的效率往往是一种假象; 分层系统风格:系统按照层次结构来组织,每一层向它的上层提供服务,同时又是它的下层客户 优点: 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 12 1)由于对层次的邻接层数目进行了限制,所以系统易于改进和扩展。 2)每一层的软件都易于重用,并可为某一层次提供多种可互换的具体实现。 3)分层系统所支持的设计体现了不断增加的抽象层次,这样一个复杂问题的求解就被分解为一系列递增的步骤。 4)标准化支持。 5)局部依赖性。 6)可替换性。 缺点: 1)如何界定层次间的划分是一个较为复杂的问题。
26、 2)更改行为的重叠 3)降低效率 4)不必要的工作 5)难以认可层的正确粒度 C2风格:可以概括为通过连接件绑定在一起的、按照一组规则运作的并行构件网络。 特点: 1)系统中的构件可以实现应用需求,并能将任意复杂度的功能封装在一起。 2)所有构件之间的通信是通过以连接件为中介的一步消息交换机制来实现的。 3)构件相对独立,构建之间的依赖性较少,系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制器线程之类的相关性假设。 基于消息总线的风格:构件不直接调用一个过程,而是触发或广播一个或多个事件 优点: 1)为软件重用提供了强大的支持,当需要将一个构件加入现存系统时,只需将它注册到
27、系统的事件中。 2)为改进系统带来了方便,当用一个构件代替另一个构件时,不会影响到其他构件的接口 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 13 缺点: 1)构件放弃了对系统计算的控制,当一个构件触发一个事件时,不能确定其他构件是否响应它。 2)数据交换的问题:有时数据可被一个事件传递,但在另一些情况下,基于事件的系统必须依靠一个共享的仓库进行交互。 3)既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。 第六章 1.简述面向对象方法支持的3 种基本活动. 1)识别对象和类 2)描述对象和类之间的关系 3)通过描述每个类的功能定义对象的行为 2.简述
28、面向对象的系统开发生命周期。 1)识别系统目标与边界 2)识别用例 3)建立用例图 4)识别对象 5)建立类图 6)设计用例的详细逻辑 7)建立顺序图和协作图 8)精化和完善模型 第七章 1.结构化分析需要从哪几个方面建立系统的模型?对于任意一个系统来说,结构化分析提供的每个模型都是必需的吗?如果不是请给出选择建立各种模型的依据。 1)需要从数据字典、数据对象描述、数据流图、实体-关系图、状态转换图、加工规约和控制规约七个方面建立系统的模型。 2)结构化分析提供的每个模型都是必需的。 2.结构化分析中的各种建模技术有何特点?为什么能刻画系统的某个方面?让你改进这些技术,你觉得应该如何改进? 数
29、据流模型描述系统中的数据处理过程,状态转换模型描述系统如何对事件做出响应, 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 14 实体-关系模型寻找系统中的数据及其之间的关系;从外部来看,它是对系统分析上下文或系统环境建模,从行为上看,它是对系统行为进行建模,从结构上看,它是对系统的体系结构和系统处理的数据结构建模。 3.下面是某大学图书管理系统的问题描述: 图书采购员根据各系的要求(书名或期刊名,作者或者期刊出版社)购买图书,并以入库单的形式交库房管理员。库房管理员按购买日期负责登记库存账目,并将图书和期刊摆放在不同位置,以便借阅和阅读。 负责借书的员工根据借/还书的要求(书名或
30、期刊名,作者或期刊出版社)负责借/还图书处理。当没有要借的图书时,通知借阅人;当借书人将图书弄丢时,以图书丢失单的形式报告借书员,由借书员负责修改账目,并通知库房管理员。图书管理员负责人每个月末查看图书和期刊存量(包括数量和金额)。 请给出该系统的数据流图,并给出相应的数据字典。 顶层数据流图 数据流描述 数据流名称:入库单 组成:书号+书名|期刊名+作者|期刊出版社+日期 组织: 备注: 数据流名称:借/还书单 采购员 图书管理系统 借书员 库房管理员 图书管理员 借/还书单 入库单 借书通知单 入库单 库存账目 账目修改通知单存量单 丢失单 牡丹江师范学院-软件工程-朱有富 2015 年
31、6 月整理 15 组成:书号+书名|期刊名+作者|期刊出版社+日期 组织: 备注: 数据流名称:借书通知单 组成:书号+书名|期刊名+作者|期刊出版社+是否有书 组织: 备注: 数据流名称:丢失单 组成:书号+书名|期刊名+作者|期刊出版社+日期+借书人学号 组织: 备注: 数据流名称:存量单 组成:书号+书名+作者+数量+金额+书号+期刊名+期刊出版社+数量+金额 组织: 备注: 数据流名称:账目修改通知单 组成:书号+书名|期刊名+作者|期刊出版社+日期+借书人学号 组织: 备注: 数据存储描述 数据流名称:库存账目表 组成:书号+书名|期刊名+作者|期刊出版社+数量+单价 组织: 备注:
32、 数据项描述 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 16 数据元素名称:数量 取值:正整数,0000099999 备注: 数据元素名称:书名 取值:字符(满足计算机取值要求) 备注: 数据元素名称:书号 取值:数值(书籍特殊编号) 备注: 数据元素名称:学号 取值:入学年份+院系代号+班级代号+排序 备注: 数据元素名称:单价 取值:000.00999.99 备注: 4.一个图书管理系统中有书目、书籍、读者、图书管理员等数据对象,根据你对这些数据对象的理解给出 ER 图。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 17 5.一个人带着一头狼、一头羊和一颗
33、青菜,处于河的左岸。有一条小船,每次只能携带人和其余的三者之一。人和他的伴随品都希望渡到河的右岸,每次摆渡一次,人仅能带其中之一。然而,如果人留下狼和羊不论在左岸还是右岸,狼肯定会吃掉羊,类似的,如果能单独留下羊和青菜,羊也肯定会吃掉青菜。如何才能既渡过河而羊和青菜又不被吃掉呢?请用状态-迁移图来描绘这一过程。 备注:中间省略过程左人菜过-右人羊过-左人狼过-右人过-左人羊过 第八章 1.简述设计良好界面的主要途径。 1)分析用户类型 2)运用黄金规则 2.简述用户界面分析包含的内容。 两岸现状 左:狼菜 右:人羊 左人羊过 右人过 两岸现状 左:人狼菜 右:羊 此处省略过程 读者 管理 书籍
34、 借阅 管理 管理员 作者 姓名 系别 性别 借书日期 还书日期 编号 书名 出版社 n m m 1 n m 借还确认 工作号 工资 姓名 电话 是否在馆 添加时间 书目 包含 n 1 作者 书名 类别 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 18 1)用户分析:在理解用户的同时也要理解用户使用系统的方式,可以通过用户会谈、销售人员信息采集、市场分析和用户支持人员信息收集等方式获取信息; 2)任务分析和建模:确定用户集合后,分析、确定人机系统需要完成的任务; 3)内容展示分析:考虑界面显示内容的格式和关系; 4)工作环境分析:对于某些应用程序,计算机辅助系统的用户界面应放置
35、在有利于用户使用的环境中,考虑系统交互能否以某种方式进行度量,在提供输入之前,多人间是否必须共享信息,如何给系统用户提供支持; 3.简述用户界面设计过程及所要考虑的主要问题。 用户界面设计过程分为六个阶段:1)产品概念的开发 2)调查研究和需求分析 3)设计思路和关键屏幕画面原型 4)反复的设计和改进 5)软件的实现 6)大力推广; 所要考虑的主要问题是系统响应时间、用户求助机制、错误信息处理和命令方式 4个方面。 4.简述用户界面原型的实施。 实施用户界面原型有 3种基本方法: 1)制图:使用铅笔和纸绘制 2)位图:在位图编辑器中绘制 3)可执行文件:可以“运行”并能和最终用户交互的模拟应用
36、程序 在需要将原型展示给除用户界面设计人员之外的其他人员时应该结合使用位图和可执行文件,如果没有足够资源生产可执行文件,也可以使用位图作为原型的最终实施手段 5.简述用户界面设计评估。 有效的设计评估包括专家评审和可用性测试,正式的专家评审需要依托专家作为支柱或者顾问,这些专家往往具有丰富的应用领域或者用户界面领域的专业知识。对于评审结果可以由进行评审的专家们出一份正式的报告,其中包含评审中所发现的问题以及对其修改的意见,或者由这些专家与设计院或管理人员直接进行面对面的讨论; 可用性测试可以通过各种可用性测试方法及早发现界面中存在的可用性问题,要求用户完成一系列任务,对用户的完成过程进行记录,
37、再对记录进行评审。 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 19 7.举一到两个由于界面设计缺陷而可能导致非常严重后果的例子。 某手机品牌的手机因人机界面设计缺陷,不好用,失去了大量的客户和市场,时品牌市值大大减少;曾有过因为地面指挥中心由于看错雷达显示,发出错误指令,导致两架飞机相撞事件; 第九章 1.什么是设计模式?设计模式的目标是什么? 1)设计模式是对被用来在特定场景下解决一般设计问题的类和相互童鞋的对象的描述2)设计模式的目标是较好是实现代码的复用,增加可维护性。 2.设计模式具有哪三大特点? 1)在特定的场景下有可重用性,对相同类型的不同问题的环境,起解决方案都
38、有效; 2)可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受; 3)有表示模式的名称; 3.简述单例模式的两种实现方法,并说明其优缺点。 1)懒汉式,在类被加载时,唯一的实例已经被创建。这个模式在 java 中很容易实现,在其他语言中很难。 2)饿汉式,在类加载时不创建单例实体,只有在第一次请求实例的时候创建,并且只在第一次创建后不再创建该类的实例 4.常用的 GOF 设计模式有几种?GOF 设计模式按照目的可分为哪三类? 1)常用的 GOF 设计模式有 23种; 2)按照目的可分为行为型,结构型,创建型三类; 5.MVC 模式是一个复合模式,请写出两种你知道的 MVC 中
39、使用的模式。 1)观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。 2)策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 6.简述面向对象程序设计的六大基本原则 牡丹江师范学院-软件工程-朱有富 2015 年 6 月整理 20 1)单一职责原则 2)开闭原则 3)里氏替换原则 4)依赖倒置原则 5)接口隔离原则 6)迪米特原则 7.在面向对象程序设计中,经常需要避免过多地使用 case 语句或者 if 语句,请给出一种设计模式避免过多的条件分支语句,同时指出这种设计模式如何帮
40、助用户避免过多的 case 语句? 访问者模式。例如: Switch(p)case A: break; case B: break; 1.把每个条件做成一个类,比如 A 条件 Class A public void accept() /处理逻辑 2.然后把每个条件的处理方法都用一个类来管理 Public class CommonVisitor public void visit(A a) a.accept(); /其他条件的访问方法 public void visit(B b)b.accept(); 3.main 里面就这样调用: Public static void main(String
41、args) CommonVisitor visitor = new CommonVisitor(); /如果想用 A条件,则 visitor.visit(new a(); z 这样写的好处是以后添加条件的话只需要定义新的条件类就行,还有就是在CommonVisitor添加新条件的访问方法就行,这样就很好做到一个条件管理一个逻辑了。 8.某房地产公司准备开发一套房产信息管理系统,根据以下描述选择合适的设计模式进行设计: (1)该公司有多种房型,如公寓、别墅等,在将来可能会增加新的房型; (2)销售人员每售出一套房子,主管将收到相应的销售消息; 如果对上述场景编程,那么上述(1)和(2)可能会用到哪些设计模式? 对于描述(1)可以选择使用工厂方法模式,对于描述(2)可以使用观察者模式