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 to expected or intended functionality.
The software development model is carefully selected based on 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 clearly and concisely. The client is supposed to sign off the document and the document is baselined.
The 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 a 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, the analyst produces technical documentation containing business requirements and technical solutions. During this phase, application architecture is also designed while considering the functional and non-functional requirements.
This phase may include studying the 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 competes, we can also conduct a study of a 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 several 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 the project plan to ensure the quality of the developer box.
A project manager is responsible for closely monitoring the development process. Tracking is done daily. Risks are weekly reviewed and risk sheets are updated. The client remains in this loop and can see the progress daily. Weekly builds on our test servers are common hence our progress becomes transparent for our client.
During this phase, the 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. The 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 the production environment. Client/stakeholders are invited to access the complete application.
During the process of User Acceptance Testing, if the user has identified any gaps, application changes are made. Generally, the need for change arises because of the following two reasons:
- The feature was present in signed-off Requirements Specifications but is not available in the final release
- The feature was not present in signed-off Requirements Specifications because of:
- The requirement was missed during the requirement gathering phase
- The business process has been changed
The first case is very rare 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 the 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, the client is bound to pay the cost of effort.
During this phase, the application is deployed on live servers/environments.
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