软件工程复习题主观题.doc_第1页
软件工程复习题主观题.doc_第2页
软件工程复习题主观题.doc_第3页
软件工程复习题主观题.doc_第4页
软件工程复习题主观题.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复习题名词解释 (每题3分)1 数据字典精确地、严格地定义了每个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。2 面向对象分析分为两个过程:论域分析(建立大致的系统实现环境)和应用分析(根据特定的应用需求进行论域分析),目的是定义所有与待解决问题相关的类(包括类的操作和属性、类与类之间的关系以及它们的表现行为)。需完成的任务:a软件工程师和用户必须充分沟通,以了解基本用户的需求。b必须标识类(即定义类的属性和操作)。c必须定义类的层次。d应表达对象与对象之间的关系(对象连接)e必须模型化对象的行为f反复做以上步骤直至模型建成。3 程序效率指程序的执行速度以及程序占用的存储空间4 软件生存期软件与其他事物一样,有孕育、诞生、成长、成熟、衰亡的生存过程,这就是软件的生存周期。它主要分为6个阶段,即软件项目计划、软件需求分析和定义、软件设计、程序编码、软件测试以及运行和维护。5 原型化方法原型化方法特别适用于需求不确定性较高的软件系统的开发。它的运作思想是根据用户给出的基本需求,通过快速实现构造出一个小型的可执行的模型,这就是用户界面原型。让用户在计算机上实际运行原型,然后修改。6 软件质量与软件产品满足规定的和隐含的需求的能力有关的特性或特性的全体。或“所有描述计算机软件优秀程度的特性的组合。7 螺旋模型对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型与演化模型结合起来,并且添加两种模型均忽略的风险分析。螺旋模型沿着螺线旋转,分4个方面的活动:制定计划、风险分析、实施工程、客户评估。沿螺旋线自内向外每旋转一圈,便开发出一个更为完善的、新的软件版本。8 单元测试集中对用源代码实现的每个程序单元进行测试,检查各个模块是否正确地实现了规定的功能。9 软件质量同610 对象对象可以定义为系统中用来描述客观事物的一个实体,它是构成系统的一个基本单元,由一组属性和一组对属性进行操作的服务组成。11 集成测试根据软件设计规定的软件体系结构,把已测试过的模块组装起来,在组装时,检查程序结构组装的正确性。12 CMM模型(capatility maturity model)软件机构的能力成熟度模型,分5级。初始级、可重复级、已定义级、已管理级、已优化级。13 耦合耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。14 等价类划分法是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例。等价类是指某个输入域的子集合。15 论域分析论域分析是基于特定应用论域,标识、分析、定义可复用于应用论域内多个项目的公共需求的技术。它的目标是发现和创建一组应用广泛的类,这组类常常超出特定应用的范围,可以复用于其他系统的开发。16 软件配置软件配置管理简称SCM,是一种“保护伞”活动,它应用于整个软件工程过程。因为变更在任何时刻都可能发生,因此SCM活动的目标就是为了(1)标识变更(2)控制变更(3)确保变更正确的实现(4)向其他有关的人报告变更。17 McCabe度量法McCabe度量法是一种基于程序控制流的复杂性度量方法。McCabe定义的程序复杂性度量值又称环路复杂度,它基于一个程序模块的程序图中环路的个数。18 逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,属白盒测试。19 软件危机随着计算机硬件技术的进步,要求软件能与之相适应。然而,软件技术的进步一直未能满足形势发展提出的要求,致使问题堆积起来,形成日益尖锐的矛盾,最终导致了软件危机。20 数据字典同上21 模块独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。22 内聚内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。23 确认测试检查已实现的软件是否满足了需求规格说明中所确定的各种需求,以及软件配置是否完全、正确。(过程:功能性测试-软件配置复查-验收测试-测试和测试)24 类的多态性它意味着一个操作在不同类中可以有不同的实现方式。25 喷泉模型喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。26 DFD数据流程图(DATA FLOW DIAGRAM)描述数据在系统中如何被传送或变换,并描述对数据流进行变换的功能(子功能)。27 变换映射变换映射是体系结构设计的一种策略。运用变换映射方法建立初始的变换型系统结构图,然后对它做进一步的改造,最后得到系统的最终结构图。28 验收测试验收测试是以用户为主的测试。软件开发人员和质量保证人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。一般使用生产中的实际数据进行测试。29 功能内聚一个模块中各个部分都是为完成一项具体功能而协同工作、紧密联系、不可分割的,则称该模块为功能内聚模块。30 测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。这是在受控制的环境下进行的测试。31 构件是一个高内聚的、通过一组约定的接口完成明晰的功能、符合业界认可的模型标准(如COM/.Net,Corba,WebService等)的、可复用软件包,可在一个体系结构周境下被直接或经适当调整后组装到软件系统中而成为其组成部分。一个构件也可包含若干个子构件。一个构件也可以是Web服务方式的构件。构件分为构件类和构件实例,通过给出构件类的参数,生成实例,通过实例的组装和控制来构造相应的应用软件,这不仅大大提高了软件开发者的开发效率,也大大提高了软件的质量。32 UML统一的建模语言(UNIFIED MODELING LANGUAGE),允许软件工程师使用由一组语法的语义实用规则支配的符号来表示分析模型。在UML中用5种不同的视图来表示一个系统,这些视图从不同的侧面描述系统。33 智能模型智能模型是基于知识的软件开发模型,它综合了上述若干模型的特点,并与专家系统相结合。34 过程内聚使用流程图作为工具设计程序的时候,常常通过流程图来确定模块划分。把流程图中的某一部分划出组成模块,就得到过程内聚模块。35 测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。与测试不同的是,开发者通常不在现场。36 动态联编联编就是将模块或者函数合并在一起生成可 执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址。在程序执行的时候才进行这种关联称之为动态联编,动态联编对成员函数的选择不是基于指针或者引用,而是基于对象类型,不同的对象类型将做出不同的编译结果。37 软件配置38 软件配置管理是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。39 演化模型在项目开发的初始阶段,人们对软件的需求认识往往不够清晰,因而使得项目开发难以做到一次便成功,进行再开发在所难免。因此,可以先做试验开发,其目标只是探索可行性,弄清软件需求。然后,在此基础上获得较为满意的软件产品。40 通信内聚如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。41 系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外部设备、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。42 软件过程是软件生存期中的一系列相关软件工程活动的集合。每个软件过程是由一组工作任务、项目里程碑、软件工程产品和交付物、质量保证点等组成。43 E-R图实体-关系图(ENTITY RELATION DIAGRAM)描述数据对象之间的关系,是结构化分析的一种方法。44 控制耦合如果一个模块通过传送开关、标志、名字等控制信息,明显地控制性选择另一模块中的功能,就是控制耦合。45 逆向工程 软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序表示的过程。逆向工程是设计恢复的过程。简答题 (每题5分)1 什么是结构化分析方法? 结构化分析方法是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。工具包括数据流图、数据字典、结构化语言、判定表、判定树。一种建模技术,分析模型如下:分析模型的核心是数据字典,它描述所有在目标系统中使用和生成的数据对象。围绕这个核心有三个图:实体关系图描述数据对象之间的关系,数据流图描述数据在系统中如何被传递变换,并描述对数据流进行变换的功能(子功能);状态迁移图描述系统对外部事件如何响应、如何动作。他们用于数据建模、功能建模、行为建模。2 比较黑盒测试法和白盒测试法的异同。概念:黑盒测试,根据软件产品的功能设计规格,在计算机上进行测试,以证实每个已经实现的功能是否符合要求。白盒测试:根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过测试。3 在项目开发过程中,如何进行面向对象分析? 论域分析是建立大致的系统实现环境。应用分析是根据特定应用的需求进行论域分析。首先要进行论域分析,论域分析是软件开发的一个基本组成部分,它给出一组抽象,这组抽象是论域知识的高层表示,可以用来作为特定系统需求开发的参考。4 什么是系统动态分析? 包括状态迁移图、时序图、Petri网。为直观地分析系统的动作,从特定的视点出发描述系统的行为,而采用的动态分析的方法。5 结构化设计方法的步骤有哪些?结构化设计方法是基于模块化、自顶向下细化、结构化程序设计技术基础而发展起来的。该方法的实施的要点是:i. 建立数据流的类型;ii. 指明流的边界;iii. 将数据流图映射到程序结构;iv. 用“因子化”方法定义控制的层次结构;v. 用设计测量和一些启发式规则对结构进行细化。6 在面向对象技术中,如何进行类的设计?利用既存类来设计类,有四种方式:选择、分解、配置、演变(三种演变方式)。应遵循的原则:信息隐蔽、消息限制、狭窄界面、强内聚、弱耦合、显示信息传递、派生类当作派生类型、抽象类。设计主动类先设计模型,再确定操作;被动类先确定了服务之后,再设计为支持服务所需要的数据。7 简述软件工程的目标软件工程是开发、运行、维护和修复软件的系统方法。为达到如下几个目标(目标之间存在的互斥性):1. 付出较低的开发成本;2. 达到预期的软件功能;3. 取得较好的软件性能;4. 使开发的软件易于移植;5. 需要较低的维护费用;6. 能按时完成开发工作,及时交付使用。8 简述软件需求分析的原则与方法软件需求分析的原则:1. 能表达和理解问题的数据域和功能域;2. 按自顶向下、逐层分解的方式对问题分解和细化;3. 给出逻辑视图和物理视图。软件需求分析方法:原型化方法、结构化分析方法、面向对象的分析方法等。1) 支持数据域分析机制;2) 功能表示的方法;3) 接口(数据来源与去向);4) 分层分解机制(抽象);5) 逻辑视图、物理视图;6) 系统抽象模型。9 谈谈软件维护的意义在软件运行维护阶段对软件产品进行的修改就是软件维护。为了提高软件的可维护性,降低维护成本。10 简述软件工程的基本目标同711 如何进行系统分析?系统分析是一组统称为计算机系统工程的活动,系统分析着眼于所有的系统生成元素,而不仅仅是软件。系统分析要经历一下几个步骤:(1)系统需求识别,包括系统分析的目标、系统分析过程。(2)可行性研究,包括经济可行性、技术可行性、法律可行性、抉择也就是对系统开发的不同方案比较评估。(3)成本-效益分析,从经济角度评价开发一个新的软件项目是否可行,可以采用货币时间价值、投资回收期和纯收入三种方法。(4)技术分析(5)分配与权衡,一旦解决了与分析任务相关的问题,就应开始考虑候选的解决方案(6)系统结构的模型化,建立结构图(7)系统定义与评审,包括系统规格说明、系统定义的评审。12 简述软件测试的基本步骤软件测试就是为了发现错误而执行程序的过程。按四个步骤执行:单元测试、集成测试、确认测试、系统测试。13 完成良好的程序设计应遵循哪些原则? 软件设计既是过程又是模型。Davis1. 设计过程不应受“隧道视野”的限制。2. 设计应能追溯到分析模型。3. 设计不应从头做起。利用可复用设计构件。4. 设计应当缩短软件和现实世界中问题的“智力差距”。5. 设计应当具有一致性、集成性。6. 使用上述的基本的设计概念,将设计构造的便于将来的修改。7. 应将设计构造的即使遇到异常的数据、事件和操作条件,也能平滑轻松的降级。8. 设计不是编码,编码也不是设计。9. 再开始着手设计时就应该能够评估质量,而不是在事情完成之后。10. 应当坚持设计评审以减少概念上(语义上)的错误。14 软件的复杂性有哪几类?软件复杂性度量模型应遵循哪些基本原则? K.Magel从六个方面描述软件的复杂性。分为四类:结构、数据结构、算法、文档复杂性度量。1. 理解程序的难度。2. 改错及维护程序的难度。3. 向他人解释程序的难度。4. 按指定方法修改程序的难度。5. 根据设计文档编写程序的工作量。6. 执行程序时需要资源的程度。软件复杂性度量模型应遵循的基本原则: 1) 软件复杂性与程序大小的关系不是线形的。 2) 控制结构复杂的程序较复杂。3) 数据结构复杂的程序较复杂。4) 转向语句使用不当的程序较复杂。5) 循环结构比选择结构复杂,选择结构比顺序结构复杂。6) 语句、数据、子程序和模块在程序中的次序对软件复杂性都有影响。7) 全程变量、非局部变量较多时程序较复杂。8) 参数按地址传递比按值传递更复杂。9) 函数副作用比显示参数传递更难以琢磨。10) 具有不同作用的变量共用一个名字时较难理解。11) 模块间或过程间联系密切的程序较复杂。12) 嵌套深度越深程序越复杂。 最典型的两种程序复杂性度量方法中,MaCabe环路复杂性度量就是针对2的度量模型。Halstead软件科学则是针对程序中的操作符和操作数的出现频度而制定的度量模型。15 在类的设计中需要遵循的方针是什么?3个主要的设计准则抽象、信息隐蔽和模块化如何才能做到? 在设计类时需要遵循的方针是:1. 信息隐蔽:通过信息隐蔽可保护类的存储不被其他类的实例直接存取。2. 消息限制:该类实例的用户应该只能使用界面提供的操作。3. 狭窄界面:只有对其他类的实例是必要的操作才被放在界面上。4. 强内聚:模块内部各个部分之间应有较强的关系,它们不能分别标识。5. 弱耦合:一个单独模块应尽量不依赖于其他模块。6. 显示信息传递:两个类之间的交互应当只设计显示信息传递。7. 派生类当作派生类型:每个派生类应当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集。8. 抽象类:某些语言提供了一个类,用他作为继承结构的开始点,所有用户定义的类都直接或间接以这个类为基类。 为了在类的设计中做到抽象、信息隐蔽和模块化:1) 以类作为系统的基本模块单元,通过一般化特殊化关系和整体部分关系,搭建整个系统的类层次结构,实现数据抽象和过程抽象。2) 将数据和相关的操作封装在类的内部,建立共有、私有和子类型等存取级别,将数据表示定义成为类的私有成员,实现信息隐蔽。3) 通过建立类属性(类模板),将某些有可复用要求的类设计成在数据类型上通用的可复用的软件构件,这样有助于实现模块化。16 试比较LOC估算方法和FP估算方法的异同。在软件项目估算时,将代码行LOC和功能点FP数据在两个方面使用:一是作为一个估算变量,度量软件分量的大小;一是联合使用从过去项目中收集到的基线数据(即对以往项目所做的估算值,保留下来作为后续项目的估算参考)和其他估算变量,进行成本和工作量估算。LOC和FP是两种不同的估算技术。两者有许多共同特征。项目计划人员首先给出一个有界的软件范围的叙述,再由此叙述尝试着将软件分解成一些小的可独立进行估算的子功能。然后对每个子功能估算其LOC或FP(即估算变量)。接着,把基线生产率度量(如LOC/PM或FP/PM)用做特定的估算变量,导出子功能成本或工作量。将子功能的估算综合后就得到整个项目总的估算。LOC或FP估算技术对于分解所需要的详细程度不同。LOC,功能分解是绝对必要的且需要达到很详细的程度。估算功能点所需要的数据是宏观的量,需要的分解程度不很详细。LOC是直接估算的,FP是通过估计输入、输出、数据文件、查询和外部接口的数目,以及14种复杂性校正值间接的确定的。17 什么是软件需求规格说明的原则? 1979年Balzer和Goldman提出良好规格的8条原则:原则1:功能与实现分离,即描述要“做什么”而不是“怎样实现”。原则2:要求使用面向处理的规格说明语言,讨论来自环境的各种刺激可能导致系统 做出什么样的功能性反应,以此来定义一个行为模型,从而得到“做什么”的规格说明。原则3:如果目标软件只是一个大系统中的一个元素,那么整个大系统也包括在规格说明的描述之中。描述该目标软件与系统的其他元素交互的方式。原则4:规格说明必须包括系统运行的环境。原则5:系统规格说明必须是一个认识的模型,而不是设计或实现的模型。原则6:规格说明必须是可操作的。规格说明必须是充分完全和形式的,以便能够利用它决定对于任意给定的测试用例,已提出的实现方案都能满足规格说明。原则7:规格说明必须允许不完备性的扩充。原则8:规格说明必须容许局部化和具有松散的耦合。18 对小的程序穷举测试是可能的,试问用穷举法能保证程序百分百正确吗?不能。对小程序进行穷举测试,不见得能保证程序百分之百的正确。所谓穷举测试是拿所有可能的输入数据来作为测试用例(黑盒测试),或覆盖程序中所有可能的路径(白盒测试)。实际上不可能真正做到。19 什么是软件质量?软件质量是与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体。所有描述计算机软件优秀程度的特性总合。需求量度量软件质量的基础;按标准开发软件的准则;满足隐含需求。20 什么是瀑布开发模型?规定了各项软件工程活动,包括制定计划、需求分析和定义、软件设计、程序编码、测试及运行维护,并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。并非自上而下呈线性图式,有如下特征:1. 从前面一项活动接受本项活动所需的工作对象作为输入;2. 利用输入进行本项活动应完成的内容;3. 把本项活动的工作成果作为输出传至下一项活动;对本项活动所做的工作进行评审。若得到确认,则继续进行下一项活动;否则重做前项甚至更前项活动。21 软件需求的操作性原则和需求工程的指导性原则是什么?所有的需求分析方法都与一组操作性原则相关联:1. 必须理解和表示问题的信息域;2. 必须定义软件将完成的功能;3. 必须表示软件的行为(作为外部事件的结果);4. 必须对描述信息、功能和行为的模型进行分解,能够以层次方式揭示其细节;5. 分析过程应当从要素信息转向细节的实现。通过使用这些原则,分析员可以系统地处理问题,首先,检查信息域以便更完整地理解目标软件的功能,再使用模型以简洁的方式表达目标软件的功能和行为,并利用自顶向下、逐层分解的手段来降低问题的复杂性。在这些处理过程中,因处理需求带来的逻辑约束和因其他系统元素带来的物理约束需要通过软件要素和视图的实现加以检验和确认。除此之外,Davis建议了一组针对“需求工程”的指导性原则:1) 在开始建立分析模型之前应当先理解问题。2) 强力推荐使用原型;3) 记录每个需求的起源的原因;4) 使用多个视图,建立系统的数据、功能和行为模型。5) 给需求赋予优先级。注意消除歧义性。22 在软件开发过程中,如何提高程序设计效率?程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。三条准则:1. 效率是个性能要求,应当在需求分析阶段给出。软件效率以需求为准,而不是以人力所及为准。2. 好的设计可以提高效率。3. 程序的效率与程序的简单性相关。优化算法、提高存储效率、提高输入输出的效率。23 软件的复杂性有哪几类?软件的复杂性度量应遵循哪些原则?Same as No.14 24 软件测试有哪几种?试比较其异同。人工测试和基于计算机的测试。基于计算机的测试分为黑盒测试白盒测试。黑盒测试是基于程序的功能来设计测试用例的方法。除了测试程序外,它还适用于对需求分析阶段的软件文档进行测试。白盒测试法是根据程序的内部逻辑来设计测试用例的方法。除了测试程序外,它也适用于对软件详细设计阶段的软件文档进行测试。白盒法测试程序时常按照给定的覆盖条件选取测试用例。单元测试一般以白盒测试为主,测试的依据是系统的模块功能规格说明。25 什么是软件复用,软件复用应注意哪些问题?就是利用某些已开发的、对建立新软件系统有用的软件元素来生成新系统。软件复用是一项活动而不是对象,信息包括需求说明书、设计、代码、度量等。1. 复用必须以对被复用对象的理解为基础;2. 如何表达对软件构件的需求;3. 如何寻找相关的软件构件;4. 如何识别构件是否满足要求;5. 如何调整或修改构件从而使之满足要求;6. 如何将软件组装到新系统中;7. 如何保证软件运行结果的正确性;8. 如何进行效益的定量的估算,因为只有当复用能带来效益时人们才会考虑使用。26 什么是系统的动态分析?Same as No.427 如何进行系统结构的模型化?28 软件测试的策略有哪些?单元测试、组装测试、确认测试、系统测试29 如何进行软件的质量设计?在软件系统定义阶段,必须定义对软件的质量需求。即确定软件的质量特性及必需的评价准则,并定量得设定起必须要达到的质量水平。在以后软件开发的每一个阶段结束时,要算出评价的分数,然后与目标值加以对照,以评估在这一阶段开发的软件质量是否达到要求。(1)质量特型转换为软件的内部结构为了实现规定的质量特性,就需要把这些质量特性转换为软件的内部结构的特性,软件质量需求中的“性能”,可以转换成软件内部结构中的构成元素,即每一个程序模块和物理数据各自应具有的性能特性,这些性能特性的累积就形成外部规格中的性能特性,在质量特型中,有一些特性与功能及用户界面有关,必须把这些功能或用户界面数据正确影射到内部结构中来。这是必须对软件的结构特性进行评价(2)软件的质量展开在软件质量设计时,一个有力的方法就是质量展开,即在定义和开发各阶段,运用质量表,通过质量特性的展开以确保高质量设计。30 在实现软件的基本目标的时候应注意什么?为实现软件目标应注意以下原则:1. 抽象2. 信息隐蔽3. 模块化4. 局部化5. 确定性6. 一致性7. 完备性8. 可验证性31 简要叙述一下需求分析的过程。 分为4个方面:问题的识别、分析与综合、编制需求分析阶段的文档、需求分析的评审。32 程序的质量如何进行评定?1) 适应性:必须制定能适应各种用户要求、软件类型和软件规模的质量标准,并能够用于度量。2) 易学性:不需要特殊技术,软件技术人员容易掌握。3) 可靠性:对同一软件所作的评价,尽管评价的人或场合不同,但评价结果必须一致。4) 针对性:不是在检查时才改进质量,而必须从设计阶段起就确立质量目标,在各个阶段实施。5) 客观性:从各种角度加以评价,并将评价结果定量的表示出来,使得所有人都能理解。6) 经济性:考虑如何才能把质量度量和质量保证所需要的费用控制在适当的范围内。33 在系统分析时应注意哪些问题?34 软件需求分析的原则有哪些?1) 能表达和理解问题的数据域和功能域2)按自顶向下、逐层分解的方式对问题分解和细化3)给出逻辑视图和物理视图35 在系统开发时应如何选择程序语言?P153;首先要从问题入手,确定它的要求是什么?这些要求的相对重要性如何?再根据这些要求和相对重要性来衡量能采用的语言。通常考虑的因素有项目的应用范围、算法和计算复杂性、软件执行环境、性能上的考虑与实现的条件、数据结构的复杂性、软件开发人员的知识水平和心理因素等。其中,项目的应用范围是最关键的因素。36 如何进行软件调试?1) 从错误外部表现形式入手,确定错误位置;2) 研究程序,找出错误原因;3) 修改设计和代码,排除错误;4) 重新测试5) 修改无效时,恢复原程序,重新调试。37 试比较瀑布模型与螺旋模型方法的异同。瀑布模型:规定了各项软件工程活动,包括制定计划、需求分析和定义、软件设计、程序编码、测试及运行维护,并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。并非自上而下呈线性图式,有如下特征:1. 从前面一项活动接受本项活动所需的工作对象作为输入;2. 利用输入进行本项活动应完成的内容;3. 把本项活动的工作成果作为输出传至下一项活动;4. 对本项活动所做的工作进行评审。若得到确认,则继续进行下一项活动;否则重做前项甚至更前项活动。螺旋模型:将瀑布模型与演化模型结合起来,并且添加两者均忽略的风险分析。沿螺旋上升,笛卡儿表达了四个方面的活动:5. 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件。6. 风险分析:分析所选方案,考虑如何识别和消除风险。7. 实施工程:实施软件开发。客户评价:评价开发工作,提出修正建议。38 你如何看待程序设计风格?包括四个方面:源程序文档化、数据说明、语句结构和输入/输出,力图从编码原则的角度提高程序的可读性,改善程序质量。39 软件测试的用例该如何设计?参考4340 软件复用的技术有哪些?1)合成技术:以构件为基础,将功能细节与数据结构隐藏封装在构件内部,构件有接口,可组装成更大的构件。 合成的技术有:1.连接;2.消息传递和继承;3.管道机制2)生成技术:通过可复用模式生成:代码模式和规则模式。代码模式:应用生成器。规则模式:从较高级的形式说明开始,生成程序。41 按照类生存期,类的开发有哪几种方式?每种方式需要做哪些事情?1) 类的定义2) 类的设计与实现3) 现存类的复用4) 从现存类演变5) 从废弃型开发6) 求精和维护类的规格说明既存类的复用求精和维护从既存类演变渐增式的实现渐增式的测试从废弃型开发实现测试用例和测试的开发42 为什么需要软件维护?维护有哪几种类型?在软件运行/维护阶段对软件产品所进行的修改就是维护。维护是为了提高可维护性和可靠性,降低维护成本。1) 改正性维护 20%2) 适应性维护 25%3) 完善性维护 50%4) 预防性维护- 5%维护在软件生存期所占比例70.8%43 软件测试用例如何设计?比较测试用例设计方法之间的异同。王成刚参考:/Test/200707021.asp 根据测试的方法分为黑盒测试和白盒测试,相应的测试用例的设计方法也可以分为针对黑盒测试的用例设计和针对白盒测试的用例设计。一些比较重要的、常用的方法白盒测试的测试用例设计方法1)逻辑覆盖 逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖,各自的定义简略描述如下: 语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。 判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。 条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。 判定条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,每个判断中的每个分支至少执行一次。 条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。 路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。 2) 基本路径测试 基本路径测试方法把覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。 它是在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。 黑盒测试的测试用例设计方法1) 等价划分 所谓等价类划分是指一套被选择的值,这些值分别代表了许多众多的可能输入值,程序对其处理的方式都是一样的。 等价类划分的方法作为继边界值分析方法之后补充的测试用力设计试用的一种方法。划分等价类、确定测试用例 等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。 等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例 等价类的划分有两种不同的情况:有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。 无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。 在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。 2) 边界值分析 在设计测试用例确定输入和输出参数时,大多数情况下都是用边界值分析方法,采用边界值分析设计的测试用例发现程序错误能力最强。 边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。 人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 3) 错误推测法 人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。 错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。 4) 因果图 如果程序的功能说明中含有输入条件的组合情况,则一开始就可以选用因果图法。如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。 因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。 论述题 (10分)1 根据自身的经验和体会,试述如何实施和保证软件质量?软件质量度量和质量保证系统在质量保证活动中的5个实施步骤:Target确定质量目标,Plan制定质量计划,Do制作规格说明书和程序,自检,Check对比评价结果,Action改进。重复Plan to Active满足适应性、易学性、可靠性、针对性、客观性、经济性。2 什么是面向对象技术,如何将面向对象技术应用于实际的系统的分析、设计和实现中去?面向对象=对象+类+消息传递+继承,如果软件在开发过程中包含和使用了这四种内容,就是面向对象的。OOA-OOD-OOP对类的定义、设计、实现。分析阶段:论域分析、应用分析。设计阶段:高层设计、低层设计。类的开发:实例的建立:组装测试维护:应用系统的维护,类的维护。3 什么是软件工程标准,软件工程标准化的意义何在?人们为统一对软件及其过程的解释与理解,而制定和推行的约束(统一的规范和衡量准则)。软件工程标准化的意义;1) 提高软件的可靠性、可维护性和可移植性2) 提高软件生产率3) 提高软件人员技术水平4) 提高软件人员之间的通信效率,减少差错和误解5) 有利于软件管理,降低成本6) 有利于缩短软件开发周期4 论述在系统开发过程中软件复用的意义和如何进行软件复用。1) 将软件开发冗余工作减到极小;降低成本。2) 增强工作结果的可靠性;质量可以控制。3) 大幅度缩短软件开发周期;灵活性和标准化程度提高。4) 软件复用率最高可望达90%,效益显著提高。5) 构件技术使复用更成为现实。5 试述目前的软件质量体系有哪几种,针对中小企业,它们适用吗?Iso9000, CmmISO9000族标准是国际标准化组织(ISO)在1994年提出的概念,是指“由ISO/Tc176(国际标准化组织质量管理和质量保证技术委员会)制定的国际标准。主要分为五大模块的要求,这五大模块分别是:质量管理体系、管理职责、资源管理、产品实现、测量分析和改进。 ISO9000为企业提供了一种具有科学性的质量管理和质量保证方法和手段,可用以提高内部管理水平。 使企业内部各类人员的职责明确,避免推诿扯皮,减少领导的麻烦。 文件化的管理体系使全部质量工作有可知性、可见性和可查性,通过培训使员工更理解质量的重要性及对其工作的要求。 可以使产品质量得到根本的保证。 可以降低企业的各种管理成本和损失成本,提高效益。 为客户和潜在的客户提供信心。 提高企业的形象,增加了竞争的实力。 满足市场准入的要求。 CMM的一些基本概念 (1)软件过程:人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。 (2)软件过程能力:描述(开发组织或项目组)遵循其软件过程能够实现预期结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。 (3)软件过程性能:表示(开发组织或项目组)遵循其软件过程所得到的实际结果,软件过程性能描述的是已得到的实际结果,而软件过程能力则描述的是最可能的预期结果,它既可对整个软件开发组织而言,也可对一个特定项目而言。 (4)软件过程成熟:一个特定软件过程被明确和有效地定义,管理测量和控制的程度。 (5)软件能力成熟度等级:软件开发组织在走向成熟的途中几个具有明确定义的表示软件过程能力成熟度的平台。 (6)关键过程域:每个软件能力成熟度等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟度等级的目标起到保证作用。这些过程域就称为该成熟度等级的关键过程域,反之有非关键过程域是指对达到相应软件成熟度等级的目标不起关键作用。归纳为:互相关联的若干软件实践活动和有关基础设施的一个集合。 (7)关键实践:对关键过程域的实践起关键作用的方针、规程、措施、活动以及相关基础设施的建立。关键实践一般只描述做什么而不强制规定如何做.整个软件过程的改进是基于许多小的、渐进的步骤,而不是通过一次革命性的创新来实现的,这些小的渐进步骤就是通过一些着关键实践来实现。 (8)软件能力成熟度模型:随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力也伴随着这些阶段逐步前进,完成对软件组织进化阶段的描述模型。6 在用面向对象技术进行系统开发过程中,如何进行面向对象分析和设计?面向对象的分析分为论域分析和应用分析分析的目的是定义所有与待解决问题相关的类(包括类的操作和属性,类与类之间的关系以及它们的表现形式.论域分析是基于特定应用论域,标识.分析.定义可复用于应用论域内多个项目的公共需求的技术.它的目标是发现和创建一组应用广泛的类,这组类常常超出特定应用的范围,可以复用于其他系统的开发.1) 定义要研究的论域2) 分类从论域抽取的项3) 收集论域中各个应用的有代表性的样例4) 分析样例中的每个应用 应用分析的依据是在论域分析时建立起来的论域分析模型,并把它用于正在建立的应用中.设计分为高层设计和低层设计.体系结构的设计和详细设计7 试述在系统设计和开发的各个阶段,如何进行软件测试,这些测试包括哪些内容?软件的开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是自底向上.逐步综合的过程,低一级测试为上一级测试准备条件.首先对每个程序模块进行单元测试,消除程序模块内部在逻辑上和功能上的错误和缺陷.在对照软件设计进行集成测试,检测和排除子系统(或系统)结构上的错误.随后在对照需求分析进行确认测试.最后,从全局出发运行系统,检验是否满足预期要求.需求分析软件设计编码单元测试集成测试确认测试需求分析说明书概要设计说明书详细设计说明书源程序代码单元测试集成测试确认测试8 试比较Client/Server System模式和Distributed System模式有何区别?9 在目前的企业中或多或少地存在一些旧有的系统,试问如何维护“老化代码”?Yourdon提出10条意见:1) 了解程序;在进入“紧急维修”之前,必须研究程序的使用环境和有关资料,尽可能得到更多的背景信息。2) 力图熟悉程序的所有控制流程图。最初可以忽略某些编码细节。如果设计存在则可利用它们来帮助画出结构图和高层流程图。3) 评价现有文档的可用性。若有帮助,可利用它们在原程序清单中插入注释。4) 充分利用交叉引用表、符号表及其他由编译程序或汇编程序等提供的交叉引用信息。5) 必须非常谨慎地对程序进行修改。如果可能,要尊重程序的风格和格式,要说明需要变更的程序指令。6) 在删除某些代码时,要确认代码确实不再使用。7) 不要试图共享程序已有的临时变量或工作区,需要时可插入新的变量以避免冲突。8) 保持详细的维护活动和维护结果记录。9) 如果程序结构混乱,修改受到干扰,可抛弃程序重新编写。10) 插入出错检验。对于特长“模块”,缺乏注释的程序考虑逆向工程和再工程的技术。10 对于一个大型软件企业,如何保证软件的质量?软件质量保证的实施需要从纵向和横向两个方面展开。一个方面要求所有与软件生存期有关的人员都要参加,另一个方面要求对产品形成的全过程进行质量管理,这要求整个软件部门齐心协力,不断完善软件的开发环境。此外还要与用户合作。(1)质量目标与度量为了开发高质量的软件,从计划阶段开始,不但需要明确的软件功能,还要明确软件应达到什么样的质量标准,即制定软件的质量目标,在开发各个阶段进行检查和评价。软件质量度量和保证的条件通常有适应性、易学性、可靠性、针对性、客观性和经济性(2)质量度量方法通常软件的质量评价标准分为三级:质量需求评价准则、质量设计评价准则和质量度量准则。软件度量的方法有三种:精密度量、全面度量和简易度量。(3)成立软件质量管理小组(SQWC)是一种软件开发组织形式。可以是主程序员领导下的结构化小组,也可以是民主制的开发小组。11 在一个大型企业中,对一个大型项目,如何进行软件修改,它应遵循那些步骤?对程序的修改要经历三个步骤:(1)分析和理解程序经过分析,全面、准确、迅速的理解程序是决定维护成败和质量好坏的关键:理解程序的功能和目标;掌握程序结构信息;了解数据流信息;了解控制流信息;理解程序的操作要求,为了容易理解程序可采用以下几种方法:分析程序结构图;数据跟踪;控制跟踪(2)修改程序对程序的修改,必须事先作出计划,有预谋的、周密有效实施修改。 设计程序的修改计划。程序的修改计划要考虑人员和资源的安排,修改计划主要包括规格说明信息、维护资源、人员和提供,针对这几项要说明必要性、从何处着手、是否接受、日期等等。 修改代码,以适应变化。修改时要求:正确有效的编写修改代码;要谨慎地修改程序,尽量保持程序的风格及格式,要在程序清单上注明改动的指令;不要删除程序语句,除非完全肯定它是无用的;不要试图共用程序中已有的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论