《2022年软件工程复习要点 .pdf》由会员分享,可在线阅读,更多相关《2022年软件工程复习要点 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习好资料欢迎下载1、软件 是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。软件程序规程文档数据2、软件的特性 :软件是复杂的、软件是不可见的、软件是不断变化的、软件质量难以稳定。3、软件的质量特性 :功能性、可靠性、易用性、效率、维护性、可移植性。4、软件工程 是为了经济地获得可靠的且能在实际机器上高效运行的软件而确立和使用的完善的工程原理。5、软件工程以关注软件质量为目标,包括过程、方法和工具三个要素。6、软件危机 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。7、软件工程知识体系 :(1)软件需求 :需求是真实世界问题而必须展示的特性;(2)软件设计 :定义一个
2、系统或组件的体系结构、组件、接口和其他特征的过程;(3)软件构造 :指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作的、有意义的软件;(4) 软件测试 :在有限测试用例集合上,根据期望的行为,对程序进行的动态验证;(5)软件维护 :在软件运行过程中,对可能出现的异常,运行环境的改变,作出处理,以保证软件正常运行;(6)软件配置管理 :为了系统地控制配置的变更和维护在整个系统生命周期中的完整性和可追踪性,而标志软件在时间上不同点的配置的学科;(7)软件工程管理 :处理软件工程的管理与度量,虽然度量是所有知识域的一个重要方面,但是这里涉及的是度量程序的专题;(8)软件工程过程
3、 :涉及软件工程过程本身的定义、实现、评定、度量、管理、变更和改进;(9)软件工程工具和方法 ;(10)软件质量 。8、软件过程 是软件工程人员为了获得软件产品而在软件工具的支持下实施的一系列软件工程活动。9、软件过程的目标 :标准化、预见性、生产率、高质量、计划进度和预算的能力。10、瀑布模型特点 :阶段间具有顺序性和依赖性;采用推迟实现的观点;质量保证的观点。瀑布模型适用 :在开发的早期阶段软件需求被完整确定瀑布模型缺点 : 在项目各阶段之间极少有反馈;只有在项目后期才能看到结果;过多的强制性里程碑缺少弹性。11、增量模型 :也称渐增模型,融合了瀑布模型的基本成分(重复应用)和原型实现的迭
4、代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“ 增量” 。增量模型与原型实现模型比较:本质上都是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品。早期的增量是最终产品的 “ 可拆卸 ” 版本,但提供了为用户服务的功能,并且为用户提供了评估的平台。增量模型优点 :人员分配灵活。刚开始不用投入大量人力资源;可先发布部分功能给客户,对客户起到镇静剂的作用;增量能够有计划地管理技术风险。增量模型缺点 :需要软件具备开放式的体系结构;容易退化为边做边改模型,从而使软件过程的控制失去整体性;增加系统内部的耦合复杂性。12、螺旋模型与增量模型的
5、区别: (1)两者迭代层级不同 :增量模型在活动级迭代;螺旋模型在过程级迭代;(2)两者需求分析的时间不同 :增量模型常常是先做总体需求分析和设计,然后在编码和测试中逐个增量开发;螺旋模型在开发周期内采用简化瀑布模型或快速模型; (3)两者提交软件的方式不同:增量开发在上次增量的基础上提交新的一部分软件;螺旋模型每次迭代都提交一个新的完整的软件版本;(4)两者减少风险的方式不同:增量开发避免使用未成熟技术和经常的客户反馈等方法减少风险;螺旋模型中直接加进风险识别,风险分析、风险控制,计划性较强. 13、软件需求定义 : IEEE 的软件工程标准词汇表中将需求定义为:(1)用户解决问题或达到目标
6、所需的条件或能力;(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力;(3)一种反映上面 (1)或(2)所描述的条件或能力的文档说明。14、业务需求 反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。15、用户需求 描述了用户使用产品必须要完成的任务,这在用例(use case) 文档或方案脚本 (scenario)说明中予以说明。用户需求的描述 : (1)原则 :易于用户的理解。自然语言+直观图形;(2)问题 :自然语言表达容易含糊和不准确。16、功能需求 定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足业
7、务需求。17、非功能需求 定义产品必须遵从的标准、 规范和合约; 外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。18、软件需求分析的困难 : (1)需求变更原因 -客户方:对信息系统的了解不够;对业务需求表达不清;对自身业务抽象程度精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 5 页学习好资料欢迎下载不够;对需求重视程度不够;与开发人员配合不够;业务范围不断拓展;业务流程不断变更;管理模式不断创新。(2)需求变更原因软件人员:沟通技巧不高;需求工程技术不精;需求人员知识储备不够;不了解客户方的业务流程;调研范围不确定;
8、需求不够细致、明确;项目管理不规范;需求描述存在歧义;合同对客户方约束不够。19、需求工程 是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。需求工程的活动可分为两大类:一类属于需求开发,另一类属于需求管理。20、用例是从系统的外部对系统进行黑盒视图描述的一种组织方法。用例是抽象使用系统的一种方式,用户通过用例与系统交互。用例图主要的作用有三个:获取需求;指导测试;在其它环节中起指导作用。RUP:用例实现是系统中执行的一系列动作,这些动作将生成特定执行者可见的价值结果,一个用例定义一组用例实例。用例要点 :价值结果 有意义的目
9、标;系统执行价值结果由系统生成;执行者可见业务语言,用户观点;一组用例实例 用例的粒度。用例粒度原则 :用例要有路径,路径要有步骤。而这一切都是可观测的。建立用例模型的参考原则:用例是短文;用例可以是一个场景,包括动作和交互;用例可以是一组场景,描述不同场景下的行为;用例里不要有系统设计;用例里不要有界面设计;用例里不要有测试;用例应该描述行为需求;用例的主场景最好不要超过 9步;用例的最大价值不在于主场景,而在于备选行为。用例建模的步骤 :确定系统的范围和边界 ;确定执行者; 确定用例; 对用例进行描述; 定义用例之间的关系; 审核用例模型。用例是文档,而非制图!用例文档 :用例编号;用例名
10、称;用例描述;参与者;前置条件(成功执行的先决条件);后置条件(用例成功完成后的系统状态);基本路径 /主事件流;扩展点 /异常事件流 /分支事件流;补充说明。21、Actor:系统外-必须与系统交互;系统边界-直接和系统交互;有意义交互-属于目标系统的责任;任何事物-人、外部系统、外部因素、时间。22、包含关系 :用例 A 的行为包含了用例B 的行为。用例 B 描述在多个用例中都有的公共行为。扩展关系 : 扩展关系是从扩展用例到基本用例的关系,它说明为扩展用例定义的行为如何插入到为基本用例定义的行为中。在以下几种情况下,可使用扩展用例:a.表明用例的某一部分是可选的系统行为;b.表明只在特定
11、条件(如例外条件)下才执行的分支流。泛化关系 :A 指向 B,表示 A 是 B 的一种。23、描述包含关系 :应在基本用例的行为序列中定义要插入包含用例的位置;要定义该位置,可以引用基本用例事件流中的特定步骤或分支流。24、顺序图 描述了一组交互对象间的交互方式,它表示完成某项行为的对象和这些对象间传递消息的时间顺序。顺序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立角色。角色用生命线表示。当角色对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。25、活动图 阐明了业务用例实现的工作流程,由一系列活动组成,它们共同为业务
12、主角完成某些工作。工作流程活动图 用于研究实现业务目标时所要执行的各项任务或活动的顺序安排。活动既可以是手动执行的任务,也可以是自动执行的任务。它可完成一个工作单元。26、状态图 用于显示对外部事件做出响应的状态序列,使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。状态图由状态组成,各状态由转移链接在一起。27、数据流图的问题 :数据流图描述了一个系统的主要处理逻辑,所存取的数据文件或数据库及其输入和输出的关系。但不能反映系统的具体细节。28、数据字典 :关于数据的信息的集合,也是对数据流图中包含的所有元素的定义的集合。数据字典作用 :统一定义,便于通讯,便于共享精选学习资料
13、- - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 5 页学习好资料欢迎下载29、分析类的类型 :实体类:表示系统存储和管理的永久信息;边界类 :表示参与者与系统之间的交互;控制类:表示系统在运行过程中的业务控制逻辑。30、类间关系类型 :1、泛化 (Generalization)类间的“ 一般与特殊关系 ” ,即继承关系; 2、关联(Association)关联是一种结构化的关系,指明一种对象和另一种对象之间的联系:(1)关联的重数、 (2) 关联的角色、 (3) 限定关联、 (4) 关联类、 (5) 聚合(Aggregation) 、(6) 组合(C
14、omposition) ;3、依赖(Dependency )描述的是两个模型元素(类、组合、用例等 )之间的语义上的连接关系; 4、实现 (Realization)是用来规定接口和实现接口的类或者组件之间的关系。31、总体设计 也称为概要设计,或初步设计,用于选择合适的解决方案,并将系统划分为若干子系统,从而建立整个系统的体系结构。32、详细设计 是细化原有的分析对象,确定一些新对象,对每一个子系统的接口和类进行准确详细的说明。33、客户/服务器 Client/Server 体系结构 :Client/Server 是在两个不同机器上运行的进程间的一种关系。Server进程是服务的提供者。 Cl
15、ient 进程是服务的消费者。 Client/Server根据服务的观点对功能进行了明确划分。Client/Server 的特点 :共享资源;不对称协议;定位透明性;混合与匹配;基于消息的交换;服务封装;可扩展性;完整性。34、浏览器 /服务器模式 简称 B/S 模式,是一种扩展了的C/S 结构,其运行机制采用了标准的C/S 分布式处理。与传统信息系统结构不同的是,在基于B/S 模式的信息系统中,用户界面将全部是浏览器呈现的Web页面,用户根据Web页面信息,从浏览器端向服务器发出请求,这些请求包括对数据库的查询、修改、插入等,服务器端对请求进行处理,并将处理结果返回到浏览器端。35、MVC
16、是三个单词的缩写,分别为:模型(Model),视图(View)和控制器 (Controller)。使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式。C存在的目的则是确保M 和 V 的同步,一旦 M 改变, V 应该同步更新。36、程序流程图 又称程序框图, 它是历史最悠久、 使用最广泛的一种描述程序逻辑结构的工具,包括 5 种基本控制结构 :(1) 顺序结构(sequential structure) ;(2) 选择结构 (selective structure) ;(3) 先判定型循环结构 (while-loop structure);(4) 后判
17、定型循环结构(until-loop structure);(5) 多情况选择 (case structure) 流程图的优点 是直观清晰、易于使用,是开发者普遍采用的工具,但是它有严重缺点 :可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构。编码时势必不加限制地使用GOTO 语句,导致基本控制块多入口多出口,这样会使软件质量受到影响,与软件设计的原则相违背;流程图不易反映逐步求精的过程,往往反映的是最后的结果;不易表示数据结构。37、盒图 NS的主要特色 ,就是只能描述结构化程序所允许的标准结构,根本取消了表现诸如含有GOTO 语句的非标准结构的手段。优点:所有的程序结构均用方框来
18、表示,无论并列或者嵌套,程序的结构清晰可见。而且,由于它只能表达结构化的程序逻辑,使应用 NS 图来描述软件设计的人不得不遵守结构化程序设计的规定。久而久之,就可自然地养成良好的程序设计风格。缺点:当程序内嵌套的层数增多时,内层的方块越画越小,不仅会增加画图的困难,并将使图形的清晰性受到影响。38、PAD 图是一种由左往右展开的二维树型结构。PAD 图的控制流程为自上而下,从左往右地执行。特色: (1)清晰地反映了程序的层次结构; (2)支持逐步求精的设计方法,左边层次中的内容可以抽象,然后由左到右逐步细化; (3)易读易写,使用方便; (4)支持结构化的程序设计原理; (5)可自动生成程序。
19、39、定量度量程序复杂程度的方法的价值: ()把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量;()定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;()程序的定量的复杂程度可以作为模块规模的精确限度。40、流图:McCabe 方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度;为了突出表示程序的控制流,通常使用流图(也称为程序图 )描绘。注:流图实质上是 “ 退化了的 ” 程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的精选学习资料 - - - - - - - - - 名师归纳总
20、结 - - - - - - -第 3 页,共 5 页学习好资料欢迎下载具体条件41、结点:在流图中用圆表示,一个圆代表一条或多条语句。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。42、边:在流图中的用箭头线表示,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句(实际上相当于一个空语句)。43、区域:由边和结点围成的面积,当计算区域数时应该包括图外部未被围起来的那个区域。44、环形复杂度定量度量程序的逻辑复杂度。用下述3 种方法中的任何一种来计算环形复杂度:(1) 流图中的区域数等于环形复杂度。(2) 流
21、图 G 的环形复杂度 V(G)=E-N+2, 其中,E 是流图中边的条数, N 是结点数。(3) 流图 G 的环形复杂度 V(G)=P+1,其中,P 是流图中判定结点的数目。45、软件的详细设计完成,就表示完成了软件的过程性的描述,进入程序编码阶段。编码(Coding) 阶段的任务 简单说,是为每个模块编写程序。 即是将详细设计的结果转换为用某种计算机语言写的程序源程序代码。46、结构化程序设计 是一种程序设计技术,它采用自顶向下,逐步求精的程序设计方法和单入口和单出口的控制结构。主要特点: (1)自顶而下,逐步求精; (2)结构化的程序是由且仅由顺序、选择、循环三种基本控制结构组成。47、数
22、据说明方法 :为使程序中的数据说明更易于理解和维护,应满足: 数据说明的次序应当规范化。使数据的属性更易于查找,从而有利于测试、纠错与维护。一个语句说明多个变量时,各变量名按字母顺序排列。对于复杂的数据结构,要加注释,说明在程序实现时的特点。48、软件测试的定义 :广义上讲,软件测试指软件产品生存周期内所有的检查、评审和确认活动。狭义上讲,软件测试是对软件产品质量的检验和评价。软件测试的目的 :(1)在于发现错误;测试无法说明错误不存在,只能说明软件错误已出现;(2)检查系统是否满足需求也是测试的期望目标。49、测试用例 :所谓测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;
23、测试用例是执行测试的最小实体。50、软件测试的原则 : (1)应尽早地和不断地进行测试。一旦完成需求模型,就可以着手制定测试计划,设计工作本身应该包括测试计划的设计;测试用例是与编码同时进行的。(2)所有测试应该追溯到用户需求,测试用例的设计应该依据用户需求,最大的错误就是不能满足用户需求(3)在程序提交测试后,应当由独立的第三方,即专门的测试人员进行测试,这样测试团队将更彻底地测试软件。 (4)测试用例应包括合理的输入条件和不合理的输入条件;(5)穷举测试是不可能的,因此应该精心设计测试计划,严格执行测试计划,排除测试的随意性。(6)充分注意测试当中的群体现象,80%的错误是由 20%的程序
24、产生的 ; (7)应对每一个测试结果做全面的检查; (8)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。51、白盒测试 :又称为结构测试,把测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。白盒测试主要用于对模块的测试,包括 : 程序模块中的所有独立路径至少执行一次;对所有逻辑判定的取值 ( “真”与 “假” )都至少测试一次;在上下边界及可操作范围内运行所有循环;测试内部数据结构的有效性等。常用的白盒测试方法有 :逻辑覆盖测试;基本路径测试;循环测试。52、逻辑覆盖 主要考察使用测
25、试数据运行被测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的覆盖标准。主要的覆盖标准有 :语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;路径覆盖。53、黑盒测试 :又称行为测试,把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据需求规格说明书,检查程序的功能是否符合它的功能需求。黑盒测试可用于各种测试,它试图发现以下类型的错误:不正确或遗漏的功能;界面错误;数据结构错误或外部信息(如外部数据库 )访问错误;性能错误;初始化和终止错误。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4
26、页,共 5 页学习好资料欢迎下载主要的黑盒测试方法有 :等价类划分;边界值分析;错误推测法;因果图。54、等价类划分 : (1)由于不能穷举所有可能的输入数据来进行测试,所以只能选择少量有代表性的输入数据,来揭露尽可能多的程序错误;(2)等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例;(3)等价类是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试。等价类分为 :有效等价类和无效等价类。划分“ 等价类 ” -应按照输入条件(如输入值的范围,值的个数,值的集合,输入条
27、件必须如何)划分为有效等价类和无效等价类;选择测试用例 -使一个测试用例尽可能覆盖多个有效等价类。特别要注意的是:一个测试用例只能覆盖一个无效等价类。55、单元测试 :又称模块测试,是针对软件设计的最小单位 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试的内容 : (1) 模块接口测试; (2) 局部数据结构测试;(3) 路径测试;(4) 错误处理测试;(5) 边界测试。56、集成测试 :在单元测试的基础上,将所有模块按照设计要求组装成为系统,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。这时需要考虑的问题是 : (1)在把各个模块连接
28、起来的时候,穿越模块接口的数据是否会丢失;(2)一个模块的功能是否会对另一个模块的功能产生不利的影响; (3)各个子功能组合起来,能否达到预期要求的父功能;(4)全局数据结构是否有问题; (5)单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。集成测试方法 : (1)一次性集成方式:它是一种非增殖式组装方式。也叫做整体拼装;(2)增殖式集成方式:这种集成方式又称渐增式集成。自顶向下、自底向上、混合增殖式测试。57、系统测试 :系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。常用的系统测试包括 :恢复测试;安全测试;压力测试,也称强度测试;性能测试;确认测试。58、验收测试 :是以用户为主的测试,目的是使用户能判定系统是否真的满足了他们的需要和期望。测试内容 :安装测试、功能测试、可靠性测试、安全性测试、时间及空间性能测试、易用性测试、可移植性测试、可维护性测试、文档测试。测试方法 :1. 确认测试标准;2. 配置复审:目的是保证软件配置齐全、分类有序,并且包括软件维护所必须的细节;3.、测试 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 5 页