Section 0: Module Objectives or Competencies
Course Objective or Competency | Module Objectives or Competency |
---|---|
The student will be able to evaluate and assess the multitude of systems development methodologies available in order to select the best methodologies or portions of methodologies for the software development project under consideration. | The student will be able to list and explain a variety of system development methodologies. |
Students will learn to evaluate and assess the multitude of system development methodologies available. | |
Students will will be able to explain that some methodologies, combination of methodologies, or adaptation of methodologies are more appropriate for certain types of projects. | |
Students will be able to discuss some of the conveniences and shortcomings of commercial off-the-shelf software. |
Section 1: Process Models
Some texts refer to these as process models, system development methodologies, or even life cycles.
All are techniques designed to combine analysis, design, and implementation into a single iterative and parallel process of activities.
- Waterfall Model
- Spiral Model
- Prototyping
- Incremental Approach
- Iterative Approach
- Evolutionary Approach
- Rapid Application Development
- CASE
- Agile
- Object-Oriented
- Commercial Off-the-Shelf Software (COTS)
Section 2: Waterfall Model

Waterfall Model
Features
- Most widely used.
- Commonly associated with Structured Methodology, which is based primarily on the processes the information system is to perform. The tools used include DFDs (Data Flow Diagrams), structure charts, and structured programming.
- Each step results in documentation.
- May be suitable for well-understood developments using familiar technology.
- Not suited to new, different systems because of specification uncertainty.
- Working version not available until late in process.
Many developers use the waterfall model with little or no iteration, which can lead to problems.
- System requirements are “locked in” after being determined (can't change).
- Limited user involvement (only in requirements phase, and only if developer has no common sense).
- Too much focus on milestone deadlines of Systems Development Life Cycle (SDLC) phases to the detriment of sound development practices.
- Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
- The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. One phase has to be completed before moving onto the next phase.
Modified Waterfall Model
In response to perceived problems with the pure waterfall model, many modified waterfall models have been introduced. The modified waterfall model uses the same phases as the pure waterfall model, but the phases are allowed to overlap when needed.

Modified Waterfall Model
Development approaches must incorporate iteration into the model, as well as periodic user walkthroughs. This is similar to the Incremental Approach below.
- Developers who neglect users and user walkthroughs stand little chance of success.
Section 3: Spiral Model

Spiral Model
There are various representations of the Spiral Model – Google it! Here is another common version.

Spiral Model
Features
- Invented by Barry Boehm (1988).
- Not a silver bullet, but considered to be one of the best approaches.
- Is a realistic approach to the problems of large scale software development.
- Cycles so as to involve users after every development phase.
- Can use prototyping during any phase in the evolution of product.
- Requires excellent management and risk assessment skills.
Section 4: Prototyping

Prototyping
Prototyping is a method of quickly developing a version of the new system that allows users to interact, evaluate, and provide feedback.
- Ideally, it is a mock-up that serves as mechanism for identifying requirements.
- It is used to seek initial reaction from users and management, as well as suggestions about changing or enhancing the prototype, possible innovations, and revision plans for what needs to be done next.
- Reduces the time needed to develop requirements for a system.
- Reduces the time before the user sees something concrete from the design effort.
- Provides rapid feedback from the user to the designer.
- Enhances both designer and user understanding of what the system should accomplish.
- Results in meaningful user involvement in the design process.
- May be used as part of the SDLC or as an alternative to the SDLC.
Types of Prototypes
- Throwaway prototypes – functional but not full-featured model; may be inefficient (also called patched-up prototype).
- Nonoperational prototypes – nonworking scale model for the purpose of testing certain aspects of design (may omit error-handling, help, etc., in order to test specific features).
- First-of-a-series prototype – fully functional, but restricted to a single site until thoroughly tested.
- Selected features prototype – includes some, but not all of the desired features (stubs); may evolve into final system.
Section 5: Incremental Approach
The incremental approach involves dividing the project into various independent parts and developing these sub-parts at the same rate or even at different rate and integrating them when ready.

Incremental Waterfall Approach
Features
- Applies an iterative philosophy to the waterfall model.
- Divides the functionality of a system into increments and uses a linear sequence of development on each increment.
- The first increment delivered is usually the core product, i.e., only the basic functionality.
- Reviews of each increment impact the design of later increments.
- Manages risk well.
- Agile lifecycles are often variations on this basic lifecycle, with the increment period being from 1 to 4 weeks. Traditionally, the increment period is 3 to 6 months.
Benefits
In addition to the benefits that arise from being a variation of the waterfall model, the incremental model has the following benefits:
- Less cost and time is required to make the first delivery.
- Less risk is incurred to develop the smaller systems represented by the increments.
- User requirement changes may decrease because of the quicker time to first release.
- Incremental funding is allowed; that is, only one or two increments might be funded when the program starts.
Drawbacks
However, if the incremental model is inappropriate or misused, it has the following disadvantages:
- Fielding of initial increments may destabilize later increments through unplanned levels of user change requests.
- If requirements are not as stable or complete as initially thought, increments might be withdrawn from service, reworked, and rereleased.
- Managing the resulting cost, schedule, and configuration complexity may exceed the capabilities of the organization.
Section 6: Iterative Approach

Iterative/Incremental Development
Iterative development does not necessarily refer to the development of independent parts, but rather each iteration refines what has been developed in previous iterations.
Iterative and incremental development are essential parts of the modified waterfall models, Rational Unified Process, Extreme Programming and generally the various agile software development frameworks.
Features
- System is developed in chunks of functionality.
- The overall system is developed incrementally.

Incremental Model
Advantages
- Generates working software quickly and early during the software life cycle.
- More flexible – less costly to change the scope and requirements.
- Easier to test and debug during a smaller iteration.
- Easier to manage risk because any risky piece can be identified and handled during its iteration.
- Each iteration is an easily managed milestone.
Disadvantages
- Each phase of an iteration is rigid and phases do not overlap each other.
- Problems may arise pertaining to system architecture because not all requirements are gathered up front for the entire software life cycle.
Section 7: Evolutionary Approach

Evolutionary Development
- The system is developed using a prototype and refined through user feedback.
- Changes are viewed as the norm of the model.
- The spiral, iterative, Agile, prototyping, and incremental models are all evolutionary.
Concurrent Activities

Concurrent Activities
Problems
- Lack of process visibility.
- Systems are often poorly structured.
- Special skills may be required.
Applicability
- For small or medium-size interactive systems.
- For parts of large systems (e.g., the user interface).
- For short-lifetime systems.
Section 8: Rapid Application Development

Rapid Application Development
Rapid application development (RAD) is a software development process that builds usable systems quickly (less than six months) and without extensive planning by using prototyping and by providing a number of tools to help build graphical user interfaces that would normally take a large development effort.
- Methodology to radically decrease design and implementation time.
- Involves extensive user involvement, prototyping, JAD (Joint Application Development) sessions, integrated CASE tools, and code generators.
Features
- Similar to waterfall but uses a very short development cycle (60 to 90 days to completion).
- Uses component-based construction and emphasizes reuse and code generation.
- Use multiple teams on scalable projects.
- Requires developers and customers who are heavily committed.
- Performance can be a problem.
- Difficult to use with new technology.
Section 9: Computer-Aided Software Engineering (CASE) Tools
- Diagramming tools enable graphical representation.
- Computer displays and report generators help prototype how systems “look and feel”.
- Analysis tools automatically check for consistency in diagrams, forms, and reports.
- A central repository provides integrated storage of diagrams, reports, and project management specifications.
- Documentation generators standardize technical and user documentation.
- Code generators enable automatic generation of programs and database code directly from design documents, diagrams, forms, and reports.
Examples of CASE Usage Within the SDLC

Section 10: Agile Methodologies

Agile Life Cycle
- Motivated by recognition of software development as fluid, unpredictable, and dynamic.
- Some key principles
- Adaptive rather than predictive.
- Emphasize people rather than roles.
- Self-adaptive processes.
Additional Views of the Agile Approach

The Agile Approach

The Agile Approach
The Agile Methodologies group argues that software development methodologies adapted from engineering generally do not fit with real-world software development.

Not Doing Agile Development
When to use Agile Methodologies
If your project is small and involves
- Unpredictable or dynamic requirements.
- Responsible and motivated developers.
- Customers who understand the process and will get involved.
Five Critical Factors that Distinguish Agile and Traditional Approaches

Distinguishing Factors
Section 11: Object-Oriented

Phases of OOSAD-based development
- The development is based primarily on the objects (related data and behaviors grouped together) rather than data or processes.
- Class diagrams, interaction diagrams, state diagrams and object-oriented programming are the tools most commonly used in this type of methodology.
- There are many different versions of this methodology, but the Rational Unified Process (RUP) is the most commonly used.
Rational Unified Process
- RUP establishes four phases of development: inception, elaboration, construction, and transition.
- Each phase is organized into a number of separate iterations.
- RUP is the most commonly used object-oriented analysis and design process.
Section 12: Commercial Off-the-Shelf Software

Cost vs. Custom
- Often the best solution for organizations is to purchase an existing information system from a vendor. This solution may need to be customized to the organization.
- Payroll applications are rarely effective for an organization to build from scratch.
- ERP systems like SAP or PeopleSoft are examples of generic commercial systems that are available.
- Shopping cart applications are another example.
Section 13: Predictive and Adaptive Approaches to the SDLC
There are two types of Systems Development Life Cycle approaches – predictive approaches and adaptive approaches.
- predictive approach to the SDLC — an approach that assumes the project can be planned in advance
and that the new information system can be developed according to the plan.
- The SDLC that is the most predictive is the original waterfall model.
- adaptive approach to the SDLC — an approach that assumes the project must be more flexible
and adapt to changing needs as the project progresses.
- An example of an adaptive approach is the spiral model, or even the modified waterfall model.