1、软件工程与软件测试技术课程期末复习资料一、客观部分:(单项选择、多项选择)(一)、单项选择1模块独立性是由内聚性和耦合性来度量的,其中内聚性是(A )模块间的联系程度 B.模块的功能强度C.信息隐藏程度 D.接口的复杂程度成本/效益分析是(A)的一项重要内容可行性研究 B.需求分析 C.软件测试D.软件维护软件开发模型不包括(B)A.瀑布模型 B.用例模型 C.增量模型 D.螺旋模型(D)是关于数据的信息集合,是结构化分析模型的核心A.数据流图B.数据字典 C.状态转换图D.实体关系图在实体-关系图中,包含以下基本成分(C )A.实体、关系、控制 B.状态、事件、关系C.数据对象、属性、关系
2、D.数据、对象、实体以下对状态转换图描述错误的是(C)状态转换图通过描绘系统的状态及引用系统状态转换的事件,来表示系统的 行为。A. 状态图的状态有初态、终态和中间状态,在一张图中三种状态都可以有0至 多个。B. 状态图中事件是引起系统做动作或(和)转换状态的控制信息。C. 状态图提供了行为建模机制。2. 在面向数据流的设计方法中,一般将数据流分为(C )A.信息流和控制流 B.变换流和控制流C.变换流和事务流 D.事务流和控制流逻辑覆盖测试法中,条件覆盖的目的是(C)使程序中每个语句至少执行一次使程序每个语句至少执行一次,且每个判定表达式中条件的各种可能组合都 至少出现一次使程序中每个语句至
3、少执行一次,且每个判定表达式至少获得一次真值和假 值D.使程序中每个语句至少执行一次,且使判定表达式中的每个条件都取到各种原则五:穷举测试是不可能的原则六:测试要有独立性有哪些常用的黑盒测试方法?有哪些常用的白盒测试方法?用黑盒技术设计测试用例一般有等价类划分、边界值分析、错误推测和因果 图4种方法。常用的白盒测试方法包括逻辑覆盖测试法、循环测试法、基本路径测试法。 在逻辑覆盖法中大致又可以分为:语句覆盖、判定覆盖、条件覆盖、判定条件覆 盖和条件组合覆盖。5. 简述等价类划分以及等价类划分原则。等价类划分法是把所有可能的输入数据(有效的和无效的)划分成若干个等 价类。则可以合理地做出下述假定:
4、每类中的一个典型值在测试中的作用与这一 类中所有其他值的作用相同。用少量有代表性的测试数据代替大量测试目的相同 的例子,能有效提高测试效率,并取得良好的测试效果。在划分等价类时,可以 将其划分为两类:有效等价类和无效等价类。有效等价类是指完全满足程序输入 的规范说明,是合理的、有意义的输入数据所构成的集合。利用有效等价类可以 检验程序是否满足规范说明书所规定的功能和性能。无效等价类是指不满足程序 输入的规范说明,是不合理的、无意义的输入数据所构成的集合。利用无效等价 类可以检验程序的容错性。等价类划分原则:1)如果规定了输入取值范围或输入数据的个数,则可划分出一个有效等价 类(在范围内)和两个
5、无效等价类(输入值小于最小值或大于最大值)。2)如果规定了输入数据的一组值,且程序对不同输入值做不同处理,则每 个允许的输入值是一个有效等价类,还有一个无效等价类(不允许的输入值)。3)如果规定了输入数据必须遵循的规则,则可划分出一个有效等价类(符 合规则)和若干个无效等价类(从各种不同角度违反规则)。4)如果规定了输入数据为整型,则可以划分出正整数、零、负整数3个有 效等价类,其他为无效等价类。6. 简述边界值分析法及边界值分析的原则。边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充,人们从长 期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是 在输入范围的内部。
6、因此针对各种边界情况设计测试用例,可以查出更多的错误。 这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及 稍低于其边界值的一些特定情况。通常输入等价类与输出等价类的边界,是重点 测试的内容,应当选取正好等于、刚刚大于、或刚刚小于边界的值作为测试数据。边界值分析原则:1)刚刚达到这个范围的边界值,以及刚刚超越这个范围 的边界值作为测试输入数据;2)如果输入条件规定了值的个数,则用最大个数、 最小个数、比最大个数多1、比最小个数少1的数作为测试数据;3)根据规格说 明书的每个输出条件,使用前面的原则1和2; 4)规格说明书给出的输入域或 输出域是有序集合,则应选取集合的第一个
7、元素和最后一个元素作为测试用例。7. 什么是类,什么是对象,类和对象是什么关系?类是具有相同属性和操作的一组相似对象(实体)的集合。也就是说,类是 对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎 样创建该类的新对象的说明。类为属于该类的全部对象提供了统一的抽象描述。 同类的对象具有相同的属性和方法。对象是对问题域中客观存在的事物的抽象,是一组属性和在这些属性上的操 作的封装体。在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对 象,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明 确边界和意义的东西。由于客观世界中的实体通常都既具有静态
8、的属性,又具有动态的行为,因此, 面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加 的所有操作封装在一起构成的统一体。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个 实体。因此,对象又称为是类的一个“实例(Instance),类又称为是对象的“模板(Template )MO另外,类是静态的,类的语义和类之间的关系在程序执行之前已经定义,但 对象是动态的,在程序执行过程中可以动态地创建和删除对象;类代表一类抽象的概念或事物,对象是在客观世界中实际存在的类的实例。8. 简述面向对象方法学中类与类之间的关系。类与类之间的关系:包括继承、多态性、关联、依赖、实现
9、、聚集与组合。继承是子类自动地共享父类中定义的数据和方法的机制。反过来,从子类抽 取共同通用的特征形成父类的过程也叫做泛化(Generalization)。继承可以表示 类与类、接口与接口之间的继承关系,或类与接口之间的实现关系。具有继承关 系的类之间,既具有共享特性又具有差别或新增,并且类之间具有层次结构。继 承具有传递性。多态性指子类对象可以像父类对象那样使用,它们可以共享一个操作名,然 而却有不同的实现方法。关联体现的是两个类之间语义级别的一种强依赖关系,长期性的,平等的。 关联可以是单向的、双向的。依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、 临时性的、非常弱的,
10、但是类B的变化会影响到类A。关于关联关系和依赖关系 有一个简单的判断原则:某个类以成员变量的形式出现在另一个类中,二者是关 联关系;某个类以局部变量的形式出现在另一个类中,二者是依赖关系。实现是用来规定接口和实现接口的类之间的关系,接口是操作的集合,而这 些操作就用于规定类或者构件的一种服务。一个类可由一个或多类部分类组成,表示组成关系的整体和部分类之间的关 联又可以细分为聚集和组合。整体拥有各部分,部分与整体不是相同的生存期, 如整体不存在了,部分还存在,称为聚集;还有一种情况,整体拥有各部分,部 分与整体具有同样的生存期,如整体不存在了,部分也会随之消失,称为组合。9. 面向对象分析主要建
11、立哪几种模型?各自的特点是什么?面向对象分析过程,首要的是先建模,通常需要建立4种形式的模型:由用例和场景表示的用例(功能)模型;用类和对象表示的对象(静态)模型;由状态机图和交互图表示的动态行为模型;由构件图和部署图表示的物理实现模型。这4种模型从4个不同的角度描述目标系统,从不同侧面反映系统的实质 内容,总体可以全面反映对目标系统的需求。其中对象(静态)模型是上述分析阶段几个模型的核心,是动态模型和功能 模型的框架。用例(功能)模型往往是从用户需求的角度来描述系统,指明系统应该 “做什么”,直接反映用户对目标系统的需求,描述数据在系统中的变换过程及 系统的功能。对象模型是面向对象方法最基础
12、、最核心,也是最重要的模型。无论解 决什么问题,都需要从客观世界对象及对象之间的联系中抽象出有价值的信息, 用于表示静态的、结构化的、系统的数据性质。该模型主要关心系统中对象的结 构、属性与操作,以及对象与对象之间关系的映射。对象模型是对模拟客观世界 的对象及对象彼此间的关系静态结构的描述,为建立动态模型和用例(功能)模 型提供了实质性的框架。一旦建立起对象模型之后,就需要考察对象的动态行为。动态模型可以 借助于交互(顺序图或通信图)或状态机(状态图或活动图)进行建模。交互主 要用于对共同工作的群体对象的行为建模,而状态机则是对单个对象的行为建模。 动态模型表示瞬时的、行为化的、系统的“控制性
13、质,定义对象模型中对象的 合法变化序列,描述系统中不同对象类之间的交互。当问题系统涉及交互作用和 时序,如用户界面交互和过程控制时,动态模型是重点。物理实现模型关注的是系统实现过程的建模常常用构件图和部署图表示 静态的物理实现模型,用交互图和状态机描述动态实现模型。物理实现模型从实 现子系统和实现元素(即构件)的角度来表现系统实现的物理组成。10. 建立动态行为模型借助哪些UML图?这些UML图如何描述动态行为。建立动态行为模型:动态行为是系统中的对象在执行期间的不同时间点如何 通信以及通信的结果如何。交互图和状态机都用于系统的动态行为方面建模。其中交互图包括顺序图和通信图,顺序图表示类(对象
14、)按时间顺序的消息 交换过程,体现出系统用例的行为。顺序图是用来显示参与者如何采用若干顺序 步骤与系统对象交互的模型。通信图描述对象之间的关联及它们彼此之间的消息 通信。顺序图强调交互的时间次序,而通信图强调交互的空间结构,这两者在语 义上是等价的,二者可以相互转换,而不会丢失信息。状态机可以用两种方式来可视化执行的动态,一种是强调包括从活动到活动 的控制流,用活动图表示;另一种是强调对象潜在的状态和这些状态之间的转移, 用状态图表示。状态图通过建立类对象的生存周期模型来描述对象的状态、触发 状态转换的事件及对象随时间变化的动态行为(对事件的响应)。状态是给定类 对象中的一组属性值,这组属性值
15、是对象所有属性的子集。在状态图中定义的状 态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态 图中只能有一个初态,而终态则可以有。至多个。事件表示在某一特定的时间或 空间出现的能够引发状态改变的一种运动变化。转换表示当一个特定事件发生或 者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态转 变。活动是某件事情正在进行的状态,活动具体表现为由一系列动作组成的执行 过程。将各种活动及不同活动之间的转换用图形进行表示,就构成了活动图,对 系统的行为建模。活动图的UML图形表示中,如果一个活动引发下一个活动, 两个活动的图标之间用带箭头的直线连接。与状态图类似,活
16、动图也有起点和终 点,表示法和状态图相同。UML的活动图中包含的图形元素有动作状态、活动 状态、动作流、分支与合并、分叉与汇合、分区和对象流等。II. 简述可行性研究的目的、任务和具体步骤。可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解 决。需要明确,这个阶段不是解决用户提出的问题,而是确定这个问题是否值得 去解决。可行性研究的主要任务:首先需要进一步分析和澄清问题定义,在问题定义 阶段初步确定的规模和目标,如果是正确的就进一步加以肯定,如果有错误就应 该及时改正,如果对目标系统有任何约束和限制,也必须把它们清楚地列举出来; 在澄清了问题定义之后,分析员应该导出系统的逻辑模
17、型;然后从系统逻辑模型 出发,探索若干种可供选择的主要解法,也就是系统实现方案;分析每种解法可 行性和利弊,从而判定系统的目标和规模是否现实,系统完成后带来的效益是否 达到值得投资开发这个系统的程度。可行性的研究实际上是一次大大简化了的系 统分析和系统设计的过程,即以抽象的方式进行分析和研究。可行性研究的步骤:典型的可行性研究一般要经过以下步骤:1)复查并确 定系统规模和目标;2)研究目前正在使用的系统;3)建立新系统的高层逻辑模 型;4)导出和评价各种方案;5)推荐可行方案;6)草拟初步的开发计划;7) 编写可行性研究报告提交审查。可能的结果(B)是面向对象系统中对象之间交互的途径,是向另外
18、一个对象发出的服务 请求。A. 类 B.消息 C,封装D.调用应该在(D),完整地定义每个类的服务建立对象模型之时B.建立功能模型之后C.建立动态模型之后D.建立动态模型和功能模型之后(二)、多项选择软件过程是为了获得高质量所需要完成的一系列任务的框架,它包括(ABC)A.实现过程 B.管理过程C.支持过程D.测试过程下述任务中,属于软件工程需求分析阶段的是(AB)确定对系统的综合需求分析系统的数据需求确定系统由哪些模型组成及每个模块的功能建立软件的逻辑模型软件设计是把软件需求转换为软件表示的过程,软件设计的任务包括(ABCD )A.数据设计 B.体系结构设计 C.接口设计D.过程设计结构化程
19、序设计所使用的结构有(AB)A.顺序 B.选择C.重复 D.GOTO以下哪些是软件详细设计工具(ABC)A.程序流程图B.盒图(N-S图)C.问题分析图(PAD图) D.HIPO图从发展历程来看,程序设计语言可以分为(ABCD)几代A.机器语言 B.汇编语言C.高级语言 D.非过程化语言软件产品在交付使用之前一般要经过(ABCD)A.单元测试 B.集成测试 C.确认测试 D.系统测试下列关于软件测试和调试的说法正确的是(ABCD)测试的目的是为找出软件中所有存在的错误调试的目的是为了解决软件中存在的错误成功的测试是发现了至今为止尚未发现的错误的测试调试能够证明软件的正确性软件维护活动可以归结为
20、以下(ABCD)几类A.改正性维护 B.适应性维护 C.完善性维护 D.预防性维护统一建模语言UML的表示方法有(ABCD)A,视图 B.图 C.模型元素 D.公共机制在面向对象的设计中,应遵循的设计准则包括(ABCD)A.高内聚、低耦合 B.信息隐藏 C.模块化、抽象 D.可重用面向对象系统的逻辑设计模型划分为若干部分,分别对应组成目标系统的(ABCD)oA.问题域子系统B.人机交互子系统C.任务管理子系统 D.数据管理子系统在面向对象的服务设计中,确定类中应用的服务包括(ABC)A.从对象模型中引入服务 B.从用例模型中引入服务C,从动态模型中引入服务 D.从物理模型中引入服务二、主观部分
21、:(一)、名词解释软件工程软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、 技术和方法来开发和维护软件。1. 软件过程软件过程(software process)是为了获得高质量所需要完成的一系列任务的框 架,它规定了完成多项任务的工作步骤。2. 软件生命周期软件生命周期是指某一软件项目被提出来并着手实现开始直到该软件报废或停 止使用为止的生命周期,又称软件生存期。3. 数据流图数据流图(Data Flow Diagram, DFD)用于表示系统逻辑模型的一种工具,它以直 观的图形清晰地描述了系统数据的流动和处理过程。数据流图是系统逻辑功能的 图形展示。图中没有任何具体
22、的物理元素,主要强调的是数据流和处理过程。即 使不是计算机专业人员也很容易理解,因此是软件开发人员和用户之间极好的通 信工具。设计数据流图时只需考虑软件系统必须完成的基本逻辑功能,不需要考 虑如何具体实现这些功能,所以它也是今后进行软件设计开发的很好的出发点。 数据流图有4种基本符号:方框或立方体,表示数据的源点或终点,是系统之外 的实体;圆形或者圆角矩形,表示加工(变换数据的处理);两行平行线或者开 口矩形表示数据存储;箭头表示数据流,即特定数据的流动方向。4. 数据字典数据字典是关于数据的信息集合,也是对数据流图包含的所有元素的定义的集合。 数据字典的作用是在软件分析和设计的过程中给人提供
23、关于数据的描述信息。数 据流图和数据字典共同构成系统的逻辑模型。没有数据字典,数据流图就不严格; 然而没有数据流图,数据字典也难于发挥作用。对数据流图和对数据流图中每个 元素的精确定义放在一起,才能共同构成系统的规格说明。5. 软件总体设计软件总体设计是将软件需求转化为数据结构和软件的系统结构的过程。总体设计 是软件结构的建立过程,它将软件系统分解成许多个模块,并决定每个模块的外 部特征,即功能和界面(输入和输出)。6. 结构化设计方法结构化设计(Structured Design,简称SD)方法,也称为面向数据流的设计方法, 与结构化分析方法相衔接。结构化设计方法目标是通过对数据流的分析来设
24、计软 件结构,将数据流图映射为软件结构图。7. 判定表当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂的条件组合与 应做的动作之间的对应关系。判定表用于表示程序的静态逻辑,在判定表中的条 件部分给出所有的两分支判断的列表,动作部分给出相应的处理,要求将程序流 程图中的多分支判断都改成两分支判断。一张判定表由4部分组成:左上部列出 所有条件;左下部是所有可能做的动作;右上部是表示各种条件组合的一个矩阵; 右下部是和每种条件组合相对应的动作。判定表右半部的每一列实质上是一条规 则,规定了与特定的条件组合相对应的动作。8. 静态测试静态测试,就是静态分析,指被测程序不在机器上运行,对模块的
25、源代码进行研 读,查找错误或收集一些度量数据,检测只进行特性分析。9. 动态测试动态测试是指通过运行程序发现错误。10. 黑盒测试黑盒测试,也称功能测试或数据驱动测试。它不考虑程序内部结构和处理过程。 把被测程序看成一个黑盒子,只在软件接口处进行测试。测试者只知道该程序输 入和输出之间的关系或程序的功能,依靠能够反映这一关系和程序功能的需求规 格说明书考虑确定测试用例和推断测试结果的正确性,检查程序是否满足功能要 求黑盒测试被用来证实软件功能的正确性和可操作性。11. 白盒测试白盒测试,也称结构测试或逻辑驱动测试。白盒测试法与黑盒测试法不同,测试 人员将程序视为一个透明的白盒子,测试人员需了解
26、程序的内部结构和处理过程。 以检查处理过程的细节为基础,要求对程序的结构特性做到一定程度的覆盖,对 程序中的所有逻辑路径进行测试,并检验内部控制结构是否有错,确定实际的运 行状态与预期的状态是否一致。12. 测试用例测试用例是针对特定测试对象而开发的一组输入、预置条件和预期结果。测试用 例的基本目的是确定一组最有可能发现某个错误或某类错误的测试数据。测试用 例的不足在于不可能测试程序的每条路径,也不能把所有数据都试一遍。13. 集成测试集成测试是在单元测试基础上,将所有模块按要求组装成一个完整的系统而进行 的测试。集成测试用于组装软件的一种系统的技术,是要把模块按照设计要求组 装起来的同时进行
27、测试,用以发现和接口相联系的问题。14. 确认测试确认测试,又称为有效性测试或验收测试,是从质量的角度,在功能、性能、可 靠性、易用性等方面对软件做全面的质量检测。15. 系统测试系统测试是将经过单元测试、集成测试、确认测试以后的软件,作为计算机系统 中的一个组成部分,需要与系统中的硬件、外部设备、支持软件、数据及操作人 员结合起来,在实际运行环境下对计算机系统进行一系列的严格有效的测试来发 现软件的潜在问题,以保证各组成部分不仅单独的正常运行,而且在系统各部分 统一协调下也能正常运行。系统测试不同于功能测试。功能测试主要是验证软件功能是否符合用户需求,并 不考虑各种环境及非功能问题,如安全性
28、、可靠性、性能等,而系统测试是在更 大范围内进行的测试,着重对系统的性能、特性进行测试。16. Q测试a测试:是用户在开发者的场所进行,并且在开发者对用户的“指导下进行测 试。开发者负责记录发现的错误和使用中遇到的问题。17. B测试B测试:是由软件的最终用户们在一个或多个客户场所进行,在开发者不能控制 的环境中的“真实”应用。用户记录下在B测试过程中遇到的一切问题(真实的 或想象的),并且定期把这些问题报告给开发者。开发者对产品进行修改和完善, 最终得到正式的发布版本。16. 软件可维护性软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修 改、扩充或压缩的容易程度。软件可
29、维护性是软件开发阶段各个时期的关键目标。17. 封装封装指把对象的属性和操作结合成一个独立的系统单位,并尽可能隐藏对象的内 部细节,又称信息隐藏。通过对象的封装特性,用户只能看到对象封装界面上的 信息,对象内部对用户是隐蔽的,有效地实现了模块化功能。封装的目的是将对 象的使用者与设计者分开。18. 构件构件是一个相对独立的可装配的物理块,一般作为一个独立的文件存在。构件具 有确定的接口,相互之间可以调用,构件之间存在依赖关系。构件定义了一个系 统的功能,一个构件是一个或多个类的实现。(二)、简答简述软件危机的表现形式,产生软件危机的原因,软件危机的解决途径 软件危机是指在计算机软件的开发和维护
30、过程中所遇到的一系列严重问题。软件危机的表现形式:1)对软件开发成本和研制进度的估计常常很不精确。2)“已完成的软件不能满足用户要求。3)软件产品质量差,可靠性得不到保证。4)软件产品可维护性差。5)软件成本在计算机系统总成本中所占的比例逐年上升。6)软件开发生产率提高的速度,远远跟不上计算机应用速度普及深入的趋势。 产生软件危机的原因:1)软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。2)软件开发的管理困难。3)软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大。4)软件开发技术落后。5)生产方式落后。6)开发工具落后,生产效率提高缓慢。软件危机的解决途径:1)
31、首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错 误观念。2)要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法。 尽快消除在计算机系统早期发展阶段形成的一些错误观念和作法。3)要有良好的组织、严密的管理,各类人员要相互配合,共同完成任务。充分 认识软件开发不是某种个体劳动的神秘技巧。1. 简述软件工程的基本目标。软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、 技术和方法来开发和维护软件。软件工程的宗旨是为了提高软件生产率、降低生产成本,以较小的代价获得 高质量的软件产品。软件工程的基本目标包括1)付出较低的开发成本2)达到用户要求的
32、全部软件功能3)取得较好的软件性能4)具有较好的易用性、可重用性和可移植性5)需要较低的维护费用,较高的可靠性6)能按时完成开发工作,及时交付用户使用什么是软件的生命周期?典型的软件生命周期包括哪些阶段?软件生命周期 中软件开发时期包含哪些阶段?并简述各阶段的主要任务。软件生命周期是借用工程中产品生命周期的概念而得来的,是指某一软件项 目被提出来并着手实现开始直到该软件报废或停止使用为止的生命周期,又称软 件生存期。软件的生命周期一般分为软件定义、软件开发和软件运行三个时期。软件定义时期一般有问题定义、可行性研究和需求分析三个阶段;软件开发 时期有概要设计、详细设计、编码和单元测试、综合测试阶
33、段;软件维护时期完 成运行维护阶段。软件开发时期通常由下述4个阶段组成:概要设计、详细设计、编码和单元 测试、综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。(1)概要设计又称为总体设计、初步设计、逻辑设计或高层设计。这个阶 段是要概括地回答“怎样实现目标系统?,主要任务是将需求转变为软件的表 示形式。开发人员要把确定的各项功能需求转换成需求的体系结构,即从需求规 格说明书导出软件结构图(体系结构设计),确定由哪些模块组成以及模块之间 的关系(接口设计、组件设计),同时还要设计该项目的应用系统的总体数据结 构和数据库结构(数据库设计),撰写出总体设计说明书。(2)详细设计也称
34、为模块设计、物理设计或低层设计,详细设计阶段的任 务是要回答“应该怎样具体地实现这个系统? ”,为概要设计阶段得到的软件结 构图中的每个模块完成的功能进行具体描述、内部特征,要把功能描述转变为精 确的、结构化的过程描述,即确定实现模块功能所需要的算法和数据结构,并用 相应的详细设计工具表示出来,撰写软件的详细设计说明书。(3)编码和单元测试这个阶段的关键任务将软件设计转换成程序代码,写 出正确的,容易理解、容易维护的程序模块。程序员应该根据目标系统的性质和 实际环境,选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设 计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模
35、块。 最终提交源程序、详尽的程序说明和单元测试报告。(4)测试是开发时期的最后一个阶段,是保证软件质量的重要手段。这个 阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。 最基本的测试是集成测试和验收测试。必要时还可以再通过现场测试或平行运行 等方法对目标系统进一步测试检验。集成测试是根据设计的软件结构,把经过单 元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的 测试。验收测试则是按照规格说明书的规定(通常在需求分析阶段确定),由用 户(或在用户积极参加下)对目标系统进行验收。最终提交测试计划、详细测试 方案以及实际测试结果等。2. 什么是模块、模块
36、化?软件设计为什么要模块化?考核知识点:软件设计模块化模块,又称“组件,是软件结构的基础,是软件元素,是能够单独命名、 独立完成一定功能的程序语句的集合。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块 的过程。模块化是为了使一个复杂的大型程序能被人的智力所管理。如果一个大型程 序仅由一个模块组成,它将很难被人所理解。模块化的目的是降低软件复杂性,使软件设计、测试、维护等操作变得容易。运用模块化技术还可以防止错误蔓延,从而可以提高系统的可靠性。4. 简述软件模块设计准则。软件模块设计需要遵循的准则如下:1)降低模块之间的耦合性,提高模块的内聚性。2)模块结构的深度、宽度、扇出和
37、扇入应适当3)模块的作用范围应该在控制范围内4)模块接口设计要简单,以便降低复杂程度和冗余度5)设计功能可预测并能得到验证的模块6)适当划分模块规模,以保持其独立性简述软件测试的原则。原则一:所有的测试都应该能追溯到用户需求原则二:测试工作具有创造性,但很困难。1. 测试用例既要有输入数据,又要有对应的输出结果。2. 测试用例不仅要选用合理的输入数据,还应选择不合理的输入数据。3. 除了检查程序是否做了它应该做的工作,还应该检查程序是否做了它不应 该做的工作。原则三:测试要有计划性1. 应该远在测试开始之前就制定测试计划2. 测试计划、测试用例、测试报告必须作为文档长期保存3. 严格执行测试计划,排除测试的随意性原则四:把Pareto原理应用于软件测试