《软件工程》课程复习资料

[复制链接]
发表于 2018-11-22 10:10:49 | 显示全部楼层 |阅读模式
《软件工程》课程复习资料
一、单项选择题:
1.下列说法不是软件开发模型的别称的是                                                [ A   ]
A.软件研发模型       B.软件过程模型         C.软件生存周期模型    D.软件工程范型
2.软件需求可以分为三个不同的层次,下列(  )不是软件需求的层次。                    [A    ]
A.设计需求           B.业务需求             C.用户需求            D.系统功能需求
3.下列不是用例特点的是                                                              [   D ]
A.捕获某些用户可见的需求,实现一个具体的用户目标
B.用例由角色激活,并提供确切的值给角色
C.用例可大可小,但它必须是对一个具体的用户目标实现的完整描述
D.用例的集合代表所有将会在系统需求中出现的交互
4.为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程,就叫做                                                                  [  C  ]
A.完善性维护         B.适应性维护           C.改正性维护          D.预防性维护
5.和生命周期法相比,原型法不具有(  )特点。                                        [    ]
A.原型法贯穿的是一种推迟实现的观点
B.原型方法更多地遵循了人们的认识规律,易为人接受
C.原型法使用户和系统分析人员容易沟通,缩小彼此之间的差距
D.充分利用了最新的软件工具,使效率、技术等方面都有所提高
6.需求描述所使用的符号较多,下列(  )不能用来描述需求。                            [    ]
A.结构化自然语言     B.树型结构             C.设计描述语言        D.图形化符号
7.确认测试又称有效性测试,它的任务是验证软件的下列(  ),即验证软件的功能和性能及其它特性是否与用户的要求一致。                                                              [    ]
A.二义性             B.准确性               C.有穷性              D.有效性
8.软件质量保证活动不包括                                                            [    ]
A.验证与确认         B.开发时期的配置管理   C.软件评审            D.软件维护
9.从用例出发,进一步抽取和定义OOA模型的三种模型不包括                              [    ]
A.类-对象模型        B.对象-关系模型        C.对象-行为模型       D.对象-属性模型
10.从影响系统设计的系统环境得出人和组织的因素不包括                                  [    ]
A.过程变更           B.工作变化             C.需求变更            D.机构的变化
11.类是对象的蓝图,其中包含三个组成部分,下列(  )不是类的组成部分。                [    ]
A.类名               B.属性                 C.对象                D.该类提供的方法
12.实体联系图简称E-R图,它描绘了系统的数据关系。E-R图包括三种互相关联的信息,下列(  )不是其相关信息。                                                                      [    ]
A.数据对象                                  B.描述对象的属性
C.描述对象的操作                            D.描述对象间相互连接的关系
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.软件维护

二、填空题:
1.基于计算机系统特性有两种类型:______特性和______特性。前者是指系统的所有部分一起工作以达到一些目标的时候表现出来。后者包括可靠性、性能、安全性和保密性。
2.需求工程包括两个方面:一是关于软件开发过程中的需求开发阶段,另一方面就是涉及到管理方面的问题即______。
3.对象彼此之间的联系可以通过______的传递来实现。
4.构件集成模型的特点主要包括面向对象、基于构件库、融合螺旋模型特征和______。
5.软件项目的人员组成包括管理者、分析员、设计者、程序员、______和客户。
6.需求获取的目的是使开发人员全面准确地了解用户的需求。获取需求较好的方法主要有:系统调查和______。
7.基于计算机系统总体可靠性与以下三个方面紧密关联:硬件可靠性、软件可靠性和______。
8.面向对象的软件过程是以______为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。
9.需求分析的任务主要有两个:通过对问题及环境的理解、分析和综合,建立分析模型;在完全弄清用户对软件系统的确切要求的基础上,用______把用户的需求表达出来。
10.软件测试是为了发现______而执行程序的过程。
11.软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批______,并利用它们去运行程序,以发现程序错误的过程。
12.软件维护性是软件的内在固有属性,它是______的重要组成部分。
13.______说明下面的语句或程序段是做什么,或执行下面的语句或程序段会发生什么事情,而不要解释下面怎么做。
14.有效性测试是在模拟的环境(可能就是开发的环境)下,运用______的方法,验证被测软件是否满足需求规格说明书列出的需求。
15.测试数据和预期的输出结果称为______测试用例。
16.描述程序处理过程的工具称为过程设计的工具。整体上来说它们可以分为______、表格和语言3类。
17.单元测试,又称______,针对软件设计的最小单位——程序模块,进行正确性检验测试工作。
18.______是由软件的多个用户在一个或多个用户的实际使用环境下进行测试。与Alpha测试不同的是,开发者通常不在测试现场。
19.瀑布模型将软件生存期的活动和任务规定为依线性顺序联接的若干阶段,瀑布模型把软件生存期划分为三个时期:计划、开发和______。
20.____的每个增量开发过程是瀑布式的,但每个一增量又像原型模型一样是在前一轮增量的基础上进行。
21.软件工程划分包括两部分:任务功能和______。
22. ______主要是对待开发的系统进行开发成本的估算,对最后从开发的系统或产品获得的效益进行分析,以确定要开发的项目是否值得投资开发。
23.______表达数据在系统各部件之间流动的情况。
24.______是关于数据信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
25.实体联系图,又叫______,是用来建立数据模型的工具。
26.______中的状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
27.所谓规范化,就是将数据的逻辑结构归结为满足一定条件的______。
28.描述程序处理过程的工具称为过程设计的工具。整体上来说它们可以分为______、表格和语言3类。
29.______通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。
30.集成测试有两种方法:______和渐增式测试。
31.确认测试又称______。它的任务是验证软件的有效性,即验证软件的功能和性能及其它特性是否与用户的要求一致。
32.测试方案包括具体的______,应该输入的测试数据和预期的结果。
33.测试数据和预期的输出结果称为______。
34.逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,属______。
35.______反映程序中模块之间的层次调用关系和联系,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。
36.______的目的是为软件结构图中的每一个模块确定采用的算法和模块内数据结构,用某种选定的表达工具给出清晰的描述。
37.系统响应时间有两个重要属性,分别是长度和______。
38.______是指软件成品提供使用后,为了修改差错、改善功能和性能、适应环境变化而进行的软件修正。
39.调试途径主要包括:蛮干法、回溯法和______。
40.文档是影响软件可维护性的决定因素,软件系统的文档可以分为______和系统文档两类。
41.软件重用是提高软件生产率的重要手段,重用性越高,则软件生产率越高。按重用性的程度从低至高可以分为代码重用、设计结果重用和______几种类型。
42.对象包含两个基本的因素:属性和______。

三、名词解释:
1.软件工程三要素       2.需求工程             3.模块的耦合性             4.E-R图
5.分析结果重用         6.确认测试             7.基于计算机的系统工程     8.单元测试
9.软件生命周期        10.面向对象分析        11.数据字典                12.类
13.模块的聚合性        14.软件工程过程        15.多态性                  16.适应性维护
17.设计结果重用        18.快速原型方法        19.软件                    20.软件危机
21.软件工程            22.软件开发模型        23.数据流图                24.结构化分析
25.代码重用            26.消息                27.封装性                  28.模块
29.程序流程图          30.程序编码风格        31.功能性注释              32.软件测试
33.白盒测试            34.黑盒测试            35.软件维护                36.改正性维护
37.适应性维护          38.完善性维护          39.软件再工程              40.重构
41.软件重用

四、简答题:
1.影响维护代价的技术因素主要有哪些?          2.需求的获取主要有何方法?简要说明之。
3.软件重用是提高软件生产率的重要手段,它主要有哪几种类型?
4.数据流图具有哪些特性?并作简单说明。        5.一般采取哪些步骤来设计类测试用例?
6.为使数据说明易于理解和维护,在编写程序时应注意哪些问题?
7.软件维护活动有哪几类?                      8.软件工程过程通常包含哪几种基本活动?
9.结构图和程序流程图的主要区别表现在哪些方面?
10.为使数据说明易于理解和维护,在编写程序时应注意哪些问题?
11.为方便用户的使用,设计输入和输出应注意哪些原则问题?
12.软件设计有哪些基本原则?

五、计算说明题:
1.执行下列语句后,
int i,s;
for(i=s=0; i<12; i++) s+=i;
while (--i>5) s+=i;
求S的值(写出必要的中间值)。

2.用判定树描述下例:在铁路货运票价系统中,如果里程数大于1千km(含),且货运量超过500吨(含),则货运价为0.05元/公里.吨;500吨以下,货运价为0.06元/公里.吨。如果里程数小于1千km,且货运量超过500吨(含),则货运价为0.07元/公里.吨;500吨以下,货运价为0.08元/公里.吨。

3.某旅馆的电话服务如下:
可以拨分机号和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成。局号可以是455,466,888,552中任意一个号码。分局号是任意长度为4的数字串。要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。

4.给出下面程序的运行结果。
# include “iostream.h”
int main( )
{
int i=1;
while (i<=35)
if (++i%9!=4) continue;
else cout <<”i=”<<i<<endl;
}

5.分别举例说明C++中的两种对象创建方式。

6.某公司为本科以上学历的人重新分配工作,分配原则如下:
(1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作;
(2)如果年龄满18岁不满50岁,学历本科,不分男女,任中层领导职务,学历是硕士不分男女,任课题组组长;
(3)如果年龄满50岁,学历本科,男性任科研人员,女性则担任资料员,学历是硕士不分男女,任课题组组长。
要求:画出分析过程,得出判定表,并进行化简。

7.根据下图,给出按照路径覆盖原则生成的覆盖路径集。


8.试举例说明,白盒测试时不可能把所有可能的输入数据都拿来进行穷举测试。

9.根据下列描述,画出教材征订系统的第一层数据流图。学生入学后到教材科订书,教材科根据教材库存情况分析是否需要买书,如需购买,则向书店购买。各种资金往来通过学校的会计科办理。

10.一本书的组成有一个封面,一个目录,一个前言,若干章,每章有若干节,每节有若干段,每段有若干句子,每节有0个或多个插图,还有0个或多个表格,最后有一个附录。试建立该书的对象模型。




《软件工程》课程复习参考答案
一、单项选择题:
1.A    2.A    3.D    4.C    5.A    6.B   7.D   8.D   9.D   10.C   11.C   12.D   13.A
14.C   15.D   16.C   17.D   18.D

二、填空题:
1.功能、非功能          2.需求阶段的管理           3.消息               4.软件重用
5.测试人员              6.快速原型获取和验证需求   7.操作员可靠性       8.对象
9.软件需求规格说明书   10.错误                    11.测试用例          12.软件质量
13.功能性注释           14.黑盒测试                15.测试用例          16.图形
17.模块测试             18.Beta 测试               19.运行              20.增量模型
21.软件生存周期         22.经济可行性研究          23.系统流程图        24.数据字典
25.ER 图                26.状态转换图              27.二维表            28.图形
29.序言性注释           30.非渐增式测试            31.有效性测试        32.测试目的
33.测试用例             34.白盒测试                35.结构图            36.详细设计
37.易变性               38.软件维护                39.原因排除法        40.用户文档
41.分析结果重用         42.方法


三、名词解释:
1.软件工程三要素:指软件工程方法、软件工具和软件工程过程。
2.需求工程:是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。
3.模块的耦合性:是模块之间的相对独立性(互相连接的紧密程度)的度量。它取决于各个模块之间接口的复杂程度,取决于如何进入或访问一个模块,以及哪些数据将通过该接口。
4.E-R图:是数据分析和数据建模的主要工具,它描绘了系统的数据关系。E-R图包括3种互相关联的信息,即数据对象、描述对象的属性、描述对象间相互连接的关系。
5.分析结果重用:是指对问题空间描述的重用,例如对面向对象分析结果或其它一些分析描述方法结果的重用,这是一种重用性更高的重用方法。这种重用尤其适应于用户需求未变,而计算机系统结构发生了变化的情况。
6.确认测试:又称有效性测试,它的任务是验证软件的有效性,即验证软件的功能和性能及其它特性是否与用户的要求一致。
7.基于计算机的系统工程:是研究由软件起主导作用的、有关复杂系统的开发和进化的方方面面,包括硬件开发、系统决策、过程设计、系统实施和软件工程等等。
8.单元测试:又称模块测试,针对软件设计的最小单位——程序模块,进行正确性检验测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
9.软件生命周期:任何一个软件产品也都要经历软件定义、软件开发、软件维护直至被淘汰这样一个全过程,软件的这一全过程称为软件生存周期。
10.面向对象分析:简称OOA,是采用面向对象的思想进行软件需求分析建模的过程。
11.数据字典:是一个定义应用程序中使用的所有数据元素和结构的含义、类型、数据大小、格式、度量单位、精度以及允许取值范围的共享仓库。数据字典的维护独立于软件需求规格说明,并且在产品的开发和维护的任何阶段,各个风险承担者都可以访问数据字典。
12.类:是一组具有相同数据结构和相同操作的对象的集合。类的定义应该包括一组数据属性和对这些数据的一组操作。
13.模块的聚合性:是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。作为度量模块相对功能强度的指标。
14.软件工程过程:是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。
15.多态性:是指同一个消息发送到不同类的对象时产生不同的行为,不同类的对象接受到同一消息导致不同的动作(响应)。
16.适应性维护:随着计算机的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入∕输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而去修改软件的过程就叫做适应性维护。
17.设计结果重用:指的是重用某程序的设计模型,例如面向对象设计的模型,这是一种重用性比较高的一种重用方法。
18.快速原型方法:在软件开发的早期快速建立目标软件系统的原型,让用户对原型进行评估并提出修改意见。当原型几经改进并最终确定后,它将由软件设计和编码阶段进化成软件产品;或者设计和编码人员遵循原型所确立的外部特征实现软件产品。
19.软件:是能够完成预定功能和性能的可执行指令,使得程序能够适当地操作信息的数据结构同时也是描述程序的操作和使用的文档。
20.软件危机:是指软件开发和维护中的各种问题。
21.软件工程:采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
22.软件开发模型:是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型、软件生存周期模型或软件工程范型。
23.数据流图:是结构化系统分析的基本工具。一个数据流图确定了系统的转化过程、系统所操纵的数据或物质的收集(存储),还有过程、存储、外部世界之间的数据流或物质流。
24.结构化分析:就是使用DFD、DD、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档。
25.代码重用:就是对程序库中的某个模块进行子程序调用,它包括源代码的拼接、源代码的拷贝、继承、对目标码的拼接、运行时连接几种形式。这是一种重用性低的重用方法。
26.消息:对象引用一个服务(方法)的过程称之为向该对象发送一个消息,消息是对象之间交互的手段,是要求某个对象执行类中定义的某个操作的规格说明。
27.封装性:是面向对象技术的一个重要机制,封装意味着把属性和服务捆绑在一起形成一个相对独立的基本构件(对象)。
28.模块:又称构件,在传统的方法中指用一个名字就可调用的一段程序。类似于高级语言中的过程、函数等。它一般具有三个基本属性:功能、逻辑和状态。
29.程序流程图:把一个构件的内部执行过程用流程图描述,也就是用各种几何图形、流线及文字说明来描述模块的执行过程的框图叫程序流程图。
30.程序编码风格:就是程序员在编码时在源程序文件、语句结构、程序注释等方面表现出的一贯的特点的总和。
31.功能性注释:说明下面的语句或程序段是做什么,或执行下面的语句或程序段会发生什么事情。
32.软件测试:是在软件正式投入运行前,对软件的需求分析、设计规格说明和编码的最终复审,是质量保证工作最为关键的一个环节。软件测试是为了发现错误而执行程序的过程。
33.白盒测试:根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。这种测试方法就是白盒测试,白盒测试又称为结构测试。
34.黑盒测试:根据软件产品的功能设计规格,在计算机上进行测试,以证实每个实现了的功能是否符合要求,这种测试方法就是黑盒测试,黑盒测试又称为功能测试。
35.软件维护:指软件成品提供使用后,为了修改差错、改善功能和性能、适应环境变化而进行的软件修正。
36.改正性维护:在软件交付使用后,必然会有一部分隐藏的错误被带到运行阶段来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程,就叫做改正性维护。
37.适应性维护:随着计算机的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入∕输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而去修改软件的过程就叫做适应性维护。
38.完善性维护:在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。
39.软件再工程:是指对遗留系统进行调查,并将其重构为新形式代码的开发过程。
40.重构:是指通过修改代码或数据以使软件符合新的要求的过程,该过程不改变软件外部功能,仅修改软件的内部结构。重构的目的是使软件更容易被理解和修改。
41.软件重用:是指软件的某一部分在不做修改或稍做修改的情况下重复使用。软件重用可降低软机成本、提高软件生产率和软件质量,即重复使用软件资源的过程。

四、简答题:
1.答:影响维护代价的技术因素主要有:
(1)软件对运行环境的依赖性。(2)编程语言。
(3)编程风格。良好的编程风格意味着良好的可理解性,可以降低维护的代价。
(4)测试和改错工作。如果测试和改错工作做得好,后期的维护代价就能降低。
(5)文档的质量。清晰、正确和完备的文档能降低维护的代价。
2.答:获取需求的方法主要有:系统调查和快速原型获取和验证需求。
(1)系统调查。是以系统分析人员为核心,成立调查组织,吸收原系统业务骨干和管理人员参加。可以有多个调查组同时工作,互相介绍情况。调查组织要拟定调查计划和提纲,要明确调查的目的、范围、对象、方法和分工。系统调查的一般方法有:发调查表征询意见、访问、开调查会、直接参加业务活动、请用户领导和业务骨干讲课、查阅文献资料。
(2)快速原型获取和验证需求。在需求工程过程中,开发人员根据对软件的理解,利用快速开发工具先快速地建立一个系统原型,然后让用户对原型进行评估,并提出修改意见,最终达到全面、准确地确定软件系统的外部行为和特征。

3.答:软件重用是提高软件生产率的重要手段,重用性越高,则软件生产率越高。按重用性的程度从低至高可以分为代码重用、设计结果重用和分析结果重用几种类型。
(1)代码重用。就是对程序库中的某个模块进行子程序调用,它包括源代码的拼接、源代码的拷贝、继承、对目标码的拼接、运行时连接几种形式。这是一种重用性低的重用方法。
(2)设计结果重用。指的是重用某程序的设计模型,例如面向对象设计的模型,这是一种重用性比较高的一种重用方法。
(3)分析结果重用。是指对问题空间描述的重用,例如对面向对象分析结果或其它一些分析描述方法结果的重用,这是一种重用性更高的重用方法。这种重用尤其适应于用户需求未变,而计算机系统结构发生了变化的情况。

4.答:数据流图具有抽象性、概括性和层次性等特性。
(1)抽象性:数据流图中只有四种基本符号组成,没有任何具体的物理部件,只描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的表示,这种抽象性有助于系统的功能分析和进一步的总体设计。
(2)概括性:数据流图作为信息交流的工具,由简单的符号组成,不包含任何物理实现的细节,便于用户理解和评价它。
(3)层次性:数据流图可以按照功能分解的方法逐层来画,从整个系统的基本模型开始,逐步的分解,每分解一次,系统的处理就增多一些,每个处理的功能也更加具体。

5.答:对于类测试用例的设计,一般采取下列步骤:
(1)先选定需要检测的类,参考OOD的分析结果,仔细分出类的状态和相应的行为、类或成员函数间传递的消息、以及输入或输出的界定等。(2)确定覆盖标准。
(3)利用结构关系图确定待测类的所有关联。
(4)根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态、使用类的服务和期望产生什么行为等。

6.答:在编写程序时,为使数据说明易于理解和维护,须注意:
(1)数据说明的次序应当规范化,使数据属性容易查找;
(2)当多个变量名用一个语句说明时,应对这些变量按字母的顺序排列;
(3)如设计了一个复杂的数据结构,应用使用注释说明数据结构的固有特点。

7.答:软件维护活动可以归为以下几类:
(1)改正性维护。在软件交付使用后,必然会有一部分隐藏的错误被带到运行阶段来。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程,就叫做改正性维护。
(2)适应性维护。随着计算机的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入∕输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而去修改软件的过程就叫做适应性维护。
(3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。
(4)预防性维护。为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。

8.答:软件工程过程通常包含四种基本活动:
(1)P(Plan) 软件规格说明,规定软件的功能及其运行时的限制。
(2)D (Do) 软件开发,产生满足规格说明的软件。
(3)C (Check)软件确认,确认软件能够满足客户提出的要求。
(4)A (Action) 软件演进,为满足客户的变更要求,软件必须在使用过程中演进。

9.答:结构图和程序流程图的主要区别:
(1)结构图着重反映的是模块间的隶属关系,即模块间的调用关系和层次关系;而程序流程图着重表达的是程序执行的顺序以及执行顺序所依赖的条件。
(2)结构图则着眼于软件系统的总体结构,它并不涉及模块内部的细节,只考虑模块的作用,以及它和上、下级模块的关系;而程序流程图则用来表达执行程序的具体算法。

10.答:在编写程序时,为使数据说明易于理解和维护,须注意:
(1)数据说明的次序应当规范化,使数据属性容易查找;
(2)当多个变量名用一个语句说明时,应对这些变量按字母的顺序排列;
(3)如设计了一个复杂的数据结构,应用使用注释说明数据结构的固有特点。

11.答:输入和输出的格式和方式应当尽可能方便用户的使用,设计和程序编码时应考虑下列原则:
(1)检验输入数据,识别错误输入,保证数据的有效性;
(2)检查输入项的各种重要组合合理性,必要时报告输入状态信息;
(3)使得输入的步骤和操作尽可能简单,并保持简单的输入格式;
(4)输入数据时,应允许使用自由格式输入;(5)应允许缺省;
(6)输入一批数据时,要使用输入结束标志;
(7)在指明可使用选项的种类和取值范围。同时,需要时给出状态信息;
(8)程序对其格式有严格要求时,保持输入格式、语句的要求的一致性;
(9)给所有的输出加注解,并设计输出报表格式。

12.答:软件设计原则主要包括:(1)软件设计的一条最重要原则,就是模块独立性原则;
(2)尽量提高模块内的聚合性,降低模块间的耦合性;(3)适度控制模块的规模;
(4)信息隐藏和局部化的原则;(5)抽象的原则;(6)控制层次适中的原则。

五、计算说明题:
1.解:for                   while
i=0 , s=0 – s=0         i=11 , s=66 – s=77
i=1 , s=0 – s=1            . . .
i=2 , s=1 – s=3
. . .
i=11 , s=55 – s=66 ;     i=66 , s=111 – 最后得:s=117

2.解:


3.解:电话号码=分机号|外线号码
分机号=7201...7299
外线号码=9+[市话号码|长话号码]
长话号码=区号+市话号码
区号=100...300
市话号码=局号+分局号
局号=[455|466|888|552]
分局号=4{数字}4

4.解:输出结果:
i=4
i=13
i=22
i=31

5.解:C++有两种对象创建方式,静态内存分配方式和动态内存分配方式,每当创建一个新对象,就执行一次构造函数。
例:用静态内存分配方式创建了类Student的学号为98109002的对象studentobj。
Student studentobj("98109002");
如果该语句是出现在一个操作或函数中,则说明studentobj被定义为局部变量,当操作或函数执行完毕退出时,该对象将被自动消除,所占用的内存被释放,释放内存时将执行一次析构函数。如果该语句是将studentobj定义为一个全局变量,则只有系统退出后对象studentobj才会被消除。
采用动态内存分配方式创建对象时需要借用C++的new操作符进行。new操作符为新对象分配内存并且返回它的一个指针,指针存放在指针变量中。new操作符可以包括构造函数中 的参数,如下例所示。
例:对象创建的动态内存分配方式
Student *studentobj = new Student("98109002")

6.解:(1)判定条件可能取值表:

(2)计算组合数2*3*2=12;
(3)初步判定表

(4)简化后的判定表

7.解:覆盖路径集包括:
1,2,3
1,2,6,7
1,4,5,3
1,4,5,6,7

8.解:对一个具有多重选择和循环嵌套的程序,不同的路径数目也可能是天文数字。设给出一个如图2所示的小程序的流程图,其中包括了一个执行达20次的循环。那么它所包含的不同执行路径数高达520(=1013)条,若要对它进行穷举测试,覆盖所有的路径。假使测试程序对每一条路径进行测试需要1毫秒,同样假定一天工作24小时,一年工作365 天, 那么要想把如图1所示的小程序的所有路径测试完,则需要3170年。

图1 白盒测试中的穷举测试
分析表明,实行穷举测试,由于工作量过大,实施起来是不现实的。任何软件开发项目都要受到期限、费用、人力和机时等条件的限制,尽管为了充分揭露程序中所有隐藏错误,需要针对所有可能的数据进行测试,但事实告诉我们,这样做是不可能的。

9.解:



10.解:书的对象模型如图所示。





快速回复 返回顶部 返回列表