软件工程导论习题

第一章 软件工程学概述

1.软件生命周期 一般包括:软件开发期和软件运行期,下述____不是软件开发期所应包含的内容( D)

A、需求分析

B、结构设计

C、程序编制

D、软件维护

解析:软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。软件定义时期的任务是: 确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计(需求分析),详细设计(结构设计),编码和单元测试,综合测试(程序编制)。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。维护时期的主要任务是使软件持久地满足用户的需要。

2.软件生命周期是指一个软件从_______开始直到该软件最终退役为止的整个时期。C

A、开发

B、需求

C、定义

D、构想

解析:软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

3.软件危机是指在计算机软件的( )过程中所遇到的一系列严重问题。B

A、设计

B、开发和维护

C、应用

D、需求分析

解析:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

4.以下( )不属于软件危机的表现。D

A、对软件开发成本和进度估计不准确。

B、软件的文档不全。

C、软件成本在计算机系统总成本中所占比例逐年上升。

D、软件开发生产率提高很快。

解析:软件危机的典型表现:

  1. 对软件开发成本和进度的估计常常很不准确

  2. 用户对“已完成的”软件系统不满意的现象经常发生

  3. 软件产品的质量往往靠不住。

  4. 软件常常是不可维护的

  5. 软件通常没有适当的文档资料。

  6. 软件成本在计算机系统总成本中所占的比例逐年上升。

  7. 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

    D没说全

5.以下( )不是产生软件危机的原因。A

A、软件也是商品

B、软件不同与其他的普通实物商品

C、没有弄清楚需求就着手编写程序

D、程序人员错误的认知

解析:产生软件危机的原因:

与软件本身特点有关:

1.软件不同于硬件.管理和控制软件开发过程相当困难

2.软件在运行过程中不会因为使用时间过长而被用坏如果运行中发现了错误,很可能是遇到了一个在开发时期引入的在测试阶段没能检测出来的错误。

3.软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

4.事实上,对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。

5.目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念。在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。

6.错误的认识和做法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等

软件开发与维护的方法不正确有关:

1.只重视程序而忽视软件配置其余成分的糊涂观念。

2.软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现“已完成的”软件不完全符合用户的需要。

3.严重的问题是在软件开发的不同阶段进行修改需要付出的代价是很不相同的,如下图所示。

本题软件危机与软件是不是商品并没有关系,B是有关于软件本身的特点,C、D分别对应4、6点

6.以下描述错误的是:D

A、随着时间的推移,越往后发现错误,修复错误成本越大。

B、软件是程序、数据及相关文档的完整集合。

C、软件开发项目是团队协同配合、共同体完成。

D、软件开发比软件测试更重要。

解析:软件开发与软件测试同等重要

7.软件工程的基本原理包括:D

A、用分阶段的生命周期计划严格管理;坚持进行阶段评审

B、实行严格的产品控制;采用现代程序设计技术

C、结果应能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性

D、以上都对

解析:软件工程的基本原理:

1、用分阶段的生命周期计划严格管理

2、坚持进行阶段评审

3、实行严格的产品控制

4、采用现代程序设计技术

5、结果应能清楚地审查

6、开发小组的人员应该少而精

7、承认不断改进软件工程实践的必要性

8.软件工程方法学包含3个要素,这3个要素不包括( )A

A、测试

B、方法

C、工具

D、过程

解析:软件工程方法学:

方法:完成软件开发的各项任务的技术方法,回答“怎样做”的问题

工具:为运用方法而提供的自动的或半自动的软件工程支撑环境

过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤

9.目前使用最广泛的软件工程方法学是传统方法学和( B )

A、面向过程方法学

B、面向对象方法学

C、面向结果方法学

D、面向测试方法学

解析:软件工程方法学:

1、传统方法学:传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。

2、面向对象方法学:与传统方法相反,面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。

10.软件工程中应用最广泛的模型是(A )

A、瀑布模型

B、增量模型

C、螺旋模型

D、喷泉模型

解析:1.瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。如下图所示为传统的瀑布模型

传统的瀑布模型

按照传统的瀑布模型开发软件,有下述的几个特点。
a)阶段间具有顺序性和依赖性:
两重含义: ①必须等前一阶段的工作完成之后,才能开始后一阶段的工作; ②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。

b) 推迟实现的观点
瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。

c) 质量保证的观点:
软件工程的基本目标是优质、高产。为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。
每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

瀑布模型有许多优点:
可强迫开发人员采用规范的方法(例如,结构化技术);
严格地规定了每个阶段必须提交的文档;
要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

2.增量模型:增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。

优点:能在较短时间内向用户提交可完成部分工作的产品。

逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

使用增量模型的困难:在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。

必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。

风险更大的增量模型:

3.螺旋模型螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。

完整的螺旋模型

4.喷泉模型:“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。迭代是软件开发过程中普遍存在的一种内在属性。用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。

图中代表不同阶段的圆圈相互重叠,这明确表示两个活动之间存在交迭;
图中在一个阶段内的向下箭头代表该阶段内的迭代(或求精)。
图中较小的圆圈代表维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。

第二章 可行性研究

1.DFD中的每个加工至少有______。 (B )

A、一个输入流或一个输出流

B、一个输入流和一个输出流

C、一个输入流

D、一个输出流

解析:DFD图:数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

  1. 数据流(箭头):是由一组固定成分的数据组成,表示数据的流向。值得注意的是,数据流图中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。
  2. 加工(圆或椭圆):加工描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。每个加工都有一个名字和编号。编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。
  3. 数据存储(双杠或单杠):数据存储表示暂时存储的数据。每个数据存储都有一个名字。
  4. 外部实体(矩形,数据的原点或终点):外部实体是存在于软件系统之外的人员或组织,他指出数据所需要的发源地或系统所产生的数据的归属地。

分层DFD图

如果系统的规模较大,仅用一个DFD图难以描述,会使得系统变得复杂、庞大而又难以理解。为了降低系统的复杂性,一般采取“逐层分解”的方法,绘制分层的DFD图。

  • 绘制分层DFD图的原则一般是:先全局后局部,先整体后细节,先抽象后具体。
  • 绘制分层DFD图的步骤一般是
  • 先确定整个系统的范围和功能,绘制顶层的DFD图。
  • 绘制出顶层的DFD图之后,然后逐层分解顶层DFD图,获得若干中间层DFD图。
  • 根据获得的中间层DFD图绘制各个底层的DFD图。

画DFD图的步骤

  1. 首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据、输出数据流。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。下图为飞机机票预订系统的顶层图。

顶层图

  1. 画系统内部,即画下层数据流图。不再分解的加工称为基本加工。一般将层号从0开始编号,采用自顶向下,由外向内的原则。画0层数据流图时,分解顶层流图的系统为若干子系统,决定每个子系统间的数据接口和活动关系。例如,在上面的机票预订系统按功能可分成两部分,一部分为旅行社预订机票,另一部分为旅客取票,两部分通过机票文件的数据存储联系起来,0层数据流图如图3-4。

注意事项

  • 命名。不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。
  • 画数据流而不是控制流。数据流反映系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
  • 一般不画物质流。数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要画物质流。
  • 每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
  • 编号。如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。

子图与父图

  • 父图与子图的平衡。子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。
  • 局部数据存储。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
  • 提高数据流图的易懂性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。

2.数据字典(DD)是定义( A )系统描述工具中的数据的工具。

A、数据流程图

B、系统流程图

C、程序流程图

D、软件结构图

解析:数据字典是关于数据的信息的集合,也就是对数据流程图中包含的所有元素的定义的集合。

3.在数据流图中,椭圆O代表__________。 ( C)

A、源点

B、终点

C、处理

D、模块

解析:数据流四中基本符号:

正方形表示数据的源点或终点

圆角矩形代表变换数据的处理

开口矩形代表数据存储

箭头表示数据流,即特定数据的流动方向

image-20220316100404874

4.数据字典中,一般不包括下列哪个选项( D )。

A、数据流

B、数据存储

C、加工

D、源点与终点

解析:一般说来,数据字典应该由对下列4类元素的定义组成。处理=加工,没有源点与终点

image-20220316100459414

数据元素的别名就是该元素的其他等价的名字,出现别名主要有下述3个原因:

对于同样的数据,不同的用户使用了不同的名字。

一个分析员在不同时期对同一个数据使用了不同的名字。

两个分析员分别分析同一个数据流时,使用了不同的名字。

由数据元素组成数据的方式只有下述3种基本类型:

顺序即以确定次序连接两个或多个分量。

选择即从两个或多个可能的元素中选取一个。

重复即把指定的分量重复零次或多次。

数据字典的用途:

数据字典最重要的用途是作为分析阶段的工具

数据字典中包含的每个数据元素的控制信息是很有价值的

数据字典是开发数据库的第一步,而且是很有价值的一步。

5.在数据流图中,有名字及方向的成分是________. ( C)

A、控制流

B、信息流

C、数据流

D、信号流

解析:箭头表示数据流,即特定数据的流动方向

6.数据字典最基本的功能是( C )。

A、数据库设计

B、数据通讯

C、数据定义

D、数据维护

解析:数据字典是关于数据的信息的集合,也就是对数据流程图中包含的所有元素的定义的集合。

从定义可以看出来是对定义的集合那么他最基本的功能其实也就是数据定义。数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明

7.数据字典是对数据定义信息的集合,它所定义的对象都包含于___.( A)

A、数据流图

B、程序框图

C、软件结构

D、方框图

解析:见上题定义

8.可行性研究要进行一次______需求分析。( C)

A、详细的

B、全面的

C、简化的、压缩的

D、彻底的

解析:可行性研究是在项目建议书被批准后,对项目在技术上和经济上是否可行所进行的科学分析和论证,它需要进行一次简化的、压缩的需求分析。软件工程导论第六版第二章导论也说了:必须时刻记住,可行性研究的目的不是解决问题,而是确定问题是否值得去解决。怎样达到这个目的呢?当然不能靠主观猜想而只能靠客观分析。必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和
目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。

第三章 需求分析

1.软件需求说明书的作用不应包括_______。(D )

A、软件设计的依据

B、用户与开发人员对软件要做什么的共同理解

C、软件验收的依据

D、软件可行性研究的依据

解析:软件需求说明书(软件规格说明书):对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。它的作用是作为用户和软件开发人员达成的技术协议书,作为着手进行设计工作的基础和依据,系统开发完成以后,为产品的验收提供了依据。

需求说明书是由开发人员经需求分析后形成的软件文档,是对需求分析工作的全面总结。其作用有以下几点。

(1)便于用户、分析人员和软件设计人员进行理解和交流,用户通过需求规格说明书在分析阶段即可初步判定目标软件能否满足其原来的期望,设计人员则将需求规格说明书作为软件设计的基本出发点。

(2)支持目标软件系统的确认

在软件的测试阶段,根据需求说明书中确定的可测试标准设计测试用例,确认软件是否满足需求说明书中规定的功能和性能等。

(3)控制系统进化过程

在需求分析完成之后,如果用户追加需求,那么需求说明书将用于确定是否为新需求。

2.软件需求分析一般应确定的是用户对软件的__________.(D )

A、功能需求

B、非功能需求

C、性能需求

D、功能需求和非功能需求

解析:软件需求中需构造一个完全的系统逻辑模型,理用户出的每一功能性能求,使用户明确自己的任务。因此,需求应确定用户对软件的功能需求 和非功能需求。

3.需求分析是_______.(A )

A、软件开发工作的基础

B、软件编码的开始

C、由系统分析员单独完成的

D、由用户自己单独完成的

解析:需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。软件需求分析是一个项目的开端,也是项目实施最重要的关键点。

4.需求分析中,开发人员要从用户那里解决的最重要的问题是_____。(A )

A、让软件做什么

B、要给软件提供哪些信息

C、要求软件工作效率怎样

D、让软件具有何种结构

5.软件需求规格说明书的内容不应包括对_______的描述。( B)

A、主要功能

B、算法的详细过程

C、用户界面及运行环境

D、软件的性能

解析:软件需求说明书是指在研究用户要求的基础上,完成可行性分析和投资效益分析以后,由软件工程师或分析员编写的说明书。它详细定义了信息流和界面,功能需求,设计要求和限制,测试准则和质量保证要求。它的作用是作为用户和软件开发人员达成的技术协议书,作为着手进行设计工作的基础和依据,系统开发完成以后,为产品的验收提供了依据。

软件需求说明书的内容应包含如下几部分内容:

1.概述

·说明开发软件系统的目的、意义和背景

·说明用户的特点、约束

2.需求说明

·功能说明,逐项列出各功能需求的序号、名称和简要说明

·性能说明,说明处理速度、响应时间、精度等

·输入输出要求·数据管理要求·故障处理要求

3.数据描述

·数据流图·数据字典·接口说明

4.运行环境规定

·说明软件运行所需的硬件设备

·说明软件运行所需的系统软件和软件工具

5.限制

·说明软件开发在成本、进度、设计和实现方面的限制。

6.需求分析最终结果是产生_______。( C)

A、项目开发计划

B、可行性分析报告

C、需求规格说明书

D、设计说明书

7.软件需求分析是保证软件质量的重要步骤,它的实施应该是在__C__。

A、编码阶段

B、软件开发全过程

C、软件定义阶段

D、软件设计阶段

解析:在软件技术人员着手设计软件之前,需要由既精通计算机技术又 熟悉用户应用领域的软件系统分析人员,对软件问题进行细致的需求分析。 需求分析是软件工程过程中一个重要的里程碑。在需求分析过程中,软件系统分析人员通 过研究用户在软件问题上的需求意愿,分析出软件系统在功能、性能、数据等诸多方面应该达 到的目标,从而获得有关软件的需求规格定义

8.在结构化的分析方法中,用实体关系图表达系统中的对象及其关系,在实体关系图中,表达对象的实例关系之间的关联有三种类型是(ABD )。

A、一对一联系

B、多对多联系

C、不确定

D、一对多联系

解析:为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)。

模型种类数据模型:E-R图功能模型:数据流图行为模型:状态转换图数据字典:描述出现在上面三种模型中的数据对象及控制信息的特性,给出准确定义。

实体-联系图

数据对象可以是外部实体、事物、行为、事件、角色、单位、地点、结构等。

属性定义了数据对象的性质。

联系(1)一对一联系(1:1)(2)一对多联系(1:N)(3)多对多联系(M:N)

9.结构化设计是一种应用最广泛的系统设计方法,是以__B__为基础,自顶向下,求精和模块化的过程。

A、数据库

B、数据流图

C、数据结构

D、系统模块

解析:面向数据流自顶向下求精 。借助数据流图、数据字典、IPO图等,细化、完善详细的数据流图,等到各处理环节对应的功能。

需求分析大佬博客地址:https://www.cnblogs.com/youcong/p/9500873.html

第五章 总体设计

1.最高程度也是最差的耦合是________.(B )

A、公共耦合

B、内容耦合

C、控制耦合

D、数据耦合

解析:

image-20220413201634959

2.模块内聚度越高,说明模块内各成分彼此结合的程度越_______.(B )

A、松散

B、紧密

C、无法判断

D、相等

解析:软件设计应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易。

内聚:衡量一个模块内部各个元素彼此结合的紧密程度

3.在下列耦合中,最低程度的偶合是(C )

A、内容偶合

B、公共偶合

C、数据偶合

D、控制耦合

解析:数据耦合 :两个模块之间只是通过参数交换信息,而且交换的信息仅仅是数据。 数据耦合是最低程度的耦合。

控制耦合 :两个模块之间所交换的信息包含控制信息。 控制耦合是中等程度的耦合。

公共耦合 :两个或多个模块通过一个公共区相互作用时的耦合。 公共区可以是:全程数据区、共享通信区、内存公共覆盖区、任何介质上的文件、物理设备等。 软件结构中存在大量的公共耦合时会给诊断错误带来困难。

内容耦合 : 一个模块与另一个模块的内容直接发生联系。 内容耦合对维护会带来严重的困难。

4.一个模块把数值作为参数传送给另一个模块,这种耦合方式称为( A)

A、数据耦合

B、公共耦合

C、控制耦合

D、标记耦合

解析:标记耦合(特征耦合):当把整个数据结构作为参数传递而被调用模块只需要使用其中一部分数据元素时,这种情况称为标记耦合。

数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.数据耦合联系简单,耦合度低,模块独立性好,模块间的影响最小,是最理想的一种耦合形式。

5.原型化方法是用户和设计者之间执行的一种交互构成,适用于( A )系统。

A、需求不确定性高的

B、需求确定的

C、管理信息

D、实时

解析:原型不同于最终系统,它只实现所选择的部分功能,仅是为了试验或是演示而用,部分功能需求可以忽略或者模拟实现,因此适用于需求不确定性高的系统

6.银行计算机储蓄管理信息系统中,根据客户提出的要求(如存款、取款、查询、挂失、咨询等)进行相应的业务处理的该层数据流图是______。B

A、变换型

B、事务性

C、既不是变换型也不是事务型

D、不确定

解析:变换流 :具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。 如图所示,该变换中心可以理解为数据的加工和处理程序。

image-20220413203204972

事务流:事务型数据流图中存在一个事务中心(也就是数据处理、加工中心),它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径。

image-20220413203233032

题干中根据客户提出的要求(如存款、取款、查询、挂失、咨询等)进行相应的业务处理很明显是存在一个事务中心的,所以为事务性

7.以下不属于需求分析所解决的问题是( D)

A、撰写需求规格说明书

B、建立概念模型

C、画出状态转换图

D、画出功能模块图

解析:需求分析的任务:确定对系统的综合要求包括: 1.功能需求 2.性能需求3. 可靠性和可用性需求4. 出错处理需求 系统发现错误时采取的行动,主要在系统关键部分设置。5. 接口需求 用户接口、硬件接口、软件接口、通信接口、等。6. 约束 精度、工具和语言、设计约束、硬件约束、标准,等。7. 逆向需求 8. 将来可能提出的要求 ;

分析系统的数据要求 通过建立数据模型来分析,如数据字典、层次方框图、Warnier图,并将数据结构规范化。

导出系统的逻辑模型 包括完善的数据流图、实体-联系图、状态转换图、数据字典、主要的处理算法(IPO图)等。

修正系统开发计划 修订前期制定的开发进度计划、等。

画出功能模块图是在总体设计阶段而不是需求分析阶段

8.总体设计启发式规则包括(ABCD )。多项选择题

A、改进软件结构提高模块独立性

B、力争降低模块接口的复杂度

C、设计单入口、单出口的模块

D、模块功能应该可以预测

解析:启发规则
争取低耦合、高内聚
增加内聚、减少耦合

模块规模适中
过大,分解不充分,不易理解;
太小,则开销过大、接口复杂。

适当控制模块结构参数

深度 = 分层的层数。过大表示分工过细。
宽度 = 同一层上模块的最大值。过大,表示系统复杂度大。
扇出 = 一个模块直接调用\控制的模块数。
扇入 = 直接调用该模块的模块数。
尽可能减少高扇出结构,随着深度增大扇入。
扇出太大一般是因为缺乏中间层次,应当适当增加中间层次的控制模块;
扇出太小时可以把下级模块进一步分解为若干个子功能模块,或合并到它的上级模块中去。
顶层扇出高,中间扇出少,底层高扇入。
模块的作用范围保持在该模块的控制范围内

控制域 = 该模块本身以及所有直接或间接从属于它的模块。
作用域 = 该模块中一个判断所影响的所有其他模块。

令作用域是控制域的子集:

把作判定的点往上移;
把那些在作用域但不在控制域内的模块移到控制域内。
降低接口的复杂程度
模块接口的复杂性是引起软件错误的一个主要原因。接口设计应该使得信息传递简单并且与模块的功能一致。

单出口单入口,避免内容耦合
易于理解和维护。

模块功能可预测
相同输入必产生相同输出。

测试题目

1.在软件生存周期中,( B )阶段要回答的问题是“要解决的问题是做什么?”

A、详细设计

B、需求分析

C、概要设计

D、软件测试

解析:软件生命周期各阶段的任务:

1、问题定义

确定好要解决的问题是什么(what),通过对客户的访问调查,系统分析员扼要的写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。

2、可行性研究

确定该问题是否存在一个可以解决的方案。可行性研究的结果是客户做出是否继续进行这项工程的决定的重要依据,一般来说,只有投资可能取得较大的效益的那些工程项目才值得继续进行下去。

3、需求分析

深入具体的了解用户的需求,在所开发的系统要做什么这个问题上和用户想法完全一致。明确目标系统必须做什么,确定目标系统必须具备哪些功能。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。用《规格说明书》记录对目标系统的需求。

4、概要设计(总体设计)

概括的说,应该怎样实现目标系统,设计出实现目标系统的几种可能方案,设计程序的体系结构,也就是确定程序由哪些模块组成以及模块之间的关系。

5、详细设计

实现系统的具体工作,编写详细规格说明,程序员可以根据它们写出实际的程序代码。详细设计也称模块设计,在这个阶段将详细的设计每个模块,确定实现模块功能所需的算法和数据结构。

6、编码和单元测试(编码占全部开发工作量的10%-20%)

7、综合测试(测试占全部开发工作量的40%-50%)

8、软件维护

通过各种必要的维护活动使系统持久的满足用户的需求。主要分为 改正性维护、适应性维护、完善性维护、预防性维护。

2.软件特性中,一个软件能再次用于其他相关应用的程度称为(B )。

A、可重用性

B、容错性

C、可适应性

D、可移植性

解析:可重用性:系统的某部分可被应用到其他系统中的程度,以及应用的难易程度。比如组件化,就是从代码的可重用性考量的,比如使用Android Jetpack的组件更好更快的构建App,复用了很多的逻辑代码。
容错性:在软件失效或者违反规定的接口的情况下,软件产品维持规定的性能级别的能力

可移植性(portability):软件产品从一种环境迁移到另外一种环境的能力

可适应性:软件产品无需采用手段就可能适应不同的指定环境的能力

3.下列选项中,属于实现阶段的任务的是( C )。

A、组装测试计划

B、绘制程序流程图

C、单元测试

D、验收测试计划

解析:编码和测试统称为实现。

4.在软件质量要素中,学习使用软件(即操作软件、准备输入数据、解释输出结果等)的难易程度指的是( B)。

A、完整性

B、可用性

C、正确性

D、灵活性

5.在软件工程中,不属于软件定义部分的任务是( D )。

A、软件验收测试计划

B、软件项目计划

C、需求分析

D、集成测试计划

解析:软件定义时期的任务是确定软件开发工程必须完成的总目标,这个时期通常进一步划分成三个阶段,即问题定义、可行性研究和需求分析。在这个阶段需要完成制定软件项目计划、进行需求分析和制定验收测试计划等任务。该阶段的任务不包括制定集成测试计划,它是软件开发阶段的任务之一。

6.在软件工程中,( C )不属于软件开发部分的任务。

A、软件总体设计

B、单元测试

C、软件经销

D、集成测试

7.需求分析最终结果是产生( C )。

A、项目开发计划

B、可行性分析报告

C、需求规格说明书

D、设计说明书

解析:需求分析也弥为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程,最终产生需求规格说明书,把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作,故选 B
项目开发计划是用于指导项目实施和管理的整合性、综合性、全局性、协调统一的整合计划文件。进行需求分析不能得到项目开发计划,故排除 A 设计说明书是对各方面的设计进行要求,要进行产品分析,设计分析,故排除 C
可行性分析报告在前一阶段的项目建议书获得审批通过的基础上,主要对项目市场、技术、财务、工程、经济和环境等方面进行精确系统、完备无遗的分析,为投资决策提供科学依据,并作为进一步开展工作的基础。要进行可行性分析,不是需求

8.数据流图中的每个加工至少有(A )。

A、一个输入流和一个输出流

B、一个输入流或一个输出流

C、一个输入流

D、一个输出流

解析:2-1

9.SA方法的基本思想是( C)。

A、自底向上逐步抽象

B、自底向上逐步分解

C、自顶向下逐步分解

D、自顶向上抽象

解析:SA 法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。

SA 法的基本思想

结构化分析(Structured Analysis,简称SA 法)是面向数据流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。

结构化分析方法的基本思想是“分解”和“抽象”。

分解:是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。

抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个自系统的方法就是“抽象”。

2.SA 法的步骤

⑴建立当前系统的“具体模型”;

系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD 图描述出来。这样的表达与当前系统完全对应,因此用户容易理解。

⑵抽象出当前系统的逻辑模型;

分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD 图描述的当前系统的“逻辑模型”。

⑶建立目标系统的逻辑模型;

分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的“逻辑模型”(修改后的DFD 图)。

⑷为了对目标系统作完整的描述,还需要考虑人机界面和其它一些问题。

3.SA 法的描述工具

⑴ 分层的数据流图

⑵ 数据词典

⑶ 描述加工逻辑的结构化语言、判定表或判定树。

2 数据流图

数据流图(Data Flow Diagram,简称DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。

1.数据流图的图符数据流图有以下4 种基本图形符号:

箭头,表示数据流; 〇:圆或椭圆,表示加工; =:双杠(带一边开口,一边闭合),表示数据存储; □:方框,表示数据的源点或终点。

箭头表示数据流,圆或椭圆表示加工。双杠或者单杠表示数据存储,矩形框表示数据的源点或终点,即外部实体。

⑴ 数据流 是数据在系统内传播的路径,由一组成固定的数据项组成。除了与数据存储(文件)之间的数据流不用命名外,其余数据流都应该用名词或名词短语命名。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,也可以从源点流向加工或从加工流向终点。

⑵ 加工 也称为数据处理,它对数据流进行某些操作或变换。每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。在分层的数据流图中,加工还应有编号。

⑶ 数据存储 指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。流向数据存储的数据流可理解为写入文件,或查询文件,从数据存储流出的数据可理解为从文件读数据或得到查询结果。

⑷ 数据源点和终点 是软件系统外部环境中的实体(包括人员、组织或其他软件系统),统称为外部实体。一般只出现在数据流图的顶层图中。

10.面向对象技术中,对象是类的实例。对象有三种成份:(D )、属性和方法(或操作)。

A、消息

B、规则

C、封装

D、标识

解析:对象三大属性 状态,行为,标识符 标识符是一个对象的属性,它用于区分这个对象与所有其他对象

11.系统流程图是描述( D )的工具。

A、逻辑系统

B、程序系统

C、体系结构

D、物理系统

解析:系统流程图是进行系统分析时常用的一种描述方法,它用物理符号以黑盒子的形式描绘系统里面的毎个部件。它表达的仅是信息在系统各部件之间流动的情况,而不是对信息进行加工处理的控制过程。

系统流程图是概括地描述物理系统的传统工具,它一般用在可行性分析阶段。它的基本思想是用图形符号以黑盒子的形式描绘组成系统的每个部件(程序、文档、数据库等)。系统流程图表达的是数据在系统各个部件之间的流动情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号相同,但它却是物理数据流图而不是程序流程图。

12.一个模块把数值作为参数传送给另一个模块,这种耦合方式称为( A )。

A、数据耦合

B、公共耦合

C、控制耦合

D、标记耦合

解析:2-3,2-4

13.模块本身的内聚是模块独立性的重要度量因素之一,在七类内聚中,具有最强内聚的一类是( )。

A、功能性内聚

B、过程性内聚

C、逻辑性内聚

D、顺序性内聚

解析:内聚强度从低到高如下所示: 偶然内聚,逻辑内聚,时间内聚,过程内聚,通讯内聚,顺序内聚,功能内聚

14.为了提高软件测试的效率,应该( D )。

A、随机地选取测试数据

B、取一切可能的输入数据作为测试数据

C、在完成编码以后制定软件的测试计划

D、选择发现错误可能性最大的数据作为测试用例

解析:对于一个软件,其可能的输入数据数量一般是非常惊人的,所以要想全部将其作为测试用例是不现实的,应当选择发现错误可能性大的数据作为测试用例,不能随机选取测试用例

15.产生软件维护的副作用是指( D )。

A、开发软件时的错误

B、运行时的错误

C、隐含的错误

D、因修改软件而造成的错误

解析:维护成本中 无形的代价包括: 1. 维护活动占用了其他软件开发可用的资源,使资源的利用率降低;2. 一些修复或修改请求得不到及时安排,使客户满意度下降;3. 维护的结果把一些新的潜在的错误引入软件,降低了软件质量;4. 将软件人员抽调到维护工作中,使得其他软件开发过程收到干扰。

所谓副作用是指因修改软件而造成的错误或其它不希望发生的情况,有三种副作用:修改代码的副作用,修改数据的副作用和文档的副作用。

修改代码的副作用

在使用程序设计语言修改源代码时,都可能引入错误。例如,删除或修改一个子程序、删除或修改一个标号、 删除或修改一个标识符、改变程序代码的时序关系、改变占用存储的大小、改变逻辑运算符、修改文件的打开或关闭、改进程序的执行效率,以及把设计上的改变翻译成代码的改变、为边界条件的逻辑测试做出改变时,都容易引入错误。

修改数据的副作用

在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。例如,在重新定义局部或全局常量、 重新定义记录或文件格式、增大或减小一个数组或高层数据结构的大小、修改全局或公共数据、重新初始化控制标志或指针、重新排列输入/输出或子程序的参数时,容易导致设计与数据不相容的错误。数据副作用可以通过详细的设计文档加以控制。在此文档中描述了一种交叉引用,把数据元素、记录、文件和其它结构联系起来。

文档的副作用

对数据流、软件结构、 模块逻辑或任何其它有关特性进行修改时,必须对相关技术文档进行相应修改。否则会导致文档与程序功能不匹配,缺省条件改变,新错误信息不正确等错误。使得软件文档不能反映软件的当前状态。对于用户来说,软件事实上就是文档。如果对可执行软件的修改不反映在文档里,就会产生文档的副作用。例如,对交互输入的顺序或格式进行修改,如果没有正确地记录在文档中,就可能引起重大的问题。过时的文档内容、索引和文本可能造成冲突,引起用户的失败和不满。因此,必须在软件交付之前对整个软件配置进行评审,以减少文档的副作用。

  • 6
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cai-4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值