题目组「26-30,26-30,6,6」
黑色是原来的答案,蓝色是补充整理的答案,如果有错的话,我也没办法了。。。
一、名词解释
26.等价类划分
等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。
然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。
27.软件基本过程
软件过程(Software Process)是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关Artifacts(计划、文档、模型、编码、测试、手册等)组成。
软件过程可概括为三类:基本过程类、支持过程类和组织过程类。基本过程类包括获取过程、供应过程、开发过程、运作过程、维护过程和管理过程。
28.项目范围管理
项目范围管理是指对项目包括什么与不包括什么进行定义并控制的过程。这个过程用于确保项目组和项目干系人对做为项目结果的项目产品以及生产这些产品所用到的过程有一个共同的理解。
范围是指生产项目产品所包括的所有工作以及生产这些产品所有的过程。
项目范围管理是指对项目包括什么与不包括什么的定义和控制的过程。
主要过程有:
启动: 是指组织正式开始一个项目或继续到项目的下一个阶段。
范围计划: 是指进一步形成各种文档, 为将来项目决策提供基础, 这些文档中包括用以衡量一个项目或项目阶段是否已经顺利完成的标准等。
范围定义: 将项目主要的可交付成果细分为较小的更易管理的组分。需要建立工作分解结构(WBS)
范围核实: 项目的主要利益相关者对项目范围的正式验收。
范围变更控制: 对项目范围的变更实施控制。
29.数据耦合
当操作需要传递较长的数据参数时就会发生此种耦合。随着类和构件之间通信“带宽”的增长以及接口复杂性的增加,测试和维护就会越来越困难
如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
30.状态图
状态图表示一个状态机,强调对象行为的事件顺序。
状态图主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。
一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机,重点在与描述状态图的控制流。
二、简答题
26.Boehm和McCall等人从哪些方面来确定软件质量,他们有什么异同?
软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。
McCall等人将质量模型分为三层因素、衡量准则、度量,并对软件质量因素进行了研究,认为软件质量是正确性、可靠性、效率等构成的函数,而正确性、可靠性、效率等被称为软件质量因素,或软件质量特征,它表现了系统可见的行为化特征。每一因素又由一些准则来衡量,而准则是跟软件产品和设计相关的质量特征的属性。
Boehm模型是由Boehm等在1978年提出来的质量模型,在表达质量特征的层次性上它与McCall模型是非常类似的。不过,它是基于更为广泛的一系列质量特征,它将这些特征最终合并成19个标准。Boehm提出的概念的成功之处在于它包含了硬件性能的特征,这在McCall模型中是没有的。但是,其中与McCall模型类似的问题依然存在。
软件质量就是“软件与用户需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。
软件质量反映三个方面的问题:(1)软件需求(2)开发标准(3)隐性需求
McCall等认为,特性是软件质量的反映,软件属性可用做评价准则,定量化地度量软件属性可知软件质量的优劣。
McCall认为软件的质量模型应该包括 产品的修正、产品的转移,产品的运行:
(1)产品的修正又包括 可维护性、可测试性、灵活性等子特点。
(2)产品的转移包括 可移植性、可复用性、互连性等。
(3)产品的运行包括 正确性、可靠性、效率、可使用性和完整性。
Boehm的观点:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关。
27.什么是软件的逆向工程和再工程?
软件逆向工程是通过反汇编和调试等手段分析计算机程序的二进制可执行代码,从而获得程序的算法细节和实现原理的技术
软件再工程是对既存软件系统进行调查,并将其重构为新形式代码的开发过程。
软件逆向工程(又称反向工程)是指软件开发过程的逆向过程,即从可运行的程序系统出发.对目标文件进行反汇编,得到其汇编代码,然后对汇编代码进行理解和分析,从而得出对应的源程序、系统结构以及相关设计原理和算法思想等。一般将逆向工程分为系统级逆向和代码级逆向两个阶段。
软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。软件工程再工程是以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,为此可以使用case工具(逆向工程和再工程工具)来帮助理解原有的设计。
在软件再工程的各个阶段,软件的可重用程度都将决定软件再工程的工作量。
28.简述数据字典的作用
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。就是用来描述数据流和加工的具体含义
数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序源数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。
数据字典最重要的作用是作为分析阶段的工具。任何字典最重要的用途都是供人查询对不了解的条目的解释,在结构化分析中,数据字典的作用是给数据流图上每个成分加以定义和说明。换句话说,数据流图上所有的成分的定义和解释的文字集合就是数据字典,而且在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户的通信。
数据字典是一个存放有数据库所用的有关信息,在数据库设计的初期将数据库中的各类数据的描述集合在一起,用于在开发,维护或者其他需要的时候使用,可以类比成我们现实中的字典。
数据字典通常包括:(l)数据项;(2)数据结构;(3)数据流;(4)数据存储;(5)处理过程五个部分。其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构。数据字典通过对数据项和数据结构的定义来描述数据流和。
数据字典的作用:
(1)对于使用种的项目:数据字典通过模糊查询自动匹配用户的输入,使用户输入的数据更准确
(2)对于数据库,数据字典可以规范数据的格式,存储数据的描述等等;
(3)对于开发中的项目,数据字典规范项目中数据的格式,可以帮助开发人员理解各个数据项目的类型、数值和它们与现实世界中的对象的。
29.纠错技术中的归纳法和演绎法的中心思想是什么?
1.归纳法,指的是从许多个别事例中获得一个较具概括性的规则。这种方法主要是从收集到的既有资料,加以抽丝剥茧地分析,最后得以做出一个概括性的结论。
演绎法,则与归纳法相反,是从既有的普遍性结论或一般性事理,推导出个别性结论的一种方法。由较大范围,逐步缩小到所需的特定范围。
2.归纳法是从特殊到一般,优点是能体现众多事物的根本规律,且能体现事物的共性。缺点是容易犯不完全归纳的毛病。
演绎法是从一般到特殊,优点是由定义根本规律等出发一步步递推,逻辑严密结论可靠,且能体现事物的特性。缺点是缩小了范围,使根本规律的作用得不到充分的展现。
3.归纳法和演绎法在应用上并不矛盾,有些问题可采用前者,有些则采用后者。而更多情况,将两者结合着应用,则能收到更好的效果。
30.面向对象设计如何体现抽象信息、隐藏和模块化这三个概念的?
通过类的引入, 封装,把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块.对象的封装性实现隐藏。
面向对象(Object+oriented,简称OO)方法是以面向对象思想为指导进行系统开发的一类方法的总称。这类方法以对象为中心,以类和继承为构造机制来抽象现实世界,并构建相应的软件系统。
面向对象方法包括面向对象分析、面向对象设计、和面向对象程序语言(设计):
(1)抽象概念:面向对象分析阶段是通过行为分析法认定对象及他们之间的关系,数据抽象是OOA的核心。数据抽象把一组数据对象以及作用其上的操作组成一个程序实体。通过用例图、类图和顺序图活动图等来进行抽象说明;
(2)隐藏即面向对象设计的封装性原则,在面向对象中封装就是用对象把属性和和操纵这些属性的操作包装起来,形成一个独立的实体单元,体现了事物的相对独立性。封装的另一个含义则是信息隐蔽,即外界不能直接存取对象的内部属性以及隐藏起来的内部操作,外界也不用知道对象操作的内部实现细节。
(3)模块化体现在,将对象划分为对象类,每个对象类都定义一组数据和一组方法。按照子类和父类的关系,将若干对象类组成一个具有层次结构的系统。
三、论述题
6.什么是软件可维护性,讨论软件工程与可维护性关系
答:软件可维护性即维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。软件交付使用后,需要能够对它进行修改,以改正潜伏的错误,改进性能和其它属性,使软件产品适应环境的变化等。软件维护费用在软件开发费用中占有很大的比重。因此,可维护性是软件工程中一项十分重要的目标。
———其他参考——————
软件易维护性是指理解、改正、改动、改进软件的难易程度。通常影响软件易维护性的因素有易理解性、易测试性和易修改性。
软件可维护性包括:1)改正性维护、2)适应性维护、3)完善性维护、4)预防性维护
软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,是以工程的形式应用计算机科学和数学原理。
从广义概念看,软件工程涵盖了软件生命周期中所有的工程方法、技术和工具,包括需求工程、设计、编程、测试和维护的全部内容,即完成一个软件产品所必备的思想、理论、方法、技术和工具。
软件工程与可维护性的关系:由此可见,软件的可维护性是软件工程十分重要的目标之一。
四、应用题
6.某个银行的存取款业务处理系统有以下功能:
(1)业务分类处理:系统审查存/取款单,不合格则退回;合格则确定本次业务的性质(存款或取款);
(2)存款处理:系统将存款单上的存款金额分别记录在存折和账目文件中;记录现金账;打印存款通知单给储户;最后将存折还给储户;
(3)取款处理:系统将取款单上的取款金额记录在账目文件和存折中并修改现金账。
要求:
(1)请画出分层数据流图(10分),并写出第一层数据流图的数据字典(5分)。
(2)请采用UML的用例图(use case diagram)描述系统功能需求,并识别出可能的类(15分)。