软件工程

软件重构关注的是()A、软件体系结构B、模块细节C、软件性能

题目

软件重构关注的是()

  • A、软件体系结构
  • B、模块细节
  • C、软件性能
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在软件生存周期中,将某种形式表示的软件转换成更高抽象形式表示的软件的活动属于______。

A.逆向工程

B.代码重构

C.程序结构重构

D.数据结构重构


正确答案:A
解析:逆向工程(reverse engineering)有的人也叫反求工程,其大意是根据已有的东西和结果,通过分析来推导出具体的实现方法。
  软件逆向工程的基本原理是抽取软件系统的主要部分而隐藏细节,然后使用抽取出的实体在高层上描述软件系统。逆向工程抽取的实体应比源代码更容易推理和接近应用领域,同时在高层上对软件系统的抽象表示要求简洁和易于理解。在软件工程领域,迄今为止没有统一的逆向工程定义。较为通用的是Elliot Chikafsky和Cross在文献中定义的逆向工程的相关术语。
  正向工程:从高层抽象和独立于实现的逻辑设计到一个系统的物理实现的传统开发过程。
  逆向工程:分析目标系统,认定系统的构件及其交互关系,并且通过高层抽象或其他形式来展现目标系统的过程。
  与逆向工程相关的其他术语包括:
  再文档(Redocumentation):根据源代码,在同一层次上创建或修改系统文档。
  设计恢复(Design Recovery):结合目标系统、领域知识和外部信息认定更高层次的抽象。
  重构(Restructuring):保持系统外部行为(功能和语义),在同一抽象层次上改变表示形式。
  再工程(Reengineering):结合逆向工程、重构和正向工程对现有系统进行审查和改造,将其重组为一种新形式。
  体系结构再现:用于从源码、性能分析信息、设计文档及专家知识等现有信息中抽象出一个更高层次表示的技术和过程。
  其中,再文档、设计恢复不改变系统。重构改变了系统,但不改变其功能。再工程通常涉及逆向工程与正向工程的联合使用,逆向工程解决程序的理解问题,正向工程检验哪些功能需要保留、删除或增加。再工程改变了系统的功能和方向,是最根本和最有深远影响的扩展。
  由此可见,重构是指在同一抽象层次上改变系统的表示形式,将某种形式表示的软件转换成更高抽象形式表示的软件的活动不属于重构,而属于软件的逆向工程。应选择A。

第2题:

关于软件测试与质量保证,正确的理解是______。

A.软件测试关注的是过程中的活动,软件质量保证关注的是过程的产物

B.软件测试不是软件质量保证工作中的内容

C.软件测试是软件质量保证的重要手段

D.软件质量保证人员就是软件测试人员

A.

B.

C.

D.


正确答案:C

第3题:

● XP 是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式,其四大价值观包括沟通、简单、 (50) 。

(50)

A. 隐喻和反馈

B. 重构和勇气

C. 隐喻和重构

D. 反馈和勇气


正确答案:D

第4题:

关于软件测试与质量保证,正确的理解是______。

A.软件测试关注的是过程中的活动,软件质量保证关注的是过程的产物
B.软件测试不是软件质量保证工作中的内容
C.软件测试是软件质量保证的重要手段
D.软件质量保证人员就是软件测试人员

答案:C
解析:
本题考查对软件质量保证与软件测试的区别的理解。软件测试就是在软件投入运行前对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤与重要手段。软件测试不关注过程中的活动,软件质量保证人员和软件测试人员的职责、工作内容不同。

第5题:

某企业经过多年的信息化建设,存在大量的应用软件系统,为了保证这些系统的运行与维护,专门组建应用系统维护部门。该部门的主要工作是保证系统的正常运行、处理问题以及扩展这些应该系统的功能,以满足企业业务功能的变化与扩展。

目前该部门存在人员流失、变更频繁,文档丢失或长期失于维护,维护成本愈来愈高等问题,具体表现为:

问题(1):随着时间和人员的变动,程序被多人修改,往往导致程序难以理解,注释混乱,流程复杂;

问题(2):随着不断修改程序和增加新的功能,模块之间的耦合关系日益复杂,维护成本不断增加。

这些问题导致新来的维护人员需要直接面对大量流程、结构复杂的源程序,维护困难,往往一次改动需要设计大量的软件模块。

为解决应用系统维护部门面对的问题,企业信息部门组织了专门的专家讨论会。各位专家一致认为,逆向工程与重构工程是目前预防性维护采用的主要技术,应该采用逆向工程的技术方法,重构相关应用系统文档,同时采用软件重构来降低软件代码的复杂性,最终降低维护成本。

【问题1】(8分) 软件的逆向工程是分析已有程序,寻求比源代码更高级的抽象表现形式。与之相关的概念包括软件重构、设计恢复、重构工程等。请说明设计恢复中常见的恢复信息的4种级别。 【问题2】(11分) 重构是对软件内部结构的一种调整,目的是不改变软件功能的前提下,提高其可理解性,降低其修改成本。请说明软件重构的三个类别,并简要说明常见的重构方法。针对题干中的问题(1)和问题(2),宜采用何种重构方法? 【问题3】(6分) 软件重构做出的修改可能导致程序运行变慢,但也更容易进行软件的性能优化和调整,请分析原因。


正确答案:

 

【问题1】

(1)实现级:过程的设计模型。

(2)结构级:程序和数据结构信息。

(3)功能级:对象模型、数据和控制流模型。

(4)领域级:UML状态图和部署图。

【问题2】

软件重构的三个类别:

代码重构、设计重构、架构重构。

常见的重构方法:

(1)提取方法(Extract method)

(2)用委托来代替继承(Replace Inheritance witch Delegation)

(3)用子类代替型别码(Replace Type with Subclasses)

(4)用多态来代替条件判断(Replace conditional with polymorphism)

(5)模板函数

(6)提取类

(7)提取接口

问题(1)可采用提取方法的重构方法解决,问题(2)可采用提取接口的方法解决。

【问题3】

为了使软件更容易理解,同时又需要考虑到各种兼容性,在重构时,可能需要在代码中增加冗余的判断、冗余的代码或结构;也可能需要修改已有的数据库结构和索引等,导致程序运行变慢。

但从长远来看,由于重构以后的软件结构更加清晰,代码复杂性更低,更易于理解,在性能调优时更容易分析瓶颈之所在,然后加以解决,因此,软件重构也更易容进行软件的性能优化和调优。


第6题:

● 关于软件测试与质量保证,正确的理解的是()。()A.软件测试关注的是过程中的活动,软件质量保证关注的是过程的产物B.软件测试不是软件质量保证工作中的内容C.软件测试是软件质量保证的重要手段D.软件质量保证人员就是软件测试人员


正确答案:C
本题主要考查对软件测试与质量保证概念的理解。软件测试是保证软件质量的重要手段。软件测试的目的是尽可能多的发现软件中的错误,从而提高软件的质量。

第7题:

XP是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式,其四大价值观包括沟通、简单、______。

A.隐喻和反馈

B.重构和勇气

C.隐喻和重构

D.反馈和勇气

A.

B.

C.

D.


正确答案:D
解析:本题考查软件过程基础知识。
  XP(极限编程)是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为四个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。其四大价值观包括沟通、简单、反馈和勇气。

第8题:

● 在软件生存周期中,将某种形式表示的软件转换成更高抽象形式表示的软件的活动属于(11) 。

(11)

A. 逆向工程

B. 代码重构

C. 程序结构重构

D. 数据结构重构


正确答案:A

第9题:

在软件可靠性测试时,人们关注的核心是______。

A.软件错误

B.软件缺陷

C.软件失效

D.软件故障


正确答案:C

第10题:

阅读以下关于系统运行与维护的叙述,在答题纸上回答问题1至问题3。

【说明】

某企业经过多年的信息化建设,存在大量的应用软件系统,为了保证这些系统的运行与维护,专门组建应用系统维护部门。该部门的主要工作是保证系统的正常运行、处理问题以及扩展这些应该系统的功能,以满足企业业务功能的变化与扩展。

目前该部门存在人员流失、变更频繁,文档丢失或长期失于维护,维护成本愈来愈高等问题,具体表现为:

问题(1):随着时间和人员的变动,程序被多人修改,往往导致程序难以理解,注释混乱,流程复杂;

问题(2):随着不断修改程序和增加新的功能,模块之间的耦合关系日益复杂,维护成本不断增加。

这些问题导致新来的维护人员需要直接面对大量流程、结构复杂的源程序,维护困难,往往一次改动需要设计大量的软件模块。

为解决应用系统维护部门面对的问题,企业信息部门组织了专门的专家讨论会。各位专家一致认为,逆向工程与重构工程是目前预防性维护采用的主要技术,应该采用逆向工程的技术方法,重构相关应用系统文档,同时采用软件重构来降低软件代码的复杂性,最终降低维护成本。



【问题1】

软件的逆向工程是分析已有程序,寻求比源代码更高级的抽象表现形式。与之相关的概念包括软件重构、设计恢复、重构工程等。请说明设计恢复中常见的恢复信息的4种级别。

【问题2】

重构是对软件内部结构的一种调整,目的是不改变软件功能的前提下,提高其可理解性,降低其修改成本。请说明软件重构的三个类别,并简要说明常见的重构方法。针对题干中的问题(1)和问题(2),宜采用何种重构方法?

【问题3】

软件重构做出的修改可能导致程序运行变慢,但也更容易进行软件的性能优化和调整,请分析原因。


答案:
解析:
【问题1】
答:恢复信息的级别:

(1)实现级:包括程序的抽象语法树、符号表等信息;

(2)结构级:包括反映程序分量之间相互依赖的关系的信息,调用图、结构图等;

(3)功能级:包括反映程序功能与程序之间关系的信息;

(4)领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息。

【问题2】

答:软件重构一般分为三类:

(1)代码重构;(2)模块重构;(3)架构重构。

常见的重构方法有:重新组织函数、重新组织对象、重新组织数据、简化条件表达式、简化函数调用和处理概括关系。

针对问题(1),采用代码重构,重新梳理代码流程,使代码容易理解和维护;

针对问题(2),采用模块東构和架构重构,梳理模块之间的关系,使其更容易扩展和维护,降低模块之间的耦合度。

【问题3】

答:一个模块化程度好的程序可从两方面帮助性能优化。

(1)分解良好的程序,使得性能分析的粒度更细,性能调整更加容易;

(2)分解良好的程序,由于代码更加淸晰,更容易与性能优化工具结合,分析系统性能瓶颈的具体位置。

更多相关问题