Software Project Management and Documentation

Chapter 4
Requirements Planning and Scope Management

Diploma in Software Engineering
Software Project Management and Documentation   •   Diploma

Requirements Planning and Scope Management

Introduction

Requirements planning and scope management provide the foundation for successful software projects. A project can have skilled developers, modern tools and adequate funding, yet still fail if the team builds the wrong product, misunderstands stakeholder expectations or allows uncontrolled work to enter the project. Requirements describe what stakeholders need from a system and the conditions under which it must operate. Scope management determines which requirements are included, how they will be delivered and how changes will be evaluated.

For software professionals, requirements are not merely a list of features. They are an agreement about value, behaviour, quality, constraints, assumptions and acceptance conditions. Requirements planning connects business goals to deliverable work. It supports estimation, scheduling, testing, procurement, risk management and stakeholder communication.

This chapter explains how to elicit, analyse, prioritize, validate and trace requirements. It also examines user stories, use cases, product backlogs, work breakdown structures and formal change control. The central principle is that scope should be deliberately defined, transparently negotiated and continuously controlled—not frozen blindly and not changed casually.

Learning Objectives

By the end of this chapter, you should be able to:

  1. Distinguish functional, non-functional, business, stakeholder, solution and transition requirements.
  2. Plan and conduct effective requirements elicitation.
  3. Write clear user stories, use cases and acceptance criteria.
  4. Prioritize requirements using transparent methods.
  5. Validate requirements for quality, feasibility and stakeholder agreement.
  6. Construct a product backlog and a requirements traceability matrix.
  7. Develop a work breakdown structure from approved scope.
  8. Identify and control scope creep through formal change management.
  9. Apply these practices in a realistic software project.

1. Requirements and Scope

A requirement is a documented need, capability, condition or constraint that a product, service or process must satisfy. Requirements may originate from customers, users, regulators, managers, technical specialists or operational environments.

Project scope is the boundary of the project. It specifies the product or service to be produced and the work required to produce it. Product scope concerns the characteristics and functions of the software. Project scope concerns the work performed to deliver that software. Confusing these two ideas causes planning errors. For example, “online payment” is product scope, while “integrate the payment gateway, test transactions and deploy configuration” is project work.

A useful requirements hierarchy is:

LevelMeaningExample for a clinic system
Business requirementWhy the initiative existsReduce appointment waiting time
Stakeholder requirementWhat a stakeholder needsReceptionists need a clear daily schedule
Solution requirementWhat the system must provideThe system shall display available appointments
Functional requirementBehaviour or serviceThe system shall allow a patient to cancel an appointment
Non-functional requirementQuality or constraintSearch results shall appear within two seconds for 95% of requests
Transition requirementTemporary condition for adoptionExisting patient records shall be migrated before launch

A requirement should be separated from a design decision where possible. “The system shall allow users to reset passwords by email” is a requirement. “Use a particular framework and database table” is normally a design or implementation decision. Prematurely prescribing solutions can prevent better alternatives from being considered.

Functional and non-functional requirements

Functional requirements describe services, responses, calculations, workflows and business rules. They answer the question: what must the system do? Examples include creating an account, generating an invoice or preventing an unauthorised transaction.

Non-functional requirements describe qualities, constraints and operating conditions. They answer the question: how well, under what conditions or according to which constraints must the system operate? Common categories include:

  • performance and capacity;
  • availability and reliability;
  • security and privacy;
  • usability and accessibility;
  • maintainability and portability;
  • legal, regulatory and organisational compliance.

Non-functional requirements must be measurable whenever practical. “The system shall be fast” is weak. “The system shall return the dashboard within two seconds for at least 95% of requests under 500 concurrent users” is testable. The statement must also identify the measurement context, such as environment, load and measurement method.

2. Requirements Planning

Requirements planning establishes how requirements will be discovered, documented, assessed, approved, traced and changed. It is normally described in a requirements management plan or incorporated into the project management plan.

A requirements plan should define:

  • stakeholders and their responsibilities;
  • elicitation techniques and schedules;
  • documentation standards and templates;
  • requirement identifiers and version control;
  • prioritization and approval procedures;
  • traceability expectations;
  • validation and acceptance activities;
  • change-control authority and thresholds;
  • tools, repositories and access permissions.

Planning should be proportionate. A safety-critical system requires stronger evidence, independent review and formal approval than a small internal prototype. Nevertheless, a small project still benefits from unique identifiers, acceptance criteria and a visible decision record.

Stakeholder analysis

Stakeholders are people or organisations that affect, are affected by or perceive themselves to be affected by the project. The project manager should identify their interests, influence, knowledge, availability and potential conflicts. A stakeholder register can record this information.

Stakeholder analysis is not a popularity contest. A highly influential executive may control funding, while a front-line user may possess essential operational knowledge. Both perspectives matter. The team should also consider vulnerable users, accessibility needs, data subjects, support staff, auditors and external regulators.

Elicitation techniques

No single technique reveals all requirements. Effective elicitation combines methods and compares evidence.

Interviews provide depth and allow follow-up questions. They are useful for understanding responsibilities, exceptions and pain points, but interviewer bias and selective memory may affect results.

Workshops bring stakeholders together to agree processes, priorities and terminology. A skilled facilitator prevents dominant participants from controlling the outcome.

Observation and contextual inquiry reveal actual work practices, including informal workarounds that participants may omit from interviews.

Questionnaires can collect views from many people efficiently, but closed questions may conceal important concerns.

Document and interface analysis examines policies, forms, reports, existing systems, contracts and regulations.

Prototyping makes uncertain requirements visible. A sketch or interactive prototype can reveal misunderstandings earlier than a written specification.

Scenarios and story mapping explore how users achieve goals across a sequence of activities.

Elicitation should begin with open exploration and progress toward precise decisions. The analyst should record assumptions, unresolved issues, business rules, sources and evidence rather than presenting early guesses as facts.

3. Writing High-Quality Requirements

A good requirement is clear, necessary, feasible, testable and traceable. The following quality characteristics are particularly important:

  • Correct: represents a genuine stakeholder or business need.
  • Unambiguous: has one reasonable interpretation.
  • Complete: includes relevant conditions, responses and exceptions.
  • Consistent: does not conflict with another requirement.
  • Feasible: can be delivered within technical, legal, time and budget constraints.
  • Verifiable: can be demonstrated through inspection, analysis, test or review.
  • Prioritized: has an agreed value or urgency.
  • Traceable: has a source and links to downstream work and evidence.
  • Modifiable: can be changed without rewriting unrelated material.

A useful formal style is: “The system shall [observable behaviour] when [condition], subject to [constraint].” For example: “The system shall lock an account after five unsuccessful login attempts within a 15-minute period and shall notify the account owner.” The requirement still needs security review and clarification of the lockout duration, notification channel and administrator override.

Avoid vague terms such as easy, adequate, user-friendly, fast and secure unless they are operationally defined. Avoid combining several independent obligations into one requirement. Atomic requirements are easier to estimate, test and change.

User stories

User stories are concise expressions of user value, commonly written as:

As a [role], I want [capability], so that [benefit].

Example: “As a patient, I want to receive a reminder before an appointment so that I do not miss it.”

A story is not a complete specification. It is a conversation prompt supported by acceptance criteria. The INVEST heuristic is useful: stories should be Independent, Negotiable, Valuable, Estimable, Small and Testable. Independence is an aspiration rather than an absolute rule; technical dependencies may remain, but the team should minimize unnecessary coupling.

Acceptance criteria state the conditions for completion. Given–When–Then notation is one practical form:

  • Given a patient has a confirmed appointment;
  • When the reminder period is reached;
  • Then the system sends the configured reminder through the permitted channel;
  • And records the delivery status.

Acceptance criteria should cover normal behaviour, invalid input, permissions, boundary conditions and relevant non-functional expectations.

Use cases

A use case describes interactions between an actor and a system to achieve a goal. It normally includes the name, primary actor, goal, trigger, preconditions, main success scenario, alternative flows, exception flows and postconditions.

For example, a “Book Appointment” use case may identify the patient as the actor, require an authenticated account, describe selecting a service and time, and specify what happens when the chosen slot is no longer available. Use cases are particularly helpful when several user actions and alternative paths must be understood. User stories are often more convenient for incremental product planning; use cases provide richer behavioural detail. They are complementary rather than competing techniques.

4. Prioritization and Validation

Requirements compete for limited time, money, people and technical capacity. Prioritization makes those trade-offs explicit.

Prioritization methods

MoSCoW classifies requirements as Must have, Should have, Could have and Won’t have for the current release. “Must” should be used sparingly; if everything is a must, the classification provides no decision value.

Value–effort analysis compares expected benefit with implementation effort and risk. It is useful for discussion but should not be treated as a precise financial calculation unless reliable data exists.

Weighted scoring assigns criteria such as user value, regulatory importance, risk reduction and urgency. Each requirement receives a score and possibly a weight. If the score for requirement i is calculated as:

Si = ∑(wj × rij)

where wⱼ is the weight of criterion j and rᵢⱼ is the rating of requirement i against that criterion, then the weights and rating scale must be defined in advance. If weights are normalized, their sum is 1; otherwise the final scores are only comparable within the same scoring scheme. Weighted scoring supports discussion but does not eliminate judgement or uncertainty.

Kano analysis distinguishes basic needs, performance needs and excitement features. A basic need may cause dissatisfaction if absent, while an excitement feature may delight users but not be expected.

Priorities should be revisited as evidence changes. A regulatory deadline, technical discovery or change in business strategy may legitimately alter the order.

Validation and verification

Verification asks whether requirements are written correctly and consistently. Validation asks whether they describe the right product and satisfy stakeholder needs. Review activities include:

  • stakeholder walkthroughs;
  • inspections against quality checklists;
  • prototype evaluation;
  • feasibility and architecture analysis;
  • test-case derivation;
  • conflict and dependency analysis;
  • review of legal, privacy and accessibility obligations.

Requirements should be baselined only after responsible stakeholders agree that they are sufficiently understood. Baseline does not mean permanent. It means that future changes are controlled against an identified version.

5. Product Backlogs and Traceability

A product backlog is an ordered, evolving list of product work. It may contain user stories, defects, technical work, research tasks and enablers. Each item should have a clear description, value, priority, estimate or size indication, dependencies and acceptance criteria where appropriate.

Backlog refinement is a continuing activity. The team clarifies items, splits oversized stories, identifies dependencies and removes obsolete work. A backlog should not become a storage area for every idea without review. Items that are not aligned with product goals should be rejected, deferred or archived.

A typical hierarchy is:

Business goal → capability or epic → feature → user story → task → test evidence.

The relationships between these items form traceability. A requirements traceability matrix (RTM) may include the requirement identifier, source, priority, design component, development item, test case, status and approval record.

Traceability supports impact analysis. If a privacy requirement changes, the team can identify affected designs, stories, interfaces, tests, training and operational procedures. It also provides evidence for audits and helps confirm that approved requirements have not been forgotten.

Traceability is not valuable merely because a table exists. Links must be maintained, meaningful and used in decisions. Excessive documentation can become administrative waste, especially if entries are copied without analysis.

6. From Scope Statement to Work Breakdown Structure

A scope statement normally identifies the product description, deliverables, exclusions, assumptions and constraints. Explicit exclusions are important because stakeholders often interpret silence as inclusion.

A work breakdown structure (WBS) is a hierarchical decomposition of the total project scope into manageable components. It is deliverable-oriented: it describes what must be produced, not merely a chronological list of activities. The lowest level is a work package, which is sufficiently small to estimate, assign, schedule and control.

The 100 percent rule states that the WBS should include 100 percent of the work defined by the project scope and all necessary work for producing the deliverables. It should not include work outside the approved scope. A WBS for a clinic appointment system might include:

  1. Project management
  2. Requirements and analysis
  3. User experience design
  4. Application development
  5. Integration with messaging service
  6. Data migration
  7. Testing and quality assurance
  8. Training and deployment
  9. Operational handover

Each branch can be decomposed further. “Testing” might include test planning, unit testing, integration testing, accessibility testing, security testing, user acceptance testing and defect resolution. A WBS element is not necessarily a single task; it is a scope component from which schedule activities and estimates can be developed.

The WBS should be reconciled with the requirements baseline. Every significant requirement should map to one or more WBS elements, and every WBS element should have a legitimate scope source. This comparison often reveals missing work, duplicated work or unapproved additions.

7. Scope Control and Change Management

Scope creep is the uncontrolled expansion of project scope without corresponding adjustment to time, cost, resources, risk or quality. It can arise from informal requests, ambiguous requirements, gold-plating, incomplete analysis, stakeholder turnover or technical discoveries.

Not every change is harmful. Software projects operate in changing environments, and refusing all change can produce an obsolete product. The professional objective is controlled change.

A change-control process typically includes:

  1. Record the change request and its source.
  2. Clarify the requested outcome and reason.
  3. Analyse effects on requirements, architecture, effort, schedule, budget, risk, security, privacy, accessibility and testing.
  4. Identify alternatives, including postponement or rejection.
  5. Obtain a decision from the authorized product owner, change authority or governance body.
  6. Update the scope baseline, backlog, plans, estimates and traceability records if approved.
  7. Communicate the decision and monitor implementation.

A change request should not be accepted merely because it is technically easy. Conversely, a small implementation effort may have significant compliance or support consequences. Impact analysis must examine the whole product and project system.

A useful change log records an identifier, description, requester, date, rationale, affected requirements, analysis, decision, approver, implementation status and verification evidence. Version control protects the integrity of baselines and prevents teams from working from inconsistent documents.

Gold-plating occurs when the team adds features or quality beyond approved requirements without authorization. It may appear helpful but increases complexity, testing, maintenance and liability. Value should be negotiated, not assumed by the delivery team.

8. Governance, Ethics and Regulation

Requirements decisions can affect people’s rights, safety, privacy and access to services. Governance therefore extends beyond project efficiency.

Privacy requirements should address purpose limitation, data minimization, lawful processing, retention, access control, consent where applicable and breach response. Security requirements should consider authentication, authorization, confidentiality, integrity, availability, logging and secure recovery. Accessibility requirements should be included from the beginning rather than treated as a late compliance test.

Analysts must avoid representing the preferences of powerful stakeholders as universal user needs. They should seek diverse users, document conflicts and make trade-offs visible. Requirements involving automated decisions or artificial intelligence require additional scrutiny: data quality, bias, explainability, human oversight, appeal mechanisms and accountability should be considered.

A requirement may also be legally binding even if it is not requested by an individual stakeholder. Examples include records retention, financial controls, safety obligations and accessibility regulations. The applicable law depends on jurisdiction and industry, so teams should obtain qualified legal or compliance advice rather than relying on assumptions.

9. Illustrative Case: Community Clinic Appointment System

Background

A fictional community clinic uses telephone bookings and spreadsheets. Patients wait for responses, receptionists frequently double-book appointments and managers lack reliable capacity reports. The clinic commissions a web-based appointment system.

Problem and analysis

Initial discussions produce broad requests: online booking, reminders, reporting and integration with the existing patient register. Interviews reveal different priorities. Patients want convenient booking; receptionists need control over cancellations and practitioner availability; managers need utilization information; the privacy officer requires restricted access and audit records.

The team conducts interviews, observes reception work, reviews policies and prototypes the booking journey. It discovers an important exception: some appointments require preparation instructions and cannot be booked online without a referral. This would have been missed by a feature-only discussion.

Requirements and prioritization

The team records the following examples:

IDRequirementTypeInitial priority
R-01Patients shall view available appointment slots for permitted servicesFunctionalMust
R-02The system shall prevent two confirmed bookings for the same slotFunctionalMust
R-03The system shall record who changed an appointment and whenSecurity/auditMust
R-04At least 95% of booking searches shall respond within two seconds under agreed test loadPerformanceShould
R-05Patients shall receive configurable remindersFunctionalShould
R-06Managers shall view weekly utilization reportsFunctionalCould

R-03 is initially overlooked by the reception team but is elevated after privacy and governance review. R-06 is deferred because it does not support the first operational release.

Approach and solution

The product backlog groups R-01 and R-02 into a booking epic, with stories for viewing slots, selecting a service, confirming a booking, handling unavailable slots and cancelling. Acceptance criteria include authentication, duplicate-booking prevention, confirmation display and audit logging. A use case documents the alternative path when a slot becomes unavailable during confirmation.

The WBS includes requirements analysis, interface design, booking services, integration, security controls, performance testing, user acceptance testing, training and migration of practitioner schedules. The RTM links R-01 to design screens, booking stories, integration tests and acceptance tests.

A manager later requests automated SMS reminders in addition to email. The request is recorded rather than inserted into the current sprint. Analysis identifies messaging costs, consent, supplier integration, privacy implications and additional testing. The product owner approves email reminders for the first release and schedules SMS for a later release after a cost and consent review.

Outcome

The first release supports the most important booking and control needs without expanding beyond the agreed scope. Double-booking defects are detected during integration testing, and the audit requirement enables investigation of a later administrative error. The deferred reporting feature remains visible in the backlog rather than being forgotten.

Learning points

The case demonstrates that effective scope management depends on more than writing features. Observation revealed exceptions; non-functional and governance requirements protected operational quality; traceability connected requirements to tests; and change control allowed a valuable request to be considered without silently disrupting the release.

10. Challenges and Best Practices

Requirements may be incomplete because stakeholders do not yet know what they need. They may conflict because departments optimize different outcomes. They may change because markets, regulations or technology change. Distributed teams may also suffer from language, time-zone and documentation barriers.

Practical responses include:

  • make assumptions and decisions visible;
  • involve real users, not only managers;
  • use prototypes to expose ambiguity;
  • define measurable acceptance criteria;
  • separate current-release commitments from future ideas;
  • review non-functional requirements early;
  • maintain a single authoritative repository;
  • link requirements to tests and deliverables;
  • establish decision rights before conflict occurs;
  • reserve capacity for legitimate discovery and change;
  • audit the backlog and traceability links periodically.

Tools such as backlog platforms, modelling tools, collaborative whiteboards and automated test systems can improve visibility. However, a tool cannot compensate for unclear authority, weak stakeholder engagement or poor analysis. Artificial intelligence can assist with duplicate detection, requirement classification, draft acceptance criteria and trace-link suggestions, but generated content requires human review. Sensitive project data should not be entered into an AI service without authorization, and analysts must check for invented assumptions, bias and omission of minority needs.

Chapter Summary

Requirements planning establishes the methods, responsibilities and controls used to discover, document, prioritize, validate, trace and change requirements. Requirements may express business goals, stakeholder needs, functional behaviour, quality attributes, constraints or transition conditions. Effective requirements are correct, clear, complete, consistent, feasible, verifiable, prioritized, traceable and maintainable.

Elicitation combines interviews, workshops, observation, document analysis, prototypes and scenarios. User stories communicate incremental user value, while use cases describe actors, goals, interactions and alternatives. Acceptance criteria make completion testable. Prioritization methods such as MoSCoW, weighted scoring, value–effort analysis and Kano analysis support transparent trade-offs.

A product backlog is an ordered and evolving set of product work. A requirements traceability matrix connects sources to requirements, design, implementation and tests. A work breakdown structure decomposes the approved project scope into deliverables and work packages, following the 100 percent rule. Scope creep is controlled through documented change requests, impact analysis, authorized decisions, updated baselines and clear communication.

Professional scope management also addresses privacy, security, accessibility, regulation, fairness and human oversight. The goal is not to prevent all change, but to ensure that change is understood, authorized and aligned with product value.

Key Terms

Requirement: A need, capability, condition or constraint that a product, service or process must satisfy.

Scope: The boundary of the product and the work required to deliver it.

Functional requirement: A requirement describing behaviour, service or processing performed by a system.

Non-functional requirement: A requirement describing quality, constraint or operating condition.

Business requirement: A high-level outcome that explains why a project is undertaken.

Stakeholder: A person or organisation that affects, is affected by or perceives an effect from a project.

Elicitation: The systematic discovery and clarification of requirements.

Acceptance criterion: A condition that must be satisfied for a requirement or work item to be accepted.

User story: A concise statement of user role, desired capability and expected benefit.

Use case: A structured description of interactions between an actor and a system to achieve a goal.

Product backlog: An ordered, evolving list of product work.

Baseline: An approved version of scope or requirements used as a reference for controlled change.

Traceability: The ability to follow a requirement from its source through design, development, testing and acceptance.

Requirements traceability matrix: A structured record linking requirements to related project and product artefacts.

Work breakdown structure: A deliverable-oriented hierarchy decomposing total project scope.

Work package: The lowest WBS component that can be estimated, assigned and controlled.

Scope creep: Uncontrolled expansion of scope without corresponding authorization or adjustment.

Change control: The process for evaluating, deciding on and implementing changes.

Gold-plating: Adding unauthorized features or quality beyond approved requirements.

Review Questions

Short Answer Questions

  1. Distinguish product scope from project scope and give one example of each.
  2. What is the difference between a functional and a non-functional requirement?
  3. State four quality characteristics of a well-written requirement.
  4. What information should normally be recorded in a change request?
  5. Why is traceability useful during impact analysis?

Long Answer Questions

  1. Explain how interviews, workshops, observation and prototyping can be combined during requirements elicitation. Discuss the strengths and limitations of each.
  2. Compare user stories and use cases. Explain when a project might use both.
  3. Describe how a product backlog should be refined, prioritized and maintained during an iterative project.
  4. Explain the 100 percent rule and the relationship between a WBS, requirements and project deliverables.
  5. Discuss the ethical, privacy, security and accessibility considerations that should influence requirements planning.

Analytical / Application Questions

  1. A stakeholder asks a development team to add a loyalty scheme during the final week of a release. Analyse the request using a formal change-control process and identify the information required before a decision.
  2. For an online examination system, propose five functional and five non-functional requirements. Rewrite two vague requirements so that they become testable.
  3. A project has 30 approved requirements but only 24 corresponding test cases. Analyse the possible causes and propose a corrective traceability and validation plan.

Multiple Choice Questions with Answers

Question 1

Which statement best describes a non-functional requirement?

A. The system shall allow a user to cancel an appointment.

B. The system shall calculate the invoice total.

C. The system shall return search results within two seconds for 95% of requests under the agreed load.

D. The system shall send a booking confirmation.

Correct Answer: C. The system shall return search results within two seconds for 95% of requests under the agreed load.

Question 2

What is the main purpose of acceptance criteria?

A. To identify the project sponsor

B. To define conditions for determining whether a work item is acceptable

C. To replace all requirements documentation

D. To assign developers to tasks

Correct Answer: B. To define conditions for determining whether a work item is acceptable

Question 3

Which technique is most likely to reveal informal workarounds in an existing business process?

A. Observation

B. Questionnaire only

C. Budget analysis

D. Release planning

Correct Answer: A. Observation

Question 4

What does the 100 percent rule require of a work breakdown structure?

A. Every task must take exactly 100 hours

B. The WBS must include all approved project scope and necessary delivery work, but no unauthorized work

C. Every stakeholder must approve every work package daily

D. The project must be completed with no changes

Correct Answer: B. The WBS must include all approved project scope and necessary delivery work, but no unauthorized work

Question 5

Which item is a suitable example of a transition requirement?

A. The system shall encrypt stored passwords

B. The system shall display a patient profile

C. Existing patient records shall be migrated before launch

D. The system shall support appointment cancellation

Correct Answer: C. Existing patient records shall be migrated before launch

Question 6

A requirements traceability matrix primarily links requirements to which set of artefacts?

A. Only project invoices

B. Design, implementation, tests and acceptance evidence

C. Only employee performance records

D. Only marketing materials

Correct Answer: B. Design, implementation, tests and acceptance evidence

Question 7

What is the principal risk of treating every requested feature as a Must-have in MoSCoW prioritization?

A. The project will have too few stakeholders

B. The classification loses its ability to express trade-offs

C. Non-functional requirements become illegal

D. The backlog becomes automatically complete

Correct Answer: B. The classification loses its ability to express trade-offs

Question 8

Which action is the strongest example of controlled scope change?

A. A developer adds a feature because it is easy to implement

B. A user mentions a feature informally and it is added to the current sprint

C. A request is analysed for impacts, authorized, recorded and reflected in baselines and plans

D. A tester removes a requirement without notifying stakeholders

Correct Answer: C. A request is analysed for impacts, authorized, recorded and reflected in baselines and plans

Question 9

A project uses weighted scoring with two criteria. Criterion weights are 0.6 and 0.4. A requirement receives ratings of 8 and 5. What is its weighted score?

A. 5.2

B. 6.8

C. 8.4

D. 13.0

Correct Answer: B. 6.8

Question 10

Which statement best distinguishes validation from verification of requirements?

A. Validation asks whether the right product is being specified; verification asks whether requirements are written correctly

B. Validation is only performed by programmers; verification is only performed by customers

C. Validation concerns budgets; verification concerns salaries

D. There is no meaningful distinction

Correct Answer: A. Validation asks whether the right product is being specified; verification asks whether requirements are written correctly

Software Project Management and Documentation
Chapter 4 of 15