Overview¶
You’ve validated your To-Do List app through rigorous testing, now it’s time to refine, polish, and present your final product.
This milestone is all about engineering excellence: completing any unfinished aspects of the project, refactoring code for clarity and maintainability, improving robustness through exception handling, enhancing documentation, and ensuring your repository is clean, readable, and professional.
You’ll also finalize your GitHub release, README, and documentation artifacts, ensuring everything reflects the quality of your software engineering journey. The result should be a product that not only works but also feels production-ready, organized, well-documented, and robust.
Learning Objectives¶
Upon successful completion of this milestone, you will be able to:
Complete unfinished project elements including code, features, and documentation to deliver a fully functional app.
Refactor and improve code structure, readability, and maintainability.
Identify and remove code smells, improving performance and clarity.
Add exception handling for robust runtime behavior.
Enhance documentation and comments for clarity and understanding.
Apply typing, docstrings, and modular organization for professional code quality.
Deliver a final, well-documented release with polished artifacts.
Tasks and Instructions¶
1. Complete Unfinished Project Elements¶
Review your project for any incomplete or pending items and finalize them.
Address any unfinished code, features, or bug fixes from previous milestones.
Update and complete all documentation, diagrams, and artifacts that were drafted but not finalized.
Ensure the entire app is fully functional, integrated, and meets the original requirements outlined in the SRS.
Verify that all aspects (e.g., UI, backend, testing) are cohesive and ready for final submission.
2. Code Refactoring and Quality Improvements¶
Perform a final cleanup pass on your project. Refactor any parts that feel complex, redundant, or inconsistent.
Identify 5+ code smells and fix them (duplication, long methods, inconsistent naming, etc.).
Apply
PEP 8or similar styling, proper function/variable names, and consistent indentation.Add docstrings (
""" """) to all public classes and functions.Include type hints throughout (
def add_task(task: Task) -> None:).Simplify and modularize any overly long code blocks.
3. Robustness and Exception Handling¶
Improve system reliability by handling edge cases and unexpected errors gracefully.
Add meaningful
try/exceptblocks where user or file interactions may fail.Log or print user-friendly error messages.
Document robustness of your app in
/task_manager_app/docs/robustness.mdwith
4. Documentation and Repository Cleanup¶
Ensure your documentation and repo reflect your final, polished state.
README.md (top-level):
Clear project overview and installation instructions.
Screenshots or GIFs of the app (if available).
Section on testing and refactoring outcomes.
Contributor information and acknowledgments.
Include visual or presentation artifacts if applicable.
SRS (
/task_manager_app/docs/srs.md):Updated with final architecture diagrams or design refinements. (if time permits)
5. Logging¶
Add meaningful logging throughout your application to improve debuggability, traceability, and runtime visibility.
Use structured, consistent log messages across the project.
Log key events such as:
Application startup and shutdown
Database operations
Errors, exceptions, and unexpected conditions
Important user actions or state changes
Ensure logs differentiate between levels (
DEBUG,INFO,WARNING,ERROR,CRITICAL).Keep logs readable, concise, and helpful for debugging and maintenance.
6. GitHub Release¶
Create a final release (v6.0, tagged final-submission), and release notes summarizing:
Known limitations
Identified bugs
Future work
Robustness and code smell fixes.
Summary of final improvements
6. Individual Reflections¶
Submit a .md file via Canvas with links and reflection answers (see Submission Checklist).
Submission Checklist¶
Submit via Canvas¶
A .md file containing:
Final GitHub release link:
(e.g.,
https://github.com/user_name/project_name/releases/tag/v6.0)GitHub Project board link:
(e.g.,
https://github.com/user_name/project_name/projects/1)Reflection Answers:
Your contribution to final improvements (50–100 words):
What specific refactoring, documentation, or robustness improvements did you contribute?
How did refactoring improve your code quality? (50–100 words):
Discuss how your changes made the code clearer or more maintainable.
How did you improve robustness and readability? (50–100 words):
Mention specific exception handling or readability enhancements.
How did documentation improve your project? (50–100 words):
Explain how organized documentation helps the user and future developers.
Final reflection (50 words):
Reflect on your journey, team collaboration, and engineering growth.
Repository Documents¶
All documents must be up to date, committed, and linked in your final release.
Use checkboxes to confirm completion:
Updated README.md (root)
Clear, professional overview, visuals, and setup guide.
Refactoring Log (
/task_manager_app/docs/refactoring.md)Smells identified, fixes.
Robustness Improvements (
/task_manager_app/docs/robustness.md)Error handling additions and justifications.
Updated SRS (
/task_manager_app/docs/srs.md) (if time permits)Final testing and robustness details.
Meeting Minutes (
/task_manager_app/docs/meeting_minutes/milestone_5/)Final team discussion notes.
GitHub Releases¶
Final Release (
v6.0) with release notes.
GitHub Project Board¶
Updated project board reflecting final tasks and completion status.
Evaluation Rubric (40 Points)¶
| Criteria | Points | Description |
|---|---|---|
| Project Completion and Finalization | 10 | All unfinished elements addressed; app fully functional |
| Refactoring and Code Quality | 10 | Code smells removed, clarity and maintainability improved |
| Robustness Improvements | 5 | Exception handling and resilience enhancements |
| Documentation and Readability | 10 | README, and supporting docs are professional and complete |
| Final Release and Organization | 5 | Clean release notes, repo structure, and polish |
Resources¶
Libraries and Tools¶
Readme Finalization Guide¶
README.so for easy README creation.