Software architecture
IM0203
TERUGKOPPELING PROEFTENTAMEN
Vraag 1 Vraag 1a Veel van de in het werkboek besproken patterns kunnen ingezet worden voor het referentiesysteem. We lopen de patterns hier stuk voor stuk langs. User interface laag Opmaak laag Volgorde laag Zoek laag Figure 1: Het Layers pattern
Het Layers pattern ligt niet erg voor de hand, maar is wel mogelijk. Er zouden vier lagen onderscheiden kunnen worden (zie Figuur 1), die allemaal als service naar de laag erboven (de user interface laag biedt de service aan de gebruiker aan) kunnen aanbieden om de referentielijst te genereren. De zoeklaag vindt dan bij elke
de bijbehorende referentie, en zet die achter elkaar in een lijst, met per referentie nog steeds de -aanduiding. De volgordelaag zet de lijst in de gewenste volgorde, en vervangt de aanduidingen door een nummer. De opmaaklaag maakt de nummers in het document, en de referentielijst, vervolgens op. De pijlen hebben dus de betekenis van “gebruikt services van”. Het Client-Server pattern kan wel worden toegepast, maar doet in feite niets anders dan het probleem naar een server verplaatsen. Op de server zelf moet dan alsnog een pattern bedacht worden om het probleem op te lossen. Het Master-Slave pattern ligt niet voor de hand: het probleem is niet goed op te splitsen in taken die tegelijkertijd kunnen worden uitgevoerd, en redundantie heeft bij dit probleem niet zoveel zin.
Document
Zoeken
Volgorde
Opmaak
Doc met lijst
Figure 2: Het Pipe Filter pattern
Open Universiteit Nederland
1
IM0203
Software architecture
Het Pipe-Filter pattern is een goede mogelijkheid. Het document wordt in z’n geheel aan het eerste filter gegeven. De filters voeren dezelfde handelingen uit als in het Layers-voorbeeld. In het Layers voorbeeld moest het document eerst door alle lagen heen, voordat de onderste laag er iets mee kon doen, waarna de laag erboven steeds de volgende handeling kon verrichten. Het probleem is gemakkelijker te vertalen naar gelijkwaardige filters dan naar een hiërarchie van lagen. De pijlen hebben de betekenis van overdracht van data; de cirkels kunnen processen zijn, of threads. Voor het Broker pattern geldt in dit geval iets soortgelijks als voor het ClientServer pattern: het probleem wordt verschoven naar een server. Het Peer-to-Peer pattern lijkt hier niet op een zinnige manier inzetbaar. ref:id toegevoegd
Editor
volgorde verstoord
Zoeken
opmaak verstoord
Volgorde
Opmaak
Figure 3: Het Event bus pattern
Het Eventbus pattern kan goed toegepast worden. De functies van de elementen zijn hetzelfde als bij het Layers en het Pipe-Filter pattern. Het Eventbus pattern zou bijvoorbeeld gebruikt kunnen worden om de referentielijst steeds up-todate te houden terwijl de gebruiker verder typt. De pijlen in Figuur 3 staan voor het publiceren of het ontvangen van messages. De cirkels zijn processen of threads of objecten. De rechthoeken zijn kanalen voor messages. Ook het Model-View-Controller pattern kan goed worden ingezet. Het Model bestaat dan uit een abstracte representatie van het document en van de referenties, de Controller reageert op toetsaanslagen en menukeuzen, en de View laat alles zien. Andere patterns kunnen dus binnen het MVC pattern worden ingezet om in het Model het opstellen van een referentielijst te implementeren. Ook het Blackboard pattern is geschikt voor dit probleem. Zowel het document als de referenties behoren dan tot de gezamenlijke data-opslag. Zodra de editor een nieuwe verwijzing naar een referentie in het document krijgt wordt het zoekelement geactiveerd (zie Figuur 4. Zodra dat zoekelement de gegevens over de referentie gevonden heeft kan het volgorde-element in actie komen om de referentielijst in de juiste volgorde te zetten. Zodra dat gebeurd is kan het opmaakelement aan de slag. De pijlen in de richting van de datastore stellen het veranderen van data voor; de andere kant op stellen ze het event voor dat er veranderingen zijn in de datastore.
2
Open Universiteit Nederland
Software architecture
IM0203
Edit Zoeken
Shared data Volgorde Lijst Referenties Document
Opmaak
Figure 4: Het Blackboard pattern
Het is moeilijk voorstelbaar dat er een zinvolle oplossing gevonden kan worden met behulp van het Interpreter pattern. Van de Integration patterns is het File transfer pattern goed toepasbaar. De betreffende bestanden zijn het document en het bestand met de referentiegegevens; processen of threads voor zoeken, op volgorde zetten en opmaken, maken dan gebruik van beide bestanden.
Vraag 1b De vijf maintability subkarakteristieken zijn: Modularity, Reusability, Analyzability, Modifiability, Testability. Het Layers pattern Het layers pattern is inherent modulair. De reusability van de layers is behoorlijk goed, omdat de interfaces goed gedefinieerd moeten zijn. Het is voorstelbaar dat de lagen voor meer doeleinden kunnen worden ingezet (het op volgorde zetten bijvoorbeeld kan natuurlijk ook met andere lijsten). De analyzability hangt af van de implementatie. Het ondersteunen van een nieuw soort referentie houdt alleen veranderingen in de opmaak in, en de interfaces kunnen hetzelfde blijven.
Open Universiteit Nederland
3
IM0203
Software architecture
De lagen zijn los van elkaar te testen, en Dat zal echter wel in samenhang met elkaar zijn: de interfaces van de lagen passen precies op elkaar. Het Pipe-Filter pattern Ook het pipe-filter pattern is inherent modulair. Wat de reusability betreft is het ook hier is het voorstelbaar dat bijvoorbeeld het volgordefilter herbruikbaar is. In het geval van filters kan zo’n filter dan gecombineerd worden met andere filters. Het gedrag van het systeem is gemakkelijk te analyseren in termen van het gedrag van de individuele filters. Voor het introduceren van een nieuw soort referentie geldt in dat alleen het filter voor de opmaak moet worden aangepast. Veranderingen aan het dataformaat van de pipes is heel erg lastig. De filters zijn apart van elkaar te testen door de uitvoer naar file te schrijven. Het Eventbus pattern Het eventbus pattern is mooi modulair: de processen funcgeren onafhankelijk van elkaar; de enige koppeling bestaat uit de events. Reusability is matig: je zou een component kunnen gebruiken om op andere events te reageren, in een andere situatie, maar dan moet zo’n component wel worden aangepast. Het gehele systeem analyseren in termen van het gedrag van de individuele elementen is ook lastig. Wat modifiability betreft geldt hetzelfde als voor het pipe en filter pattern. Het is bovendien gemakkelijk om gedrag toe te voegen aan het systeem: er worden dan nieuwe elementen aan de eventbus gekoppeld. Ook het toevoegen van nieuwe messagekanalen heeft geen invloed op de rest van het systeem. Testen is lastiger: er moeten dan messages gefingeerd worden. Het Model-View-Controller pattern Het MVC pattern maakt het gemakkelijk om meerdere views te ondersteunen, maar het voegt niet iets toe op het gebied van functionaliteit. Het Blackboard pattern M
4
Open Universiteit Nederland
Software architecture
IM0203
Analyseren is lastig. Veranderingen in de structuur van het document en de referentiegegevens zijn erg lastig te ondersteunen. Wat erg goed mogelijk is, is het toevoegen van functionaliteit in de vorm van elementen die toegang hebben tot de gezamenlijke datastore. Testen is lastig. Het File transfer pattern Zolang het file formaat maar hetzelfde biedt dit pattern een grote flexibiliteit wat veranderingen betreft: de elementen kunnen onafhankelijk van elkaar veranderen. Ook testen gaat goed, door het bestand te bekijken voor en na één van de elementen er iets mee heeft gedaan.
Vraag 2 Voorbeelden van tactics voor security: – User authentication (bijvoorbeeld gecombineerd met het Facade pattern) – User authorization (gebruikers koppelen aan rollen, en rollen koppelen aan bevoegdheden) – Data encryptie – Redundantie – Het vastleggen van gegevens van alle transacties.
Vraag 3 Vraag 3a Voorbeelden van conflicterende belangen zijn: – Studenten willen graag een voorspelbaar systeem,. dat er steeds hetzelfde uitziet en dat zich steeds gedraagt zoals ze het hebben leren verwachten. – Onderzoekers willen graag voortdurend veranderingen doorvoeren en bekijken wat de resultaten zijn. – Studenten willen graag een systeem zonder bugs. Onderzoekers streven daar ook wel naar, maar hun prioriteit zal meer liggen bij het invoeren van veranderingen. – Studenten willen graag oefenen en fouten kunnen maken zonder dat er iemand meekijkt. – Onderzoekers willen graag zoveel mogelijk loggen om te kunnen kijken hoe de interactie met het systeem verloopt.
Open Universiteit Nederland
5
IM0203
Software architecture
Vraag 3b – Wat het loggen betreft: dat kan worden geanonimiseerd. Onderzoekers hebben dan wel de beschikking over alle gegevens, en studenten weten dat niet bekend zal zijn hoe vaak zij een fout hebben gemaakt. – Onderzoekers zouden kunnen streven naar het zo snel mogelijk vastleggen van de GUI van het systeem. Ze kunnen dan in de functionaliteit steeds verbeteren en uitbreiden, zonder dat daar veel merkbaar van zal zijn voor de studenten. – Het toevoegen van nieuwe functionaliteit zouden de onderzoekers in twee stappen kunnen doen: in een testomgeving, waar ze zelf mee kunnen experimenteren, en, wanneer in de testomgeving blijkt dat er geen problemen zijn, in het systeem dat de studenten gebruiken.
Vraag 4 Vraag 4a navigatie
voertuig
auto fiets wandelaar
algoritme
snelste kortste mooiste
data
vast real time
platform
Android Windows iOS
Figure 5: Een Feature Tree
Figuur 5 laat de feature tree zien. Het platform is òf Android, òf Windows, òf iOS; de pijlen zijn daar dus gestippeld en er is een boogje om aan te geven dat het één van de drie opties is bij elke app.
6
Open Universiteit Nederland
Software architecture
IM0203
Verder zijn overal de opties aangegeven met gestippelde pijlen , terwijl de features die in elke app te vinden zullen zijn aangegeven zijn met doorgetrokken pijlen.
Vraag 4b De Figuren 6, 7, 8 en 9 laten de variability modellen zien voor de navigatie app.
vp
voertuig
auto
fiets
wandelaar
Figure 6: Variability Model voor voertuig
vp
algoritme
snelste
kortste
mooiste
Figure 7: Variability Model voor het route berekenen
Open Universiteit Nederland
7
IM0203
Software architecture
vp
gegevens
vast
realtime
Figure 8: Variability Model voor de kaartgegevens
vp
platform
Android
Windows
iOS
Figure 9: Variability Model voor het platform
8
Open Universiteit Nederland