Plan Driven Vs Agile Development And Attributes Of Good Software

Study guide

Agile vs Plan Driven Development and Attributes of Good Software: Table and 10-Mark Answer

Agile vs plan driven development and the attributes of good software for CSC375 and BIT302: comparison table, Sommerville's choosing questions, agile manifesto, Scrum and XP, and a 10-mark outline.

2026-10-24 | notesharu team

Two questions keep returning in the software engineering papers: "differentiate between plan-driven and agile development" and "what are the attributes of good software". The first is in the Agile Software Development unit of TU BSc CSIT Software Engineering (CSC375, unit 3), the second in the Introduction unit (unit 1). BIT students meet both in BIT302 Software Engineering, in the fundamentals unit and in Software Process Models.

This article covers agile vs plan driven development with a comparison table, the questions Sommerville suggests for choosing between them, the agile manifesto values and principles, Scrum and XP in brief, and the four essential attributes of good software. It ends with a 10-mark outline.

Attributes of good software

Software is judged by more than whether it works. Sommerville lists four essential attributes that any professional system should have. The exact set depends on the system, but these four are the standard answer.

AttributeWhat it meansWhy it matters
MaintainabilityThe software can be changed to meet the changing needs of customers, by being written so that it can evolveBusiness needs change, and software that cannot change becomes useless; most of the lifetime cost of a system is spent on changes after delivery
Dependability and securityThe software does not cause physical or economic damage when it fails, is reliable and safe, and malicious users cannot access or damage the systemFailures cost users money and trust, and in critical systems can cost lives; security breaches expose data
EfficiencyThe software does not waste system resources such as memory and processor cycles, and responds quicklySlow or resource-hungry software frustrates users and raises hardware cost; responsiveness, processing time and memory use are all measures
AcceptabilityThe software is acceptable to the type of users for which it is designed: understandable, usable and compatible with the other systems they useA technically perfect system that users find confusing or incompatible will not be used

These attributes are product characteristics, not process steps. They are also in tension: making a system more efficient may make it less maintainable, and extra security checks can reduce usability. The engineer's job is to balance them for the system at hand.

Plan-driven development

In a plan-driven process all the process activities are planned in advance and progress is measured against that plan. The stages (requirements, design, implementation, testing) are separate, and the output of each stage is a detailed document that feeds the next. Waterfall is the purest example, though plan-driven development can also be incremental, with the increments planned from the start.

Plan-driven development relies on a detailed requirements specification, a design finished before coding, formal change control, and extensive documentation. Its strength is predictability: cost, schedule and deliverables can be stated up front, which suits contracts, regulators and large distributed teams. Its weakness is that changes after the specification is agreed are costly, and the customer sees software only late.

Agile development

Agile development is a family of methods built for rapid delivery of working software in a setting where requirements change. Specification, design and implementation are interleaved. The system is developed in a series of increments, with the customer involved in specifying and evaluating each one. Documentation is kept minimal, and communication is mostly face to face.

The Agile Manifesto states four values: individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation; and responding to change over following a plan. The right-hand items still have value, but the left-hand items are valued more.

The principles that support these values include customer involvement throughout, incremental delivery, people over process (trust the team's skills and let them work their own way), embracing change by designing the system to accommodate it, and maintaining simplicity in both the software and the process.

Scrum and XP in brief

Scrum organises work in fixed-length sprints, usually two to four weeks. A product backlog of requirements is prioritised by the product owner, the team selects items for the sprint backlog, holds a short daily scrum, and ends with a sprint review and retrospective. The Scrum Master removes obstacles.

Extreme Programming (XP) takes good practice to an extreme: very frequent releases, pair programming, test-first development, continuous integration, refactoring, collective ownership and user stories for requirements. Tests are written before code, and all tests must pass before a change is integrated.

Agile vs plan driven development: comparison table

PointPlan-drivenAgile
PlanningDetailed plan for the whole project made up frontPlans are short and change as work proceeds, planned per iteration
RequirementsFixed in a detailed specification before designEvolve; written as user stories or backlog items
Process structureSeparate, sequential stagesSpecification, design and coding interleaved
ChangeCostly, controlled through formal change managementExpected and welcomed at every iteration
DeliveryOften a single release at the end, or planned incrementsFrequent small releases of working software
Customer roleMainly at the start and the endContinuously involved, part of the team
DocumentationExtensive, a main output of each stageMinimal, the code and tests are the main record
TeamLarge teams, possibly in different placesSmall, co-located teams
Progress measureConformance to plan and documentsWorking software
Best forSafety-critical, large, regulated systems with stable requirementsSmall and medium business systems with changing requirements

In practice most projects mix the two. A common compromise is to use agile practice inside a plan-driven frame, or to plan the overall releases and let each release run in sprints.

Choosing between them: Sommerville's questions

The syllabus expects you to know the questions that decide which approach fits. If most answers on the first list are "yes", lean plan-driven.

Is a detailed specification and design needed before implementation, for example because the contractor must price the work? Is an incremental delivery strategy realistic, or must the system be delivered whole? How large is the system, and is the team large or distributed? What type of system is it, and does it need extensive analysis before implementation, as a real-time control system does? What is the expected lifetime, since long-lived systems need design documentation for the maintenance team? Are there regulations or external reviewers who demand documents?

Agile suits smaller co-located teams with an engaged customer and unstable requirements, where the team members are skilled enough to work with little documentation.

10-mark outline

For "compare plan-driven and agile development, and describe the attributes of good software":

  1. Define plan-driven development in two sentences, with waterfall as the example.
  2. Define agile development and state the four manifesto values.
  3. Give the comparison table with six to eight rows.
  4. State the factors that decide the choice and note that most real projects blend the two.
  5. List the four attributes, maintainability, dependability and security, efficiency, acceptability, with one line each on why they matter.

If only the attributes are asked for 5 marks, give the table above in short form and a closing line that the attributes can conflict and must be balanced.

The unit notes are on Introduction in CSC375 and Agile Software Development, with past questions on the CSC375 subject page. BIT students should use Software Engineering Fundamentals in BIT302 and Software Process Models.

Put it into practice

Browse all subjects