一.试卷构成:选择20题,每题1分;填空10题,每题1分;简答5题,每题8分;设计题3题,每题10分(流程图的设计、流图(P124)和环形复杂度的计算(P136)、语句覆盖和判定覆盖测试用例的设计(P162))。二.知识点:1.详细设计的工具中,N-S图,PAD图及判定表和判定树各有何特点和适用情况。N-S图(盒图)特点:1、功能欲明确,可以从盒图上一眼就看出来。2、不可能任意转移控制。3、很容易确定局部和全程数据的作用欲。4、很容易表现嵌套关系,也可以表示模块的层次结构。PAD:1、使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。2、所描绘的程序十分清晰。3、表现程序逻辑,易读、易懂、记忆。4、易转换成高级语言源程序。5、可表示程序逻辑,也可描绘数据结构。6图符号支持自顶向下、逐步求精方法的使用。判定表:能够简洁而又无歧义地描述处理规则,不适于作为一种通用的设计工具。判定树:是判定表的变种,清晰地表示复杂的条件组合与应做的动作之间的对应关系,形式简单不需要任何说明,易掌握和使用。是一种常用的系统分析和设计的工具。2.白盒测试和黑盒测试技术的区别。黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。3、在循环的边界和运行的界限内执行循环体。4、测试内部数据结构的有效性,等等。3.白盒测试中的逻辑覆盖测试包含哪几种类型。语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。4.软件维护的类型有哪些,及各自所占比重。完善性维护50%~60%、改正性维护17%~21%、适应性维护18%~25%、其他维护4%左右。5.软件项目的可行性研究的实质是什么?进行一次大大压缩简化了的系统分析和设计程序的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计工程。6.可行性研究包括哪些内容。技术可行性、经济可行性、操作可行性7.衡量模块独立性的标准有哪些?内聚和耦合。耦合衡量不同模块彼此间互相依赖的紧密联系;内聚衡量一个模块内部各个元素彼此结合的紧密程度。8.模块间的耦合有哪些类型,如何区分?内容耦合:一个模块引用或者修改另一个模块内部的数据。一个模块修改另一个模块的语句(Lisp具有此种能力)。一个模块不通过正常入口而跳转到另一个模块的内部。公共耦合:两个模块共享全局的数据区域,称他们为公共耦合。控制耦合:一个模块向另一个模块传递控制信息,接收信息的模块的动作根据信息值进行调整。标记耦合:若两个模块间传递的参数中至少有一个是数据结构,如字符串或记录,并且在模块中仅用到该数据结构中的部分元素,则称这两个模块之间存在标记耦合。数据耦合:模块彼此间通过参数交换信息,交换的信息仅仅是数据。9.模块内的内聚有哪些类型,如何区分?偶然内聚:如果一个模块的各成分之间毫无关系,则称为偶然内聚逻辑内聚:几个逻辑上相关的功能被放在同一模块中。时间内聚:如果一个模块完成的功能只是因为时间因素关联在一起。过程内聚:如果一个模块内部的各个处理成分必须以特定的次序执行,则称为过程内聚。通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。顺序内聚:如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。功能内聚:模块的所有成分对于完成单一的功能都是基本的。10.结构化程序设计的定义及特点。定义:主要观点是采用自顶向下、逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。结构化程序设计主要强调的是程序的易读性。特点:结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。11.软件测试的定义及目的。定义:为了发现程序中的错误而执行程序的过程。目的:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。12.软件生命周期的阶段划分及每个阶段的任务。软件生命周期:由软件定义、软件开发和运行维护,直到最终被废弃所经历的时期。软件定义时期的任务是:问题定义、可行性研究和需求分析。开发时期的任务是:总体设计,详细设计,编码和单元测试,综合测试。维护时期的主要任务是:使软件持久地满足用户的需要。(具体地说:当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。)13.面向对象方法的特点、特征。(1)对象唯一性。(2)抽象性。(3)继承性。(4)多态性(多形性)14.类、对象的概念,多态、重载、封装的含义。类:类是具有相同操作功能和相同的数据格式(属性)的对象的集合。对象:代码和数据的结合。类为对象集合的抽象,它规定了这些对象的公共属性和方法;对象为类的一个实例。多态:指允许不同类的对象对同一消息作出响应。重载:一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。封装:把过程和数据包围起来,对数据的访问只能通过已定义的界面15.总体设计阶段使用的软件结构图,模块及模块间的调用关系如何表示。结构图基本符号:方框——模块方框间连线——模块调用关系(上方的模块调用下方的模块)带注释的箭头——模块间传递的信息箭头尾部空心圆——数据信息箭头尾部实心圆——控制信息结构图用带注释的箭头表示模块调用过程中来回传递的信息。16.什么是变换流、什么是事务流,如何区分。P104变换流:具有较明显的输入、变换(或称主加工)和输出界面的数据流图。事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。事物流:(1)接收输入数据(输入数据又称为事务);(2)分析每个事务以确定它的类型;(3)根据事务类型选取一条活动通路。17.McCall质量模型中的质量因素有哪些。McCall等认为,特性是软件质量的反映,软件属性可用做评价准则,定量化地度量软件属性可知软件质量的优劣。McCall认为软件的质量模型应该包括产品的修正、产品的转移,产品的运行。而产品的修正又包括可维护性、可测试性、灵活性等子特点。产品的转移包括可移植性、可复用性、互连性等。产品的运行包括正确性、可靠性、效率、可使用性和完整性。18.E-R图中包含哪些图形元素,如何表示。P64菱形框,表示实体间的联系;矩形框是表示实体;椭圆框表示实体的属性。19.软件的可靠性与可用性。P179软件可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。随着运行时间的增加,运行时出现程序故障的概率也将增加,可靠性随着给定的时间间隔的加大而减少。软件可用性:是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。可靠性和可用性之间的主要差别是:1、可靠性意味着在0到t这段时间间隔内系统没有失效,2、可用性只意味着在时刻t,系统是正常运行的。20.什么是软件的调试。P176调试也称排错,作为成功测试的后果的出现,也就是说,调试是在测试发现错误之后排除错误的过程。(详细讲解:调试与测试的关系主要体现在以下几个方面:(1)测试的目的是暴露错误;而调试的目的是发现错误,改正错误。(2)测试是揭示设计人员的过失,通常应由非设计人员来承担;而调试是帮助设计人员纠正错误,可以由设计人员自己承担。(3)测试发现错误后,立即进行调试并改正错误,然后进行再测试(回归测试)。(4)调试用例与测试用例可以一致,也可以不一致。调试过程从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,表明在软件中存在隐藏的问题。调试过程试图找出问题的原因,以便改正错误。调试过程总会有以下两种结果之一:①找到了问题的原因并把问题改正和排除掉了;②没找出问题的原因。此时,调试人员可以猜想一个原因,并设计测试用例附加测试,重复此过程直至找到原因并改正了错误。)21.常用软件调试技术有哪些?调试途径:试探法、回溯法、对分查找法、归纳法、演绎法。22.软件工程方法学主要包括哪几部分的研究内容。P9基本内容包括:(1)结构化理论和方法。(2)模块技术与数据抽象。(3)软件测试与程序正确性证明。(4)软件分析与设计方法、工具和环境。(5)软件工程管理与质量评价。23.面向对象的软件工程包含哪几个号阶段。问题域、面向对象分析、面向对象设计、面向对象编程、面向对象测试、计算机24.什么是软件,什么是软件工程,什么是软件危机。P1软件:软件是计算机程序、程序所用的数据以及有关文档资料的集合。软件工程:是指导计算机软件开发和维护的一门工程学科。软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。25.软件测试中驱动模块和存根模块的用途是什么。P1511.模块测试:把每个模块作为一个单独的实体来测试。模块测试通常又称为单元测试。在测试中所发现的往往是编码和详细设计的错误。2.存根模块:26.能力成熟度模型中成熟度等级分为哪几级,各有何特点。五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。初始级:工作方式处于救火状态,不断的应对突如其来的危机。可重复级:规则化,引入需求管理、项目管理、质量管理、配置管理、子合同管理等。已定义级:文档化,标准的一致的,软件过程标准化文档化,质量可以得到控制。已管理级:量化,可预测,软件过程具有精确的评测方法,量化的控制软件过程的产品和质量。优化级:持续改善。27.总体设计中模块的内聚及耦合应把握哪些原则。P97影响耦合强度的因素:1)一个模块对另一个模块的引用2)一个模块向另一个模块传递的数据量3)一个模块施加到另一个模块的控制的数量4)模块之间接口的复杂程度在软件设计中应该追求尽可能松散耦合。对模块的测试或维护时,不需要对系统的其他模块有很多了解。此外,由于模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。设计时尽量使用高内聚,低耦合模块。高内聚:尽量使用内聚度高的模块;中内聚也可;低内聚很坏,不要采用。低内聚:偶然内聚,逻辑内聚,时间内聚中内聚:过程内聚,通信内聚高内聚:顺序内聚,功能内聚;低耦合:尽量使用数据耦合,少用控制耦合和标记耦合,限制公共耦合的范围,完全不用内容耦合。28.软件过程模型是什么