软件设计师——软件过程基础知识

 


 
 

  

软件过程模型(软件开发模型)

软件过程模型(软件开发模型)详细内容请见

模型要点
瀑布模型适用于需求明确的项目,一般表述为需求明确、或二次开发,或者对于数据处理类型的项目。
V模型强调测试贯穿项目始终,而不是集中在测试阶段。是一种测试的开发模型。
原型模型典型的原型开发方法模型。适用于需求不明确的场景,构造简易系统,可以帮助用户明确需求。
增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,可以有多个可用版本的发布,核心功能往往最先完成,在此基础上,每轮迭代会有新的增量发布,核心功能可以得到充分测试。强调每一个增量均发布一个可操作的产品。
螺旋模型典型特点是引入了风险分析。结合了瀑布模型和演化模型的优点,最主要的特点在于加入了风险分析。它是由制定计划、风险分析、实施工程、客户评估这一循环组成的,它最初从概念项目开始第一个螺旋。属于面向对象开发模型,强调风险引入。
喷泉模型典型的面向对象的模型。特点是迭代、无间隙。会将软件开发划分为多个阶段,但各个阶段无明显界限,并且可以迭代交义。
统一过程模型典型特点是用例驱动、以架构为中心、迭代和增量。统一过程把一个项目分为四个不同的阶段:
构思阶段:包括用户沟通和计划活动两个方面,强调定义和细化用例,并将其作为主要模型。
细化阶段:包括用户沟通和建模活动,重点是创建分析和设计模型,强调类的定义和体系结构的表示。
构建阶段:将设计转化为实现,并进行集成和测试。
移交阶段:将产品发布给用户进行测试评价,并收集用户的意见,之后再次进行迭代修改产品使之完善
敏捷开发敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想。常见的敏捷开发方法有极限编程法、水晶法、并列争球法和自适应软件开发方法。
(1)极限编程是一种轻量级的开发方法,它提出了四大价值观:沟通、简单、反馈、勇气。五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。十二个最佳实践:计划游戏、隐喻、小型发布、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户和编码标准。
(2)水晶法强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论。
(3)并列争球法的核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件。
(4)自适应软件开发的核心是三个非线性的,重叠的开发阶段:猜测、合作、学习。
基于构件的开发模型构件的复用

 
 

 
 

 
 

软件开发方法

  • 结构化开发方法

    1. 用户至上
    2. 严格区分工作阶段,每阶段有任务与成果
    3. 强调系统开发过程的整体性和全局性
    4. 系统开发过程工程化,文档资料标准化
    5. 自顶向下,逐步分解(求精)
  • 原型开发方法

    1. 适用于需求不明确的开发
    2. 包括抛弃式原型和演化式原型
  • 面向对象的开发方法

    1. 更好的复用性
    2. 关键在于建立一个全面、合理、统一的模型
    3. 分析、设计、实现三个阶段,界限不明确
  • 面向服务的开发方法

    1. 面向对象更高标准的抽象。
    2. SO方法有三个主要的抽象级别:操作、服务、业务流程
    3. SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
    4. 服务建模:分为服务发现、服务规约和服务实现三个阶段

 
 

 
 

 
 

软件设计

软件设计的原则:高内聚、低耦合

内聚类型描述
偶然聚合模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。
逻辑聚合模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。
时间聚合模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。
过程聚合模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。
通信聚合模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据。
顺序聚合模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入。
功能聚合模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都必不可少
耦合类型描述
非直接耦合两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。
数据耦合两个模块彼此间通过数据参数交换信息。
标记耦合一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
控制耦合两个模块彼此间传递的信息中有控制信息。
外部耦合一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
公共耦合两个模块之间通过一个公共的数据区域传递信息。
内容耦合一个模块需要涉及到另一个模块的内部信息。

 
 

 
 

 
 

软件测试

软件测试
黑盒测试:等价类划分、边界值分析、错误推测、因果图。
白盒测试:语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、路径覆盖。
灰盒测试
各类测试详细内容见链接。

各测试阶段的任务:
(1)验收测试:有效性测试、软件配置审查、验收测试。
(2)系统测试:恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安装测试。
(3)集成测试:模块间的接口和通信。
(4)单元测试:模块接口、局部数据结构、边界条件、独立的路径、错误处理。
(5)其他测试:回归测试(修改软件后进行的测试,防止引入新的错误)。负载测试(对软件负载能力的测试)。压力测试(对软件超负荷条件下运行情况的测试)。

 
 

 
 

 
 

McCabe复杂度计算

基本每年都有一个选择题。

  1. McCabe复杂度计算公式:V(G)=m-n+2,其中m是有向弧的条数,n是结点数。
  2. 对于伪代码可以先转换为程序流程图,对程序流程图可以最终转换为结点图处理,转换时注意将交点的地方标注为新的结点,以最终的结点图带入公式结算其McCabe复杂度。

详细McCabe复杂度计算方法请见。

 
 

 
 

 
 

软件维护类型

维护类型描述
更正性维护针对真实存在并已经发生的错误进行的维护行为。
预防性维护针对真实存在但还未发生的错误进行的维护。
适应性维护指使应用软件适应信息技术变化和管理需求变化而进行的修改。企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。
完善性维护扩充功能和改善性能而进行的修改。对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。

 
 

 
 

 
 

软件质量保证

类型内容
功能性适用性、准确性、互操作性、安全保密性
可靠性成熟性、容错性、易恢复性
易用性易理解性、易学性、易操作性、吸引性
效率时间特性、资源利用性
维护性易分析性、稳定性、易测试性、易改变性
可移植性适应性、易安装性、共存性、易替换性

(1)功能性(Functionality)。与一组功能及其指定的性质的存在有关的一组属性,功能是指满足规定或隐含需求的那些功能。

  • 适应性(Suitability)。与对规定任务能否提供一组功能以及这组功能是否适合有关的软件属性。
  • 准确性(Accurateness)。与能够得到正确或相符的结果或效果有关的软件属性。
  • 互用性(Interoperability)。与其他指定系统进行交互操作的能力相关的软件属性。
  • 依从性(Compliance)。使软件服从有关的标准、约定、法规及类似规定的软件属性。
  • 安全性(Security)。与避免对程序及数据的非授权故意或意外访问的能力有关的软件属性。

(2)可靠性(Reliability)。与在规定的一段时间内和规定的条件下软件维持在其性能水平有关的能力。

  • 成熟性(Maturity)。与由软件故障引起失效的频度有关的软件属性。
  • 容错性(Fault tolerance)。与在软件错误或违反指定接口的情况下维持指定的性能水平的能力有关的软件属性。
  • 易恢复性(Recoverability)。,与在故障发生后,重新建立其性能水平并恢复直接受响数据的能力,以及为达到此目的所需的时间和努力有关的软件属性。

(3)易使用性(Usability)。与为使用所需的努力和由一组规定或隐含的用户对这样使用所做的个别评价有关的一组属性。

  • 易理解性(Understandability)。与用户为理解逻辑概念及其应用所付出的劳动有关的软件属性。
  • 易学性(Learnability)。与用户为学习其应用(例如操作控制、输入、输出)所付出的努力相关的软件属性。
  • 易操作性(Operability)。与用户为进行操作和操作控制所付出的努力有关的软件属性。

(4)效率(Efficiency)。在规定条件下,与软件的性能水平与所用资源量之间的关系有关的软件属性。

  • 时间特性(Time behavior)。与响应和处理时间以及软件执行其功能时的吞吐量有关的软件属性。
  • 资源特性(Resource behavior)。与软件执行其功能时,所使用的资源量以及使用资源的持续时间有关的软件属性。

(5)可维护性(Maintainability)。与进行规定的修改所需要的努力有关的一组属性。

  • 易分析性(Analyzability)。与为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性。
  • 易改变性(Changeability)。与进行修改、排错或适应环境变换所需努力有关的软件属性。
  • 稳定性(Stability)。与修改造成未预料效果的风险有关的软件属性。
  • 易测试性(Testability)。为确认经修改软件所需努力有关的软件属性。

(6)可移植性(Portability)。与软件可从某一环境转移到另一环境的能力有关的一组属性。

  • 适应性(Adaptability)。与软件转移到不同环境时的处理或手段有关的软件属性。
  • 易安装性(Installability)。与在指定环境下安装软件所需努力有关的软件属性。
  • 一致性(Conformance)。使软件服从与可移植性有关的标准或约定的软件属性。
  • 易替换性(Replaceability)。与一软件在该软件环境中用来替代指定的其他软件的可能和努力有关的软件属性。

 
 

 
 

 
 

软件过程改进

CMMI
能力成熟度模型集成
描述
初始级杂乱无章,甚至混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用。
可重复级建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功。
已定义级管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准过程。
已管理级制定了软件过程和产品质量的详细度量标准。
优化级加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进。
CMMI阶段式模型描述
初始的过程不可预测且缺乏控制
已管理的过程为项目服务
已定义的过程为组织服务
定量管理的过程已度量和控制
优化的集中于过程改进
CMMI连续式模型描述
CL0(未完成的)过程域未执行或未得到CL1中定义的所有目标
CL1(已执行的)其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标
CL2(已管理的)其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制、和评审。
CL3(已定义级的)其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程中裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进
CL4(定量管理的)其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则
CL5(优化的)使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效
CMM模型描述
初始级杂乱无章,甚至混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用
可重复级建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功
已定义级管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准过程。
已管理级制定了软件过程和产品质量的详细度量标准
优化级加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进

 
 

 
 

 
 

题目举例


若用户需求不清晰且经常发生变化,但系统规模不太大且不太复杂,则最适宜采用()开发方法,对于数据处理领域的问题,若系统规模不太大且不太复杂,需求变化也不大,则最适宜采用()开发方法。
问题一
  • A. 结构化
  • B. Jackson
  • C. 原型化
  • D. 面向对象
问题二
  • A. 结构化
  • B. Jackson
  • C. 原型化
  • D. 面向对象

【试题解析】∶在本题的两个空中,第1个空比较容易,由于题目明确说明"用户需求不清晰且经常发生变化"所以只有原型化方法适用。而第2空需求变化不大的情况下,其实多种模型都可用,所以另一条线索成为解题关键,即"数据处理领域问题"。结构化方法的基本特征是:自顶向下,逐层分解,也适合于大型的数据处理系统,所以用他最合适。


以下关于结构化开发方法的叙述中,不正确的是()。
  • A. 总的指导思想是自顶向下,逐层分解
  • B. 基本原则是功能的分解与抽象
  • C. 与面向对象开发方法相比,更适合于大规模、特别复杂的项目
  • D. 特别适合于数据处理领域的项目

【试题解析】∶结构化开发方法是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。结构化开发方法又称生命周期法,是迄今为止最传统、应用最广泛的一种信息系统开发方法。结构化开发方法采用系统工程的思想和工程化的方法,按用户至上的原则,结构化、模块化、自顶向下地对信息系统进行分析与设计。该方法严格按照信息系统开发的阶段性开展设计工作,每个阶段都产生一定的设计成果,通过评估后再进入下一阶段开发工作。因此,结构化开发方法具有以下优点:

  • 开发工作的顺序性、阶段性适合初学者参与软件的开发
  • 开发工作的阶段性评估可以减少开发工作重复性和提高开发的成功率
  • 该方法有利于提高系统开发的正确性、可靠性和可维护性
  • 具有完整的开发质量保证措施

结构化开发方法存在的不足主要是开发周期太长,个性化开发阶段的文档编写工作量过大或过于烦琐,无法发挥开发人员的个性化开发能力。一般来说,结构化开发方法主要适用于组织规模较大、组织结构相对稳定的企业,这些大型企业往往业务处理过程规范、信息系统数据需求非常明确,在一定时期内需求变化不大。


以下关于结构化开发方法的叙述中,不正确的是()。
  • A. 将数据流映射为软件系统的模块结构
  • B. —般情况下,数据流类型包括变换流型和事务流型
  • C. 不同类型的数据流有不同的映射方法
  • D. 一个软件系统只有一种数据流类型

【试题解析】∶面向数据流的设计是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,因此又称结构化设计。该方法由美国IBM公司L.Constantine和E.Yourdon等人于1974年提出,与结构化分析(SA)衔接,构成了完整的结构化分析与设计技术,是目前使用最广泛的软件设计方法之一。
各种软件系统,不论DFD如何庞大和复杂,一般可分为变换型和事务型,一个软件系统既可以只有一种数据流类型,也可以是两种数据流类型。在结构化设计中,可以将数据流映射为软件系统的模块结构,不同类型的数据流有不同的映射方法。


极限编程(extreme Programming)是一种轻量级软件开发方法,()不是它强调的准则。
  • A. 持续的交流和沟通
  • B. 用最简单的设计实现用户需求
  • C. 用测试驱动开发
  • D. 关注用户反馈

【试题解析】∶极限编程( extreme Programming.XP)是1998年由Kent Beck首先提出的一种轻量级的软件开发方法,同时也是一种非常严谨和周密的方法。这种方法强调交流、简单、反馈和勇气4项原则,也就是说一个软件项目可以从4个方面进行改善:加强交流;从简单做起;寻求反饿;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期。通过积极的交流、反馈以及其他一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和可能存在的困难等,并根据实际情况及时地调整开发过程。


面向对象开发方法的基本思想是尽可能按照人类认识客观世界的方法来分析和解决问题,()方法不属于面向对象方法。
  • A. Booch
  • B. Coad
  • C. OMT
  • D. Jackson

【试题解析】∶本题考查面向对象开发方法。面向对象开发方法有Booch方法、Coad方法和OMT方法。Jackson方法是一种面向数据结构的开发方法。


若某模块内所有处理元素都在同一个数据结构上操作,则该模块的内聚类型为()。
  • A. 逻辑
  • B. 过程
  • C. 通信
  • D. 功能

【试题解析】∶分析


某模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一处理元素的输出就是下一处理元素的输入,则该模块的内聚类型为()内聚。
  • A. 过程
  • B. 时间
  • C. 顺序
  • D. 逻辑

【试题解析】∶A选项过程内聚。如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。
B选项时间内聚。如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。
C选项顺序内聚。如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。本题描述的是C选项。
D选项逻辑内聚。几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。


某模块内涉及多个功能,这些功能必须以特定的次序执行,则该模块的内聚类型为()内聚。
  • A. 过程
  • B. 时间
  • C. 信息
  • D. 功能

【试题解析】∶要求功能是以特定的次序执行,所以是过程内聚。


模块A、B和C有相同的程序块,块内的语句之间没有任何联系,现把该程序块取出来,形成新的模块D,则模块D的内聚类型为()内聚。以下关于该内聚类型的叙述中,不正确的是()。
问题一
  • A. 巧合
  • B. 逻辑
  • C. 时间
  • D. 过程
问题二
  • A. 具有最低的内聚性
  • B. 不易修改和维护
  • C. 不易理解
  • D. 不影响模块间的耦合关系

【试题解析】∶功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。
顺序内聚:处理元素相关,而且必须顺序执行。
通信内聚:所有处理元素集中在一个数据结构的区域上。
过程内聚:处理元素相关,而且必须按特定的次序执行。
瞬时内聚:所包含的任务必须在同一时间间隔内执行(如初始化模块)。
逻辑内聚:完成逻辑上相关的一组任务。
偶然内聚:完成一组没有关系或松散关系的任务。
巧合内聚就是偶然内聚。偶然内聚由于内容都是不相关的,所以必然导致它与外界多个模块有关联,这也使得模块间的耦合度增加。


某模块中有两个处理 A 和 B,分别对数据结构X写数据和读数据,则该模块的内聚类型为()内聚。
  • A. 逻辑
  • B. 过程
  • C. 通信
  • D. 内容

【试题解析】∶如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。本题为通信内聚。
逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。
过程聚合:模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。
内容耦合:—个模块需要涉及另一个模块的内部信息。


模块A执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能,则该模块具有()内聚
  • A. 顺序
  • B. 过程
  • C. 逻辑
  • D. 功能

【试题解析】∶内聚是指模块内部各元素之间联系的紧密程度,模块的内聚类型通常可以分为7种,根据内聚度从高到低排序分别如下:
功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。
顺序内聚:处理元素相关,而且必须顺序执行。
通信内聚:所有处理元素集中在一个数据结构的区域上。
过程内聚:处理元素相关,而且必须按特定的次序执行。
瞬时内聚:所包含的任务必须在同一时间间隔内执行(如初始化模块)。
逻辑内聚:完成逻辑上相关的一组任务。
偶然内聚:完成一组没有关系或松散关系的任务。


内聚是—种指标,表示一个模块()。
  • A. 代码优化的程度
  • B. 代码功能的集中程度
  • C. 完成任务的及时程度
  • D. 为了与其他模块连接所要完成的工作量

【试题解析】∶本题考查软件模块化的基本概念。
模块的内聚性表现了模块内部各个子成分功能的集中程度,分为6级,如下图所示:
分析


模块A通过非正常入口转入模块B内部,则这两个模块之间是()耦合。
  • A. 数据
  • B. 公共
  • C. 外部
  • D. 内容

【试题解析】∶数据耦合是通过参数表传递简单信息。
公共耦合是多个模块访问同一个公共数据环境。
外部耦合是一组模块访问同一个全局简单变量而没有通过参数表传递。
内容耦合是一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。本题描述的是内容耦合。
分析


已知模块 A 给模块 B 传递数据结构 X,则这两个模块的耦合类型为()。
  • A. 数据耦合
  • B. 公共耦合
  • C. 外部耦合
  • D. 标记耦合

【试题解析】∶数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。
公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
标记耦合︰一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。本题描述的是标记耦合。


某企业管理信息系统中,采购子系统根据材料价格、数量等信息计算采购的金额,并给财务子系统传递采购金额、收款方和采购日期等信息,则这两个子系统之间的耦合类型为()耦合。
  • A. 数据
  • B. 标记
  • C. 控制
  • D. 外部

【试题解析】∶非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。
标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址;
控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合。
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
(4)一个模块有多个入口。
根据本题题干描述,采购子系统"给财务子系统传递采购金额、收款方和采购日期等信息”,传递时应将这些数据包装在数据结构中,因此二者之间是标记耦合。


耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。耦合程度不取决于()。
  • A. 调用模块的方式
  • B. 各个模块之间接口的复杂程度
  • C. 通过接口的信息类型
  • D. 模块提供的功能数

【试题解析】∶耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。


模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B。模块A和B之间的耦合类型为()耦合。
  • A. 数据
  • B. 标记
  • C. 控制
  • D. 内容

【试题解析】∶数据耦合:两个模块彼此间通过数据参数交换信息。
标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
控制耦合:两个模块彼此间传递的信息中有控制信息。
内容耦合:一个模块需要涉及另一个模块的内部信息。
本题应该选择B选项。


模块A直接访问模块B的内部数据,则模块A和模块B的耦合类型为()。
  • A. 数据耦合
  • B. 标记耦合
  • C. 公共耦合
  • D. 内容耦合

【试题解析】∶耦合是指两个或两个以上的模块相互依赖于对方的一个量度。它可以分为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合及内容耦合等。
当一个模块直接修改或操作另一个模块的数据或者直接转入另一个模块时,就发生了内容耦合。所以本题的答案选D。


下图中的程序由A、B、C、D、E5个模块组成,下表中描述了这些模块之间的接口,每一个接口有一个编号。此外,模块A、D和E都要引用一个专用数据区。那么 A 和 E 之间耦合关系是()。
  • A. 公共耦合
  • B. 数据耦合
  • C. 内容耦合
  • D. 无耦合

【试题解析】∶由于模块A和模块E都引用了专用数据区的内容,所以是公共耦合。


耦合度描述了()。
  • A. 模块内各种元素结合的程度
  • B. 模块内多个功能之间的接口
  • C. 模块之间公共数据的数量
  • D. 模块之间相互关联的程度

【试题解析】∶本题考查软件模块化的基本概念。
模块的耦合度表现了模块之间相互关联的程度,分为b级,如下图所示:
分析


以下关于软件设计原则的叙述中,不正确的是()。
  • A. 将系统划分为相对独立的模块
  • B. 模块之间的耦合尽可能小
  • C. 模块规模越小越好
  • D. 模块的扇入系数和扇出系数合理

【试题解析】∶软件设计原则始终强调高内聚、低耦合的设计原则。具体包括:
保持模块的大小适中
尽可能减少调用的深度
多扇入,少扇出。
单入口,单出口
模块的作用域应该在模块之内
功能应该是可以被预测的。
综上所述,仅有C选项模块规模越小越好是不符合设计原则的。


在软件设计阶段进行模块划分时,一个模块的()。
  • A. 控制范围应该在其作用范围之内
  • B. 作用范围应该在其控制范围之内
  • C. 作用范围与控制范围互不包含
  • D. 作用范围与控制范围不受任何限制

【试题解析】∶模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。
模块作用域:指受该模块内一个判定所影响的所有模块的集合。
模块的作用域应该在控制域范围之内,本题选择B选项。


良好的启发式设计原则上不包括()。
  • A. 提高模块独立性
  • B. 模块规模越小越好
  • C. 模块作用域在其控制域之内
  • D. 降低模块接口复杂性

【试题解析】∶1、模块化设计要求高内聚、低耦合,模块独立体现的就是高内聚低耦合。A选项正确。
2、在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则:
(1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。不是越小越好。B选项错误。
(2)模块的扇入和扇出要合理。模块的扇入指模块直接上级模块的个数。模块的直属下级模块个数即为模块的扇出。
(3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。需要控制模块接口的复杂性。D选项正确。
3、尽力使模块的作用域在其控制域之内。模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。模块作用域:指受该模块内一个判定所影响的所有模块的集合。C选项正确。


在设计软件的模块结构时,()不能改进设计质量。
  • A. 尽量减少高扇出结构
  • B. 模块的大小适中
  • C. 将具有相似功能的模块合并
  • D. 完善模块的功能

【试题解析】∶在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则:
(1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。一般来说,一个模块的大小使其实现代码在1~2页纸之内,或者其实现代码行数在50~200行之间,这种规模的模块易于实现和维护。
(2)模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。设计良好的软件结构通常顶层扇出比较大,中间扇出较少,底层模块则有大扇入。一般来说,系统的平均扇入和扇出系数为3或4,不应该超过7,否则会增大出错的概率。
(3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。


在设计软件的模块结构时,()不能改进设计质量。
  • A. 模块的作用范围应在其控制范围之内
  • B. 模块的大小适中
  • C. 避免或减少使用病态连接(从中部进入或访问一个模块)
  • D. 模块的功能越单纯越好

【试题解析】∶高内聚是使模块的功能要相对独立和单一,这个功能单纯意思有出入。
对于单一,是指尽量只做一件事,而功能单纯,并不能说明模块能且仅能完成一个功能。
相对其他选项而言,D选项的说法并不合适。


在划分模块时,一个模块的作用范围应该在其控制范围之内。若发现其作用范围不在其控制范围内,则()不是适当的处理方法。
  • A. 将判定所在模块合并到父模块中,使判定处于较高层次
  • B. 将受判定影响的模块下移到控制范围内
  • C. 将判定上移到层次较高的位置
  • D. 将父模块下移,使判定处于较高层次

【试题解析】∶一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。
一个模块的控制范围指模块本身以及其所有下属模块((直接或间接从属于它的模块)的集合。
一个模块的作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。如果再设计过程中,发现模块作用范围不在其控制范围之内,可以用"上移判点"或下移受判断影响的模块,将它下移到判断所在模块的控制范围内"的方法加以改进。


Theo Mandel 在其关于界面设计所提出的三条"黄金准则"中,不包括()。
  • A. 用户操纵控制
  • B. 界面美观整洁
  • C. 减轻用户的记忆负担
  • D. 保持界面一致

【试题解析】∶人机交互"黄金三原则"包括:用户操纵控制、减轻用户的记忆负担、保持界面的一致性。
用户操纵控制:以不强迫用户进入不必要或不希望的动作的方式来定义交互模式;提供灵活的交互;允许中断和撤销用户交互;当技能级别增长时可以使交互流线化并允许定制交互;使用户与内部技术细节隔离开来;设计应允许用户与出现在屏幕上的对象直接交互。
减轻用户的记忆负担:减少对短期记忆的要求;建立有意义的默认;定义直观的快捷方式;界面的视觉布局应该基于真实世界的象征;以不断进展的方式揭示信息。
保持界面的一致性:允许用户将当前任务放入有意义的环境中;在应用系统家族中保持一致;如果过去的交互模型已经建立起了用户期望,除非有不得已的理由,否则不要改变它。


在软件开发过程中,系统测试阶段的测试目标来自于()阶段。
  • A. 需求分析
  • B. 概要设计
  • C. 详细设计
  • D. 软件实现

【试题解析】∶其中系统测试和验收测试是针对于需求分析,集成测试针对于概要设计,单元测试针对于详细设计,软件实现应该是针对于编码部分。


以下关于测试的叙述中,正确的是()。
  • A. 实际上,可以采用穷举测试来发现软件中的所有错误
  • B. 错误很多的程序段在修改后错误─般会非常少
  • C. 测试可以用来证明软件没有错误
  • D. 白盒测试技术中,路径覆盖法往往能比语句覆盖法发现更多的错误

【试题解析】∶一个高效的测试是指用少量的测试用例,发现被测软件尽可能多的错误。软件测试不能说明软件中不存在错误,不能用穷举法来进行测试。A选项错误。
经验表明,测试中存在集群规律,即未发现的错误数量与已发现的错误数量成正比,已发现的错误数量越多,则该模块未被发现的错误也就越多。B选项错误。
软件测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。C选项错误。
D选项的描述是正确的,白盒测试中语句覆盖是覆盖度最弱的,所以路径覆盖往往能比语句覆盖发现更多的错误。


软件调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正。其常用的方法中,()是指从测试所暴露的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假想的错误原因,用这些数据来证明或反驳,从而查出错误所在。
  • A. 试探法
  • B. 回溯法
  • C. 归纳法
  • D. 演绎法

【试题解析】∶无论哪种调试方法,其目的都是为了对错误进行定位。目前常用的调试方法有试探法、回溯法、对分查找法、演绎法和归纳法。
试探法:调试人员分析错误的症状,猜测问题所在的位置,利用在程序中设置输出语句,分析寄存器、存储器的内容等手段获得错误的线索,一步一步地试探和分析出错误所在。这种方法效率都很低,适合于错误比较简单的程序。
回溯法:调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往回跟踪代码,直到找出错误根源为止。这种方法适合于小型程序,对于大规模程序,由于其需要回溯的路径太多而变得不可操作。
对分查找法:这种方法主要用来缩小错误的范围,如果已经知道程序中的变量在若干位置的正确取值,可以在这些位置给这些变量以正确值,观察程序运行的输出结果,如果没有发现问题,则说明从赋予变量一个正确值开始到输出结果之间的程序没有错误,问题可能在除此以外的程序中。否则错误就在所观察的这部分程序中,对含有错误的程序段再使用这种方法,直到把故障范围缩小到比较容易诊断为止。
归纳法:归纳法就是从测试所暴露的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假想的错误原因,用这些数据来证明或反驳,从而查出错误所在。本题题干描述的是归纳法。
演绎法:演绎法根据测试结果,列出所有可能的错误原因;分析已有数据,排除不可能和彼此矛盾的原因;对其余原因,选择可能性最大的,利用已有的数据完善该假设,使假设更具体;用假设来解释所有的原始测试结果,如果能解释这一切,则假设得以证实,也就是找出错误,否则,要么是假设不完备或不成立,要么有多个错误同时存在,需要重新分析,提出新的假设,直到发现错误为止。


以下关于软件测试的叙述中,不正确的是()。
  • A. 在设计测试用例时应考虑输入数据和预期输出结果
  • B. 软件测试的目的是证明软件的正确性
  • C. 在设计测试用例时,应该包括合理的输入条件
  • D. 在设计测试用例时,应该包括不合理的输入条件

【试题解析】∶软件测试的目的是为了发现尽可能多的缺陷。


在设计测试用例时,应遵循()原则。
  • A. 仅确定测试用例的输入数据,无需考虑输出结果
  • B. 只需检验程是否执行应有的功能,不需要考虑程序是否做了多余的功能
  • C. 不仅要设计有效合理输入,也要包含不合理、失效的输入
  • D. 测试用例应设计得尽可能复杂

【试题解析】∶测试用例要包括欲测试的功能、应输入的数据和预期的输出结果。测试用例应覆盖有效合理输入,也要包含不合理、失效的输入。


以下关于软件测试的叙述中,正确的是()。
  • A. 软件测试不仅能表明软件中存在错误,也能说明软件中不存在错误
  • B. 软件测试活动应从编码阶段开始
  • C. —个成功的测试能发现至今未发现的错误
  • D. 在一个被测程序段中,若已发现的错误越多,则残存的错误数越少

【试题解析】∶软件测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。软件测试是软件质量保证的主要手段之一,软件测试应该尽可能早地计划和设计测试用例,而不是从编码阶段开始。
一个好的测试用例是极有可能发现至今为止尚未发现的错误的测试用例。一次成功的测试是发现了至今为止尚未发现的错误的测试。一个高效的测试是指用少量的测试用例,发现被测软件尽可能多的错误。软件测试不能说明软件中不存在错误。
经验表明,测试中存在集群规律,即未发现的错误数量与已发现的错误数量成正比,已发现的错误数量越多,则该模块未被发现的错误也就越多。


下面有关测试的说法正确的是()。
  • A. 测试人员应该在软件开发结束后开始介入
  • B. 测试主要是软件开发人员的工作
  • C. 要根据软件详细设计中设计的各种合理数据设计测试用例
  • D. 严格按照测试计划进行,避免测试的随意性

【试题解析】∶测试人员应该在系统设计阶段介入,根据概要设计说明书开始制定测试计划:测试过程要求用户参与,特别是提交阶段要通过用户的验收测试;设计测试用例时不但要选择合理的输入数据作为测试用例,还要选择不合理的输入数据作为测试用例。


两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是()个。
  • A. 25
  • B. 30
  • C. 50
  • D. 60

【试题解析】∶对于第一小组:发现了第二组发现的错误的15/30=0。5=50%
对于第二小组:发现了第一组发现的错误的15/25=0。6=60%
根据第一组的发现的错误数和第一组的效率得到:25÷50%=50
根据第二组的发现的错误数和第二组的效率得到:30÷60%=50
由于两个小组是独立进行测试的,所以可以估计:程序中的错误总数为50个。


在某大学学生学籍管理信息系统中,假设学生年龄的输入范围为16~40,则根据黑盒测试中的等价类划分技术,下面划分正确的是()。
  • A. 可划分为2个有效等价类,2个无效等价类
  • B. 可划分为1个有效等价类,2个无效等价类
  • C. 可划分为2个有效等价类,1个无效等价类
  • D. 可划分为1个有效等价类,1个无效等价类

【试题解析】∶根据等价类划分的原则,如果规定了输入数据的范围,则可划分为1个有效等价类和2个无效等价类。学生年龄的输入范围为16~40,则有效等价类为16s年龄≤40,两个无效等价类为年龄>40或年龄<16。


在模拟环境下,常采用黑盒测试检验所开发的软件是否与需求规格说明书一致。其中有效性测试属于()中的一个步骤。
  • A. 单元测试
  • B. 集成测试
  • C. 确认测试
  • D. 系统测试

【试题解析】∶本题考查系统测试中的确认测试。确认测试首先要进行有效性测试以及软件配置审查,然后进行验收测试和安装测试。其中有效性测试,就是在模拟环境下,通过黑盒测试检验所开发的软件是否与需求规格说明书一致。


某程序根据输入的三条线段长度,判断这三条线段能否构成三角形。以下6个测试用例中,()两个用例属于同一个等价类。

①6、7、13; ②4、7、10; ③39、20、35;
④9、11、21; ⑤5、5、4;⑥4、4、4。

  • A. ①②
  • B. ③④
  • C. ⑤⑥
  • D. ①④

【试题解析】∶本题考查黑盒测试技术的等价类划分。①为前两边之和等于第三边;②为三边不等且任意两边之和大于第三边;③④前两边之和小于第三边;⑤为其中有两边相等且可构成等腰三角形;⑥为三边相等且可构成等边三角形。


软件测试是软件开发中不可缺少的活动,通常()在代码编写阶段进行。检查软件的功能是否与用户要求一致是()的任务。
问题一
  • A. 验收测试
  • B. 系统测试
  • C. 单元测试
  • D. 集成测试
问题二
  • A. 验收测试
  • B. 系统测试
  • C. 单元测试
  • D. 集成测试

【试题解析】∶本题考查软件开发阶段与测试的对应关系。通过单元测试,(也称为模块测试)消除程序模块内部存在的错误和缺陷,这类测试在代码编写阶段完成,通过集成测试(也称为组装测试)检测和排除子系统结构上的错误和缺陷,通过确认验收测试,验证软件功能是否满足用户要求,通过系统测试,在已确认的计算机软硬件环境下,通过与系统需求对比,发现系统与用户需求不符或矛盾的地方。


软件可维护性是一个系统在特定的时间间隔内可以正常进行维护活动的概率。用MTTF和MTTR分别表示平均无故障时间和平均故障修复时间,则软件可维护性计算公式为()。
  • A. MTTF/(1+MTTF)
  • B. 1/(1+MTTF)
  • C. MTTR/(1+MTTR)
  • D. 1/(1+MTTR)

【试题解析】∶在软件外部,可以用 MTTR 来度量软件的可维护性,它指出处理一个有错误的软件需要花费的平均时间。如果用M表示可维护性指标,那么 M=1/(1+MTTR)。本题选择 D 选项。
A选项一般用来表示可靠性或可用性指标。


以下关于软件维护的叙述中,不正确的是()。
  • A. 软件维护解决软件产品交付用户之后进行中发生的各种问题
  • B. 软件维护期通常比开发期长得多,投入也大得多
  • C. 软件的可维护性是软件开发阶段各个时期的关键目标
  • D. 相对于软件开发任务而言,软件维护工作要简单得多

【试题解析】∶软件维护是软件生命周期最长的一段,相对于软件开发任务而言,软件维护工作要更加复杂,D选项描述不正确。


软件维护工具不包括()工具。
  • A. 版本控制
  • B. 配置管理
  • C. 文档分析
  • D. 逆向工程

【试题解析】∶辅助软件维护过程中的活动的软件称为"软件维护工具”,它辅助维护人员对软件代码及其文档进行各种维护活动。软件维护工具主要有:1、版本控制工具;2、文档分析工具;3、开发信息库工具;4、逆向工程工具;5、再工程工具;6、配置管理支持工具。


以下关于软件维护和可维护性的叙述中,不正确的是()。
  • A. 软件维护要解决软件产品交付用户之后运行中发生的各种问题
  • B. 软件的维护期通常比开发期长得多,其投入也大得多
  • C. 进行质量保证审查可以提高软件产品的可维护性
  • D. 提高可维护性是在软件维护阶段考虑的问题

【试题解析】∶在软件开发的各个阶段都需考虑软件的可维护性。


某搜索引擎在交付后,开发人员修改了其中的索引方法,使得用户可以更快地得到搜索结果。这种修改属于()维护。
  • A. 正确性
  • B. 适应性
  • C. 完善性
  • D. 预防性

【试题解析】∶在软件开发的各个阶段都需考虑软件的可维护性。


某商场的销售系统所使用的信用卡公司信息系统的数据格式发生了更改,因此对该销售系统进行的修改属于()维护。
  • A. 改正性
  • B. 适应性
  • C. 改善性
  • D. 预防性

【试题解析】∶在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下四种:
(1)改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。
(2)适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
(3)改善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为改善性维护。
(4)预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。本题对该销售系统的修改是为了应对数据格式的变化而作出的修改。


进行防错性程序设计,可以有效地控制()维护成本。
  • A. 正确性
  • B. 适应性
  • C. 完善性
  • D. 预防性

【试题解析】∶改正性维护也叫正确性维护,是指在使用过程中发现了隐蔽的错误后,为了诊断和改正这些隐蔽错误而修改软件的活动。
适应性维护是指为了适应变化了的环境而修改软件的活动。
完善性维护是指为了扩充或完善原有软件的功能或性能而修改软件的活动。
预防性维护是指为了提高软件的可维护性和可靠性、为未来的进一步改进打下基础而修改软件的活动。
防错性的程序设计,可以减少在系统运行时发生错误,有效地控制正确性维护的成本。


改正在软件系统开发阶段已经发生而系统测试阶段还没有发现的错误,属于()维护。
  • A. 正确性
  • B. 适应性
  • C. 完善性
  • D. 预防性

【试题解析】∶软件维护的内容一般包括准确性维护、适应性维护、完善性维护和预防性维护。正确性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。适应性维护是指使应用软件适应信息技术变化和管理需求变化而进行的修改。完善性维护主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。预防性维护是指为了适应未来的软硬件环境的变化,主动增加预防性的新功能,以使应用系统适应各类变化而不被淘汰。


ISO/IEC软件质量模型中,易使用性是指与使用所需的努力和由一组规定或隐含的用户对这样使用所作的个别评价有关的一组属性,其子特性不包括()。
  • A. 易理解性
  • B. 易学性
  • C. 易分析性
  • D. 易操作性

【试题解析】∶易用性的自特性包括易理解性、易学性、易操作性,其中C选项易分析性属于可维护性的子特性。


在ISO/IEC 9126软件质量模型中,可靠性质量特性是指在规定的一段时间内和规定的条件下,软件维持在其性能水平有关的能力,其质量子特性不包括()。
  • A. 安全性
  • B. 成熟性
  • C. 容错性
  • D. 易恢复性

【试题解析】∶质量


根据ISOIEC 9126软件质量模型中对软件质量特性的定义,可维护性质量特性的()子特性是指与为确认经修改软件所需努力有关的软件属性。
  • A. 易测试性
  • B. 易分析性
  • C. 稳定性
  • D. 易改变性

【试题解析】∶可维护性质量特性是指与软件维护的难易程度相关的一组软件属性,它包含了易分析性、稳定性、易测试性和易改变性4个子特性。其中:
易分析性是描述诊断缺陷或失效原因、判定待修改程度的难易程度的特性。
稳定性是描述修改造成难以预料的后果的风险程度,风险程度越低,稳定性越好。
易测试性是描述测试已修改软件的难易程度的特性。
易改变性是描述修改、排错或适应环境变化的难易程度。
本题中,是说与为确认经修改软件所需努力有关的软件属性,也就是说要确认修改后的软件是否正确所要付出的努力,这应该是易测试性所描述的内容,因此本题答案选A。


将每个用户的数据和其他用户的数据隔离开,是考虑了软件的()质量特性。
  • A. 功能性
  • B. 可靠性
  • C. 可维护性
  • D. 易使用性

【试题解析】∶功能性是指与功能及其指定的性质有关的一组软件质量;可靠性是指衡量在规定的一段时间内和规定条件下维护性能水平的一组软件质量;可维护性是指与软件维护的难易程度相关的一组软件属性;易使用性是指与使用难易程度及规定或隐含用户对使用方式所做的评价相关的属性。
综上所述,可以知道将每个用户的数据和其他用户的数据隔离开,是考虑了软件的功能性质量特性。


以下关于CMM的叙述中,不正确的是()。
  • A. CMM是指软件过程能力成熟度模型
  • B. CMM根据软件过程的不同成熟度划分了5个等级,其中,1级被认为成熟度最高,5级被认为成熟度最低
  • C. CMMI的任务是将已有的几个CMM模型结合在一起,使之构成“集成模型”
  • D. 采用更成熟的CMM模型,一般来说可以提高最终产品的质量

【试题解析】∶CMM中1级成熟度最低,5级成熟度最高,B选项描述错误,其他选项描述都是正确的。


能力成熟度模型集成(CMMI)是若干过程模型的综合和改进。连续式模型和阶段式模型是CMMI提供的两种表示方法,而连续式模型包括6个过程域能力等级,其中()使用量化(统计学)手段改变和优化过程域,以应对客户要求的改变和持续改进计划中的过程域的功效。
  • A. CL2(已管理的)
  • B. CL3(已定义级的)
  • C. CL4(定量管理的)
  • D. CL5(优化的)

【试题解析】∶《软件设计师教程(第5版)》P247页:
CLO(未完成的)∶过程域未执行或未得到CL1中定义的所有目标。
CL1(已执行的)∶其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
CL2(已管理的)︰其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制和评审。
CL3(已定义级的)∶其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程中裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。
CL4(定量管理的)∶其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则。
CL5(优化的)∶使用量化(统计学))手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效。


能力成熟度模型集成(CMMI)是若干过程模型的综合和改进。连续式模型和阶段式模型是CMMI提供的两种表示方法。连续式模型包括6个过程域能力等级(Capablity Level,CL),其中()的共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
  • A. CL1(已执行的)
  • B. CL2(已管理的)
  • C. CL3(已定义的)
  • D. CL4(定量管理的)

【试题解析】∶本题考查能力成熟度模型,参考《软件设计师教程(第5版《软件设计师教程((第5版)》P247页:
CL1(未完成的)︰过程域未执行或未得到CL1中定义的所有目标。
CL1(已执行的)︰其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
CL2(已管理的)︰其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制和评审。
CL3(已定义级的)︰其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程中裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。
CL4 (定量管理的)︰其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则。
CL5(优化的)∶使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效。


SEI能力成熟度模型(SEICMM)把软件开发企业分为5个成熟度级别,其中()重点关注产品和过程质量。
  • A. 级别2:重复级
  • B. 级别3:确定级
  • C. 级别4:管理级
  • D. 级别5:优化级

【试题解析】∶CMM的分级结构及其过程描述:
(1)初始级:软件过程的特点是无秩序或说无定规的,有时甚至是混乱的。软件过程定义几乎处于无章法、无步骤可循的状态,软件产品所取得的成功往往依赖于极个别人的努力和机遇。
(2)可重复级:已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。
(3)已定义级:用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。
(4)已管理级:软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。
(5)优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地对促进过程进行改进。
除第一级外,每一级都设定了一组目标,如果达到了这组目标,则表明达到了这个成熟级别,自然可以向上一更为成熟的高一级别迈进。CMM体系不主张跨级别的进化,因为从第二级开始,每一个低级别的实现均是更高级别实现的基础。


关于过程改进,以下叙述中不正确的是()。
  • A. 软件质量依赖于软件开发过程的质量,其中个人因素占主导作用
  • B. 要使过程改进有效,需要制定过程改进目标
  • C. 要使过程改进有效,需要进行培训
  • D. CMMI成熟度模型是一种过程改进模型,仅支持阶段性过程改进而不支持连续性过程改进

【试题解析】∶ 软件过程改进的实施对象是软件企业的软件过程,也就是软件产品的生产过程,其中还也包括软件维护之类的维护过程。
在本题各选项的描述中,A、B、C都是正确的,D不正确。
CMMI是Capability Maturity Model Integration的简称,即能力成熟度模型集成,它是在CMM的基础上发展起来的。CMMI是一种过程改进模型,它不仅支持阶段性过程改进,而且还支持连续性过程改进。


以下关于过程改进的叙述中,错误的是()。
  • A. 过程能力成熟度模型基于这样的理念:改进过程将改进产品,尤其是软件产品
  • B. 软件过程改进框架包括评估、计划、改进和监控四个部分
  • C. 软件过程改进不是一次性的,需要反复进行
  • D. 在评估后要把发现的问题转化为软件过程改进计划

【试题解析】∶软件过程改进/过程改进(SPI)帮助软件企业对其软件(制作)过程的改变(进)进行计划、(措施)制定以及实施。它的实施对象就是软件企业的软件过程,也就是软件产品的生产过程,当然也包括软件维护之类的维护过程,而对于其他的过程并不关注。在软件过程改进时,如果发现问题,需转化为软件过程改进计划。软件过程改进不是一次性就能达到最终目标,而是需要反复进行的,每次改进会经历四个步骤:评估、计划、改进和监控。
软件过程改进的框架包括:过程改进基础设施,过程改进线路图,软件过程评估方法和软件过程改进计划。


软件能力成熟度模型将软件能力成熟度自低到高依次划分为初始级、可重复级、定义级、管理级和优化级,并且高级别成熟度一定可以达到低级别成熟度的要求。其中()中的开发过程及相应的管理工作均已标准化、文档化,并已建立完善的培训制度和专家评审制度。
  • A. 可重复级和定义级
  • B. 定义级和管理级
  • C. 管理级和优化级
  • D. 定义级、管理级和优化级

【试题解析】∶软件能力成熟度模型是美国卡内基·梅隆大学提出的用于评估软件机构的能力成熟度方法和标准,现已被业界广泛重视。该模型将软件机构能力成熟度分为5个级别.从第三级(定义级)到最高级(优化级),都要求软件开发过程及相应的管理工作必须标准化、文档化,并综合为软件机构的标准软件过程:并必须建立完善的培训制度和专家评审制度。


软件能力成熟度模型(CMM)将软件能力成熟度自低到高依次划分为初始级、可重复级、定义级、管理级和优化级。其中()对软件过程和产品都有定量的理解与控制。
  • A. 可重复级和定义级
  • B. 定义级和管理级
  • C. 管理级和优化级
  • D. 定义级、管理级和优化级

【试题解析】∶本题考查软件能力成熟度模型(CMM)的成熟度等级。CMM将软件过程能力成熟度划分为5级,每一级都为下一级提供一个基础。管理级对软件过程和产品都有定量的理解与控制,因此管理级和优化级均对软件过程和产品有定量的理解与控制。


软件能力成熟度模型(CMM)将软件能力成熟度自低到高依次划分为5级。目前,达到CMM第3级(已定义级)是许多组织努力的目标,该级的核心是()。
  • A. 建立基本的项目管理和实践来跟踪项目费用、进度和功能特性
  • B. 使用标准开发过程(或方法论)构建(或集成)系统
  • C. 管理层寻求更主动地应对系统的开发问题
  • D. 连续地监督和改进标准化的系统开发过程

【试题解析】∶本题考查软件成熟度模型(CMM)的基本概念。建立基本的项目管理和实践来跟踪项目费用、进度和功能特性为可重复级的核心;使用标准开发过程(或方法论)构建(或集成)系统为已定义级的核心;管理层寻求更主动地应对系统的开发问题为已管理级的核心;连续地监督和改进标准化的系统开发过程为优先级的核心。


软件能力成熟度模型(CMM)的第4级(已管理级)的核心是()。
  • A. 建立基本的项目管理和实践来跟踪项目费用、进度和功能特性
  • B. 组织具有标准软件过程
  • C. 对软件过程和产品都有定量的理解和控制
  • D. 先进的新思想和新技术促进过程不断改进

【试题解析】∶本题考查成熟度等级(CMM)知识。在CMM的不同等级有不同的核心。在可重复级,建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性。在已定义级,所有项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件。在已管理级,收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。在优化级,过程的量化反馈和先进的新思想、新技术促使过程不断改进。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSCI软件设计说明是指为了确保软件开发过程中的有效沟通和清晰的设计路线而编写的文件。它通常由软件团队中的软件设计师撰写,与项目经理和开发人员共同讨论和修改。这个文档的目的是确保开发人员和管理人员对软件设计方案有一个全面的了解,并提供清晰的设计指导。 CSCI软件设计说明在整个软件开发过程中承担了重要的角色。首先,它描述软件的整体架构和设计原则。它解释了软件系统的组成部分,如模块、组件以及它们之间的关系和交互方式。这有助于团队成员理解整个系统的结构和逻辑,并提供一个统一的设计准则,以便所有人都能在设计和实现过程中遵循。 其次,CSCI软件设计说明还详细描述了每个模块或组件的功能和实现细节。它包括类和函数的定义、数据结构和算法的选择以及代码规范等内容。这个部分非常重要,因为它确保了代码的高质量和可维护性。开发人员可以根据这些细节和指南开发代码,这样就可以避免重复设计、错误和低效的代码。 最后,CSCI软件设计说明还包括测试计划和过程,以确保开发的软件符合既定的需求和设计。它描述了测试的类型、用例和预期的结果,并提供了测试的方法和工具。这有助于开发团队在开发过程中进行有效的质量控制,并及时发现和修复潜在的问题。 总之,CSCI软件设计说明是一个重要的文档,对于软件开发过程中的沟通和设计非常关键。它帮助团队成员理解整个系统的结构和逻辑,并提供清晰的设计指导和测试计划,以确保软件的高质量和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值