C# Software Architect


Building solutions using design patterns, microservices, devops en AI.

Introductie

Tijdens deze opleiding 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 klaar is om een leidende rol in een ontwikkelteam uit te oefenen!

Omschrijving

De software architect is verantwoordelijk voor het ontwerpen van de high-level architectuur van toepassingen, waarbij elementen zoals onderhoudbaarheid, herbruikbaarheid, leesbaarheid van code, ... inherent deel moeten uitmaken van de oplossing.

In deze opleiding leert u hoe u concreet een nieuw softwareproject opstart, welke keuzes u moet maken en welke architecturen beschikbaar zijn. Na deze opleiding weet u van a tot z uw project te beheren.

In deze 7 modules brengt een ervaren Senior Software Architect u zowel theoretische als praktische kennis en best practices bij.

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.
  • U heeft de programmeerkennis en u wil leren hoe u een nieuw softwareproject moet aanpakken.

Voorkennis

  • Minstens 2 jaar projectervaring als software developer of technisch software analist,
  • Personal skills/competenties: analytisch denkvermogen, empathie, assertief, communicatief, aanleg voor formalisme, ...
  • Technical skills: minstens 2 jaar actieve programmeerervaring in OOP-taal zoals: VB.NET, of C#.NET, JAVA, C++, ...

Methodologie

Belangrijk om weten:

  • Om de opleiding mee te volgen is het noodzakelijk dat deelnemers een laptop meebrengen.
  • Vóór de start van de opleiding moet Visual Studio 2022 geïnstalleerd zijn door de deelnemer op de laptop. Hiervoor kan u de gratis Community Edition downloaden.

Programma

Module 1: High-level architecture and Object-Oriented Design

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

In deze module ligt de focus op zaken zoals:

  • Multi-tiered applications
  • Layered applications
  • SOLID principes
  • Low coupling & High cohesion

Module 2: 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:

  • Basic Patterns
    • Factory
    • Singleton
    • Adapter
    • Proxy
    • Facade
    • Decorator
    • Visitor
    • Observer
    • Repository
  • Advanced Patterns
    • Weak Event Pattern
    • Retry Pattern
    • Circuitbreaker Pattern
    • Event Sourcing Pattern
    • CQRS
  • User-Interface Patterns
    • Model-View-Patterns (MVC, MVP, MVVM)

Module 3: Services

Het opdelen van de toepassing in verschillende services zorgt voor een 'loosely coupled' implementatie model waarbij de componenten communiceren via service interfaces. Dit zorgt voor een hoge flexibiliteit en herbruikbaarheid van de code.

In Cloud scenario’s kan naar gelang de gekozen architectuur dit ook de kosten ten goede komen: intensieve services kan men meer resources toewijzen ten opzichte van services die minder actief zijn.

De volgende onderwerpen komen in dit hoofdstuk aan bod:

  • Services bouwen met gPRC
  • Asynchrone communicatie met Message Queues

Tijdens de cursus bouwen de cursisten een toepassing gebruikmakend van RabbitMQ

  • Service-Oriented Architecture (SOA)
  • Enterprise Service Bus

Tijdens de cursus bouwen de cursisten een toepassing gebruikmakend van Azure Service Bus

  • Microservices Architecture

Tijdens de cursus bouwen de cursisten een microservice gebruikmakend van een Docker containers

  • Serverless functions:

Tijdens opleiding bouwen de cursisten een serverless function gebruikmakend van Azure Functions

Module 4: Asynchronous programming

Op vandaag is het ondenkbaar enkel nog code te schrijven die sequentieel werkt: vele routines worden in parallel geschreven om beter gebruik te maken van de resources van de machines. Sommige programmeeromgevingen geven ook geen andere opties meer dan asynchroon te programmeren. Bijvoorbeeld: in .NET MAUI gebeuren alle requests voor het Filesystem asynchroon. In deze module leert u wat threads zijn, hoe ermee te werken en welke patterns hiervoor gebruikt kunnen worden.

Onderwerpen in deze module:

  • Thread and Threadpool
  • Thread synchronization (Monitor, Mutex and Semaphore)
  • Task Parallel Library
  • Async/Await

Module 5: Artificial Intelligence

In veel ondernemingen wordt de vraag gesteld: kan artificiële intelligentie ook hier op toegepast worden en hoe pakken we dit aan? De technologie is nu uit haar experimentele fase en is klaar om ook in uw bedrijf gebruikt te worden.

In deze module duiden we hoe AI kan geïntegreerd worden in uw oplossingen aan de hand van een aantal praktische toepassingen.

In deze module zien we hoe we:

  • vooraf getrainde modellen met Azure Cognitive Services kunnen gebruiken. Deze laten toe om bijv. beelden te herkennen, afwijkingen in gegevensreeksen te herkennen, etc.
  • specifieke bedrijfsprocessen  kunnen automatiseren met Chatbots of formulierherkenning aan de hand van de Azure Applied AI Services
  • Zelf AI modellen kunnen bouwen, trainen en uitvoeren met het Azure Machine Learning platform

Module 6: DevOps

Hoe een team omgaat met het ontwikkelen en testen van code en met de development principes beïnvloedt de kwaliteit en onderhoudbaarheid van de code. Dit past op zijn beurt in een groter geheel van activiteiten zoals planning, takenbeheer, beheer van broncode, deployment, enzovoort.

De Software Architect wordt betrokken in deze keuzes en is in veel organisaties hiervoor tevens de verantwoordelijke.

Onderwerpen in deze module:

  • DevOps, DevSecOps en Release Management
  • Unit Testing en Test Driven Design
  • Source control met Git
  • Branching & merging, branching strategies
  • Continuous Integration en Continuous Delivery

Module 7: Intro projectmanagement: Agile, SCRUM projecten

Afhankelijk van de grootte van de organisatie zal de Software Architect ofwel zelf ook de project manager zijn ofwel rechtstreeks met de project manager samenwerken. Daarom is het belangrijk de basisnoties van project management methodologieën te begrijpen en de verschillende fasen en rollen hiervan te kunnen identificeren.

Daarnaast zal de Software Architect ook het development team moeten aansturen en ondersteunen bij het ontwikkelen van de oplossing. Dit kan in goede banen geleid worden door het toepassen van een beproefde ontwikkelingsmethodologie zoals Scrum.

In deze module worden de volgende topics behandeld:

  • Introductie PRINCE2 project management methodologie: principes, fasen en rollen.
  • Het Agile manifesto en hoe Agile principes zich verhouden tot de Waterfall methodologie
  • Lean-softwareontwikkeling principes en NUPP-projectmanagement principes
  • Introductie SCRUM als concrete toepassing van Agile development
  • Hoe past de programmeermethodologie in de algemene project management methodologie?
2012-639-7-OmschrijvingDocent-1.png

Xavier Spileers

Xavier Spileers heeft een bachelor in Accounting en een bachelor in Computer Sciences. Na bijna tien jaar te hebben doorgebracht als ontwikkelaar en projectleider besloot hij in 2007 zijn eigen bedrijf (TRI-S, www.tri-s.be) te starten. Via dit bedrijf ontwikkelt hij zijn eigen toepassingen (voornamelijk gericht naar de financiële en boekhoudkundige sector) en levert hij consultancy diensten. Xavier is .NET (C#) developer sinds 2003 en heeft zich ondertussen geruime tijd gespecialiseerd in het ontwikkelen van ASP.NET MVC en HTML5 ontwikkeling.Daarnaast is hij een Microsoft Certified Professional Developer (MCPD) en een Microsoft Certified Trainer (MCT) en heeft hij een PRINCE2 Foundation certificering.

Escala helpt u graag in uw continu streven naar verbetering en professionalisering.
Via in-house opleidingen, advies en begeleiding biedt Escala de nodige ondersteuning.