# Business Case ## Metadata | Key | Value | | --- | --- | | ID | BC-001 | | CrossReference | [SA-001] | | 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, reviewed in RC-001 | pending | --- ## Executive Summary Day 26 of the Udemy course "100 Days of Code: The Complete Python Pro Bootcamp" teaches list and dictionary comprehensions through a small console tool: the user types a word and the program spells it out with the NATO phonetic alphabet. This project delivers that assignment as a clean, tested, documented Python repository that other course participants and GitHub visitors can read, run and compare against their own solutions. It uses only the Python standard library at runtime. ## Methodological and Standards Foundation - Methodology: the project follows the SQA and QC framework mounted at `framework/` (plan first, review every artifact against its QC checklist, one pull request per milestone). - Quality model: ISO/IEC 25010:2023 characteristics tag every QC criterion; code is reviewed against `qc-programming-python.md`. - Engineering practice: Clean Architecture layering at a size proportionate to the program, tests written with pytest, source documented with Doxygen comments. ## Problem Statement - The course assignment ships as a loose `main.py` and a CSV file with no tests, no run instructions and no project structure, so a participant cannot easily share or compare a solution. - Public solutions to course assignments are often undocumented, depend on heavy libraries (the course uses Pandas for a 26-row table) and are not runnable without guesswork. ## Business Opportunity A small, exemplary solution lets the Product Owner practise professional project hygiene (packaging, tests, CI, documentation, multilingual wiki) on a trivially small domain, and gives other learners and GitHub visitors a reference they can run in a minute. ## Objectives 1. O1: Deliver a console program that converts a word typed by the user into the list of NATO phonetic code words, built with list and dictionary comprehensions, keeping the assignment's function names. 2. O2: Make the repository runnable by following the README on Windows PowerShell, Debian Linux and macOS with a local `.venv`. 3. O3: Cover the behaviour with automated pytest tests that run in continuous integration. 4. O4: Document the source with Doxygen comments and a `Doxyfile`, and document the project in a README and a wiki in English, Danish and Bahasa Malaysia, with screenshots. 5. O5: Present the repository to GitHub viewers with a description and topics, and with no runtime dependencies. ## Scope ### In Scope - Console program: reads a word, prints the NATO code words for its letters; asks again when the input contains a character that is not a letter. - NATO alphabet data file (comma-separated values, CSV, as supplied with the assignment) and a loader that uses the standard library. - Project structure `src/`, `tests/`, `docs/`; `pyproject.toml`; `constants.py`; Python `.gitignore`; `Doxyfile`. - pytest test suite; continuous integration (CI) workflow that runs the tests. - README from the framework template; wiki pages in en, da and ms; screenshots for README and wiki. - Repository description and topics on the git host. ### Out of Scope - A graphical or web interface. - Publishing a package to the Python Package Index (PyPI). - Runtime dependencies such as Pandas. - Non-Latin alphabets and digits (rejected with a message). - Other course days. ## Expected Benefits ### Tangible Benefits - A runnable, tested reference solution with a one-command test run. - A reusable repository skeleton (pyproject, continuous integration, Doxygen, wiki) for later course days. ### Intangible Benefits - Practice in professional project hygiene. - A readable example for other learners, in three languages. ## Strategic Alignment The project supports the Product Owner's personal goal of completing the 100 Days of Code bootcamp with portfolio-quality repositories, and the framework's goal of demonstrating the plan-first workflow on a small project. ## Success Criteria | # | Criterion | Target | Measure | | --- | --- | --- | --- | | 1 | Program spells a word correctly | Every letter A-Z maps to its NATO code word; input is case-insensitive | pytest: all 26 letters and a mixed-case word pass | | 2 | Tests pass | 100 % of tests pass on Python 3.13 locally and in CI | `python -m pytest` exit code 0; CI run green | | 3 | No runtime dependencies | 0 runtime dependencies | `pyproject.toml` has an empty `dependencies` list | | 4 | Setup works from the README | A fresh clone runs the program using only the README steps | Manual run of the README steps on Windows PowerShell | | 5 | Documentation complete | README sections of the template, wiki in 3 languages, Doxygen builds without warnings | `check-readme.sh` exit 0; every wiki page exists in en, da and ms; `doxygen Doxyfile` reports 0 warnings | | 6 | Repository presented | Description and at least 5 topics set | Repository page and API show both | ## Risks | Risk | Impact | Mitigation | | --- | --- | --- | | The git host token lacks scope for editing the repository or wiki | Description, topics or wiki cannot be published | Stop and report; keep the wiki content as files in the working tree and ask S01 for a token with the needed scope | | The wiki is not enabled on the host | Wiki pages cannot be pushed | Enable it through the repository settings API; otherwise stop and report | | Danish and Bahasa Malaysia translations contain errors | S02 or S03 read wrong text | Keep wiki sentences short and simple; S01 reviews the translations in the pull request | | Starter code is copied verbatim | Originality concerns | The program is written fresh; only the supplied CSV data is reused, as the assignment intends | | Secrets in `.env` leak into the repository | Credential exposure | `.env` is git-ignored, never imported by the program or tests, and never echoed | ## Assumptions - The Product Owner is S01, who also develops and reviews; in autonomous mode the AI acts as S01's stand-in reviewer and the review records say so. - Python 3.13 or newer is available on the machines of the readers. - The git host (Gitea) offers repository, topic and wiki features through its application programming interface (API) and git remote. - The CSV with 26 letter/code word rows supplied with the assignment is the data source. ## Constraints - Python 3.13 or newer, a local `venv`, `pytest`, constants in `constants.py`, configuration in `pyproject.toml`. - Folder structure `src/`, `tests/`, `docs/`. - No runtime dependencies unless needed. - Tokens are read from `.env` for personal use only; the project and its tests never import or test it. - One pull request per milestone; no commit on `main`. ## Cost–Benefit Assessment Qualitative, because the project is a personal learning exercise with no revenue; the effort is a few hours of S01's time and AI assistance. | Costs | Benefits | | --- | --- | | A few hours of effort; hosting on an existing git host | A reusable reference repository, practice with the framework, a shareable example for S02 and S03 | ## Stakeholders | Stakeholder ID (SA) | Interest in this project | | --- | --- | | S01 | Owns and builds the project; wants a clean, complete solution | | S02 | Wants readable, runnable code with the assignment's function names and run instructions | | S03 | Wants a clear description, topics and README, and no runtime dependencies | ## Recommendation Proceed: the scope is small, the risks are low and every objective is verifiable. --- [SA-001]: ./stakeholder-analysis.md