void moveMone y (Account from, Account to, float amount) {if (!getRequestingUser().isAuthorized(OPERATION_WITHDRAW)) { throw new SecurityException(MSG_NO_RIGHT_WITHDRAW_MONEY)}Transaction trn = database.startTransaction();try { from.withdraw ( amount); to.deposit ( amount); trn.commit; logger.logOperation(OPERATION_WITHDRAW, from, to, amount);} catch (DatabaseException e) { trn.rollback();} |
pointcut RUP_Element_set processExtension(): trigger (RUP_Element_Template), where: | |
processExtension() | 横切点名称 |
RUP_Element | 来自 RUP 元模型的一个元素 |
RUP_Element_set | RUP_Element 元素的集合 |
pointcutName | 任意的横切点名称 |
trigger | 横切点指定者 |
RUP_Element_Trmplate | 过程元素模板 |
概念 | 实现 |
Concern(关注点) | <定义一个关注。一个关注就是一个简单的过程扩展用例,例如“A RUP PM Role has inadequate responsibilities”、“A program director wants tighter control over projects”或者“Insufficient vendor communication” > <提供一个对关注和被提议的解决方案的简短的描述 > |
Join Point(连接点)(s) | <提供一个对新的或者更新的过程元素横切过程情况的简要总结 > <提供一个连接点的列表 > |
Pointcut(衡切点)(可选) | <使用过程横切点定义语法来定义合并连接点的横切点 > |
Aspect(方面) | <勾画一种在 RMC 中分组过程方面的方法。该方法通常将使用一种 RUP/RMC 扩展技术(更多详细内容请参见本文后面的“RMC 过程扩展”小节 > < 提供关于 RMC 方法的包装元素,这些元素包含方面的实现 > |
Advice(建议) | <选项一:撰写方面的完整实现。如果需要更强大的实现工具,就要以本地格式有效的链接到文档 > <选项二:提供一个方面实现的轮廓。简要的描述新的和扩展的内容元素。方面的详细实现将被延期到 RMC > <选项三:在 RMC 中提供到方面实现的 URL > |
Employer |
+ updateEmployerFinancialBankAccount() + updateEmployerFinancialPaymentMethod() + updateEmployerFinancialRateGroup() + updateEmployerGeneralCount() + updateEmployerGeneralAddress() + updateEmployerGeneralStatus() ... |
pointcut employerFinancialUpdates(Employer e, User u): call (public void updateEmployerFinancial* ()); |
横切点 RUP_Element.BasicMethodElement.Task_set outputArtifactIsIterationPlan () : output_is (RUP_Element.BasicMethodElement.WorkProduct.rup_iteration_plan) |
public aspect logTransaction{pointcut employeeFinanceUpdates(Employer e, User u) : call(public void updateEmployerFinancials* ()) & args(e, u); after (Employer e) returning : employerFinanceUpdates(e, u) {< Advice >} } |
System.out.println("\t>User : " +u.getFullUserName() + " has m ade a financial transaction through "); System.out.println("\t>method " + thisJoinPoint.getSignature());|-------10--------20--------30--------40--------50--------60--------70--------80--------9||-------- XML error: The previous line is longer than the max of 90 characters ---------| |
概念 | 实现 |
关注点 | 迭代报告给一个项目发起人 问题是: 项目发起人希望牢牢控制项目的进展和实现。 需要是: 一旦项目的迭代结束,项目就必须向项目发起人交付一份操作实现和技术风险处理的总结报告。 解决方案是: 迭代将产生一个新的被称作 Iteration Report 的文档。该文档将会在一个迭代的最终任务中由项目管理者创建。 |
连接点 | 扩展必须被用于所有的项目迭代中,包括启始、精化、构建和产品化中的迭代。由于每一次迭代的交付都是不同的,所以目标就是将过程任务看作是所有迭代一样的,并且 Project Manager 是同一个 Primary Performer。 Iteration Report 产品将会由位于 Manage Iteration 活动中的 Assess Results 任务生产出来。尽管该任务已经输出了 Iteration Assessment 和 Status Assessment 产品,但是这些并没有完全满足涉众的需要,也没有能够在不影响他们定义的消费者的前提下进行修改。Iteration Report 产品将主要处理若干独特的方面,并且将包含关于该项目的敏感的信息,而现已存在的的产品将仍然扮演内部项目交付的角色。 |
横切点(可选) | pointcut RUP_Element.BasicMethodElment.Task_set createIterationReport(): final_task (RUP_Element.ProcessElement.Iteration.*) 这一横切点引用了一组 RUP_Elements(任务),它们是各自迭代中的最终任务。 |
方面 |
|
建议 | 迭代报告(新的产品模板)
|
概念 | 实现 |
关注 | 同项目涉众(供应商)进行适时的合作。 问题是: 缺乏同供应商之间适时的协作导致增加项目开支。 需要是: 大多数重要项目产品的改变必须迅速同参与项目的供应商进行沟通。 解决方案是: 将 Software Architecture 文档、Software Requirements 规范以及 Software Development 计划的所有改变通知供应商。当这些产品中的任何一个发生改变时,通过电子邮件立即通知供应商。询问他们的反应,然后作出相应的操作。 |
连接点 | 为了对这三种产品的改变作出反应,任务生产就必须被扩展。下列任务创建或者修改了上面提到的产品: 对于 Software Architecture 文档来说:
上面列出的任务创建或者更新了 Summary of Changes _ <产品> _ <日期> (新的产品),此处 <产品> 就是被更新的工作产品的一个名称,<日期> 就是当前的日期。被称作 Notify Vendor By E-mail and Receive and Communicate Vendor Acknowledgment 的新的步骤将被添加到任务中,以便生产所需要的产品。上一个步骤将包含同供应商沟通的指示。下一个步骤将包含顺应供应商反应的处理程序。 |
横切点 (可选) | pointcut RUP_Element.BasicMethodElement.Task_set notifyVendorOfChangesByEmail(): where_used (RUP_Element.BasicMethodElement.Artifact. rup_software_architecture_document) pointcut RUP_Element.BasicMethodElement.Task_set notifyVendorOfChangesByEmail(): where_used (RUP_Element.BasicMethodElement.Artifact. rup_requirements_specification) pointcut RUP_Element.BasicMethodElement.Task_set notifyVendorOfChangesByEmail(): where_used (RUP_Element.BasicMethodElement.Artifact. rup_software_development_plan) |
方面 |
该方面将被保存在 extended_org_rup_content 内容包中。 |
建议 | 被影响部分的变更总结 <产品> <日期>(新的产品模板) 指定了被改变所影响的原始档案 老内容 提供了修改之前的内容的备份 新内容 提供了新内容的备份 供应商注释 供应商将在此处提供反馈意见 通过邮件通知供应商(新的步骤描述)<在此处提供步骤描述> 沟通并协调供应商反馈(新的步骤描述)<在此处提供步骤描述> |
概念 | 实现 |
关注点 | Software Architecture Document 并没有完全符合公司现已存在的标准。 问题是: 现已存在的公司标准要求 Architecture Blueprint 由所有实现项目生产。公司必须同其以前的项目中所使用的产品格式相匹配。另外,要进行分析和设计的话,这个格式还要包括管理、业务分析和项目管理等方面。 解决方案是: 使 Software Architecture 文档的结构符合现已存在的公司标准。将现已存在的 Software Architecture 文档产品重新命名为 Architecture Blueprint。 |
连接点 | Software Architecture Document 是中心产品,它被 RUP 生命周期期间的多个任务进行更新和消费。被引介的关注可能通过在交付过程中置换产品定义而不是产品用法被解决。 Software Architecture Document 将被 Application Blueprint 文档置换,使用 Replace 可变性模型允许在交付过程中保留文档的用法。Application Blueprint 文档将被赋予一个全新的结构,它既包括新的部分,也包括基本 RUP 中的部分。 |
横切点(可选) | RUP_Element.BasicMethodElement.Artifact_set replaceSoftwareArchitectureDocument(): where_declared rup_software_architecture_document |
方面 |
|
建议 | Architecture Blueprint <提供文档的描述> |
![]() | ||
![]() | ![]() | Vitalie Temnenco 是 Sierra Systems Inc 的软件架构师。在那他为 Sierra 的客户提供技术和方法论方面的顾问服务。之前,他是加拿大政府工作场所安全和保障委员会的架构师,在那,他为实施项目提供架构监督,并帮助团队从事 RUP 和企业架构概念。他的经验包括在各种业务领域为客户架构并构建解决方案,例如,银行,金融,保险,零售和电信。他也为业务和系统分析人员教授 UML 和 RUP 。您可以通过 vit@umlconsulting.com 联系他。 |
欢迎光临 思步网 (http://step365.com/) | Powered by Discuz! X3.2 |