SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
Trace Markers Softwarespezifikation

TraceMarkers
19.1.2013, Andreas Kleffel
Bearbeitet 6.4. 2013

Trace Markers ist eine API, die es erlaubt .NET Assemblies auf Marker-Attribute
zu scannen. Marker-Attribute sind solche Attribute, die Metadaten in den Source
Code einweben und in der Regel zur Ausführung des Programms nicht nötig
sind. Beispiele für solche Metadaten wären:
Konzeptionelle Funktionen
Features
Akteure
Aspekte
Bugfixes
Workarounds
Sicherheitsrelevanter Code
…
Ein Marker-Attribut sollte dabei folgende Struktur aufweisen:
Einen eindeutigen, kollisionsfreien Namen, auch ohne Namespace
Einen Konstruktor, der das Attribut als Konstante einfügt
Ein Beispiel für ein gültiges Marker-Attribut wäre:

Ein Beispiel für das Einweben der Metadaten wäre dann:

-1-
Trace Markers Softwarespezifikation

Trace Markers wurde für das Tracing von Spezifikations-Funktionen im Source
Code konzipiert – sprich: System Composer (bei der Entwicklung noch
„DonkeySpecs“ genannt). Es ist jedoch eine eigenständige Komponente, die
nicht von System Composer abhängt.
Als Ergebnis eines Tracings/einer Analyse werden Klassen, Methoden /
Funktionen Markern zugewiesen. Das Marker-Objekt beinhaltet lediglich eine ID
(extrahiert aus dem Konstruktor oder einem Property des Marker-Attributes) und
ist somit für beliebige Marker einsetzbar:

Das eigentliche Tracing kann auf zwei Arten passieren:
Via Reflection
Via PDB (mit Hilfe der CCI, Common Compiler Infrastructure)
-2-
Trace Markers Softwarespezifikation

Die Analyse der Attribute via Reflection ist die erste nahe liegende Variante, die
mit .NET-Boardmitteln durchgeführt werden kann. Leider können damit nicht
die Quelldateien der Klassen ermittelt werden, weshalb eine zweite Strategie
die PDB-Dateien der untersuchenden Assembly mit einbezieht. Dazu wird das
Microsoft-Projekt Common Compiler Infrastructure: Metadata API verwendet.
1

Die PDB-Strategie ist prinzipiell langsamer, weshalb die Reflection-Strategie
weiterhin angeboten wird. Man kann auswählen, ob man den schnelleren und
oder detailierteren Analyzer benötigt.
Diese Analyzer-Klassen können per API direkt verwendet werden. Jedoch bietet
Trace Markers die Möglichkeit den Aufruf in einem separaten Workerprozess zu
bearbeiten, dadurch ist die Analyse vollständig vom Caller isoliert und ggf.
geladene Typen werden nach der Analyse wieder entladen.
Ablauf:

1

http://ccimetadata.codeplex.com/

-3-
Trace Markers Softwarespezifikation

Was kompliziert aussieht ist lediglich ein Methodenaufruf:
var result = IsolatedAnalysis.Run(runnerPath, link, AnalysisStrategy.CCI);

Zusammenfassung
Akteure

Anderes Programm, z.B. DonkeySpecs

Features

Analysieren von .NET-Assemblies auf Marker-Attribute in Klassen
und Methoden
Separater EXE-Runner zur isolierten Ausführung der Analyse
Einbeziehung von PDBs zur Zuordnung Source Location (File,
Line Number)
XML-API via Console.Out leicht abzufragen
(evtl. Caching von Analyse-Ergebnisssen)

Funktionen

Isolated Tracing
Simple Tracing
Reflection-basiertes Tracing
PE/PDB-basiertes Tracing

-4-

Weitere ähnliche Inhalte

Andere mochten auch

Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...
Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...
Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...NAXOS Deutschland GmbH
 
Das Problem der Moral 18.10.2011
Das Problem der Moral 18.10.2011Das Problem der Moral 18.10.2011
Das Problem der Moral 18.10.2011Sabine Döring
 
Проект команды Жоржа Пионова: "Їсти дай!"
Проект команды Жоржа Пионова: "Їсти дай!"Проект команды Жоржа Пионова: "Їсти дай!"
Проект команды Жоржа Пионова: "Їсти дай!"RestoPraktiki
 
Bab vii akuntansi istisna
Bab vii akuntansi istisnaBab vii akuntansi istisna
Bab vii akuntansi istisnaTajus Yamani
 
Der grunen karnten
Der grunen karntenDer grunen karnten
Der grunen karntenAhmad Eid
 
Percepcion del consejo consultivo respecto al trabajo 2012xxx
Percepcion del consejo consultivo respecto al  trabajo  2012xxxPercepcion del consejo consultivo respecto al  trabajo  2012xxx
Percepcion del consejo consultivo respecto al trabajo 2012xxxmyriam6464
 
Gipfeltreffen Juni 2012: IT Hosting (Thomas Marx und Raffele Sorra)
Gipfeltreffen Juni 2012:  IT Hosting (Thomas Marx und Raffele Sorra)Gipfeltreffen Juni 2012:  IT Hosting (Thomas Marx und Raffele Sorra)
Gipfeltreffen Juni 2012: IT Hosting (Thomas Marx und Raffele Sorra)EGELI Informatik AG
 

Andere mochten auch (14)

Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...
Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...
Blu-ray, DVD- und CD-Neuheiten Oktober Nr. 3 (Im Vertrieb der NAXOS Deutschla...
 
Derzh.pdf
Derzh.pdfDerzh.pdf
Derzh.pdf
 
Das Problem der Moral 18.10.2011
Das Problem der Moral 18.10.2011Das Problem der Moral 18.10.2011
Das Problem der Moral 18.10.2011
 
Frauen lieben Stiefel!
Frauen lieben Stiefel!Frauen lieben Stiefel!
Frauen lieben Stiefel!
 
Проект команды Жоржа Пионова: "Їсти дай!"
Проект команды Жоржа Пионова: "Їсти дай!"Проект команды Жоржа Пионова: "Їсти дай!"
Проект команды Жоржа Пионова: "Їсти дай!"
 
Trans Alpin Run 2011
Trans Alpin Run 2011Trans Alpin Run 2011
Trans Alpin Run 2011
 
Bab vii akuntansi istisna
Bab vii akuntansi istisnaBab vii akuntansi istisna
Bab vii akuntansi istisna
 
Aspectos legales
Aspectos legalesAspectos legales
Aspectos legales
 
Modulhandbuch
ModulhandbuchModulhandbuch
Modulhandbuch
 
Efa
EfaEfa
Efa
 
Der grunen karnten
Der grunen karntenDer grunen karnten
Der grunen karnten
 
Percepcion del consejo consultivo respecto al trabajo 2012xxx
Percepcion del consejo consultivo respecto al  trabajo  2012xxxPercepcion del consejo consultivo respecto al  trabajo  2012xxx
Percepcion del consejo consultivo respecto al trabajo 2012xxx
 
Gipfeltreffen Juni 2012: IT Hosting (Thomas Marx und Raffele Sorra)
Gipfeltreffen Juni 2012:  IT Hosting (Thomas Marx und Raffele Sorra)Gipfeltreffen Juni 2012:  IT Hosting (Thomas Marx und Raffele Sorra)
Gipfeltreffen Juni 2012: IT Hosting (Thomas Marx und Raffele Sorra)
 
Bdi
BdiBdi
Bdi
 

Ähnlich wie Trace Markers

Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous IntegrationMilena Reichel
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPChristian Guenther
 
Model Driven Architecture
 Model Driven Architecture Model Driven Architecture
Model Driven Architectureguestc274d1
 
Master thesis pascal_mueller05
Master thesis pascal_mueller05Master thesis pascal_mueller05
Master thesis pascal_mueller05guest39ce4e
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...Aberla
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best PracticesGFU Cyrus AG
 
Refactoring Rails Applications
Refactoring Rails ApplicationsRefactoring Rails Applications
Refactoring Rails ApplicationsJonathan Weiss
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
Security Scanner Design am Beispiel von httprecon
Security Scanner Design am Beispiel von httpreconSecurity Scanner Design am Beispiel von httprecon
Security Scanner Design am Beispiel von httpreconMarc Ruef
 
PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePeter Eisentraut
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und ReflectionStefan Marr
 
Tools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und FehlerzuständenTools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und FehlerzuständenOPITZ CONSULTING Deutschland
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Ecm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forgeEcm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forgeJasmine Conseil
 

Ähnlich wie Trace Markers (20)

Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous Integration
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
 
Model Driven Architecture
 Model Driven Architecture Model Driven Architecture
Model Driven Architecture
 
Master thesis pascal_mueller05
Master thesis pascal_mueller05Master thesis pascal_mueller05
Master thesis pascal_mueller05
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
 
Refactoring Rails Applications
Refactoring Rails ApplicationsRefactoring Rails Applications
Refactoring Rails Applications
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Security Scanner Design am Beispiel von httprecon
Security Scanner Design am Beispiel von httpreconSecurity Scanner Design am Beispiel von httprecon
Security Scanner Design am Beispiel von httprecon
 
AOP mit PostSharp
AOP mit PostSharpAOP mit PostSharp
AOP mit PostSharp
 
PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie Datenbankalternative
 
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAYPLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und Reflection
 
Tools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und FehlerzuständenTools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Ecm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forgeEcm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forge
 
Modularisierung - was soll das?
Modularisierung - was soll das?Modularisierung - was soll das?
Modularisierung - was soll das?
 
Schnelleinstieg in Angular
Schnelleinstieg in AngularSchnelleinstieg in Angular
Schnelleinstieg in Angular
 

Mehr von AndreasKleffel

Mehr von AndreasKleffel (7)

Quality Spy Concept
Quality Spy ConceptQuality Spy Concept
Quality Spy Concept
 
docs+lists - software specification tool
docs+lists - software specification tooldocs+lists - software specification tool
docs+lists - software specification tool
 
Softwaretest Grundlagen
Softwaretest GrundlagenSoftwaretest Grundlagen
Softwaretest Grundlagen
 
System Composer
System ComposerSystem Composer
System Composer
 
Testplan
TestplanTestplan
Testplan
 
Introducing Usage Tracking
Introducing Usage TrackingIntroducing Usage Tracking
Introducing Usage Tracking
 
Quality Spy Overview
Quality Spy OverviewQuality Spy Overview
Quality Spy Overview
 

Trace Markers

  • 1. Trace Markers Softwarespezifikation TraceMarkers 19.1.2013, Andreas Kleffel Bearbeitet 6.4. 2013 Trace Markers ist eine API, die es erlaubt .NET Assemblies auf Marker-Attribute zu scannen. Marker-Attribute sind solche Attribute, die Metadaten in den Source Code einweben und in der Regel zur Ausführung des Programms nicht nötig sind. Beispiele für solche Metadaten wären: Konzeptionelle Funktionen Features Akteure Aspekte Bugfixes Workarounds Sicherheitsrelevanter Code … Ein Marker-Attribut sollte dabei folgende Struktur aufweisen: Einen eindeutigen, kollisionsfreien Namen, auch ohne Namespace Einen Konstruktor, der das Attribut als Konstante einfügt Ein Beispiel für ein gültiges Marker-Attribut wäre: Ein Beispiel für das Einweben der Metadaten wäre dann: -1-
  • 2. Trace Markers Softwarespezifikation Trace Markers wurde für das Tracing von Spezifikations-Funktionen im Source Code konzipiert – sprich: System Composer (bei der Entwicklung noch „DonkeySpecs“ genannt). Es ist jedoch eine eigenständige Komponente, die nicht von System Composer abhängt. Als Ergebnis eines Tracings/einer Analyse werden Klassen, Methoden / Funktionen Markern zugewiesen. Das Marker-Objekt beinhaltet lediglich eine ID (extrahiert aus dem Konstruktor oder einem Property des Marker-Attributes) und ist somit für beliebige Marker einsetzbar: Das eigentliche Tracing kann auf zwei Arten passieren: Via Reflection Via PDB (mit Hilfe der CCI, Common Compiler Infrastructure) -2-
  • 3. Trace Markers Softwarespezifikation Die Analyse der Attribute via Reflection ist die erste nahe liegende Variante, die mit .NET-Boardmitteln durchgeführt werden kann. Leider können damit nicht die Quelldateien der Klassen ermittelt werden, weshalb eine zweite Strategie die PDB-Dateien der untersuchenden Assembly mit einbezieht. Dazu wird das Microsoft-Projekt Common Compiler Infrastructure: Metadata API verwendet. 1 Die PDB-Strategie ist prinzipiell langsamer, weshalb die Reflection-Strategie weiterhin angeboten wird. Man kann auswählen, ob man den schnelleren und oder detailierteren Analyzer benötigt. Diese Analyzer-Klassen können per API direkt verwendet werden. Jedoch bietet Trace Markers die Möglichkeit den Aufruf in einem separaten Workerprozess zu bearbeiten, dadurch ist die Analyse vollständig vom Caller isoliert und ggf. geladene Typen werden nach der Analyse wieder entladen. Ablauf: 1 http://ccimetadata.codeplex.com/ -3-
  • 4. Trace Markers Softwarespezifikation Was kompliziert aussieht ist lediglich ein Methodenaufruf: var result = IsolatedAnalysis.Run(runnerPath, link, AnalysisStrategy.CCI); Zusammenfassung Akteure Anderes Programm, z.B. DonkeySpecs Features Analysieren von .NET-Assemblies auf Marker-Attribute in Klassen und Methoden Separater EXE-Runner zur isolierten Ausführung der Analyse Einbeziehung von PDBs zur Zuordnung Source Location (File, Line Number) XML-API via Console.Out leicht abzufragen (evtl. Caching von Analyse-Ergebnisssen) Funktionen Isolated Tracing Simple Tracing Reflection-basiertes Tracing PE/PDB-basiertes Tracing -4-