Software Development Life Cycle
Hello Again Everyone! Its Codeboy, this blog comes to you today directly from the trenches. Its been one of those days you'd just as soon forget ever happened. This happens just about every wednesday for some reason. I'm not sure why & no one I've ever asked could tell me either, but most bad days come on wednesdays. Think about it, you know its true.
Ok before I start to Rant and Rave like a lunatic (and there will be plenty of that) I've got to say “Awesome Job” to Scott W on the new blog admin UI. I really liked the last one, and this one is even better. It looks Spectacular!
Back to the madness. I think one of the major problems with a lot of the software developed today is that its often done without the protection of a formal Software Development Life Cycle. For a while I had assumed (wrongly) that the most important aspect of software development was making sure you had a good robust and scalable architecture. Well folks, I think this is as wrong as I've ever been. If you have a good software development life cycle (something like: requirements, design, development, testing, deployment etc..) you can build just about anything. With a good SDLC you can quickly and efficiently overcome bugs that are found in the system or make enhancements for new functionality.
To borrow a common analogy, i've heard people say that the Overall architecture of the system is like the foundation of a house. Well, Its really not true. The foundation of the house is the SDLC of the group building the software. Without that Foundation the framing of the house becomes very difficult. While you may have had a great plan for the framing and structure of the house it can quickly get out of whack without its foundation. Basically with out a structured approach to the art or process of building your software little issues (that always creep up) become quickly big issues. And Big issues usually require big fixes, whereas in a structured development process the problem could potentially been addressed when it was still a little problem, an easy fix.
Let's think of our builders a bit more, with a solid foundation they can build the house with little fear. They know that even if something should happen to the house, because the foundation is solid it can be fixed. With the SDLC established, you'll be able to more accurately portray how long things will take to build, to test or to deploy. There are quantifiable numbers based on the last time things were done/built that can be used for forecasting. Whereas if you don't have the structured approach set up, you're really at the mercy of chance. Because of the lack of structure in any of the stages there's no telling when a major oops will occur. The major oops will occur more frequently in an unstructured system, its just the nature of the beast.
In the end here's what i believe: I believe that if you have a well functioning SDLC then you are much more likely to arrive at a good design and subsequently architecture. Also, it is an order of magnitude more difficult to maintain the same good architecture throughout a development effort without a good SDLC. A Structured Approach to Development and a SDLC are the most important things for a development team in my opinion. A Foosball table runs a close second or third.