加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键

发布时间:2020-05-23 13:16:54 所属栏目:程序设计 来源:互联网
导读:Agile Model Driven Development (AMDD): The Key to Scaling Agile Software Development 敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键 Table of Contents 目录 Overview 概述 Envisioning 展望 Initial agile requirements modeling 初始

Agile Model Driven Development (AMDD): The Key to Scaling Agile Software Development

敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键

Table of Contents 目录

  1. Overview 概述
  2. Envisioning 展望
    • Initial agile requirements modeling 初始化敏捷需求建模
    • Initial agile architecture modeling初始化敏捷架构建模
  3. Iteration Modeling 迭代模型
  4. Model storming 模型暴风
  5. Executable specification via TDD通过测试驱动开发的可执行规范
  6. Reviews 评论
  7. How is AMDD different? 敏捷模型驱动开发有何不同?
  8. Why does this work? 它为何这样做?
  9. Approaches to AMDD 走进敏捷模型驱动开发

1. Overview 概述

As the name implies,AMDD is the agile version of Model Driven Development (MDD). MDD is an approach to software development where extensive models are created before source code is written. A primary example of MDD is the Object Management Group (OMG)’s Model Driven Architecture (MDA) standard. With MDD a serial approach to development is often taken,MDD is quite popular with traditionalists,although as the RUP/EUP shows it is possible to take an iterative approach with MDD. The difference with AMDD is that instead of creating extensive models before writing source code you instead create agile models which are just barely good enough that drive your overall development efforts. AMDD is a critical strategy for scaling agile software development beyond the small,co-located team approach that we saw during the first stage of agile adoption.

顾名思义,AMDD是敏捷模型驱动开发(MDD)的版本。 MDD是一个广泛的模型创建之前被写入源代码的软件开发方法。 MDD的一个主要的例子是对象管理组(OMG)的模型驱动架构(MDA)的标准。 MDD是串行的发展方针与MDD往往采取与传统主义者颇为流行,虽然RUP/ EUP指令表明它是可能采取的迭代与MDD方法。 AMDD差异,而不是建立广泛的模型,编写源代码之前,你只是勉强足够好来带动整体发展努力,而不是创造敏捷模型。 AMDD是攀登敏捷软件开发超越小规模的一个重要战略,共设团队接近于我们看到在第一阶段采用敏捷。

Figure 1 depicts a high-level lifecycle for AMDD for the release of a system. First,let’s start with how to read the diagram. Each box represents a development activity. The envisioning includes two main sub-activities,initial requirements envisioning and initial architecture envisioning. These are done during iteration 0,iteration being another term for cycle or sprint. “Iteration 0” is a common term for the first iteration before you start into development iterations,which are iterations one and beyond (for that release). The other activities – iteration modeling,model storming,reviews,and implementation – potentially occur during any iteration,including iteration 0. The time indicated in each box represents the length of an average session: perhaps you’ll model for a few minutes then code for several hours. I’ll discuss timing issues in more detail below.

图1描绘了一个发布系统AMDD高层次的生命周期。首先,让我们先从如何阅读图表。每个方块代表一个开发活动。构想包括两大子活动,最初的需求构想和初步的建筑构想。这些都是做在迭代过程中,迭代是另一个长期的循环或冲刺。 “迭代0”是第一次迭代之前,你开始进入开发迭代,这是迭代和超越(该版本)的常用词。 - 迭代建模,模型暴风,审核,和实施的其他活动 - 可能发生在任何迭代,包括迭代0。在每个方块中显示的时间平均会话长度:也许你几分钟,然后几个小时的代码模型。我将在下面更详细地讨论时机的问题。

Figure 1. The AMDD lifecycle: Modeling activities throughout the lifecycle of a project.

图1。AMDD的生命周期:建模活动,整个项目的生命周期。

Figure 2 depicts how the AMDD activities fit into the various iterations of the agile software development lifecycle. It's simply another way to show that an agile project begins with some initial modeling and that modeling still occurs in each construction iteration.

图2描绘了AMDD活动如何适应敏捷软件开发生命周期的各种迭代。它只是另一种方式表明,一个敏捷项目开始一些初步的造型,模型仍然出现在每一个构造迭代。

Figure 2. AMDD Through the Agile Development Lifecycle.

图2。AMDD通过敏捷开发生命周期。

2. Envisioning 展望

The envisioning effort is typically performed during the first week of a project,the goal of which is to identify the scope of your system and a likely architecture for addressing it. To do this you will do both high-level requirements modeling and high-level architecture modeling. The goal isn't to write detailed specifications,that proves incredibly risky in practice,but instead to explore the requirements and come to an overall strategy for your project. For short projects (perhaps several weeks in length) you may do this work in the first few hours and for long projects (perhaps on the order of twelve or more months) you may decide to invest two weeks in this effort. I highly suggest not investing any more time than this as you run the danger of over modeling and of modeling something that contains too many problems (two weeks without the concrete feedback that implementation provides is a long time to go at risk,in my opinion).

“构想的努力通常在第一周的一个项目,其中的目标是要找出解决您的系统的范围和可能的架构。要做到这一点,你会做高级别要求的造型和高层次的架构建模。我们的目标不是写的详细规格,在实践中证明了令人难以置信的冒险,而是探索的要求,来为您的项目的总体战略。对于短期项目(也许是在几个星期长度),你可以这样做这项工作,在最初的几个小时,长的项目(也许是十二个或更多个月的顺序),您可能会决定投资在这方面的努力两个星期。我强烈建议不投资任何超过这个时间,为您运行包含了太多的问题(两个星期没有具体的反馈,去的危险,在我看来,实施提供了建模和建模的东西如果是在很长时间的越有危险) 。

2.1 Initial Requirement Modeling 初始化需求建模

For the first release of a system you need to take several days to identify some high-level requirements as well as the scope of the release (what you think the system should do). The goal is to get a good gut feel what the project is all about. For your initial requirements model my experience is that you need some form of usage model to explore how users will work with your system,an initial domain model which identifies fundamental business entity types and the relationships between then,and an initial user interface modelwhich explores UI and usability issues.

你需要一个系统,需要几天的时间,以确定一些高层次的要求,以及发布(你认为应该做的系统)的范围为首次发布。我们的目标是获得良好的直觉感觉是什么项目。最初的要求为您的模型,我的经验是,你需要某种形式的使用模式,探索用户将如何与您的系统工作,初始域标识基本业务实体类型间关系的模型,和一个初始的用户界面模型探讨UI和可用性问题。

I cannot say this enough: your goal is to build a shared understanding,it isn’t to write detailed documentation. A critical success factor is to use inclusive modeling techniques which enable active stakeholder participation.

我不能说这就够了:你的目标是建立一个共同的理解,这是不写详细的文档。成功的关键因素是使用包容性的建模技术,使利益有关者积极参与。

2.2 Initial Architecture Modeling 初始化架构建模

The goal of the initial architecture modeling effort is to try to identify an architecture that has a good chance of working. This enables you to set a (hopefully) viable technical direction for your project and to provide sufficient information to organize your team around your architecture (something that is particularly important at scale with large or distributed teams).

最初的架构建模工作的目标是,试图找出一个架构,有一个良好的工作机会。这使您可以设置为您的项目(有希望的)可行的技术方向,并提供足够的信息来组织你的团队围绕你的架构(一些大型或分布式团队的规模,这一点尤其重要)。

On the architecture side of things I’ll often create free-form diagrams which explore the technical infrastructure,initial domain models to explore the major business entities and their relationships,and optionally change cases to explore potential architecture-level requirements which your system may need to support one day. In later iterations both your initial requirements and your initial architect models will need to evolve as you learn more,but for now the goal is to get something that is just barely good enough so that your team can get going. In subsequent releases you may decide to shorten iteration 0 to several days,several hours,or even remove it completely as your situation dictates. The secret is to keep things simple. You don’t need to model a lot of detail,you simply need to model enough. If you’re writing use cases this may mean that point-form notes are good enough. If you’re domain modeling a whiteboard sketch or collection of CRC cards is likely good enough. For your architecture a whiteboard sketch overviewing how the system will be built end-to-end is good enough.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读