An Introduction to Agile Modeling
敏捷建模简介
Agile Modeling (AM) is a practice-based methodology for effective modeling and documentation of software-based systems. Simply put, Agile Modeling (AM) is a collection of values, principles, and practices for modeling software that can be applied on a
software development project in an effective and light-weight manner. As you see in Figure 1 AM is meant to be tailored into other, full-fledged methodologies such as XP or RUP, enabling you to develop a software process which truly meets your needs.
敏捷建模(AM)是一种针对有效的建模和基于软件的系统文档,基于实践的方法。简而言之,敏捷建模(AM)是价值观,原则,以及针对能够以高效和轻量级方式应用于软件开发项目的建模软件的实践的集合。正如你在图1中看到,AM意味着被量身定制到其他的,全面的方法,如XP(eXtreme Programming
极限编程)或RUP(Rational Unified Process统一软件开发过程)定制,使您能够开发软件的过程,真正满足您的需求。
The values of AM, adopting and extending those of eXtreme Programming v1, are communication, simplicity, feedback, courage, and humility. The keys to modeling success are to have effective communication between all project stakeholders, to strive to develop
the simplest solution possible that meets all of your needs, to obtain feedback regarding your efforts often and early, to have the courage to make and stick to your decisions, and to have the humility to admit that you may not know everything, that others
have value to add to your project efforts.
AM的价值,采用和扩展这些极端编程V1,是沟通,简单,反馈,勇气和谦卑。建模成功的关键是所有项目利益相关者之间的有效沟通,努力开发尽可能简单的解决方案,以满足您的所有需求,关于你的努力要经常和早点获得反馈,有勇气于定下和坚持你决定,并谦逊地承认,你可能不知道的一切,其他人有加到您的项目努力的价值。
AM is based on a collection of principles, such as the importance of assuming simplicity when you are modeling and embracing change as you are working because requirements will change over time. You should recognize that incremental change of your system over
time enables agility and that you should strive to obtain rapid feedback on your work to ensure that it accurately reflects the needs of your project stakeholders. You should model with a purpose, if you don't know why you are working on something or you
don't know what the audience of the model/document actually requires then you shouldn't be working on it. Furthermore, you need multiple models in your intellectual toolkit to be effective. A critical concept is that models are not necessarily documents,
a realization that enables you travel light by discarding most of your models once they have fulfilled their purpose. Agile modelers believe that content is more important than representation, that there are many ways you can model the same concept yet still
get it right. To be an effective modeler you need to recognize that open and honest communication is often the best policy to follow to ensure effective teamwork. Finally, a focus on quality work is important because nobody likes to produce sloppy work and
that local adaptation of AM to meet the exact needs of your environment is important.
AM是基于原则的集合,比如简单地假设,当你正在建模和拥抱变化,作为你的工作的重要性,因为需求将随时间而改变。你应该认识到,随着时间的推移使系统的增量变化的灵活性和你对你的工作应该努力获得快速反馈,以确保它准确地反映你的项目利益相关者的需求。你应该有目的地建模,如果你不知道为什么你正在做某些东西,或者你不知道模型/文件实际需要什么观众,那么你不应该工作在它上面。此外,您需要在您的知识工具包的多个模型是有效的。一个关键的概念,模型不一定是文件,一旦他们完成了他们的目的,丢弃你大多数的模型的实现使您轻装上阵。敏捷建模相信,内容是比表现更重要的,有许多方法可以模拟相同的概念,直到得到正确的。作为一个有效的建模者,你需要认识到,公开和诚实的沟通,往往是最好的政策跟进,以确保有效的团队工作。最后,关注质量的工作是重要的,因为没有人喜欢产生马虎的工作,适应当地并满足您的环境的具体需求的AM是很重要的。
To model in an agile manner you will apply AM's practices as appropriate. Fundamental practices include creating several models in parallel, applying the right artifact(s) for the situation, and iterating to another artifact to continue moving forward
at a steady pace. Modeling in small increments, and not attempting to create the magical "all encompassing model" from your ivory tower, is also fundamental to your success as an agile modeler. Because models are only abstract representations of software,
abstractions that may not be accurate, you should strive to prove it with code to show that your ideas actually work in practice and not just in theory Active stakeholder participation is critical to the success of your modeling efforts because your project
stakeholders know what they want and can provide you with the feedback that you require. The principle of assume simplicity is a supported by the practices of creating simple content by focusing only on the aspects that you need to model and not attempting
to creating a highly detailed model, depicting models simply via use of simple notations, and using the simplest tools to create your models. You travel light by single sourcing information, discarding temporary models and updating models only when it hurts.
Communication is enabled by displaying models publicly, either on a wall or internal web site, through collective ownership of your project artifacts, through applying modeling standards, and by modeling with others. Your development efforts are greatly
enhanced when you apply patterns gently. Because you often need to integrate with other systems, including legacy databases as well as web-based services, you will find that you need to formalize contract models with the owners of those systems. Read this
article for a better understanding of how AM's practices fit together.
在一个敏捷的方式来建模,你将适用于适当AM的做法。基本做法包括并行创建多个模型,运用正确的加工品的情况下,迭代到另一个加工品,继续稳步向前迈进。小增量建模,而不是试图从你的象牙塔里创造神奇的“包罗万象的模型”,也是您的成功作为一个敏捷建模者的基础。因为模型是软件只是抽象的陈述,而抽象的可能不准确,你应该努力用代码来证明它,以表明你的想法其实在实际工作中,不仅在理论上。利益有关者积极参与建模工作的成功是至关重要的,不仅在理论上是建模工作成功的关键因为你的项目利益相关者知道他们想要的东西,可以为您提供您需要的反馈。假设简单的原则是只注重方面,你需要的模型,并没有试图创造一个非常详细的模型,只需通过使用简单的符号描述模型,并使用简单的工具,支持创建简单的内容的做法创建您的模型。使用单一的采购信息使您轻装上阵,只有当它损坏了,你才丢弃临时模型和更新模型。启用的交流是通过公开展示模型,无论是在墙壁上或内部网站,通过您的项目加工品的集体所有权,通过应用建模标准,并通过与他人的建模。当你轻轻地套用模式,大大提高您的开发工作。因为你经常需要与其他系统集成,包括传统的数据库以及基于网络的服务,你会发现,你需要与这些系统的业主正式联系模型相关。为更好地了解AM的实践是如何组合在一起的,请阅读这篇文章。
I would argue that AM is an agile approach to modeling, that at its core AM is simply a collection of practices that reflect the principles and values shared by many experienced software developers. With an Agile Model Driven Development (AMDD) (see Figure
2) approach you typically do just enough high-level modeling at the beginning of a project to understand the scope and potential architecture of the system, and then during development iterations you do modeling as part of your iteration planning activities
and then take a just in time (JIT) model storming approach where you model for several minutes as a precursor to several hours of coding.
我认为,AM是一个敏捷建模的方法,而AM在其核心是一个简单地作为实践的,反映了许多经验丰富的软件开发者的原则和共同价值观的集合。关于敏捷模型驱动开发(AMDD)(见图2),接近你通常在一个项目开始时做刚好够高层次的建模,了解的范围和潜在的系统架构,然后在开发过程中迭代,你做造型迭代计划活动的一部分,然后采取一个事实管理(JIT)模型暴风般的方法,你只需为一个耗费几个小时的编码的前辈建模几分钟。
Another way to look at Agile Modeling is as a collection of best practices,
as you see in Figure 3.
另一种方式来看待敏捷建模是作为一个最佳实践的集合,正如你在图3中看到的。
My experience is that these practices can be applied to most software development projects, you don't have to be working on an project following an agile software process (such as XP) to take advantage of the approaches described by AM, although one of AM's
goals is to explain how to model when following the XP approach. A project team doesn't need to apply all of the practices, principles, and values of AM to benefit from it -- I have always been a firm believer that you should tailor your software process to
reflect the unique needs of your environment -- although it is my opinion that like XP you are much more likely to succeed if you do adopt all of AM.
我的经验是,这些做法可以适用于大多数软件开发项目,你不必工作在这样一个项目,敏捷软件过程(如极限编程)AM所描述的方法的优势,虽然一AM的目标是解释如何模拟极限编程的方法。一个项目团队并不需要应用所有的做法,原则和价值观,我从中受益 - 我一直坚信,你应该定制您的软件过程,以反映您的环境的独特需求 - 虽然这是我看来,像极限编程中,如果你不采取所有的AM,你更容易成功。
Reference site: http://www.agilemodeling.com/essays/introductionToAM.htm