8.1.3 Software development approaches



There are a number of different approaches that can be taken when developing software. Five are prescribed for study in this course. There are many ways in which software is commercially developed, from an ad-hoc approach to the more formalised structured approach. The approach or combination of approaches used depends on the nature of the problem to be solved, the resources available and the experience of those involved. This topic introduces students to some of the alternative approaches and the relevance of each.

Outcomes
A student:
P2.2 describes the effects of program language developments on current practices
P3.1 identifies the issues relating to the use of software solutions
P4.1 analyses a given problem in order to generate a computer-based solution
P4.2 investigates a structured approach in the design and implementation of a software solution
P4.3 uses a variety of development approaches to generate software solutions and distinguishes between these approaches 
P6.1 describes the skills involved in software development.


Students learn about:

Students learn to:

Structured approach

  • stages in program development
    • defining and understanding the problem
    • planning and designing
    • implementing
    • testing and evaluating
    • maintaining
  • characteristics of the structured approach, including:
    • distinct formal stages
    • long time periods
    • large-scale projects
    • large budgets
    • involvement of  a development team consisting of:
      • analysts
      • designers
      • programmers
      • clients (users and management)
Agile approach
  • speed of getting solution to market
  • interactive approach with selective refinement
  • working version delivered after each iteration
  • responds well to changing specifications
  • close collaboration between development team and client throughout the development process

Prototyping

  • modeling of a proposed solution or part of a solution
  • progressive refinement of the model in response to feedback

  • identify each of these stages in practical programming exercises


















  • design and develop a limited prototype as a proposed solution, or part of a solution, to a problem

Rapid applications development approach (RAD)

  • characteristics of the rapid approach, including:
    • lack of formal stages
    • use of existing routines
    • use of appropriate applications to develop the RAD solution
      • drag and drop programming environments
      • common application packages such as spreadsheets, databases
    • communication between developer and client
    • short time period
    • small-scale projects
    • small budgets

End user approach

  • characteristics of the end user approach, including:
    • end user as the developer and maintainer
    • typically uses RAD and/or prototyping
    • the developer is the client, therefore there are no communication issues
    • small budget and/or short time period for development

Selecting an appropriate development approach

  • software solutions that have been developed using a single approach
  • software solutions that have been developed using a combination of approaches

  • analyse the effectiveness of the prototyping approach in developing a software solution
  • use an existing software package to develop a solution using a RAD approach





  • discuss the advantages and disadvantages of end user developed software




  • compare and contrast structured and agile approaches
  • recognise reasons for the failure of solutions
  • select appropriate software development approaches for specific purposes
  • identify characteristics of projects that lend themselves to a specific development approach
  • recognise that a single solution may involve a combination of approaches
  • identify characteristics of projects that require a combination of approaches



Various types of approaches and when they are suitable
Introduction to Software development approaches

This video gives a brief introduction to software development approaches and a good explanation of why so many are necessary


Structured/Waterfall Approach

Waterfall Model Pros & Cons

Advantage

The advantage of waterfall development is that it allows for departmentalization and control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one.

Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds in strict order.

Disadvantage

The disadvantage of waterfall development is that it does not allow for much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.

The following table lists out the pros and cons of Waterfall model:

ProsCons
  • Simple and easy to understand and use
  • Easy to manage due to the rigidity of the model . each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Works well for smaller projects where requirements are very well understood.
  • Clearly defined stages.
  • Well understood milestones.
  • Easy to arrange tasks.
  • Process and results are well documented.
  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Not a good model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Not suitable for the projects where requirements are at a moderate to high risk of changing. So risk and uncertainty is high with this process model.
  • It is difficult to measure progress within stages.
  • Cannot accommodate changing requirements.
  • Adjusting scope during the life cycle can end a project.
  • Integration is done as a "big-bang. at the very end, which doesn't allow identifying any technological or business bottleneck or challenges early.

Waterfall




Agile Approach


Agile Vs Traditional SDLC Models

Agile is based on the adaptive software development methods where as the traditional SDLC models like waterfall model is based on predictive approach.

Predictive teams in the traditional SDLC models usually work with detailed planning and have a complete forecast of the exact tasks and features to be delivered in the next few months or during the product life cycle. Predictive methods entirely depend on the requirement analysis and planning done in the beginning of cycle. Any changes to be incorporated go through a strict change control management and prioritization.

Agile uses adaptive approach where there is no detailed planning and there is clarity on future tasks only in respect of what features need to be developed. There is feature driven development and the team adapts to the changing product requirements dynamically. The product is tested very frequently, through the release iterations, minimizing the risk of any major failures in future.

Customer interaction is the backbone of Agile methodology, and open communication with minimum documentation are the typical features of Agile development environment. The agile teams work in close collaboration with each other and are most often located in the same geographical location.

Agile Model Pros and Cons

Agile methods are being widely accepted in the software world recently, however, this method may not always be suitable for all products. Here are some pros and cons of the agile model.

Following table lists out the pros and cons of Agile Model:

ProsCons
  • Is a very realistic approach to software development
  • Promotes teamwork and cross training.
  • Functionality can be developed rapidly and demonstrated.
  • Resource requirements are minimum.
  • Suitable for fixed or changing requirements
  • Delivers early partial working solutions.
  • Good model for environments that change steadily.
  • Minimal rules, documentation easily employed.
  • Enables concurrent development and delivery within an overall planned context.
  • Little or no planning required
  • Easy to manage
  • Gives flexibility to developers
  • Not suitable for handling complex dependencies.
  • More risk of sustainability, maintainability and extensibility.
  • An overall plan, an agile leader and agile PM practice is a must without which it will not work.
  • Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
  • Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.
  • There is very high individual dependency, since there is minimum documentation generated.
  • Transfer of technology to new team members may be quite challenging due to lack of documentation.

Agile


Agile Vs Waterfall - Four Massive Differences



Software Development Project Management Methodologies




Prototyping Approach

Software Prototyping Pros and Cons

Software prototyping is used in typical cases and the decision should be taken very carefully so that the efforts spent in building the prototype add considerable value to the final software developed. The model has its own pros and cons discussed as below.

Following table lists out the pros and cons of Big Bang Model:

ProsCons
  • Increased user involvement in the product even before implementation
  • Since a working model of the system is displayed, the users get a better understanding of the system being developed.
  • Reduces time and cost as the defects can be detected much earlier.
  • Quicker user feedback is available leading to better solutions.
  • Missing functionality can be identified easily
  • Confusing or difficult functions can be identified
  • Risk of insufficient requirement analysis owing to too much dependency on prototype
  • Users may get confused in the prototypes and actual systems.
  • Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans.
  • Developers may try to reuse the existing prototypes to build the actual system, even when its not technically feasible
  • The effort invested in building prototypes may be too much if not monitored properly

Software Engineering Prototyping Model


Prototyping Method



RAD Approach

RAD Model Pros and Cons

RAD model enables rapid delivery as it reduces the overall development time due to reusability of the components and parallel development.

RAD works well only if high skilled engineers are available and the customer is also committed to achieve the targeted prototype in the given time frame. If there is commitment lacking on either side the model may fail.

Following table lists out the pros and cons of RAD Model:

ProsCons
  • Changing requirements can be accommodated.
  • Progress can be measured.
  • Iteration time can be short with use of powerful RAD tools.
  • Productivity with fewer people in short time.
  • Reduced development time.
  • Increases reusability of components
  • Quick initial reviews occur
  • Encourages customer feedback
  • Integration from very beginning solves a lot of integration issues.
  • Dependency on technically strong team members for identifying business requirements.
  • Only system that can be modularized can be built using RAD.
  • Requires highly skilled developers/designers.
  • High dependency on modeling skills.
  • Inapplicable to cheaper projects as cost of modeling and automated code generation is very high.
  • Management complexity is more.
  • Suitable for systems that are component based and scalable.
  • Requires user involvement throughout the life cycle.
  • Suitable for project requiring shorter development times.

Rapid Application Development ‎(RAD)‎



Useful Programming Resources

YouTube Video







Comments