(图片来源网络,侵删)
2020软件工程期末复习知识点1、软件是计算机程序、方法、规则、相关的文档以及运行计算机系统时所必需的数据的总和狭义定义:软件=程序+数据+文档2、软件的特性:软件是复杂的、软件是不可见的、软件是不断变化的、软件质量难以稳定3、软件的质量特性:功能性、可靠性、易用性、效率、维护性、可移植性4、软件工程是一个使用计算机和软件技术作为一个解决问题的工具的工程学科,是为了经济地开发和提供可靠的且能在实际机器上高效运行的软件而确立和使用的完善的工程原理5、软件工程以关注软件质量为目标,包括方法、过程、工具、范式四个要素6、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题7、关键的软件工程原则: 1)向用户提供价值;2)KIS(保持简单);3)维护视觉效果;4)你生产什么,别人消费什么;5)开放的未来;6)为复用提前制定计划;7)三思而后行8、过程:包括活动,约束并产生预期的输出某种资源的一系列的步骤9、过程建模的原因:1)形成一个共同的理解;2)发现不一致,重复,遗漏;3)为达到过程的目标而发现和评估合适的活动;4)为一个一般的过程量身定做一个特定的它将被用于的情况10、软件生命周期: 需求分析和定义;系统设计;详细设计;编码;测试;系统交付;维护11、瀑布模型特点:阶段间具有顺序性和依赖性;采用推迟实现的观点;质量保证的观点瀑布模型适用:在开发的早期阶段软件需求被完整确定瀑布模型缺点: 在项目各阶段之间极少有反馈;只有在项目后期才能看到结果;过多的强制性里程碑缺少弹性12、原型模型:原型模型通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求同时,原型模型采用的方法完善原型,使得原型能够"快速"开发,避免了像一样在冗长的开发过程中难以对用户的反馈作出快速的响应相对瀑布模型而言,原型模型更符合人们开发软件的习惯,是目前较流行的一种实用软件生存期模型13、增量模型:也称渐增模型,融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的"增量"增量模型与原型实现模型比较:本质上都是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品早期的增量是最终产品的"可拆卸"版本,但提供了为用户服务的功能,并且为用户提供了评估的平台增量模型优点:人员分配灵活刚开始不用投入大量人力资源;可先发布部分功能给客户,对客户起到镇静剂的作用;增量能够有计划地管理技术风险增量模型缺点:需要软件具备开放式的体系结构;容易退化为边做边改模型,从而使软件过程的控制失去整体性;增加系统内部的耦合复杂性14、螺旋模型与增量模型的区别:(1)两者迭代层级不同:增量模型在活动级迭代;螺旋模型在过程级迭代;(2)两者需求分析的时间不同:增量模型常常是先做总体需求分析和设计,然后在编码和测试中逐个增量开发;螺旋模型在开发周期内采用简化瀑布模型或快速模型;(3)两者提交软件的方式不同:增量开发在上次增量的基础上提交新的一部分软件;螺旋模型每次迭代都提交一个新的完整的软件版本;(4)两者减少风险的方式不同:增量开发避免使用未成熟技术和经常的客户反馈等方法减少风险;螺旋模型中直接加进风险识别,风险分析、风险控制,计划性较强.15、RUP: Rational Unified Process Rational统一过程(软件开发统一过程)RUP核心:RUP核心是解决可操作性问题,帮助开发人员尽可能少地依赖那些"不可描述的经验"RUP特点:用例驱动(Use Case);以体系结构为中心(高内聚低耦合);增量和迭代开发16、最佳软件开发实践 Best Practices: 1)Develop Iteratively 迭代地开发软件;2)Manage Requirements 管理需求;3)Use Component Architectures 应⽤用基于构件的架构;4)Model Visually (UML) 为软件建⽴立可视化的模型;5)Continuously Verify Quality 不断地验证软件质量;6)Manage Change 控制软件的变更 17、RUP4个建模主要元素:1)Role ⾓角⾊色:who2)Activity 活动:how 例如 用例分析,用例设计;3)Artifact 制品:what 例如 用例实现,模型,文档,源代码,可执行体4)Workflow 工作流:when 例如 顺序图18、UML:Unified Modeling Language 统一建模语言是一种建模语言; 是用来为面向对象开发系统的产品进行说明可视化和编制文档的方法19、UML模型图(5类,10种):1)⽤用例图2) 静态图(类图,对象图,包图)3)⾏行为图(状态图,活动图)4) 交互图(顺序图,合作图)5) 实现图(构件图,配置图)20、用例:从本质上讲,一个用例是用户与计算机之间为达到某个目的的一次典型交互作用;用例图:用例图描述系统外部的执行者与系统的用例之间的某种联系用例图主要的作用有三个:获取需求;指导测试;在其它环节中起指导作用21、类图:类图描述了系统中的类及其相互之间的各种关系,其本质反映了系统中包含的各种对象的类型以及对象间的各种静态关系(关联,子类型)22、对象图: 对象图是类图的一种实例化一张对象图表示的是与其对应的类图的一个具体实例,即系统在某一时期或者某一特定时刻可能存在的具体对象实例以及它们相互之间的具体关系23、包图:包图所显示的是类的包以及这些包之间的依赖关系24、状态图状态图是对类的一种补充描述,它展示了此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况25、活动图阐明了业务用例实现的工作流程,由一系列活动组成,它们共同为业务主角完成某些工作工作流程活动图用于研究实现业务目标时所要执行的各项任务或活动的顺序安排活动既可以是手动执行的任务,也可以是自动执行的任务它可完成一个工作单元26、顺序图:描述了对象之间动态的交互关系,着重体现对象间消息传递的时间顺序27、合作图:与顺序图作用相同,合作图也是用来描述系统中对象之间的动态协作关系合作图侧重于描述各个对象之间存在的消息收发关系(交互关系),而不专门突出这些消息发送的时间顺序28、EXTREME PROGRAMMING (XP):极限编程,简称XPXP是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程极限编程优点:1)采用简单计划策略,不需要长期计划和复杂模型,开发周期短;2) 在全过程采用迭代增量开发、反馈修正和反复测试的方法,能够适应用户经常变化的需求极限编程缺点1)目前主要在小规模项目上应用并取得成功,但是否适用于中等规模或大规模软件产品,需慎重考虑;2)由于这个模型较新产品交付后维护成本是否降低,不能确定;3)对编码人员的经验要求高29、单元测试:又称模块测试,是针对软件设计的最小单位 ─ 程序模块,进行正确性检验的测试工作其目的在于发现各模块内部可能存在的各种差错单元测试的内容: (1) 模块接口测试;(2) 局部数据结构测试 ;(3) 路径测试 ;(4) 错误处理测试; (5) 边界测试 单元测试优点:更易发现bug;更容易维护;更容易理解;更容易开发30、软件测试的定义:广义上讲,软件测试指软件产品生存周期内所有的检查、评审和确认活动狭义上讲,软件测试是对软件产品质量的检验和评价软件测试的目的:(1)在于发现错误;测试无法说明错误不存在,只能说明软件错误已出现;(2)检查系统是否满足需求也是测试的期望目标31、测试用例:所谓测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;测试用例是执行测试的最小实体32、软件测试的原则:(1)应尽早地和不断地进行测试一旦完成需求模型,就可以着手制定测试计划,设计工作本身应该包括测试计划的设计;测试用例是与编码同时进行的(2)所有测试应该追溯到用户需求,测试用例的设计应该依据用户需求,最大的错误就是不能满足用户需求(3)在程序提交测试后,应当由独立的第三方,即专门的测试人员进行测试,这样测试团队将更彻底地测试软件 (4)测试用例应包括合理的输入条件和不合理的输入条件;(5)穷举测试是不可能的,因此应该精心设计测试计划,严格执行测试计划,排除测试的随意性(6)充分注意测试当中的群体现象,80%的错误是由20%的程序产生的 ;(7)应对每一个测试结果做全面的检查;(8)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料33、白盒测试:又称为结构测试,把测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作白盒测试主要用于对模块的测试,包括:程序模块中的所有独立路径至少执行一次;对所有逻辑判定的取值("真"与"假")都至少测试一次;在上下边界及可操作范围内运行所有循环;测试内部数据结构的有效性等常用的白盒测试方法有:逻辑覆盖测试;基本路径测试;循环测试34、黑盒测试:又称行为测试,把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据需求规格说明书,检查程序的功能是否符合它的功能需求黑盒测试可用于各种测试,它试图发现以下类型的错误:不正确或遗漏的功能;界面错误;数据结构错误或外部信息(如外部数据库)访问错误;性能错误;初始化和终止错误主要的黑盒测试方法有:等价类划分;边界值分析;错误推测法;因果图35、遗传算法(GA):遗传算法是根据问题的目标函数构造一个适值函数,对一个或多个解构成的种群进行评估、遗传运算、选择、经多代繁殖,获得适应值最好的个体作为问题的最优解个体适应度评价基本遗传算法按与个体适应度成正比的概率来决定当前群体中每个个体遗传到下一代群体中的机会多少为正确计算这个概率,这里要求所有个体的适应度必须为正数或零这样,根据不同种类的问题,必须预先确定好由目标函数值到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时的处理方法遗传算子基本遗传算法使用下述三种遗传算子:• 选择运算:使用比例选择算子;• 交叉运算:使用单点交叉算子;• 变异运算:使用基本位变异算子基本遗传算法的运行参数基本遗传算法有下述4个运行参数需要提前设定:• M:群体大小,即群体中所含个体的数量,一般取为20 ~ 100• T:遗传运算的终止进化代数,一般取为100 ~ 500• pc:交叉概率,一般取为0.4 ~ 0.99• pm:变异概率,一般取为 0.0001 ~ 0.1基本遗传算法描述:Procedure GABegininitialize P(0);t=0;while (t<=T) dofor i=1 to M doEvaluate fitness of P(t);end forfor i=1 to M doSelect operation to P(t);end forfor i=1 to M/2 doCrossover operation to P(t);end forfor i=1 to M doMutation operation to P(t);end forfor i=1 to M doP(t+1) = P(t);end fort=t+1end whileend交叉是最重要的遗传算子,它同时对俩个染色体进行操作,组合二者的特性产生新的后代交叉的最简单方式是在双亲的染色体上随机的选择一个断点,将断点的右段互相交换,从而形成俩个新的后代这种方法对于二进制编码最为适合双亲的染色体是否进行交叉由交叉率来进行控制交叉率(记为Pc)定义为各代中交叉产生的后代数与种群中个体数的比显然,较高的交叉率将达到更大的解空间,从而减小停止在非最优解上的机会;但是交叉率太高,会因过多搜索不必要的解空间而耗费大量的计算时间变异是在染色体上自发的产生随机的变化一个简单的变异方式是替换一个或者多个基因在遗传算法中,变异可以提供初始种群中不含有的基因,或者找到选择过程中丢失的基因,为种群提供新的内容染色体是否进行变异有变异率来进行控制变异率(记为Pm)定义为种群中变异基因数在总基因数中百分比若变异率太低,一些有用的基因就难以进入选择;若太高,即随机的变化太多那么后代就可能失去从双亲继承下来的好特性八皇后问题用遗传算法解决36、SBSE的优点:可扩展的;见识丰富的;稳健的;通用的;现实的37、变异测试:变异测试(有时也叫做"编译分析")是一种在细节方面改进程序源代码的这些所谓的变异,是基于良好定义的变异操作,这些操作或者是模拟典型应用错误(例如:使用错误的操作符或者名字),或者是强制产生有效地测试(例如使得每个都等于0)目的是帮助测试者发现有效地测试,或者定位测试数据的弱点,或者是在执行中很少(或从不)使用的代码的弱点变异测试步骤:1)产生突变;2)对测试集T执行突变体;3)产生测试用例来杀死这个突变38、软件重用:是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程软件元素包括程序代码、、设计文档、设计过程、需要分析文档甚至领域知识通常,可重用的元素也称作,可重用的软构件越大,重用的粒度越大软件重用的优缺点:优点:1)增加可靠性; 2)减少过程风险 ; 3)有效的利用专家资源; 4)标准的兼容性; 5)加快系统生产和发展;缺点:1)增加了维护成本;2)缺少工具支持;3)"非我发明"症;4)需要创建和维护一个组件库;5)需要发现、理解和适应可重用的组件39、基于构件的软件工程:是一种软件开发范型强调使用可复用的软件"构件"来设计和构造基于计算机的系统的过程一个组件是一个独立的可执行实体,可以组成一个或者多个可执行对象基于构件的软件工程开发流程:1) 开发概要性的需求;2) 组件搜索,然后对其修改;3) 按照可利用的功能修改需求;4) 再一次组件搜索,进一步变更需求;5) 结构设计;6) 识别候选组件;7) 组成组件创建系统构件具有以下三个角色之一:1) 控制构件:协调问题域中所有其他构件的调用;2) 问题域构件:完成部分或全部用户的需求;3) 基础设施构件:负责完成问题域中所需相关处理的功能40、面向服务的软件工程(SOA):面向服务的体系结构(SOA)是一种开发分布式系统的方法,分布式系统的系统组件是单机服务SOA优点:1)利用现有资产;2)更利于集成和管理复杂性;3)更多的响应和更快的上市时间;4)减少成本,增加重用41、 Web service:Web service是一个独立的,低耦合的,自包含的、基于可的web的应用程序,可使用开放的(下的一个子集)来、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的Web services = XML + transport protocol ( HTTP)Web services的关键标准:1) SOAP2) WSDL3) UDDI4) WS-BPEL42、Web services的关键特征:1)Web services是自包含的;2)Web services是自描述的;3)Web services是模块化的;4)Web services可以通过网络发布、定位和调用;5)Web services是语言独立的和互操作的;6)Web services本质上是开放的和基于标准的;7)Web services是动态的;8)Web services是组合的43:服务工程(Service engineering):是面向服务的应用程序重用的开发服务的过程,这种服务在面向服务的应用开发中是可复用的服务工程开发的流程:1)服务候选人识别(服务需求);2)服务设计(服务接口规范);3) 服务实现(验证和部署服务)44、服务测试:服务测试有助于证明一个系统满足它的功能性和非功能性需求,且可检测在开发过程中所导入的缺陷45、横切关注点:指的是一些具有横越多个的行为,使用传统的不能够达到有效的模块化的一类特殊横切关注点的成本:降低可理解性;适应能力下降;可重用性降低;可维护性降低46、面向方面的软件工程: (也叫面向切面的软件工程),是目前软件开发中的一个热点利用AOSE可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率AOSE的优点:1)横切关注点;通过显式的考虑横切关注点提供更好的关注点分离;2)提高模块化;3)系统容易扩展;4)更好的代码重用性;5)代码集中易于理解,提高可理解性;6)更好的代码适应性和可维护性
0 评论