Er wordt gebruik gemaakt van drie cursussen: Objectgeoriënteerd analyseren en ontwerpen, Design patterns en Software Architecture. Het programma heeft daarnaast aparte begeleidingsbijeenkomsten in combinatie met extra studiemateriaal, praktijkgerichte opdrachten en alternatieve vormen van toetsing.
Objectgeoriënteerd analyseren en ontwerpen
Het ontwikkelen en bouwen van een informatiesysteem vraagt een doordachte, projectmatige aanpak, waarbij een ontwikkelteam te maken krijgt met voortschrijdende inzichten bij diverse betrokkenen als: de opdrachtgever, zijn klanten en uiteenlopende gebruikers. Het ontwikkelen van informatiesystemen vindt plaats in een dynamisch speelveld van in de praktijk ontstane methoden, eigenzinnige ontwikkelaars, wetenschappelijke onderzoeksresultaten, standaardisatie-initiatieven, commerciële tools en een weerbarstige werkelijkheid.
Het ontwikkeltraject van informatiesystemen is opgebouwd uit een aantal karakteristieke kenmerken: eisen opstellen, analyse, ontwerp, bouw en implementatie. In de cursus objectgeoriënteerd analyseren en ontwerpen is er aandacht voor het totale ontwikkeltraject, van eisen tot en met implementatie. Aan de orde komen onder andere: het formuleren van requirements en daaruit voortvloeiend de specificatie van het informatiesysteem; iteratieve systeemontwikkeling, bijvoorbeeld volgens de methode Unified Process; de Unified Modeling Language (UML) als taal om ontwerp en analyse modellen in weer te geven en het opstellen van een domeinmodel. Daarnaast leer je het berichtenverkeer tussen objecten, in de vorm van interactiediagrammen, ontwerpen op basis van de GRASP-richtlijnen en een ontwerpklassendiagram op te stellen op basis van de interactiediagrammen.
Design patterns
Objectgeoriënteerd ontwerpen heeft al vele jaren vaste grond onder de voeten bij softwareontwikkelaars. Het aantal projecten waarbij objectgeoriënteerde talen wordt gebruikt is enorm. Het succes van talen als Java en C# onderstreept deze ontwikkeling. Eén van de belangrijkste redenen is het feit dat objectgeoriënteerde systemen flexibel zijn. De praktijk bewijst immers keer op keer dat de eisen aan een systeem niet vastliggen, maar voortdurend veranderen. Systemen moeten dus flexibel gebouwd worden. Design patterns helpen die belangrijke flexibiliteit van systemen in te bouwen. Het leren begrijpen van design patterns helpt om beter gebruik te maken van de mogelijkheden die objectoriëntatie biedt. Met andere woorden: je leert niet alleen design patterns te gebruiken voor flexibele oplossingen, maar je wordt daardoor ook een betere ontwerper. De cursus design patterns bevat een overzicht van de principes van objectoriëntatie en toont de diagrammen van de Unified Modeling Language, UML, die gebruikt worden bij het beschrijven van design patterns. De cursus bespreekt een aantal design patterns, waaronder: Facade, Adapter, Strategy, Bridge en Abstract Factory, Decorator, Singleton, Observer, Template method, Factory method. Deze worden uitgediept en de cursus laat tevens zien hoe design patterns samenhangen met objectgeoriënteerde principes en software architectuur. Als aankomend software architect raak je tevens bekend met de algemene ontwerpprincipes achter design patterns.
Software architecture
De structuur van softwaresystemen is vaak uiterst complex: zo'n systeem kan bestaan uit miljoenen regels programmacode, opgebouwd uit meerdere componenten die op verschillende manieren moeten samenwerken en moeten opereren in een gedistribueerde setting. De stringente eisen die aan dit soort systemen worden gesteld, zoals een korte time-to-market, een extreme betrouwbaarheid en robuustheid, of harde real-time constraints, vormen uitdagingen waar al van het begin af aan rekening mee moet worden gehouden. Softwarearchitectuur beschrijft en analyseert systemen met behulp van modellen om tegemoet te komen aan het eisenpakket dat is opgesteld op basis van de zorgen en belangen van de belanghebbende partijen. In de cursus software architecture leer je de theorie toe te passen in de praktijk en zelf een architectuur te ontwerpen voor een bestaand softwaresysteem. Je leert de belangen van de verschillende stakeholders te inventariseren, hoe je daaruit de requirements aan het systeem afleidt en hoe je een software architectuur beschrijft en evalueert. Het eenduidig formuleren en categoriseren van eisen gebeurt aan de hand van een kwaliteitsmodel. Verder worden er verschillende technieken behandeld om een architectuur te beschrijven, zoals het 4+1-model van Kruchten en de viewpoints van Rozanski en Woods..