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.


Technology Justification

  • 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.

Project Management

  • GitHub Projects & Issues
    All tasks, user stories, and bugs are tracked via individual GitHub Issues. A Kanban board displays issue status across To Do, In Progress, and Done columns. This approach uses GitHub’s native capabilities to minimize overhead.

Guidelines and Naming Conventions

Branching & Pull Requests

  • 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

    1. Reference the related issue (e.g., closes #10).
    2. Assign at least one reviewer.
    3. Ensure CI checks (linting, testing) pass successfully.
    4. Merge using “Squash and merge” for a clean, linear history.
    5. Retain the branch to maintain a presentable development history.

Iteration Template

This template must be used for every sprint retrospective:

  1. Iteration Name: Unique and descriptive title for the sprint
  2. Duration: Start and end dates (DD.MM.YYYY)
  3. Addressed Issue(s): Linked GitHub issue IDs
  4. Selected Requirements: Functional and non-functional requirements implemented during the sprint
  5. Detailed Design Notes: Implementation decisions, diagrams, and design patterns used
  6. Definition of Done Checklist: Specific criteria that define when the sprint goals are considered complete
  7. Test Objective: Covered test cases and edge conditions to validate functionality
  8. Implementation Summary: Referenced commits and pull requests merged during the iteration
  9. Lessons Learned: Brief insights on successful practices or encountered challenges
  10. Improvement Plan: Actionable steps to optimize the next sprint

Code Conventions

  • 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)
  • 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.

Testing Standards

  • Framework: pytest
  • Test file naming: test_<module>.py or Test<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.
⚠️ **GitHub.com Fallback** ⚠️