![]() |
![]() |
In designing a large system, there are so many contributing components, all complicated and all absolutely necessary to success, that the essence of the domain model, the real business asset, can be obscured and neglected.
The distillation process highlights the “core domain”, the part of the design that is central to the business value of the system. The key is to choose and establish a shared view of the core of your system, and relate that vision to your development priorities and your design. We evaluate the effectiveness of the current view and then work with your team to focus that definition to provide more value to the company. The result brings an order to documents and even the implementation and helps concentrate work in the most essential areas.
Within this most critical area, and selected hot spots, we even provide hands-on development support.
By interviewing developers, domain experts on the team, and managers, as well as looking at design documents and code, we'll answer a series of questions:
This will put you in a position to plan the next steps, which we can assist.
The refinement of a small, specialized core is crucial to a software project and a company.
There are a variety of forms this can take. Two quick and inexpensive ways to get started are a "domain vision statement" and a "highlighted core", neither of which requires modifying code.
A "domain vision statement" describes in a page or less the domain to which the program applies most fundamentally. This is distinct from the requirements documents, which describe what the software must do.
The "highlighted core" is a means of distinguishing the model and design elements that are a part of that core domain. This involves devising a document or a mechanism to track the core elements and also a review of the model and design to identify those elements that belong to the core. Again, this does not require changes to the design, but it will help focus work and build a common vision among team members.
It is also good preparation for more aggressive techniques that reorganize the design to bring out the core domain.
A domain vision statement and highlighted core help to focus work, but to obtain the most effective domain design calls for reorganizing the design itself.
Cohesive generic subdomains can be carved off, and the core can be segregated. This physical distinction in the implementation creates the greatest opportunity for refining the most valuable core elements of the design.This is an ongoing process, but we help get the processes established.
Not all parts of your system need the same high standard of design. The core domain, and certain critical supporting subdomains are leverage points for a project. A clean, clear design of this core provides much benefit to the project than it does for most parts of the system. Design and implementation of the core domain is so critical it is worth putting top talent to work, and we can help get it on track.
On these critical parts of the design, we provide direct design and coding support, actually refactoring your code in close collaboration with your developers and customers. This can be done on-site, off-site or in some combination. Core development requires deep domain knowledge, so it calls for some blend of mentoring and consulting, pairing with team members and off-site development. (Note: This service is only available for certain technologies and programming languages.)
The result is a chunk of communicative, flexible code at the heart of your system. It also provides an excellent mentoring opportunity for the developers involved.
![]() |
![]() |
The assessment we provide will give you perspective as well as concrete recommendations. We will clarify where you are now, where you want to go, and start to draw a roadmap for how to get you to that goal.
![]() |
![]() |