Speaker Topics - No Fluff Just Stuff

Domain Driven Design & Development with Spring Portfolio

In this technical session, I will discuss Domain Driven Design and Development from a practical implementation stand-point. The presentation looks at various architectural and design factors, best practices, frameworks and tools that affect the design of a business domain implementation project. It also covers the impact of various design concerns like Dependency Injection (DI), Aspect Oriented Programming (AOP), Persistence, Caching, Transaction Management and Application Security in Domain Modeling and Domain Driven Design problem space. The session also provides the domain model and code examples based on a real world DDD implementation project that utilized agile software development techniques such as SCRUM, Test Driven Development and Refactoring to realize a great success in completing the project on time and under budget.

Domain Driven Design (DDD) is about mapping business domain concepts into software artifacts. Most of the writings on Domain Driven Design (DDD) topic to-date have been based on Eric Evan's “Domain Driven Design” book, covering domain modeling and design aspects mainly from a conceptual and design stand-point. These writings discuss the main elements of DDD such as Entity, Value Object, Service etc or they talk about concepts like Bounded Context and Anti-Corruption Layer. While these concepts are important in a real-world DDD implementation, the practical side of DDD hasn't gotten enough attention from domain modeling community.

In this technical session, I will discuss Domain Driven Design and Development from a practical implementation stand-point. The presentation looks at various architectural and design factors, best practices, frameworks and tools that affect the design of a business domain implementation project. It also covers the impact of various design concerns like Dependency Injection (DI), Aspect Oriented Programming (AOP), Persistence, Caching, Transaction Management and Application Security in Domain Modeling and Domain Driven Design problem space. The session also provides the domain model and code examples based on a real world DDD implementation project that utilized agile software development techniques such as SCRUM, Test Driven Development and Refactoring to realize a great success in completing the project on time and under budget.

Other DDD techniques such as Annotations and Code Generation are covered in detail. Code generation of various artifacts in a business domain are discussed with code examples using Model Driven Architecture (MDA) and Model Driven Software Development (MDSD) tools like openArchitectureWare (oAW) and Java EE frameworks like JPA, Hibernate, Spring, Spring Security and Dozer.

Design patterns, that support Domain Driven Design efforts, such as Domain Object Model, Factory, DTOAssembler are discussed. There are also some DDD anti-patterns (smells) that developers need to keep in mind when working on domain implementation. These anti-patterns include Data Carriers, Fat Service Layer and Feature Envy. The presentation will include the discussion on these patterns with real-world code examples using a Home Loan Processing System.

Take-aways:

This session gives an overview of design and architectural factors that affect the practical Domain Driven Design implementation throughout the life cycle of the implementation project. It also offers the best practices and design patterns that technical leads and architects should adopt in achieving a successful domain driven implementation. The presentation will cover the different phases in a typical domain driven design project which includes modeling, design, development, unit testing, deployment and project management.


About Srini Penchikala

Srini Penchikala currently works as an Enterprise Architect at a major financial organization in Metropolitan Detroit area. He has over 14 years of IT experience and has been working on Java projects since 1996 and J2EE technology since 2000. His main areas of interest are Agile Enterprise and Service Oriented Architectures, Domain Driven Design & Development In Practice, Aspect-Oriented Programming (AOP), Architecture Rules Enforcement, Enterprise Integration Patterns, and light-weight middleware frameworks such as Spring and Hibernate. He has presented at conferences and Java User Groups on topics like Agile Enterprise Architectures, Architecture Governance, and Domain-Driven Design. He has published numerous articles on J2EE topics on websites like InfoQ.com, ServerSide.com, O'Reilly Java Network (ONJava), DevX Java, java.net and JavaWorld. Srini also publishes a blog on Java, JEE, and other topics at http://srinip2007.blogspot.com/. He is also a leader of Detroit Java User Group (http://sites.google.com/site/detroitjug/).

More About Srini »