Design Patterns
Informatica en informatiekunde | 5 EC | Voor dit product gelden ingangseisen
Code IM0102
Deze cursus heeft een vast startmoment. Kijk in het Jaarrooster wanneer de begeleiding is ingeroosterd.

Systemen worden in nog steeds toenemende mate objectgeoriënteerd geprogrammeerd, vooral omdat objectgeoriënteerde systemen flexibel zijn met betrekking tot veranderingen. In de praktijk blijkt echter vaak dat systemen minder flexibel zijn dan in theorie mogelijk is. Design patterns maken optimaal gebruik van objectgeoriënteerde aspecten van een taal, met het oog op flexibiliteit. In deze cursus leert u hoe design patterns helpen om de mogelijkheden van objectgeoriënteerd ontwerpen beter te benutten. Een aantal patterns wordt uitgebreid besproken en toegepast in een voorbeeldprobleem. Daarnaast leert u de algemene ontwerpprincipes kennen die ten grondslag liggen aan design patterns.

Algemeen

Inhoud

Objectgeoriënteerd ontwerpen heeft al vele jaren geleden vaste grond onder de voeten gekregen bij softwareontwikkelaars. Het aantal projecten waarbij objectgeoriënteerde talen wordt gebruikt is dan ook 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 met betrekking tot veranderingen. De praktijk bewijst keer op keer dat de eisen aan een systeem niet vastliggen, maar voortdurend blijven veranderen. Systemen moeten dus zo gebouwd worden dat veranderingen met zo weinig mogelijk inspanning aangebracht kunnen worden.

Eén van de belangrijkste principes van objectoriëntatie is het begrip inkapseling (encapsulation), dat inhoudt dat de implementatie van objecten verborgen blijft voor de 'buitenwereld': alles wat communiceert met het object. Daardoor kan de implementatie van een object veranderd worden zonder dat dat consequenties heeft voor de rest van het systeem. In de praktijk blijkt echter dat systemen die keurig objectgeoriënteerd ontworpen en geïmplementeerd zijn, toch niet de flexibiliteit vertonen die mogelijk zou moeten zijn. Design patterns staan in de belangstelling vanwege het feit dat ze helpen die zo belangrijke flexibiliteit van systemen in te bouwen.
De cursus laat zien dat het leren begrijpen van design patterns helpt om beter gebruik te maken van de mogelijkheden die objectoriëntatie biedt. Met andere woorden: u leert niet alleen design patterns te gebruiken voor flexibele oplossingen, maar u wordt daardoor ook een betere ontwerper.

Het eerste blok van de cursus bevat een overzicht van de principes van objectoriëntatie en laat de diagrammen zien van de Unified Modeling Language, UML, die gebruikt zullen worden bij het beschrijven van design patterns. Verder bevat dit blok een introductie tot design patterns, en wordt een vijftal patterns (Facade, Adapter, Strategy, Bridge en Abstract Factory) uitgebreid besproken en toegepast in een voorbeeldprobleem.
In het tweede blok worden design patterns verder uitgediept. Behalve een uitgebreide bespreking van een volgende serie patterns (Decorator, Singleton, Observer, Template method, Factory method), wordt uitgelegd hoe design patterns samenhangen met objectgeoriënteerde principes. Het blok wordt afgesloten met de algemene ontwerpprincipes achter design patterns.
Het derde blok laat patterns in een breder perspectief zien. Patterns worden niet alleen gebruikt bij objectgeoriënteerde ontwerpen, maar ook op bijvoorbeeld het niveau van software architectuur.

Leerdoelen
Na het bestuderen van deze cursus wordt verwacht dat u:
- een probleemanalyse kunt opstellen aan de hand van een probleembeschrijving;
- aan de hand van een probleemanalyse kunt aangeven en beargumenteren welke van de behandelde design patterns kunnen bijdragen aan een goede oplossing van het probleem;
- zelfstandig design patterns kunt bestuderen die niet worden behandeld in het tekstboek, en deze kunt toepassen;
- op basis van een probleemanalyse een ontwerp kunt maken, gebruikmakend van design patterns uit verschillende bronnen;
- een (eigen of gegeven) ontwerp waarbij design patterns zijn toegepast, kunt implementeren;
- in een gegeven ontwerp of implementatie kunt aangeven waar design patterns zijn gebruikt, en de voordelen van die patterns op die plaats kunt uitleggen;
- het verband kunt uitleggen tussen een bepaald pattern en de flexibiliteit die daardoor in het ontwerp wordt gebracht;
- zich realiseert dat er variaties op design patterns bestaan en dat ze op meerdere manieren geïmplementeerd kunnen worden;
- in staat bent een ontwerp op te stellen dat flexibel is met het oog op toekomstige veranderingen;
- de achterliggende principes van design patterns kent en ze kunt toepassen.

Aanmelden

Ingangseisen

Aanmelden is alleen mogelijk voor opleidingsstudenten die formeel zijn toegelaten tot de masteropleiding Computer Science of de masteropleiding Software Engineering.

Aanmelden

Aanmelden is alleen mogelijk voor studenten die formeel zijn toegelaten tot de masteropleiding.

Toelichting aanmelden

Deze cursus start 4 september 2017 en 12 februari 2018. We adviseren u om u tot uiterlijk 14 augustus 2017 en 22 januari 2018 aan te melden, zodat u tijdig het cursusmateriaal ontvangt, toegang heeft tot de leeromgeving en (indien van toepassing) ingedeeld kunt worden in een studiegroep.

Bij deze cursus hoort online activerende begeleiding. Deze cursus start op vastgestelde momenten, en ook tijdens de bestudering van de cursus zijn er vaste inlevermomenten van opdrachten en feedback. U studeert online samen met een groep medestudenten. Deze begeleiding is erop gericht u sneller, effectiever en met een beter begrip van de stof door de cursus te helpen. U kunt vooraf aan de begeleidingsperiode in uw eigen tempo de stof alvast doornemen; het materiaal wordt één kwartiel tevoren al uitgeleverd. Aansluitend aan de begeleidingsperiode is uw eerste tentamenkans. Na de begeleidingsperiode heeft u nog twee ingeroosterde tentamenkansen. Informatie over begeleiding en tentamen vindt u op de respectievelijke tabbladen.

Voorkennis

Kennis van een objectgeoriënteerde taal is een vereiste. Java-kennis bijvoorbeeld moet het niveau hebben van de cursus Objectgeoriënteerd programmeren in Java 2. Praktische ervaring met Java, UML, een UML-ondersteunende tool en een Java-ontwikkeltool is gewenst.

Begeleiding

Begeleidingsvorm

Deze cursus heeft een vast startmoment. Kijk in het Jaarrooster wanneer de cursus van start gaat en wanneer de begeleiding is ingeroosterd.

De begeleiding bij deze cursus vindt plaats door middel van uitgebreide feedback op een door u ingeleverde opdracht. De feedback laat zien waar op gelet wordt bij de eindopdracht, en geeft aan waar u uw probleembeschrijving, uw ontwerp en uw verslag kunt verbeteren. Er zijn is één online begeleidingsbijeenkomst, waarin op de opdrachten wordt ingegaan. U kunt de eindopdracht alleen doen wanneer u begeleiding heeft gekregen voor de eerste twee deelopdrachten. Het is, om voor deze cursus te slagen, dus noodzakelijk om de begeleiding te volgen.
http://portal.ou.nl/web/informatica-master-se/start-en-voorlichtingsbijeenkomsten

Begeleidingsbijeenkomsten


Online bijeenkomsten
Kwartiel 1 - begeleider: mw. ir. S. Stuurman
1. do 26-10-2017 / 19.00-20.00 uur
Kwartiel 3 - begeleider: mw. ir. S. Stuurman
1. do 05-04-2018 / 19.00-20.00 uur

Docenten

Mw. ir. S. Stuurman, dhr. dr. ir. H. Passier en dhr. dr. B. Heeren.

Bereikbaarheidsoverzicht

Bereikbaarheidsinformatie docenten/examinatoren

Tentamen

Tentamenvorm

Opdracht.

Tentamentoelichting

De cursus wordt getentamineerd met behulp van een opdracht. Het eindresultaat van deze opdracht is een ontwerp met bijbehorende Java-implementatie, inclusief een verantwoording van het ingeleverde werk in de vorm van een verslag. U doet de opdracht in een team van twee. Een teamgenoot kunt u vinden via de discussiegroep op de cursussite.

Tentamendata

Volgens afspraak.

Meer info

Meer informatie

Voor een inkijkje in de cursus, ga naar de snapshot.

Cursusmateriaal

De cursus bestaat uit een Engelstalig tekstboek en een werkboek. Als naslagwerk wordt daarnaast de cd meegeleverd met het boek Design Patterns: Elements of Reusable Code. Praktische opdrachten vormen een belangrijk onderdeel van de cursus.

Mediagebruik

Als student heeft u toegang tot een groot aantal online diensten die u nodig heeft tijdens uw studie. Deze zijn bereikbaar via MijnOU, uw persoonlijke online werkplek bij de Open Universiteit, Hier heeft u o.a. toegang tot onze digitale leeromgeving, tentamenroosters, en onze uitgebreide digitale bibliotheek.

Digitale leeromgeving

Als medewerker of als student (na inschrijven) kunt u via de cursussite in de digitale leeromgeving naar de discussiegroepen. Hier kunt u met medestudenten en begeleider informatie uitwisselen en discussiëren over de leerstof.