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 all the stages in a software cycle and outlines how each process is to be carried out. The objective is to deliver a high quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates.
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 decide 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 at 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 to ensure what it is like to make a new system about the customer involvement. Here we need to evaluate how much 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 if 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 which explains both the functional and non-functional behavior of a system.
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’s-view of the system for a Developer.
- LLD – Low Level Design – Much more detailed design document for a developer which includes the low end description of the program to be developed. This might also include logic, 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 the 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 getting it right (ha). A Quality Analyst is supposed to be very proactive and test the system accordingly. Based on the requirement documents, a tester should prepare the use cases, and test execution 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 on 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 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 any licenses. Never ever deploy your source code on an unclassified 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