Software Development Life Cycle (SDLC)
SDLC is the process of developing information systems through investigation, analysis, design, implementation and maintenance. SDLC is also known as information systems development or application development. SDLC is a systems approach to problem solving and is made up of several phases, each comprised of multiple steps:
- The software concept - identifies and defines a need for the new system
- A requirements analysis - analyzes the information needs of the end users
- The architectural design - creates a blueprint for the design with the necessary specifications for the hardware, software, people and data resources
- Coding and debugging - creates and programs the final system
- System testing - evaluates the system's actual functionality in relation to expected or intended functionality.
Software development model is carefully selected based on the client requirements. A common model may look like:
During this phase, one of Hashe’s analysts communicates with the client and works closely to sketch out the requirements. At the end of this phase a document is produced outlining the requirements in clear and concise way. Client is supposed to sign off the document and document is base lined.
Baseline is a static reference point for any configurable items in your project. It includes but not limited to,
- From work product point of view - RS, Design, Test case, Source code, Build, Test-results etc.
- From project management point of view - Mainly schedule, Cost and Quality
If we properly baseline the product and process then monitoring and controlling different aspects of a project is easier as we are not planning and tracking a moving target.
"Functional requirements define the internal workings of the software: i.e., the calculations, technical details, data manipulation and processing, and other specific functionality that show how the use cases are to be satisfied. The qualities we desire of a problem solution other than those concerning its functionality, e.g. its robustness, its efficiency, its security, its extensibility, its maintainability, its portability, etc. are called Non functional requirements."
During this phase, analyst produces technical documentation containing business requirements and their technical solutions. During this phase, application architecture is also designed while considering the functional and non-functional requirements.
This phase may include studying existing system and identifying GAP analysis. This GAP analysis will identify the key areas which require improvements. In such cases analysis requires more time.
If our client is in competition, we can also conduct study of competitor’s solution(s). In such scenarios, we perform GAP analysis and market studies are performed to find edges.
During this phase work break down structure is prepared and effort estimation is done. At Hashe Computer Solutions, we employ number of size/effort estimation techniques such as FP Analysis, Wideband Delphi etc. We maintain categorized statistical data of various projects for future consultancy. During this process, risks are identified, quantified and mitigations are planned as well.
During this phase the plan is executed and software is produced using selected tools and technologies. Our developers are trained to follow strict development methods – we have established our standards (like coding, commenting etc). Peer reviews of code and developed artifacts are part of project plan to ensure the quality on developer box.
Project manager is responsible for closely monitoring the development process. Tracking is done on daily basis. Risks are weekly reviewed and risk sheets are updated. Client remains in this loop and can see the progress on daily basis. Weekly builds on our test servers are common hence our progress becomes transparent for our client.
During this phase application is thoroughly tested using test cases. These test cases are generated against Requirement Specifications. We use state of the art bug tracking and customer feedback systems to make sure that every issue is properly addressed. Quality assurance department is also responsible for producing statistical data which later is used to improve the development process.
User Acceptance Testing
During this phase complete application is deployed under production environment. Client/stakeholders are invited to access the complete application.
During the process of User Acceptance Testing, if user has identified any gaps, application changes are made. Generally need of change arises because of following two reasons:
- Feature was present in signed-off Requirements Specifications but is not available in final release
- Feature was not present in signed-off Requirements Specifications because of:
- Requirement was missed during requirement gathering phase
- Business process has been changed
First case is very rare case as our test cases are generated based on requirement specifications. During the process of Quality Assurance, these test cases are executed against the release.
In second case, we will perform GAP analysis to correctly identify the new requirements and then impact analysis is done. If such change requires major application dissection, as per software development agreement, client is bound to pay the cost of effort.
During this phase, application is deployed on live servers/environment.
Following the successful submission and implementation of the project, we offer services for the on-going support and maintenance of the project annually. This area includes concepts, methods, processes and techniques that support the ability of an Internet Platform to change, evolve, and adapt. As part of the maintenance services, Hashe Computer Solutions will be responsible for providing services including, but not limited to, the following:
- Support and Service
- Training and familiarization programs
- Periodic Customization & Upgrades