Keywords

1 Introduction

Capabilities specify an ability and capacity to deliver business services to meet specific business performance objectives in different circumstances [1]. They 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 underlying information systems. The run-time delivery adjustments specified in this paper support this objective by: (1) enabling specification of complex contextual data processing logics; (2) providing reconfigurable data bindings; and (3) separating contextual dependencies from business logic.

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 (represents any information that can be used to characterize the situation of an entity) and context indicators (a property of the context relevant to the capability design and used for monitoring capability delivery). 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 variations.

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. Adjustments use constants that can be changed during run-time, allowing to alter the way capability reacts to context without stopping the underlying systems and redeploying solution.

The paper elaborates technical aspects of designing adjustments. The adjustments are executed using a technical platform for capability design delivery as described in [2]. The platform consists of the (1) Capability Delivery Application (CDA), which is responsive for the execution of the business logic with no regard to contextual dependencies; (2) Capability Navigation Application, which processes the context information and provides context awareness to CDA as-a-service; (3) Capability Context Platform, which integrates the context information and notifies CNA of context information changes.

The rest of the paper is organized as follows. Section 2 introduces types of adjustments. These adjustments are further elaborated in Sect. 3. The adjustment modeling is illustrated in Sects. 4 and  5 concludes.

2 Capability Adjustment

Adjustments are developed as a technical addition to the capability meta-model to represent processing of context and indicator data as well as to adapt capability delivery.

2.1 Background

The methodological foundation of capability design and delivery is provided by the core capability meta-model (CMM) in Fig. 1 (more details in [1]). In brief, the meta-model has three main sections: (a) Enterprise model, representing organizational designs with Goals, KPIs, Processes (with concretizations as Process Variants) and Resources; (b) Context, represented with Context Set for which a Capability is designed and Context Situation at runtime that is monitored and according to which the deployed solutions should be adjusted. Context Indicators are used for high level overview of the contextual situation; and (c) Patterns, for delivering Capability by reusable solutions for reaching Goals under different Context Situations.

Fig. 1.
figure 1

A core meta-model for supporting capability driven development.

2.2 Types of Adjustments

Adjustments are used for adjusting the capability based on important factors like context or KPIs. They are also used for monitoring the capability in run-time, by interpreting raw context data (Measurable Properties) in a more comprehensible way and to calculate the KPI current and target values. Two adjustment groups can be distinguished (Fig. 2):

Fig. 2.
figure 2

Groups of adjustment

  1. 1.

    Calculation , used for calculating KPI and ContextElement values. Results from Calculation instances can be used as input data for CapabilityAdjusment instances.

  2. 2.

    CapabilityAdjustment , that alter the capability based on context and other factors (e.g. if the average load time of a website is greater than 4 s, a new web server node is deployed in the cloud).

Calculation is further divided into ContextCalculation and KPICalculation. ContextCalculation is used for interpreting measurable properties and calculating the value of a ContextElement . KPICalculation is responsible for calculating target and current values of KPI based on various input data. The KPI values can be visualized using a set of predefined widgets in CNA during run-time or used as an input data for other adjustments. EventBasedAdjustment is exposed as a REST web service from CNA and is used for enabling process-based capabilities. In cases when CDA requires to choose an exit for a business process gateway based on the current contextual situation, it can query the CNA web service for making the right decision. ScheduledAdjustment allows to implement schedule based, in-code adjustments. ScheduledAdjustment is execute periodically and can trigger a change in the CDA based on the current contextual situation by calling a web service exposed by the CDA. In most cases CapabilityAdjustment instances rely on results received from Calculation instances.

Adjustment variables are used to implement the adjustment logic and they are accessible in the scope of the adjustment code. Optionally input parameters can be used for initializing the adjustment variable values. Adjustment variables are also initialized using Input Data Associations (IDA), which allow to bind adjustment constants or other global available data to local adjustment variables.

There are multiple alternatives for implementing adjustments among which are Java (in-code adjustments) and MathML (implemented using a visual tool with no need to write code manually). The Adjustment engine is responsible for execution of the adjustment code.

CapabilityAdjusment supports decision making for invoking an appropriate process variant for dealing with specific context situations It can use ContextElement value, KPI values and adjustment constants. Two subtypes of CapabilityAdjustment exist – EventBasedCalculation and ScheduledAdjustment . ScheduledAdjustment is executed based on a predefined schedule and it cannot be called through a web service. EventBasedAdjustment is deployed as a web service. It can be called whenever it is required to make a decision based on the current context.

3 Elaboration of Adjustments

This section briefly describes a procedure for adjustment modeling in the Capability Design Tool (an Eclipse based modeling tool which is part of the Capability Driven Development environment) consisting of three main activities (Fig. 3).

Fig. 3.
figure 3

Adjustment modelling procedure

The Add ContextCalculation activity identifies all ContextElement class instances needed for adjusting the capability, creates a ContextCalculation instance for each of them and connects the ContextCalculation instance to the corresponding ContextElement instance (Fig. 4). Similarly, the Add KPICalculation specifies calculations for KPIs.

Fig. 4.
figure 4

Linking a ContextElement to a ContextCalculation

The Add EventBasedAdjustment activity specifies uses of adjustments for selecting the process execution variants. When using EventBasedAdjustment together with process gateways , their associations are used to specify what process instance specific values are passed to the EventBasedAdjustment and how the adjustment result is used to choose the desired process variant (Fig. 5).

Fig. 5.
figure 5

Linking an EventBasedAdjustment to process variants

The IDA for ContextCalculation activity specifies data bindings for ContextCalculation instances. A ContextCalculation instance can be linked to instances of AdjustmentConstant and MeasurableProperty . The value of AdjustmentConstant can be changed during run-time by the designer, while the value of a MeasurableProperty is received from the CCP.

4 Example

An example illustrating usage of scheduled adjustments considers on-demand scaling of computational resources in the cloud. Different methods and computational platforms have been proposed to address this issue (e.g., [3, 4]). The methods differ by scaling algorithms used, performance measures used and contextual factors considered. The proposed application of capability modeling and run-time adjustments allows for flexibility to use these different algorithms, performance measures and contextual factors within a single framework.

The adjustment model in Fig. 6 shows context elements affecting the scaling decisions and KPIs used to monitor the cloud performance. The scheduled adjustment continuously monitors the cloud platform and if necessary increases the number of computational nodes available.

Fig. 6.
figure 6

ScheduledAdjustment example

Context elements webServerLoad (the current average load of webservers), webServerResponseTime (the current average response time of webservers) and nodeCount (the current web server node count in the cloud) are used to describe the contextual situation. A KPI of avgResponseTime is defined to use it as an overall quality measure of the cloud-based solution. Two KPICalculation instances are used to calculate the target and current values of the KPI. The scaling process is limited by adjustment constants maxNodes and minNodes which represent the maximum and minimum number of web server in the cloud. These constants can be changed during run-time for adding more resources to the web application and reaching KPI target value. In order to use the context element values, adjustments constants and KPI values in the cloudScales adjustment IDAs need to be established. For each ContextCalculator an instance a MeasurablePropertyIDA is created and linked to the corresponding MeasurableProperty . To set the server type MeasurablePropertyIDA relies on the serverType adjustment constant. Two ContextElementValueIDA instances are added to the model for using the contex element values. For using values of AdjustmenConstant instances, AdjustmentConstantIDA elements are created.

A simplified version of cloudScaler implementation is given in Fig. 7.

Fig. 7.
figure 7

Adjustment implementation

Based on the current load, current number of nodes and constants the cloudScaler can choose whether to scale up or down. cloudApi represents the cloud native API of the corresponding cloud computing platform.

5 Related Work

New business needs and requirements arise during service and software delivery and some of them might be introduced without interrupting the service and shutting down the software. These changes are variously described in literature as runtime adaptation, dynamic reconfiguration, autonomic computing, self-adaptation, dynamic evolution, runtime adjustment and others. The modern research on delivery and runtime modification originates from the vision of autonomic computing [5]. The vision was formulated in response to the software complexity, and it primarily focuses on technical aspects of running complex integrated software systems. The four main aspects of self-management in autonomic computing are self-configuration, self-optimization, self-healing and self-protection.

There are different types of adaptive systems. The common features of the adaptive systems are monitoring of changes, goal driven adjustment of the system and a feedback loop measuring the success of the adjustment [6]. Self-adaptive systems recently have attracted the most attention in computer science. The self-adaptive systems are able to modify their behavior and/or structure in response to their perception of the environment and the system itself, and their goals [7].

Weyns et al. [8] elaborate a formal reference model of the self-adaptive systems. The model is represented using both UML diagrams and Z language what allows reasoning about behaviour of adaptive systems. Multiple case studies are provided. The literature review on self-adaptive systems [9] shows that researchers focus on software design issues of self-adaptive systems and single MAPE feedback loops.

Their self-adaptive software life-cycle model includes the offline and online activities [10]. Dynamic reconfiguration is a mechanism that allows the modification of a software system during the execution time without shutting it down or restarting it [11]. Methods used for dynamic reconfiguration make changes at the code level or at the component level. In the era of cloud computing, many aspects of dynamic reconfiguration are addressed by dynamic provisioning of cloud computing resources, where intelligent algorithms are used to make provisioning decisions during the service delivery (e.g., [12]). Mori [13] talks of software evolution as a software engineering process to design context-aware adaptive applications resilient to context and user needs variations. Oreizy et al. [14] claim that runtime adaption consists of two interlinked cycles of evolution management and adaptation management. The evolution management deals with changing the application on the basis of interrelated models including code as a model.

The adjustment can be considered as a looser term compared to adaptation, which requires the adaptation goal and the feedback loop, and reconfiguration, which deals with structural properties of the system. Montani and Leonardi [15] use the term “run-time adjustment” in relation to agile workflow technologies. More importantly, the term is applied to modification of business processes rather than to modification of technical aspects of systems. User interface and underlying business logics also can be adapted using information provided in goal models [16]. Process adaption has been an active research area with initial emphasis on adaptive workflows, followed by QoS driven BPEL adaptation and lately on general business processes since BPMN has become executable. Change patterns are at the heart for the workflow adaptation [17]. The AGENTWORK [18] is one of the best know adaptive workflow management systems. The workflow can be automatically adapted either reactively or proactively. Alferez el al. [19] investigate dynamic adaption of service composition. They refer to dynamic adaption as opposite to static adaption, which requires shutting down the system for manual modification.

Business process variants currently is one of the most frequently used methods for supporting adjustment of business processes for specific conditions and requirements. These variants can be constructed either by configuration or adaptation [20]. That can be done in design time as well as in runtime. In the case of adaption, the variants are designed by applying business process change operations such as insertion, deletion of tasks or other process flow elements. Hallerbach et al. [21] elaborate a Provop approach to developing process variants. Their process variant life-cycle consists of four phases, namely, modelling, configuration, execution and optimization. The context-based configuration of the variants is supported. In the execution phase, switching between the process variants is possible to deal with dynamic context changes. A system is context-aware if it uses context to provide relevant information and/or services to the user, where relevancy depends on the user’s task [22]. The context awareness does not necessarily involve adaption and reconfiguration. It is inherently dynamic since majority of context values are known only during the systems execution. Context awareness is also used in workflow adaptation. Smanchat et al. [23] show that majority of the surveyed context aware workflow solutions deal with workflow instance adaption.

6 Conclusion

The paper has described an approach for modeling capability delivery adjustments, which are used for context information processing and capability delivery adaptation in response to changing contextual situations during capability delivery. Capability delivery adjustment enable maintaining the desired level of delivery performance. The adjustments are specified as an extension of the capability meta-model.

The paper focused only on the adjustment modeling part. The adjustment deployment environment and adjustment execution activities are also essential for application of adjustments.