System Development Methodologies

From Structured Approaches to RAD

Structured System Development

  • Follows the traditional System Development Life Cycle (SDLC) phases: Planning, Analysis, Design, and Implementation.
  • Each phase must be fully completed and signed off before the next phase can begin (a "gated" or "step-by-step" process).
  • Key methodologies include the Waterfall, Parallel, and V-Model approaches.
  • Primary Goal: Emphasizes heavy upfront planning and thorough documentation to ensure a high-quality, correct, and predictable outcome.

The Waterfall Model

  • The original, classic SDLC model where progress flows in one direction, like a waterfall.
  • Best For: Projects where requirements are well-understood, stable, and unlikely to change (e.g., building a bridge).
  • All requirements are gathered and "frozen" during the Analysis phase before any coding starts.
  • There is very little room for changes or customer feedback until the very end of the project.
Waterfall Model

Weaknesses of the Waterfall Model

  • Very Long Delivery Time: The full cycle can take months or years to deliver a final product.
  • Delayed Feedback: Working software is not seen by the client until late in the cycle, which can hide major design flaws.
  • Inflexible to Change: A change in requirements often means starting over from the beginning, leading to major cost and time increases.
  • High Risk: If the initial requirements are wrong, the entire project can be a failure.

Parallel Development Model

  • An evolution of the Waterfall model designed to save time.
  • After the analysis phase, the project is split into several independent sub-projects.
  • These sub-projects are designed and implemented in parallel by different teams.
  • Challenge: Requires careful planning to ensure sub-projects are truly independent. Integrating them all at the end can be complex and introduce new bugs.
Parallel Model

The V-Model

  • Also known as the Verification and Validation model, it puts a heavy emphasis on testing.
  • It links each development stage directly to a corresponding testing stage.
  • For every phase on the left side of the 'V' (e.g., System Design), a testing plan is created on the right side (e.g., System Testing).
  • This improves quality by catching defects early, but it remains as rigid and inflexible as the Waterfall model.
V-Model

Limitations of Structured Approaches

  • Core Problem: Rigidity. All structured approaches assume that requirements are stable and perfectly understood from the start.
  • Poor Fit for Modern Business: They are not well-suited for today's dynamic business environments where market needs can change overnight.
  • Delayed Value: No business value is delivered until the project is fully complete.
  • A change in requirements late in the project is often disastrous, leading to significant delays and budget overruns.

Why So Many Approaches?

  • No Single "Best" Method: The right choice depends entirely on the project's unique needs and characteristics.
  • Project Characteristics: Consider the project's size, complexity, technical risk, budget, and deadline.
  • Requirement Stability: Are the requirements clear and stable, or are they vague and likely to evolve over time?
  • User Availability: How much time can the end-users or clients commit to providing feedback during the project?

Part 2: Rapid Application Development (RAD)

A Faster, More Flexible Way to Build Software

What is RAD?

  • A response to the frustration with slow, rigid waterfall methods from the 1980s.
  • Core Principle: "Software is more like clay, not steel." It should be malleable and easy to change during development.
  • Focuses on developing systems quickly through frequent iterations, prototypes, and user feedback.
  • Embraces changing requirements, even late in the development cycle.
clay vs steel

Key RAD Techniques & Tools

  • CASE Tools: Software packages that help automate and manage the development process.
  • JAD Sessions: Intensive workshops where users and developers collaborate to define requirements.
  • Visual Programming Languages: Tools that allow for drag-and-drop UI creation to speed up development.
  • Prototyping: Creating working models of the application to gather early user feedback.
  • Code Generators: Tools that automatically write boilerplate or repetitive code.

The RAD Methodology Cycle

  1. Define Requirements: Gather a rough list of requirements in collaborative sessions (JAD).
  2. Prototype: Quickly build a working model (a prototype) that demonstrates the key features.
  3. Gather Feedback: Show the prototype to the client and users to get their input.
  4. Incorporate & Iterate: Refine the prototype based on feedback. This loop repeats until the client is satisfied.
  5. Deliver: Finalize and optimize the approved prototype and deliver the finished product.
V-Model

RAD Approach 1: Iterative Development

  • The overall system is built in a series of versions, or "iterations."
  • The first iteration includes only the most critical, core features.
  • Each subsequent iteration adds more features based on user feedback from the previous version.
  • It's like a set of mini-waterfall projects that build on each other.
  • Problem: Users receive an incomplete system at first and must be patient for the final, feature-complete version.
V-Model

RAD Approach 2: System Prototyping

  • A preliminary, working model of the system is built quickly.
  • This prototype is used to gather user feedback and clarify requirements.
  • The prototype is then gradually improved and refined until it evolves into the final system.
  • Benefit: Users can see and interact with a tangible system very early on.
  • Challenge: The initial simple design might make it difficult to add complex features later.
Prototype Image

Agile Development

  • A modern philosophy that contains a group of methodologies (e.g., Scrum, Kanban, XP).
  • Prioritizes individuals and interactions over processes and tools.
  • Values working software over comprehensive documentation.
  • Emphasizes customer collaboration and responding to change over following a rigid plan.
  • Work is done in small, manageable increments called "sprints" or "iterations."

RAD vs. Agile

  • RAD: A specific methodology focused on rapid prototyping and user feedback to accelerate delivery.
  • Agile: A broader philosophy or mindset that guides how teams work together. RAD can be seen as one way to be Agile.
  • Agile is often more prescriptive about team roles (e.g., Scrum Master), ceremonies (e.g., Daily Standup), and workflow.
  • RAD is primarily focused on the prototyping and feedback cycle.
V-Model

Advantages of RAD

  • Speed & Lower Cost: Faster development cycles and reduced rework lead to lower costs.
  • Flexibility & Adaptability: Changes are expected and can be easily incorporated at any stage.
  • Higher User Satisfaction: Constant user involvement ensures the final product meets their actual needs.
  • Reduced Risk: Key risks are identified early through prototyping, not at the end of the project.

Disadvantages of RAD

  • Doesn't Scale Well: Can be chaotic and hard to manage with very large teams and complex projects.
  • Requires High Commitment: Needs significant and consistent time commitment from both developers and clients for feedback sessions.
  • Interface Focus: The focus on the user interface can sometimes lead to neglecting backend architecture and technical quality.
  • Not for All Projects: Unsuitable for projects with a high degree of technical risk or for mission-critical systems.

When is RAD a Good Fit?

Good for:

  • Projects with unclear or evolving requirements.
  • Smaller, modularized projects.
  • Internal business tools or customer-facing web portals.
  • When there's a need to deliver a functional system quickly.

Not so good for:

  • Life-or-death, mission-critical systems (e.g., flight controls).
  • Large-scale projects that require many developers.
  • Projects where the client is unavailable for frequent feedback.
  • Systems with complex technical requirements that cannot be easily prototyped.

Tools that Enable RAD

  • Design & Prototyping Tools: Figma, Sketch, and Adobe XD allow for creating interactive mockups that look and feel like a real application.
  • User Testing & Feedback Platforms: Tools like UserTesting.com and InVision allow for capturing remote user feedback on prototypes.
  • Low-Code/No-Code Platforms: Platforms like OutSystems or Microsoft Power Apps bundle development tools to build and deploy applications with minimal hand-coding.

Conclusion

RAD is a powerful approach for the right project.

It prioritizes speed, flexibility, and user feedback to deliver valuable software faster and more effectively than traditional methods, ensuring the final product is what the user truly needs.

Check out the following example: Example Project