nanyang-system-developers

Software Development Lifecycle (SDLC)

Overview

Most new developers think writing code and getting it to run is all there is to coding. But once they launch a product, they quickly realise that:

  1. Continually refactoring code to incorporate new features is draining and not always fun.
    • With experience, they learn to plan ahead, anticipating components and services that may be needed
  2. Spending hours working on an implementation, only to find that there are clashing requirements, is extremely unfun.
    • With experience, they learn to analyse, thinking about and clarifying the goals of the project, deducing what the project requirements are, and selecting options for components beforehand
  3. Initially believing that deploying the code means the job is done, only to discover that maintenance is ongoing.
    • With experience, they learn to design systems with scalability and future modifications in mind, making sure that the system architecture can support updates and new features without breaking existing functionality
  4. testing isn’t a one-off step before deployment, and continuous testing is necessary.
    • With experience, they learn the importance of testing early and often, integrating testing into every phase of the development process to catch issues before they reach production
  5. software will not manage itself, and unexpected issues happen.
    • With experience, they learn to deploy with care and monitor systems post-deployment, ensuring that proper alerts and monitoring are in place to quickly identify and resolve issues
  6. software will stagnate once released, unaware of the evolving needs and technologies that could make their product obsolete.
    • With experience, they learn to value maintenance and evolution, recognizing the need to keep the software relevant through regular updates and improvements, maintaining robust documentation to ease transitions and ensure continuity.

The image depicts the Software Development Cycle represented in a circular flowchart with six stages: Planning (Red), Analysis (Blue), Design (Dark Blue), Implementation (Green), Testing & Integration (Yellow), Maintenance (Orange). The cycle is organized in a circular layout to emphasize the iterative nature of software development.

The above steps are typical of the software development lifecycle (SDLC), a process used by the software industry to design, develop, and test high-quality software. It includes phases such as planning, analysis, design, implementation, testing, deployment, and maintenance.

Further reading