This week (well, really last week), I noticed references to the SDLC (aka Software Development Life Cycle) several times in things I read or heard in meetings. I know some about the SDLC, but I don’t really ‘know’ it. I know what it is, but wouldn’t be able to put it in to my own words accurately or succinctly. So, I thought this post would be a good place to do some research and write out my findings.
The SDLC (Software Development Life Cycle) is the full process, from start (initial idea) to finish (launch and ongoing maintenance) of developing a software program. I would bet that some people lump all of the phases into one or two and probably think that coding is the most important phase. I found some information at http://bpmgeek.com/blog/software-development-life-cycle-basics which was very helpful – the information was clear and easy to understand.
This website (bpmgeek.com) listed 7 steps to the SDLC.
- Preliminary Idea & Investigation
- Feasibility Study
After a little more searching, I realized that the SDLC can be quite simple (idea, design, develop, release, maintain) to quite complex (showing 13 or more basic phases with multiple sub-phases under each one).
I found a graph (http://www.sjmsoftech.com/Software-Development-India.aspx) that seems to be a good balance of overview and detail. I believe this will help me to better articulate to others what phases there are.
As I see it, being able to articulate the SDLC to management or other involved parties would be very helpful. I imagine that there may be a vague understanding of the SDLC, thinking that it is a lot of coding and then magically producing a product that does every single thing the client wants. Obviously, that’s a pretty simple view. But, I’m sure that in some organizations, management folks might not realize all of the details that go into developing software. And those details affect expenses (both at the front end of development time and at the back end when the programmer is correcting things due to poor design or poor articulation of software requirements), client satisfaction, reporting, and ability to do business.
As I compare both examples above (both the bulleted list and the graph), I would like to propose a hybrid. This will be mainly for my own personal use and help with articulating the SDLC to others.
- Idea & Investigation: At Stage 1, Idea & Investigation, the initial idea about the project is identified. Client requirements are investigated and documented. Investigation could also include research about already-existing solutions or modifications to current projects that would meet the needs of the client.
- Feasibility Study & Analysis: At Stage 2, Feasibility Study & Analysis, the client requirements are analyzed, cost projections are developed, and the full scope of the project is planned out. If there are other already-existing possibly solutions, those are studied as well to determine if that would be the best course of action.
- Design Specifications: At Stage 3, Design Specifications are developed. This is important, as it will impact the overall cost of the project. Diagrams are developed to visually display the flow of logic within the software. This becomes the blueprint for the software project and needs to happen prior to any coding.
- Coding & Testing: At Stage 4, Coding & Testing begins. Using the Design Specifications as a blueprint, each section of the software is coded and connected together to develop the overall software project. This stage also includes testing each section to determine if it functions as planned. At this point, any defects that are identified can be corrected.
- Implement Systems & Evaluate Performance: At Stage 5, Implement Systems & Evaluate Performance, the program is launched and ready to use in the real-world application. Studies are completed to evaluate the performance. Is it operating the way the client wanted? Are there any unexpected results?
- Ongoing Support & Maintenance: At Stage 6, Ongoing Support & Maintenance, any modifications that arise are made. Enhancements to the program are also included in this phase.
Although the SDLC runs in a clockwise fashion (according to my circular graph), at any stage, it may be necessary to reverse the path and go back to the previous stage to further develop or refine the project. Again, this is more for my personal use to provide a helpful reminder of the different stages in the Software Development Life Cycle.