Skip to content

Peer2Peer studievereniging software standaarden

Lucas Ouwens edited this page Feb 11, 2023 · 3 revisions

Software standaarden Peer2Peer

Hallo Peer2Peer softwarepersoon! Welkom in de hele interessante Wiki van Peer2Peer voor de ontwikkeling van software. Dit is het punt waaruit alle softwarestandaarden binnen de Peer2Peer software commissie geregeld zijn.

Repositories

Het gebruik van GitHub repositories wordt binnen de Software Commissie altijd gedaan. Er zijn hier ook een aantal regels aan verbonden. Namelijk,

  1. Er moet een code review plaatsvinden voordat iets naar de hoofdbranche gestuurd mag worden. Als het een project is met sensitieve kenmerken, dan moeten hier specifieke personen voor aangewezen worden die een verantwoordingsplicht zullen dragen.
  2. Er moeten kwaliteitsmaatregelen getroffen worden als het gaat om software. (Denk CI/CD)
  3. De hoofdbranche is altijd protected, er mogen geen directe commits naar gedaan worden.
  4. Per feature wordt er gewerkt in een aparte branch.
  5. Complexere features dienen gedocumenteerd te worden in de wiki van de betreffende repository. Hier kan om gevraagd worden door andere ontwikkelaars.
  6. Er wordt gewerkt via project boards, dit is op een per-project basis. (Zie het Projects tabje.). Hieruit worden issues gemaakt, en deze issues worden opgelost.

CI/CD

Het automatiseren van het kwaliteitsproces is van belang. Processen zoals automatische testen, code style conformiteit en dergelijke opschoningen dienen geautomatiseerd te worden. Dit wordt gedaan via GitHub Actions.

Voor deployment moet er contact opgenomen worden met de voorzitter of iemand die daar op dat moment specifiek voor aangesteld is, meestal is dit gewoon de voorzitter. Het is verplicht om het mogelijk te maken om het softwaresysteem direct te kunnen draaien via een Dockerfile, aangezien er (behalve bij bijzonderheden) gebruik gemaakt wordt van Google Cloudrun. Is er zo'n dergelijke bijzonderheid? Dan dient het bespreekbaar gemaakt te worden bij de vergadering.

Architecturale style

Er is hier een volledig vrije keuze in, zolang het uitvoerbaar is binnen Google Cloudrun zonder dat er grote complexiteit en/of kosten aan verbonden zitten, behalve als dit vooraf besproken en goedgekeurd is.

Code conventies

Er zijn een aantal tools- en technieken waar standaard gebruik van gemaakt dient te worden.

  1. Het gebruik en conformering aan SonarLint is verplicht.
  2. Het toepassen van design patterns die bruikbaar zijn voor het betreffende probleem is van belang, behalve als het écht onnodig is kijkende naar de doorontwikkeling van het systeem (Moet het later uitgebreid worden?). Het boek 'Design Patterns' van The Big Four is een goed referentiekader.
  3. Het toepassen van best-practices binnen de software engineering, bijvoorbeeld YAGNI, KISS, SOLID, etc.
  4. Het toepassen van automatiseringstooling waarmee developers snel en vertrouwd van start kunnen gaan is verplicht. (Docker-compose voor containers die nodig zijn, automatisch database klaarzetten bij integratietesten, etc.)

Code style

Binnen Peer2Peer wordt er zoveel mogelijk gebruik gemaakt van codestijl standaarden om de stijl van software gelijk te houden rondom de verschillende projecten. Het is in ieder geval verplicht om te programmeren in de voertaal Engels. Geen Nederlandificering van methoden, variabelen, etc.

Python

Hier wordt gebruik gemaakt van PEP-8. Het is een pro-tip om Poetry op te zetten met pre-commit, black, mypy, test automatisering, etc.

C#

Hier wordt gebruik gemaakt van de Google Style Guide voor C#, deze kan hier gevonden worden.

TypeScript

Prefereer TypeScript over JavaScript ten alle tijden. Er wordt gebruik gemaakt van ESLint in combinatie met Prettier bij het gebruik van TypeScript. De regels hiervan mogen wel vrij geconfigureerd worden, mits het naar redelijkheid gedaan wordt.

Overige

Refereer naar de Google Style Guide voor verdere code style guides, deze kunnen hier gevonden worden.

Huisstyle

Om te conformeren aan de stijl van Peer2Peer wordt er gerefereerd naar diens style guide. Deze is hier te vinden: Huisstijl Peer2Peer guide