Problem przekrojowy - Cross-cutting concern
W rozwoju oprogramowania zorientowane aspekt , obawy przekrojowe są aspekty o programie , które wpływają na inne obawy . Obawy te często nie mogą być wyraźnie oddzielone od reszty systemu zarówno podczas projektowania, jak i implementacji, i mogą skutkować rozproszeniem ( duplikacją kodu ), plątaniną (znaczne zależności między systemami) lub obydwoma.
Na przykład, jeśli pisanie aplikacji do obsługi dokumentacji medycznej , indeksowanie takich rekordów jest głównym problemem , podczas gdy rejestrowanie historii zmian w bazie danych rekordów lub bazie danych użytkowników lub systemie uwierzytelniania byłoby problemem przekrojowym, ponieważ wchodzą w interakcje z większą liczbą części programu.
Tło
Problemy przekrojowe to części programu, które opierają się lub muszą wpływać na wiele innych części systemu. Stanowią podstawę do rozwoju aspektów . Takie przekrojowe problemy nie pasują do programowania obiektowego lub programowania proceduralnego .
Problemy przekrojowe mogą być bezpośrednio odpowiedzialne za plątanie lub współzależności systemowe w ramach programu . Ponieważ proceduralne i funkcjonalne konstrukcje językowe składają się wyłącznie z wywoływania procedur, nie ma semantyki, za pomocą której można by jednocześnie zająć się dwoma celami (możliwością do zaimplementowania i powiązanymi problemami przekrojowymi). W rezultacie kod odnoszący się do problemu przekrojowego musi być rozproszony lub zduplikowany w różnych powiązanych lokalizacjach, co skutkuje utratą modułowości .
Programowanie zorientowane aspektowo ma na celu ujęcie przekrojowych problemów w aspekty w celu zachowania modułowości. Pozwala to na czystą izolację i ponowne użycie kodu rozwiązującego problem przekrojowy. Opierając projekty na zagadnieniach przekrojowych, korzyści płynące z inżynierii oprogramowania mogą obejmować modułowość i uproszczoną konserwację.
Przykłady
Przykłady obaw, które zwykle mają charakter przekrojowy, obejmują:
- Zasady biznesowe
- Buforowanie
- Mobilność kodu
- Walidacji danych
- Optymalizacje specyficzne dla domeny
- Zmienna środowiskowa
- Wykrywanie i korekcja błędów
- Internacjonalizacja i lokalizacja obejmująca lokalizację językową
- Bezpieczeństwo informacji
- Logowanie
- Zarządzanie pamięcią
- Monitorowanie
- Trwałość
- Cechy produktu
- Ograniczenia w czasie rzeczywistym
- Synchronizacja
- Przetwarzanie transakcji
- Pomoc kontekstowa
Zobacz też
- Separacja obaw
- Programowanie aspektowe
- Refaktoryzacja kodu (oprogramowanie restrukturyzujące)
- Normalizacja bazy danych (minimalizacja niepotrzebnie replikowanych danych)
- Dziedziczenie wielokrotne
- Mikroserwisy
- Ortogonalizacja (normalizacja matematyczna)
Bibliografia
Bibliografia
- Kiczales, Gregor; Oświetlenie, John; Mendhekar, Anurag; Maeda, Jan; Lopes, Cristina; Longtier, Jean-Marc; Irwina (1997). "Programowanie aspektowe". Materiały z 11. Europejskiej Konferencji Programowania Obiektowego (ECOOP 1997) : 220–242.
- Patent USA 6467086 , Kiczales i in. al, " Programowanie aspektowe ", wydany 15.10.2002
- Li, Harry; Krishnamurthi, Shriram; Fisler, Kathi (2002). „Weryfikacja funkcji przecinania jako systemów otwartych”. ACM SIGSOFT Uwagi dotyczące inżynierii oprogramowania . 27 (6): 89–98. CiteSeerX 10.1.1.8.9445 . doi : 10.1145/605466.605481 . S2CID 52835673 .
- Parnas, David L. (grudzień 1972). „O kryteriach stosowanych w rozkładaniu systemów na moduły”. Komunikaty ACM . 15 (12): 1053–1058. CiteSeerX 10.1.1.90.8963 . doi : 10.1145/361598.361623 . S2CID 53856438 .
- Tarr, Peri; Ossher, Harold; Harrisona, Williama; Sutton, Stanley M., Jr. (1999). N Stopnie separacji: wielowymiarowa separacja obaw . Materiały XXI Międzynarodowej Konferencji Inżynierii Oprogramowania . Los Angeles, Kalifornia, USA: IEEE Computer Society Press . s. 107-119. CiteSeerX 10.1.1.89.1641 . doi : 10.1109/ICSE.1999.841000 . Numer ISBN 978-1581130744.
Dalsza lektura
- Laddad, R. (2003): Aspekt J w działaniu, Praktyczne programowanie zorientowane na aspekt, Manning Publications Co.
Zewnętrzne linki
- Słownik terminów aspektowych AOSD.net (poprzez Internet Archive Wayback Machine ; AOSD.net stał się modułowością ).
- AspectJ [1] , zorientowane na aspekt rozszerzenie języka programowania Java
- Bergmans, L., M. Aksit (2001): Composing Multiple Concerns using Composition Filters, https://web.archive.org/web/20170909131212/http://trese.cs.utwente.nl/ (24 lipca 2004)
- Berg, K. van den, Conejero, J. i Chichyan, R. (2005). AOSD Ontology 1.0 – Publiczna Ontologia Orientacji Aspektowej. Europejska Sieć Doskonałości AOSD, http://eprints.eemcs.utwente.nl/10220/01/BergConChi2005.pdf
- Oto przykład rozwiązania problemu przekrojowego: https://web.archive.org/web/20161220151503/https://www.captechconsulting.com/blogs/a-persistence-pattern-using-threadlocal-and- ejb-przechwytywacze