软件工程试题及答案
软件工程试题及答案
小编给大家提供软件工程试题及答,欢迎参考!
一、填空(10*1分=10);(1)产品设想是产品用途和形式的概括描述,可以通;(2)项目范围是项目中要完成的工作;(3)产品设计过程的特点可以概括为自顶向下和以用;(4)备选需求的思想可以来自设计团队的内部或外部;(5)工程设计的第一步是工程设计分析;(6)体系结构设计必须既考虑功能需求,又考虑非功;(7)设计模式出现在几个不同的抽象级别上,包括体;(8)
一、填空(10 *1分=10)
(1)产品设想是产品用途和形式的概括描述,可以通过主要产品功能列表的形式详细阐明。
(2)项目范围是项目中要完成的工作。风险承担者是受产品影响或参与。影响产品开发的任何人。
(3)产品设计过程的特点可以概括为自顶向下和以用户为中心。前者意味着设计人员首先要在高抽象级别上引出需要并生成、改进、评估和选择需求,然后再依次在更低的级别上引出需要并生成、改进、评估和选择需求。后者意味着设计过程是以风险承担者为焦点,使用实验评估,而且高度重复。
(4)备选需求的思想可以来自设计团队的内部或外部。前一种来源包括用户和其他风险承担者、专家、现实物品和比喻、竞争产品和相似产品。后一种来源包括团队集体讨论、个人独立思考和建模。
(5)工程设计的第一步是工程设计分析。这项活动的输入包括可能以各种模型和原型作为其补充的SRS,它们都是在产品设计过程中产生的。从软件的生命周期的观点来说,工程设计发生在设计阶段。在这项活动中分析问题的好方法是建模,这将产生该活动的主要输出。
(6)体系结构设计必须既考虑功能需求,又考虑非功能需求。使程序能够满足其功能需求的体系结构可能有任意多个,但其中只有质量特性能够同时使程序满足其非功能需求。软件体系结构设计者必须考虑多种程序以找出那些所能指定的程序既能满足功能需求,又能满足非功能需求的结构。
(7)设计模式出现在几个不同的抽象级别上,包括体系结构风格,它是处于体系结构级别的模式;中级设计模型它是设计类及其交互作用的模式;数据结构和算法它是实现抽象数据类型和有效操作的模式;编程惯用法,它是能够有效使用特定编程语言的模式。
(8)在应用树中,树根以utility加以标记,根的子树是概貌的名称,树叶表示场景。这些树帮助生成用来评估体系结构方案的场景的集合。
(9)正确使用表示方法的SAD是结构良好的SAD,全部可以由一个程满足的一组设计说明是一致的。所指定的程序能够满足其所有需求的软件体系结构是完整的。如果SAD易于理解,则是清晰的。
(10)详细设计解析非常类似于体系结构设计解析。可用于生成和改进设计方案的技术包括基于程序功能的分解、基于质量特性的分解、从概念模型中复制设计、根据类似程序的设计模型创建设计以及使设计基于设计模式之上。
二、名词解释(5*3分=15)
1. 模型
模型是用来表示另一个实体(目标)的实体,建立模型要确定目标的部件或元素与模型的部件或元素之间的对应关系,还要确定目标的部件或元素间相互关系与模型的部件或元素间相互关系之间的对应关系。
2. 静态设计模型
静态设计模型表示不会在程序执行过程中发生变化的程序方面。
3. 动态设计模型
动态设计模型表示在程序执行过程中所发生的事情。
4. 用例
用例是产品与环境之间完整交互作用的类型。
5. 场景
场景是产品与特定个人之间的交互作用。
6. 类模型
问题或软件解决方案中类的表示。
7. 抽象类
它是一个不能被实例化的类,任何至少有一个抽象操作的类都必定是抽象类,因为如果实例化这样的类,那么客户并不能调用其包含的抽象操作,不是抽象类的类是具体类。
8. UML接口
是公有的属性和抽象操作的有名集合。
9. 虚拟设备
真实硬件设备或系统的软件模拟或接口。
10. 同步消息
从一个对象到另一个对象的通信,而这个发送个体在发送信息之后暂停执行。
11. 异步消息
从一个对象到另一个对象的通信,而这个发送个体在发送信息之后继续执行。
12. 严格分层体系结构
允许每层只使用紧邻其下的那一层的分层体系结构
13. 松弛分层体系结构
允许每层都可以使用其下的所有层的分层体系结构
14. 黑板体系结构风格
当共享数据库改变时,共享数据库将激活存取器。这种变体称为黑板体系结构风格,共享数据库称为黑板
15. 仓库体系结构风格
共享数据库是被动的,由存取器对其进行查询,这些存取器可以继续运行,或者由其他某个组件控制,这种变体称为仓库体系结构风格,共享数据库称为仓库
16. 异构体系结构
采用两种或多种体系结构风格的体系结构
三、简答题(30分)
1. 说出设计当作问题解决方案来考虑的3个优点。
第一:这意味着信息在问题和解决方案之间可能是隔离的
第二:由此产生的看待设计的观点
第三:意味着要在设计中使用历史悠久的一般的问题解决技术
2. 为什么说抽象化是重要的问题解决技术?说出3点理由。
a) 使问题简化——真实的问题总是有许多与其解决方案无关的细节
b) 使问题的解决结构化——许多设计问题都太大太复杂,以致不能完全解决
c) 有助于以自顶向下的方式构成问题解决过程
3. 例举建模的好处和危险。
好处:可以简化要表示的目标,从而使我们更容易理解,记录和研究目标。研究模型还可能比直接研究目标更省成本,更安全。
危险:模型永远不能精确再现所表示的目标,因此研究模型得出的结论有可能不正确。
4. 例举软件的产品设计人员和工程设计人员所关注的具体方面。
部分具体的软件产品设计:屏幕布局——包括用户界面组件的布置以及这些组件的大小,字体颜色和外观;用户与程序之间的交互顺序;消息的编写;图像的使用和外观;
程序将执行的功能;程序所需的输入和产生的输出;程序的质量和可靠性;用户使用该程序达到其目标的易用性;程序是如何适应和改变用户工作方式
部分具体的软件工程设计:构成程序的主要部件或子系统,包括它们的接口,功能,交互作用,速度等;程序中的模块以及这些模块的接口;程序中模块之间的交互作用;模块的内部细节,包括它们的数据和行为;程序中使用的数据结构和算法;程序中异常和错误处理机制;程序中的进程和线程。
5. 为了核实某个用例图是否包括所有应该包括的用例,设计人员应该怎样做?
通过检查产品需要清单来确保所有需要都已得到满足,或者确保所有未被满足的需要都是故意为之的,设计人员可以检查用例图的完整性
6. 给出3个因太小而不应成为用例的活动示例。
某些因太小而不宜作为用例的活动示例是:给设备或另一个系统发送信号或消息,接收来自设备或另一个系统的信号或消息,向用户显示消息。
7. 哪些表示法可用于用例描述?
任何能够说明交互作用中活动流程的表示法都可以用于用例描述,其中包括uml活动图,uml交互作用图,流程图,编程语言和自然语言。
8. 为什么至少必须有一个风险承担者的需要与用例有关?
如果某种产品的任何风险承担者都没有与某个用例相关的需要,则该产品就没有理由支持这个用例。产品应该满足风险承担者的需要和要求,产品的所有特点和功能都应该服务于这个目标。
9. 如果在开始工作时没有完整、正确和一致的产品设计,那么工程设计人员必须做什么?
如果工程设计人员没有得到由产品设计人员提供的完整,正确和一致的产品设计,则除了亲自完成产品设计以外别无选择,如果完全不知道产品是什么,就不可能想出如何来实现产品。
10.对工程设计分析最有用的静态和动态模型是什么?
对面向对象的工程分析最有用的静态模型是分析类模型,最有用的动态模型是用例模型
11.给出一些不应该出现在概念模型中但应该出现在设计类模型中的实例。
不应该出现在概念模型中但应当出现在设计类模型中的示例是那些与软件系统有关而问题无关的实体,具体例子包括只与实现有关的类属性,比如:计数器,引用以及仅仅为了方便的变量;还有只与实现有关的属性的特征,比如属性是公有还是私有,属性的数据结构是什么;以及只与实现有关的操作,比如构造函数,析构函数,结束函数,获取恶化设置属性的方法;或者是只与实现有关的操作的特征,比如操作是公有还是私有,它们支持哪种并发性。
12.给出一些不应该出现在设计类模型中但应该出现在实现类模型中的实例。
不应该出现在设计类模型中但应当出现在实现类模型中的示例是那些与特定环境和语言中的程序实现有关的实体。具体的例子有来自类库的具体类,比如Java.lang.integer;还有哪些为语言所特有的数据类型,比如unsinged long;以及操作和初始化表达式
13.在软件体系结构文档中应该包括什么信息?
软件体系结构文档应该包括产品概述,给出体系结构模型,提供模型之间的`映射,解释设计的理论依据,并包括词汇表
14.什么图可以用来模拟程序部件之间的协作?说出五种。
Uml顺序图,通信图,活动图,用例模型,数据流程图
15.描述用于生成中级设计模型的两种创建技术和两种转换技术。
两种创建技术是功能分解和基于主题的分解。在功能分解技术中,为得到低级别的组件而分解高级别组件的功能。在基于主题的分解技术中,设计主题从设计故事中被吸取出来,然后用来生成解决各个主题的模式。
两种转换技术是把概念模型转换为设计模型以及转换类似程序的设计,转换概念模型从概念模型着手,将其元素从问题实体转换为设计组件,修改这些组件并添加必要的新组件,。转换类似的设计需要修改原来的设计,以满足新产品的需求。
16.职责是如何帮助做出模块中应该放入哪些操作和数据的决策?
某个模块为履行其职能所需的全部数据和操作都应该被放入该模块中,也只有这样的数据和操作才应该被放入该模块之中。这将增强模块的内聚性,并降低模块的耦合性。
17.解释操作何时活动、暂停或执行。对象可以暂停吗?为什么?
操作当某个进程在运行其代码时处于执行状态,当等待同步消息返回时处于暂停状态,当执行或暂停时属于活动状态,对象可以是活动的,因为对象可以有一个或多个活动的操作,但对象不能被暂停,。有人可能会说,如果某个对象的一个或多个操作被暂停,则该对象就处于暂停状态,但是,一个或多个操作被暂停的对象却可能有一个或多个操作正在执行,因为可能有多个进程在运行该对象的代码,因此说一个或多个操作被暂停的对象处于暂停状态是没有意义的。
18.可选、选择、中断和循环片断分别可以有多少个操作数?
可选,中断和循环片段只能有一个操作数,选择片段可以有一个或多个操作数。
19.解释分层风格如何支持重用的?
在分层体系结构中,每一层都应当包含内聚元素,并只和它下面的那个模块耦合,这样可以比较容易的提取有一个层并在另一个程序中使用它,此外,类似的程序可能需要类似的层,所以层的重用也将更加容易。
20.解释分层风格的程序难以调试的原因。
在具有分层体系结构的程序中实现许多程序特性将跨越几个层,也许是大部分层,如果出现bug,则难以确定发生故障的层,从而使程序难以调试。
10. 下面的UML序列图是对一个自动气象站中对象的交互行为建模。在图中直接圈出所有
错误,并重新绘制顺序图。(10分)
(1) 根据上图中,什么消息被发送Weathervane对象?
cheeckDirection() checkSpeed()
(2)创建了多少个Observation 对象?
1个
(3)record( )操作在其参数设置前是否能被调用?
否
(4)self对象的类型是什么?
整型
(5)Weathervane对象的名称是什么?
W
11. 下面两张图中,哪一张图是框线图,并简述框线图的用途。(5分)
第一张图是
框线图的用途:因为关于框线图的规定非常松散,所以它们不仅可用于静态建模,也可用于动态建模,还能表示体系结构设计者想要表示的任何程序方面。在实践中,框线图的最常见用途是表示把系统分解为主要构件或子系统,并表明其交互作用关系的静态模型。
12. 下面两张图中,哪一张图是部署图,并简述部署图的用途。(5分)
?device?ServerPC;?artifact?GameServer;TCP/IPRMI?device?GameDat;?device?ClientPC?deploy?;第二张图是;部署图的用途:部署图显示了系统中使用的实际和虚拟;
13.下面两张图中,哪一张图描述的管道过滤器风格;(10分);第一张图是;管道过滤器风格的特征:a:以数据流向的过程为核心
?device?ServerPC
?artifact?GameServer
1
TCP/IPRMI?device?GameDataServer?DB?GameDataRulesBoardImageTokenImage
?device?ClientPC?deploy??artifact?GameClient
第二张图是
部署图的用途:部署图显示了系统中使用的实际和虚拟的机器,这些机器的通信路径、实现该系统的程序和数据文件以及程序运行和数据主流所在的位置。因此,部署图为模拟物理体系结构提供了功能丰富的表示方法。部署图在体系结构(特别是分布式系统)的设计过程中是有用的,在详细设计过程中亦可用于模拟物理的部署。
13. 下面两张图中,哪一张图描述的管道过滤器风格。简述管道过滤器风格的特征和优缺点。
(10分)
第一张图是
管道过滤器风格的特征:a:以数据流向的过程为核心,因此也被称为:数据流风格。
b:过滤器自身功能独立而完整,不需要知道其他过滤器的存在与否,相互之间无状态交互。 c:过滤器对输入的数据流有限制,并必须保证输出流的正确性。
d:系统 优点
(1)过滤器易于修改或替换,这样在解决问题或修改程序的行为时,程序的修改将非常简单。
(2)过滤器的重新排列几乎毫不费力,这便于开发几个完成类似任务的程序。
(3)过滤器具有高可重用性。
(4)假设可以使用同步管道,那么这种风格支持并执行,而且相对容易实现。
缺点
(1)过滤器只能通过管道进行通行,所以它们的活动难以协调。
(2)过滤器通产使用和生成非常简单的数据流,如字符流,这意味着,在把输入转换成有用的格式,然后再把结果转换成输出时使用的简单格式时,过滤器可能必须完成大量的操作。
(3)错误处理非常困难,错误信息只能通过管道输出或传送。当可靠性和安全性很重要时,由于错误检测和恢复难以完成,所以不适合使用这种风格。
(4)并行执行的好处可能并不牢靠。管线也许不能有效地同步过滤器,一些过滤器在进行输出之前可能需要等待所有的输入。
14. 下面两张图中,哪一张图描述的事件驱动风格。简述事件驱动风格的特征和优缺点。(10分)
第二张图是
事件驱动风格的特征:事件驱动系统的基本观点是一个系统对外部的表现可以从它对事件的处理表现出来。
优点:(1)易于添加、删除和修改组件,所以利用这种风格编写的程序具有可变性和可维护性(2)程序组件的独立性支持可重用性、健壮性和容错性。
缺点:(1)尽管时间可以携带数据,但是在由事件分配器进行中介时,组件的交互作用将难以到达。为了解决这个问题,事件驱动的系统通常还支持显示的调用操作,尽管这将耦合组件。(2)宣布事件的组件不能保证有组件对他们进行相应,也不能对组件相应他们的顺序寄予任何期望。有时,这会造成难以编写出正确的程序。(3)事件通信量往往有很大的变化:事件分配器经常处于空闲状态,而在其他时间,它则会收到大量事件,这样将难以达到性能目标。
四、综合设计题(每小题14分,共35分)
1. 绘制活动图,说明一般设计的步骤,并说明活动图的用途。(7分)
一般设计的步骤:一般设计过程遵循一般的问题解决策略。首先是理解设计问题。寻找设计问题解决方案的过程是重复生成新候选解决方案或细化现有候选解决方案,然后依据设计问题对它们进行评估。最终应该有一个或多个令人满意的解决方案出现,然后即可把最好的一个以文档形式记录下来并交付。
活动图的用途:一般设计过程分析和解析之间的重复。表示任何在问题解析过程中发现的对问题的误解都将导致返回到分析活动。
2. 绘制活动图,模拟洗衣过程。该模型中应包括并发动作,并说明活动图的用途。(7分) 活动图的用途:简化描述了洗衣过程:包括对系统的工作流建模或者对具体的操作建模。
3. 绘制自助洗车系统的用例图,并说明用例图的用途。(7分)
4. 绘制自动取款机的用例图,并说明用例图的用途。(7分)
5. 使用状态机图绘制交通路口红绿灯的并发行为模型,并说明状态机图的用途。(7分)