Object Oriented Development and Agile Practices
Designing, Testing and Evolving Software with AI Assistance
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.
📥 Download Complete Textbook: The full 341-page publication-grade PDF monograph is available for offline reading: Object Oriented Development and Agile Practices PDF.
Chapter 1: Developing Software That Can Change
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
Encapsulation, invariants, snapshot copying, and UML class modelling.
Chapter 3: Agile Development and the Nature of Change
Agile values, backlog refinement, user story writing, and feedback loops.
Chapter 4: From Requirements to an Iteration
Acceptance criteria, Definition of Done, Arrange-Act-Assert testing, and capacity planning.
Chapter 5: Responsibilities, Extension, and Substitutability
SOLID principles, Single Responsibility, Open-Closed, and Liskov Substitutability.
Chapter 6: Interfaces, Dependencies, and Composition
Interface segregation, dependency inversion, and educational dependency injection.
Chapter 7: Testing as a Design Practice
Test-Driven Development (TDD), test doubles, fakes, stubs, and Mockito.
Chapter 8: Creating and Connecting Objects
Creation and connection patterns: Factory Method, Abstract Factory, Builder, Adapter and Decorator, and when to decline them.
Chapter 9: Designing Changing Behaviour
Behavioural patterns: Strategy, State, Observer, and Command.
Chapter 10: From Classes to Application Structure
Layered architecture, package cohesion, stability metrics, and architectural fitness.
Chapter 11: Refactoring and Legacy Code
Characterisation tests, seams, code smells, and incremental refactoring steps.
Chapter 12: Measuring Progress, Flow and Technical Health
Empirical delivery metrics (lead time, cycle time, throughput), repository analysis, and planning a changed requirement.
Chapter 13: Integration, Delivery and Feedback
Milestone 4, contract testing, integration suites, and feature flags (VisitorGate).
Chapter 14: Responding to Change and Handing Over
Final system handover, traceability matrix, qualitative contribution, and release packaging.
Chapter 15: AI as a Software Engineering Assistant
Bounded AI-assisted development, failure modes, provenance, and verification records.
Appendix A: Programming Readiness and Notation
Java 17 baseline, exception idioms, collections, and UML class diagram notation.
Appendix B: Tools and Reproducible Setup
Pinned toolchain, Maven build commands, PMD setup, and Git pull request workflows.
Appendix C: Engineering Templates
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
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
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
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.

