Průřezový problém - Cross-cutting concern
v aspektově orientovaný vývoj softwaru, průřezové obavy jsou aspekty a program které ovlivňují ostatní obavy Tyto obavy často nemohou být čistě rozloženo od zbytku systému jak v návrhu, tak v implementaci, a může mít za následek obojí rozptyl (duplikace kódu ), zamotání (významné závislosti mezi systémy) nebo obojí.
Například pokud píšete aplikace pro manipulaci lékařské záznamy, indexování takových záznamů je a hlavní zájem, zatímco protokolování historie změn v databázi záznamů nebo v databázi uživatelů nebo v systému ověřování by byla průřezovými obavami, protože interagují s více částmi programu.
Pozadí
Průřezové problémy jsou části programu, které se spoléhají na nebo musí ovlivňovat mnoho dalších částí systému. Tvoří základ pro rozvoj aspekty.[1] Takové průřezové obavy do sebe čistě nezapadají objektově orientované programování nebo procedurální programování.[2]
Za průřezové záležitosti mohou být přímo odpovědné zamotánínebo vzájemné závislosti systému v rámci a program. Protože procesní a funkční jazyk konstrukce se skládají výhradně z volání procedur, neexistuje žádná sémantika, pomocí které by bylo možné současně řešit dva cíle (schopnost být implementována a související průřezový problém).[3] Výsledkem musí být kód řešící průřezový problém rozptýlenénebo duplikovány napříč různými souvisejícími místy, což vede ke ztrátě modularita.[2]
Aspektově orientované programování si klade za cíl zapouzdřit průřezové obavy do aspekty zachovat modularitu. To umožňuje čistou izolaci a opětovné použití kódu řešícího průřezový problém.[4] Zakládáním návrhů na průřezových obavách softwarové inženýrství Mezi výhody patří modularita a zjednodušená údržba.[5]
Příklady
Příklady obav, že tendence k průřezu patří:
- Obchodní pravidla
- Ukládání do mezipaměti
- Mobilita kódu
- Ověření dat
- Specifické pro doménu optimalizace
- Detekce a oprava chyb
- Internacionalizace a lokalizace který zahrnuje Jazyková lokalizace
- Informační bezpečnost
- Protokolování
- Správa paměti
- Monitorování
- Vytrvalost
- Vlastnosti produktu
- Omezení v reálném čase
- Synchronizace
- Zpracování transakce
- Kontextová nápověda
Viz také
- Oddělení obav
- Aspektově orientované programování
- Refaktorování kódu (restrukturalizační software)
- Normalizace databáze (minimalizujte zbytečně replikovaná data)
- Vícenásobné dědictví
- Mikroslužby
- Ortogonalizace (matematická normalizace)
Reference
- ^ Kiczales et. al 2002, str. 4
- ^ A b Kiczales a kol. 1997, str. 1
- ^ Kiczales a kol. 1997, str. 6
- ^ Kiczales a kol. 1997, str. 2
- ^ Li, Krishnamurthi & Fisler 2002, str. 1
Bibliografie
- Kiczales, Gregor; Lamping, John; Mendhekar, Anurag; Maeda, John; Lopes, Cristina; Longtier, Jean-Marc; Irwin (1997). „Aspect-Oriented Programming“. Sborník z 11. evropské konference o objektově orientovaném programování (ECOOP 1997): 220–242.CS1 maint: ref = harv (odkaz)
- US patent 6467086, Kiczales et. al, "Aspektově orientované programování ", vydaný 15. 10. 2002
- Li, Harry; Krishnamurthi, Shriram; Fisler, Kathi (2002). "Ověření průřezových funkcí jako otevřených systémů". Poznámky k softwarovému inženýrství ACM SIGSOFT. 27 (6): 89–98. CiteSeerX 10.1.1.8.9445. doi:10.1145/605466.605481.CS1 maint: ref = harv (odkaz)
- Parnas, David L. (prosinec 1972). "Kritéria, která se mají použít při rozkladu systémů na moduly". Komunikace ACM. 15 (12): 1053–1058. CiteSeerX 10.1.1.90.8963. doi:10.1145/361598.361623.
- Tarr, Peri; Ossher, Harold; Harrison, William; Sutton, Stanley M., Jr. (1999). N stupňů separace: Vícedimenzionální separace obav. Sborník z 21. mezinárodní konference o softwarovém inženýrství. Los Angeles, Kalifornie, USA: IEEE Computer Society Press. 107–119. CiteSeerX 10.1.1.89.1641. doi:10.1109 / ICSE.1999.841000. ISBN 978-1581130744.
Další čtení
- Laddad, R. (2003): AspectJ in Action, Practical Aspect-Oriented Programming, Manning Publications Co.
externí odkazy
- AOSD.net glosář aspektově orientovaný podmínky (prostřednictvím Internetový archiv Wayback Machine; AOSD.net se stal Modularita ).
- AspectJ [1], rozšíření orientované na Aspect Programovací jazyk Java
- Bergmans, L., M. Aksit (2001): Skládání více obav pomocí kompozičních filtrů, https://web.archive.org/web/20170909131212/http://trese.cs.utwente.nl/ (24. července 2004)
- Berg, K. van den, Conejero, J. a Chitchyan, R. (2005). AOSD Ontology 1.0 - Public Ontology of Aspect-Orientation. Síť excelence AOSD Europe, http://eprints.eemcs.utwente.nl/10220/01/BergConChi2005.pdf
- Zde je příklad řešení průřezového problému: https://web.archive.org/web/20161220151503/https://www.captechconsulting.com/blogs/a-persistence-pattern-using-threadlocal-and-ejb-interceptors