《软件工程》课后习题答案.docx
- 文档编号:28341220
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:118
- 大小:73.94KB
《软件工程》课后习题答案.docx
《《软件工程》课后习题答案.docx》由会员分享,可在线阅读,更多相关《《软件工程》课后习题答案.docx(118页珍藏版)》请在冰豆网上搜索。
《软件工程》课后习题答案
1、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定该项目是否能够开发。
2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。
3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。
4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。
5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:
技术可行性、经济可行性、社会可行性。
6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。
7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。
可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。
8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。
重视用户界面的设计,不断的采用新理论和新技术。
软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。
9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。
10、可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。
11、结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。
12、投资回收期就是累计的经济效益等于最初的项目投资所需的时间。
13、详细描述处理过程常用三种描述工具:
图形、表格和语言。
14、数据流图中,每个加工至少有一个输入流和一个输出流。
15、结构化设计以数据流为基础映射成软件结构。
16、当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。
17、由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
18、有两类维护技术:
在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。
19、软件开发中原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性。
20、产品管理包括版本管理和配置管理。
21、任何程序都可由顺序、选择、重复三种基本控制结构构造。
22、测试用例应有输入数据和预期的输出数据两部分组成。
这样便于对照检查。
23、需求分析阶段产生的最重要的文档之一是需求规格说明书。
24、项目开发计划是一个管理性文档。
25、软件配置管理,简称SCM,软件配置项简称SCI。
26、在算法描述工具中,PAD图可自动生成程序。
由机器自动通过走树的办法生成相应的源代码,大大提高软件的生产率。
27、在CASE集成中,控制集成支持工作台或环境中一个工具对系统中其它工具的访问。
过程集成是指CASE系统嵌入了关于过程活动、阶段、约束和支持这些活动所需的工具的知识。
28、解决一个复杂问题,往往采取的策略是分解。
29、效益分析有有形效益和无形效益两种。
30、两个模块都是用同一张表,这种耦合称为公共耦合。
31、一个模块把数值作为参数传送给另一个模块,这种耦合方式称为数据耦合。
32、一个模块内部各程序段都在同一张表上操作,这个模块的内聚性称为通信内聚。
33、在SA方法的需求描述工具中,数据流图描述系统的分解,即描述系统有哪几部分组成,各部分之间有什么联系等等。
数据字典定义了数据流图中每一个图形元素;结构化语言、判定表或判定树则详细描述数据流图中不能被再分解的每一个加工。
34、IDEF图是一种功能模型,表示系统功能的图形称为活动图形,连方框上的箭头有四种类型,他们分别是输入、输出、控制、机制。
35、软件项目计划是可行性研究阶段的结果产品。
但由于可行性研究是在高层次进行系统分析,未能考虑软件系统开发的细节情节,因此软件项目计划一般在需求分析阶段完成后才定稿的。
36、信息隐蔽指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。
37、同一个类中的共享是指同一个类中的对象有着相同的数据结构和相同的行为特征。
38、通过抽象,可以确定组成软件的过程实体。
通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。
39、IPO图描述分层图中一个模块的输入、输出和处理内容。
40、软件是一种逻辑产品,它与物质产品有很大区别。
41、数据流图中的箭头表示数据流。
42、软件测试时需要三类信息:
软件配置、测试配置、测试工具。
43、基于IDEF0图的设计也是结构化设计技术之一,它以系统的功能模型和信息结构为基础设计软件结构。
44、系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素,表达了系统中各种元素之间的信息流动情况。
45、桩模块是用来代替被测试模块所调用的模块,它的作用是返回被测模块所需的信息。
46、建立数据字典一般的两种形式是手工建立和利用计算机辅助建立并维护。
47、汇编语言是面向机器的,可以完成高级语言无法满足要求的特殊功能,如与外部设备之间的一些接口操作。
48、黑盒测试是功能测试,因此设计测试用例时,需要研究需求规格说明书和概要设计说明书中有关程序功能或输入、输出之间的关系等信息,从而与测试后的结果进行分析比较。
49、在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
子类继承了多个父类的数据结构和方法,则称为多重继承。
50、由于数据流是流动中的数据,所以必须有流向。
除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。
51、投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。
项目的纯收入是指在整个生存周期之内的累计经济效益(折合成现在值)与投资之差。
52、程序设计语言的简洁性是指人们必须记住的语言成分的数量。
人们要掌握一种语言,需要记住的成分数量越多,简洁性越差。
53、不同对象的同一属性可以具有相同或不同的属性值。
54、软件开发划分的各阶段任务尽可能相对独立,同一阶段任务性质尽可能相同。
55、瀑布模型是将生存周期各活动规定为线性顺序联接的若干阶段的模型。
56、成本效益分析的目的是从经济角度评价开发一个软件项目是否可行。
57、在需求分析阶段要进行以下几方面的工作:
问题识别、分析与综合、导出软件的逻辑模型、编写文档。
58、静态冗余常用的有:
三模冗余TMR和多模冗余。
59、McCabe质量度量模型,针对面向软件产品的运行、修正、转移。
60、程序设计语言的局部性是指语言的联想性。
在编码过程中,由语句组合成模块,由模块组装成系统结构,并在组装过程中实现模块的高内聚,低耦合,使局部性得到加强。
61、软件复杂性度量的参数主要有规模、难度、结构和职能度。
62、项目开发计划的主要内容有:
项目概述、实施计划、人员组织及分工、交付期限。
63、可行性研究要在较高层次上以较抽象方式进行需求分析和设计。
64、软件工程是一门综合性交叉学科,计算机科学着重于原理和理论,软件工程着重于建造软件系统。
65、维护的副作用有编码副作用、数据副作用、文档副作用三种。
66、若年利率为I,不计复利,P元在n年后的价值F=P*(1+n*i)
67、软件结构是以模块为基础而组成的一种控制层次结构。
68、软件设计阶段产生的最重要的文档之一是概要设计说明书。
69、独立路径是指包括一组以前没有处理的语句或条件的一条路径。
从程序图来看,一条独立路径是至少包含有一条在其它独立路径中未有过的边的路径。
70、各模块经过单元测试后,将各模块组装起来进行集成测试,以检查与设计相关的软件系统结构的有关问题。
71、开发过程管理包括项目计划和控制和任务管理等。
72、临时维护小组采用“同事复审”或“同行复审”等方法来提高维护工作的效率。
73、数据字典中的加工逻辑主要描述该加工做什么,即实现加工的策略,而不是实现加工的细节,它描述如何把输入数据流变换为输出数据流的加式规则。
74、为了较完整的描述用户对系统的需求,DFD应与数据库中的ER图结合起来。
75、纯收入是软件生存周期内累计经济效益与投资之差。
76、反映软件结构的基本形态特征是深度、宽度、扇入和扇出。
77、若年利率为I,不计复利,n年后能收入F元的现在价值p=F/(1+n*i)。
78、在一个模块中,功能状态与接口反映模块的外部特性,逻辑反映它的内部特性。
79、硬件与软件一起构成完整的计算机系统。
80、SA方法中主要描述工具是DFD与DD。
81、软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
82、结构化设计对数据流有两种分析方法,他们是变换分析设计和事务分析设计。
83、数据字典中有四类条目:
数据流、数据项、数据存储、加工。
84、常借用硬件可靠性的定量度量方法来度量软件的可靠性与可用性。
常用指标有平均失效等待时间MTTF和平均失效间隔时间MTBF。
85、Lisp是一种函数型语言,Prolog是一种逻辑性语言。
86、Jackson结构图能对结构进行自顶向下分解,因此可以表示层次结构。
87、变换模型是一种适合于形式化开发方法的模型,从软件需求形式化说明开始,经过一系列变换,最终得到系统的目标程序。
88、软件开发环境的主要目标是提高软件开发的生产率,改善软件质量和降低软件成本。
89、“软件”包含计算机程序及其说明程序的各种文档。
90、开发过程依序包括需求分析、设计、编码、集成、软件安装和验收等活动。
91、社会可行性研究包括合同、责任、侵权、用户组织的管理模式及规范,其他一些技术人员常常不了解的陷阱等。
92、IDEF0方法中,将系统功能称为活动,将表示系统功能的图形称为活动图形。
93、数据库的设计指数据存储文件的设计,主要进行的设计方面有:
概念设计、逻辑设计、物理设计。
94、如果只有两个模块之间有公共数据环境,这种公共耦合有两种情况:
一是一个模块只是给公共数据环境送数据,另一个模块是只从公共环境中去数据,这是比较松散的公共耦合;二是两个模块都往公共环境中送数据又从里面取数据,这是紧密的数据耦合。
95、Jackson方法是面向数据结构的设计方法。
早期的Jackson方法用于开发模型较少的数据处理系统的设计,简称JSP。
96、工程网络图只有一个开始点和一个终止点,开始点没有流入箭头,称为入度为零;终止点没有流出箭头,称为出度为零。
97、为了确保每个开发过程的质量,防止把软件差错传递到下一个过程,必须进行质量检验,检验的实施有实际运行检验(即白盒测试和黑盒测试)和鉴定两种形式
1、需求分析:
需求分析是指开发人员要准确理解用户的需求,进行细致的调查分析,将用户非形式的需求陈述转化成完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
2、白盒法:
该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
白盒法也不可能进行穷举测试。
3、黑盒法:
该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依照需求规格说明书,检查程序是否满足功能要求。
因此,黑盒测试又称为功能测试或数据驱动测试。
4、渐增式测试:
逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。
每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。
5、非渐增式测试:
首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。
6、可执行的规格说明:
这是一种使要求说明过程自动化的技术,通过可执行的规格说明语言来描述预期的行为“做什么”,人们可以从直接观察中用规格说明语言来规定任何系统行为。
7、经济可行性:
对组织的经济状况和投资能力进行分析,对系统建设,运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。
8、系统设计说明书:
是从系统总体的角度出发对系统建设中各主要技术方面的设计进行说明,是系统设计阶段的产物,其着重点在于阐述系统设计的指导思想以及所采用的技术路线和方法,编写系统设计说明书将为后续的系统开发工作从技术和指导思想上提供必要的保证。
9、面向对象设计:
是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。
或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。
10、结构化设计:
面向数据流的设计是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,因此又称结构化设计(SD)。
11、结构化分析:
是根据分解与抽象的原则,按照系统中数据处理的流程,用数据图来建立系统的功能模型,从而完成需求分析工作。
12、基于脚本的设计:
此方法主要用于解决要求的验证问题。
一个脚本将模拟在系统运行期间用户经历的事件,它提供了输入、处理、输出的屏蔽,以及有关对话的一个模型,开发者能够给用户显示一个系统的逼真视图。
13、IDEF方法:
是美国空军在1981年针对集成化计算机辅助制造(简称ICAM)工程项目中用于进行复杂系统分析和设计的方法,是在结构化分析与设计技术的基础上提出来的。
14、JSP方法:
定义了一组以数据结构为指导的映射过程,他根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件的体系结构,因此该方法适于详细设计阶段。
15、软件概要设计:
进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反应在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件的概要设计或结构设计。
16、信息隐蔽:
指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。
17、系统流程图:
是描述物理系统的传统工具,它用图形符号来表示系统中的各个元素,例如人工处理、数据处理、数据库、文件、设备等。
它表达了系统中各个元素之间的信息流动的情况。
18、集成测试:
是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试。
19、附加策略:
是将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统。
20、抛弃策略:
是将原型用于开发过程的某一阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。
21、抽象:
是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特征而暂不考虑它的细节,不考虑其它因素。
22、参数化抽象:
所谓参数化抽象,它是指当描述类的规格说明时并不具体指定所要操作的数据类型,而是把数据类型作为参数。
23、静态测试:
指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
24、原型:
是指模拟某种产品的原型模型。
软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特征。
25、事件:
是指定时刻发生的某件事情。
它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。
26、动态冗余:
动态冗余的主要方式是多种模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。
这里须有检测、切换和恢复过程,故称其为动态冗余。
27、模块化:
是指解决一个复杂问题是自顶向下逐层把软件系统划分成若干模块的过程,每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
28、JSP方法:
定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件的体系结构,因此该方法适于详细设计阶段。
29、模型:
是为了理解事务而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式,一个规划,一个程式。
30、瀑布模型:
是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。
它包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。
它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。
31、增量模型:
是在项目的开发工程中以一系列的增量方式开发系统。
增量方式包括增量开发和增量提交。
增量开发是指在项目开发过程中以一定的时间间隔开发部分工作软件;增量提交是指在开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应稳当。
增量开发和增量提交可以同时使用,也可单独使用。
32、喷泉模型:
是一种以用户需求为动力,以对对象作为驱动的模型,适合于面向对象的开发方法。
他克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。
喷泉模型使开发过程具有迭代性和无间隙性。
系统某些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。
无间隙是指在分析、设计、实现等开发活动之间不存在明显的边界。
33、功能模型:
描述了系统的所有计算,它表明一个计算如何从输入值得到输出值,他不考虑所计算的次序。
功能模型说明对象模型中操作的涵义、动态模型中动作的意义以及对象模型中约束的意义。
34、动态模型:
是与时间和变化有关的系统性质。
该模型描述了系统的控制结构,他表示了瞬时的、行为化的系统控制性质。
它关心的是系统的控制,操作的执行顺序。
它从对象的事件和状态的角度出发,表现了对象的相互行为。
35、对象模型:
表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。
36、货币的时间价值:
通常利用银行的存款利息来表示货币的时间价值。
设年利率为I,现存入p元,n年后得到本金和利息为F。
若不计复利,则P元在n年后的价值为:
F=P*(1+n*i)。
反过来,若n年后能收入的本金和利息为F,则将来F元的现在价值(本金)P为:
P=F/(1+n*i)。
可用这个公式来计算将来收入的现在价值。
这是效益分析的最基本公式。
37、类:
具有相同或相似性质的对象的抽象就是类。
38、对象:
是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
类的具体化就是对象,也可以说类的实例是对象。
39、多态性:
指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。
不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
40、风险分析:
实际上就是贯穿在软件工程上的一系列风险管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监督,它能让人们主动“攻击”风险。
41、模块:
模块在程序重视数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、子程序等等。
42、JSD方法:
主要以活动事件为中心,通过有一串活动顺序组合构成的进程,建立系统模型,最后实现该模型。
43、路径覆盖:
指设计足够的测试用例,覆盖被测程序中所有可能的路径。
44、判定/条件覆盖:
指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
45、条件组合覆盖:
是指设计足够的测试用例,使的每个判定表达式中条件的各种可能的值的组合都至少出现一次,条件组合覆盖是比较强的覆盖标准。
46、条件覆盖:
是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。
满足条件覆盖并不一定满足判定覆盖。
47、原型模型:
又称快速原型模型,它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
48、软件工程环境:
美国国防部在STARS计划中定义如下:
“软件工程环境是一组方法、过程及计算机程序(计算机化的工具)的整体化构件,他支持从需求定义、程序生成知道维护的整个软件生存期”。
49、程序图:
是退化的程序流程图。
也就是说,把程序流程图中每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫程序图。
1、可行性研究的任务是什么?
首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。
从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面分析研究每种解决方法的可行性。
㈠技术可行性:
对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
㈡经济可行性:
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
㈢社会可行性:
要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
2、什么是模块的影响范围?
什么是模块的控制范围?
他们之间应该建立什么关系?
一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。
一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集合。
一个模块的作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。
如果再设计过程中,发现模块作用范围不在其控制范围之内,可以用“上移判点”或“下移受判断影响的模块,将它下移到判断所在模块的控制范围内”的方法加以改进。
3、非渐增式测试与渐增式测试有什么区别?
渐增式测试如何组装模块?
非渐增式测试与渐增式测试的测试方法有以下区别:
㈠非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。
而渐增式测试往往把单元测试与集成测试和在一起,同时完成。
㈡非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。
㈢渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。
㈣渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。
㈤渐增式比较彻底,已测试的模块和新的模块再测试。
㈥渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课后 习题 答案