7.0 KiB
Business Case
Metadata
| Key | Value |
|---|---|
| ID | BC-001 |
| CrossReference | SA-001 |
| Language | en |
| Domain | it |
Version History
| Date | Status | Author | Reviewer | Change | Commit |
|---|---|---|---|---|---|
| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: constraint wording, abbreviations spelled out (RC-001) | a07d05b |
| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-001; language checks confirmed by S01 | a07d05b |
Executive Summary
Lecture 054 of Udemy's "100 Days of Code: The Complete Python Pro Bootcamp"
asks the participant to write a decorator, speed_calc_decorator, that prints
how many seconds a function takes to run, and to apply it to fast_function
and slow_function. This project turns that exercise into a small, tested,
documented repository that other course participants can read and run, and that
GitHub visitors can browse. It is a prototype: one Python package, a test suite,
a README and a three-language wiki that explains what each lecture step taught.
Methodological and Standards Foundation
The documents follow the SQA and QC framework mounted at framework/
(Business Case, Stakeholder Analysis, Project Plan, milestones, then code).
Quality criteria are tagged with ISO/IEC 25010:2023 characteristics. Source
code follows the coding-conventions skill (Python) and is documented with
Doxygen comments.
Problem Statement
- The assignment gives only a stub (
def speed_calc_decorator(): pass) and an expected output; there is no shared, runnable, tested solution layout. - Participants who compare solutions find loose scripts without setup instructions, tests or an explanation of the decorator concepts involved.
- The author has no record of what each lecture step taught.
Business Opportunity
A clean solution repository lets participants run the exercise in two commands,
lets visitors reuse the layout (src/, tests/, docs/) for other lectures of
the course, and gives the author a written record of the learning.
Objectives
- Deliver
speed_calc_decorator,fast_functionandslow_functionwith the assignment's names, printing output in the shape of the expected output. - Cover the behaviour with pytest tests that do not depend on real elapsed time.
- Document how to create and use a local
.venvand run the project and tests. - Provide a README and a wiki in English, Danish and Bahasa Malaysia that explain what each lecture step gained, with one screenshot per step.
- Publish a repository description and topics on the git host.
Scope
In Scope
- Python package under
src/, tests undertests/, documents underdocs/. pyproject.toml, Python.gitignore,constants.py, aDoxyfile.- README from the framework template, with venv and test instructions.
- Wiki pages (en, da, ms) and one screenshot per lecture step.
- Repository description and topics on the git host.
Out of Scope
- Other lectures of the course.
- Runtime dependencies, packaging to the Python Package Index (PyPI), a graphical user interface (GUI).
- Reading or importing the
.envfile in the project (personal use only).
Expected Benefits
Tangible Benefits
- A runnable solution:
python -m speed_calcprints the expected output shape. - A passing test suite and a documented setup.
- README and wiki in three languages with screenshots.
Intangible Benefits
- Understanding of decorators, closures,
functools.wrapsandtime.time(). - A reusable layout for later lectures.
Strategic Alignment
The project supports the author's goal of completing the 100 Days of Code course with a documented portfolio on the author's git host, and supports the sharing of solutions among course participants.
Success Criteria
| # | Criterion | Target | Measure |
|---|---|---|---|
| 1 | Tests pass | 100 % of tests green | python -m pytest exits 0 |
| 2 | Program output | 3 lines in the shape of the assignment's expected output | python -m speed_calc run captured in the lecture-step screenshots |
| 3 | Runtime dependencies | 0 | pyproject.toml has an empty dependencies list |
| 4 | Wiki languages | 3 languages, same page set | file listing of docs/wiki/ |
| 5 | Screenshots | 1 per lecture step in README and wiki | image files in docs/screenshots/ |
| 6 | Repository metadata | Description and at least 5 topics set | git host application programming interface (API) response |
Risks
| Risk | Impact | Mitigation |
|---|---|---|
| Timing tests are flaky on slow machines | Red continuous integration (CI) runs, false failures | Tests inject a fake clock and never assert real durations |
Token in .env leaks |
Account compromise | .env is git-ignored, never read by project code, never printed |
Repository URL in the request differs from the configured origin |
Metadata set on the wrong repository | Use the origin repository; the difference is recorded in Open Issues of [PP-001] |
| Translations contain mistakes | Misleading wiki text | Keep wording simple, English is authoritative, review by S01 |
| Screenshot capture on the host desktop disturbs the user | Interrupted work | Screenshots are rendered from captured program output, never from the desktop |
Assumptions
- Python 3.13 or newer is installed on the author's machine.
- The git host accepts the token in
.envfor repository settings and pull requests. - The wiki is enabled in the repository settings.
- The Product Owner is S01; S01 is the reviewer. The people for whom the work is intended (S02, S03) are not contacted for this prototype.
Constraints
- Python 3.13 or newer, venv, pytest,
pyproject.toml. - No runtime dependencies.
constants.pyholds the constants.- Folder structure
src/,tests/,docs/. - One pull request (branch) per milestone.
- Target: finished by 2026-11-09.
Cost–Benefit Assessment
| Costs | Benefits |
|---|---|
| About one working day of effort | Complete, shareable solution and learning record |
| No licence or infrastructure cost | Reusable layout for later lectures |
The assessment is qualitative: this is a personal learning project with no revenue, so numbers would add no information.
Stakeholders
| Stakeholder ID (SA) | Interest in this project |
|---|---|
| S01 | Owner, developer and reviewer; wants a correct exercise and a learning record |
| S02 | Reads and runs the code; wants the assignment's function names and clear run instructions |
| S03 | Browses for ideas; wants a clear description, topics and README with no dependencies |
Recommendation
Proceed — the scope is small, the dependencies are none, and the outcome serves all three stakeholders.