每日一练
1.完整的软件系统需从不同视角进行描述,下图属于软件架构设计中的(),用于()视图来描述软件系统 。答案与解析
问题1
- A.对象图
- B.时序图
- C.构件图
- D.类图
问题2
- A.进程
- B.开发
- C.物理
- D.用户
2.关于模块化设计,()是错误的。答案与解析
- A.模块是指执行某一特定任务的数据结构和程序代码
- B.模块的接口和功能定义属于其模块自身的内部特性
- C.每个模块完成相对独立的特定子功能,与其他模块之间的关系最简单
- D.模块设计的重要原则是高内聚、低耦合
3."编译器"是一种非常重要的基础软件,其核心功能是对源代码形态的单个或一组源程序依次进行预处理、词法分析、语法分析、语义分析、代码生成、代码优化等处理,最终生成目标机器的可执行代码。考虑以下与编译器相关的软件架构设计场景:
传统的编译器设计中,上述处理过程都以独立功能模块的形式存在,程序源代码作为一个整体,依次在不同模块中进行传递,最终完成编译过程。针对这种设计思路,传统的编译器采用()架构风格比较合适。
随着编译、链接、调试、执行等开发过程的一体化趋势发展,集成开发环境(IDE)随之出现。IDE集成了编译器、连接器、调试器等多种工具,支持代码的增量修改与处理,能够实现不同工具之间的信息交互,覆盖整个软件开发生命周期。针对这种需求,IDE采用()架构风格比较合适。IDE强调交互式编程,用户在修改程序代码后,会同时触发语法高亮显示、语法错误提示、程序结构更新等多种功能的调用与结果呈现,针对这种需求,通常采用()架构风格比较合适。
某公司已经开发了一款针对某种嵌入式操作系统专用编程语言的IDE,随着一种新的嵌入式操作系统上市并迅速占领市场,公司决定对IDE进行适应性改造,支持采用现有编程语言进行编程,生成符合新操作系统要求的运行代码,并能够在现有操作系统上模批出新操作系统的运行环境,以支持代码调试工作。针对上述要求,为了使IDE能够生成符合新操作系统要求的运行代码,采用基于()的架构设计策略比较合适;为了模拟新操作系统的运行环境,通常采用()架构风格比较合适。答案与解析
问题1
- A.管道-过滤器
- B.顺序批处理
- C.过程控制
- D.独立进程
问题2
- A.规则引擎
- B.解释器
- C.数据共享
- D.黑板
问题3
- A.隐式调用
- B.显式调用
- C.主程序-子程序
- D.层次结构
问题4
- A.代理
- B.适配
- C.包装
- D.模拟
问题5
- A.隐式调用
- B.仓库结构
- C.基于规则
- D.虚拟机
4.以下关于面向对象软件测试的叙述中,正确的是()。答案与解析
- A.在测试一个类时,只要对该类的每个成员方法都进行充分的测试就完成了对该类充分的测试
- B.存在多态的情况下,为了达到较高的测试充分性,应对所有可能的绑定都进行测试
- C.假设类B是类A的子类,如果类A已经进行了充分的测试,那么在测试类B时不必测试任何类B继承自类A的成员方法
- D.对于一棵继承树上的多个类,只有处于叶子节点的类需要测试
5.在数据库设计的需求分析阶段应当形成(),这些文档可以作为()阶段的设计依据。答案与解析
问题1
- A.程序文档、数据字典和数据流图
- B.需求说明文档、程序文档和数据流图
- C.需求说明文档、数据字典和数据流图
- D.需求说明文档、数据字典和程序文档
问题2
- A.逻辑结构设计
- B.概念结构设计
- C.物理结构设计
- D.数据库运行和维护
6.4+1视图模型可以从多个视图或视角来描述软件架构。其中,()用于捕捉设计的并发和同步特征;()描述了在开发环境中软件的静态组织结构。答案与解析
问题1
- A.逻辑视图
- B.开发视图
- C.过程视图
- D.物理视图
问题2 - A.类视图
- B.开发视图
- C.过程视图
- D.用例视图
7.软件开发过程模型中,()主要由原型开发阶段和目标软件开发阶段构成。答案与解析
- A.原型模型
- B.瀑布模型
- C.螺旋模型
- D.基于构件的模型
8.在IPV6无状态自动配置过程中,主机将其()附加在地址前缀1111 1110 10之后,产生一个链路本地地址答案与解析
- A.IPV4地址
- B.MAC地址
- C.主机名
- D.随机产生的字符串
9.采用以架构为核心的软件开发方法,在建立软件架构的初期,首要任务是选择一个合适的(),在此基础上,开发人员通过架构模型,可以获得关于()的理解,为将来的架构实现与演化过程建立了目标。答案与解析
问题1
- A.分析模式
- B.设计模式
- C.架构风格
- D.架构标准
问题2
- A.架构需求
- B.架构属性
- C.架构优先级
- D.架构约束
解析
1.答案:DD
图示展示的是类图的结构。
注意区分类图和对象图。对象图标记的是对象名,命名形式对象名:类名,或者:类名。这里没有出现冒号,表示的是类图。
对象图(object diagram)。对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。
类图(class diagram)。类图描述一组类、接口、协作和它们之间的关系。在O0系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。本题第二空选择D选项。因为,本题中的类图是逻辑视图建模的经典工具,而逻辑视图是从用户视角看问题。【注:本题存在一定争议,若以后再次考查,建议选择用户视图】
"4+1"视图模型从五个不同的视角来描述软件架构,每个视图只关心系统的一个侧面,五个视图结合在一起才能反
映软件架构的全部内容。(1)逻辑视图。逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。在O0技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。逻辑视图中使用的风格为面向对象的风格,在设计中要注意保持一个单一的、内聚的对象模型贯穿整个系统。
(2)开发视图。开发视图也称为模块视图,在UML中被称为实现视图,它主要侧重于软件模块的组织和管理。开发视图要考虑软件内部的需求,例如,软件开发的容易性、软件的复用性和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。开发视图通过系统I/0关系的模型图和子系统图来描述。
(3)进程视图。进程视图侧重于系统的运行特性,主要关注一些非功能性需求,例如,系统的性能和可用性等。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构等,它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。进程视图可以描述成多层抽象,每个级别分别
关注不同的方面。(4)物理视图。物理视图在UML中被称为部署视图,它主要考虑如何把软件映射到硬件上,它通常要考虑到解决系统拓扑结构、系统安装和通信等问题。当软件运行于不同的物理节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小
(5)场景视图。场景视图可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景视图是最重要的需求抽象。场景视图对应UML中的用例视图。在开发软件架构时,它可以帮助架构设计师找到构件及其相互关系。同时,架构设计师也可以用场景来分析一个特定的视图,或描述不同视图的构件之间是如何相互作用的。场景视图可以用文本表示,也可以用图形表示。
2.答案:B
模块的接口是模块与其他模块进行交互的部分,所以接口的定义不仅仅属于其模块自身的内部特性,与外部模块也
具有相关性。B选项的描述是错误的。
3.答案:BCABD
传统的编译器一般采用数据流架构风格,在这种架构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。编译处理过程中,会分步将源代码一次一次的处理,最终形成目标代码,这与数据流架构风格相当吻合。但选项中有两个数据流风格的架构供选择,即:"管道-过滤器"和"顺序批处理",这就需要进一步分析哪个更合适,由于题目中提到"程序源代码作为一个整体,依次在不同模块中进行传递",而顺序批处理是强调把数据整体处理的,所以应选用顺序批处理风格。IDE是一种集成式的开发环境,在这种环境中,多种工具是围绕同一数据进行处理,这种情况适合用数据共享架构风格。
在题目中提到IDE环境是一种交互式编程,用户在修改程序代码后,会同时触发语法高亮显示、语法错误提示、程京结构更新等多种功能的调用与结果呈现。在做一件事情时,同时触发一系列的行为,这是典型的隐式调用风格(事件驱动系统)。
使IDE能够生成符合新操作系统要求的运行代码",这一要求是可以通过适配策略满足的,像设计模式中的适配器模式便是采用适配的方式,形成一致的接口。"模拟新操作系统的运行环境"是典型的虚拟机架构风格的特长。
4.答案:B
本题考查面向对象的软件测试,与传统的结构化系统相比,面向对象系统具有三个明显特征,即封装性、继承性与多态性。封装性决定了面向对象系统的测试必须考虑到信息隐蔽原则对测试的影响,以及对象状态与类的测试序列,因此在测试一个类时,仅对该类的每个方法进行测试是不够的:继承性决定了面向对象系统的测试必须考虑到继承对测试充分性的影响,以及误用引起的错误;多态性决定了面向对象系统的测试必须考虑到动态绑定对测试充分性的影响、抽象类的测试以及误用对测试的影响。
5.答案:CB
数据库设计主要分为用户需求分析、概念结构、逻辑结构和物理结构设计四个阶段。其中,在用户需求分析阶段中,数据库设计人员采用一定的辅助工具对应用对象的功能、性能、限制等要求进行科学分析,并形成需求说明文档、数据字典和数据流程图。用户需求分析阶段形成的相关文档用以作为概念结构设计的设计依据。
6.答案:CB
4+1视图中各个部分的情况如下:(1)逻辑视图。逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。一般用类图和对象图描述。
(2)开发视图。开发视图也称为模块视图,在UML中被称为实现视图,它主要侧重于软件模块的组织和管理。该视图可描述源代码,系统文件结构。
(3)过程视图。过程视图侧重于系统的运行特性,主要关注一些非功能性需求,例如,系统的性能和可用性等。过程视图强调并发性、分布性、系统集成性和容错能力,以及逻辑视图中的功能抽象如何适合进程结构等,它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。
(4)物理视图。物理视图在UML中被称为部署视图,它主要考虑如何把软件映射到硬件上,它通常要考虑到解决系统拓扑结构、系统安装和通信等问题。当软件运行于不同的物理节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小
(5)场景。场景可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。场景视图对应UML中的用例视图。
7.答案:A
8.答案:B
IPv6地址的格式前缀(FP)用于表示地址类型或子网地址,用类似于IPV4的CIDR表示方法表示。链路本地地址:前缀为1111 1110 10,用于同一链路的相邻节点间的通信。相当于IPV4的自动专用IP地址。为实现IP地址的自动配置,IPv6主机将MAC地址附加在地址前缀1111 1110 10之后,产生一个链路本地地址。
9.答案:CB
本题主要考査以架构为核心的软件系统开发方法。在该方法中,架构用来激发和调整设计策略,不同的视图用来表达与质量目标有关的信息。架构设计是一个迭代过程,在建立软件架构的初期,选择一个合适的架构风格是首要的,在此基础上,开发人员通过架构模型,可以获得关于软件架构属性的理解,为将来的架构实现与演化过程建立了目标。