|
| Chances are, we have probably all experienced nightmare release procedures. Put it this way, you'd be very fortunate if you hadn't! As projects mature, release procedures tend to get better, sometimes far too late in the life cycle of the project, though. The trick is to aim for getting the release management working as early as possible - ideally sometime in the Inception phase. The earlier the Release Management works, the more stable the architecture will tend to be. Let's take a look at Release managing a "Hello World" candidate Architecture as an example of a starting point for the project Release management.
Introduction I was horrified when some years ago I first joined a mature dot com and found that the Release Management Procedure consisted of something along the lines of the following:
Ok, so I may have oversimplified the process a little, but believe me; it wasn't much better than that! All the dedicated version controlling, checking in and out, all went right out the window once the mad rush to build, test and release happened. There was no concept of base lining, no integration management or branching, no defect tracking, no automated builds, not even proper configuration item identification. It was all manual, "I'll remember what I did", on the fly and "Oh, I must remember to tell Joe in the morning that I altered one of his base system components...". Fortunately nobody did get run over by one of those big red London busses! Architecture flawed means the whole system is flawed Needless to say, because the build and release management process were so ad hoc, we never dared change too much in the Architecture, because quite frankly we were too scared the whole lot would come crumbling down around us, and that we couldn't easily revert back to an earlier working version. We knew from an early point in the life-cycle that, there were some method calls that were bypassing layers of the Architecture. You know the type of thing, a presentation layer object calling the database directly and bypassing the business logic and permissions, etc. Once you are in that predicament, where you can't rely on your implemented Architecture to be stable and your system is live, everything from then on that you add to your system, you do at a disadvantage. You start devising design work-a-rounds because the architecture is not as you'd like it to be. You do everything slower because you want to be that much more careful. It all gets more complex than it should be too. You now have more items in your system which makes it even harder to refactor the Architecture. It's a cumulative catch-22, which can spiral right out of control if you let it. Anyway; it all got a lot better over time and we survived to tell the tale. Strive to build - a Real simple, real early "Hello World" candidate Architecture foundation. What was learned out of the above experience and other experiences subsequently, is that the best way of getting the Release Management going, as well as bedding down and proving an Architecture, is to let them both start off real simple real early. This reminds me of Integration Math some years back: As "Release management tends to t=0, Architectural stability errors tend to 0. Where t = time along a timeline". This is a recipe I'd suggest. Sometime very early in the Inception Phase of the project, if you are the Project manager, have your configuration manager, define a directory structure for the project and work on the Release management in the Configuration Management plan. Simultaneously have the tool-smith set up your chosen configuration management tool. Time box the activity into an iteration so that something has to be working after so many days or weeks. In parallel, while they are doing that, have the Architect start thinking about the generic Architecture they are going to use. Will it be J2EE or .NET? Will they use Messaging middleware? Will there be any off-the-shelf software that will need to be part of this? Have the Architect task a Designer / Developer to build a really simple Hello World model and application in the estimated target environment of your project. Try and build your Hello World Candidate Architecture to make use of all the main layers of the Application Architecture. I.e. Build an application which takes as input from an edit field on a screen in a browser the words "Hello World", pass this info to your component in your business layer that contains an object which deals with "HelloWorlds". Then have that business component persist this information into a table in the database layer table called "Hello_World". Time box this activity so that in the same timeframe, something gets designed and built. Obviously make sure there the Architect team brings their code into the Configuration management system as soon as it has reached a useable point. Now make and build this Hello World system, and deploy it on the testing environment. If the testing environment hasn't yet been setup, then execute it on the development environment. Prime the pumpWhat we have achieved by following the recipe above is:
Often doing something simple just to get the ball rolling is what is needed to unclog some of the blockages, real, perceived or otherwise. Once the pump has been primed, the Architecture team can get into their typical architectural problem solving of the candidate Architecture and tackling the highest risk hardest things first under way. The Configuration Management can get on with enhancing the Build and Release Management strategies according to their tactical plans. By the time your project gets into and completes the Elaboration phase, you will be correctly placed to do the serious business of building your system properly, by enhancing it in allocated Use Cases increments at a time. Charles Edwards has been involved with software development for 22 years. He is a contributing editor for CM Crossroads and an independent consultant who performs RUP implementation for organizations that recognize the need to improve their software development process. He works with and contributes to the http://www.processwave.net/ web site for process engineers. You can reach Mr. Charles Edwards by email at charles.edwards@processwave.com
Set as favorite
Bookmark
Email this
Hits: 4763 Trackback(0)
Comments (0)
![]() Write comment
You must be logged in to post a comment. Please register if you do not have an account yet.
|
| Last Updated on Friday, 14 July 2006 04:40 |



