Inschrijvingen

Inschrijven voor dit evenement

20170316 Software Architect

Planning

20170316 Software Architect
16/03/2017 09:00 — 16/03/2017 16:00

Beschrijving

Lesdata

16 sessies verspreid over 8 lesdagen:

  • 16/03/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00
  • 23/03/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00
  • 30/03/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00
  • 20/04/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00
  • 27/04/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00
  • 04/05/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00
  • 11/05/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00
  • 18/05/2017 van 09:00 tot 12:00 en van 13:00 tot 16:00

In deze opleiding van 16 sessies komen de vele aspecten waarin een software architect actief is en de kennisdomeinen waarin deze moet onderlegd zijn uitgebreid aan bod. Het is een diepgaande training om een bekwame en gewaardeerde software architect te worden die een leidende rol in een ontwikkelteam zal kunnen uitoefenen. Een sofware architect is verantwoordelijk voor het correct begeleiden van een software ontwikkelingstraject vanuit verschillende invalshoeken zoals: het correct gebruiken van Design Patterns in de code, de implementatie van een flexibele en onderhoudbare Service Oriented Architectuur (SOA), uitvoeren van een passende Object Oriented Analyse en het toepassen van bruikbare Agile Development Practices. Naast klassieke (web)applicaties, gehost vanuit een eigen IT infrastructuur, is er ook de invalshoek van een cloud architectuur van belang om moderne en schaalbare applicaties te bouwen. In een team van developers is een goed opgeleide architect van essentieel belang wil men het software project op een gecontroleerde en gestandaardiseerde manier tot een goed einde brengen.

De opleiding bestaat uit 5 verschillende modules waarbij de toekomstige Software Architect zowel theoretisch als praktisch getraind wordt door een ervaren Senior Software Architect die vanuit zijn ervaring in verschillende development teams de kennis en best practices zal bijbrengen.

Programma

Module 1: Design Patterns

Het gebruik van Design Patterns in een software project leidt tot een beter onderhoudbare en flexibele codebase. Het goed inzetten van de juiste patronen vraagt gespecialiseerde kennis en inzichten.

In deze module komen de meeste gebruikte patronen aan bod:

  • Creational patterns
    • Factory
    • Singleton
  • Structural patterns
    • Adapter
    • Proxy
    • Facade
    • Decorator
  • Behavioral patterns
    • Visitor
    • Observer
  • User-Interface patterns
    • Model-View-Controller (MVC), Model-View-ViewModel (MVVM) en Model-View-Presenter (MVP)

De patronen worden aan de hand van praktische C# voorbeelden aangeleerd.

Hands-on oefeningen of demo's die in module 1 'Design Patterns' aanbod komen zijn:

  • Voor een gegeven requirements-analyse het correcte patroon (of combinatie van meerdere) herkennen
  • Coderen van kleine applicaties waarbij de patronen toegepast en geïmplementeerd worden
  • Illustreren van de verschillende UI design patronen (MVP, MVC, MVVM) aan de hand van JavaScript, HTML en CSS webapplicaties
  • Er wordt bekeken hoe bestaande frameworks (zoals Enterprise Library en Angular) zelf deze patronen toepassen
  • Er wordt vanuit het Factory patroon dieper ingegaan op het Inversion of Control concept. Er wordt tevens vanuit de praktijk dieper ingegaan op enkele IOC frameworks.

Module 2: Service Oriented Architecture (SOA)

SOA is de meeste gebruikte architectuur in moderne applicaties. Het gebruik van services zorgt voor een 'loosely coupled' implementatie model waarbij user interface losgekoppeld is van de business logica. Dit zorgt voor een hoge flexibiliteit waarbij onafhankelijk van de gekozen user interface technologie een heel open oplossing kan gebouwd worden.

Aandachtspunten in SOA zijn:

  • Service abstraction,
  • Service statelessness,
  • Operation contracts,
  • Data transfer objects.

In deze module komen technologieën als SOAP, WS*, REST, WSDL aan bod en worden praktisch voorbeelden aan de hand van WCF (zowel SOAP als REST) uiteengezet.

Hands-on oefeningen die in module 2: 'SOA' aan bod komen zijn:

  • Vanuit een aantal gegeven Use Cases leert men welke standaarden en technologieën het meest geschikt zijn voor welke situaties
  • SOA in de praktijk:
    • In WCF wordt, via de Service Interfases en DTOs, een stateless implementatie geprogrammeerd.
    • Met WebAPI wordt een REST service geprogrammeerd.
  • Er wordt een uitgebreide referentie architectuur (= Visual Studio Solution) opgezet met alle nodige SOA componenten en lagen. Hierbij wordt er dieper op 'Service decoupling' ingegaan. Deze referentie architectuur wordt uitgewerkt in C# en vormt de basis voor het verder ontwikkelen van de applicatie. De functionele code wordt door de docent beschikbaar gesteld.
  • Er worden clients gebouwd die zowel via SOAP als REST met de Service zullen communiceren.
  • In de referentie architectuur zullen er zowel client (UI, Proxies, caching, authorizatie) als server (interfaces, implementation, DTOs, exception shielding layer, hosting, ...) componenten uitgewerkt worden.
  • Er worden Services op verschillende platformen uitgerold: WCF self hosting, Internet Information Server en ook Cloud.

Module 3: Object-Oriented Analysis and Design (OOAD)

Het ontwerpen van business logica componenten in een object georiënteerd model is van groot belang in het ontwikkeltraject. Een correct OOAD zorgt voor onderhoudbare code en bevordert re-usability van de geprogrammeerde libraries.

In deze module ligt de focus op zaken zoals:

  • Domain modellen en class diagrams
  • SOLID principes
  • Multi-tiered applictions
  • Low coupling
  • High cohesion
  • Object composition over inheritance

Hierin wordt gewerkt met de Visual Studio Class diagram om praktische voorbeelden te realiseren in C#.

Hands-on oefeningen die in module 3: 'OOAD' aan bod komen zijn:

  • De volledige module wordt zeer praktijkgericht opgevat. Er wordt in groepsverband een OO analyse uitgewerkt,
  • Er worden UML tools gebruikt om de analyse vast te leggen en vervolgens volgens OOAD regels uit te werken tot een bruikbare set van klassen,
  • Er wordt gebruik gemaakt van code generators om de resultaten te zien en om opnieuw te analyseren,
  • Er wordt ook veel aandacht besteed aan Domain Driven Design (DDD). Deze 'DDD approach' wordt gecombineerd met de SOA approach uit de vorige module. Door dit vergelijk worden de raakvlakken tussen de 2 benaderingen duidelijk en kan vervolgens alles geimplementeerd worden in de SOA referentie Architectuur,
  • Een uitgebreide oefening op het repository patroon in combinatie met DDD classes komt eveneens aan bod.

Module 4: Unit testing and Agile development principles

Hoe een team omgaat met testen van code en met de development principes beïnvloedt de kwaliteit en onderhoudbaarheid van de code. De gekozen werkwijze naar source control, documentatie en testbaarheid van code is de verantwoordelijkheid van de architect.

Onderwerpen in deze module:

  • Unit Testing en Test Driven Design
  • Refactoring
  • Pair programming
  • Source control
  • Branching van codebase
  • Continous integration
  • Nightly builds
  • SCRUM

Door gebruik van Team Foundation Server worden de principes in de praktijk gezet.

Hands-on oefeningen die in module 4: 'Unit testing and Agile development' aan bod komen zijn:

  • Na een korte theoretische uiteenzetting betreffende Unit tests wordt er, in de verschillende technologieën, een aantal Unit Tests aangemaakt, die bruikbaar zijn voor de functionele klassen (vertrekkende vanuit de vorige oefeningen). Deze Unit testen kunnen worden ingecheckt in een source control omgeving,
  • De rapportering van Builds, tests en code coverage aan de Team Foundation Server komt eveneens aan bod.
  • SCRUM activiteiten, zoals sprint planning, beheer product, backlog items, invullen sprint backlogs, uitvoeren van poker planning in het team, de daily standup meetings en de SCRUM retrospectieve komen via een groepsoefening praktijkgericht aan bod.
  • Deelnemers zullen in de praktijkoefening afwisselend de rol van architect, developer, tester en ook SCRUM master hebben.

Module 5: Cloud Architecture

Implementeren van applicaties in de cloud vraagt om nieuwe inzichten in architectuur. Het is momenteel van groot belang dat een architect deze nieuwe inzichten goed kent en kan toepassen om cloud applicaties te realiseren.

In een Cloud Architecture zijn er veel nieuwe aandachtspunten zoals:

  • Cost driven architecture met betrekking tot de invloed van operationele kosten op de code,
  • Het bouwen van een stateless architectuur die geschaald kan worden naar meerdere server instanties,
  • Partitionering van datastorage,
  • Proactief anticiperen op failures,
  • Federated identity,
  • Asynchrone verwerking patronen op basis van queueing system en massale dataopslag op basis van no-SQL database.

In deze module implementeren we praktijkvoorbeelden op Windows Azure en gebruiken we de Azure servicebus.

Hands-on oefeningen die in module 5: 'Cloud Architectuur' aan bod komen zijn:

  • Het uitwerken van een architectuur op een 'Platform-as-a-Service' platform
  • Het implementeren van meerdere cloud patronen zoals: load balancing, stateless design, caching layers, gebruik van federated identity, fault tolerance, data persisting abstraction, asynchronous processing. Gebruikte tools/omgeving hiervoor zijn Azure SDK en emulator in Visual Studio
  • Er wordt opnieuw een referentie architectuur gebouwd voor een applicatie die deels verder gaat op de SOA referentie Architectuur en DDD Architectuur uit de voorgaande modules,
  • Er wordt een live Azure omgeving gebruikt voor het hosten van de applicatie die op deze architectuur werd gebouwd en plaatsen deze effictief in de cloud. Hier wordt er dan ook de schaalbaarheid van de applicatie uitgetest
  • Hoe Application Integration op Azure Servicebus werkt en het bouwen van een distributed Applicatie komt hier eveneens op een praktijkgerichte wijze aan bod.

Methodologie

Belangrijk om weten:

De focus tijdens de opleiding ligt uiteraard sterk op het uitwerken van Archituren en (uiteraard) minder op het coderen. Om dit te realiseren zal de docent op voorbereid stukken code aan de cursisten bezorgen waardoor er weinig tijd verloren gaat aan het coderen. Er wordt doorheen de verschillende modules gewerkt aan referentie architecturen. Dit zijn Visual Studio Solutions met de nodige technische componenten en architetuur lagen die dan als basis dienen voor verdere functionele uitwerking.

Deze referentie architecturen kunnen door de deelnemers verder in hun eigen werkomgeving herbruikt worden. Dit is een belangrijke toegevoegde waarde die door de deelnemers aan de vorige opleidingsreeksen sterk gewaardeerd werd!

Indien gewenst kunnen deze referentie architecturen bijgestuurd worden in de context van de requirements die de deelnemers naar voren brengen tijdens de opleiding.

Naast de "Hard Skills" komen in deze opleiding, horizontaal doorheen de modules, ook 'Soft Skills' zoals samenwerken, communiceren, conflict en kritiek hanteren, probleemoplossend handelen, faciliteren en leiden van workshops,... aan bod

Deelnemers aan deze opleiding dienen zelf een laptop te voorzien waarop de oefeningen zullen gemaakt worden. De nodige software die voor de start van elke module door de deelnemer dient geïnstalleerd te worden, wordt voor de start van de opleiding aan de deelnemers bezorgd.

Voor wie is deze opleiding bestemd

  • U heeft minstens 2 jaar projectervaring als software developer of technisch software analist en u heeft een sterke interesse in software architectuur.
  • U heeft de ambitie om door te groeien tot Software Architect.

Voorkennis

Prijs

Effectief Lid V-ICT-OR
€ 2160
Standaard
€ 2400

Organisator

Escala VZW Toegepast Vormingscentrum

Locatie

Tramstraat 63
9052 Zwijnaarde

Inschrijven voor dit evenement