This week's book giveaway is in the OCAJP forum.
We're giving away four copies of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) and have Khalid A Mughal & Rolf W Rasmussen on-line!
See this thread for details.
Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

AM - Model with a Purpose

 
Anil Vupputuri
Ranch Hand
Posts: 527
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Michael,

In AMDD, I have a question when we're modeling with a purpose suppose the design which we have created works well only in the initial stage of a project and falls apart over new requirements in later stage of a project and it will be too late to fix the design at this stage and there are some cases where requirements in later stage have a need to change original design. How do we handle such cases?
Does it mean that we've to spend a lot of time up front for design and analysis which is against AMDD.

Thanks.
 
Michael Nygard
author
Ranch Hand
Posts: 40
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Anil,

What is AMDD?

Cheers,
-Mike
 
Anil Vupputuri
Ranch Hand
Posts: 527
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
AMDD - Agile Model Driven Development, it's a agile version of Model Driven Development (MDD).
 
Ilja Preuss
author
Sheriff
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Anil, what do you mean with "too late to change the design"? I don't know very much about (A)MDD, but isn't the whole purpose of it that you can change the design at any time, and have it directly reflected in the system?
 
Anil Vupputuri
Ranch Hand
Posts: 527
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What I mean is, we have an existing system which has to enhance for new requirements so we came up with a design which would slightly impact earlier design which is in production so we got to modify old code to cater for new requirements that means old modules have to be tested again. Isn't this against agile modeling?
 
Michael Nygard
author
Ranch Hand
Posts: 40
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Anil,

I can't speak much to model driven development, as I've never tried it in practice (and have some reservations about it in theory.)

I can say that the purpose of agile modeling is specifically about adapting to change. The whole point is to allow the existing design and code to accommodate new requirements. That doesn't mean old code will never be touched. Just the opposite in fact... it's about ensuring the the existing code and design can be modified with ease.

In my chapter "Adaptation", I discuss some issues around enterprise architecture that can make adaptation easier or harder. In particular, how you build interfaces that cross the system boundary can make a big impact on how easily you can upgrade your applications.

"Adaptation" operates under the assumption that change is good---a basis of all agile methods---so it shows how to make change as painless as possible.

Cheers,
-Mike
 
Ilja Preuss
author
Sheriff
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Anil Vupputuri:
What I mean is, we have an existing system which has to enhance for new requirements so we came up with a design which would slightly impact earlier design which is in production so we got to modify old code to cater for new requirements that means old modules have to be tested again. Isn't this against agile modeling?


As Michael said, it's definitely not against AM. See http://www.agilemodeling.com/essays/changeManagement.htm for example.

Regarding testing, you are correct that you need to test the full system before every release. In fact Agile teams test much more often - at least once every day, selected tests much more often, up to every couple of minutes.

Of course that only works if most of your tests are fully automated and can be run at the press of a button (or even run fully automatically, for example triggered by a change in the code repository). Extensive suites of fully automated tests are an important prerequisite for every Agile approach to software development.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic