Project Kaders

author:Albert

Platform

De software moet (uiteindelijk) werken op een (elke) RaspberryPi. Het moet ook werken op elk PC-type computer (Mac, Unix/Linux en Windows); vooral om het ontwikkelen eenvoudiger te maken. (Ook voor demo’s en testen)

Taal

De programmeertaal mag gekozen worden uit: Python(3) [1] en/of C* [2]; vooral de aanwezige (taal)kennis van de studenten is van belang.

Wel moet altijd een (kleine) Python-3 API gemaakt worden. Zodat de gehele robot vanuit python aangestuurd kan worden.

Verder:

  • Alle documentatie wordt gemaakt met Sphinx; in rst-files en/of in Python docstrings,
  • Alle files moeten opgeslagen worden in UTF-8, met standard (unix) regeleindes (dus zonder ^M; zoals op Windows)

GUI/Editors

De keuze voor een editor is vrij. Wel moet deze alle alle “file-eisen” ondersteunen (zoals ^J regeleindes, utf-8, indentatie met spaties, etc).

Kwaliteit

TDD

Het gebruiken van de Test-Driven-Development aanpak is verplicht; zowel op unit-, module- en systeem-level.

  • Zorg dat ieder (onder)deel los van andere testbaar is (decoupling)
  • Voor elke functie, class en/of file moeten ”voldoende” unit-test geschreven worden
    • Gebruik bij voorkeur pytest
    • ”Voldoende”:
      • Elke regel, elk statement moet minimaal eenmaal doorlopen worden (in een test)
      • Voor een if zijn dus minimaal 2 tests nodig; bij geneste if’s verdubbeld dat telkens!
      • Niet het aantal testen is belangrijk, maar de zekerheid dat code (wijziging)
  • Ook modele (andere) levels moeten voldoende (automatiche) testen opgeleverd worden; die aantonen dat ‘t werkt.

Code-kwaliteit

  • Het gebruik van pylint en/of andere code-checkers is verplicht. Bij elke (sprint) oplevering moet de kwaliteit aangetoond worden

  • Code reviews zijn verplicht; zowel op functionele correctheid, als lees- & onderhoudbaarheid. Toon dit aan! (gebruik de bitbucket fasaliteiten)

    Dit geldt ook voor documentatie; behalve voor (eigen) ‘team-pages’

Footnotes

[1]Python heeft op dit moment de voorkeur. Vooral omdat de meeste deelnemers weinig (C) programmeer-ervaring hebben (zeker in de C-taal).
[2]C*: C, C++, Objective-C, of C#; de laatste (twee) zijn hier nauwelijks een optie gezien het platform.