Add the framework submodule and the accepted planning documents: Business Case, Stakeholder Analysis, Project Plan, three milestones, review records RC-001 to RC-006 and the traceability matrix. Set up the project skeleton for MIL-001: pyproject.toml (Python >=3.13, no runtime dependencies, pytest/ruff/mypy as dev extra), src/coffee_machine/constants.py, a constants consistency test, Doxyfile and a CI workflow that runs ruff, mypy and pytest. Task: MIL-001#1 Task: MIL-001#2 Task: MIL-001#3 Task: MIL-001#4 Task: MIL-001#5 Closes #1 Closes #2 Closes #3 Closes #4 Closes #5
5.2 KiB
Business Case: OOP Coffee Machine
Metadata
| Key | Value |
|---|---|
| ID | BC-001 |
| CrossReference | SA-001, PP-001 |
| Language | en |
| Domain | it |
Version History
| Date | Status | Author | Reviewer | Change | Commit |
|---|---|---|---|---|---|
| 2026-10-07 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | pending |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Fixed Cost-Benefit justification and added completion constraint Accepted after RC-001 (Go) |
pending |
Executive Summary
The Udemy course "100 Days of Code: The Complete Python Pro Bootcamp" asks
participants to build an object-oriented coffee machine program that uses
Menu, CoffeeMaker and MoneyMachine classes. This project delivers that
assignment as a small, readable, runnable Python repository that other course
participants and GitHub visitors can use as a reference solution.
Methodological and Standards Foundation
Quality characteristics follow ISO/IEC 25010:2023. Planning follows the
framework in framework/: Business Case, Stakeholder Analysis, Project Plan,
milestones, tasks synced as issues, then code. Code follows the
coding-conventions skill (Python) and is reviewed against its
qc-programming-* checklist.
Problem Statement
The course assignment is solved privately in the lesson editor. There is no reproducible repository with tests, documentation and run instructions that a fellow participant can clone and run, or that a GitHub visitor can browse.
Business Opportunity
A clean, tested and documented repository lets participants compare solutions and lets viewers find ideas, at the cost of a few hours of work.
Objectives
- Deliver a coffee machine program with the assignment's class and method names.
- Cover the behaviour with automated pytest tests.
- Document how to set up, run and test the project on Windows, Debian Linux and macOS.
- Publish the repository with a description, topics and a README.
Scope
In Scope
- Python 3.13+ package under
src/, tests undertests/, documents underdocs/. pyproject.toml, Python.gitignore,constants.py, Doxygen comments and aDoxyfile.- A README following the course template, including
.venvandpipinstructions. - Repository description and topics on the git host.
Out of Scope
- Runtime dependencies, a GUI or a database.
- Committing, pushing or merging by the assistant (the Product Owner does this).
- Reading or testing the
.envfile from the project code.
Expected Benefits
Tangible Benefits
- A runnable program and a passing test suite.
- A README that reproduces setup in under five minutes.
Intangible Benefits
- Practice of object-oriented design and a documented workflow.
- A reference other participants can learn from.
Strategic Alignment
The project supports the Product Owner's learning goal of completing the 100 Days of Code bootcamp with a professional working method.
Success Criteria
| # | Criterion | Target | Measure |
|---|---|---|---|
| 1 | Tests pass | 100 % of tests green | pytest exit code 0 |
| 2 | Runtime dependencies | 0 | [project] dependencies in pyproject.toml is empty |
| 3 | Setup reproducible | README steps work on a clean clone | Product Owner follows the README once |
| 4 | Assignment names kept | get_items, find_drink, is_resource_sufficient, make_payment, make_coffee, report present |
Review of source |
| 5 | Repository presentable | Description and at least 3 topics set | Check on the git host |
Risks
| Risk | Impact | Mitigation |
|---|---|---|
Token in .env leaks into the repository |
High | .env stays in .gitignore; the code never reads it; it is used only for the sync tool |
| Tests drift from the assignment behaviour | Medium | Tests are written from the assignment text and reviewed against qc-programming-python |
| Doxygen is not installed on a viewer's machine | Low | The README documents the optional install; docs are not needed to run |
Assumptions
- Python 3.13 or newer is available on the Product Owner's machine.
- The git host accepts the API token in
.envfor the sync.
Constraints
- Python greater than 3.13,
venv,pytest,pyproject.toml. - Constants live in
constants.py; source comments use Doxygen style. - Folder structure
src/,tests/,docs/; pull requests per step. - Target completion 2026-10-16, the end of the last phase in PP-001.
Cost–Benefit Assessment
| Costs | Benefits |
|---|---|
| A few hours of the Product Owner's time; no licence or hosting cost | Reusable reference repository and a documented working method |
The assessment is qualitative on purpose: this is a personal learning project with no revenue, budget or monetary cost to quantify.
Stakeholders
| Stakeholder ID (SA) | Interest in this project |
|---|---|
| S01 | Completes the assignment with a professional method |
| S02 | Wants readable, runnable code and instructions |
| S03 | Wants a clear description, topics and README |
Recommendation
Proceed — the scope is small, has no runtime dependencies and gives a lasting reference repository.