Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und...

38
Symphony und das Hierarchische Reflexion Modell Rainer Koschke und Daniel Simon Universit¨ at Stuttgart Institut f¨ ur Softwaretechnologie Abt. Programmiersprachen und Compilerbau WSR 2004

Transcript of Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und...

Page 1: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony und das Hierarchische Reflexion Modell

Rainer Koschke und Daniel Simon

Universitat StuttgartInstitut fur Softwaretechnologie

Abt. Programmiersprachen und Compilerbau

WSR 2004

Page 2: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Symphony Designebene

Target ViewpointsProblem Statement

process designer reconstructor

Source Viewpoints

stakeholders

actor in

data flowInformationInterpretation

Target ViewpointsMapping RulesProblem

StatementProblemElicitation

Source Viewpoints

KnowledgeInference

Library ofViewpoints

Refinement

ConceptDetermination

DataGathering

Daniel Simon Hierachisches Reflexion Modell

Page 3: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Problem Elicitation — Hierarchisches Reflexion Modell

Ziele:

Architekturvalidierung von Compilern

hypothesengetriebene Architekturrekonstruktion

Erweiterung Reflexion Modell vonMurphy, Notkin, Sullivan, 1995

Daniel Simon Hierachisches Reflexion Modell

Page 4: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Problem Elicitation — Hierarchisches Reflexion Modell

Ziele:

Architekturvalidierung von Compilern

hypothesengetriebene Architekturrekonstruktion

Erweiterung Reflexion Modell vonMurphy, Notkin, Sullivan, 1995

Daniel Simon Hierachisches Reflexion Modell

Page 5: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Concept Determination

Useful Viewpoints:

Modulsichtkonzeptuelle SichtReflexion Modell Sicht

Target Viewpoint:

Kombination aus Modul und Reflexion Sichtspater: Modul und hierarchische Reflexion Sicht

Mapping Rules

Hypothetical Views: high-level Modulsicht

Daniel Simon Hierachisches Reflexion Modell

Page 6: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Concept Determination

Useful Viewpoints:

Modulsichtkonzeptuelle SichtReflexion Modell Sicht

Target Viewpoint:

Kombination aus Modul und Reflexion Sichtspater: Modul und hierarchische Reflexion Sicht

Mapping Rules

Hypothetical Views: high-level Modulsicht

Daniel Simon Hierachisches Reflexion Modell

Page 7: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Concept Determination

Useful Viewpoints:

Modulsichtkonzeptuelle SichtReflexion Modell Sicht

Target Viewpoint:

Kombination aus Modul und Reflexion Sichtspater: Modul und hierarchische Reflexion Sicht

Mapping Rules

Hypothetical Views: high-level Modulsicht

Daniel Simon Hierachisches Reflexion Modell

Page 8: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Concept Determination

Useful Viewpoints:

Modulsichtkonzeptuelle SichtReflexion Modell Sicht

Target Viewpoint:

Kombination aus Modul und Reflexion Sichtspater: Modul und hierarchische Reflexion Sicht

Mapping Rules

Hypothetical Views: high-level Modulsicht

Daniel Simon Hierachisches Reflexion Modell

Page 9: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Compiler — Logisch

AnalysisLexical

AnalysisSyntactic Semantic

AnalysisCodeGeneration

AST

SymbolTable

Optimization

Que

lltex

t

Cod

e

Lehrbucher, etwa Wilhelm/Maurer, Ubersetzerbau

Daniel Simon Hierachisches Reflexion Modell

Page 10: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Compiler — Grobstruktur

referenced by all

referenced by all

references all

Control

AST2IL

Global Configuration

Front End Middle End

Initialization

references (first hypothesis)

Back End

Common

AST

IL

Shaw und Garlan, 1993Daniel Simon Hierachisches Reflexion Modell

Page 11: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Anwendung des Reflexion Modells

1 hypothetischesArchitekturmodell erstellen

2 Quellmodell extrahieren

3 Quellentitat auf konzeptuelleEntitaten abbilden

4 Reflexion Modell berechnen5 Verfeinern/korrigieren

hypothetisches ModellAbbildungQuellmodell

A B C<<ref>> <<ref>>

Daniel Simon Hierachisches Reflexion Modell

Page 12: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Anwendung des Reflexion Modells

1 hypothetischesArchitekturmodell erstellen

2 Quellmodell extrahieren

3 Quellentitat auf konzeptuelleEntitaten abbilden

4 Reflexion Modell berechnen5 Verfeinern/korrigieren

hypothetisches ModellAbbildungQuellmodell

c1 c2b

A B

a

C

<<ref>>

<<ref>> <<ref>>

<<ref>>

Daniel Simon Hierachisches Reflexion Modell

Page 13: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Anwendung des Reflexion Modells

1 hypothetischesArchitekturmodell erstellen

2 Quellmodell extrahieren

3 Quellentitat auf konzeptuelleEntitaten abbilden

4 Reflexion Modell berechnen5 Verfeinern/korrigieren

hypothetisches ModellAbbildungQuellmodell

c1 c2b

A B

a

C

<<maps−to>>

<<ref>>

<<ref>>

<<maps−to>>

<<ref>>

<<ref>>

Daniel Simon Hierachisches Reflexion Modell

Page 14: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Anwendung des Reflexion Modells

1 hypothetischesArchitekturmodell erstellen

2 Quellmodell extrahieren

3 Quellentitat auf konzeptuelleEntitaten abbilden

4 Reflexion Modell berechnen5 Verfeinern/korrigieren

hypothetisches ModellAbbildungQuellmodell

c1 c2b

A B

a

C

<<maps−to>>

<<ref>>

<<ref>>

<<maps−to>>

<<ref>>

<<ref>>

Daniel Simon Hierachisches Reflexion Modell

Page 15: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Anwendung des Reflexion Modells

1 hypothetischesArchitekturmodell erstellen

2 Quellmodell extrahieren

3 Quellentitat auf konzeptuelleEntitaten abbilden

4 Reflexion Modell berechnen5 Verfeinern/korrigieren

hypothetisches ModellAbbildungQuellmodell

c1 c2b

A B

a

C

<<maps−to>>

<<ref>>

<<ref>>

<<maps−to>>

<<ref>>

<<ref>>

Daniel Simon Hierachisches Reflexion Modell

Page 16: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Reflexion

b

A B

a konkreteModulSicht

hypothetischeModulSicht

<<ref>>

<<ref>>

<<maps−to>>

Konvergenz

propagated-ref(A,B) ⇔ ∃(a, b ∈ M) : (ref(a, b)∧maps-to(a) = A∧maps-to(b) = B)

convergence(A,B) ⇔ ref(A,B) ∧ propagated-ref(A,B)

Daniel Simon Hierachisches Reflexion Modell

Page 17: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Reflexion

b

A B

a konkreteModulSicht

hypothetischeModulSicht

a b

A B<<ref>>

<<maps−to>>

Abwesenheit

<<ref>>

<<ref>>

<<maps−to>>

Konvergenz

absence(A,B) ⇔ ref(A,B) ∧ ¬propagated-ref(A,B)

Daniel Simon Hierachisches Reflexion Modell

Page 18: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Reflexion

b

A B

a a b

A B<<ref>>

<<maps−to>>

Abwesenheit

a b

A B

<<ref>>

<<maps−to>>

Divergenz

konkreteModulSicht

hypothetischeModulSicht

<<ref>>

<<ref>>

<<maps−to>>

Konvergenz

divergence(A,B) ⇔ ¬ref(A,B) ∧ propagated-ref(A,B)

Daniel Simon Hierachisches Reflexion Modell

Page 19: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Compiler — Grobstruktur

referenced by all

referenced by all

references all

Control

AST2IL

Global Configuration

Front End Middle End

Initialization

references (first hypothesis)

Back End

Common

AST

IL

Shaw und Garlan, 1993

Daniel Simon Hierachisches Reflexion Modell

Page 20: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Compiler — Feinstruktur

referenced by all

referenced by all

references all

Lexer

Parser

Control

Control Flow

Data Flow

Optimizers

Symbol Table

AST

IL

CFG

AST2IL

DescriptionTarget Machine

Code Generator

Peephole Optimizer

Back End

Error Handler Utilities

Common

Preprocessor

SemanticAnalysis

Global Configuration

Front End Middle End

Initialization

references (first hypothesis)

references (later refinement)

Ursprungliches Reflexion Modell hat keine Hierarchien.Daniel Simon Hierachisches Reflexion Modell

Page 21: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Hierarchisches Reflexion Modell

**

ba

maps−to(a) maps−to(b)

A B<<ref>>

HypothetischeModulsicht

KonkreteModulsicht

<<ref>>

Konvergenz

propagated-ref ↑(A,B) ⇔ ∃(a, b ∈ M) : (ref(a, b)∧partof ∗(maps-to(a),A)∧partof ∗(maps-to(b),B))

convergence(A,B) ⇔ ref(A,B)

∧propagated-ref ↑(A,B)

Daniel Simon Hierachisches Reflexion Modell

Page 22: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Hierarchisches Reflexion Modell

* ***

ba

maps−to(a) maps−to(b)

A B<<ref>>

maps−to(b)maps−to(a)

a b

BA<<ref>>

Abwesenheit

HypothetischeModulsicht

KonkreteModulsicht

<<ref>>

Konvergenz

absence(A,B) ⇔ ref(A,B) ∧ ¬propagated-ref ↑(A,B)

Daniel Simon Hierachisches Reflexion Modell

Page 23: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Problem Elicitation & Concept DeterminationCompiler Architektur I & ReflexionCompiler Architektur II & hierarchische Reflexion

Hierarchisches Reflexion Modell

* *** * *

ba

maps−to(a) maps−to(b)

A B<<ref>>

maps−to(b)maps−to(a)

a b

BA<<ref>>

Abwesenheit

a

A’

A=maps−to(a)

B’

b

HypothetischeModulsicht

KonkreteModulsicht

<<ref>>

Konvergenz

B=maps−to(b)

<<ref>>

Divergenz

divergence(A,B) ⇔ ¬∃(A′,B ′) : (partof ∗(A,A′)∧partof ∗(B,B ′)∧ref(A′,B ′)) ∧ propagated-ref(A,B)

Daniel Simon Hierachisches Reflexion Modell

Page 24: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Data GatheringInference & Interpretation

Symphony Ausfuhrungsebene

SourceViews

TargetViews

ViewsArchitectural

stakeholders

Data

reconstructor

RepositoryDataGathering

actor in

data flow

KnowledgeInference

TargetSource

InformationInterpretation

Map

Views Views

Daniel Simon Hierachisches Reflexion Modell

Page 25: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Data GatheringInference & Interpretation

Extraktion der Information mit Bauhaus

GlobalDeclarationModule

Routine

Object

Type

Directory

declared indeclared indeclared in

Type

Routine

Object

sameexpression

Variable Constant

based_on

of_type

set, use, take−addressinternal access

direct callindirect call

return, parameter−type

Daniel Simon Hierachisches Reflexion Modell

Page 26: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

Data GatheringInference & Interpretation

Knowledge Inference &Information Interpretation: Bauhaus GUI

Daniel Simon Hierachisches Reflexion Modell

Page 27: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Untersuchte Compiler

sdcc — Small Device C Compiler

ANSI-CIntel 8051, Zilog Z80, Dallas 80C390. . .

cc1 — Teil der GNU Compiler Collection

(ANSI), GNU Cviele Plattformen

System KLOC C Module Aufwand

sdcc1 100 49 6 hcc12 500 156 8+ h

1http://sourceforge.net/projects/sdcc/2http://gcc.gnu.org/

Daniel Simon Hierachisches Reflexion Modell

Page 28: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur sdcc

Abbildung von Dateien auf Module relativ einfach

erste Iteration: viele DivergenzenVerfeinerungen (5 weitere Iterationen):

45 globale Deklarationen nicht in passenderUbersetzungseinheitdie meisten in die Komponente Global Declarationsubersehene Abhangigkeiten in hypothetischen Modulsicht

Architekturverletzungen:Symboltabelle referenziert den Parser

declaration block number und line number

Backend referenziert den Parserglobale Variable fur Stackgroße von Aktivierungsblocken

Architekturmuster: Optimierer referenziert BackendPlattform spezifische Parameteruber Funktionszeiger“anonyme” Abhangigkeit

Daniel Simon Hierachisches Reflexion Modell

Page 29: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur sdcc

Abbildung von Dateien auf Module relativ einfach

erste Iteration: viele Divergenzen

Verfeinerungen (5 weitere Iterationen):45 globale Deklarationen nicht in passenderUbersetzungseinheitdie meisten in die Komponente Global Declarationsubersehene Abhangigkeiten in hypothetischen Modulsicht

Architekturverletzungen:Symboltabelle referenziert den Parser

declaration block number und line number

Backend referenziert den Parserglobale Variable fur Stackgroße von Aktivierungsblocken

Architekturmuster: Optimierer referenziert BackendPlattform spezifische Parameteruber Funktionszeiger“anonyme” Abhangigkeit

Daniel Simon Hierachisches Reflexion Modell

Page 30: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur sdcc

Abbildung von Dateien auf Module relativ einfach

erste Iteration: viele DivergenzenVerfeinerungen (5 weitere Iterationen):

45 globale Deklarationen nicht in passenderUbersetzungseinheitdie meisten in die Komponente Global Declarationsubersehene Abhangigkeiten in hypothetischen Modulsicht

Architekturverletzungen:Symboltabelle referenziert den Parser

declaration block number und line number

Backend referenziert den Parserglobale Variable fur Stackgroße von Aktivierungsblocken

Architekturmuster: Optimierer referenziert BackendPlattform spezifische Parameteruber Funktionszeiger“anonyme” Abhangigkeit

Daniel Simon Hierachisches Reflexion Modell

Page 31: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur sdcc

Abbildung von Dateien auf Module relativ einfach

erste Iteration: viele DivergenzenVerfeinerungen (5 weitere Iterationen):

45 globale Deklarationen nicht in passenderUbersetzungseinheitdie meisten in die Komponente Global Declarationsubersehene Abhangigkeiten in hypothetischen Modulsicht

Architekturverletzungen:Symboltabelle referenziert den Parser

declaration block number und line number

Backend referenziert den Parserglobale Variable fur Stackgroße von Aktivierungsblocken

Architekturmuster: Optimierer referenziert BackendPlattform spezifische Parameteruber Funktionszeiger“anonyme” Abhangigkeit

Daniel Simon Hierachisches Reflexion Modell

Page 32: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur sdcc

Abbildung von Dateien auf Module relativ einfach

erste Iteration: viele DivergenzenVerfeinerungen (5 weitere Iterationen):

45 globale Deklarationen nicht in passenderUbersetzungseinheitdie meisten in die Komponente Global Declarationsubersehene Abhangigkeiten in hypothetischen Modulsicht

Architekturverletzungen:Symboltabelle referenziert den Parser

declaration block number und line number

Backend referenziert den Parserglobale Variable fur Stackgroße von Aktivierungsblocken

Architekturmuster: Optimierer referenziert BackendPlattform spezifische Parameteruber Funktionszeiger“anonyme” Abhangigkeit

Daniel Simon Hierachisches Reflexion Modell

Page 33: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur cc1

nur Ubersetzungseinheiten abgebildet (keine Verfeinerungenfur globale Deklarationen)

Frontend ist gut strukturiert und lose mit Middle- undBackend verbunden

Backend einfach zu finden

Architekturverletzungen:Middleend referenziert den Praprozessor

verwendet Hashtabelle aus Praprozessor(wir haben drei Hashtabellen im cc1 gefunden)

viele Divergenzen. . .

Middleend ist ein großer Klumpen

Daniel Simon Hierachisches Reflexion Modell

Page 34: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur cc1

nur Ubersetzungseinheiten abgebildet (keine Verfeinerungenfur globale Deklarationen)

Frontend ist gut strukturiert und lose mit Middle- undBackend verbunden

Backend einfach zu finden

Architekturverletzungen:Middleend referenziert den Praprozessor

verwendet Hashtabelle aus Praprozessor(wir haben drei Hashtabellen im cc1 gefunden)

viele Divergenzen. . .

Middleend ist ein großer Klumpen

Daniel Simon Hierachisches Reflexion Modell

Page 35: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur cc1

nur Ubersetzungseinheiten abgebildet (keine Verfeinerungenfur globale Deklarationen)

Frontend ist gut strukturiert und lose mit Middle- undBackend verbunden

Backend einfach zu finden

Architekturverletzungen:Middleend referenziert den Praprozessor

verwendet Hashtabelle aus Praprozessor(wir haben drei Hashtabellen im cc1 gefunden)

viele Divergenzen. . .

Middleend ist ein großer Klumpen

Daniel Simon Hierachisches Reflexion Modell

Page 36: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur cc1

nur Ubersetzungseinheiten abgebildet (keine Verfeinerungenfur globale Deklarationen)

Frontend ist gut strukturiert und lose mit Middle- undBackend verbunden

Backend einfach zu finden

Architekturverletzungen:Middleend referenziert den Praprozessor

verwendet Hashtabelle aus Praprozessor(wir haben drei Hashtabellen im cc1 gefunden)

viele Divergenzen. . .

Middleend ist ein großer Klumpen

Daniel Simon Hierachisches Reflexion Modell

Page 37: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Symphony DesignSymphony Ausfuhrung

Resultate

sdccGNU cc1

Resultate fur cc1

nur Ubersetzungseinheiten abgebildet (keine Verfeinerungenfur globale Deklarationen)

Frontend ist gut strukturiert und lose mit Middle- undBackend verbunden

Backend einfach zu finden

Architekturverletzungen:Middleend referenziert den Praprozessor

verwendet Hashtabelle aus Praprozessor(wir haben drei Hashtabellen im cc1 gefunden)

viele Divergenzen. . .

Middleend ist ein großer Klumpen

Daniel Simon Hierachisches Reflexion Modell

Page 38: Symphony und das Hierarchische Reflexion Modellist/wsr2004/slides/simon.pdf · sp¨ater: Modul und hierarchische Reflexion Sicht Mapping Rules Hypothetical Views: high-level Modulsicht

Erfahrungen

Reflexion Modell muss hierarchische Architekturenunterstutzen

Anwendungswissen bei der Erstellung der hypothetischenArchitektur wesentlich

manuelle Schritte aufwandig, Iterationen ublich

Toolunterstutzung zur Erstellung der Abbildung

dann aber automatisierte Anwendung fur Folgeiterationen

Abgleich von Soll- gegen Ist-Architektur