| SOA Analysis Pattern |
|
|
|
When Performing Class DiscoveryI usually start by decomposing the systems into interfaces, controllers, and entities. Classes, relationships, and packaging will be refined, adjusted, split, or merged (refactored) in subsequent steps when assigned various design properties-such as operations, methods, and state transitions. <<Boundary>> (Interface) classesBoundary classes either represent interfaces to users or to other systems. <<Entity>> classesDuring analysis, entity classes represent manipulated units of information. Entities are often passive and persistent. The details of designing a database-based persistence mechanism are not the focus of entity modeling at enterprise level. Performance considerations could force some disparate implementations. Since the enterprise entity model forms the basis of data/information governance, all implementations should be able to show consistency to the entity model and standard for inter-domain communication should be the entity model. <<Control>> classesA control class is responsible for managing the flow of a use case and, therefore, coordinates most of its actions; control classes encapsulate logic that is not particularly related to interface issues (boundaries) or to data engineering issues (entities). This behavior is sometimes called application logic or business logic.
To avoid these problems, control classes are introduced to provide behavior related to coordinating flows-of-events, life cycle, workflow, etc. However, if the probability of changing flows of events is low or the cost is negligible, the extra expense and complexity of additional control classes might not be justified. Distribution and performanceThe need to run parts of the application on different nodes, or in different process spaces, introduces the need to specialize design model elements. This specialization is often accomplished by adding control objects and distributing behavior from the boundary and entity classes onto the control classes. In doing this, the boundary classes migrate toward providing purely interface services, the entity classes move toward providing purely data services, and the control classes provide the rest. Transaction managementManaging transactions is a classic coordination activity. Without a framework to handle transaction management, one or more transaction manager classes would have to interact to ensure that you maintain the integrity of the transactions. Therefore these controller classes sometimes get implemented outside of the service domains directly on the service bus (a variation of the node comment earlier) |


