The Artima Developer Community
Sponsored Link

Agile Buzz Forum
Incremental Development

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
Keith Ray

Posts: 658
Nickname: keithray
Registered: May, 2003

Keith Ray is multi-platform software developer and Team Leader
Incremental Development Posted: Jul 31, 2006 7:26 AM
Reply to this message Reply

This post originated from an RSS feed registered with Agile Buzz by Keith Ray.
Original Post: Incremental Development
Feed Title: MemoRanda
Feed URL: http://homepage.mac.com/1/homepage404ErrorPage.html
Feed Description: Keith Ray's notes to be remembered on agile software development, project management, oo programming, and other topics.
Latest Agile Buzz Posts
Latest Agile Buzz Posts by Keith Ray
Latest Posts From MemoRanda

Advertisement

Imagine that you are developing version N+1 of a software application that has a document format that have to be upgraded to handle the new data that version N did not have. Pretend it's a relational database; you will have to add tables and columns, etc.

One way to handle this is to imagine all the possible transformations you will need to make to the database, and implement them. Here's a list partially taken from Refactoring Databases: Evolutionary Design by Scott W. Ambler and Pramod J. Sadalage.

  • Add Column
  • Add Table
  • Add View
  • Drop Column
  • Drop Table
  • Drop View
  • Change Column Type (converting values)
  • Change Column Values
  • Change Column Format
  • Introduce Calculated Column
  • Introduce Surrogate Key
  • Merge Columns
  • Merge Tables
  • Move Column
  • Rename Column
  • Rename Table
  • Rename View
  • Replace Column
  • Replace One-to-Many With Associative Table
  • Replace Surrogate Key with Natural Key
  • Split Column
  • Split Table

Implementing every feature in that list (and the other features I didn't mention) will take a while. It gets you a nice, complete file-upgrade library. But we're not in the business of developing libraries, we're in the application business. If you implement every feature, many of them will probably not be used by your application. Waste.

The other way to handle this is to proceed with the development of version N+1 of the application. Whenever you need to do one of the above transformations, you implement it, but only what you need. You get the application delivered sooner, because you're concentrating on customer value. You also have a file-upgrade library that does just what you need.

One of the teams that I worked did precisely this, and choose the incremental approach. It turned out we only needed a few of these features in our file-upgrade code. We did brain-storm a list of all the transformations might need, but we only implemented the ones we needed when the need arose. No waste.

Read: Incremental Development

Topic: Found iPod Software Previous Topic   Next Topic Topic: carnival of the agilists, 27-jul-06

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use