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.

Comments

# Paul Wilson said:

I still think architecture is the foundation of the application, but I totally agree that solid methodology is just as important. I think the appropriate metaphor for methodology is whether or not the house was designed for the correct people, whether or not the builders and his team followed that plan, the processes they follow when diverging from the plan if necessary, and the inspection process. The greatest architecture is not going to get you anywhere without a solid methodology, but the opposite is equally true.

Wednesday, July 30, 2003 6:19 PM
# Scott Sargent said:

I think you're probably right. The SDLC is the foundation of the Development team and process. I'm on a project now where we're trying to build a pretty well architected system without a formal software development process.

Definitely one of the more painful experiences of my career.

Wednesday, July 30, 2003 7:44 PM
# Dave said:

Care to give a concise (three sentances or less please) definition of SDLC? Seems to be missing from this lengthy post.

I've become very well respected at my ompany because I'm one of the few people who can not only develop something from scratch, not only develop all tiers and phases, but also actually finish a project. IMHO one critical thing you must do before laying out a framework/foundation is create a specific scope.

Understand that you WILL adjust timelines, adjust scope even. But you will lay out exactly what is in phase one and create an endgame and timeline.

Take into account that various tasks will be part of phase two. Unless a feature request is deemed absolutely necessary to the initial rollout, it too is added as phase two development. And of course, before actually embarking on phase two, you must evaluate thoroughly everything involved in phase one.

Once you have such a planning method in place, the type of framework/foundation you need to develop is actually almost an afterthought. So is everything from UI to logic design. It all begins with listing out the specific scope.

Is this similar to what you mean by SDLC?

Wednesday, July 30, 2003 8:30 PM
# Ajay said:

Hi,
Though i agree with you that SDLC is very important for a project to be successful, but the aspect is without a definite architecture any SDLC might be a failure. As we have different architecture patterns, we too have different SDLC process (waterfall, XP,etc.). The reality is while SDLC is compared to be the heart of the Project, the architecture is the brain. Without each other the project would not be a success. Imagine just a house building methodology without a definite blueprint.

Hope i made sense!!

Ajay

Thursday, July 31, 2003 12:35 AM
# Manuel said:

SDLC is important but if you follow it "by the book" you're sure to fall in the real world.

The greatness of a program is not mesured by how well the development team did. It is mesured by the level of satisfaction of the client.

What works for me is JAD and eXtream Programming. Why? Because the applications are done faster, with fewer bugs and it's exactly what the users want.

When I was out of college I used to belive in the SDLC by the book. Went to the real world, did an extensive Analysis and Design, the client looked at it and said "This is exactly what we need." Developed the program and when the client received the first prototype the usual comment was "This is not what I wanted..."

Thursday, January 15, 2004 4:21 PM
# viji said:

SDLC - Software Development Life Cycle

Monday, July 28, 2008 6:50 AM
# vnv2004@rediffmail.com said:

Dear CodeBoy,

My research topic is "forecasting SDLC". I am planning to forecast or estimate phase wise details related to new project. I need help from this bolg. I need data for proving best results from my proposed work. Do any one is aware of such sample software project data, which I can use in my research? if yes, pl let me know. I will appreciate that.

Tuesday, January 06, 2009 11:39 PM
# inventory pos system said:

I appreciate your post, thanks for sharing the post, i would like to hear more about this in future

Saturday, January 22, 2011 2:13 AM
# Dev said:

Hi,

Though i agree with you that SDLC is very important for a project to be successful, but the aspect is without a definite architecture any SDLC might be a failure. As we have different architecture patterns, we too have different SDLC process (waterfall, XP,etc.). The reality is while SDLC is compared to be the heart of the Project, the architecture is the brain. Without each other the project would not be a success. Imagine just a house building methodology without a definite blueprint.

Hope i made sense!!

Monday, November 14, 2011 1:05 PM

Leave a Comment

(required) 
(required) 
(optional)
(required)