Software Development Methodology

Software Development Methodology: A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.

Most popular software development methodology is the Agile Software Development but we will learn few other models.

Software Development Life Cycle(SDLC): The systems development life cycle (SDLC), also referred to as the application development life-cycle, is a term used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system.

Waterfall Model: Here the main theme is big design up front. The waterfall model was first defined by Winston W. Royce in 1970 and now just become a theoretical model.  Royce’s original model is shown Below:

Waterfall Method

Key Features:

  • Time spent early on making sure requirements and design are correct.
  • Make sure each phase is 100% complete and absolutely correct before proceeding to the next phase.
  • Program requirements should be set in stone before design begins.
  • The program’s design should be perfect before people begin to implement the design.
  • Excellent technical documentation is part of the deliverables and it is easier for new programmers to get up to speed during the maintenance phase.
  • Design errors are captured before any software is written saving time during the implementation phase.
  • The approach is very structured and it is easier to measure progress by reference to clearly defined milestones.
  • The total cost of the project can be accurately estimated after the requirements have been defined (via the functional and user interface specifications).
  • Testing is easier as it can be done by reference to the scenarios defined in the functional specification.
Disadvantages of the waterfall method
  • Clients will often find it difficult to state their requirements at the abstract level of a functional specification and will only fully appreciate what is needed when the application is delivered.  It then becomes very difficult (and expensive) to re-engineer the application.
  • The model does not cater for the possibility of requirements changing during the development cycle.
  • A project can often take substantially longer to deliver than when developed with an iterative methodology such as the agile development method.

Agile Methodology: Agile development delivers a working application, free of all known bugs, at the end of each development iteration.  The resulting alpha release is then delivered to the client for testing and feedback. Most developers practicing agile development will take between one and four weeks to deliver each alpha to the client.

The agile method emphasizes face-to-face or telephone contact between the developer and business experts rather than written documentation. Working software, rather than progress reports, communicates success to the client during the development process.

                 Agile Methodology

Advantages of agile development
  • Very high levels of Customer satisfaction and confidence by rapid and continuous delivery of working software
  • Working software is delivered frequently
  • Even late changes in requirements are welcomed
  • Face-to-face or telephone conversations are the best form of communication
  • Projects are built around motivated individuals who fully understand what the business needs
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Regular adaptation to changing circumstances
Disadvantages of agile development
  • Requires very experienced developers who understand business and administration as well as software development
  • Because the requirements of the application are largely unknown at the beginning of the project it is difficult to provide an accurate time and cost estimate at the beginning of the development cycle