Posted on Nov 02, 2021 by Deligence Technologies | Blog | Total Hits:
Software Development Life Cycle (SDLC) is a conceptual framework that defines a well-structured process to enable conceptualization, development, and production of software. The primary objective of an SDLC is to produce software that is high in quality, meets or exceeds customer requirements with optimal resources. An SDLC framework defines a comprehensive plan with various phases covering distinct deliverables that meets the end goal of software products, thereby accelerating software development with mitigated risks and costs.
Let us examine distinct types and phases of an SDLC, with roles and responsibilities in a software development company.
Let us examine some prominent SDLC methodologies that have evolved over time.
Waterfall Model: This was one of the first SDLC methodologies prominently used. The SDLC phases in this model can be broadly defined as Requirements Analysis, Project Planning, Design, Development, Testing, Deployment at production, and Subsequent Maintenance. It is a sequential life cycle model like a waterfall wherein each phase must be completed before the next phase begins. This model does not define a method to go back to the previous phase if requirements change.
Iterative Model: In this model, a project is started with an initial set of small requirements, with evolution of further requirements in an iterative manner after each is tested and validated. In each iteration, a version of the software is produced until the complete set of requirements are met. This approach gives a working version early in the process that enables learning as the development progresses. This can get resource intensive owing to repetitive development before product readiness.
Agile methodology: This methodology proposes evolutionary requirements and software development through collaboration across teams spanning management, development, testing, and customers. The project is divided into incremental builds developed in iterations. It advocates adaptation and continual improvement in process enabling rapid delivery.
SDLC Roles and Responsibilities
A significant aspect to a successful software product development is definition and alignment to the customer expectations during the life cycle with the primary goals being timely release, high quality, and optimal cost. This necessitates definition and identification of roles and responsibilities of stakeholders in the SDLC, that we examine below.
Product Owner (PO): The PO represents product development and is responsible to assess features that will be in the product release. The PO focuses on the development, deliverables, and prioritization of features to meet requirements. For example, in the Agile model, a PO writes user stories (customer requirements) for the software being developed and ensures product meets the expectations. Typical PO responsibilities are the following:
- Expertise in the product domain being developed with business and technology aspects with a vision for a roadmap
- Decision-making on scope and development of user stories
- Maintenance of the product backlog (prioritized features) with new or refined requirements
- Conflict resolution within team
- Collaboration with the stakeholders in building User Acceptance Criteria
Project manager (PM): The PM is responsible for planning and coordinating activities across the project stakeholders, creation and management of the project budget, management of resources, schedule, and risks.
A PM is normally responsible for the following:
- Assessment and recruitment software project staff
- Creation of a software project plan with schedule and risks
- Management of budget, team, deliverables, and project dynamics
- Resolution of non-technical blockers that the team may face
- Conduction of retrospectives for process improvement and providing regular updates to management
- Formal delivery and acceptance by the customer
Technical Lead (TL or Architect): The TL is the team leader for product development who collaborates with the developers to perform technical assessment, activity breakdown and estimates for the development. The TL drives the development team towards a quality product with the right architecture and design tenets, implementation standards and testing processes. The TL oversees the following:
- Formulation of the product architecture and technologies
- Working with the team and the PO on activity breakdown
- Development monitoring and support for technical issues
- Support in roadmap evolution
Software Development team: The software developers are responsible for implementing the software as per the expected technical requirements. They manage the following:
- Support in activity breakdown and estimation
- Design and implementation of deliverables as per the user stories
- Working with technical lead and status updates to management
- Working as a team collaboratively during implementation
Software Test team: The software testers are responsible for testing the software ensuring it meets customer requirements and is of high quality free of errors and defects. They handle the following:
- Formulation of a software test plan for functional and non-functional requirements
- Set up of test environments and creation of test cases and procedures
- Automation of test execution to accelerate testing using automation tools
- Test execution, results evaluation, and categorized issues logging
User Acceptance Testing and deployment: Every software solution is required to meet quality assurance criteria defined by the business. Before a formal release, the product can be deployed at a customer environment wherein the customers interact with the company’s representatives for a formal User Acceptance. The final solution with documents on installation, troubleshooting and usability is then deployed into the customer environments.
Maintenance team: After a software product is deployed in a customer environment, a maintenance team takes over the following responsibilities:
- Triaging and addressing issues (bug fixes) in the product that may occur due to unforeseen scenarios or testing escapes
- Work with development team to release an updated version with issues addressed as per the SDLC
It is important to set the right expectations to all the stakeholders throughout the SDLC with clear roles and responsibilities. Adaptation and effective communication across all stakeholders are important in ensuring that the customer requirements are well understood, and product releases made in a timely manner with high quality. Hence a suitable methodology, customer engagement, and clear assignment of roles and responsibilities will attribute to consistent success of the product roadmap and the business.