پیشنویس:نگرانی مقطعی فرابخشی
در توسعه نرمافزار جنبهگرا(AOP) ، نگرانیهای مقطعی جنبههایی از یک برنامه هستند که بر چندین ماژول تأثیر میگذارند، که امکان کپسوله کردن (تلفیق کردن) آن نگرانی ها یا عملیات در هیچ یک از آن ماژول ها وجود نداشته باشد. این نگرانیها اغلب نمیتوانند در طراحی و پیادهسازی از بقیه سیستم جدا شوند و میتوانند منجر به پراکندگی ( تکثیر کد )، درهمرفتن اشیا و مسئولیت ها (وابستگیهای قابل توجه بین سیستمها) یا هر دو شوند.
به عنوان مثال، اگر در نوشتن یک برنامه کاربردی برای رسیدگی به سوابق پزشکی ، نمایه سازی و نگهداری این سوابق یک نگرانی اساسی است، در همین حال، ثبت سابقه تغییرات سوابق پزشکی بیمار در پایگاه داده تغییرات یا پایگاه داده کاربر، یا عملیات سیستم احراز هویت، نگرانی های مقطعی خواهند بود زیرا این عملیات و نگرانی ها با بخش های زیاد و متنوعی از برنامه در تعامل هستند.
زمینه
ویرایشنگرانی های مقطعی بخش هایی از یک برنامه هستند که بر بسیاری از بخش های دیگر سیستم متکی هستند یا بر آن تأثیر می گذارند. آنها اساس توسعه جنبه ها را تشکیل می دهند. [۱] چنین نگرانی های مقطعی به طور شفاف و واضح در برنامه نویسی شی گرا یا برنامه نویسی رویه ای نمی گنجد. [۲]
نگرانی های مقطعی می توانند مستقیماً مسئول درهم تنیدگی یا وابستگی های متقابل سیستم در یک برنامه باشند. از آنجایی که ساختارهای زبان رویه ای و عملکردی به طور کامل از فراخوانی رویه(صدا زدن یک پروسه یا رویه که مسول انجام یک کار مشخص و معین می باشد) تشکیل شده اند، هیچ معنایی وجود ندارد که از طریق آن دو هدف (قابلیت اجرا و نگرانی میان مقطعی مرتبط) بتوان به طور همزمان مورد توجه قرار گیرد. [۳] در نتیجه، کدی که به نگرانی متقاطع رسیدگی میکند باید در مکانهای مختلف مرتبط پراکنده یا تکراری شود، که در نتیجه ماژولاریت از بین میرود. [۲]
هدف برنامه نویسی جنبه گرا این است که برای حفظ ماژولار بودن سیستم و کد ، نگرانی های متقابل را در جنبه هایی که به همان منظور خاص طراحی و پیاده سازی شده اند محصور کند . این امکان جداسازی تمیز و استفاده مجدد از کد را فراهم می کند تا به نگرانی های مقطعی رسیدگی کند. [۴] با استناد به طرح ها بر روی نگرانی های مقطعی، مزایای مهندسی نرم افزار می تواند شامل مدولار بودن و تعمیر و نگهداری ساده باشد. [۵]
مثال ها
ویرایشنمونههایی از نگرانیهایی که معمولاً مقطعی هستند اما ممکن است در جاهای مختلف سیستم نیاز باشند عبارتند از:
- قوانین تجارت
- ذخیره سازی
- تحرک کد
- اعتبار سنجی داده ها
- بهینه سازی های اختصاصی دامنه
- متغیرهای محیطی و سایر تنظیمات پیکربندی جهانی
- تشخیص و تصحیح خطا
- بین المللی سازی و بومی سازی که شامل بومی سازی زبان است
- امنیت اطلاعات
- ورود به سیستم
- مدیریت حافظه
- نظارت بر
- ماندگاری
- مشخصات محصول
- محدودیت های زمان واقعی
- هماهنگ سازی
- پروسه جابجایی پول
- کمک حساس به زمینه
- حریم خصوصی
- امنیت رایانه
همچنین ببینید
ویرایش- تفکیک نگرانی ها
- برنامه نویسی جنبه گرا
- بازسازی کد (نرم افزار بازسازی ساختار)
- عادی سازی پایگاه داده (به حداقل رساندن داده های تکراری بیهوده)
- ارث چندگانه
- میکروسرویس ها
- متعامد سازی (هنجارسازی ریاضی)
منابع
ویرایشکتابشناسی - فهرست کتب
ویرایش- Kiczales, Gregor; Lamping, John; Mendhekar, Anurag; Maeda, John; Lopes, Cristina; Longtier, Jean-Marc; Irwin (1997). "Aspect-Oriented Programming". Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP 1997): 220–242.
- Li, Harry; Krishnamurthi, Shriram; Fisler, Kathi (2002). "Verifying Cross-Cutting Features as Open Systems". ACM SIGSOFT Software Engineering Notes. 27 (6): 89–98. CiteSeerX 10.1.1.8.9445. doi:10.1145/605466.605481.
- Parnas, David L. (December 1972). "On the Criteria To Be Used in Decomposing Systems into Modules". Communications of the ACM. 15 (12): 1053–1058. CiteSeerX 10.1.1.90.8963. doi:10.1145/361598.361623.
بیشتر خواندن
ویرایش- Laddad, R. (2003): AspectJ in Action, Practical Aspect Oriented Programming, Manning Publications Co.
لینک های خارجی
ویرایش- واژه نامه AOSD.net از اصطلاحات جنبه گرا (از طریق Internet Archive Wayback Machine ؛ AOSD.net به Modularity تبدیل شده است).
- AspectJ [۱] ، یک پسوند جنبه گرا برای زبان برنامه نویسی جاوا
- برگمانز، ال.، ام. آکسیت (2001): نوشتن نگرانی های متعدد با استفاده از فیلترهای ترکیب، https://web.archive.org/web/20170909131212/http://trese.cs.utwente.nl/ (24 ژوئیه 2004)
- برگ، کی. ون دن، کونجرو، جی و چیتچیان، آر (2005). AOSD هستی شناسی 1.0 - هستی شناسی عمومی جهت گیری جنبه. AOSD Europe Network of Excellence، http://eprints.eemcs.utwente.nl/10220/01/BergConChi2005.pdf
- در اینجا نمونه ای از رسیدگی به یک نگرانی متقابل آمده است: https://web.archive.org/web/20161220151503/https://www.captechconsulting.com/blogs/a-persistence-pattern-using-threadlocal-and- رهگیرهای ejb