软件工程-期末复习笔记_第1页
软件工程-期末复习笔记_第2页
软件工程-期末复习笔记_第3页
软件工程-期末复习笔记_第4页
软件工程-期末复习笔记_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程期末复习笔记胡丹一基本概念什么是软件工程?答:见作业什么是参与者,角色?答:所有参与到软件项目中的人员称为参与者。把项目或系统的一组职责称为角色。一个角色与一组任务联系在一起,且被派给一个参与者。一个参与者能充当多个角色。3.系统和模型。系统指内部关联部分的集合。模型指系统的任何抽象。4.软件工程开发活动:开发活动通过构造和验证应用域模型或系统模型处理复杂性问题,开发活动包括:需求获取、分析、系统设计、对象设计、实现、测试。二.基本概念(2)1.系统开发的主要内容集中在系统的3个不同模型上:功能模型,在MUL中,使用用例图表示功能模型,以从用户观点描述系统功能。对象模型,在MUL中,使

2、用类图表示对象模型,使用对象、属性、关联和操作来描述系统的结构。动态模型,在UML中,使用交互图、状态图和活动图表示动态模型,以描述系统的内部行为。2.用例模型(功能模型) 2.1用例模型=用例文档+用例图 2.2用例间的关系:用例之间的关系关联(association )、包含(include)、扩展(extend)和泛化(generalization)这几种关系。关系关联(association ):通信1.表示参与者用例之间进行通信。 不同的参与者可以访问相同的用例。包含(include):把它所包含的用例行为作为自身行为的一部分。扩展(extend):扩展用例被定义为基础用例的增量扩展

3、。基础用例提供扩展点以添加新的行为。扩展用例提供插入片段以插入到基础用例的扩展点上泛化(generalization):继承2.3 用例文档包括的内容:1.用例名。2.范围。3.级别。4.主要参与者。5.涉众及其关注点。6.前置条件7.后置条件8.主事件流9.备用事件流。类图(对象模型)3.1类是面向对象系统组织结构的核心。对一组具有相同属性、操作、关系和语义的对象的抽象。包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。3.2类之间的关系 1.依赖关系2.泛化关系3.关联关系4.实现关系1.依赖关系表示两个或多个模型元素之间语义上的关系。例如:客户以某

4、种形式依赖于提供者。关联、实现和泛化都是依赖关系。 2.泛化关系描述了一种“is a kind of” 的关系。3.关联关系包括:名称(Name)角色(Role)多重性(Multiplicity)一对一,一对多,多对多。聚合关系(Aggregation)(一个类由多个类组成,has a关系)组合关系(Composition)聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。成员对象的生命周期取决于聚合的生命周期。聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构导航性(Navigation)4.实现关系4.时序图(同一个用例中的变迁)表示单一用例间的一组对象之间的交互强调消息时

5、间顺序的交互图。时序图描述了对象之间传送消息的时间顺序,用来表示用例中的行为顺序。5.状态图状态图表示了单一对象(或者是一组连接非常紧密的对象)的行为。,是一个对象的状态的变迁。三项目组织和沟通一个项目的沟通涉及计划内沟通和计划外沟通,其中计划内沟通包括:1问题检查。2现状通报会议。3通报情况会议。4客户和项目检查。5发布。计划外沟通包括:1澄清需求(需求澄清是指澄清有关任何使得系统看上去存在二义性的内容)2变化需求。(需求变化指参与者报告问题或者是提出解决方案。)3问题解决。(提出问题,找到问题解决方案评审并上报后,选择一个解决方案,并进行必要的沟通和实现。)四需求获取1.需求工程的目标是定

6、义所构造系统的需求。需求工程包括两个主要活动:第一,需求获取,导出用户可理解的系统规格说明;第二,分析,其结论是给出开发者无二义理解的模型2.需求获取需求获取包括以下活动:标识参与者 标识出未来系统将支持的不同用户类型。(自然人,软/硬件实体)标识场景 对未来系统的典型功能用一组带有细节的场景来描述。(使用某一功能的具体过程)标识用例 从场景中抽象出用例。求精用例 细化每一个用例和描述面临错误和异常条件时系统行为。标识用例之间关系 标识出用例之间的依赖关系。标识初始分析对象 建立用例的术语表标识非功能性需求 如:性能上约束、文档、资源、安全性、质量等。3.绿地工程 没有现存系统存在,开发过程从

7、草稿开始,需求从用户和客户出提取。再工程 对一个现存系统的再设计和再实现。界面工程 对一个现存系统的用户界面的再设计。五分析(建模)1.分析关注系统模型的产生,这一模型称为分析模型,该模型必须正确、完全、一致和可确认。分析模型由三个独立模型构成:通过用例和场景表示的功能模型。通过类和对象图表示的分析对象模型。通过状态图和顺序图表示的动态模型。 实体对象表示系统将跟踪的持久性信息。边界对象表示参与者与系统之间的交互。控制对象负责用例实现。分析活动3.1标识实体对象3.2 标识边界对象3.3 标识控制对象3.4 使用顺序图将用例映射成对象3.5 使用CRC卡建模的对象之间的交互3.6 标识关联(类

8、与类之间的关系)3.7 标识聚集(表示整体部分的关系,用钻石符号,实心钻石符号表示组合聚集,部分的存在依赖于整体,空心钻石表示共享聚集,部分和整体可以独立的存在)3.8 标识属性3.9 建模单一对象状态相关的行为(方法)3.10 建模对象之间的继承关系(用空心箭头指向父类)六系统设计:分解系统1.系统设计是将系统分析模型变换到系统设计模型。系统设计后,得到的是一个包括子系统分解和每个策略的清晰描述模型。2.系统设计包括活动:标识系统目标。开发者标识并区分应进行优化的各种系统属性的优先次序。(可靠性。容错性。安全性。可修改性)设计初始子系统分解。根据用例和分析模型,开发者将系统分解成一些小的部分

9、。分解求精子系统以对应设计目标。初始的分解大多不能满足所有的设计目标。开发者必须不断分解求精,直到所有的设计目标都被满足为止。3.耦合 用于度量子系统之间的依赖程度。内聚 用于度量子系统中类之间的依赖程度。(耦合度越小越好,内聚越大越好)。分层 将系统看成是由多个子系统按一定层次组织起来的,每一层通过使用低层子系统服务,为上一层的子系统提供服务(层是有序的)。划分 是将多个子系统组合成多个对等的实体,这些对等实体相互提供服务。4.体系结构系统设计(选择设计目标)1 将子系统映射到处理器和构件,选择硬件配置与平台2 标识并存储持久性数据2.1标识持久性数据,我们可以通过检查所有在系统关闭之后必须

10、保存的类,来标识持久性对象。长期储存的2.2选择存储管理策略,有三种选择来进行存储管理:平面文件。这种文件是由操作系统提供的存储对象。关系数据库。数据按照预先定义好的模式类型存储在表中。表中的每一列代表一个属性。每一行代表一个属性元组值的数据项。个别对象的属性,则用不同表中的元组来展示。面向对象数据库。以对象和关联的方式来存储数据。出了提供一个上层抽象外,面向对象数据库为开发者提供了继承和抽象类型。3 提供访问控制,访问权限4 设计全局控制流有3种可能的控制流机制:过程驱动的控制。例如,一个操作需要从一个参数那里获得数据,该操作不得不等待这些数据的输入。事件驱动的控制。一个主循环等待一个外部事

11、件。线程。线程是过程驱动控制的并发单元。5 标识边界条件5.1边界条件标识 决定系统如何启动,如何初始化和如何关闭,同时还需要定义在数据发生故障和网路断开等情况下,如何处理失败。我们把负责处理这些条件的用例称为边界用例。边界用例有哪些:配置。对每一个持久性对象,我们应该检查持久性对象在哪个用例中被创建、撤销(存档)。启动与关闭。对每一个构件,我们增加3个用例来启动、关闭和配置构件。异常处理。对于每一个类型的构件失败,系统如何进行反应,由开发者决定。通过使用异常用例,对这些决定进行文档化,这些异常用例是通过对在需求过程中标识的一般用例进行扩展而得到。5.2一般来说,一个异常是在系统执行过程中发生

12、的一个事件或者错误。导致异常的不同原因主要有三个:硬件失败。硬件老化和失败。操作环境改变。如果超出了发射器范围,无线移动系统就会失去连接。软件失败。 异常处理是系统对异常所做出的反应机制。对象设计:复用模式解决办法1.对象设计包括:重用(Reuse),标识商业外购构件和设计模式以利用已有的解决方法。(复用别人的额,和把自己的做好的东西为他人复用而做准备)(第八章)服务规格说明(Server Specification),在这个过程中,精确地描述每一个类接口。(第九章)对象模型重构(Object Model Restructuring),改进对象设计模型,提高该模型的可读性和扩展性。对象模型优化

13、(Object Model Optimization),改进对象设计模型来标识性能标准,例如系统的响应时间和存储空间利用率等。说明继承,即接口继承,只继承签名,没有继承任何实现代码。实现继承,子类继承基类所有成员函数和字段。授权,一种可供选择的实现继承的办法,授权不干涉现存构件且会产生更健壮的代码。5.Liskov替换准则,Liskov替换准则能够为接口的规格说明提供一个形式化的描述。它的本质是,如果客户代码使用了由某个父类提供的方法,那么开发者就能够新增子类而不用对代码做任何改变(子类型必须能替换它们的基类型。)设计模式(是开发者通过长时间地求精,从而得到的解决重复出现问题的模板化解决方案)

14、6.1一个设计模型包括4个要素:Name(名字),用来将一个设计模式与其他设计模式区别开。Problem description(问题描述),用来描述该设计模式适用于何种情况。Solution(解决方案),描述了解决该问题需要的、结合在一起的类和接口的集合。Consequences(结果),描述了将要解决设计目标的协议和可供选择的办法。6.2设计模式中出现的不同类:客户类(Client Class),用来访问模式。模式接口(Pattern Interface),模式接口是模式中对客户可见的部分。实现类(Implementor Class),该类实现了模式中较低层次的类。扩展类(Extender

15、 Class),扩展类是指为了实现一个不同操作,或者是实现模式的一个扩展活动而将一个实现类特殊化。常见的设计模式桥梁模式原理(详见作业)9.九对象设计:说明接口(接口:操作)1 类实现者、类扩展者和类使用者类实现者(class implementor)负责实现待实现的类。类使用者(class user)在其它类的实现过程中,调用由待实现类所提供的操作,这个类成为客户类。类扩展者(class extender)开发待实现类的特定扩展。2 类型、签名和可见性类型:说明了属性的取值范围,以及该属性能够进行的操作。签名:给定一个操作,由参数类型和返回值类型构成的元组,称为操作的签名。可见性:一个操作或

16、属性的可见性,是指说明该属性或操作是否能被其它类使用的一种机制。UML定义了可见性的3种级别:私有属性或操作:私有属性仅能被定义它的类访问。私有操作仅能被定义它的类调用。保护属性或操作:保护属性或操作能够被定义它的类或者是子类访问。公有属性或操作:公有属性或者操作能够被所有的类访问。在UML中,可见性是通过在属性或操作的名字前面加一个前缀来表示:表示私有,#表示保护,+表示共有。3 契约:不变式、前置条件和后置条件契约就是在一个类上定义的,确保有关该类的类实现者、类使用者、类扩展者都要遵循的假设条件。契约包括3种类型的约束:不变式:不变式是一个对该类的所有实例而言都为真的谓词。不变式是和类或接

17、口有关的约束。前置条件:前置条件是在调用一个操作之前,必须为真的谓词。前置条件用来说明类使用者在调用一个操作之前必须满足的约束。后置条件:后置条件是在调用一个操作之后必须为真的谓词。后置条件用来说明类实现者和类扩展者在调用一个操作之后必须满足的约束。接口规格说明包括的活动1 标识遗漏的属性和操作在这一步中,检查子系统提供服务的描述,并且标识遗漏的属性及操作。2说明类型、签名和可见性本节讨论属性类型、操作签名以及属性和操作的可见性。说明类型可以从两个方面对对象设计模型进行求精。3 说明前置条件和后置条件 为每个类的所用公有操作定义契约。契约就是存在于类使用者和类实现者之间的一个协议。一个操作的前

18、置条件,描述了类使用者必须遵守的那部分契约;后置条件描述了类实现者在类使用者满足其所遵守的那部分契约后,类实现者应该保证契约得到满足。4.说明不变式不变式提供一个对类的基本属性的综述。不变式组成了一个能够扩展和重写特定操作的持久性契约。5 继承契约一个类可以被它的任何派生类所替换。契约可以通过下列方式来实现继承:前置条件(Precondition):子类的方法可以弱化加在它所重写方法上的前置条件。换句话说,一个重写方法能比它的超类解决更多的问题。后置条件(Postcondition):方法必须确保子类有和超类一样的后置条件,或者有更加严格的后置条件。不变式(Invariant):一个子类必须遵

19、守其超类的所有不变式。但是,一个子类可以增强它所继承的不变式。将模型映射到代码1.正向工程 产生与对象模型对应的源代码模板。正向工程应用于对象元素集合,并产生其对应的源代码语句集合。正向工程的目的是保持对象设计模型与代码间的高度一致,并减少实现期间引入的错误数,从而减少实现部分的工作量。逆向工程 产生与源代码对应的模型。逆向工程应用于源代码元素集合,并产生模型元素集合。这类转换用于为现存系统重构模型,由于已经丢失该系统的模型,或从未构件,或其模型与源代码不一致。2.映射活动包括1 优化对象设计模型2 将关联映射到集合3 将契约映射到异常4 将对象模型映射到持久存储模式3.优化对象设计模型:优化

20、访问路进关联的重复遍历关联“多”的一端错误放置的属性压缩对象:将对象变为属性延迟高成本计算并暂存高成本计算结果将关联映射到集合单向一对一关联双向一对一关联一对多关联多对多关联受限关联 受限关联用于减少一对多或多对多关联中“多”的一端的多重性。关联限定词是与关联“多”的一端相连类的一个属性。关联类使用一个关联类来保存关联的属性和操作。5.将契约映射到异常6.将对象模型映射到持久存储模式6.1映射类和属性类表类名表名属性字段(列名)类实例记录(数据记录)边界对象的控制对象不用映射,只映射实体对象6.2映射关联一对一使用外关键字实现成隐含关联一对多多对多独立数据表6.3映射继承垂直映射:每一个类通过

21、一个表来表示,并使用一个外键来连接子类和超类表。水平映射:超类属性被推至子类中,本质上是复制与子类相对应的表的列。十一测试测试是寻找系统模型中有明确期望的行为与已经实现的系统中观察到的行为之间差异的过程。单元测试用于寻找对象设计模型和其对应构件之间的差异。结构测试用于寻找系统设计模型和一个集成子系统的子集之间的差异。功能测试用于寻找用例模型和系统之间的差异。性能测试用于发现在非功能要求和真实系统之间的差异。术语可靠性是观测系统行为是否同规格说明行为一致的成功标准。软件可靠性是软件系统在特定条件和特定时间下,不会导致系统失败的可能性。失败是指对规格说明指定的观察行为而言,实际行为的偏差。出错状态

22、(也称为错误)代表一种系统进一步执行就会导致失败的状态,在这一状态上,将引起系统偏离预期的行为。构件 是系统中可以单独测试的部分。故障 也被称为缺陷或错误。是可能引起构件反常行为的设计或编码错误。测试用例 是一组输入数据和期望结果的集合。测试桩 是构件的部分实现,而代测构件依赖于这些构件测试驱动是一个构件的部分实现,它依赖于被测试构件。更正 是对构件的一个改变。3.测试用例是一组输入数据和期望结果的集合,测试用例是通过实验达到引起构件失败和发现构件故障的目的。一个测试用例有5个属性:名字(name),场所(location)、输入(input)、预期结果(oracle)以及日志(log)。测试用例分为黑盒测试和白盒测试。测试桩程序和测试驱动程序经常用来替换被测系统缺失的部分。测试驱动程序模拟了在测试过程中调用该构件的系统部分。测试驱动程序将测试用例分析中的确定输入数据,传给构件并

温馨提示

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

评论

0/150

提交评论