I am a Senior Software Engineer, with over 7 years experience in Application development on Web, Mobile Application, and USSD. I have extensive experience in .NET (C#, ASP.NET Core), PHP/MYSQL(Laravel), Typescript (NestJS), SQL , Docker, Kubernetes. I have worked in various sectors as a Software Engineer, including Financial Services, Insurance, Inventory Control, Oil and Gas.

My Mentoring Topics

  • Software Engineering
  • Database Management Systems
  • Project Management
L.
17.April 2022

Extremely helpful. I've been doing lots of different things and this sessions helped me focus more in one area. You also gave me important tips about the topic needed for back-end engineering

Domain Driven Design
Eric Evans

Key Facts and Insights Domain-Driven Design (DDD) is a software development methodology focused on solving complex business problems by connecting the implementation to an evolving model. DDD emphasizes the importance of a Ubiquitous Language that is shared by both technical team members and domain experts to ensure clear communication and understanding. The book introduces the concept of a Bounded Context, which is a way to partition a system into distinct sections each with its own model and language. DDD distinguishes between Entities, which are objects defined by their identity, and Value Objects, which are defined by their attributes. The book introduces the concept of an Aggregate, a cluster of related objects that are treated as a unit for data changes. DDD promotes the use of a layered architecture, with distinct separation of responsibilities between the UI, application, domain, and infrastructure layers. It discusses the importance of designing and implementing Repositories for storing and retrieving Aggregates. DDD emphasizes the role of Domain Events to model significant happenings in the domain. It introduces the concept of a Domain Service, a service that performs operations that do not naturally fit within an Entity or Value Object. The book promotes the use of Anti-Corruption Layers to protect one domain from another’s corrupting influence. Evans also discusses the concept of a Context Map, a visual representation of the various Bounded Contexts and the relationships between them. An In-Depth Analysis "Domain-Driven Design" by Eric Evans is a seminal work in the field of software development. It introduces a methodology called Domain-Driven Design (DDD), which seeks to simplify complex businesses problems by aligning software design with the business domain. The book is predicated on the idea that software should be an accurate model of the business domain. To ensure this, Evans proposes the use of a Ubiquitous Language. This language, which is shared by both developers and domain experts, ensures that both parties have a clear and shared understanding of the domain. This mutual understanding, in turn, helps to ensure that the software accurately models the business domain. A central concept in the book is that of the Bounded Context. This is a way to partition a system into distinct sections, each with its own domain model and language. By doing so, each Bounded Context can focus on its own specific problem without being unduly influenced or complicated by other parts of the system. The book further distinguishes between Entities and Value Objects. Entities are objects that have a distinct identity, and their identity remains constant even if their attributes change. On the other hand, Value Objects are defined by their attributes and do not have a distinct identity. Aggregates are another key concept in DDD. An Aggregate is a cluster of related objects that are treated as a unit for data changes. This helps to maintain consistency and integrity within the Aggregate. Evans also discusses the importance of designing and implementing Repositories for storing and retrieving Aggregates. Repositories provide a way to abstract away the underlying data storage mechanism and allow Aggregates to be retrieved without the need for complex database queries. The book emphasizes the use of Domain Events to model significant happenings in the domain. These events can help to decouple parts of the system and can also provide a record of what has happened in the system. Domain Services are another key concept in DDD. These are services that perform operations that do not naturally fit within an Entity or Value Object. Domain Services provide a way to encapsulate these operations without artificially forcing them into an Entity or Value Object. The book also discusses the use of Anti-Corruption Layers to protect one domain from another’s corrupting influence. This is especially useful when integrating with legacy systems or external systems. Finally, Evans introduces the concept of a Context Map. This is a visual representation of the various Bounded Contexts and the relationships between them. A Context Map can help to provide an overview of the system and can also assist in identifying areas of complexity or potential conflict. In conclusion, "Domain-Driven Design" by Eric Evans is a foundational book for anyone interested in software development. Its concepts and ideas provide a robust framework for designing and implementing software systems that are closely aligned with the business domain. It provides a set of practices and principles that can help to simplify complex business problems and ensure that software is a true reflection of the domain it seeks to model.

View