1/68
Een uitgebreide set flashcards over softwarekwaliteit, onderhoudbaarheid, architectuur, programmeerparadigma's en security op basis van de ISO 25010 en OWASP richtlijnen.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
Softwarekwaliteit (ISO 25010)
De mate waarin een systeem voorziet in de gestelde en te verwachten behoeften van verschillende belanghebbenden en zodoende waarde biedt.
Maintainability (ISO 25010)
Onderhoudbaarheid; de mate van effectiviteit en efficiëntie waarmee een systeem kan worden aangepast voor verbetering, correctie of verandering in omgeving.
Effectiveness (Maintainability)
De vraag of de software technisch gezien aangepast kán worden.
Efficiency (Maintainability)
De vraag of de software aangepast kan worden met redelijke resources zoals tijd en geld.
Modularity
De mate waarin een verandering minimale impact heeft op andere onderdelen van het systeem.
Reusability
De mate waarin onderdelen hergebruikt kunnen worden in dezelfde of andere software.
Analysability
De mate waarin software te doorzien en te diagnosticeren is.
Modifiability
De mate waarin software aangepast kan worden zonder fouten te introduceren.
Testability
De mate waarin softwaretests opgesteld en uitgevoerd kunnen worden.
Separation of concerns
Het onderscheiden en afbakenen van verantwoordelijkheden en abstractieniveaus in verschillende modules.
Cohesion (samenhang)
Hoe sterk de samenhang binnen een module is; het groeperen van gerelateerde verantwoordelijkheden.
Coupling (koppeling)
De mate waarin modules van elkaar afhankelijk zijn en hoeveel kennis ze van elkaar hebben.
Abstraction
Focus op wat een object doet in plaats van hoe het het doet om complexiteit te verbergen.
Encapsulation
Het verbergen van interne details van een object waarbij toegang alleen verloopt via noodzakelijke publieke interfaces.
Polymorphism (Polymorfisme)
Het principe waarbij objecten van verschillende klassen via dezelfde interface kunnen worden aangesproken.
Inheritance
Overerving, waarbij een klasse eigenschappen en methoden overneemt van een andere klasse (Interface of Implementation).
Composition over Inheritance
Het principe om compositie te gebruiken in plaats van overerving om gedrag herbruikbaar te maken op een losgekoppelde manier.
Gherkin
Een Domain Specific Language die gebruikt wordt om wensen van belanghebbenden op te halen en te structureren.
Code smells
Een aanwijzing dat er ergens in de structuur of het ontwerp van de code iets niet optimaal zou kunnen zijn.
Hungarian notation
Een naamgevingsconventie waarbij het type van de variabele in de naam wordt opgenomen, wat volgens de transcriptie onnodig is.
Early returns
Een techniek waarbij een resultaat uit een methode wordt teruggegeven zodra dit mogelijk is om de code te vereenvoudigen.
Guard clauses
Het gooien van excepties aan het begin van een methode als niet aan de pre-condities is voldaan.
Technical debt
De opgebouwde 'schuld' in werk of kosten veroorzaakt door het kiezen voor een minder geschikte oplossing op korte termijn.
Managed technical debt
Technische schuld die bewust en gecontroleerd wordt aangegaan met een plan om dit later op te lossen.
Refactoring
Het verbeteren van de interne structuur van de code terwijl de externe functionaliteit hetzelfde blijft.
Legacy code
Nalatenschap in code die vaak als slecht wordt gezien door grote hoeveelheden, gebrekkige documentatie of een verouderde structuur.
Strangler fig pattern
Een strategie waarbij onderdelen van een bestaande applicatie stapsgewijs worden vernieuwd door er nieuwe applicatiedelen omheen te bouwen.
Essential complexity
De inherente moeilijkheidsgraad van het probleem en de oplossing zelf.
Accidental complexity
De extra moeilijkheid die door de ontwikkelaars zelf aan het probleem of de oplossing is toegevoegd.
Cyclomatic Complexity (McGabe)
Een metriek voor complexiteit gebaseerd op het aantal vertakkingen in de control flow; berekend als CC=edges−nodes+2×components.
NPath complexity
De som van de hoeveelheid paden die je af kunt leggen tussen het startpunt en eindpunt van een stuk code.
Cognitive Complexity (Sonar)
Een door SonarSource ontwikkelde metriek die de mentale inspanning meet om code te begrijpen.
CRAP-index
Change Risk Analysis and Predictions; een indicator voor het risico bij het veranderen van een methode gebaseerd op complexiteit en code coverage.
Static analysis
Analyse van software zonder deze daadwerkelijk uit te voeren, vaak ter controle van stijl en best practices.
PMD
Een tool voor statische analyse op source code die rapporten genereert en style guides afdwingt.
ArchUnit
Een tool voor het uitvoeren van unit tests die controleren of de geïmplementeerde architectuur voldoet aan de beoogde regels.
Declarative programming
Een programmeerstijl waarin wordt beschreven wat men wil bereiken in plaats van de exacte stappen (imperative) te definiëren.
Pure functions
Functies die bij dezelfde argumenten altijd dezelfde waarde teruggeven en geen side-effects hebben.
Referential transparency
De eigenschap dat een functie vervangen kan worden door zijn onderliggende waarde zonder het gedrag van het programma te veranderen.
First-class functions
Functies die als zelfstandige concepten behandeld kunnen worden en als argumenten kunnen worden meegegeven.
Lambda’s
In Java zijn dit impliciete implementaties van functional interfaces zonder dat ze een specifieke naam hebben.
Functional Interface
Een interface in Java die precies één abstracte methode bevat en als type voor lambda-expressies dient.
Higher order function
Een functie die een andere functie als argument ontvangt of als resultaat teruggeeft.
Streams API
Een Java-omgeving voor het maken van collection pipelines die transformaties, selecties en reducties lazy uitvoeren.
Optional
Een abstractie in Java (ter vervanging van null) die aangeeft dat een waarde wel of niet aanwezig kan zijn.
Encoding
Het omkeerbaar transformeren van data voor gebruik of vervoer, niet bedoeld voor het bewaren van geheimen.
Encryption
Het transformeren van data in een formaat dat alleen door personen met de juiste sleutel ontcijferd kan worden.
Public Key Cryptography
Asymmetrische versleuteling met een publieke sleutel voor encryptie en een private sleutel voor decryptie.
Hashing
Het produceren van een vaste samenvatting (digest) van input om integriteit te controleren; in principe onomkeerbaar.
Salt
Random data die aan een wachtwoord wordt toegevoegd vóór het hashen om dictionary attacks te bemoeilijken.
Authenticatie
Het proces van bewijzen dat iemand is wie hij zegt dat hij is.
Autorisatie
Het proces van bepalen of iemand de rechten heeft om een bepaalde actie uit te voeren.
JWT (JSON Web Token)
Een open standaard voor het veilig uitwisselen van JSON-gebaseerde claims voor autorisatie en Single Sign On.
FilterChain
Een reeks filters in Java/Spring waar een request doorheen gaat voor functies zoals routing en access control.
RBAC (Role Based Access Control)
Autorisatie waarbij toegangsrechten worden verleend op basis van de specifieke rol van een gebruiker.
ABAC (Attribute Based Access Control)
Autorisatie waarbij rechten worden beheerd op basis van specifieke attributen van een gebruiker of actie.
CIA-triad
Drie kernprincipes van security: Confidentiality (vertrouwelijkheid), Integrity (integriteit) en Availability (beschikbaarheid).
Vulnerability
Een kwetsbaarheid in een systeem waarmee een bepaald risico wordt blootgesteld.
OWASP
Open Web Application Security Project; een organisatie gericht op awareness en best practices voor applicatiebeveiliging.
Injection (OWASP A1)
Een kwetsbaarheid waarbij ongevalideerde gebruikersinput rechtstreeks naar een interpreter of database wordt gestuurd.
Broken Authentication (OWASP A2)
Beveiligingsfouten waarbij credentials kunnen worden geraden of sessie-ids niet goed worden geroteerd.
Sensitive Data Exposure (OWASP A3)
Het onvoldoende beschermen van gevoelige gegevens zoals creditcardnummers of wachtwoorden.
XML External Entities (XXE) (OWASP A4)
Een kwetsbaarheid waarbij een XML-processor externe bronnen verwerkt die tot data-extractie kunnen leiden.
Broken Access Control (OWASP A5)
Wanneer toegangsbeperkingen niet correct worden afgedwongen en gebruikers resources buiten hun rechten kunnen benaderen.
Security Misconfiguration (OWASP A6)
Kwetsbaarheden door onjuiste instellingen, onnodige geopende features of verouderde software.
Cross-Site Scripting (XSS) (OWASP A7)
Een aanval waarbij kwaadwillende scripts in de browser van slachtoffers worden uitgevoerd via onveilige webpagina's.
Insecure Deserialization (OWASP A8)
Het aanpassen van geserialiseerde objecten om applicatielogica of toegangscontrole te manipuleren.
Timing attack
Een aanval waarbij aan de hand van de uitvoeringstijd van operaties (zoals String.equals()) geheime informatie wordt afgeleid.
Snyk
Een tool die oorspronkelijk begon als dependency checker en nu ook static code analysis ondersteunt.