Adaptation (computer science)
Adaptation in computer science is a process where an interactive system adapts its behaviour to individual users based on information acquired about its user and its environment. Adaptation is one of the three pillars of empiricism in Scrum.
The need for adaptation
A software system passes through a potentially long software engineering cycle and before delivery, requirement engineers, designers and software developers realize the components of the system. However, it is impossible to anticipate the requirements of all users, and a single best or optimal system configuration is impossible. The active involvement of users and clear understanding of user and task requirements is a challenge in the development of computer-based interactive systems for two reasons:- The potential user groups may not be known at the start of the project, and would need to be identified according to future scenarios of how the software system will be used. These groups need to be revised as the system design evolves because there may be various groups of potentially affected users.
- The design of the project may include substantial changes compared to the users’ current experience of a system; therefore, users may not be confident and precise about their needs concerning this future system.
Adaptivity and adaptability
Even if the user-centred design process implemented in a project guarantees a certain degree of user acceptance and yields a richer understanding of the context of use, the completed product's ability to adapt to changing conditions still plays a central role for a broad acceptance. The operational environment will change, the tasks will be distinct, the end-users will be heterogeneous, and their competences and expectations will evolve. Here again it is impossible for developers to anticipate all possible requirements modifications. Thus, the dynamics of changing conditions shifts the customisation process of the system's characteristics from the development phase to its usage and operation phase because the time needed for a professional development is too short or the new features are too costly.For this reason, developers implement techniques of adaptation into the system in order to react to changing conditions as fast as possible. The example application scenario clearly shows an important distinction concerning such adaptation techniques: the differentiation between manually and automatically performed adaptation processes. Accordingly, the term adaptation decomposes into the two terms adaptivity and adaptability. Adaptivity indicates a system that adapts automatically to its users according to changing conditions, i.e. an adaptive system. Adaptability refers to users that can substantially customise the system through tailoring activities by themselves, i.e. an adaptable system. Adaptive and adaptable systems are complementary to each other. Both methods increase the match between user needs and system behaviour once the development of the system has been finished. Thus, the system is kept flexible during usage.