Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
What Is Software Architecture? How It Differs from Design and What an Architect Does
Software architecture is the set of decisions that shape a system's important properties and are expensive to undo; between it and design there is no hard line but a spectrum from strategic to tactical. The SEI, ISO/IEC/IEEE 42010 and Fowler/Johnson definitions, FoSA's three laws, the architect's role and the Bookstore example used across the category.
Object and Package Diagrams: Runtime Snapshots and the Dependency Map of a .NET Solution
An object diagram draws concrete instances and links at a given moment and catches multiplicity mistakes in a class diagram, while a package diagram shows dependencies between projects and makes layer violations visible. In this post the snapshot of request #42 exposes a wrong 0..1, and the solution's package diagram is generated from the csproj files so an EF Core dependency leaking into Domain is caught in CI.
Component Principles: Splitting a .NET Solution into Projects (REP, CCP, CRP, ADP, SDP, SAP)
When splitting a solution into projects, classes that change together belong in the same project, dependencies must be acyclic and flow toward stability, and stable projects should be abstract. Measuring the cost of a Common project everyone depends on, computing instability and abstractness on a real solution, and reading the main sequence correctly.