Architecting Composite Applications and Services with TIBCO: Observable Dependencies and Behaviors
When you are creating a design as a collection of interacting components (e.g., services), it is useful to be able to ignore the internals of those components and concentrate on their interactions. However, you still need to know something about the component—how it depends upon the environment in which it operates and how it will behave. This chapter is about how to characterize these dependencies and behaviors. As we shall see in the next chapter, this type of characterization forms the core of component and service specifications.
If you are conceptualizing (defining) the component as part of your design, you will be called upon to create this characterization. If you are using an existing component, then you will be the consumer of the characterization. Either way, you need to understand what is required to appropriately characterize the component.
Behavior is the way in which something, in our case a component, responds to a stimulus. To effectively utilize the component in a solution, you need to understand how the component will respond to stimuli provided by the other solution components and what stimuli the component will provide to the rest of the solution.
In this work we will use the term observable dependency to refer to the relationship between the component and components in the environment upon which it depends. We will use the term observable behavior to refer to the behavior as seen by the rest of the solution—without looking inside the component. After reading this chapter you should be able to describe the concepts of observable dependency and observable behavior and explain how they can be characterized. This will provide the foundation for an ensuing discussion of component and service specifications.