...
Op het moment dat wij het SRS (tussentijds) gingen opleveren wisten we eigenlijk al dat de kwaliteit hiervan zwaar onder de maat was. Er was veel feedback van docenten die we hier in hebben kunnen verwerken. Eén van de belangrijkste dingen in een SRS is misschien wel dat alles coherent en consequent is. In het SRS moet je namelijk dezelfde termen gebruiken als in het PvA. Dit was bij ons niet het geval. Ook is het zo dat we in het SRS verschillende termen hebben gebruikt voor dezelfde gebruiker zonder deze verder toe te lichten. Dit zorgt ervoor dat iemand niet goed zou kunnen begrijpen wat het uiteindelijke product nou wordt. Dit is echter wel de hoofdbedoeling van een SRS. De opdrachtgever heeft een opdracht, deze werk je voor een opdrachtgever (en mogelijk andere programmeurs) uit in een SRS. We moeten als groep alles op alles zetten om dit document duidelijk en goed te krijgen omdat ook andere groepen dit document zullen moeten gaan gebruiken. De documentatie is voor deze opdracht dan ook belangrijker dan de code zelf.
Code
De code die voor mij een groot deel van de tijd in beslag heeft genomen en ook nog niet volledig af is is de login. Als we het hebben over de backend van deze code dan gaat het vooral over de code die Thomas geschreven heeft, en later aangepast is door Wijnand. Zelf heb ik hier niet aan gewerkt, maar wel gereviewd. Zelf ben ik bezig geweest met de front-end van de login, de koppeling van de front-end en backend en moet ik nog werken aan de foutafhandeling en het doorgeven van een token. De token is nodig om op elke pagina te kijken of de gebruiker hier mag zijn, en als dit het geval is, wat deze gebruiker mag en kan. Als ik kijk naar de backend is hier veel tijd aan besteed. Er zijn tijdens het maken van de login aanpassingen geweest, grotendeels door meerdere invalshoeken. Iedereen kijkt er toch net wat anders naar. De één vindt het beter om de gebruiker te laten weten of zijn wachtwoord of gebruikersnaam misschien niet klopt, terwijl de ander juist denkt dat er maar één bericht moet komen dat er iets fout is. Dit zijn constant kleine aanpassingen, maar kunnen later op andere stukken weer een grotere impact hebben. Ik durf niet met zekerheid te zeggen of het allemaal veel sneller had gekund omdat mijn focus niet lag op waar Thomas precies mee bezig was. Ik denk echter wel dat het sneller had gekund als we gelijk de uiteindelijke richting hadden gekozen zoals: het wachtwoord moet gehasht in de database staan en er komt 1 foutmelding.
De Backend van de login werkt nu en is klaar, de front-end heb ik met behulp van Angular ook snel in elkaar weten te zetten. Ook door het feit dat er veel over te vinden is het een redelijk snel en makkelijk proces. toch ben ik meerdere obstakels tegen gekomen. Allereerst wou ik een Toastr toevoegen voor foutmeldingen. Toastr's zijn gekleurde berichten die vaak rechts bovenin een scherm te zien zijn (bijvoorbeeld https://codepen.io/RaiseTheBahr/pen/JOybye). Dit leek ook in Angular makkelijk te kunnen al kreeg ik foutmeldingen waar ik geen raad mee wist en ook na veel onderzoek nog niet uit ben gekomen. Ik heb mij voor nu neergelegd bij het niet kunnen gebruiken van Toastr's en ben verder gegaan met de koppeling. De koppeling tussen de twee was er snel en werkte goed. Op het moment dat de login backend af was kon je ook gelijk met de front-end inloggen, al deed deze verder nog niks. De vervolgstap is het doorgeven van een token aan de user. Ook hier heeft al wat tijd ingezeten, al denk ik nu te weten hoe ik dit kan oplossen. Ik denk niet dat hier veel tijd bespaard had kunnen worden. Het gebruik van Toastr's heb ik misschien te graag gewild terwijl een rode tekst voor nu ook genoeg zou zijn geweest. Dit is ook de oplossing die we hier gaan gebruiken. De oplossing voor het meegeven van een token komt uiteindelijk af van Meron Brouwer. Als ik hier eerder de vraag aan had gesteld in plaats van het onderzoek zelf vanaf 0 te doen was misschien de hele login ook al klaarCode is (wat de opdrachtgever betreft) een stuk minder belangrijk dan de documentatie zelf. Het is dan ook zo dat we hier in principe minder goed hebben gekeken wat betreft de kwaliteit van. We zijn beginnen met opzetten van zonder te bedenken hoe de structuur van de mappen en bestanden er uit komt te zien. Ook hebben we niet gekeken naar de kwaliteit van de code zelf. Momenteel is er bijvoorbeeld veel dubbele (en daardoor slechte code) te zien. Als ik nadenk of we gebruik maken van design pricniples zoals GRASP of SOLID dan denk ik dat deze er per ongeluk hier en daar inzitten. Daarnaast was het ook voor de kwaliteit van de code beter geweest als we niet alleen meer tijd hadden besteed aan het opzetten van regels voor code en kijken hoe we dingen zoals GRASP en SOLID zouden kunnen gebruiken, maar ook hadden we meer tijd moeten nemen voor het bedenken van hoe onderdelen zouden moeten werken. Als ik hier bijvoorbeeld kijk naar de login zijn er veel te veel iteraties en aanpassingen geweest. Dit heeft gezorgd voor code die onnodig is en soms stukken code die compleet niet gebruikt werden door het systeem. Dit had, helemaal als ik terugkijk op de vorige lessen, gelijk beter gemoeten.
Projectmethode
We zijn deze periode aan het werk gegaan met scrum. Scrum is een methode waar je een to-do lijst hebt. Iedereen weet wat er nog moet gebeuren. Als je een taak oppakt sleep je deze naar "in progress". Door dat te doen kan iedereen zien wie waar mee bezig is. Na het afronden kan de taak naar het vak "ready to review". Dit houdt in dat het maken van de taak klaar is, maar dat deze nog wel moet worden gereviewd. Hierna kan de taak terug naar "in progress" omdat er nog aanpassingen moeten worden gedaan, of naar done wat aangeeft dat de taak volledig goed is. Deze methode werkt goed. Op elk moment van de dag kan er gekeken worden wie waar mee bezig is, wat er nog gedaan moet worden en wat niet afkomt. Tijdens de Daily stand up bespreken we elke ochtend wie waar mee bezig was, of er problemen waren en wat ze die dag gaan doen. Naast dat we dit bespreken hebben we het ook over het aantal gereserveerde uren, en de gewerkte uren. Voor elke taak staat een aantal uren. Als je met een taak bezig bent geweest geef je het aantal uren op dat je er aan gewerkt hebt. Aan het eind kunnen we kijken of de schatting overeenkomt. Als je minder uren hebt gebruikt is er niks aan de hand. Echter, als er meer uren zijn gebruikt dan verwacht, dan is er dus een probleem ontstaan. We kunnen dan overleggen met hoe het zit en wat er anders moet. Kunnen we dit probleem nog eens tegenkomen, of was het een complexere, eenmalige uitdaging? Dit zorgt ervoor dat de hele groep op de hoogte is van de voorgang.
...