Aus Softwarekomponenten haben wir jeweils einen Zwilling abgeleitet, der nichtfunktional dasselbe Verhalten hat wie das jeweilige Original. Damit können wir uns einzelne Funktionen bereits betrachten.
In einem richtigen Softwaresystem agieren mehrere dieser Komponenten auf verschiedene Prozesse verteilt und bedienen sich dabei Betriebssystem-Services. Es reicht also nicht aus, einfach die Last und den Energiebedarf der einzelnen Komponenten zu addieren. Stattdessen wollen wir die Zwillinge in ein echtes System integrieren. Dieses System kann dann sehr schnell verändert und kontrolliert werden. Zum Beispiel kann das Betriebssystem ausgetauscht werden, um ein besseres Angebot auszuprobieren.
Hierfür sind zwei Aufgaben zentral: Die OS-Schicht und die Middleware-Schicht.
Die OS-Schicht entscheidet vorrangig, welcher Prozess bzw. welcher Task aus Zwillingen wann laufen darf. In den meisten Fällen ist für einen OEM das Betriebssystem (OS) ein bereits generiertes Teilsystem, das nur noch konfiguriert wird. Es muss also festgelegt werden, welcher Zwilling in welchen Prozess gehört, und welche Priorität und Aufruffrequenz dieser Prozess bekommt. Hierbei kann natürlich das schon existierende Scheduling aus dem Originalsystem genutzt werden – oder ein neues entworfen werden. Wichtig ist nur, dass miteinander interagierende Zwillinge rechtzeitig zueinander aufgerufen werden. Diese Anforderungen sind z.B. durch Wirkketten im System festgehalten.
Die Middleware-Schicht (z.B. AUTOSAR RTE) organisiert die systemweite Kommunikation zwischen den einzelnen Zwillingen. Sie stellt sicher, dass die einzelnen Komponenten nicht die exakten Speicherstellen der auszutauschenden Signale kennen müssen, sondern z.B. nur eine Funktion aufrufen müssen, die das jeweilige Signal zurückgibt. Es ist also denkbar einfach, die Kommunikationspartner auszutauschen – sofern sie die richtigen Middleware-Funktionen aufrufen. Die Kommunikationsbedürfnisse der Zwillinge sind ebenfalls in ihrem LPDL-Modell ((Load Profile Description Language Modell) hinterlegt, indem angegeben wird, welche Signale jede Komponente bereitstellt oder ausliest. Die Middleware-Funktionen können also einfach generiert werden.
Neben den vorgestellten zentralen Aufgaben können systemindividuell natürlich noch weitere Faktoren integriert werden, wie z.B. eine performante Speicherausnutzung.
Die Zwillinge haben nun, wenn sie in das System integriert sind, nicht nur ihr nichtfunktionales Verhalten, sondern füllen abhängig von ihren Kommunikationsarten auch die Systemebene mit repräsentativen Lasten – ohne dass die Zwillinge funktional miteinander interagieren müssen. Hierdurch wird die Abhängigkeit im System reduziert, was einer schnellen und reibungslosen Integration zugutekommt.