Next: Types of Service Effect
Up: Service Effect Specification
Previous: Motivation
Contents
Index
A service effect specification (SEFF) describes how a provided service of a component calls its required services and is thus an abstraction of the control flow through the component. In the simplest case, a SEFF of a provided service is a list of signatures of the services in the component's required interfaces. For more sophisticated analyses, a SEFF can be modelled as a finite state machine (FSM), which captures sequences, branches, and loops. In any case, a SEFF captures the externally visible behaviour of a provided service while hiding its internal computations.
Figure 3.14:
Example SEFF as FSM and corresponding source code
[]

[]
|
Example 3.8 (FSM-SEFF)
In figure
3.14(a), a SEFF is modeled as a FSM for the provided service
read, whose source code is shown in Figure
3.14(b)). This service first initialises a file handle, writes to a log file, and then reads from a cache within a loop. After completing the file access, another entry is added to the log. In the FSM, edges represent calls to required services and are annotated with the name of these services. The states abstractly represent the internal computations of a service after or before executing a required service. Notice, that the SEFF only contains the sequence of calls to the required services, while the component internal activity of initialising the file handle is abstracted.
Although SEFFs reveal the inner dependencies between provided and required interfaces of a component, they do not violate the black box principle. First, these specifications are only used by tools performing analyses, and do not have to be understood by humans. Second, they do not reveal the intellectual property of component developers encoded in the service's algorithms, because they are a strong abstraction of the component's source code. Third, in many cases, these specification can be generated out of byte code components, which are generally considered black box components.
SEFFs can be specified for basic components by the component developers and computed for composite components out of the SEFFs specified for the inner components [7]. For existing legacy basic components with available source code, the SEFFs have to be specified manually so far. However, in the future it is planned to implement analysis tools for component source code to assist component developers in the SEFF specification of legacy components by semi-automatically generating them.
Next: Types of Service Effect
Up: Service Effect Specification
Previous: Motivation
Contents
Index
Snowball
2007-03-16