Capabilities are delivered in ever-changing contextual situations. The purpose of capability delivery adjustments is to alter capability delivery in response to the changing context and delivery performance without the need for redesigning the capability and CDA. The run-time delivery adjustment method component supports this objective by:
- enabling specification of complex contextual data processing logics;
- providing reconfigurable data bindings.
The adjustments provide a uniform way of defining computations associated with the concepts defined in the capability model and primarily of those associated with context elements and indicators. These computations can be specified by a capability designer, and they are decoupled from the rest of capability delivery logics. That allows to make changes in context processing without changing the rest of the capability delivery application. Algorithms for context aware capability delivery adjustment are defined as capability adjustments and provide decision-making logics for capability delivery variation points.
The reconfigurable data bindings are important to incorporate new context element in the capability design. The new context elements need to be incorporated because all context elements affecting capability delivery are not known in advance during the capability delivery. The context awareness precision can be improved by using the additional contextual information, and the reconfigurable data bindings allows changing the context processing at run-time with minimal impact on the rest of the capability delivery application.
In CDD adjustments are used for:
- Calculating the values of context elements.
- Calculating the values of performance indicators
- Calculating the target and current value of KPIs
- Supporting implementation of capability delivery variation point
- Supporting implementation of process variant variation point
The adjustment design and execution was described in D5.2 The initial version of Capability Driven Development methodology from the technical perspective and the revised version focuses on methodological aspects of adjustment design.
There are two main groups of adjustments:
- Calculation – used for calculating KPI and Context Element values.
- CapabilityAdjustment – alters the capability based on context and other factors
Three method components can be distinguished:
- Adjustment modelling and design: The first step is the adjustment modelling performed in CDT and adjustment Input Data Associations (IDA), to define what adjustment variables will be available and how exactly do they get their values. Based on the type of the adjustment, different entities can be subject to IDA. When performing IDA with a Measurable Property, aggregations can be optionally specified. When retrieving the aggregated value of the Measurable Property the necessary aggregation and input parameters are provided for the CCP, which performs the aggregation and returns the value.
- Adjustment implementation and delivery: The adjustment logic is implemented in CDT and is different for Java and MathML adjustments. Java adjustment implementation is focused towards implementing a method of the Java adjustment template class. This type of adjustments is intended for developers and has unlimited possibilities to provide whatever functionality is necessary. MathML adjustments are implemented using a graphical tool and no programming knowledge is necessary, therefore they are more limited than the Java adjustments. In both scenarios the implementation is based on local adjustment variables that get their values from IDAs. Before adjustments can be deployed to CNA, they need to be validated in CDT. During validation the necessary data is retrieved from CPP and it is possible to identify problems with the measurable properties or flaws in adjustment logic.
- Adjustment assessment and improvement: The adjustment development is an iterative process. The initial version of the adjustment can be changed during run-time without taking the capability offline. When a new adjustment version has been implemented and tested it can be activated and brought into production. The version control system allows to revert to the previous version if needed.