软件工程基础知识_第1页
软件工程基础知识_第2页
软件工程基础知识_第3页
软件工程基础知识_第4页
软件工程基础知识_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

软件工程基础知识一什么是软件?1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;二软件危机以及产生软件危机的原因?1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。2.软件成本在计算机系统总成本中所占的比例逐年上升。3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。4.软件产品的质量不容易保证。5.软件产品常常是不可维护的。6.软件产品的重用性差,同样的软件多次重复开发。7.软件通常没有适当的文档资料。产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。三有哪些软件工程方法学及其要素?1.使用最广泛的软件工程方法学是结构化方法学和面向对象的方法学。2.要素:方法、工具和过程。四什么是软件生存周期?有哪些活动?4.1软件生存周期一个软件从提出开发要求开始到软件废弃不用的整个过程。4.2 开发活动可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行维护4.3 各活动阶段主要文档4.3.1可行行分析和项目开发计划可性行研究报告项目开发计划4.3.2需求分析中的文档需求规格说明书初步用户使用手册确认测试计划修改完善的软件开发计划4.3.3 概要设计阶段文档概要设计说明书数据库说明书用户手册修订的测试计划(测试的策略、方法、步骤)4.4.4 详细设计阶段详细设计说明书4.4.5 系统测试阶段系统测试计划文档五有哪些主要生存期模型?瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、5.1 瀑布模型瀑布模型(传统的软件周期模型)严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布。优点:可强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。与它最相适应的开发方法是结构化方法。缺点:不适应用户需求的改动。5.2 原型模型5.2.1 快速原型模型快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。具有广泛技能水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验与才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。5.2.2 演化模型在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。5.2.3增量模型增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品。5.2.4 原型模型小结从下面的有关原型化方法的叙述中,选择出正确的叙述:(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。(5)使用原型化方法时应该使用第三代编程语言。(6)原型化加强了开发过程中用户的参与和决策。(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。(8)原型化方法大致可分为演化式和递增式。(9)采用原型化方法时,软件的开发成本较高。(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。5.3 螺旋模型螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。5.4 喷泉模型喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。六软件过程基础知识6.1 软件过程软件过程是指人们用于开发和维护软件及相关产品的一系列活动,包括软件工程过程和软件管理过程。 6.2 评估工具软件过程的评估,通常采用软件能力成熟度模型(Capability Maturity Model,CMM)。CMM1.1的5个等级(由低级到高级):初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。可重复级建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。已定义级 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。已管理级收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。优化级加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。七软件工程项目管理基本知识软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期。软件工程项目管理一般分为时间管理、成本管理、人力资源管理、风险管理。7.1时间管理7.1.1 Gantt图是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。 甘特图的优点:直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有 缺点: (a)不能显示地描绘各项彼此间的依赖关系;(b)进度计划的关键部分不明显,难以判断哪些部分应当是主攻和主控的对象;(c)计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。7.1.2 PERT网图与关键路径 PERT网图是一个由箭头(标识任务)和结点(标识事件)组成的有向图。将网络方法用于工作计划安排的评审和检查。 PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的“关键路径”。 关键路径(Critical Path)是由一连串的任务所组成的链,距离最大的一条路径。 软件项目的管理人员应该密切注视关键任务的进展情况。如果希望缩短工期,只有往关键任务中增加资源才会有效果。八模块化基本知识模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来访问的过程、函数、子程序或宏调用等。模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可独立地开发、测试,最后组装成完整的程序。 8.1模块特性8.1.1 可分解性如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。8.1.2 可组装性如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。8.1.3 可理解性如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。8.1.4 连续性如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。8.1.5 保护性如果模块内部出现异常情况,并且它的影响限制在模块内部,不会影响其他模块,则错误引起的副作用就会被最小化。8.2 模块与模块的耦合性耦合是对一个软件结构内不同模块之间互连程序的度量。耦合可以分成下列几种,它们之间的耦合度由高到低排列。8.2.1 内容耦合直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。8.2.2 公共耦合多个模块引用同一全局数据区。8.2.3 外部耦合模块与软件以外的环境有关联。例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。8.2.4 控制耦合一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。8.2.5 标记耦合两个模块之间通过传递公共指针或地址相互作用的耦合。8.2.6 数据耦合模块间通过传递数据交换信息。8.2.7 非直接耦合(无耦合)模块间无任何关系,独立工作 原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。8.3 模块的内聚性内聚是指一个模块内各个元素彼此结合的紧密程序,它是信息隐蔽和局部的概念的自然扩展。设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。1).偶然内聚:一个模块的各成分之间毫无关系。比如:一组语句在程序的多处出现,为了节省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。 2)逻辑内聚:把几种逻辑上相关的功能组放在同一模块中。 3)瞬时内聚(时间内聚):一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。 4)过程内聚:一个模块的处理元素是相关的,而且必须按特定的次序执行。 5)通信内聚:一个模块的所有成分都结合再同一个数据结构上。 6)顺序内聚:模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。 7)功能内聚:模块内的所有成分属于一个整体,完成单一的功能。 在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。 模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。 8.4 模块的深度、宽度、扇出与扇入深度:表示软件结构中控制的层数。宽度是软件结构中同一个层次上的模块总数的最大值一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。设计原则:低扇出、高扇入。8.5 模块作用域和控制域软件设计时,模块的作用域应在控制域之内。8.6 模块化基础知识小结通过模块的合并和分解,降低模块的耦合度。模块的扇入应尽量大,扇出应尽量小。一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的重用性高,利用率高。扇出大表示模块的复杂度高。所以要高扇入,低扇出。要将模块的作用范围限制在模块的控制范围之内。降低模块之间的复杂性,避免“病态连接”。九什么是软件开发方法?有哪些主要方法?软件开发方法:使用已定义好的技术集及符号表示习惯组织软件生产的过程。结构化方法、面向对象方法、JACKSON方法。9.1 结构化方法学结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。它的基本思想是自顶向下逐层分解。 为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构与问题结构相对应。 常用工具:数据流图(DFD)、数据字典(DD)、实例关系图(ER图)及描述加工处理的结构化语言、判定表、判定树。9.1.1数据流图(DFD图)DFD的基本成分数据流图主要由4种成分组成:数据流(data flow):由一组固定成分的数据组成,表示数据的流向。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流向另一个加工。通常每个数据流必须有一个合适的名字,一方面是为了区别,另一方面也给人一个直观的印象,使人容易理解这个数据流的含义。但流向文件或从文件流出的数据流不必命名,因为这种数据流的组成部分就是相应文件的组成部分。加工(process):描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流。每个加工有一个名字和一个编号。编号反映了该加工位于分层DFD的哪个层次和哪张图中以及它是哪个加工分解出来的子加工。文件(file):可以表示数据文件,也可以表示一个数据记录。流向文件的数据流表示写文件,流出文件的数据流表示读文件,双向箭头表示对文件既读又写。每个文件都有一个文件名。源/宿(source/sink):源是指系统所需数据的发源地,宿(也称数据池)是指系统所产生的数据的归宿地。无论源或宿,均对应于外部实体,在框内应加注实体的名字,在一个软件各级软件系统中,有些源和宿可以是一个外部实体,外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生数据的归宿地。分层数据流图一套分层的的数据流图由顶层、底层、和中间层组成。画分层数据流图基本原则与注意事项a.自外向内,自顶向下,逐层细化,完善求精。b.保持父图与子图的平衡。也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同。c.保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。d.加工细节隐藏。根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。e.简化加工间关系。在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。f.均匀分解。应该使一个数据流中的各个加工分解层次大致相同。g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。h.忽略枝节。应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题。i.表现的是数据流而不是控制流。j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读。小结:一个软件系统,其数据流图往往有多层。如果父图有N个加工(Process),则父图允许有0N张子图,但是每张子图只能对应一张父图。在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同。DFD信息流大致可分为两类:交换流和事务流。 9.1.2 数据字典 数据字典是关于数据的信息的集合也就是对数据流图中包含的所有元素的定义的集合。 组成部分:a.数据项条目b.数据流条目c.文件条目d.加工条目加工条目是对数据流图中每一个不能再分解的基本加工的精确说明。 对于加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树和判定表。9.1.3 结构化语言结构化语言实际上是一种半形式化语言,它的结构通常可分为内外两层。外层接近于形式化语言,而内层近似于自然语言的描述。9.1.4 实体关系图(ER图)实体关系图(Entity-Relabionship Diagram),简称E-R图,包含实体、关系和属性等3种基本成分。通常用矩形框代表实体,并用直线把实体(或关系)与其属性连接起来。E-R图通常用于数据库应用系统。9.2 结构化设计 结构化设计通常可分为概要设计和详细设计,但是主要用于概要设计阶段。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口以及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。9.2.1 概要设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,概要设计的基本目的就是回答“概括地说,系统应该如实现?”这个问题。概要设计的重要任务: 将一个复杂的系统按功能化分为模块、确定每个模块的功能、确定模块之间的调用关系、确定模块之间的接口(模块之间传递的信息)、评价模块的结构质量。1.软件结构图形工具结构化设计方法(SD)方法采用结构图(Structure Chart)、层次图和HIPO图描述软件结构。结构图的主要成分有模块、调用和数据,结构图中的模块用矩形表示,在矩形框内可标上模块的名字。模块间如有箭头或直线相连,表明它们之间有调用关系。层次图用来描绘软件的层次结构.层次图中一个矩形框代表一个模块,方框间的连线表示模块间的调用关系. HIPO图实际上就是层次图加输入/处理/输出图. HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”,是在层次图里出了最顶层的方框之外,每个方框都加了编号。编号规则和数据流图的编号规则一样。 9.2.2 详细设计 概要设计已经确定了每个模块的功能和接口,详细设计的任务就是为每个模块设计其实现的细节。详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,得出对目标系统的精确描述。1.详细设计阶段的内容为每个模块进行详细的算法设计。为模块内部的数据结构进行设计。对数据库进行物理设计。其他详细设计工具主要包括程序流程图(系统流程图)、盒图(N-S图)、PAD图和伪码(PDL)。 2人机界面设计 人机界面的设计质量,直接影响用户对软件产品的评价。界面的美观、灵活和风格都很重要,但人机界面设计中最重要的也是最基本的目标是软件的易操作性。人机界面设计主要包括系统响应时间、用户帮助设计、出错信息处理和命令交互设计等几个方面。 9.3 Jackson方法 上面讲的结构化设计方法是面向数据流的,另外还有一种面向数据结构的设计方法, Jackson方法是最著名的面向数据结构的设计方法,而不是面向数据流的设计方法。 Jackson方法的基本步骤是:建立系统的数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构适当的模块中。9.4 面向对象分析方法(00A)十软件工具软件工具是指用于辅助软件开发、运行、维护、管理、支持等过程中的活动的软件。通常也称为CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具。按软件过程的活动分为软件开发工具、软件维护工具和软件管理工具等。十一. 软件开发环境集成型开发环境通常可由工具集和环境集成机制两部分组成。这种环境应具有开放性和可裁减性。环境集成机制主要有数据集成机制、控制集成机制和界面集成机制。十二. 软件质量管理基础知识12.1 软件质量软件质量模型可从软件功能性、可靠性、可用性、效率、可维护性、可移植性6个方面来衡量。(1)功能性与功能及其指定的性质的一组软件属性。(2)可靠性 软件在规定的一段时间内和规定的条件下保持其性能水平有关的一组软件属性。也可以称为在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率。(3)可用性 与使用的难易程序及规定或隐含用户对使用方式所做的评价有关的软件属性。 (4)效率 与在规定条件的性能水平与所用资源量之间的关系有关的一组软件属性。(5)可维护性与软件维护的难易程序有关的一组软件属性。(6)可移植性 软件可从某一环境转移到另一环境的能力有关的一组属性。即软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件的可移植性。为了提高可移植性,应注意提高软件的设备独立性。采用表格驱动程序有助于提高设备独立性。为了提高可移植性,还应有完备的文档资料。使用C语言开发的系统软件具有较好的可移植性。12.2 软件质量保证软件质量保证的主要困难表现在以下几个方面:1) 软件开发的管理人员往往关心项目开发的成本与进度。因为成本和进度是显而易见的,而软件质量则难以度量。如果软件开发的管理人员对交付的软件含有多少隐患并不必负什么责任,他们必定没有太高的热情去控制开发的质量,更不必说保证质量并不容易且代价昂贵。开发人员的习惯一旦形成难以改变,他们的形为也难于控制,而高质量的软件产品,又主要取决于参与开发的人员。复杂的软件项目需要许多技术人员和管理人员参与,对问题的不同认识和误解如不能及时消除必然影响软件质量。软件开发人员的频繁流动,特别是骨干开发人员的流失,也会使软件质量受到一定的影响。软件质量的保证手段:开发初期制定质量保证计划,并在开发中坚持实行。开发前选定或制定开发标准或开发规范,并遵照实施。从开始就选择分析设计方法和工具,形成高质量的分析模型和设计模型。严格执行阶段评审,以便及时发现问题。各个开发阶段的测试。对软件的每次“变动”都要经过申请、评估、批准、实施等步骤。软件质量特性的度量化。软件生存期的各阶段都要完整的文档。十三.软件测试软件测试的费用已经超过软件开发费用的30%左右。“高产”测试是指用少量的测试用例,发现被测试程序尽可能多的错误。13.1 软件测试经过的步骤单元测试集成测试确认测试系统测试13.2 测试与软件开发各阶段的关系单元测试对程序中每一个程序单元进行测试,检查各个模块是否争取实现规定的功能,从而发现模块在编码中或算法中的错误,该阶段涉及编码和详细设计文档。集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。确认测试主要是检查已实现的软件是否满足需求规格说明书中已确定了的各种需求。系统测试是把已确认的软件与其他系统元素(如硬件,其他支持软件、数据、人工等)结合在一起进行测试,以确定软件是否可以支付使用。13.3 白盒测试白盒测试又称为结构测试。可以把程序看成装在一个透明盒子里,测试者(一般为编程者)完全知道程序的结构和处理算法。按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否能按预定要求正常工作。白盒测试多用于单元测试阶段。逻辑覆盖是主要的白盒测试技术。白盒测试时,确定测试数据应根据程序的内部逻辑和指定的覆盖方式。采用一下几种逻辑覆盖标准:语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖 满足条件组合覆盖测试用例,也一定满足判定条件覆盖。因此,条件组合覆盖是上述五种覆盖标准中最强的一种。13.4 黑盒测试黑盒测试,又称为功能测试。把软件看做是一个不透明的黑盒子,完全不考虑(或不了解)软件内部结构和处理算法,它只检测软件功能是否能按照软件需求说明书的要求正常使用,软件是否能适当的接受输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息(例如文件和数据库)的完整性等。常用的黑盒测试技术包括等价类划分,边值分析、错误推测和因果图等。其中等价类划分和边界值分析法方法最常用。如果两者结合使用,更有可能发现软件中的错误。13.4灰盒测试灰盒测试介于白盒测试和黑盒测试之间,它把软件看做是一个半透明的灰盒子,结合考虑软件的内部结构和外部功能设计测试用例13.5 回归测试纠正了程序中的错误之后,选择部分或全部原先已测试过的测试用例,对修改后程序重新测试以验证对软件修改后有没有引出新的错误,称为回归测试。13.6 单元测试单元测试(Unit testing )也称为模块测试或结构测试,通常可放在编程阶段(实现阶段),主要采用逻辑覆盖技术,由程序员对自己编写的模块自行测试,检查模块是否能实现了详细设计说明书中规定的功能和算法。单元测试主要发现编程和详细设计中产生的错误。测试一个模块时需要为该模块编写一个驱动模块和若干个桩(stub)模块。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。 在进行单元测试时,常用的方法是白盒测试(采用逻辑覆盖的测试技术),辅之以黑盒测试。13.7集成测试集成测试(integration testing)也称为组装测试,在单元测试的基础之上,把所有的模块组装成一个系统进行测试。主要测试设计阶段产生的错误,集成测试计划应该在概要设计阶段制定。非渐增式集成测试首先将每个模块分别进行单元测试,再把所有的模块组装成一个完整的系统进行测试。目前在进行集成测试时已普遍采用渐增式集成。渐增式集成测试又可以分为自顶向下集成和自底向上集成。自顶向下集成先测试上层模块,再测试下层模块,由于测试下层模块时上层模块已经测试过,所以不必要另外编写驱动模块。自底向上集成,先测试下层模块,再测试上层模块。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。软件的集成测试最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。13.8 确认测试在系统验收测试中,验证测试是在模拟的环境中进行强度测试的基础上进行,主要依据软件需求说明书检测软件的功能,性能及其他特征是否与用户的要求一致,而确认测试是在一个实际环境中使用真实数据运行系统。确认测试计划应该在需求分析阶段制定。测试由用户在开发者的场所进行,并且在开发者的指导下进行测试。开发者负责纪录发现的错误和使用中遇到的问题,也就是说测试是在受控的环境中进行的。测试是在一个或多个用户的现场由该软件的最终用户实施的,开发者通常不在现场,用户负责记录发现的错误和使用中遇到的问题并把这些问题报告给开发者。也就是说,测试是在受控的环境中进行的。经过确认测试之后的软件通常就可以交付使用了。13.9 系统测试 系统测试是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。包括以下的测试:恢复测试:监测系统的容错能力安全性测试:监测系统的安全机制、保密措施是否完善等防范能力。强度测试:测试软件的异常情况的处理能力。性能测试:监测系统是否满足系统设计方案说明书对性能的要求。可靠性测试:从平均失效间隔是否超过了规定的时限,因故障而停机的时间在一年中不应超过的时间来进行检测。安装测试:监测软件在安装过程中是否有错误、是否容易操作等。 系统测试计划在系统测试阶段初期制定。问 答 题1、可行性研究的任务是什么? 首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面分析研究每种解决方法的可行性。技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。2、需求分析阶段的基本任务是什么?需求分析阶段的基本任务是要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。本阶段要进行以下几方面的工作:问题识别。双方确定对问题的综合需求,这些需求包括:功能需求、性能需求、环境需求、用户界面需求,另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。分析与综合,导出软件的逻辑模型。分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成份,并用图文结合的形式,建立起新系统的逻辑模型。编写文档。编写“需求规格说明书”、编写初步用户使用手册、编写确认测试计划、修改完善软件开发计划。 3、什么是模块的影响范围?什么是模块的控制范围?他们之间应该建立什么关系? 一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集合。一个模块的作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。如果再设计过程中,发现模块作用范围不在其控制范围之内,可以用“上移判点”或“下移受判断影响的模块,将它下移到判断所在模块的控制范围内”的方法加以改进。 4、非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块? 非渐增式测试与渐增式测试的测试方法有以下区别:非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试与集成测试和在一起,同时完成。非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。渐增式比较彻底,已测试的模块和新的模块再测试。渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。渐增式测试有以下两种不同的组装模块的方法:自顶向下组合。该方法只需编写桩模块,其步骤是从顶层模块开始,沿被测程序的软件结构图的控制路径逐步向下测试,从而把各个模块都结合起来,它又有两种组合策略:深度有先策略:先从软件结构中选择一条主控制路径,把该路径上的模块一个个结合进来进行测试,以便完成一个特定的子功能,接着再结合其它需要优先考虑的路径。宽度有先策略:逐层结合直接下属的所有模块。自低向上结合。该方法仅需编写驱动模块。其步骤为:把底层模块组合成实现一个个特定子功能的族。为每一个族编写一个驱动模块,以协调测试用例的输入和测试结果的输出。对模块族进行测试。按软件结构图依次向上扩展,用实际模块替换驱动模块,形成一个个更大的族。重复至步,直至软件系统全部测试完毕。 5、软件质量与软件质量保证的含义是什么? 从实际应用来说,软件质量定义为:与所确定的功能和性能需求的一致性。与所成文的开发标准一致性。与所有专业开发的软件所期望的隐含特性的一致性。软件质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。5、软件工程标准化的意义是什么?都有哪些软件工程标准?积极推进软件工程标准化,其道理是显而易见的。仅就一个软件开发项目来说,有许多层次,不同分工的人员相互配合,在开发项目的各个部分以及各开发阶段之间也都存在许多联系和衔接问题。如何把这些错综复杂的关系协调好,需要有一系列统一的约束和规定。在软件开发项目取得阶段成果或最后完成是时,需要进行阶段评价和验收测试。投入运行的软件,其维护工作中遇到问题又与开发工作者有着密切的关系。软件的管理工作则渗透到软件生存期的每一个环节。所有这些都要要求提供统一的行动规范和衡量准则,使得各种工作都有章可循。软件工程的标准主要有以下三个:FIPS135是美国国家标准局发布的软件文档管理指南NSAC 39是美国核子安全分析中心发布的安全参数显示系统的验证与确认。ISO5807是国际标准化组织公布(现已成为中国的国家标准)的信息处理数据流程图、程序流程图、程序网络图和系统资源图的文件编制符号及约定。 6、采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?等价类划分。等价类划分是将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值的测试。边界值分析。该方法是将测试边界情况作为重点目标,选取正好等于,刚刚大于或刚刚小于边界值的情况,根据这些情况选择测试用例。错误推测。错误推测法没有确定的步骤,凭检验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。因果图。因果图能有效的检测输入条件的各种组合可能会引起的错误。因果图的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。 7、软件生产经历了几个阶段?各有何特征?软件生产至今已经历了三个阶段:程序设计时代(1946-1956):这个阶段的生产方式是个体手工劳动,使用的工具实际其语言、汇编语言。开发方法是追求编程技巧,追求程序运行效率。硬件特征是价格贵、存储容量小,运行可靠性差。软件特征是只有程序、程序设计概念,不重视程序设计方法。程序系统时代(1956-1968):这个阶段的生产方式是作坊式的小集团合作生产,生产工具是高级语言,开发方法仍就靠个人技巧,但开始提出结构化方法。硬件特征是速度、容量、工作可靠性有明显提高。软件特征是程序员数量猛增,但开发技术没有新的突破,开发人员的素质和落后的开发技术不适应规模大、结构复杂的软件开发,导致软件危机的产生。软件工程时代(1968至今):这个阶段的生产方式是工程化的生产,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。硬件特征是向超高速、大容量、微型化以及网络化方向发展。软件特征是开发技术有很大进步,但是未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机。8、简述Gantt图的功能及不足。Gantt图常用水平线段来描述把任务分解成子任务,以及每个子任务的进度安排,动态反映软件开发进度情况,该图可以:表示任务分解成子任务情况;表示每个任务的开始时间和完成时间,线段的长度表示子任务完成所需要的时间;表示子任务之间的并行和串行关系。Gantt图只能表示任务之间的并行与串行的关系,难以反映多个任务之间存在的复杂关系,不能直观表示任务之间相互依赖制约关系,以及哪些任务是关键字任务等信息,因此仅仅用Gantt图作为进度的安排是不够的。9、什么是数据字典?其作用是什么?它有哪些条目?数据字典(简称DD)是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。他和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。源点、终点不在系统之内,故一般不在字典中说明。10、调试的目的是什么?调试有哪些技术手段?调试的目的是确定错误的原因和位置,并改正错误,因此调试也成为纠错。调试技术主要有:简单的调试方法,主要有在程序中插入打印语句、运行部分程序等;归纳法调试,他从测试结果发现的线索(错误迹象、征兆)入手、分析他们之间的联系,导处错误原因的假设,然后再证明或否定这个假设;演绎法调试,该方法列出所有可能的错误原因的假设,然后利用测试数据排除不适当的假设,最后再测试数据验证余下的假设确实是出错的原因;回溯法调试,该方法从程序产生错误的地方出发,人工沿程序的逻辑路径反向搜索,直到找到错误的原因为止。 11、如何做好软件质量保证工作?软件质量保证工作是软件工程管理的重要内容,软件质量保证应做好以下几个方面的工作:采用技术手段和工具。质量保证活动要贯彻开发过程始终,必须从采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。组织正式技术评审,在软件开发的第一个阶段结束时,都要组织正式的技术评审。国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。加强软件测试。软件测试是质量保证的重要手段,因为测试可发现软件可发现软件中大多数潜在错误。推选软件工程规范(标准)。用户可以自己指定软件工程规范(标准),但标准一旦确认就应贯彻执行。对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。 12、什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?数据流图简称DFD,是SA方法中用于表示系统逻辑模型的一种工具。它以图形的方式描述数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。数据流图有四种基本图形符号:“”箭头表示数据流;“”圆或椭圆表述加工;“=”双杠表示数据存储;“”方框表示数据的源点或终点。 13什么是确认测试?该阶段有哪些工作?确认测试又称有效性测试。它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。确认测试阶段有两项工作,进行确认测试与软件配置审查。确认测试一般是在模拟环境中运用黑盒测试方法,由专门测试人员和用户参加的测试。软件配置审查的任务是检查软件的所有文档资料的完整性、正确性。如果发现遗漏和错误,应补充和改正,同时要编排好目录,为以后的软件维护工作奠定基础。 14、详细设计的基本任务是什么?有哪几种描述方法?详细设计是软件设计的第二阶段,其基本任务有:为每个模块进行详细的算法设计;为模块内的数据结构进行设计;对数据库进行物理设计,即确定数据库的物理结构;其它设计,根据软件系统类型,还可能要进行代码设计、输入/输出格式设计、人机对话设计;编写详细设计说明书;评审。详细描述处理过程常用三种工具:图形、表格和语言。如结构化程序流程图、盒图和问题分析图。IPO图也是详细设计的主要工具之一。表格工具如判定表可作为详细设计中描述逻辑条件复杂的算法。过程设计语言(PDL)是一种用于描述模块算法设计和处理细节的语言工具。15、什么是软件危机?其产生的原因是什么?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现为:经费预算经常突破,完成时间一再拖延;开发的软件不能满足用户要求;开发的软件可维护性差;开发的软件可靠性差。造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。共产生原因主要有以下几方面:软件的规模越来越大,结构越来越复杂;软件开发管理困难而复杂;软件开发费用不断增加;软件开发技术落后;生产方式落后;开发工具落后,生产率提高缓慢。16、CASE工作台有哪些分类?一个CASE工作台是一组工具集,支持像设计、实现或测试等特定的软件开发阶段。工作台工具能通过共享文件、共享仓库或共享数据结构来集成。它能支持大多数的软件过程活动。工作台有:程序设计工作台;分析和设计工作台;测试工作台;交叉开发工作台;配置管理(CM)工作台;文档工作台项目管理工作台。18、 什么是CASE?CASE工具有哪些分类?CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。从学术研究角度讲,CASE是多年来在软件开发管理、软件开发方法、软件开发环境和软件工具等方面研究和发展的产物。CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸引了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其它计算机领域的原理和技术。因而,CASE领域是一个应用集成和综合的领域。从产业角度讲,CASE是种类繁多的软件开发和系统集成的产品及软件工具的集合。CASE分类:CASE技术种类CASE系统所涉及到的技术有两类:一类是支持软件开发过程本身的技术;另一类是支持软件开发过程管理的技术。从CASE系统产生方式来看,还有一种特殊的CASE技术,即元CASE技术。他是生成CASE系统的生成器所采用的技术。该生成器可用来创建支持软件开发过程活动及过程管理的CASE系统。CASE工具的分类对CASE工具分类的标准可分为:功能。功能是对软件进行分类的最常用的标准。支持的过程。根据支持的过程,工具可分为设计工具、编程工具、维护工具等。支持的范围。根据支持的范围,可分为窄支持、较宽支持和一般支持工具。窄支持指支持过程中特定的任务,较宽支持是指支持特定过程阶段;一般支持是指支持覆盖软件过程的全部阶段或大多数阶段。1993年,Fuggetta根据CASE系统对软件过程的支持范围,提出CASE系统可分为三类:支持单个过程任务的工具。工具可能是通用的,或者也可能归组到工作台。工作台支持某一过程所有活动或某些活动。他们一般以或多或少的集成度组成工具集。环境支持软件过程所有活动或至少大部分。他们一般包括几个不同的工作台,将这些工作台以某种方式集成起来。19软件维护的特点是什么?主要体现在三个方面:非结构化维护和结构化维护。软件的开发过程对软件的维护有很大的影响。若不采用软件工程的方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护。维护的困难性。软件维护的困难性是由于软件需求分析和开发方法的缺陷。软件生存周期中的开发阶段没有严格而有科学的管理和规划,就会引起软件运行时的维护困难。软件维护的费用。软件维护的费用在总费用中的比重是在不断增加的,这是软件维护有形的代价。另外还有无形的代价,即要占用更多的资源。软件维护费用增加的主要原因是软件维护的生产率非常低。 20、软件概要设计阶段的基本任务是什么?设计软件系统结构(简称软件结构),具体为:采

温馨提示

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

评论

0/150

提交评论