Metaprogrammierung

Get Started. It's Free
or sign up with your email address
Rocket clouds
Metaprogrammierung by Mind Map: Metaprogrammierung

1. Ziel

1.1. Wiederverwendbar

1.1.1. Beispiel

1.1.1.1. FK-Indizes für Tabellen erstellen

1.1.1.2. OMG

1.1.1.2.1. CWM

1.1.2. bei standardisierten Metamodellen

1.2. Komplexität reduzieren

1.3. mehr Flexibilität

1.4. Entwicklungszyklus den UAM ein Stück näher bringen

2. Chancen

2.1. Einsatz mit DSL´s

2.1.1. Einbezug von Business-Analysten

2.1.1.1. Businessregeln der Software

2.1.1.2. Verwaltung der instabilen Programmteile

2.1.1.2.1. als Folge von kurzfristigen Management-Entscheiden

2.1.2. Einbezug aller Stakeholder

2.1.2.1. erfordert Teamarbeit und einen Blick über den Tellerrand

2.1.3. evtl. schnellere Reallisierung möglich

2.1.3.1. The human factor ;-)

3. Tools in .NET

3.1. CodeDom

3.1.1. Ist mir zu akademisch und unflexibel

3.1.1.1. nur VB.NET und C#

3.2. Dynamic binder

3.3. Reflection

3.4. T4

3.4.1. Text Template während der Entwicklung

3.4.1.1. benötigt Visual Studio

3.4.2. Preprocessed Templates zum Teil zur Laufzeit

3.4.2.1. in Kombination mit

3.5. bald: Compiler as a Service (eval)

3.5.1. evtl. dann mal so einfach wie in Javascript?

3.5.2. eval

3.6. Roslyn project

3.6.1. DSL Embedding

3.6.2. Eval

3.6.3. API's

3.6.3.1. Compiler API's

3.6.3.1.1. Syntax Tree API

3.6.3.1.2. Symbol API

3.6.3.1.3. Binding and Flow API's

3.6.3.1.4. Emit API

3.6.3.2. Compiler Pipeline

3.6.3.2.1. Parser

3.6.3.2.2. Symbols

3.6.3.2.3. Binder

3.6.3.2.4. Il Emitter

3.6.3.3. Language Service

3.6.3.3.1. Formatter

3.6.3.3.2. Colorizer

3.6.3.3.3. Outlining

3.6.3.3.4. Navigate To

3.6.3.3.5. Object Browser

3.6.3.3.6. Completion List

3.6.3.3.7. Find All References

3.6.3.3.8. Rename

3.6.3.3.9. Quick Info

3.6.3.3.10. Signature Help

3.6.3.3.11. Extract Method

3.6.3.3.12. Go To Definition

3.6.4. CTP verfügbar ab Oktober 2011

3.6.4.1. Scripting Engine

3.6.4.1.1. kombinierbar mit statischen Code

3.6.4.1.2. Execute(code, session)

3.6.4.2. Session

3.6.4.3. Syntax Parsing

3.6.4.3.1. Syntax.ParseStatement

4. Definition

4.1. Klassisch

4.1.1. Ein Programm, dass ein Programm schreibt

4.1.1.1. während der Entwicklung

4.1.1.2. UML/DSL

4.1.2. Konfigurationsdateien

4.2. Codegenerierung in Anwendung eingebettet

4.2.1. Ein Programm, dass zur Laufzeit ein Programm erstellt

4.2.1.1. zur Laufzeit

4.2.1.1.1. Herausforderungen

4.2.2. Programmcode liegt in Form von Daten vor

4.2.2.1. Metaprogramm führt Daten aus