Add baseline: business case, stakeholders, plan, milestones, reviews

Mode: autonomous; reviews RC-001 to RC-007 are not independent.
This commit is contained in:
2026-10-13 15:23:29 +08:00
parent 788caae0e6
commit f1b3c034dc
19 changed files with 1225 additions and 0 deletions
+132
View File
@@ -0,0 +1,132 @@
# Business Case
## Metadata
| Key | Value |
| --- | --- |
| ID | BC-001 |
| CrossReference | |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending |
---
## Executive Summary
Day 25 of the Udemy "100 Days of Code" bootcamp asks the participant to analyse the 2018 Central Park Squirrel Census with Pandas: count the gray, cinnamon and black squirrels by primary fur colour and export the counts to `squirrel_count.csv`. This project delivers that assignment as a small, readable, runnable Python repository with tests, source documentation, a README and a three-language wiki, so that the participant keeps a reviewed solution and other course participants and GitHub visitors can reuse it.
## Methodological and Standards Foundation
The artifacts follow the software quality assurance (SQA) and quality control (QC) framework mounted at `framework/` (Business Case, Stakeholder Analysis, Project Plan, milestones, tasks, code). Quality is judged against ISO/IEC 25010:2023 characteristics through the QC checklists of the framework; source code is reviewed against `qc-programming-python`.
## Problem Statement
The lecture shows the analysis as a sequence of notebook-style steps. A participant who wants to keep, share and compare the solution has no structured repository: no repeatable set-up, no tests, no documentation and no instructions that another participant can run.
## Business Opportunity
A single, well-structured example repository lets the participant practise professional project hygiene (virtual environment, tests, continuous integration, documentation) on a small assignment, and gives other participants a solution to compare against.
## Objectives
1. Deliver a Python program that reads the squirrel census file (comma-separated values, CSV), counts squirrels by primary fur colour (gray, cinnamon, black) and writes `squirrel_count.csv`.
2. Cover the program with automated pytest tests that run without the full census file.
3. Document how to create a local `.venv`, upgrade pip, run the program and run the tests, for Windows PowerShell, Linux Debian and macOS.
4. Document the source with Doxygen comments and a `Doxyfile`.
5. Publish the repository with a description, topics, a README and a wiki in English, Danish and Bahasa Malaysia, with screenshots.
## Scope
### In Scope
- Reading the census file and counting squirrels by primary fur colour.
- Creating a summary table and exporting it as `squirrel_count.csv`.
- A command-line entry point, `constants.py`, `pyproject.toml`, a Python `.gitignore`, pytest tests and a continuous integration (CI) workflow.
- Doxygen comments, a `Doxyfile` and build instructions.
- README from the framework template, a three-language wiki and screenshots.
- Repository description and topics on the git host.
### Out of Scope
- Analysis beyond the three fur colours of the assignment.
- Charts, notebooks or a graphical interface.
- Publishing a package to PyPI.
- Using or importing the `.env` file in the project; it holds personal tokens for publishing only.
## Expected Benefits
### Tangible Benefits
- A runnable solution with passing tests and a CI pipeline.
- A repository other participants can clone and run from the README alone.
- A published description, topics and wiki in three languages.
### Intangible Benefits
- Practice in a plan-first, reviewed workflow on a small project.
- A reusable repository layout for later days of the bootcamp.
## Strategic Alignment
The project supports the participant's goal of finishing the 100 Days of Code bootcamp with portfolio-quality results, and the framework's goal of showing the SQA workflow on a real, small project.
## Success Criteria
| # | Criterion | Target | Measure |
| --- | --- | --- | --- |
| 1 | Fur colour counts are correct | Gray 2473, Cinnamon 392, Black 103 on the 2018 census file | Run the program on the census file and compare with `squirrel_count.csv` |
| 2 | Tests pass | 100 % of pytest tests pass on Python 3.13 or later | `python -m pytest` exit code 0 and CI green |
| 3 | Runtime dependencies | 0 third-party runtime packages | `pyproject.toml` lists no runtime dependencies |
| 4 | Documentation present | README sections, Doxyfile and wiki pages in 3 languages | Files exist; `doxygen Doxyfile` completes without warnings |
| 5 | Repository metadata | Description and at least 5 topics set | Read back from the git host application programming interface (API) |
## Risks
| Risk | Impact | Mitigation |
| --- | --- | --- |
| The lecture uses Pandas but the repository must have no runtime dependencies | The solution differs from the lecture code | Use the standard library `csv` module; record the decision in an architecture decision record (ADR) and keep the lecture's step names as function names |
| The census file is large and not part of the repository | Others cannot run the program | Keep the census file under `data/` and let the program accept a path argument |
| Tokens in `.env` leak into the repository | Credential exposure | `.env` is git-ignored, never read by the project and never printed |
| Wiki push is not available on the host | Wiki pages are not published | Keep the pages in the repository under `docs/wiki/` and report the failure |
| Fur colour spelling differs in the data | Wrong counts | Count exact values `Gray`, `Cinnamon`, `Black` and test with fixture rows |
## Assumptions
- The participant (S01) is Product Owner, developer and reviewer of every artifact.
- The census file is the 2018 Central Park Squirrel Census file the participant downloaded.
- The git host `git.tirsystem.com` accepts the personal tokens held in `.env`.
- Python 3.13 or later is installed on the machines that run the project.
- The Product Owner's language is English; the wiki is the only multilingual deliverable.
## Constraints
- Python 3.13 or later, virtual environment with `venv`, tests with pytest.
- Constants live in `constants.py`; configuration lives in `pyproject.toml`.
- Folder structure `src/`, `tests/`, `docs/`.
- Work is tracked by one branch and pull request per milestone.
- Tokens come from `.env` and are never tested, imported or committed.
## Cost–Benefit Assessment
| Costs | Benefits |
| --- | --- |
| About one working day of effort by S01 and the AI assistant | A reviewed, documented solution reusable by S02 and S03 |
| Maintenance of three wiki languages | Broader reach for S02 and S03 |
The assessment is qualitative: the project is a personal learning exercise with no revenue, so a monetary return would not be meaningful.
## Stakeholders
| Stakeholder ID (SA) | Interest in this project |
| --- | --- |
| S01 | Product Owner, developer and reviewer; wants a correct, reviewed solution |
| S02 | Course participants; want readable, runnable code and run instructions |
| S03 | GitHub viewers; want a clear description, topics and README with no runtime dependencies |
## Recommendation
Proceed — the scope is small, the risks are mitigated and the result is directly reusable by the other stakeholders.