Modeling Perspectives to describe our Enterprise Systems
I believe that there are at least two perspectives on the debate about designing and implementing enterprise applications on top of relational data stores.
Business aspect area
The business aspect area adds knowledge about business objectives, activities, and organizational structure. Try to think in terms of activities, channels and actors as the type of information in this aspect area. We often use object-oriented concepts such as abstraction, encapsulation and inheritance to create the business related artifacts that drive the design and implementation of our systems. Modeling approaches are OOA/OOD, UML and the increasingly more popular technique DDD. The implementation units of these concepts are objects and classes.
Information aspect area
The information aspect area adds knowledge about the information the business uses, the information structure and the relationships. Try to think in terms of communication and communication structure as the type of information in this aspect area. We often use conceptual modeling where the data and processing control parts of our systems are modeled in one unit rather than separately. The entity, relationships and attributes are our main concepts in this aspect area. ER, NIAM and ORM are popular modeling approaches. The implementation of an entity can either be a unit of procedural code, module, class, component or table(s).
Every discussion on “starting with the database vs. starting with the object model” and the positioning of object-relational mapping frameworks and tools is all about choosing a specific camp. I used to believe that choosing one or the other was inevitable. I was wrong!
We should not ask ourselves the question “with what should we start?”, but instead “how should we start?”. “With what” is often considered to be an implementation detail. A great example is the starting with the database vs. starting with the object model debate. It is much more interesting to look at “how” we want to describe our enterprise systems? Choosing an initial aspect area can be of great help. The two aspect areas mentioned here are complementary to one another, and so use them accordingly.
The Entity Data Model (EDM) vision implements most, if not all, of the concepts in both the business and information aspect areas. This makes it an ideal candidate for answering the “with what” question. For the sake of our enterprise systems let us focus on the "how" question for now, shall we?