SOFTWARE ENGINEERING
Overengineer your code like a pro
,Software Engineering Elektronica-ICT
Inhoudstabel
H1: Git .............................................................................................................................. 3
1.1 Version control .............................................................................................................................. 3
1.2 Source code control....................................................................................................................... 3
2.3 Twee types systems....................................................................................................................... 3
1.4 Git Junior (local)............................................................................................................................. 4
1.5 Git Junior (remote) ........................................................................................................................ 5
1.6 Git Medior (merge conflicts) ......................................................................................................... 6
1.7 Git Medior (branching) .................................................................................................................. 7
H2: SOLID Principles .......................................................................................................... 7
2.1 Single Responsibility Principle (SRP).............................................................................................. 7
2.2 Open Closed Principle (OCP) ......................................................................................................... 8
2.3 Liskov Substitution Principle (LSP)................................................................................................. 9
2.4 Interface Segregation Principle (ISP) ........................................................................................... 11
2.5 Dependency Inversion Principle (DIP) ......................................................................................... 12
H3: Reguliere expressies (RegEx) ..................................................................................... 14
3.1 Definitie ....................................................................................................................................... 14
3.2 Gebruik ........................................................................................................................................ 14
H4: UML......................................................................................................................... 14
4.1 Introductie ................................................................................................................................... 14
4.2 Class diagram ............................................................................................................................... 15
4.3 Sequence diagram ....................................................................................................................... 16
4.4 State diagram .............................................................................................................................. 18
4.5 Activity diagram ........................................................................................................................... 19
H5: Design Patterns ........................................................................................................ 19
5.1 Inleiding ....................................................................................................................................... 19
5.2 Strategy pattern .......................................................................................................................... 20
5.3 Decorator pattern........................................................................................................................ 21
5.4 Observer pattern ......................................................................................................................... 22
5.5 Singleton pattern ......................................................................................................................... 23
5.6 State Pattern................................................................................................................................ 23
H6: Best Coding Practices ................................................................................................ 24
6.1 Bouw leesbare code .................................................................................................................... 24
6.2 Gebruik bestaande technologieën .............................................................................................. 25
6.3 Separation of concern ................................................................................................................. 25
1
,Software Engineering Elektronica-ICT
6.4 Exceptions ................................................................................................................................... 26
H7: Unit testing............................................................................................................... 27
7.1 Basis van unit testing ................................................................................................................... 27
7.2 Test doubles ................................................................................................................................ 29
7.3 Moq framework........................................................................................................................... 30
2
, Software Engineering Elektronica-ICT
H1: Git
1.1 Version control
Met version control kan men de versie van een bepaald bestand manipuleren. Zo is
het mogelijk om terug te gaan naar een vorige versie of om tussen verschillende
versies te springen.
Het trackt alle wijzigingen die aan het bestand worden gemaakt.
1.2 Source code control
Source code control is een vorm van version control en het heeft veel voordelen voor
programmeurs:
• Efficiënt bestanden delen en samenwerken in dezelfde code.
• Aanduidingen van de persoon die de code heeft aangepast en wat er exact is
veranderd.
• Verschil tussen de staat van de code zien
• Zien welke bestanden het vaakst werden aangepast.
• Altijd een back-up beschikbaar omdat de code steeds in de cloud wordt
opgeslagen.
2.3 Twee types systems
Er bestaan twee soorten systemen:
3