AOSD培训资料教学课件_第1页
AOSD培训资料教学课件_第2页
AOSD培训资料教学课件_第3页
AOSD培训资料教学课件_第4页
AOSD培训资料教学课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

AOSD培训资料6、法律的基础有两个,而且只有两个……公平和实用。——伯克7、有两种和平的暴力,那就是法律和礼节。——歌德8、法律就是秩序,有好的法律才有好的秩序。——亚里士多德9、上帝把法律和公平凑合在一起,可是人类却把它拆开。——查·科尔顿10、一切法律都是无用的,因为好人用不着它们,而坏人又不会因为它们而变得规矩起来。——德谟耶克斯AOSD培训资料AOSD培训资料6、法律的基础有两个,而且只有两个……公平和实用。——伯克7、有两种和平的暴力,那就是法律和礼节。——歌德8、法律就是秩序,有好的法律才有好的秩序。——亚里士多德9、上帝把法律和公平凑合在一起,可是人类却把它拆开。——查·科尔顿10、一切法律都是无用的,因为好人用不着它们,而坏人又不会因为它们而变得规矩起来。——德谟耶克斯CSAI华东区首席顾问

徐锋面向方面的软件开发方法Agenda面向对象开发技术与开发范型变迁横切关注点横切关注点的建模与分离弹性体系结构演变AOSD的应用面向对象开发技术的历史变迁面向对象程序设计面向对象设计面向对象分析面向对象程序语言1980196019701990LispSimula67SmallTalk72SmallTalk80CObjective-CC++Java1970年1990年年面向对象编程开启了面向对象发展之门。而面向对象分析、设计方法才是OO思想的真正标志。面向对象开发技术的今天—核心基础核心基础:组件技术、UML建模技术组件技术:大型项目与系统的必由之路

需要支持多平台:SOA、ESB—连接组件

拥有大量组件:重用、MDA—快速、廉价集成组件

响应日益复杂的业务操作:EA(连通软件与业务的鸿沟)、PLE(处理产品线可变性)、反向工程(重用遗留系统)

框架:J2EE、.NET等独立与厂商的组件描述语言--UML显然仅有组件和UML是不够的,因为我们还需要知道如何捕获组件!--答案就是最佳实践:

迭代开发

体系结构为中心

用例驱动面向对象开发技术的今天—最佳实践最佳实践1—迭代开发最佳实践2—用例驱动最佳实践3—体系结构为中心Agenda面向对象开发技术与开发范型变迁横切关注点横切关注点的建模与分离弹性体系结构演变AOSD的应用横切关注点1—扩展嗯,一切似乎很完美。是什么打破了这一宁静?横切关注点是打乱这一规则的“破坏分子”!横切关注点包括两类:

扩展:在基组件之上定义的组件,它用来表示附加的服务或功能非功能属性--AOP原先的发现

对等关注点:相互独立的功能点,各组件中参与类有较大的交叠缠绕与分散--Ivar博士的补充发现弥补用例分析与实现的鸿沟横切关注点1—扩展AOP就是基于对非功能属性实现中发现的“重复”。例如:留存、事务处理、安全、性能优化、错误处理、日志、调试、度量等。横切关注点2—对等关注点各个组件包含满足不同关注点的实现—缠绕状态某个特定的关注点的实现分散在多个组件中—分散状态横切关注点现行实行的不足横切关注点1—扩展

代码的大量重复,涉及到多个功能性类

当横切关注点的需求发生变化时,会造成大量修改

横切关注点的更新难以实现一致性横切关注点2—对等功能点

捕获对等功能点的用例本身就涉及了多个类,容易使分析与设计的结果不能够有效地对应起来,影响了跟踪

功能的修改,可能涉及多个类,从而影响系统的弹性

原有的用例建模在管理横切关注点时存在问题面向方面技术本质:合成机制,分离横切关注点的方法

可以实现将类之外的附加行为合并到类本身

可以在编译时或运行时进行

可以将不同的关注点的实现分离到不同模块中核心概念

aspect:核心类元,模块化单元

intertype:aspect的方法,定义为“原有类名.新操作名”--类扩展pointcut:在aspect中说明原有类中的扩展点(连接点)--操作扩展

advice:捕获pointcut出现的特定事件 --操作扩展Agenda面向对象开发技术与开发范型变迁横切关注点横切关注点的建模与分离弹性体系结构演变AOSD的应用基于用例对横切关注点建模用例是对横切关注点建模的最好工具用例描述的关键是事件流用例扩展:pointcut基于用例对横切关注点建模用例包含:用例泛化:基于用例捕获横切关注点应用(application)用例和基础结构(infrastructure)用例理解涉众关注点

理解问题域(领域类,领域模型)

抽取系统特性(FeatureList)

处理功能和非功能需求(应用用例、基础结构用例)捕获应用用例

从特性中识别出参与者,合并为用例

识别用例变量,并处理用例变量

处理扩展用例捕获基础结构用例

抽象为<执行事务>用例对基本事务进行建模

基础结构用例的结构化、描述基础结构用例处理系统范围的关注点用例切片用例的实现是协作:协作标识了类及类的扩展用例切片包括:协作(交互图、类图)、特定的类、特定的扩展基于用例切片实现分离合并特定于某用例的类:合并用例特定的类扩展:基于用例切片组成系统通过用例切片(usecaseslice)和非特定用例切片(non-uc-specificslice)来叠加出系统:用例模块对于某个用例而言,都包括不同的模型(用例描述、分析、设计、实现、测试设计、测试实现),每个模型都可以组成一个切片,而将这些切片放在一个单独的包中,就称为用例模块Agenda面向对象开发技术与开发范型变迁横切关注点横切关注点的建模与分离弹性体系结构演变AOSD的应用架构(Architecture)什么是架构(体系结构)?

系统元素如何组织?

系统如何实现所需功能?

系统如何满足预期性能、可靠性和其它质量特性

系统需要什么技术?

系统内部组织的结构是否能够弹性响应功能、技术、平台变化?

标准是否能够确保系统开发始终保持一致?采用什么设计模式?什么是好的架构

分离功能需求

从功能需求中分离出非功能需求

分离平台特性

将测试从已测单元中分离出来架构基线架构基线:最终系统的早期版本,SkinnySystem!

包含了最终系统所具有的子系统、组件和节点的骨架

UP过程中,这一任务主要是在精化阶段完成用例驱动架构基线:寻找出关键用例子集

演练了系统的关键功能和特性

涵盖了大部分的功能性、基础结构、平台特性等方面的风险

突出了系统中的一些具有高复杂度或高风险性的部分

是系统剩余系统的基础迭代地建立架构基线平台无关的结构(PIM)元素结构:基于包和类的分层结构

组成部分主要是领域相关的类

通常包括“应用层”和“领域层”

应用层的元素主要实现用中支持系统的主要参与者的工作流

领域层则要包括了描述重要领域概念的元素用例结构:在元素结构的基础上添加了实际的内容叠加平台相关特性(PSM)选择平台

系统的平台特性基于架构师选定的部署结构和进程结构

我们需要将平台特性与平台无关的部分分离—最小化用例设计最小化用例设计(minimaluse-casedesign)

可执行,并采用默认编程语言实现

是通过程序接口来激活的

分布性、内部进程的通信和平台相关消息通信都与其分离

所需的信息都在内存中使功能需求保持分离1分离功能需求的最好办法是用例(应用用例)

什么是特定于某用例的、什么是独立于用例的,什么是特定于某应用的、什么是应用通用的,什么是领域通用的、什么是领域特定的。

这些问题的答案用于指导:如何将类归入到层、包,如果将类扩展归入到相应的切片、模型中应用用例的分析

考虑用例规约,必要时进行更新

分析用例:识别出参与用例实现的分析类,并将行为分配给这些类

在系统元素结构中将类组织成为层和包,在用例结构中将类和类扩展组织成切片

将分析元素映射为设计元素、识别出接口及附加的设计元素使功能需求在分析模型中保持独立根据类参与实现的用例,形成合适的元素结构

将用例结构分为:针对某个特定用例行为的“用例切片”,不属于特定的某个用例的“非用例特定切片”使功能需求保持分离2应用用例设计

识别设计元素:从分析模型中标识设计元素,根据实现需要引入新的设计元素

识别组件和接口:将分析为中的一部分演化为设计组件

完善设计元素使功能需求在设计模型中保持独立使类扩展保持分离:ReserveRoom类需要updateAvailability()和retrieveDetails()两个方法。前者是“预订房间”特用,后者是公用。其处理方法有四种:

现行选择编程困难使功能需求保持分离3使功能需求在设计模型中保持独立使操作扩展保持独立

1)总和:两个用例切片需要从相同操作得到不同的输出,并且操作的职责是提供两种输出的合并2)选择:当用例切片需要从同一个操作得到不同的输出,并且要求组合结果只有一种输出操作扩展声明包括

1)结构上下文:说明哪个操作是要增加的

2)行为上下文:说明扩展何时执行

3)说明附加行为使扩展的功能需求保持分离1面向方面技术能够使我们更好地在原有系统上进行扩展

该扩展流程应该在pointcut

UpdatingRoomAvailability返回没有空闲房时

系统建立一个针对选定房间类型的带唯一标识符的待处理订单,然后将其放到等候列表中,再将此唯一标识符返回给客户,用例结束。识别类:使扩展的功能需求保持分离2识别Pointcut,并将用例行为分配给类标识结构上下文:确定在何处运行这些操作扩展来调用扩展用例标识行为上下文:定义职责中的何处需要调用使扩展的功能需求保持分离3因此,得到了一个独立的用例切片完成该扩展用例使非功能需求保持分离1分离非功能需求最有效的工具是基础结构应用

识别类

标识Pointcut

将用例行为分配给类使非功能需求保持分离2使基础结构用例保持分离

细化元素结构

在用例切片中使基础结构保持分离使平台特性保持分离最小设计视角合并了平台特性Agenda面向对象开发技术与开发范型变迁横切关注点横切关注点的建模与分离弹性体系结构演变AOSD的应用保持关注点分离带来的生产率提高假设某系统有N个独立的需求,假设每个的工作量需X,则总工作量就是NX若N个需求未良好分离,就意味着每个需求的实现与其它需求的实现相互交迭,最坏时可能是每个需求的实现与N-1个需求相关,如果交迭部分的开发量是Y,则任务量就成了NX+N(N-1)Y假设N=20,X=20,Y=1,良好分离时工作量为400,未良好分离时显然就是780,接近一倍。随着Y值的增加,未良好分离的体系结构就会带来越大的成本。

从何处入手用例建模与分析:对涉众关注点捕获的正确性和精确性是十分重要的。用例建模与分析适用于任何软件开发,不管是面向方面、面向对象还是其它的。建议针对基础结构服务编写用例。建议多练习,编写出客户和开发团队都易于理

温馨提示

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

评论

0/150

提交评论