ONTWERP VAN INFORMATIESYSTEMEN
Academiejaar 2022-2023, Prof. Dr. Jan Verelst & Bruno De Winter
Inhoudstafel
Deel 1: Basisbegrippen van ontwerp van informatiesystemen.......................................................................................3
Hoofdstuk 1: Wat is “ontwerp van informatiesystemen”?..........................................................................................3
1.1 Inleiding.............................................................................................................................................................3
1.2 Watervalmodel..................................................................................................................................................3
1.3 Andere ontwikkelingsmodellen.........................................................................................................................4
1.4 Methodologieën................................................................................................................................................4
1.5 Gestructureerd vs. object-georiënteerd............................................................................................................4
Hoofdstuk 2: Variabelen en datastructuren................................................................................................................6
2.1 Constanten........................................................................................................................................................6
2.2 Variabelen.........................................................................................................................................................6
2.3 Basistypes..........................................................................................................................................................7
2.4 Datastructuren..................................................................................................................................................8
Hoofdstuk 3: Basisstructuren....................................................................................................................................10
3.1 Inleiding...........................................................................................................................................................10
3.2 Sequentie.........................................................................................................................................................10
3.3 Iteratie.............................................................................................................................................................10
3.4 Selectie............................................................................................................................................................11
Hoofdstuk 4: Procedures...........................................................................................................................................12
4.1 Wat zijn procedures?.......................................................................................................................................12
4.2 Recursiviteit.....................................................................................................................................................15
4.3 Voordelen van procedures..............................................................................................................................15
Deel 2: modulariteit en gestructureerd ontwerp..........................................................................................................16
Hoofdstuk 5: Software kwaliteit................................................................................................................................16
5.1 Kwaliteit...........................................................................................................................................................16
5.2 Kwaliteitseisen.................................................................................................................................................16
5.3 Afwegingen......................................................................................................................................................16
5.4 Verband met onderhoud.................................................................................................................................17
5.5 Verband met architectuur...............................................................................................................................17
Hoofdstuk 6: Modulariteit.........................................................................................................................................18
6.1 Modules...........................................................................................................................................................18
6.2 Koppeling.........................................................................................................................................................20
6.3 Cohesie............................................................................................................................................................23
6.4 Afsluitende opmerkingen................................................................................................................................24
1
,Deel 3: Object-georiënteerd Ontwerp...........................................................................................................................25
Hoofdstuk 7: Inleiding tot Object-Oriëntatie.............................................................................................................25
7.0 Inleiding...........................................................................................................................................................25
7.1 Abstract Data Type..........................................................................................................................................25
7.2 Wat is object-oriëntatie?.................................................................................................................................25
7.3 UML................................................................................................................................................................. 29
7.4 Het zoeken van objecten en klassen................................................................................................................29
7.5 Voorbeeld........................................................................................................................................................31
Hoofdstuk 8: Relaties tussen klassen.........................................................................................................................32
8.1 Associatie.........................................................................................................................................................32
8.2 Generalisatie....................................................................................................................................................33
8.3 Aggregatie en Compositie................................................................................................................................33
Hoofdstuk 9: Eigenschappen van Object-Oriëntatie..................................................................................................34
9.1 Overerving.......................................................................................................................................................34
9.2 Polymorfisme...................................................................................................................................................35
9.3 Statische attributen en methodes...................................................................................................................38
Hoofdstuk 10: Patronen............................................................................................................................................41
10.1 Wat is een ontwerppatroon?.........................................................................................................................41
10.2 Voordelen......................................................................................................................................................41
10.3 Voorbeelden..................................................................................................................................................42
Overzicht belangrijkste gelijkenissen en verschillen qua object-oriëntatie (H7-H10)................................................50
Hoofdstuk 11: Addendum: inlezen gegevensbestanden...........................................................................................51
2
,DEEL 1: BASISBEGRIPPEN VAN ONTWERP VAN INFORMATIESYSTEMEN
HOOFDSTUK 1: WAT IS “ONTWERP VAN INFORMATIESYSTEMEN ”?
Leerdoelen:
1. De verschillende fasen in het ontwikkelingstraject van software kunnen uitleggen
2. Het belang van de ontwerpfase uitleggen
3. Het verschil en het verband tussen de gestructureerde en de object-georiënteerde methode kunnen
uitleggen
1.1 INLEIDING
Informatiesysteem = zorgt ervoor dat invoer, verwerking en uitvoer van informatie in functie van informatiebehoeften van een
gebruiker en bestaat uit hardware, software, bedrijfsprocessen/procedures, mensen, …
Soorten informatie
Gestructureerd (getallen, tekst, …)
Semi-gestructureerd (e-mail, documenten, …)
Ongestructureerd (video, audio, afbeeldingen, …)
Welke verwerking?
Aggregatie
Selectie
Sorteren
Software engineering = Verwijst naar principes, methodologieën (welke stappen voor bouw IS?), methoden en technieken voor
het bouwen van kwalitatief hoogstaande informatiesystemen
= veel meer dan enkel programmeerwerk en probeert diverse kwaliteitscriteria te volbrengen (betrouwbaarh, onderhoudbaar,
…)
Kleine systemen bouwen is relatief makkelijk, maar grote systemen zorgen voor veel problemen (duurder, trager, … dan
verwacht)
1.2 WATERVALMODEL
Fasen overlappen (behalve onderhoud) niet 1. Analyse, dan 2. Ontwerp! Vloeit over en kan ook terugkeren
Analyse: vereisten volledig, consistent en ondubbelzinnig in kaart brengen in de vereistenspecificatie (wat moet het kunnen?)
Functionele vereisten (welke data, procesvereisten, …)
Niet functionele vereisten (beperkingen op manier waarop functionele vereisten worden uitgevoerd: performantie,
onderhoudbaarheid, herbruikbaarheid, beveiliging, …)
Einddoel: opstellen document waarin alle vereisten voor het nieuwe systeem op een gestructureerde manier beschreven staan
Ontwerp: hoe moet software gestructureerd worden om kwalitatief goed te zijn?
Hoog niveau (bijvoorbeeld huis: fundering, constructie dak, …) subsystemen, hoe communiceren subsystemen?
Laag niveau (gedetailleerder, algoritmes, …, bv: behangpapier) praktisch ontwerp
Modeloplossing = een oplossing wicked design problem (= altijd meerdere oplossingen mogelijk)
Onderhoudbaarheid (nieuwe elementen toevoegen) & herbruikbaarheid
Implementatie: systeem zodanig programmeren in een taal dat software van hoge kwaliteit ontstaat
Testen:
Verificatie (werkt het correct?)
Validatie (beantwoordt het aan de behoeften, is het bedrijfskundige probleem opgelost?)
Onderhoud
In volgorde van meeste tot minste geld aan besteed
3
, Perfectief (moet ook kunnen veranderen aan de snelheid waarin de digitale economie verandert)
Correctief (fouten eruit halen)
Adaptief (nieuwe hardware, besturingssysteem, wat als we wisselen van platform?)
Preventief (veroudering door verandering zie Lehman’s laws)
Lehman’s Laws
De wet van de constante verandering
o Een programma dat gebruikt wordt in de reële wereld moet veranderen (evolueren), of het wordt minder en
minder bruikbaar digitale economie verandert heel snel
De wet van de stijgende complexiteit
o De structuur van een programma dat evolueert wordt complexer met de tijd, tenzij de nodig stappen worden
ondernomen om dit tegen te gaan (=preventief onderhoud)
o Hoe meer complexiteit, hoe meer preventief onderhoud (=refacturing)
1.3 ANDERE ONTWIKKELINGSMODELLEN
Strikte toepassing van het watervalmodel leidde tot grote problemen en mislukkingen van projecten, bovendien was de
scheiding van de fasen moeilijk te maken overlappingen
Iteratief ontwikkelen: niet in 1 keer het volledige, juiste systeem bouwen, maar in verschillende cycli. 1 cyclus bestaat hierbij uit
analyse, ontwerp en implementatie en wordt afgesloten met een duidelijke mijlpaal
1.4 METHODOLOGIEËN
= een aanbevolen geheel van filosofieën, fasen, procedures, regels, technieken, tools, documentatie, management en training
voor ontwikkelaars van informatiesystemen.
= systematische manier om aan informatiesysteemontwikkeling te doen
= beschrijft in welke volgorde en hoe elke activiteit in het systeemontwikkelingstraject moet worden uitgevoerd
Modellen = weergave van het systeem in de reële wereld, meestal in de vorm van schema’s
Tools = vereenvoudigen van de aanmaak van verschillende modellen analyse, ontwerp en de implementatie worden
ondersteund door tools
Technieken = beschrijven hoe modellen moeten worden opgesteld, of geven aan hoe voldoende informatie kan worden
verkregen om het model op te stellen (worden ondersteund door tools)
Ontstaan
Als reactie op de softwarecrisis: nodige stappen vastleggen die in de juiste volgorde moeten gebeuren en hoe deze stappen
uitgevoerd moeten worden
Voordelen
Samenwerking is eenvoudiger
Planbaarheid (verschillende fasen ontwikkelingstraject op voorhand gekend, standaardproces)
Beter aan te leren (kan worden toegepast op verschillende projecten)
Kwaliteitsverhoging
Nadelen
Niet geschikt voor alle situaties
Soms te stringent (vereisen nodige opleiding en gaan gepaard met diverse procedures = ontwikkelaars voelen zich
belemmerd in werkzaamheden)
1.5 GESTRUCTUREERD VS. OBJECT-GEORIËNTEERD
Gestructureerde methode
=Indelen van het programma in kleinere, minder complexe eenheden of modules
Object-georiënteerde methode
= men zoekt naar objecten (dingen die in de reële wereld voorkomen) die met elkaar kunnen communiceren
4