In preparation for my KM1 exam, I’m putting together some notes on a generic SDLC (Software Development Life Cycle). The table below will hopefully act as a good visual aid in remembering which job roles are the most important during each stage, as this seems to be the details I struggle with the most.
- Domain Expert – This is someone with a broad, objective perspective on the requirements of the project.
- Project Manager – Has overall charge of the development of the system, focusing on its key milestones and deliverables. They play a role in controlling the scope of the system.
- Business Analyst – Responsible for eliciting, documenting, analysing, validating and managing the system requirements.
- Team Leader – Responsible for facilitating the members of their team, removing obstacles and solving problems that would otherwise slow progress.
- Technical Architect / Designer – Responsible for all planning, wireframes, mapping etc. of the system, to inform the developers of the structure of the system to be developed.
- Developer – Responsible for delivering the system in accordance with its requirements. In some models of SDLC, they may also be involved in fleshing out detail in the requirements along with the users.
- Tester – Responsible for ensuring that elements of the system function as required, as well as the system as a whole.
- Release Manager – Responsible for implementing and managing release processes, through development, test, and production environments.
- End User – Has no responsibility for the system, they only use it and require that it functions correctly and as expected.
- Customer – The person / business paying for the system to be produced.
|Stage||Features||Roles & Responsibilities|
|Feasibility Study||This is where the cost and funding of the project is considered, along with the potential for success, the resources and costs involved, and whether the project will have a sufficient ROI (return on investment).||
|Requirements Engineering||This is where a system for storing and managing requirements as the project advances will be decided upon, and the requirements themselves discussed, crystallised and captured so they can become the input for the Design stage.||
|Design||Possible solutions that meet the requirements are considered and weighed against each other. A chosen design is then produced in sufficient detail to allow the developers to implement it.||
|Development||Technical components (either hardware or software) are created, procured or configured. The developers follow the design to ensure the system meets the requirements.||
|Testing||Components produced during development are tested to ensure they work properly and the system does what is required. This may include unit testing, component testing, system testing or acceptance testing, or any combination of these.||
|Implementation / Deployment||Until now, the system will have existed in isolation in order to protect other systems from faults. Having passed the testing stage, it can now be deployed into the live environment where it is to be accessed by the end user.||
|Maintenance||For as long as the system exists in its live state, it must be monitored for faults to ensure it stays in good working order. It may also be subject to enhancements and improvements. This stage lasts for the entire lifespan of the system, and once this stage ends the system is declared to be no longer supported.||