Development Environment - tj0vtj0v/KI-B-4-Software_Engineering GitHub Wiki
This chapter outlines the tools, technologies, and processes selected to enable efficient software development for this project. It explains the rationale behind each technology choice, the project management setup, and coding guidelines, including naming conventions, branching strategies, and testing standards.
-
Python
Selected to enable rapid iteration and maintainable code. Python’s straightforward syntax and minimal boilerplate suit the project’s educational context. -
GitHub (SCM)
Employed for version control, issue management, and project tracking. GitHub was chosen for its familiar interface, seamless Git integration, and built-in CI/CD capabilities. -
PyCharm (IDE)
Chosen for its robust Python support, including advanced code analysis, integrated testing, and debugging tools. The built-in GitHub integration and access to GitHub Copilot improve coding efficiency and maintainability. -
AI Assistance
- ChatGPT: Utilized for drafting technical documentation, evaluating architectural options, and refining written content.
-
GitHub Copilot: Employed for generating boilerplate, suggesting code snippets, and scaffolding unit tests.
Both services accelerate routine tasks while preserving final review and control by the developer.
-
GitHub Projects & Issues
All tasks, user stories, and bugs are tracked via individual GitHub Issues. A Kanban board displays issue status acrossTo Do
,In Progress
, andDone
columns. This approach uses GitHub’s native capabilities to minimize overhead.
-
Branch prefixes
-
feat/
– feature development -
bugfix/
– bug resolution -
doc/
– documentation updates
-
-
Branch naming
Format:<prefix>/<issue-number>-<description>
Examples:feat/10-implement-main-controller
,bugfix/12-fix-test-typo
-
Pull request titles
Format:[#<issue-number>] <prefix>: <description>
Example:[#10] feat: implement-main-controller
-
Pull request process
- Reference the related issue (e.g., closes #10).
- Assign at least one reviewer.
- Ensure CI checks (linting, testing) pass successfully.
- Merge using “Squash and merge” for a clean, linear history.
- Retain the branch to maintain a presentable development history.
This template must be used for every sprint retrospective:
- Iteration Name: Unique and descriptive title for the sprint
- Duration: Start and end dates (DD.MM.YYYY)
- Addressed Issue(s): Linked GitHub issue IDs
- Selected Requirements: Functional and non-functional requirements implemented during the sprint
- Detailed Design Notes: Implementation decisions, diagrams, and design patterns used
- Definition of Done Checklist: Specific criteria that define when the sprint goals are considered complete
- Test Objective: Covered test cases and edge conditions to validate functionality
- Implementation Summary: Referenced commits and pull requests merged during the iteration
- Lessons Learned: Brief insights on successful practices or encountered challenges
- Improvement Plan: Actionable steps to optimize the next sprint
- Style guide: adhere to PEP 8 standards.
-
Naming conventions
- Classes:
PascalCase
(e.g.,ExampleClass
) - Functions & variables:
snake_case
(e.g.,example_object
) - Constants:
UPPER_SNAKE_CASE
(e.g.,MAX_CONNECTIONS
)
- Classes:
- Type hints: include for all function signatures and return values.
- Docstrings: consistent style for public interfaces (Google or NumPy).
- Imports: group and order as standard library, third-party, local.
-
Framework:
pytest
-
Test file naming:
test_<module>.py
orTest<Class>.py
-
Test function naming:
test_<function>__<condition>__<expected>()
Example:def test_is_door_opened__additional_parameter__raises_type_error(): ...
- Coverage requirement: all new and modified code must achieve at least 90% test coverage.