Re: [AM] Database "refactoring" effort question

Scott Ambler <[email protected]>
Newsgroups gmane.comp.programming.modeling.agile
Message-ID <[email protected]>
At 11:12 PM 2/1/2004 +0000, Graham wrote:
>Here is a question for you
>
>END OF LAST ITERATION
>We have a database system for processing tax statements and revenue from tax
>papers.
>The database well encapsulated, hidden from applications behind "views".
>We have a test database containing data for 1,000 taxpayers
>We have a regression test suite that will, at the push of a button
>- push each table through its life cycle from creation through state changes
>to archive
>- navigate each relationship.
>We have a production database containing data for 10 million taxpayers,
>
>CHANGE REQUEST TO BE PROCESSED IN NEXT ITERATION
>In the kernel entity - the Taxpayer table.
>Please replace the column Taxpayer Name (40 characters)
>by two columns Taxpayer ForeName (25 characters) and Taxpayer Surname (25
>characters).
>
>THE QUESTION
>How long will it take make this small change
>- to the test database?
>- to the production database?

Consultant answer: It depends.  ;-)

You not only need to refactor the databases, but anything that touches the 
databases.  As I point out at 
http://www.agiledata.org/essays/databaseRefactoring.html#WhyDatabaseRefactoringIsHard 
this could be a fair bit of stuff.  The amount of coupling will determine 
the effort.  Not a lot of coupling, pretty easy to do.  A lot of coupling, 
you'd better do something to reduce it, such as encapsulate access to your 
DB (http://www.agiledata.org/essays/implementationStrategies.html).

You may also need to worry about this refactoring in other sand boxes 
(individual developer's workstation, team integration environment, 
...).  The fundamental steps for doing a refactoring such as you suggest 
are presented at 
http://www.agiledata.org/essays/databaseRefactoring.html#Step1StartInYourDevelopmentSandbox. 
Unfortunately you'd need to invest about 15 minutes and actually read this 
material, far less time than you seem to be investing in writing up these 
questions.

See 
http://www.agiledata.org/essays/databaseRefactoring.html#Step2ImplementInIntegration 
for your test environment, which I assume that this is some sort of 
pre-production environment which simulates production as close to 
possible.   You'll need to refactor the things that touch the database 
schema and retest them accordingly.  This includes test scripts, extraction 
scripts, persistence framework meta data, application code, ...  These 
things will then be rolled into production, along with the new database 
schema as well as the deprecated schema, throughout the deprecation period.

Deploying into production ==> 
http://www.agiledata.org/essays/databaseRefactoring.html#Step3InstallIntoProduction

- Scott

====================================================
Scott W. Ambler
Senior Consultant, Ronin International, Inc.
www.ronin-intl.com/company/scottAmbler.html

www.agiledata.org
www.agilemodeling.com
www.ambysoft.com
www.enterpriseunifiedprocess.info
www.modelingstyle.info
www.ronin-intl.com

For more information about AM, visit the Agile Modeling Home Page at www.agilemodeling.com
--^----------------------------------------------------------------
This email was sent to: [email protected]

EASY UNSUBSCRIBE click here: http://topica.com/u/?bUrKDA.bWnbtk.Z2NtYS1h
Or send an email to: [email protected]

TOPICA - Start your own email discussion group. FREE!
http://www.topica.com/partner/tag02/create/index2.html
--^----------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.