软件工程_自考_复习资料总结1

软件工程_自考_复习资料总结1

ID:42081839

大小:144.00 KB

页数:15页

时间:2019-09-07

上传者:U-991
软件工程_自考_复习资料总结1_第1页
软件工程_自考_复习资料总结1_第2页
软件工程_自考_复习资料总结1_第3页
软件工程_自考_复习资料总结1_第4页
软件工程_自考_复习资料总结1_第5页
资源描述:

《软件工程_自考_复习资料总结1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

第1章•软件:计算机程序及说明程序的各种文档。“程序”是计算任务的处理对象和处理规则的描述;“文档”是有关计算机程序功能、设计、编制、使用的文字或图形资料。•软件的特点:(1)软件是一种逻辑产品,具有无形性,以程序和文档的形式出现(2)(软件产品)的生产主耍是研制(3)~不会用坏,不存在磨损、消耗问题(4)~的生产主要靠脑力劳动,还未摆脱手工开发方式(5)费用不断增加,成本曰中.卬贝•软件生产的发展:a程序设计时代45~56生产方式是个体手工劳动,机器语言、汇编语言,方法是追求编程技巧,追求程序运行效率b程序系统时代(56、68)作坊式的小集团合作生产,工具髙级语言,方法:个人技巧开始提出结构化方法c软件工程时代(68至今)工程化的生产,使用数据库、开发工具及环境,网络,分布式,面向对象技术来开发软件•“软件危机”便件技术进步,软件不能满足发展的要求,在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。危机表现a经费预算经常突破,完成时间一再拖延b开发的软件不能满足用户要求、可维护性差、可靠性差•危机原因a软件的规模越来越大,结构越来越复杂b软件开发管理困难而复杂、费用不断增加、技术落后、生产方式落后、开发工具落后,生产率提高缓慢•软件工程68北人西洋公约组织用科学知识和技术原理來定义、开发、维护软件的一门学科。•~性质:它涉及计算机科学、工程科学、管理科学、数学等领域,计算机科学着重于原理和理论,而~着重于如何建造一个软件系统。"要用工程科学中的观点來进行费用估算、制定进度、制定计划和方案。~要用管理科学中的方法和原理进行软件生产的管理。~要用数学的方法建立〜屮的齐种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等。•~目标:付出较低的开发成本、达到耍求的软件功能、取得较好的软件性能、开发的软件易移植、需要的较低的维护费用、能按时完成开发任务,及时交付使用、开发的软件可靠性高•软件工程内容:软件开发技术、~管理。软件开发技术,主要研究软件开发方法、过程、工具和环境。(软件)开发管理屮研究〜管理学、~经济学、~心理学。面临问题:~费用~可靠性~维护~生产率~重用~工程(过程):获取〜供应~开发~操作~维护〜管理过程;支持过程•软件生存周期:可行性分析和项目开发计划;需求分析;概要设计;详细设计;编码;测试维护。软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。•瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。是一种整体开发的模型增量模型是一种非整休开发的模型。•螺旋模型将瀑布模型与增量模型结合起来,加入了风险分析,用于复朵的人型软件开发;分为几个螺旋周期一,制定计划二,风险分析三,开发实施四,用户评估。•喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。使开发过程具有迭代性和无间隙性。基木知识的模型乂称智能模 型,它把瀑布模型和专家系统结合在一•起。•变换模型是一种适合于形式化开发方法的模型。从软件需求形式化说明开始,经过一系列变换,最终得到系统的日标程序。•软件开发方法:一种使用早已定义好的技术集及符号的表示习惯来纽织软件生产的过程(结构化)方法由~分析、~设计、~程序设计构成。它是一种面向数据流的开发方法。〜方法总的指导思想是自顶向卜・、逐步求精。它的基本原则是功能的分解与抽象,它是软件工程中最早出现的开发方法,特别适合于数据处理领域的问题。•Jackson方法是一种面向数据结构的开发方法。维也纳开发方法(VDM)是一种形式化的开发方法,软件的需求用严格的形式语言描述。•面向对象的开发方法包括面向对彖分析、面向对彖设计、面向对彖实现。面向对彖开发方法有Booch方法、Coad方法第2章•软件(可行性研究)的目的就是用最小的代价在尽可能短的时间内确定该软件项冃是否能够开发,是否值得去开发。•〜的目的不是去开发一个软件项目,而是研究这个软件项目是否值得去开发,其屮的问提能否解决。~实质上是要进行一次简化、压缩了的需求分析、设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。•可行性研究的任务:技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多人,项目是否能实现。包括:开发的风险;资源的有效性;技术;开发人员在评估技术可行性时,一旦估计错误,将会出现灾难性后果。经济可行性包扌舌成本一一效果分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景。社会可行性包括:合同、责任、侵权、用户组织的管理模式及规范,其他-些技术人员常常不了解的陷阱等。•可行性研究有步骤:确定项H规模和1=1标、研究正在运行的系统、建立新系统的高层逻辑模型、导出和评价各种方案、推荐可行的方案、编写可行性研究报告。•可行性研究内容:引言、可行性研究前提、对现有系统的分析、所建议系统的技术可行性分析、所建议系统的经济可行性分析、社会因索可行性分析、其他可供选择方案、结论意见。•成丄一一效益分析首云是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。效益分有形效益和无形效益两种。有形效益可以用货币的时间价值、投资回收期、纯收入等指标进行度量;无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。•投资冋收期就是使累计的经济效益等于最初的投资费用所需的时间。•项目的纯收入,也就是在整个生存周期之内的累计经济效益(折合成现在值)与投资Z差。•项目开发计划:项目概述;实施计划;人员组织及分工;交付期限。•在进行可行性研究和软件计划以后,如果确认开发一个新的软件系统是必要的而且是可能的,那么就进入需求分析阶段。•需求分析指,开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式 功能规约(需求规格说明)的过程。•难点:问题的复杂性;交流障碍;不完备性和不一致性;需求易变性。任务是要准确地定义新系统的冃标,为了满足用户需要,凹答系统必须“做什么”的问题。本阶段的工作:问题识別:功能需求;性能需求;环境需求;用户界面需求分析与综合:导出软件的逻辑模型编写文档:需求规格说明书;初步用户使用手册;确认测试计划;修改完善软件开发计划。•结构化分析(SA)是面向数据流进行需求分析的方法。SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求说明书中的主要部分。SA描述工具:a数据流图(DFD)描述的分解,即描述系统由哪几部分组成,各部分之间有什么联系等d二数据流数据在系统内传播的路径,因此由一组成分固定的数据项组成。o加工(乂称数据处理)。对数据流进行某些操作或变换。=数据存储又称文件)指暂时保存的数据,它可以是数据库文件或任何形式白勺数护1•组织的源点或终点是本软件系统外部环境中的实体,统称外部实体。b数据字典;DD”定义了数据流图中每一个图形元素。c描述加工逻辑的结构化语言,判定表、判定树则详细描述数据流图中不能被再夯解“J每一个加T。•数据字典(DD)就是用来定义数据流图屮的齐个成分的具体含义的,他以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。•DD四条数据流、数据项(组成数据流和数据存储的最小元素)、数据存储、基本加工•加丁条冃数据字典中的加T逻辑主要描述该加工“做什么”,即实现另T的策略,而不是实现加工的细节,它描述如何把输入数据流变换为输出数据流的加工规则。•加工逻辑也称为“小说明”,描述加工逻辑一般用以下工具:结构化语言、判定表、判定树。•结构化语言是介丁自然语言和形式语言Z间的一种半形式语言。它的结构可分成外层和内层两层:外层来描述控制结构,采用顺序、选择、重复三种基木结构;内层对于顺序执行和循环执行的动作,用结构化语言描述。存在多个条件复杂组合的判断问题,用判定表和判定树TDRFO:用来描述系统的功能活动及其联系,建立系统的功能模型。IDEF1:用来描述系统的信息及其联系,建立系统的信息模型。1DEF2:用来进行系统模拟,建立系统的动态模型。•建立功能模型的基本方法:1,确定建模的范鬧、观点及冃的3•建立顶层图A0图2..建立系统的内外关系图A—0图4.建立低层次的图形•传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统“做什么”的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。形式化方法是将需求规格说明用形式规约语言来描述。典型的有基于模型的Z语言及VDM开发方法。第3章•1.设计软件系统结构(简称软件结构)采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。软件结构设计是以模块为基础的,在需求分析阶段,已经把系统分解为层次 结构。设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。2.数据结构及数据库设计数据库的设计指数据存储文件的设计(概念设计、逻辑设计、物理设计)数据库的“概念设计”、“逻辑设计”分别对应于系统开发中的“需求分析”与“概耍设计”,而数据库的“物理设计”与模块的“详细设计”相对应。3•编写概要设计文档(概要设计说明书;数据库设计说明书;用户手册;修订测试计划,对测试策略、方法、步骤提出明确要求。)4•评审:对设计部分是否完整地实现了需求中规定的功能、性能等更求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等等都一一进行评审。•模块的基本属性:接口:指模块的输入与输出;功能:指模块实现什么功能;逻辑:描述内部如何实现要求的功能及所需的数据;状态:该模块的运行环境,即模块的调用与被调用关系。功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。•模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。模块化的依据:开发一个大而复杂的软件系统,将它进行适当的分解,不但可降低其复杂性,还可减少开发工作量,从而降低开发成本,提高软件生产率•扌II象是认识复杂现彖过程屮使用的思维丁具,即抽岀事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素。通过抽象,可以确定组成软件的过程实体。通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。•信息隐蔽指在设计和确定模块时,使得一个模块内部包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。•模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准一一耦合性和内聚性。•耦合性也称块间联系。指软件系统结构屮各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低収决于模块间接口的复杂性、调用的方式及传递的信息。•无直接耦合数据耦合标记耦合控制耦合公共耦合内容耦合(低一一高)1无直接耦合2数据耦合指两个模块Z间有调用关系,传递的是简单的数据值,相当于高级语言的值传递。3初记耦合指两个模块Z间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址。4控制耦合指一个模块调用另一个模块时,传递的是控制变屋(如开关、标志等),被调模块通过该控制变星的值有选择地执行块内某一功能。5公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。6内容耦合:这是最高程度的耦合,也是最羞的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。•内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元索彼此结合的紧密程度的度量。若一个模块内各元索(语名Z间、程序段Z间)联 系的越紧密,则它的内聚性就越高。•偶然内聚逻辑内聚时间内聚通信内聚顺序内聚功能内聚(低一一高)1偶然内聚指一个模块内的各处理元素之间没有任何联系。2逻辑内聚指模块内执行儿个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。3时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。4通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用和同的输入数据或者产生和同的输出数据。5顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。6功能内聚:这是最强的内聚,指模块内所有元素共同完成-•个功能,缺一•不可。与其他模块的耦合是最弱的。•耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。软件结构图主耍内容有:模块、模块的控制关系;模块间的信息传递、两个附加符号•构图的形态特征:1深度指结构图控制的层次;2宽度指一层屮最大的模块个数;3扇出指一个模块直接下属模块的个数;4扇入指一个模块直接上属模块的个数。•软件结构设计优化准则:1.划分模块时,尽量做到高内聚,低耦合,保持模块相对独立性,并优化初始软件结构a如果若干模块之间耦合强度过高,何:个模块内功能不复杂,可将它们合并,以减少信息的传递和公共区的引用。b若有多个相关模块,应对它们的功能进行分析,消去重复功能。2.一个模块的作用范围应在其控制范围这内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。一个模块的作用范圉指受该模块内一个判定影响的所有模块的集合。一个模块的控制范I韦I指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集合。•结构化设计SD面向数据流的设计是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,与结构化分析SA衔接,构成完整的结构化分析与设计技术数据流图分为变换型和事务型变换型DFD由输入、变换(或处理)、输出组成变换型DFD基本思想:取得数据、变换数据和给出数据•面向数据流设计过程:(1)精化DFD(2)确定DFD类型(3)分解上层模块,设计中下层模块结构(4)根据优化准则对软件结构求精(5)描述模块功能、接口及全局数据结构(6)复查,入错转到2修善,否则进入详细设计•变换分析设计:(1)确定DFD中的变换中心、逻辑输入和逻辑输出 (2)设计软件结构的顶层和第一层——变换结构这一层有3屮功能模块:输入、输岀和变换模块(3)设计屮下层模块•综合DFD的映射(既有变换流也有事务流)设计方法:(1)确定DFI)整体上的类型(2)标出局部的DFI)范圉,确定其类型(3)按整体的局部的DFD特征,设计出软件结构分层DFD映射(主图变换型和子图事务型或相反)第5章•详细设计是软件设计的第二阶段,主要确定每个模块具体执行过程,故也称“过程设计”•详细设计的基木任务:1.为每个模块进行详细的算法设计;2.为模块内的数据结构进行设计;3.对数据库进行物理设计,即确定数据库的物理结构;4.其他设计(代码设计、输入输出格式设计、人机对话设计)5.编写详细设计说明书6.评审•处理过程设计中采用的典型方法是结构化程序设计(SP)方法。详细设计的目标不仅是逻辑上正确地实现每个模块的功能,还应使设计出的处理过程清晰易读。结构化程序设计是实现该忖标的关键技术之一,它指导人们用良好的思想方法开发易于理解、易于验证的程序。•构化程序设计方法的基本要点是:1采用自顶向下、逐步求精的程序设计方法2使用三种基本控制结构构造程序任何程序都可由顺序、选择、重复三种基本控制结构构造。这三种基木结构的共同点是单入口、单出口。3主程序员组的组织形式。详细描述处理过程常用三种工具:图形、表格和语言。•程序流程图又称为程序框图,都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,这样的流程图是结构化的流程图。•程序流程图优点:直观清晰、易于使用,是开发者普遍采用的工具缺点:1•可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构2.流程图不易反映逐步求精的过程,往往反映的是最后的结果3.不易表示数据结构•PAD图指问题分析图,它是一种自左往右展开的二维树型结构。控制流程为自上而下、从左到右的执行。出机器自动通过走树的办法生成相应的源代码,大大提高了软件的生产率。•PAD优点:1..清晰的反映了程序的层次结构2.支持逐步求精的设计方法,左边层次中的内容可以抽象,然后由左到右逐步细化3.易读易写,使用方便4.支持结构化的程序设计原理5•可自动生成程序•过程设计语言(PDL),也称程序描述语言,乂称伪码。它是一种用于描述模块算法设计和处理细节的语言。伪码的结构一般分为内外两层,外层语法应符合一般程序设计语言常用的语法规则,而内层语法则用一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能,具有严格的关键字外层语法,用于定义控制结构、数据结构和模块接口,而它表示实际操作和条件的内层语语法又是灵活口由的,使用口然语言的词汇。•PDL程序结构:顺序结构、选择结构、重复结构、出口结构、模块定义与调用、 模块调用输入、输出•JACKSON方法是面向数据结构的设计方法,70年代屮期岀了“面向数据结构”的设计方法,其屮有代表性的是由英国M.JACKSON提出的JACKSON方法和由法国人J.WARMER提出的WARNIER方法。•JACKSON在JSP的基础上扩展成了一种系统的开发方法,简称JSI)。JSI)主要以活动事件为中心,通过曲一串活动顺序组合构成的进程,建立系统模型,最后实现该模型。JSP方法定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件的体系结构,因此该方法适用于详细设计阶段。•JACKSON方法提供了自己的描述工具JACKSON结构图。无论数据结构还是程序结构,都限于三种基本结构(顺序结构、选择结构、重复结构)及它们的组合。•JACKSON结构图的特点:1能对结构进行自顶向下分解,因此可以表示层次结构。2结构易读,形象直观。3既能表示数据结构也能表示程序结构,且表示的是组成关系。•JSP方法一般通过以下五个步骤来完成设计:1分析并确定输入数据和输出数据的逻辑结构,并用JACKson结构图表示这些数据结构。2找用输X数据结构和输出数据结构中有对应关系的数据单元。“对应关系”指这些数据单元在数据内容上、数量上和顺序上有直接的因果关系,对于重复的数据单元,重复的次序和次数都相同才有对应关系。3按一定的规则曲输入、输出的数据结构导出程序结构4列出基本操作与条件,并把它们分配到程序结构图的适当位置。5用伪码写出程序。第6章•源程序代码:将详细设计得到的处理过程的描述转换为基于某种计算机语言的程序•程序设计语言特性:1心理特性:指影响程序员心理的语言性能,许多这类特性是作为程序设计的结果而出现歧义性:有些语法规则容易使人用不同的方式来解释语言,这就产生了心理上的二义性。简洁性:人们必须记住的语言成分的数量越多,简洁性越差。局部性和顺序性:局部性是指语言的联想性,在编码过程中,由语句组合成模块,由模块组装成系统结构,并在组装过程实现模块的高内聚,低耦合,使局部性得到加强。传统性:传统性容易影响人们学习新语种的积极性。2工程特性:可移植性(指程序从一个计算机环境移植到另一个计算机环境的容易程度)、开发工具的可利用性、软件的可重用性、可维护性3技术特性•程序设计语言:为开发一个特定项冃选择程序设计语言时,必须从技术特性、工程特性和心理特性几方面考虑。•考虑选用语言的因素有:1项冃的应用领域:a科学工程计算(需要人量的标准库函数,以便处理复杂 的数值计算,可供选用的语言有:FORTRANPascalCPL/1)b数据处理与数据库应用(CoBolSQL4GL);实时处理(汇编语言Ada);系统软件(汇编语言C语言Pascal语言和Ada语言);人工智能(Lisp是一种函数型语言Prolog是一种逻辑型语言)2软件开发的方法:有时编程语言的选择依赖于开发的方法,如杲要用快速原形模型来开发,要求能快速实现原形,宜采用4GLo如果是面向对彖方法,宜采用血向对象的语言编程(C++JAVA)3软件执行的环境4算法和数据结构的复杂性5软件开发人员的知识•程序设计风格指一个编制程序时所表现出來的特点、习惯、逻辑思想等。语句构造的原则是:简单直接,不能为了追求效率而使代码复杂化。•效率指处理机时间和存储空间的使用(处理时要注意):a效率是一个性能要求,冃标在需求分析给出b追求效率建立在不损害程序可读性或可靠性基础之上c提高程序效率的根本途径在于选择良好的设计方法、良好的数据结构与算法,而不是靠编程时对程序语句做调整第7章•软件测试的日的:1.软件测试是为了发现错误而执行程序的过程;2.—个好的测试用例能够发现至今尚未发现的错误;3.—个成功的测试是发现了至今尚未发现的错误的测试。•测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,利用这些实例执行程序,找出软件中潜在的各种错误和缺陷。•软件测试中,应注意以下指导原则:1•测试用例应由输入数据和预期的输出数据两部分组成2•测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。这样能更多的发现错误,提高程序的可靠性。对不合理的输入数据,程序应拒绝接受,并给出相应提示。1.除了检查程序是否做了它该做的事,还检查是否做了不应该做的事2.应制定测试计划并严格执行,排除随意性3.长期保持测试用例4.对发现错误较多的程序段,应进行冋归测试5.程序员避免测试自己的程序•软件测试方法一般分为两大类:动态测试方法与静态测试方法静态测试指被测试程序不在机器上运行,而是采用人丁检测和计算机辅助静态分析的手段对程序进行检测。动态测试指通过运行程序发现错误,分为黑盒测试法和白盒测试法。黑盒法:把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试乂称为功能测试或数据驱动测试。•黑盒测试主要测试以下错误:(1)是否有不正确或遗漏了的功能(2)在接口上,能否正确的接受输入数据,能否产生正确的输入信息 (3)访问外部信息是否有错(4)性能上是否满足要求等•白盒法:把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序屮尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否―致。•黑盒法和石盒法都不能是测试达到彻底•白盒技术:由于白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。1•逻辑覆盖a语句覆盖:指设计足够的测试用例,使被测程序中的每个语句至少执行一次,语句覆盖是比较弱的覆盖标准。b判定覆盖:指设计足够的测试用例,使得被测程序中每人判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也称分支覆盖。c条件覆盖:指设计足够的测试用例,使得判定表达式小每个条件的各种可能的值至少出现一次。d判定/条件覆盖:指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结杲也至少出现次。e条件组合覆盖:比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合至少出现一次,满足条件组合覆盖的测试一定满足“判定覆盖”、“条件覆盖”和“判定/条件覆盖”。f路径覆盖:指设计足够的测试用例,覆盖被测程序屮所有可能的路径。语句覆盖发现错误能力最弱。判定覆盖包含了语句覆盖,但它可能会使一些条件得不到测试。发现错•误能力:a——f由弱到强2.循环覆盖•黑盒技术(黑盒测试是功能测试):1等价类划分:它将输入数据域按有效的或无效的(也称合理的或不合理的)划分为若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。用等价类划分的方法设计测试用例的步骤为:2边界值分析使用边界值分析方法设计测试用例时一般与等价类划分结合起來。但它不是从一个等价类屮任选一个例子作为代表,而将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。3错误推测:在测试程序时,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例,这就是错误推测法。4因果图:因果图能有效地检测输入条件的各种组合可能会引起的错误。因果图的基本原理是通过画因杲图,把用口然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。5综合策略•软件测试时需要三类信息:1软件配置:指需求规格说明书、设计说明书、源程序等。2测试配置:指测试方案、测试用例、测试驱动程序等3测试工具:指计算机辅助测试的有关T具。•软件测试的步骤及与各开发阶段的关系单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实 现规定的功能,从而发现模块在编码屮或算法屮的错误。该阶段涉及编码和详细设计的文档。各模块经过单元测试后,将各模块纽装起来进行集成测试,以检查与设计相关的软件体系结构的有关问题。确认测试主要检查已实现的软件是否满足需求规格说明书中确眾了的各种需求。系统测试指把已确认的软件与其他系统元素结合在一起进行测试。单元测试主要针对模块的以卜-五个基本特征进行测试:模块接口、局部数据结构、重要的执行路径、错误处理、边界条件。•在单元测试时,需要为被测模块设计驱动模块和桩模块。•驱动模块的作用是用來模拟被测模块的上级调用模块,它只完成接受测试数据,以上模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。桩模块用来代替被测试模块所调用的模块。它的作用是返冋被测试模块所需的信息。集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统行的测试,故也称组装测试或联合测试。•集成测试的方法主要有两种:非渐增式测试和渐增式测试。渐增式测试有以下两种不同的组装模块的方法:顶向下结合(深度优先策略、宽度优先策略);自底向上结合确认测试又称有效性测试。它的任务是检查软件的功能与性能是否与需求规格说明书屮确定的指标相符合,确认测试阶段有两项工作:进行确认测试与软件配置审查。a确认测试一般是在模拟环境下运用黑盒测试方法,出专门测试人员和用户参加的测试。b软件配置审杳的任务是检杳软件的所有文档资料的完整性、正确性。如发现遗漏和错应补充和改正•软件测试的冃的是尽可能多地发现程序中的错误,而调试则是在进行了成功的测试之后才开始的工作,因此调试也称为纠错。•调试技术:1.简单的调试方法2.归纳法调试3.演绎法调试4.冋溯法调试第8章•软件维护的内容有四种:校正性维护,适应性维护,完善性维护和预防性维护。校正性维护:为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。适应性维护:为了使应用软件适应破件和软件环境的变化而修改软件的过程称为适应性维护。完善性维护:增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。预防性维护:为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。维护的特点:非结构化维护和结构化维护维护的流程:制定维护申请报告、审查中请报告并批准、进行维护并做详细记 录、覆审•维护技术有两类:面向维护的技术和维护支援技术维护的副作用:编码副作用、数据副作用、文档副作用软件可维护性的定义:软件能够被理解、校正、适应及增强功能的容易程度。软件的可维护性、可使用性、可靠性是衡量软件质量的几个主要特性。•软件的可维护性可用卜面七个质量特性町來衡量,即可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。对不同类型的维护,这七种特性的侧重点也不相同。•提高可维护性的方法:建立明确的软件质量目标;利用先进的软件开发技术和工具;建立明确的质量保证工作;选择可维护的程序设计语言;改进程序文档。为了保证可维护性,以下四类检查是非常有用的:在检杏点进行检查;验收检查;周期性的维护检查;对软件包的检查。第9章•传统的瀑布模型木质上是一种线性顺序模型,各阶段之间存在着严格的顺序性和依赖性,特别强调预先定义需求的重要性瀑布模型的局限性:1•需求是可变的2.需求是模糊的3•用户和开发者难于沟通瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早的产生工作软件。•根据增量的方式和形式的不同,分为渐增模型和原型模型。渐增模型是瀑布模型的变种,有两类渐增模型:1增量构造模型:它在瀑布模型基础上,对一些阶段进行整体开发,对另一些阶段进行增量开发。前面的开发阶段按瀑布模型进行整体开发,后面的开发阶段按增量方式开发。2演化提交模型:它在瀑布模型的基础上,所有阶段都进行增量开发,也就是说不仅是增屋开发,也是增虽提交。•原形模型乂称快速原形模型,它是增量模型的另一种形式。•根据原型的不同作用,有三类原型模型:1探索型原型:这种类型的原型模型是把原型用于开发的需求分析阶段,冃的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发都对项目都缺乏经验的悄况,通过对原型的开发來明确用户的需求2实验型原型:主要用于设计阶段,考核实现方案是否合适,能否实现。3演化型原型:主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统。它将原型的思想扩展到软件开发的全过程。第10章•传统软件方法存在的问题:1•软件垂用性2.软件可维护性3.开发出的软件不能满足用户需要 对象具有状态。一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对彖实现了数据和操作的结合,使数据和操作封装于对彖的统一体中。类具有属性,它是对彖的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。•对象之间进行通信的构造叫做消息类的实现是核心问题类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。当一个对彖接收一•条消息后,它所包含的方法决定对彖怎样动作。•在客观世界屮这些类Z间有一定的结构关系。通常有两种主要的结构关系,即一般一一具体结构关系,整体一一部分结构关系。一般一一具体结构称为分类结构,也可以说是“或”关系,或者是“is关系。整体一一部分结构称为组装结构,它们Z间的关系是一种“与”关系,或者是"hasa"关系。在类的层次结构屮,通常上层类称为父类或超类,下层类称为子类。面向对象的特征:对象惟一性;分类性;继承性;多态性(多形性)。继承性:子类只继承一个父类的数据结构方法,则称为单重继承。子类继承了多个父类的数据结构和方法,则称为多重继承。•具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。•面向对象的要素:1抽象:是指强调实体的本质、内在的属性,忽略一些无关紧要的属性。类实现了对彖的数据(即状态)和行为的抽象,它是对象的共性的抽象。2封装性:是指所有软件部件内部都有明确的范帀以及清楚的外部边界。3共享性(3个级别):面向对象技术在不同级别上促进了共享。同一个类中的共享、在同一个应用中共享、在不同应用中的共享。•面向对象开发方法有Coad方法、Booch方法、0MT方法和Uml方法Uml语言不公统一了booch方法、omt方法、oose方法的表示方法,而且对其作了进一步的发展,最终统一为大众所接受的标准建模语言。•对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述。•属性指的是类中对象所具有的性质(数据值)。不同对象的同一属性可以具有相同或不同的属性值。类中的各属性名是唯一的。操作是类屮对象所使用的一种功能或变换。类屮的各对象可以共享操作。•方法是类的操作的实现步骤。•链表示对象间的物理与概念联结,关联表示类之间的一种关系,就是一些可能的链的集合,链是关联的实例,关联是链的抽象。两个类之间的关联称为二元关联,三个类Z间的关联称为三元关联。•类的层次结构:1聚集关系。聚集是一种“整体一一部分”关系。在这种关系中,有整体类和部分类Z分。聚集最重耍的性质是传递性,也具有逆对性。2—般化关系。是在保留对象差异的同时共享对象相似性的一种高度抽象方法。它是“一般一一具体”的关系,一般化类乂称父类,具体类乂称子类。•继承有单重继承和多重继承。单重继承指的是子类只有一个父亲,在一个类层 次结构若只有单更继承,则该类层次结构是树型层次结构。多重继承指的是了类继承了多个父类的性质,在一个类层次结构中,若有多重继承,则该类层次结构是网状层次结构。对象模型:模板是类、关联、一般化结构的逻辑结构组成对象模型是由一个或若干模板组成•动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质,它关心的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了对彖的相互行为。该模型描述的系统忏属性是触发事件、事件序歹U、状态、事件与状态的组织。使用状态图作为描述工具。它涉及到事件、状态、操作等重耍概念现实世界中,各对象Z间相互触发,一个触发行为就是一个事件•状态是对象属性值的抽象,状态指明了对象对输入事件的响应。状态图反映了状态与事件的关系,状态图确定了由事件序列引起的状态序列。活动是一种有时间间隔的操作,它是依附于状态的操作。动作是一种憐时操作,它是与事件联系在一起的操作。功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型由多张数据流图组成。数据流图中包含有处理、数据流、动作对象和数据存储对象。•分析模型有三种用途:用來明确问题需求、为用户和开发人员提供明确需求、为用户和开发人员提供一个协商的基础,作为后继的设计和实现的框架•面向对彖设计(00D)是把分析阶段得到的需求转变成符合成本和质量要求的、抽彖的系统实现方案的过程•面向对象设计的准则:模型化;抽象;信息隐蔽;低耦合;高内聚(操作内聚、类内聚、一般具体内聚)在面向对象方法中,信息隐蔽通过对象的封装性来实现。类结构分离了与实现,从而支持了信息隐蔽。•面向对象设计的启发规则:1.设计结果应该清晰易懂2.一般一一具体结构的深度应适当3.设计简单的类4•使用简单的协议5.使用简单的操作6.把设计变动减至最小第]]章•软件质量定义:1与所确定的功能和性能需求的一致性。)2与所成文的开发标准的一致性。3与所有专业开发的软件所期望的隐含特性的一•致性。软件质量保证的策略:a以检测为重b以过程管理为重c以新产品开发为重•软件质量保证的任务:1正确定义用户要求2技术方法的应用3提高软件开发的工程能力4软件的复用5发挥每个开发者的能力6组织外部力量协作7排除无效劳动8提高计划和管理质量。•针对面向软件产品的运行、修正、转移,软件质量概念包括11个特性:(面向软件产品操作)正确性、可靠性、效率、完整性、可性。(面向软件产品修改)可维护性、可测试性、适应性。(面向软件产品适应)可移植性、可重用性、可互操作性 ISO三层次中的第一层为质量特性,第二层为质量了特性、第三层为度量。高层(SQRC)软件质量需求评价准则中层(SQDC)软件质量设计评价准则低层(SQMC)软件质量度量评价准则•通常,把“质量”理解为“用户满意程序”。有两个必要条件:1设计的规格说明书要符合用户的要求。2程序要按照设计规格说明所规定的情况正确执行。我们把上述条件1称为“设计质量”,把条件2称为“程序质量”。•提高软件质量和可靠性的技术人致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错技术,即对某些无法避开的差错,使具影响减到最小的技术。避开错误技术是进行质量管理,实现产品应有质量所必不可少的技术。实现容错技术的主要手段是冗余。冗余是指实现系统规定功能是多余的那部分资源,包括硬件、软件、信息和时间。(结构冗余、信息兀余、时间兀余、兀余附加技术)第12章•软件工程包含软件开发技术和软件工程管理两大部分内容•软件是非物质性的产品、知识密集型的逻辑思维的产品,它具有以卜•特性:a软件具有高度抽象性,软件及软件生产过程具有不可见性b同一功能软件的多样性,软件生产过程中的易错性c软件在开发和维护过程中的易变性d不同开发者之间思维碰撞的易发性•软件工程的分解是从横向和纵向即空间和实践两个方面进行的软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。•软件开发人员一般分为:项冃负责人、系统分析员、高级程序员、初级程序员、资料员和其他辅助人员。•软件开发的组织机构没有统一的模式:主程序员组织机构;专家组织机构;民主组织机构。•控制包括进度控制、人员控制、经费控制和质量控制。风险分析实际上就是贯穿在软件T程屮的一系列风险管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监督。根据软件工程标准制定的机构与适用的范围,它分为国际标准、国家标准、行业标准、企业规范及项目(课题)规范五个等级。第13章•软件开发环境是指相关的一纽软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。•软件开发环境的Fl标是提高软件开发的生产率和软件产品的质量。因而理想的软件开发环境应是能支持整个软件生存期阶段的开发活动,并能支持各种处理模型的软件方法学,同时实现这些开发方法的自动化。•软件开发环境的分类:a按解决的问题分类:程序设计环境;系统合成环境;项日管理环境。b按软件开发环境的演变趋向分类:以语言为中心的环境;工具箱环境;基于方法的环境。 c按集成化程度分类:第一代;第二代;第三代。软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。开发软件工具的主要目的是为了提高软件生产率和改善软件的质量。软件工具通常由工具、工具接口和工具用户接口三部分构成。工具通过工具接口与其他工具、操作系统或网络操作系统,以及通信接口、环境信息库接口等进行交互作用。当工具需要与用户进行交互作用时则通过工具的用户接口。•软件工具的发展有以下特点:1软件工具由单个工具向多个工具集成化方向发展。2重视用户界面的设计3不断地采用新理论和新技术。4软件工具的商品化推动了软件产业的发展,而软件产业的发展,乂增加了对软件工具的需求,促进了软件工具的商品化进程。•CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。CASE系统所涉及到的技术有两类:一类是支持软件开发过程木身的技术,如支持规约、设计、实现、测试等;另一类是支持软件开发过程管理的技术,如支持建模、过程管理等。•CASE集成:1平台集成:工具运行在相同的硬件/操作系统平台上。2数据集成:工具使用共享数据模型来操作。3表示集成:工具提供相同的用户界面。4控制集成:工具激活后能控制其他工具的操作。5过程集成:工具在一个过程模型和“过程机“的指导下使用。•数据集成指不同软件工程能相互交换数据。因而,一个工具的结果能作为另一个工具的输入。有许多不同级别的数据集成:1共享文件;2共享数据结构;3共享仓库。表示集成或用户界而集成意指一个系统屮的丁具使用共同的风格,以及采用共同的用户交互标准集。工具有一个相似的外观。目前,表示集成有如下三种不同级另山1窗口系统集成;命令集成;交互集成。控制集成支持工作台或环境屮一个工具对系统屮其他工具的访问。过程集成意指CASE系统嵌入了关于过程活动、阶段、约束和支持这些活动所需的工具的知识。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭