\phi) \in \mathcal{A}$ it holds that $\phi(S \otimes E) \preceq \phi(S' \otimes E)$.

\[def:adaptation-opt\] Given two systems $S$ and $S'$, $S'$ is at least as adaptive as $S$ with respect to optimization, written $S \sqsubseteq^* S'$ iff for all adaptation domains $\mathcal{A} \in \mathfrak{A}$ it holds that $S \Vdash \mathcal{A} \Longrightarrow S' \Vdash \mathcal{A}$ and $S \preceq_\mathcal{A} S'$.

Note that so far our notions of adaptivity and optimization are purely extensional, which originates from the black box perspective on adaptation assumed in [@holzl2011towards].

Constructing Adaptive Systems
-----------------------------

We now shift the focus of our analysis a bit away from the question “When is a system adaptive?” towards the question “How is a system adaptive?”. This refers to both questions of software architecture (i.e., which components should we use to make an adaptive system?) and questions of software engineering (i.e., which development processes should we use to develop an adaptive system?). We will see that with the increasing usage of methods of artificial intelligence, design-time engineering and run-time adaptation increasingly overlap [@wirsing2015software].

\[def:adaptation-sequence\] A series of $|I|$ systems $\mathcal{S} = (S_i)_{i\in I}$ with index set $I$ with a preorder $\leq$ on the elements of $I$ is called an *adaptation sequence* iff 