Open Universiteit Nederland
Cursus
Software Architecture, T32311 en T32811
Software Architecture (T32311 en T32811)
Dit tentamen bestaat uit 3 vragen, waarbij vraag 1 en vraag 3 elk uit 2 deelvragen bestaan. Voor dit tentamen kunt u maximaal 100 punten behalen.
Maximaal aantal punten per deelvraag: 1.a maximaal 30 punten 1.b maximaal 20 punten 2 maximaal 20 punten 3.a maximaal 15 punten 3.b maximaal 15 punten De cesuur van dit tentamen is vastgesteld op 55/56 punten. Dit wil zeggen, u bent geslaagd indien u 56 punten of hoger heeft gescoord. U mag bij dit tentamen de volgende hulpmiddelen gebruiken: het tekstboek, het werkboek, de beide delen van de reader van de cursus Software architecture, geprinte versies van presentaties en artikelen. Het materiaal hoeft niet “schoon” te zijn.
Vraag 1 Casusbeschrijving Bij een wetenschappelijk artikel of boek hoort een literatuurlijst. Zo'n lijst bevat referenties van bronnen die gebruikt zijn bij het schrijven van het artikel of boek.
FIGUUR 1
Drie referenties, opgemaakt in de APA-stijl
Er bestaan allerlei verschillende stijlen voor het weergeven van die referenties. Een voorbeeld is de APA stijl waarin het jaartal van de bron direct na de auteur komt; andere voorbeelden zijn de Turabian stijl en de Chicago stijl. Figuur 1 laat drie referenties zien, van drie verschillende referentiesoorten, opgemaakt in één bepaalde stijl.
1
Open Universiteit Nederland
FIGUUR 2
Software Architecture, T32311 en T32811
De velden van een referentie
Een referentie bestaat uit een aantal velden, zoals een veld voor de auteur(s), voor de datum, de titel van het boek, de titel van het artikel, de titel van het tijdschrift, het nummer van het tijdschrift, de jaargang van het tijdschrift, de betreffende pagina's, de uitgever, de url, of bijvoorbeeld voor commentaar. Figuur 2 laat bovenin een referentie zien, en daar onder de velden van de referentie. Tenslotte bestaan er verschillende opslagformaten voor referenties. Er is bijvoorbeeld het bibtex-formaat, het endnote formaat, en je kunt je ook voorstellen dat referenties prima in xml zijn op te slaan. Figuur 3 laat zien hoe een referentie er uitziet wanneer deze is opgeslagen in het bibtex-formaat.
FIGUUR 3
Een referentie, bewaard in Bibtex-formaat
Referenties worden opgeslagen in een bestand dat onafhankelijk is van de documenten waarin de referenties worden gebruikt. Zo kun je één bestand hebben met alle referenties van artikelen die je gelezen hebt, en kun je die referenties gebruiken voor verschillende artikelen die je schrijft. Zo’n bestand voor opgeslagen referenties kan dus het bibtex-formaat hebben, een xml-formaat, of een ander formaat. Vraag 1.a (maximaal 30 punten) Er moet een systeem ontworpen worden dat als input een tekst heeft in bijvoorbeeld Word- of OpenOffice-formaat, waarin aanduidingen staan voor referenties. Zo’n aanduiding heeft de vorm van
, waarbij id een unieke key is. Daarnaast is er een apart bestand met referenties, waarbij elke referentie een unieke key heeft. Het systeem moet in staat zijn bij de aanduidingen in de tekst de overeenkomstige referenties te vinden, onderaan de tekst een genummerde literatuurlijst toe te voegen (opgemaakt volgens een van de mogelijke stijlen), in een bepaalde volgorde (alfabetisch op auteur, of in de volgorde waarin de referenties in de tekst verschijnen). De aanduidingen in de tekst in de vorm van , moeten worden vervangen door [nr], met het nummer van de bijbehorende referentie in de literatuurlijst.
2
Open Universiteit Nederland
Software Architecture, T32311 en T32811
Geef voor dit systeem vier verschillende architectuur patterns, op dezelfde manier als voor het KWIC voorbeeld is gedaan (zie sectie 3.4 in het werkboek). Schets voor elk pattern een diagram, en geef daar nauwkeurig bij aan wat de gebruikte pijlen en figuren precies voorstellen. Vraag 1.b (maximaal 20 punten) Vergelijk de vier toegepaste patterns uit de vorige vraag met elkaar voor de zes maintainability subkarakteristieken van het extended ISO model. Vraag 2 (maximaal 20 punten) Geef vier tactieken om de security subkarakteristiek te verhogen. Vraag 3 IDEAS is een onderzoeksproject van de Open Universiteit en de Universiteit Utrecht. Eén van de onderdelen van dat project is het ontwikkelen van een systeem voor intelligente feedback bij het oplossen van expressies in verschillende domeinen, zoals de propositielogica of lineaire algebra. Stakeholders bij dit project zijn onder andere de onderzoekers die het systeem ontwikkelen, en studenten, die het systeem kunnen gebruiken tijdens hun studie. De onderzoekers willen graag: - gemakkelijk uitbreidingen kunnen doen wat betreft de functionaliteit, - zoveel mogelijk aandacht besteden aan wat voor hen interessant is (bijvoorbeeld door zoveel mogelijk gebruik te maken van bestaande componenten), - gegevens over de interactie van studenten met het systeem vastleggen om te analyseren. Studenten willen graag: - dat het systeem intuitief werkt, - dat het systeem een snelle response geeft, - dat docenten niet zomaar kunnen zien welke fouten ze gemaakt hebben. Vraag 3.a (maximaal 15 punten) Geef twee voorbeelden van conflicterende belangen aan, in dit voorbeeld. Vraag 3.b (maximaal 15 punten) Geef voor beide gevallen een concreet voorbeeld van een oplossing die tegemoet komt aan het ene belang, en tegelijkertijd nadelen heeft voor het conflicterende belang.
3
Open Universiteit Nederland
Cursus
Software Architecture, T32311 en T32811
Software Architecture (T32311 en T32811)
Maximaal aantal punten per deelvraag: 1.a maximaal 30 punten 1.b maximaal 20 punten 2 maximaal 20 punten 3.a maximaal 15 punten 3.b maximaal 15 punten Het is onmogelijk om alle mogelijke antwoorden voor de tentamenvragen op te sommen. We geven daarom hier onder voorbeelden van antwoorden, waarbij we aantekenen dat er meer mogelijkheden zijn! Vraag 1.a (maximaal 30 punten) Veel van de in het werkboek besproken patterns kunnen ingezet worden voor het referentiesysteem. We lopen de patterns hier stuk voor stuk langs. Het Layers pattern ligt niet erg voor de hand, maar is wel mogelijk. Er zouden vier lagen onderscheiden kunnen worden, die allemaal als service naar de laag erboven (de user interfacelaag 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.
1
Open Universiteit Nederland
Software Architecture, T32311 en T32811
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 Client-Server pattern: het probleem wordt verschoven naar een server. Het Peer-to-Peer pattern lijkt hier niet op een zinnige manier inzetbaar.
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-to-date te houden terwijl de gebruiker verder typt. De pijlen 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.
2
Open Universiteit Nederland
Software Architecture, T32311 en T32811
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. Zodra dat zoekelement de gegevens over de referentie gevonden heeft kan het volgordeelement 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. 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 1.b (maximaal 20 punten) Vergelijk de vier toegepaste patterns uit de vorige vraag met elkaar voor de zes maintainability subkarakteristieken van het extended ISO model. De zes maintability subkarakteristieken zijn: Analysability, changeability, stability, testability, manageability en reusability. Het Layers pattern Het ondersteunen van een nieuw soort referentie houdt alleen veranderingen in de opmaak in, en de interfaces kunnen hetzelfde blijven. De lagen zijn los van elkaar te testen, en het is voorstelbaar dat de lagen voor meer doeleinden kunnen worden ingezet (het op volgorde zetten bijvoorbeeld kan natuurlijk ook met andere lijsten). Dat zal echter wel in samenhang met elkaar zijn: de interfaces van de lagen passen precies op elkaar. Het Pipe-Filter pattern
3
Open Universiteit Nederland
Software Architecture, T32311 en T32811
Hier geldt hetzelfde voor het introduceren van een nieuw soort referentie. 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. De filters zijn apart van elkaar te testen door de uitvoer naar file te schrijven, en het gedrag van het systeem is gemakkelijk te analyseren in termen van het gedrag van de individuele filters. Veranderingen aan het dataformaat van de pipes is heel erg lastig. Het Eventbus pattern Wat changeability 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 gehele systeem analyseren in termen van het gedrag van de individuele elementen is ook lastig. 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 Veranderingen in de structuur van het document en de referentiegegevens zijn erg lastig te ondersteunen. Ook het analyseren en testen is lastig met het blackboard pattern. Wat wel erg goed mogelijk is, is het toevoegen van functionaliteit in de vorm van elementen die toegang hebben tot de gezamenlijke datastore. 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 (maximaal 20 punten) Geef vier tactieken om de security subkarakteristiek te verhogen. Voorbeelden van zulke tactics: 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 IDEAS is een onderzoeksproject van de Open Universiteit en de Universiteit Utrecht. Eén van de onderdelen van dat project is het ontwikkelen van een systeem voor intelligente feedback bij het oplossen van expressies in verschillende domeinen, zoals de propositielogica of lineaire algebra. Stakeholders bij dit project zijn onder andere de onderzoekers die het systeem ontwikkelen, en studenten, die het systeem kunnen gebruiken tijdens hun studie. De onderzoekers willen graag:
4
Open Universiteit Nederland
Software Architecture, T32311 en T32811
- gemakkelijk uitbreidingen kunnen doen wat betreft de functionaliteit, - zoveel mogelijk aandacht besteden aan wat voor hen interessant is (bijvoorbeeld door zoveel mogelijk gebruik te maken van bestaande componenten), - gegevens over de interactie van studenten met het systeem vastleggen om te analyseren. Studenten willen graag: - dat het systeem intuitief werkt, - dat het systeem een snelle response geeft, - dat docenten niet zomaar kunnen zien welke fouten ze gemaakt hebben. Vraag 3.a (maximaal 15 punten) Geef twee voorbeelden van conflicterende belangen aan, in dit voorbeeld. 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. Vraag 3.b (maximaal 15 punten) Geef voor beide gevallen een concreet voorbeeld van een oplossing die tegemoet komt aan het ene belang, en tegelijkertijd nadelen heeft voor het conflicterende belang. -
5
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.