Skip to content

Latest commit

History

History
16 lines (11 loc) 路 2.44 KB

File metadata and controls

16 lines (11 loc) 路 2.44 KB

Systems Development Life Cycle

The system development life cycle is the process of splitting of the software development into distinct phases, to better the planning and management of the overall project. Following a system development life process strictly greatly increases the likelihood that all the intended deliverables will be completed on time, and meeting requirements.

The methodology used in this project followed the principles of agile, more specifically personal-SCRUM (one-man agile). This is an iterative approach, where the project will be divided into a set of phases, called sprints. Each sprint had a set of requirements presented in the form of user stories and acceptance criteria. The sprint was only marked as complete once each story has been developed, implemented and tested (or descoped). User stories were prioritised and given a complexity estimate before each sprint, to ensure the best use of time and resources.

Several other options were considered, before agile was chosen. Another common approach is waterfall. Waterfall is much more rigid and better used when all requirements are known beforehand, and a single phase of planning, development, implementation and testing takes place. It can be easier to predict and plan for, however considerably less adaptable. Since a key component of this project is research and user experience testing, flexibility is key. The final deliverable may have slight differences from the proposed deliverable, but will still meet all requirements, and will probably be better than the original plan.

The development phase of the project comprised of twelve, two-week sprints. During each sprint, the code was tested against each of the acceptance criteria specified for the user stories. The iterative fashion of this approach ensured that the most important requirements were prioritised, and this in turn made it possible to finish the project on time.

Personal-SCRUM is a type of agile development used in one-person teams. Ravikant explains how agile can be applied to a single person team in the paper: Extreme programming for a single person team. He explains how it is based around simplicity, communication, feedback, and courage. There are several key parts of agile that it is essential to stick to while working in a one-man team.

  • Test Driven Development (TDD)
  • Refactoring
  • Continuous Integration
  • Doing the simplest possible to make the solution work, then refactoring
  • Automated deployment