Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • would encapsulate the data and behavior for a part of the system.
  • is responsible for its presentation. The code (markup and others) which provide the presentation for the module would owned by this module.
  • need not necessarily have its own database schema.

Cross functional modules...

  • can be used as libraries by other modules.

Questions

...

A functional module's service/domain-layer wants to read the data owned by another functional module.
The modules are designed to provide encapsulation over the data they own. This means that we should first try out tell-dont-ask approach. At the module level the callee should ask why you want this data. If the callee can satisfy the requirements then the caller should provide the data and callee can respond with the result. This approach might not result in anything new but should be explored.
In any case the services across modules should talk to each other using contract object and not domain objects. This is to decouple module's internal implementation from its usage.
A functional module's service/domain-layer wants to read the data owned by another functional module?

...

(provides a list of issues)

Should module be decoupled from each other to the extent that they can possibly have their own database? Implications: no foreign key relationship, possible independent hosting and deployment.
Which layers in a module are accessible to another module at the compile time?
Entities in one module would refer to entities in another module. In such a case should there be hibernate based relationship between entities?
Which module hosts the page which displays data from two functional modules?

Who coordinates across modules from user interface point of view.

Who keeps the id. In case of 1-to-1/1-to-/-to-1 (logical) relationships between entities how to decide who refers to whom? How to avoid cyclic relationships between modules?
If there is a no domain relationship
Notify of event than tell what to do.
Should domain layer know about the its own service layer or other service layers
Guidelines
A functional module's service/domain-layer wants to read the data owned by another functional module.