www.wikidata.de-de.nina.az
Dieser Artikel oder Abschnitt bedarf einer grundsatzlichen Uberarbeitung Naheres sollte auf der Diskussionsseite angegeben sein Bitte hilf mit ihn zu verbessern und entferne anschliessend diese Markierung Cross Cutting Concern CCC ist ein Begriff der Informatik der im Kontext des Teile und Herrsche Prinzips so genannte querschnittliche Belange einer Software bezeichnet die deshalb nicht einfach modularisiert werden konnen weil herkommliche Modularisierungsansatze insbesondere die Objektorientierung nicht greifen Meist sind es nichtfunktionale Anforderungen an Software wie etwa Sicherheitsaspekte die bei konventioneller Programmierung quer verstreut uber den gesamten Code realisiert werden beispielsweise immer wiederkehrende Prufungen der Form darf dieser Code gerade ausgefuhrt werden Die Aspektorientierte Programmierung AOP bietet die Moglichkeit solchen Code zentral zu formulieren Gleichzeitig mussen Regeln dafur angegeben werden wie dieser Code automatisch an den richtigen Stellen eingewoben oder ausgefuhrt werden kann Die kostengunstige und termingerechte Entwicklung und Wartung qualitativ hochwertiger Software ist das Primarziel der Softwaretechnik Um dieses Ziel zu erreichen ist eine moglichst gut modularisierte Software mit einer moglichst geringen Komplexitat notwendig In einem konventionellen System wobei hier auch die objektorientierten Ansatze hinzugehoren konnen Kernfunktionalitaten fur sich allein betrachtet nach den Regeln der Kunst sauber in Module getrennt werden Es gibt jedoch Anforderungen wie Fehlerbehandlung Performance und Sicherheit in jedem System die alle Kernfunktionalitaten betreffen und sich deshalb nicht eindeutig einem Software Modul zuordnen lassen Dies fuhrt dazu dass Fragmente solcher querschnittlicher Funktionen aufgrund fehlender Kohasion nicht zugeordnet und ungekapselt im ganzen Code verstreut sind Diese Anforderungen verhindern in konventionellen Software Systemen eine saubere Modularisierung und beeintrachtigen Pflege Verstandlichkeit Wiederverwendbarkeit und Ruck Verfolgbarkeit Verantwortlich hierfur ist bei konventionellen Programmiersprachen die Systemdekomposition die nur eine Dimension zulasst In diesem Zusammenhang spricht man auch von dominanter Dekomposition d h ein naturlicherweise mehrdimensionales Problem muss eindimensional gelost werden Inhaltsverzeichnis 1 Identifikation Separation und Integration 1 1 Identifikation 1 2 Separation 1 3 Integration 2 Ziel 3 Anforderung 4 Concerns 4 1 Begriffsdefinition 4 2 Kategorisierung von Concerns 4 3 Core Concerns und Crosscutting Concerns 4 3 1 Definition Core Concerns 4 3 2 Definition Crosscutting Concerns 4 4 Separation of Concerns 4 5 Scattering und Tangling 4 5 1 Definition Scattering 4 5 2 Definition Tangling 5 Literatur 6 WeblinksIdentifikation Separation und Integration BearbeitenJeder Entwicklungsprozess mit Aspektorientierung besteht aus den drei grundlegenden Phasen Identifikation Separation und Integration Identifikation Bearbeiten In der Phase der Identifikation werden die relevanten Core Concerns und ubergreifende Anforderungen Cross Cutting Concerns mit Hilfe von verschiedenen Verfahren erkannt Separation Bearbeiten In der Phase der Separation geht es darum alle Concerns unabhangig voneinander zu definieren wenn notwendig zu operationalisieren modular zu entwerfen und zu implementieren Das Stichwort hierzu heisst Separation of Concerns und wird auf Edsger W Dijkstra 1976 zuruckgefuhrt Solcherart modular implementierte Core Concerns Kernfunktionalitaten werden Komponenten genannt modular implementierte Cross Cutting Concerns werden als Aspekte bezeichnet Auch in konventionellen Ansatzen sind durchaus Moglichkeiten zur Separation of Concerns vorhanden zum Beispiel im Bereich von nichtfunktionalen Anforderungen jedoch beschranken sie sich dort auf die Identifikation Spezifikation und Operationalisierung Daneben mussen in der Phase der Separation auch die Integrationsregeln definiert werden nach denen die Concerns spater zum Gesamtsystem zusammengefugt werden sollen Obwohl David Parnas den Begriff in seinem Essay On the Criteria To Be Used in Decomposing Systems into Modules 1972 nicht explizit erwahnt wird die Erfindung des Begriffs Separation of Concerns oft jedoch in der Literatur ihm zugeschrieben Integration Bearbeiten In der Phase der Integration werden die fertig implementierten Komponenten und Aspekte anhand der Integrationsregeln zum Gesamtsystem zusammengefugt Speziell in der Programmierung mit Aspektorientierung wird die Integration mit weaving Weben bezeichnet In einigen Ansatzen wird die Integration auch Komposition englisch composition genannt was keinesfalls mit der gleichnamigen Assoziation im Unified Modeling Language Klassendiagramm gleichgesetzt werden darf Ziel BearbeitenZiel der Aspektorientierung ist es die Integration im Entwicklungsprozess moglichst lange hinauszuzogern Dadurch differenzieren sich wesentlich auch die konventionellen von den Ansatzen mit Aspektorientierung Bei den konventionellen Ansatzen erfolgt die Integration notgedrungen bereits in der Entwurfsphase weil die entsprechenden Programmiersprachen keine Moglichkeiten haben uberlappende Concerns in mehreren Dimensionen zu realisieren Bei den aspektorientierten Ansatzen bleiben die Concerns auch wahrend der Entwurfs und Implementierungsphase noch getrennt und werden je nach Ansatz zur Ubersetzungs oder zur Laufzeit zusammengefugt Dies bietet den Vorteil dass die einzelnen Aspekte im Quellcode immer noch sauber modularisiert sind was die Wiederverwendung die Verstandlichkeit und die Ruck Verfolgbarkeit verbessert Anforderung BearbeitenEin Cross Cutting Concern ist eine Anforderung an ein Softwareprodukt die modulubergreifend einzuhalten oder umzusetzen ist Beispiele fur Cross Cutting Concerns sind Fehlerbehandlung Logging Tracing und Sicherheitsanforderungen Typischerweise gehoren sie nicht zur Kernfunktionalitat der Software sondern stellen Zusatz oder Metaanforderungen dar Damit ergibt sich auch eine besondere Problematik bei vielen Softwareprojekten mit grosserer Mitarbeiterzahl konzentrieren sich die Entwickler primar auf die Kernfunktionalitat gleichzeitig erfordert die Implementierung von Cross Cutting Concerns einen hohen Anpassungs und Koordinierungsaufwand Moglichkeiten zur Losung dieses Problems bestehen in der Auswahl geeigneter Softwareentwicklungsprozesse etwa generative Programmierung die Verwendung spezifischer Frameworks und Sprachen und die Verwendung von Patterns wie Mix in Klassen oder Aspekten Concerns BearbeitenBegriffsdefinition Bearbeiten Obwohl der Concern Begriff mehr oder weniger verstandlich ist ist es schwierig in der Literatur eine Definition zu finden Haufig wird der Begriff namlich nicht definiert sondern lediglich anhand von Aufzahlungen eingefuhrt so zum Beispiel in Mehmet Aksits Lodewijk Bergmans 2001 concerns such as access control synchronization Gegenstand der Betrachtung Starkes Interesse oder Beachtung englisch regard ublicherweise aufgrund einer personlichen Bindung oder Beziehung Merriam Webster 2004 Irgendeine Sache die an einem Software System interessiert Stan Sutton Isabelle Rouvellou 2002 Irgendeine Sache die an einem System interessiert d h ein Ziel oder eine Menge von Eigenschaften die das System erfullen muss Isabel Sofia Brito Ana Moreira 2004 Belang englisch interest welcher die Entwicklung oder den Betrieb eines Systems betrifft oder irgendein anderer Aspekt der fur einen oder mehrere Beteiligte englisch stakeholder kritisch oder sonst wichtig ist IEEE 2000 Spezifische Anforderung oder Gesichtspunkt welche r in einem Software System behandelt werden muss um die ubergreifenden Systemziele zu erreichen Ramnivas Laddad 2003 Massgebliches Systemziel auf oberster Ebene das ublicherweise aus den kritischen Geschaftszielen des Auftraggebers abgeleitet wird Ian Sommerville Peter Sawyer 1997 Die Definitionen widersprechen sich nicht sondern setzen lediglich andere Schwerpunkte Welche Definition sich am besten eignet erfolgt anhand der folgenden beiden Merkmale Herkunft Die Bedeutung des Worts Concern Anforderungen deutet darauf hin dass Concerns etwas sind wofur sich die an der Entstehung eines Systems Beteiligten im Allgemeinen und der Auftraggeber im Besonderen Interesse zeigen die sie personlich betreffen und daher nicht ignorieren Die Definition des Concern Begriffs soll folglich eine Aussage daruber machen woher Concerns kommen namlich dass Concerns aus Anliegen oder Anforderungen von Beteiligten resultieren Bezugspunkt Concerns werden nicht zum Selbstzweck definiert sondern sind verbindliche Vorgaben fur die Gestaltung eines Systems Also soll die Definition des Concern Begriffs auch eine Aussage treffen worauf sich Concerns beziehen in unserem Fall auf Software Systeme Im Sinne von Ramnivas Laddad 2003 ist ein Software System nichts anderes als die Realisierung einer Menge von Concerns Vorgaben die sich nicht auf das System sondern auf den Entwicklungsprozess beziehen zum Beispiel Zeit und Kostenvorgaben sind in diesem Sinne keine Concerns Die Definition von Ramnivas Laddad wird hier favorisiert da diese am pragnantesten Herkunft Anforderung um die Systemziele zu erreichen als auch den Bezugspunkt Software System umfasst Kategorisierung von Concerns Bearbeiten Es ist schwierig den Concern Begriff sinnvoll einzuordnen da er nicht ganz exakt definiert ist und es vom Auftraggeber abhangt was er als Anforderung Concern betrachtet und was nicht Dies hat zur Folge dass instabile Kategorien entstehen konnen die sich in den jeweiligen Situation andern Aus diesem Grund wird von einer Kategorisierung mit Ausnahme der Aufteilung in Core Concerns und Crosscutting Concerns abgesehen Die folgende Kategorisierung zeigt auf weshalb es problematisch ist Concerns zu kategorisieren Nach Joao Araujo et al 2002 gibt es quer schneidende Kernfunktionalitaten Crosscutting Concerns auf der Anforderungsebene zum Beispiel Sicherheit Antwortzeit und Crosscutting Concerns auf der Entwurfs Implementierungsebene aufgrund von technologischen Einschrankungen zum Beispiel Synchronisation Fehlerbehandlung Die Grenze zwischen Anforderungen und Entwurfsentscheidungen ist fliessend und hangt vom Auftraggeber ab Abhangig davon wie diese Grenze im Einzelfall gezogen wird gehoren die Concerns zur jeweiligen Kategorie an Core Concerns und Crosscutting Concerns Bearbeiten Ramnivas Laddad 2003 unterscheidet zwischen Kernfunktionalitaten Core Concerns und quer schneidende Kernfunktionalitaten Crosscutting Concerns Definition Core Concerns Bearbeiten Realisieren die Kernfunktionalitat eines Systems Definition Crosscutting Concerns Bearbeiten Realisieren diejenigen Funktionen eines Systems welche die Core Concerns Kernfunktionalitaten oder andere Crosscutting Concerns quer schneiden beispielsweise Logging oder Authentisierung Zwei Concerns sind crosscutting wenn sich Methoden dieser Concerns schneiden Tzilla Elrad et al 2001 Laut Tzilla Elrad u a 2001 sollte man immer berucksichtigen dass Anforderungen Concerns immer nur relativ zu einer bestimmten Dekomposition crosscutting sind Die Unterscheidung zwischen Core und Crosscutting Concerns ist nicht in allen Ansatzen gleichermassen bedeutend So werden beispielsweise in der Hyper J und Multi Dimensional Separation of Concerns MDSOC alle Concerns ausdrucklich gleich behandelt und es wird nicht zwischen Kernfunktionalitaten und quer schneidende Kernfunktionalitaten unterschieden Solche Ansatze werden auch symmetrisch genannt wahrend Ansatze die zwischen Core Concerns und Crosscutting Concerns unterscheiden asymmetrisch genannt werden Separation of Concerns Bearbeiten Verschiedene Elemente der Aufgabe sollten moglichst in verschiedenen Elementen der Losung reprasentiert werden Scattering und Tangling Bearbeiten Definition Scattering Bearbeiten Eine einzelne Anforderung Concern wirkt sich auf mehrere Entwurfs und Code Module aus Scattering fuhrt einerseits zu redundanten oder zumindest ahnlichen Code Blocken in allen betroffenen Modulen und damit leider zu einer schlechten Pflegbarkeit sowie zu einer hohen Fehleranfalligkeit bei Modifikationen Anderseits ist es kaum moglich zu verfolgen in welchen Modulen eine bestimmte Anforderung implementiert wurde Tangling Durcheinander bezieht sich auf ein einzelnes Modul und entsteht wenn dieses Modul die Implementierungen mehrerer Fragmente von Concerns enthalt Peri Tarr et al 1999 definierte wie folgt Definition Tangling Bearbeiten Code Fragmente die mehrere Anforderungen betreffen sind in einem einzelnen Modul vermischt Tangling fuhrt erstens zu schlecht lesbarem Code was negative Auswirkungen auf die Pflegbarkeit und damit indirekt auch auf die Lebensdauer und die Wirtschaftlichkeit der Software hat Zweitens sind von Tangling betroffene Module schlecht wiederverwendbar da sie mehrere Fragmente der Concerns enthalten Und drittens ist es schwierig bis unmoglich zuruckzuverfolgen welche Concerns ein bestimmtes Modul implementiert Literatur BearbeitenJ Araujo J Whittle D K Kim Modeling Composing and Validating Scenario Based Requirements with Aspects In Proceedings of the 12th IEEE International Requirements Engineering Conference Kyoto Japan 2004 L Bergmans M Aksit Composing Crosscutting Concerns using Composition Filters In Communications of the ACM Oktober 2001 Vol 44 No 10 51 57 A Black N Hutchinson E Jul H Levy Object Structure in the Emerald System In Proceedings of the Object Oriented Programming Systems Languages and Applications OOPSLA 86 ACM Press Portland Oregon USA 1986 78 86 A Bryant A Catton K De Volder G C Murphy Explicit Programming in Proceedings of the 1st International Conference on Aspect Oriented Software Development AOSD 2002 ACM Press Enschede Niederlande 2002 10 18 S R Chidamber C F Kemerer A Metric Suite for Object Oriented Design In IEEE Transactions on Software Engineering Vol 20 Issue 6 IEEE Press Piscataway New Jersey USA 1994 476 493 L Chung B A Nixon E Yu J Mylopoulos Non functional Requirements in Software Engineering Kluwer Academic Publishers Boston Dordrecht London 2000 S Clarke W Harrison H Ossher P Tarr Subject Oriented Design Towards Improved Alignment of Requirements Design and Code In Proceedings of the Object Oriented Programming Systems Languages and Applications OOPSLA 99 Denver Colorado USA 1999 325 339 S Clarke R J Walker Separating Crosscutting Concerns Across the Lifecycle From Composition Patterns to AspectJ and Hyper J Technical Report TCD CS 2001 15 and UBC CS TR 2001 05 Trinity College Dublin Ireland and University of British Columbia Vancouver Canada 2001 S Clarke R J Walker Composition Patterns An Approach to Designing Reusable Aspects In Proceedings of the 23rd International Conference on Software Engineering ICSE 2001 IEEE Computer Society Press Toronto Ontario Canada 2001 5 14 Constantinides C A A Bader T H Elrad M E Fayad P Netinant Designing an Aspect Oriented Framework in an Object Oriented Environment In ACM Computing Surveys CSUR Vol 32 Issue 1es ACM Press 2000 Article No 41 J A Diaz Pace M R Campo Analyzing the Role of Aspects in Software Design In Communications of the ACM Oktober 2001 Vol 44 No 10 67 73 E W Dijkstra Go To Statement Considered Harmful In Communications of the ACM Marz 1968 Vol 11 No 3 147 148 E W Dijkstra A Discipline of Programming Prentice Hall Englewood Cliffs New Jersey 1976 T Elrad R E Filman A Bader Guest Editors Aspect Oriented Programming In Communications of the ACM Oktober 2001 Vol 44 No 10 29 32 T Elrad M Aksit G Kiczales K Lieberherr H Ossher Panelists Discussing Aspects of AOP In Communications of the ACM Oktober 2001 Vol 44 No 10 33 38 E Gamma R Helm R Johnson J Vlissides Entwurfsmuster Elemente wiederverwendbarer objektorientierter Software Addison Wesley 1996 ISBN 3 8273 2199 9 G Georg I Ray R France Using Aspects to Design a Secure System In Proceedings of the 8th International Conference on Engineering Complex Computing Systems ICECCS 2002 ACM Press Greenbelt Maryland USA 2002 117 128 J Grundy Aspect oriented Requirements Engineering for Component based Software Systems In Proceedings of the 4th IEEE International Symposium on Requirements Engineering RE 1999 IEEE Computer Society Press Limerick Ireland 1999 84 91 G Kiczales J Lamping A Mendhekar C Maeda C Videira Lopes J M Loingtier J Irwin Aspect Oriented Programming In Proceedings of the 11th European Conference on Object Oriented Programming ECOOP 1997 Springer Verlag Jyvaskyla Finland 1997 Lecture Notes in Computer Science 1241 220 242 G Kiczales E Hilsdale J Hugunin M Kersten J Palm W G Griswold An Overview of AspectJ In Proceedings of the 15th European Conference on Object Oriented Programming ECOOP 2001 Springer Verlag Budapest Ungarn 2001 Lecture Notes in Computer Science 2072 327 353 G Kiczales E Hilsdale J Hugunin M Kersten J Palm W G Griswold Getting Started with AspectJ In Communications of the ACM Oktober 2001 Vol 44 No 10 59 65 R Klosch H Gall Objektorientiertes Reverse Engineering Von klassischer zu objektorientierter Software Springer Verlag Berlin Heidelberg 1995 ISBN 3 540 58374 2 R Laddad AspectJ in Action Practical Aspect Oriented Programming Manning Publications Co 2003 K Lieberherr D Orleans J Ovlinger Aspect Oriented Programming with Adaptive Methods In Communications of the ACM Oktober 2001 Vol 44 No 10 39 41 G C Murphy R J Walker E L A Baniassad M P Robillard A Lai M A Kersten Does Aspect Oriented Programming Work In Communications of the ACM Oktober 2001 Vol 44 No 10 75 77 P Netinant T Elrad M E Fayad A Layered Approach to Building Open Aspect Oriented Systems In Communications of the ACM October 2001 Vol 44 No 10 83 85 M Nishizawa S Chiba M Tatsubori Remote Pointcut A Language Construct for Distributed AOP In Proceedings of the 3rd International Conference on Aspect Oriented Software Development AOSD 2004 ACM Press Lancaster UK 2004 7 15 B Oestereich Objektorientierte Softwareentwicklung Analyse und Design mit der Unified Modeling Language Oldenbourg Verlag Munchen Wien 2001 ISBN 3 486 27266 7 D Orleans K Lieberherr DJ Dynamic Adaptive Programming in Java In Proceedings of the 3rd International Conference on Meta level Architectures and Separation of Crosscutting Concerns Reflection 2001 Springer Verlag 2001 Kyoto Japan 73 80 H Ossher P Tarr Using Multidimensional Separation of Concerns to Re Shape Evolving Software In Communications of the ACM Oktober 2001 Vol 44 No 10 43 50 D L Parnas On the Criteria To Be Used in Decomposing Systems into Modules In Communications of the ACM Dezember 1972 Vol 15 No 12 1053 1058 A Rashid P Sawyer A Moreira J Araujo Early Aspects A Model for Aspect Oriented Requirements Engineering In Proceedings of the IEEE Joint International Conference on Requirements Engineering RE 2002 IEEE Computer Society Press 2002 Essen Germany 199 202 A Rashid A Moreira J Araujo Modularisation and Composition of Aspectual Requirements in Proceedings of the 2nd International Conference on Aspect oriented Software Development AOSD 2003 ACM Press 2003 Boston Massachusetts USA 11 20 A Rashid R Chitchyan Persistence as an Aspect In Proceedings of the 2nd International Conference on Aspect Oriented Software Development AOSD 2003 ACM Press 2003 Boston Massachusetts USA 120 129 I Sommerville Software Engineering 6 Auflage Pearson Studium Munchen 2001 ISBN 3 8273 7001 9 G T Sullivan Aspect Oriented Programming Using Reflection and Metaobject Protocols In Communications of the ACM Oktober 2001 Vol 44 No 10 95 97 J J Sung K Lieberherr DAJ A Case Study of Extending AspectJ Technical Report UCCS 02 16 Northeastern University Boston Massachusetts USA 2002 S M Sutton Jr I Rouvellou Modeling of Software Concerns in Cosmos In Proceedings of the 1st International Conference on Aspect Oriented Software Development AOSD 2002 ACM Press Enschede Niederlande 2002 127 133 P Tarr H Ossher W Harrison S M Sutton Jr N Degrees of Separation Multi Dimensional Separation of Concerns In Proceedings of the 21st International Conference on Software Engineering ICSE 1999 IEEE Computer Society Press Los Angeles CA 1999 107 119Weblinks BearbeitenL Bergmans M Aksit Composing Multiple Concerns Using Composition Filters 2001 abgerufen am 24 Juli 2004 Peri Tarr u a Multi Dimensional Separation of Concerns Software Engineering using Hyperspaces Abgerufen von https de wikipedia org w index php title Cross Cutting Concern amp oldid 206359252