SlideShare a Scribd company logo
Bojan Veljanovski
Chief Technology Officer @ HASELT
@bojanv91
Modular Software
Architecture & Design
1
2
General
Sponsors
Platinum
Sponsors
Silver
Sponsors
Gold
Sponsors
Bronze
Sponsors
Outline
• Why we need to apply architecture & design?
• Path to modularity
– Layers, Use cases, Hexagons
• DEMO
• Benefits and tradeoffs
• Questions & Discussions
3
Goal: Make apps easier to understand.
4
Perfect software does not exist!
Only good enough.
5
But, how good is “good enough”?
6
• Imprecise, ambiguous or unclear requirements
• Implementing features with no design
– Tight coupling
– Cyclic dependencies
– Not well separated concerns
• Ignoring software entropy
– System complexity increases with code modifications.
7
What makes Software bad?
8
What problems can you spot?
• Code becomes hard to maintain
• Simple changes become complex changes
• Feature/Change estimates increase drastically
• Fixed bugs start to re-appear
• Developers start to freak out and get demotivated
• Testing becomes hard and expensive
• Projects fail or forced to be rewritten
9
Consequences
• Increase Maintainability
– reduction of technical debt
• Decrease Technical Debt
– debt payed in time and frustration for bad decisions
10
The need for arc. & design
• Maintainability
– Changes in one area of an app does not affect other
– Adding new features does not need large code-base
changes (new features -> new code)
– Adding new ways to interact with the app does not need
changes in application or domain logic
– Testing is straightforward
• Technical Debt
– Number of team hours to re-factor the codebase to a state
that the team would be comfortable and productive to work
with
11
The need for arc. & design (2)
12
Everything is interrelated
(beware of context!)
Modular-based architecture styles
13
• Application decomposed into reusable logical modules
and components that expose well-defined
communication interfaces.
• Aligning modular structure around domain concepts
• Organize responsibility around business features
instead of technical functions
Key principles
14
• Reusable
• Replaceable
• Not context specific
• Extensible
• Encapsulated
• Independent
Hexagonal Architecture
• Allow an application to be equally driven by users,
programs, automated test or batch scripts, and to be
developed and tested in isolation from its eventual run-
time devices and databases.
• http://alistair.cockburn.us/Hexagonal+architecture
15
16
17
18
Structure
• Domain
– Entities, Aggregates
– Events
– Repositories
• Application
– Actions (Commands and Queries)
– Handlers
• Infrastructure
– Adapters for database, filesystem, message buses, http
connections, action runners
• Delivery
– Web UIs, HTTP API endpoints, Console app, Bots, Test
framework
19
20
• Ports
– Allow for communication to happen
• Adapters
– Translate messages from the outside world
Communication between layers
“Loudest” design patterns
• Domain Layer
– Domain modeling with DDD principles
• Application Layer
– CQRS components
– Dependency Injection
– Decorator
• Infrastructure
– Composite root
– Mediator
• SOLID principles apply everywhere
21
Implementation…
22
23
Organization by
Technical Functions
24
Organization by
Business Features
25
Horizontal vs. Vertical structure
26
Action / Feature
• Intention revealing
• One responsibility
• Says WHAT, not HOW
• Application service component
– Command
• Tells entities what to do
– Query
• Retrieves data from storage
• e.g.: Register user, Buy ticket, Filter active customers etc.
27
Action object is defined with
• Communication Boundary
– Request
– Response
• Coordination Logic
– Validator
– Handler
28
29
Application interaction flow
Common Handler execution steps
1. Audit log
2. Validate request
3. Begin transaction
4. Load Aggregate
5. Operate to Aggregate
6. Store Aggregate
7. Dispatch raised domain events / notifications
8. Commit transaction
30
DEMO
31
32
How to reuse modules?
• Separate Assembly (Shared Assembly)
• NuGet package
• Distributed service (Microservice)
33
Natural evolution towards
SOA / Microservices
Benefits
• Increased maintainability
• Developing, testing and tuning modules independently
• Making applications more flexible and extensible
• Easier to test in isolation
• Easily re-use modules in other projects
• Modules can evolve independently
– By functional requirements
– By non-functional requirements
– By team organization size and style
• Things are much easier to find
– Thus apps are easier to understand
34
Challenges and tradeoffs
• Mind-shift from the mainstream .NET development
• Need of a full-stack development team
• Larger number of files and classes
35
Complete the evaluation
and earn the chance to win
prizes in the closing raffle
http://eval.codecamp.mk
36
Questions?
Thank you
37

More Related Content

PPTX
Software Architecture
PDF
An Introduction to Software Architecture
PDF
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
PPT
Software architecture
PPT
Unit 3 3 architectural design
PDF
Software architecture
PDF
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...
PPT
Architectural Design in Software Engineering SE10
Software Architecture
An Introduction to Software Architecture
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
Software architecture
Unit 3 3 architectural design
Software architecture
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...
Architectural Design in Software Engineering SE10

What's hot (20)

PPTX
Design Model & User Interface Design in Software Engineering
PDF
Domain specific Software Architecture
PPT
Software design
PPTX
Strategy of software design
PPTX
Layered Architecture - Software Architecture Pattern
PPTX
EC8791 Requirement-Specifications-Quality assurance techniques
PPTX
Architectural design of software
PPTX
Unit v -Construction and Evaluation
PPTX
Component design and implementation tools
PPTX
Soa 1 7.ppsx
PPTX
Layered architecture style
PPTX
Software Design Concepts
PPTX
1 introduction to sa
PPTX
Design process and concepts
PPTX
Vertical Slices in .NET - Bojan Veljanovski, March 2016, MK.NET UG
PPTX
Software engineering 17 architectural design
PPTX
Presentation on component based software engineering(cbse)
PPT
Se ii unit3-architectural-design
PPT
Software architecture design ppt
PPTX
Software architecture and software design
Design Model & User Interface Design in Software Engineering
Domain specific Software Architecture
Software design
Strategy of software design
Layered Architecture - Software Architecture Pattern
EC8791 Requirement-Specifications-Quality assurance techniques
Architectural design of software
Unit v -Construction and Evaluation
Component design and implementation tools
Soa 1 7.ppsx
Layered architecture style
Software Design Concepts
1 introduction to sa
Design process and concepts
Vertical Slices in .NET - Bojan Veljanovski, March 2016, MK.NET UG
Software engineering 17 architectural design
Presentation on component based software engineering(cbse)
Se ii unit3-architectural-design
Software architecture design ppt
Software architecture and software design
Ad

Viewers also liked (20)

PPS
Software design principles
PDF
Modular architecture today
PPTX
modelingtools
PPTX
Software Architecture Taxonomies - modularity
TXT
Coding pilkades
PDF
Web design ux trends 2013
PDF
Doing Your HW - A UX approach to your web design
PDF
Web, Design, and UX Trends for 2008
PDF
Web, Design, and UX Trends for 2006
PDF
Mobile Web UX - TdT@Cluj #17
PDF
Responsive Web Design (Microsoft Web & Phone UX Tour 2011)
PDF
Web Form Design (Web Visions 2009)
PDF
Introduction to Antetype - Web UX design tool
KEY
#4_web_ux_wakizaka
PDF
Web, Design, and UX Trends for 2005
PDF
Conflict is the Key to Great UX - Web Design Day Pittsburgh Lightning Talk
DOCX
form-form pilkades
PDF
Hexagonal architecture - message-oriented software design (Symfony Live Berli...
PDF
Evolution of Web Design (UX / Usability) by eDesign - ArabNet Riyadh 2015
PPTX
Software Architecture Design Patterns
Software design principles
Modular architecture today
modelingtools
Software Architecture Taxonomies - modularity
Coding pilkades
Web design ux trends 2013
Doing Your HW - A UX approach to your web design
Web, Design, and UX Trends for 2008
Web, Design, and UX Trends for 2006
Mobile Web UX - TdT@Cluj #17
Responsive Web Design (Microsoft Web & Phone UX Tour 2011)
Web Form Design (Web Visions 2009)
Introduction to Antetype - Web UX design tool
#4_web_ux_wakizaka
Web, Design, and UX Trends for 2005
Conflict is the Key to Great UX - Web Design Day Pittsburgh Lightning Talk
form-form pilkades
Hexagonal architecture - message-oriented software design (Symfony Live Berli...
Evolution of Web Design (UX / Usability) by eDesign - ArabNet Riyadh 2015
Software Architecture Design Patterns
Ad

Similar to Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016) (20)

PPTX
The Role of the Architect
PPTX
Architecture Principles CodeStock
PDF
The Language of Application Architecture
PPT
Software_Archi-1.ppt
PDF
L02 What is Software Architecture?
PPTX
Agile architecture upload
PPTX
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
PPTX
Software Engineering 101
PPTX
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
PDF
How to Speak the Language of Application Architecture
PPTX
L02 Architecture
PPTX
Large scale agile development practices
PDF
Return of the monolith
PDF
Software Architecture in an Agile World
PPTX
Software Engineering Primer
PPTX
Modern software architect post the agile wave
PPSX
Enhancing clean architecture: 2 n-dimensional layers
PPT
Architecting for Change: An Agile Approach
PPTX
Software Engineering Architectural Design
PPTX
Introduction to Modern Software Architecture
The Role of the Architect
Architecture Principles CodeStock
The Language of Application Architecture
Software_Archi-1.ppt
L02 What is Software Architecture?
Agile architecture upload
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
Software Engineering 101
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
How to Speak the Language of Application Architecture
L02 Architecture
Large scale agile development practices
Return of the monolith
Software Architecture in an Agile World
Software Engineering Primer
Modern software architect post the agile wave
Enhancing clean architecture: 2 n-dimensional layers
Architecting for Change: An Agile Approach
Software Engineering Architectural Design
Introduction to Modern Software Architecture

More from Bojan Veljanovski (6)

PDF
CodeCamp 2018 - Architecting Systems with CQRS - Four Years Experience Report...
PPTX
NoSQL document oriented data access for .net systems with postgresql and marten
PPTX
DIGIT Noe 2016 - Overview of front end development today
PPTX
Quick look at Web Components and Project Polymer - MKNET UG
PPTX
Real-world software design practices when developing ASP.NET web systems by B...
PPTX
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
CodeCamp 2018 - Architecting Systems with CQRS - Four Years Experience Report...
NoSQL document oriented data access for .net systems with postgresql and marten
DIGIT Noe 2016 - Overview of front end development today
Quick look at Web Components and Project Polymer - MKNET UG
Real-world software design practices when developing ASP.NET web systems by B...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...

Recently uploaded (20)

PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
Essential Infomation Tech presentation.pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
System and Network Administraation Chapter 3
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Introduction to Artificial Intelligence
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
ai tools demonstartion for schools and inter college
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Transform Your Business with a Software ERP System
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
history of c programming in notes for students .pptx
PDF
Digital Strategies for Manufacturing Companies
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Navsoft: AI-Powered Business Solutions & Custom Software Development
Essential Infomation Tech presentation.pptx
PTS Company Brochure 2025 (1).pdf.......
Which alternative to Crystal Reports is best for small or large businesses.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
System and Network Administraation Chapter 3
CHAPTER 2 - PM Management and IT Context
Introduction to Artificial Intelligence
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Wondershare Filmora 15 Crack With Activation Key [2025
ai tools demonstartion for schools and inter college
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Transform Your Business with a Software ERP System
Upgrade and Innovation Strategies for SAP ERP Customers
Reimagine Home Health with the Power of Agentic AI​
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
history of c programming in notes for students .pptx
Digital Strategies for Manufacturing Companies
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...

Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)

  • 1. Bojan Veljanovski Chief Technology Officer @ HASELT @bojanv91 Modular Software Architecture & Design 1
  • 3. Outline • Why we need to apply architecture & design? • Path to modularity – Layers, Use cases, Hexagons • DEMO • Benefits and tradeoffs • Questions & Discussions 3
  • 4. Goal: Make apps easier to understand. 4
  • 5. Perfect software does not exist! Only good enough. 5
  • 6. But, how good is “good enough”? 6
  • 7. • Imprecise, ambiguous or unclear requirements • Implementing features with no design – Tight coupling – Cyclic dependencies – Not well separated concerns • Ignoring software entropy – System complexity increases with code modifications. 7 What makes Software bad?
  • 9. • Code becomes hard to maintain • Simple changes become complex changes • Feature/Change estimates increase drastically • Fixed bugs start to re-appear • Developers start to freak out and get demotivated • Testing becomes hard and expensive • Projects fail or forced to be rewritten 9 Consequences
  • 10. • Increase Maintainability – reduction of technical debt • Decrease Technical Debt – debt payed in time and frustration for bad decisions 10 The need for arc. & design
  • 11. • Maintainability – Changes in one area of an app does not affect other – Adding new features does not need large code-base changes (new features -> new code) – Adding new ways to interact with the app does not need changes in application or domain logic – Testing is straightforward • Technical Debt – Number of team hours to re-factor the codebase to a state that the team would be comfortable and productive to work with 11 The need for arc. & design (2)
  • 13. Modular-based architecture styles 13 • Application decomposed into reusable logical modules and components that expose well-defined communication interfaces. • Aligning modular structure around domain concepts • Organize responsibility around business features instead of technical functions
  • 14. Key principles 14 • Reusable • Replaceable • Not context specific • Extensible • Encapsulated • Independent
  • 15. Hexagonal Architecture • Allow an application to be equally driven by users, programs, automated test or batch scripts, and to be developed and tested in isolation from its eventual run- time devices and databases. • http://alistair.cockburn.us/Hexagonal+architecture 15
  • 16. 16
  • 17. 17
  • 18. 18
  • 19. Structure • Domain – Entities, Aggregates – Events – Repositories • Application – Actions (Commands and Queries) – Handlers • Infrastructure – Adapters for database, filesystem, message buses, http connections, action runners • Delivery – Web UIs, HTTP API endpoints, Console app, Bots, Test framework 19
  • 20. 20 • Ports – Allow for communication to happen • Adapters – Translate messages from the outside world Communication between layers
  • 21. “Loudest” design patterns • Domain Layer – Domain modeling with DDD principles • Application Layer – CQRS components – Dependency Injection – Decorator • Infrastructure – Composite root – Mediator • SOLID principles apply everywhere 21
  • 26. 26
  • 27. Action / Feature • Intention revealing • One responsibility • Says WHAT, not HOW • Application service component – Command • Tells entities what to do – Query • Retrieves data from storage • e.g.: Register user, Buy ticket, Filter active customers etc. 27
  • 28. Action object is defined with • Communication Boundary – Request – Response • Coordination Logic – Validator – Handler 28
  • 30. Common Handler execution steps 1. Audit log 2. Validate request 3. Begin transaction 4. Load Aggregate 5. Operate to Aggregate 6. Store Aggregate 7. Dispatch raised domain events / notifications 8. Commit transaction 30
  • 32. 32 How to reuse modules? • Separate Assembly (Shared Assembly) • NuGet package • Distributed service (Microservice)
  • 34. Benefits • Increased maintainability • Developing, testing and tuning modules independently • Making applications more flexible and extensible • Easier to test in isolation • Easily re-use modules in other projects • Modules can evolve independently – By functional requirements – By non-functional requirements – By team organization size and style • Things are much easier to find – Thus apps are easier to understand 34
  • 35. Challenges and tradeoffs • Mind-shift from the mainstream .NET development • Need of a full-stack development team • Larger number of files and classes 35
  • 36. Complete the evaluation and earn the chance to win prizes in the closing raffle http://eval.codecamp.mk 36 Questions?