Question 4
Component is a modular, deployable, replaceable part of a system that encapsulates implementation and exposes a set of interfaces.
4.1.1
Object-oriented view is that component contains a set of collaborating classes.
1. Each elaborated class includes all attributes and operations relevant to its implementation.
2. All interfaces communication and collaboration with other design classes are also defined.
3. Analysis classes and infrastructure classes serve as the basis for object-oriented elaboration.
4.1.2
Traditional view is that a component (or module) reside in the software and serves one of three roles.
1. Control components coordinate invocation of all other problem domain components.
2. Problem domain components implement a function required by the customer
3. Infrastructure components are responsible for functions needed to support the processing required in a domain application.
4. The analysis model data flow diagram is mapped into a module hierarchy as the starting point for the component derivation.
4.2
In a traditional software design the components (or modules) are functional elements that embody processing logic, data structures and interface logic to interact with the external environment. As such the modules can be classified as control-, problem domain- and infrastructure components. The control component controls the invocation of the problem domain components. Since traditional software architecture is (mostly) hierarchical in nature the control elements reside near the top of the hierarchical structure.
In contrast to this, object-oriented architecture consists of collaborating components (objects defined on classes), each encapsulating all the processing logic, data structures and interface requirements necessary to execute its function. A control component is therefore not required since the data and functionality is implicitly defined for each component.