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.2describes the effects of program language developments on current practices
P3.1identifies the issues relating to the use of software solutions
P4.1analyses a given problem in order to generate a computer-based solution
P4.2investigates a structured approach in the design and implementation of a software solution
P4.3uses a variety of development approaches to generate software solutions and distinguishes between these approaches
P6.1describes 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:
Pros
Cons
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.
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:
Pros
Cons
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.
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:
Pros
Cons
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
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:
Pros
Cons
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.