频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

帮您全面认识敏捷建模思想(7)

作者: Scott W. Ambler/林星 高继荣 编译 出处:计算机世界报 2008-03-21 14:56    砖    好    评论   进入论坛
阅读提示:本文系统地讲述了敏捷建模思想的精髓,希望大家仔细研读!

那么,当其上的一个或某些条件和你目前的情况有出入的时候,你该怎么办?试着去改变你目前的情况。缺乏AM的拥护者吗?那你自己就可以成为一个拥护者。不允许以迭代式和递增的方式工作,和你的老板们谈谈,让他们相信这是一种更好的工作方式,要求他们给你一个机会去证明。没有足够的资源?和你的头儿说明它们的重要性。如果你已经尽力改变了所有的情况,但是仍然还有一些条件是你无能为力的,你可以试试以下的选择:

部分的接受AM。你可以尽可能多的接受AM中的原则和实践,虽然你不会真正的实现AM,但你极有可能成为高效率的开发人员。一旦你的组织发现这确不失为一个软件开发的好方法,那就有可能会主动的去改变一些必需的要素,从而完全的接受AM。一言以蔽之,循序渐进的实现AM。

放弃让你的组织接受AM。从我个人的角度,我并不喜欢这种选择,但我不得不承认它是个正确的办法。现实就是这样,AM并不是适合每一个人的,也许你的组织确实是不适合接受AM的。

跳槽。看看外面的世界,还是有很多的组织期望能够从软件开发的竞赛中获胜,他们希望能有积极主动的软件开发人员加盟。

何时敏捷建模是不适合你的?

我猜想敏捷建模在遭遇如下的情形的时候你会陷入麻烦:

不满足以上列出的一个或多个条件。

你的组织文化适合采用传统的开发流程。许多组织对采用敏捷的软件开发方法毫无兴趣,他们对目前的状况感觉很好。这主要是那些政府部门、大型的公司(银行、保险公司、电信公司)以及专门为这些组织服务的咨询公司。这并不是说在这类组织中实施AM完全不可能,但要获得成功则要付出超乎寻常的努力才行。

你的团队很大,分布在各地。只有那些在同一个工作区域中相互协作的团队才能很好的进行敏捷建模的工作,特别是当开发人员在一个公共的工作室内合作的时候(通常我们称之为“tiger team”房间)。你可以尝试着在一个大型或分散的团队中应用敏捷方法,我在架构建模中讨论了这种情形,但你很快会发现你需要挑战这种方式带来的沟通问题。
我不同意将敏捷方法应用于性命攸关的系统上,例如航空管制系统或医疗监测系统,因为我并没有相关的项目经验,无法去研究AM应该怎样应用于这些系统。同样,我也没有嵌入式系统的相关经验,因此我也没有机会将AM技术应用于这种类型的项目。我很怀疑AM是否能够试用于嵌入式软件开发,这是我研究的一部分。我很期待你在敏捷建模的邮件列表中告诉我相关的经验。(详情请访问http://www.agilemodeling.com/feedback.htm

8、AM的实践是如何组合的

AM的实践之间是相互促进的,因为他们彼此支持,彼此激发。为了使AM更有效率的工作,你需要了解它的实践是如何组合的。图1显示了AM的实践之间的关系,它们被分为七类。AM的核心实践集中在头四种类别中-验证,迭代和递增,团队协作,和简单,你需要完全接受它们才能真正理解敏捷建模。然后,才轮到属于辅助实践的文档,动机,生产率这三个类别。我们先针对核心实践的四个类别,讨论各类中的实践之间的关系,然后我们再针对辅助实践的三个类别,研究各类中实践之间的关系,最后我们来讨论类别之间的关系。

图1:AM的实践是如何组合的

核心实践

在团队协作类别中有四项实践--stakeholder的积极参与,和他人一起建模,公开展示模型,和集体所有制。stakeholder的积极参与对你的成功至关重要,因为你正是为了这些project stakeholder开发系统,正是为了了解和实现他们的需求。换言之,你需要和你的甲方们密切合作,这就自然的想到了和他人一起建模--这个“他人”也包括你的stakeholder。当你的建模工作有多人参加时(至少一个project stakeholder和一个除你之外的开发人员),你就需要和众人共同协作,相互促进,取长补短。一个擅长于业务过程建模和业务规则定义的敏捷建模者看不到的方面,一个精通结构化建模技术(例如UML类图或数据模型)的人极有可能看得到。一样的道理,系统的直接用户给你的团队提供的信息极可能是高级经理提供不了的。所以,要有这样的观点:你要在项目甲方和开发团队中营造一种积极参与的氛围,只有这样,才能够收集各种不同的观点和经验。集体所有制能够提升协作性,因为一个人单独的进行建模的工作,他很快就会遇到瓶颈,而如果每个人都能够为建模工作献计献策,那么你们就能够成为一个团队,轻易的解决问题。公开展示模型能够使得人们对模型“瞻前顾后”变得容易了,能够立刻考虑模型传达的信息,从而提高团队的协作性。当然,我们是假设模型都在众人的视线之内,或者这些模型都是大家目前正在开发或相关的。这方面的主题我在Organizing an Agile Modeling Room中有详细的讨论。

迭代和递增类别中包括了使用合适的artifact,并行创建模型,切换到另外的artifact,小增量建模这几项实践。不论哪一个artifact,都有它的长处和短处,任何一个单独的模型都不足以充分的描述你的项目的各个主要方面(如需求、架构)。例如你会发现你为了识别系统的需求,常常需要组合使用用例、业务规则定义、和技术需求定义。单单靠用例就能令project stakeholder立马告诉你他们所有的使用需求吗?这恐怕不太可能。你可以试试换用诸如业务规则之类的artifact来捕获他们的所有业务政策,再换用诸如技术需求的artifact来捕获他们的非功能需求。否则,他们会想起点什么就告诉你什么,还会返回去讨论先前提过的细节,甚至是改变他们的原来的主意。你的需求识别工作通常是一个动态的过程,分析、架构、设计工作也是一样。 我相信物力论中指出了人们以此种方式思考的原因,我们思考的方式明显是杂乱的。敏捷建模者要认识到人们是以一种动态的方式在思考,特别是人们处于群体行为时,这样才能制定对策。敏捷建模者并行创建模型,从而能够最广泛的收集信息。这项实践又是由实践切换到另外的artifact和小增量建模来支持的--你可能正在使用用例来捕获使用需求的相关信息,而当stakeholder开始讨论他们对编辑屏幕的要求时,你最好是使用基本用户界面原型或是传统用户界面原型来记录这些需求。你需要在不同的artifact之间来来回回,每一个artifact最好都需要编码来验证,这种方式可以由小增量建模的实践来实现--最典型的方式就是在这个artifact上做一会儿工作,再换一个artifact,依此类推。

简单这个类别包括了创建简单的内容,简单地建模,使用最简单的工具这几项核心实践。创建简单的内容和简单地建模这两个实践集中于模型的简单性,在建模过程中这两项实践通产是密不可分的。把精力集中在如何简单描述,建模者常常会发现一些使得你手头的模型简单化的方法。举个例子,我曾经参加了一项存储层软件的开发工作,软件的概念类似于EJB的persistence container,封装了领域对象的一些存储操作。结果我们架构和设计非常的复杂,我们试着找到一种办法:建立一张简单的图表,帮助开发人员理解如何使用存储层来工作。其间我们还发现重构能够使我们的设计易于理解。实践使用最简单的工具能够使得过程变得简单。工具越简单就越容易使用,这就降低了他人在你的模型上工作的门槛,也就增加了实际中别人去这么做的机会,这也包括了你的project stakeholder。通过使用最简单的工具,简单描述模型也变得更自然了。此外,当你使用一些简单/低精度的工具,例如索引卡片,即时贴,白板的时候,你就能亲身体验这些简单工具的效力,你在不知不觉中已经强化了一些概念:最简单的解决方法实际上也能非常有效,对你正在开发的系统采用简单的设计。

验证类别包含了两个核心实践:测试性思维和用代码验证。有一条哲学,我常从中受益:“如果你无法测试它,你就不应该建立它,而你建立的一切都应该加以测试。”这使得我在系统建模时就考虑测试,也使得我积极的去获取我的模型的反馈--实际上,我把该条哲学归纳为“考虑你创建的所有artifact的可测试性,以及验证所有种类的artifact。”但这并不仅仅局限于AM的范围之内。通过这种可测试性的考虑,在我建模时,我能够建立起可测试的模型,而且积极的通过编码来验证模型,这样,我就能够尽快的证实我的模型是真正可以测试的。


共10页: 上一页 [1] [2] [3] [4] [5] [6] 7 [8] [9] [10] 下一页
【内容导航】
专题
UML统一建模语言
WCF开发基础
体验Visual Studio 2008的魅力
Visual Studio 2005开发基础
测试开发人员参考手册
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看71011次)
·UML类图详解 (查看64281次)
·UML统一建模语言 (查看34994次)
·C#技术开发指南 (查看33609次)
·C++是垃圾语言?! (查看31876次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (309个砖)
·.NET开发手册 (240个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (271个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (190个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。