《软件工程导论》复习题

更新时间:2023-10-20 03:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

绵阳师范学院 数计学院 计算机科学与技术专业

《软件工程导论》复习题

一、选择题 二、填空题 三、简答题 四、应用题

五、综合能力与创新题

一、选择题

(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题的括号内。) 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. 软件工程只是解决软件项目的问题.

6.需求分析最终结果是产生 。 A.项目开发计划 B.可行性分析报告 C.设计说明书 D.需求分析说明书√

7.需求分析中,开发人员要从用户那里解决最重要的问题是 。 A.要让软件做什么√ B.要给软件提供哪些信息 C.要求软件工作效率怎样 D.要让该软件具有何种结构 8.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的 。 A.软件的作者 B.输入与输出√ C.细节 D.绘制的时间 9.数据字典中,一般不包括 条目。

A.源点与终点√ B.数据存储 C.数据流 D.加工 10.软件需求分析是保证软件质量的重要步骤,它的实施应该是在 。 A.编码阶段 B.软件设计阶段√ C.软件定义过程 D.软件开发全过程 11.软件的主要功能和结构是在 阶段确定的。

A.测试 B.编程 C.分析设计√ D.维护 12.需求分析最终结果是产生 。

A.需求分析说明书√ B.可行性分析报告 C.项目开发计划 D.设计说明书

第 1 页 共 8 页

13.可行性研究主要从 方面进行研究。 A.技术可行性,经济可行性,操作可行性 B.经济可行性,系统可行性,时间可行性 C.经济可行性,系统可行性,操作可行性 D.技术可行性,经济可行性,社会可行性 √ 14. 可行性分析研究的目的是 。

A.项目值得开发与否√ B.开发项目 C.争取项目 D.规划项目 15. 需求分析中开发人员要从用户那里了解 。

A.输入的信息 B.用户使用界面 C.软件做什么√ D.软件的规模 16.需求分析阶段研究的对象是 。

A.软硬件要求 B.系统要求 C.分析员要求 D.用户需求√ 17.系统流程图用于可行性分析中的 的描述。

A.目标系统 B.当前逻辑模型 C.当前运行系统√ D.新系统 18.数据字典是用来定义 中的各个成分的具体含义的。

A.数据流图√ B.功能结构图 C.系统结构图 D.流程图 19.需求分析是 。

A.软件生命周期的开始 B.由系统分析人员完成 C.由开发人员和系统分析人员完成 D.软件开发任务的基础性工作√ 20.数据字典是对数据定义信息的集合,它所定义的对象都包含于 。

A.软件结构 B.程序框图 C.数据流图√ D.方框图 21.结构化设计方法在软件开发中,用于 。

A. 测试用例设计 B.程序设计 C.概要设计√ D.详细设计 22. 在进行软件结构设计时应遵循的最主要的原理是 。

A.模块独立√ B.抽象 C.模块化 D.信息隐藏 23.通信内聚是指 。

A.把需要同时执行的动作组合在一起形成的模块 B.模块内所有元素共同完成一个功能,缺一不可

C.一个模块中各个处理元素都密切相关于同一功能且必须顺序执行 D.各处理使用相同的输入数据或者产生相同的输出数据√

24.软件的结构化设计方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要是要建立 。

A.软件模块√ B.软件过程 C.软件模型 D.软件结构 25.软件详细设计阶段的任务是 。

A.功能设计 B.算法设计√ C.调用关系设计 D.输入/输出设计

第 2 页 共 8 页

二、填空题

1.软件工程是一门 综合性交叉 学科,计算机学着重于 理论和科学 , 软件工程着重于 设计实现软件系统 。

2.需求分析阶段产生的最重要的文档之一是 需求规格说明书 。 3.SA方法中的主要描述工具是 DFD图 与 DD 字典 。

4.数据字典中有4类条目,分别是 数据流 , 数据项 , 数据存储 , 加工 。

5.项目可行性分析分为 经济可行性 , 技术可行性 , 社会可性性 。

6.软件概要设计阶段产生的重要的文档之一是 概要设计说明书 。 7.软件结构是以 模块 为基础而组成的,一种控制层次结构。

8.反映软件结构的基本形态特征是 深度 , 宽度 和 扇入 , 扇出 。 9.数据流图一般可分为 变换 型和 事务 型两类。

10.程序流程图(PFC)又称为 程序框图 ,它是软件开发者最熟悉的一种 算法 表达工具。

11.在 UML 用例图中,椭圆表示 用例 ,方框表示 系统边界 ,小人状图案表示 执行者 。

三、名词解释:

1.软件生存周期:

指软件从提出开发要求开始,直到该软件报废为止的整个时期。把整个生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大、结构和管理复杂的软件开发变得容易控制和管理。(P7)

2.数据字典(DD):

数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。(P26)

3.DFD图:

Data Flow Diagram 数据流图,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。(P22) 4.用例模型:

用例模型主要是由用例、用例描述和用例图组成,用来描述系统的外部特征。它表示了从系统的外部用户(即执行者或角色)的观点看系统应该具备什么功能。它说明系统实现设什么功能,一幅用例图包含的模型元素:系统、执行者、用例与用列之间关系。(P109郭)

5. Alpha测试

Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。

Alpha测试的目的是评价软件产品的功能、可使用性、可靠性、性能和支持。测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。

第 3 页 共 8 页

四、简答题

1.软件危机主要表现在那些方面?解决软件危机的途径有那些? 答:软件危机主要表现在:

1)软件开发无计划性 2)软件需求不充分 3)软件开发过程无规范 4)软件产品无测评手段 解决软件危机的途径有: 1) 软件开发是智力劳动;

2) 是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 3) 充分吸取几十年来人类从事计算机硬件研究和开发的经验教训。 4) 使用适当的软件工具,支持软件开发的过程

总之,消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

2.什么是需求分析?该阶段的基本任务是什么?

答:需求分析指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。

需求分析的基本任务是:

要准确地定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。在可行性研究和软件计划阶段对这个问题的回答是概括的、粗略的。主要任务是:

1)问题识别

(1)功能需求:所开发的软件必须具备什么样的功能,这是最重要的。

(2)性能需求:开发软件的技术性能指标,如存储容量、运行时间等限制。

(3)环境需求:软件运行时所需要的软、硬件(如机型、外设、操作系统、数据库管理系统等)的要求。

(4)用户界面需求;人机交互方式、输入输出数据格式等等。

另外还有可靠件、安全件、保密件、可移梢件、可维护性等方面的需求,这些需求般通过双方交流、调查研究来获取,并达到如同的理解。

2)分析与综合,导出软件的逻辑模型

分析人员对获取的需求,进行—致性的分析检查,在分析、综合中逐步细化软件功能并划分成各个子功能。这里也包括对数据域进行分解,并分配到各个于功能上,以确定系统的构成及主要成分,并用图文结合的形式,建立起新系统的逻辑模型。

3)编写文档

(1)编写“需求规格说明书”,把双方共同的理解与分析结果用规范的方式描述出来作为今后各项工作的基础。

(2)编写初步用户使用于册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。

(3)编写确认测试计划,作为今后确认和验收的依据。

(4)修改完善软件开发计划。在需求分析阶段对待开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。

第 4 页 共 8 页

3. 什么是结构化维护?结构化维护的特点是什么? 案:

若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护。

有软件工程思想开发的软件具有各个阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。进行维护活动时,首先从评价需求说明开始,搞清楚功能、性能上的改变,然后对设计说明文档进行评价,对设计说明文档进行修改和复查;根据设计的修改,再进行程序的变动;其后根据测试文档中的测试用例进行回归测试;最后,把修改后的软件再次交付使用。这对于减少精力、减少花费、提高软件维护效率有很大作用。

4.数据流图的作用?它的优缺点?其中的符号表示什么含义?

答:

数据流图是用来表示系统的功能的工具。它表示系统的逻辑模型描述了数据流在系统中流动的情况,它是一种功能模型,它用来定义系统的功能,它不能反映“如何”实现。

数据流图只描述了系统的分解,没有表达出每个数据流、数据存储和加工的具体含义。 数据流图的作用主要有以下几条:

(1)系统分析员用这种工具可以自顶向下分析系统信息流程。 (2)可在图上画出需要计算机处理的部分。

(3)根据数据存贮,进一步作数据分析,向数据库设计过渡。 (4)根据数据流向,定出存取方式。

(5)对应一个处理过程,用相应的语言、判定表等工具表达处理方法。

箭头表示数据流、圆圈表示加工、双横线表示存储、方框表示数据的原点和终点。

5.详细设计的基本任务是什么? 答:详细设计又称过程设计,“怎样实现”这个软件系统,对系统中的每个模块给出足够详细的过程性描述。具体任务如下: (1)为每个模块进行详细的算法设计,用某种图形、表格、语言等工具将每个模块处 理过程的详细算法描述出来。

(2)为模块内的数据结构进行设计,对于需求分析、概要设计确定的概念性的数据类 型进行确切的定义。

(3)对数据库进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。 (4)其他设计

根据软件系统的类型,还可能要进行以下设计:

①代码设计。为了提高数据的输入、分类、存储、检索等操作,节约内存空间,对数据库中的某些数据项的值要进行代码设计。 ②输入/输出格式设计。

③人机对话设计。对于一个实时系统,用户与计算机频繁对话,因此要进行对话方式、内容、格式的具体设计。

(5)编写详细设计说明书。

(6)评审。对处理过程的算法和数据库的物理结构都要评审。

第 5 页 共 8 页

6.什么是面向数据流的设计方法?它有哪些策略?

答:

面向数据流的设计方法也称结构化设计方法(SD),它与结构化分析(SA)相衔接,它按一定的设计策略将数据流图转换成软件的模块层次结构。有两种设计策略:

(1)事务型分析设计:一个大的复杂的系统分解成较小的,相对简单的子系统,这些子系统彼此之间相对独立一些,而高层数据流图的数据处理往往反映这些子系统的功能,有平行分别处理的特点,因此,高层数据流图的转换通常可作为事务型处理,把一个加工逻辑看成是一类特定的事务,把它们分别映射成一个模块,最高层模块为系统模块,通过对输入初始命令的判断决定调用哪个模块。这种事务型分析设计的策略也用于较低层数据流图向软件结构图的转换。

(2)变换型分析设计:变换型数据流图具有主要的处理功能及实现这项处理功能所需要的输入数据流和经过处理后产生的输出数据流。确定了第三部分,高层模块就可分解出三个从属于它的新模块,分别执行输入、变换、输出功能。变换分析设计一般用于对较低层数据流图向软件结构图的转换。

软件结构图设计好后,还需要为每个模块提供必要的说明,如功能说明、接口说明等,IPO图是常采用的图形工具,软件结构图和各个模块的IPO图结合在一起才能较完整地描绘软件系统在总体上对需求功能的实现。

7.什么是用例建模?如何进行用例建模?

答:用例建模是直接面向用户的,主要以需求陈述为基本依据,有关系统的业务边界、使用对象等,是构造系统用例模型的基本元素。

用例建模的步骤如下: ·从几方面识别系统的执行者,包括需要从系统中得到服务的人、设备和其他软件系统等; ·分析系统的业务边界或执行者对系统的基本业务需求,并将其作为系统的基本用例; ·分析基本用例,将基本用例中具有一定独立性的功能,特别是具有公共行为特征的功能分解出米,将其作为包含用例供基本用例使用;

·分析基本用例功能以外的其他功能,将其作为扩展用例供基本用例进行功能扩展; ·分析并建立执行者与用例之间的通信关系。

8. 建立分析和设计模型的一种重要方法是UML。试问UML 是一种什么样的建模方法?它如何表示一个系统?

答:

UML叫做统一的建模语言,它把Booch、Rumbaugh和Jacobson等各自独立的OOA和OOD方法中最优秀的特色组合成一个统一的方法。UML允许软件工程师使用由一组语法的语义的实用的规则支配的符号来表示分析模型。

在UML中用5种不同的视图来表示一个系统,这些视图从不同的侧面描述系统。每一个视图由一组图形来定义。这些视图概述如下:

? 用户模型视图:这个视图从用户(在UML中叫做参与者)角度来表示系统。它用使用实例(use case)来建立模型,并用它来描述来自终端用户方面的可用的场景。

? 结构模型视图:从系统内部来看数据和功能性。即对静态结构(类、对象和关系)模型化。

? 行为模型视图:这种视图表示了系统动态和行为。它还描述了在用户模型视图和结构模型视图中所描述的各种结构元素之间的交互和协作。

? 实现模型视图:将系统的结构和行为表达成为易于转换为实现的方式。

第 6 页 共 8 页

? 环境模型视图:表示系统实现环境的结构和行为。

通常,UML分析建模的注意力放在系统的用户模型和结构模型视图,而UML设计建模则定位在行为模型、实现模型和环境模型。 9. 什么是测试用例?动态测试有哪些方法?

答:

所谓“测试用例”是指为寻找程序中的错误而精心设计的一组测试数据,每个测试用例一般是一个二元组(输入数据、预期结果)。

动态测试主要有两种方法:白盒法和黑盒法。白盒法是从被测试程序的内部逻辑人手来设计测试用例;黑盒法着重测试被测试程序的功能,而不关心内部如何实现其功能的结构,是从用户观点出发的测试。但无论白盒法还是黑盒法都只能选择一些有代表性的测试用例进行有限的测试。

(1)白盒法测试:有六种用于有判定存在的逻辑覆盖标准,即程序内部路径的覆盖程度。对于有循环存在的覆盖用限制循环次数的办法来测试。但是对于一个实际问题的程序测试中,其路径是一个庞大的数字,基本路径测试告诉了最少路径计算办法,在分析程序控制流程图环路复杂性础上,导出基本路径集合,从而设计测试用例,保证这些基本路径至少执行一次,以最少的用例发现尽量多的错误。

(2)黑盒法测试:具体方法有四种,采用黑盒法的综合策略是先用等价类划分法(包括边界值分析法,即取边值上的数)设计出测试用例,然后用错误推测法补充。如果被测试程序含有多个条件的逻辑组合,则开始就用因果图法。

10. 用例图中有几种关系? 答:

用例之间通常有扩展、使用、组合三种关系。

(1)关联关系:关联关系描述执行者与用例之间的通信关系。建立通信之后,信息可以双向流动。关系方向显示的不是信息的流动方向,而是谁启动信息。

(2)依赖关系:依赖关系是存在于两个模型要素之间的一种关系,其中一个模型要素的改变将影响另一个模型要素。对于两个具有同级含义的模型要素,用依赖关系进行连接。使用(use)和扩展(extend),它们都是继承关系的不同形式,分别用《use》和《extend》表示;组合则是把相关的用例打成包,当作一个整体看待。

3. 1982年,美国一家公司准备用FORTRAN 语言开发一个可以在VAX 750 计算机上运行的程序,估计这个程序得需要10 000 条FORTRAN 指令。假设平均每人每天可以开发出20条FORTRAN 指令,请问:

① 开发这个程序需要多少人日?

② 如果程序员的月平均工资为5000 美元,每月按20 个工作日计算,该软件的开发成本是多少美元?

③ 1982 年VAX 750 计算机硬件价格约为125 000 美元,那么1982 年这个软件的开发成本占整个系统总成本比例是多少?

④25年后,一台比VAX 750 型计算机性能优越的微型计算机的价格约为1000美元,而

第 7 页 共 8 页

这时软件开发效率提高到平均每人每天可以开发出80 条指令,程序员的月平均工资也已提高到10000 美元。如果在2007 年开发上述FORTRAN 程序,那么该软件的开发成本占整个系统总成本比例是多少?

解:

(1)开发这个程序需要的人日可通过下面式子算出:

10000?500(人日) 20即开发这个程序大约需用500个人日。 (2)每月平均工作20天,开发这个程序需要用的人月可通过下面式子算出:

500?25(人月) 2025×5000=125000(美元)

(3) 计算机系统的总成本为软件成本与硬件成本之和,则这个软件的开发成本

125000?50%

125000?125000(4)2007年开发这个程序所需的工作量可通过下面式子算出:

10000?6.25(人月)

80?20 6.25×10000=62500(美元) 该软件的成本在总成本中所占的比例可通过下面式子算出:

62500?98.4%

62500?1000

第 8 页 共 8 页

本文来源:https://www.bwwdw.com/article/debf.html

Top