![]() |
Service Delivering Assemblies Systematic Identification of the Software & Behaviour of Interest |
|
|
|
|
|
|
|
||
|
Traditional approaches to defining the targets for testing activities tend to be built on a model of the software as a hierarchy of bits of increasing scale & complexity. For example units forming components forming sub-systems forming systems. Alternatively classes forming sub-systems forming systems. This approach initially came from single threaded procedural programming systems where one function or procedure calls a number of others and so can be thought of as a higher level assembly - it is closer to doing useful work. With the idea of modularisation this model evolved with higher level assemblies now being collections of functions or procedures sharing data. Even at this point the basic model was starting to suffer from attempting to address an additional less concrete dimension -modularisation as well as a calling hierachy. This hierarchical model does not provide an adequate tool for systematically defining targets given the complexity of modern software systems. Within a system there are interactions between bits in many domains - implementation inheritance, direct synchronous calling, direct asynchronous calling, indirect interactions via events, message passing and services provided by databases and middleware. Each of these dimensions has a network of interactions which generally do not map onto a hierarchical structure. An alternative tool is required to allow systematic identification and defining of targets - the approach taken is built on the concept of Service Delivering Assemblies existing within the software. |
|||||
|
Service Delivering Assemblies provide a coherent service to a user / client or to a community of users / clients. Typically the service will either be provided to entities outside the system - from the system point of view it is an external service - or to other software entities within the system - an internal service. However In some cases the service may be provided to support the interaction of both external entities and internal entities. These arrangements are illustrated below. |
|||||
|
|||||
|
For the purpose of illustrating this process we will use an example of a system. The system is a diary system. To use the diary system a person must have a user account registered in the system. To enable this there is a user account management functionality and it is this that will be used to illustrate Service Delivering Assemblies. The management of user accounts is done by a supervisor operating the system through an account management window. There is client side logic software that control and drives the operation of this user interface. The client side logic interacts with application server logic that enforces rules about account creation. The application server logic interacts with a database server to maintain a permanent record of user accounts. Informally there are a number of Service Delivering Assemblies that can be identified from this:
|
|||||
|
The scope of an SDA is defined by two things:
Once these are defined the SDA consists of the software involved in delivering the specified services inside the specified interfaces. The SDA boundary identifies both the software involved and the behaviour of that software that is of interest. The core service specific elements of each of the example SDAs are shown in the diagrams below. The filled circles denote the concrete interface points that bound the SDA. The service behaviour is judged as the responses to specific external use at the points as seen in outputs from the SDA at these points. The clear circles denote the interfaces of the direct and indirect uses / clients. It is these clients that determine patterns of usage and that the SDA must interact. |
|||||
|
Overall Account Management Service Provided By the System
|
|||||
|
Account Management Functionality Excluding GUI
|
|||||
|
Server Hosted Account Management Service
|
|||||
|
The diagrams show the boundaries and core software of the SDA. The boundaries are defined by the concrete interfaces. The interfaces are the points at which the SDA interacts with the outside world where the interaction forms part of a service interaction with a client / user. The core software is the software that has behaviours / features provided specifically to implement the service. |
|||||
|
The Full Service Delivering Assembly The Service Delivery Assembly is not restricted to the core software. The full SDA is considered to be all of the software that executes within the SDA boundary and all of the services used whether provided as part of the system, operating system or some other source. In the extreme case this could include the use of external servers used as part of delivering the service - for example credit card validation as part of order processing. Simplistically the full SDA is consists of everything that the operation of the service depends on. In any complex system this will be a vast amount of software and in reality the process does not involve explicitly identifying all of the software. Rather key support software / services are identified. Generally the core software interacts with these directly and they provide non trivial functionality or have complex usage protocols.
The diagram below illustrates key support software associated with one of the example SDAs from above. This expanded SDA example will be used as the basis for subsequent illustrations. |
|||||
|
|||||
| A point to note is that the complex diverse structure of software means that SDAs overlap and share software. The team producing the software may have some named entity they use for change control and management purposes - for example the Client Server Comms Wrapper shown above. This software will form part of many SDAs as a support element and probably part of a Server Comms SDA as core software. | |||||
| SDAs are defined in order to act as a basis for identifying a part of the software implementation and part of the external behaviour of that part of the software. They are intended to be used in the definition of assurance activities to ensure the assurance activity focuses on the correct matters.
Generally an SDA is a useful SDA if it is used in the definition of some assurance activity. The reverse of this is that if it is not possible to create an SDA as the basis of some envisaged assurance activity then the activity itself may be flawed and lacking in coherence. The concept of the SDA aims to be applicable at all scales within a software system. Examples of using SDAs include:
Used as the basis of Assurance Targets SDAs can clearly identify any scope of software / behaviour as the focus of a testing activity. The definitions provide a common approach and format that can cover all of the more common types of definition such as 'unit', 'component', 'module' and 'sub-system' and at the same time provide a more definitive clearer method of communicating exactly what is included and what is not. |
|||||