Rendezvous with Software Development Life Cycle(SDLC)
If you have ever wondered what makes a Software Project success with least efforts, lot of factors run through your mind. Possible critical success factors could be high caliber Resources, control over requirements, strong client involvement and top of all, an Established Process. Here in this post, I would like to highlight the importance of establishing process in Software Development based on my experiences and rendezvous with Software Development.
There can be no denial in the fact that Discipline is the key to success in any activity. Software Development is no exception to it. And that discipline is laid out by SDLC (Software Development Life Cycle or System Development Life Cycle). SDLC defines and establishes guidelines/syntax for a Process.
Let’s check out the phases outlined in this framework, but before that following are the few SDLC models.
SDLC Models
- Waterfall Model
- Iterative Model
- Spiral Model
- V-Model
- Big Bang Model
- Prototyping Model
Each Process model is unique by itself and follows a series of steps in order to ensure success in process of Software Development. And now…
Phases of SDLC
1. System Analysis – Conduct a feasibility Study of the Project. It is very important that one studies the Project Proposal to ensure if the Project is viable or not. This feasibility study will include primarily, the operational, time and cost estimation subjected to resources available. The initial assessment will decided the fate of the project.
2. Requirement Analysis – Based on my experience while dealing with projects, I can clearly say that unless you have control over the requirement analysis, no project can get easier in the development stage. It is very important that the requirements are studied, analyzed and more importantly, documented. If it is a legacy system, the existing system must be evaluated. I would like to make a key mention about the customer involvement here. We need to ensure that the customers get involved in this process. More often, it is observed that customers tend to get lazy with respect to the documentation reviews which makes the project put into jeopardy! SDLC indeed helps!
As part of the Requirement Analysis, the following should be documented in detail after thorough research and study of the system.
- Business Requirement Document (BRD) – The intent behind this document should describe about the results we want from the system. A BRD is usually the first big document exchanged between Client and Company. It is designed, usually, by a Business Analyst, after detailed discussion with the client or in-depth study of the system.
- Functional Specification Document (FSD) – This document is more of a technical response to the BRD. The intended audience for an FSD is usually the Software Developers who code/develop.
- At times, few organizations tend to focus on Software Requirements Specification (SRS) which contains both the functional and non-functional behavior of a system.
There is a thin line of difference between BRD and FSD. My Project Manager at CSSI, always used to remind me that a BRD tells you WHAT the system actually does and an FSD tells you HOW the system should function.
3. System Design – Now that the requirements are documented, It’s time to transform them detailed system design. The input for a system design is the requirement Phase. The following are documented as part of the System Design.
- HLD – High Level Design –Overall System Design with respect to System Architecture and Database. The core functional areas are highlighted here at a very high level. An HLD provides a bird-view of the system for a Developer.
- LLD – Low Level Design – Much more detailed design document for a developer which includes the word description of the program to be developed. This also specifies the classes, methods, input and output parameters used, database tables, stored procedures and any other database object.
4. System Development (Coding) – If the design document is reviewed and accepted the Team leads, it’s time for the developer to take charge of the code. The source code is developed in this phase taking inputs from the Requirements and Design Document developed in earlier phases.
5. System Integration & Testing – No project is bug-free. In fact, I have a feeling that, if there are no bugs in a project in the initial stages, something is not right. Caution, You are not on the right path. A Quality Analyst is supposed to be very proactive and test the system thoroughly. Based on the requirements documents, a tester should prepare the use cases, test cases, test plans ready while the development phase is in process. Once the development is done and ready to be released for testing, the QA can subject the designed test cases against the system and find bugs.
There are various modes and means of System Testing. Few of those which are common are
- Software Performance Testing
- Load Testing
- Usability Testing
- Smoke Testing
- Regression Testing
6. Deployment – Once the Testing Phase is completed and the client has passed the User Acceptance Testing (UAT) signoff, you are all set to deploy the code now on the server for the users. It is very critical that the server configuration is reviewed beforehand, the software to be installed are ready and the more important they are licensed. Never ever deploy your source code on an unlicensed software. Microsoft has some very good programs like the BizSpark Program, to help startups with their Product deployment on the server.
7. Maintenance – Post-Deployment, the system is bound to spring surprises in the form of issues or mandatory change request. In order to fix them, patches/change requests versions are developed and released.
In other words, SDLC is extremely useful to meet the customer expectations and delivering a high quality software. After all, time and cost are very precious to any organization.
Leave A Comment