# Object Oriented Development and Agile Practices

> Designing, Testing and Evolving Software with AI Assistance

---

LLMS index: [llms.txt](/ood-agile-book/llms.txt)

---

*Designing, Testing and Evolving Software with AI Assistance*

<div class="row g-4 my-4 align-items-center justify-content-center d-print-none">
  <div class="col-12 col-md-6 col-lg-5 text-center">
    <div class="p-2 border rounded-3 bg-body-tertiary shadow-sm">
      <img src="/ood-agile-book/images/cover-front.png" alt="Object Oriented Development and Agile Practices - Front Cover" class="img-fluid rounded shadow" style="max-height: 520px; width: auto;">
      <div class="small text-muted mt-2 fw-semibold">Front Cover</div>
    </div>
  </div>
  <div class="col-12 col-md-6 col-lg-5 text-center">
    <div class="p-2 border rounded-3 bg-body-tertiary shadow-sm">
      <img src="/ood-agile-book/images/cover-back.png" alt="Object Oriented Development and Agile Practices - Back Cover" class="img-fluid rounded shadow" style="max-height: 520px; width: auto;">
      <div class="small text-muted mt-2 fw-semibold">Back Cover</div>
    </div>
  </div>
  <div class="col-12 text-center mt-3">
    <a href="/ood-agile-book/downloads/Object_Oriented_Development_and_Agile_Practices.pdf" class="btn btn-primary btn-lg shadow-sm px-4 py-2" download>
      <i class="fa-solid fa-file-pdf me-2"></i> Download Complete Book PDF
    </a>
  </div>
</div>


- [Chapter 1: Developing Software That Can Change](/ood-agile-book/book/chapter-01/)
- [Chapter 2: Object-Oriented Development Beyond Syntax](/ood-agile-book/book/chapter-02/)
- [Chapter 3: Agile Development and the Nature of Change](/ood-agile-book/book/chapter-03/)
- [Chapter 4: From Requirements to an Iteration](/ood-agile-book/book/chapter-04/)
- [Chapter 5: Responsibilities, Extension, and Substitutability](/ood-agile-book/book/chapter-05/)
- [Chapter 6: Interfaces, Dependencies, and Composition](/ood-agile-book/book/chapter-06/)
- [Chapter 7: Testing as a Design Practice](/ood-agile-book/book/chapter-07/)
- [Chapter 8: Creating and Connecting Objects](/ood-agile-book/book/chapter-08/)
- [Chapter 9: Designing Changing Behaviour](/ood-agile-book/book/chapter-09/)
- [Chapter 10: From Classes to Application Structure](/ood-agile-book/book/chapter-10/)
- [Chapter 11: Refactoring and Legacy Code](/ood-agile-book/book/chapter-11/)
- [Chapter 12: Measuring Progress, Flow and Technical Health](/ood-agile-book/book/chapter-12/)
- [Chapter 13: Integration, Delivery and Feedback](/ood-agile-book/book/chapter-13/)
- [Chapter 14: Responding to Change and Handing Over](/ood-agile-book/book/chapter-14/)
- [Chapter 15: AI as a Software Engineering Assistant](/ood-agile-book/book/chapter-15/)
- [Appendix A: Programming Readiness and Notation](/ood-agile-book/book/appendix-a/)
- [Appendix B: Tools and Reproducible Setup](/ood-agile-book/book/appendix-b/)
- [Appendix C: Engineering Templates](/ood-agile-book/book/appendix-c/)
- [Appendix D: Project Versions and Glossary](/ood-agile-book/book/appendix-d/)
- [Appendix E: Critical Reading and Project Evidence](/ood-agile-book/book/appendix-e/)
- [Appendix F: Software Engineering for AI and Data Components](/ood-agile-book/book/appendix-f/)

This textbook guides postgraduate and advanced students from writing classes to designing, testing, reviewing, and changing maintainable software in a collaborative team workflow. Its central teaching unit is a software change: understand requested behavior, choose an object-oriented design, protect it with automated tests, inspect results, and use feedback to plan subsequent iterations.

### Core Structure

- **Part I: Foundations & Object-Oriented Principles (Chapters 1–6)**
  - Chapter 1: Developing Software That Can Change
  - Chapter 2: Object-Oriented Development Beyond Syntax
  - Chapter 3: Agile Development and the Nature of Change
  - Chapter 4: From Requirements to an Iteration
  - Chapter 5: Responsibilities, Extension, and Substitutability (SOLID)
  - Chapter 6: Interfaces, Dependencies, and Composition
- **Part II: Testing, Creation & Behavioral Patterns (Chapters 7–9)**
  - Chapter 7: Testing as a Design Practice (TDD & Test Doubles)
  - Chapter 8: Creating and Connecting Objects (Factory, Builder, Dependency Injection)
  - Chapter 9: Designing Changing Behaviour (Strategy, State, Observer, Command)
- **Part III: Architecture, Packages & Legacy Systems (Chapters 10–11)**
  - Chapter 10: From Classes to Application Structure (Layered Architecture & Package Principles)
  - Chapter 11: Refactoring and Legacy Code (Characterisation Tests, Seams, Technical Debt)
- **Part IV: Metrics, Delivery, Evolution & AI Assistance (Chapters 12–15)**
  - Chapter 12: Measuring Progress, Flow and Technical Health (Lead Time, Cycle Time, Throughput, Health)
  - Chapter 13: Integration, Delivery and Feedback (Milestone 4, Contract Tests, Feature Flags)
  - Chapter 14: Responding to Change and Handing Over
  - Chapter 15: AI as a Software Engineering Assistant
- **Appendices A–F**
  - Appendix A: Programming Readiness and Notation (UML & Diagnostics)
  - Appendix B: Tools and Reproducible Setup
  - Appendix C: Engineering Templates
  - Appendix D: Versions and Glossary
  - Appendix E: Critical Reading and Project Evidence
  - Appendix F: Software Engineering for AI and Data Components

> 💡 **Code & Solutions:** Companion implementations, delta versions, and instructor verification records are available under the [Code & Solutions Companion](/ood-agile-book/companion/).

> 📥 **Download Complete Textbook:** The full 341-page publication-grade PDF monograph is available for offline reading: [Object Oriented Development and Agile Practices PDF](/downloads/Object_Oriented_Development_and_Agile_Practices.pdf).

---

Section pages:

- [Chapter 1: Developing Software That Can Change](/ood-agile-book/book/chapter-01/): Why a program that works can still be hard to change, and how this book teaches you to change software safely.
- [Chapter 2: Object-Oriented Development Beyond Syntax](/ood-agile-book/book/chapter-02/): Encapsulation, invariants, snapshot copying, and UML class modelling.
- [Chapter 3: Agile Development and the Nature of Change](/ood-agile-book/book/chapter-03/): Agile values, backlog refinement, user story writing, and feedback loops.
- [Chapter 4: From Requirements to an Iteration](/ood-agile-book/book/chapter-04/): Acceptance criteria, Definition of Done, Arrange-Act-Assert testing, and capacity planning.
- [Chapter 5: Responsibilities, Extension, and Substitutability](/ood-agile-book/book/chapter-05/): SOLID principles, Single Responsibility, Open-Closed, and Liskov Substitutability.
- [Chapter 6: Interfaces, Dependencies, and Composition](/ood-agile-book/book/chapter-06/): Interface segregation, dependency inversion, and educational dependency injection.
- [Chapter 7: Testing as a Design Practice](/ood-agile-book/book/chapter-07/): Test-Driven Development (TDD), test doubles, fakes, stubs, and Mockito.
- [Chapter 8: Creating and Connecting Objects](/ood-agile-book/book/chapter-08/): Creation and connection patterns: Factory Method, Abstract Factory, Builder, Adapter and Decorator, and when to decline them.
- [Chapter 9: Designing Changing Behaviour](/ood-agile-book/book/chapter-09/): Behavioural patterns: Strategy, State, Observer, and Command.
- [Chapter 10: From Classes to Application Structure](/ood-agile-book/book/chapter-10/): Layered architecture, package cohesion, stability metrics, and architectural fitness.
- [Chapter 11: Refactoring and Legacy Code](/ood-agile-book/book/chapter-11/): Characterisation tests, seams, code smells, and incremental refactoring steps.
- [Chapter 12: Measuring Progress, Flow and Technical Health](/ood-agile-book/book/chapter-12/): Empirical delivery metrics (lead time, cycle time, throughput), repository analysis, and planning a changed requirement.
- [Chapter 13: Integration, Delivery and Feedback](/ood-agile-book/book/chapter-13/): Milestone 4, contract testing, integration suites, and feature flags (VisitorGate).
- [Chapter 14: Responding to Change and Handing Over](/ood-agile-book/book/chapter-14/): Final system handover, traceability matrix, qualitative contribution, and release packaging.
- [Chapter 15: AI as a Software Engineering Assistant](/ood-agile-book/book/chapter-15/): Bounded AI-assisted development, failure modes, provenance, and verification records.
- [Appendix A: Programming Readiness and Notation](/ood-agile-book/book/appendix-a/): Java 17 baseline, exception idioms, collections, and UML class diagram notation.
- [Appendix B: Tools and Reproducible Setup](/ood-agile-book/book/appendix-b/): Pinned toolchain, Maven build commands, PMD setup, and Git pull request workflows.
- [Appendix C: Engineering Templates](/ood-agile-book/book/appendix-c/): Thirteen templates that follow the chapters' own records, each with a purpose, a blank form, a worked example and the usual mistakes, and a script that checks their structure.
- [Appendix D: Project Versions and Glossary](/ood-agile-book/book/appendix-d/): Where each chapter's project stands, the counts to expect, the rules of the lending domain as the chapters state them, and a glossary of the book's terms.
- [Appendix E: Critical Reading and Project Evidence](/ood-agile-book/book/appendix-e/): A method for the individual critical book review, and guides to contribution evidence, the final handover and the individual reflection. It follows the module descriptor and adds no rubric or policy.
- [Appendix F: Software Engineering for AI and Data Components](/ood-agile-book/book/appendix-f/): Applying the book's principles to software that relies on a model or a data service: a contract the domain owns, tests that tolerate change, an enforced time limit and a cautious fallback, and a staged rollout with a record of each decision.
