موضوع مقاله: توسعه نرم‌افزار جنبه‌گرا | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # توسعه نرم‌افزار جنبه‌گرا | مقدمه: در علم کامپیوتر ، توسعه نرم‌افزار جنبه گرا (AOSD) یک فرایند توسعه نرم‌افزار است که به دنبال پیمانه‌ای سازی جدید سامانه نرم‌افزار است تا توابع ثانویه یا توابع پشتیبان را از منطق تجاری در برنامه اصلی جدا کند. | ## بخش 1: توسعه نرم‌افزار جنبه‌گرا | AOSD اجازه می دهد تا مسئله‌های مختلف به طور جداگانه بیان شده و به طور خودکار در سیستم های کاری یکپارچه و مرتبط شوند. روش‌های توسعه نرم‌افزار سنتی، بر تجزیه سیستم‌ها به واحدهای عملکردی اولیه تمرکز می‌کند؛ در حالی که تشخیص می‌دهد سایر موارد نگران کننده‌ای نیز وجود دارد که به خوبی در تجزیه اولیه لحاظ نشده است. فرایند توسعه سنتی این امر را به برنامه نویسان می سپارد که ماژول‌های مربوط به عملکرد اولیه و اصلی را کدنویسی کنند و مطمئن شوند که سایر موارد نگران کننده در هر کجا که لازم است، حتماً در کد برطرف می شوند. برنامه نویسان باید تمام کارهایی که باید انجام شود ، نحوه برخورد با هر مسئله ، مشکلات مرتبط با تعاملات احتمالی و انجام رفتار درست در زمان مناسب را به خاطر بسپارند. این نگرانی ها شامل چندین واحد عملکردی اولیه در داخل برنامه هستند و اغلب منجر به بروز مشکلات جدی در طول توسعه و نگهداری برنامه می شوند. توزیع کد برای فهم یک نگرانی، به ویژه با روند تکامل شرایط محصول، به شدت مورد نیاز است. توسعه نرم‌افزار جنبه گرا تمرکز اصلی خود را بر شناسایی ، ذکر خصوصیات و ویژگی‌ها و نمایش نگرانی های مقطعی و مدولاسیون آنها به واحدهای اولیه‌ی جداگانه و هم‌چنین ترکیب خودکار آن‌ها در یک سیستم کاری می‌گذارد. رویکردهای برنامه نویسی جنبه محور ، انتزاعات صریحی را برای اجرای مدولار نگرانی در زمینه طراحی ، کد ، اسناد یا سایر مصنوعات ایجاد شده در طول چرخه عمر نرم‌افزار فراهم می کند. | ## بخش 2: توسعه نرم‌افزار جنبه‌گرا | این نگرانی های مدولار،"جنبه ها" نامیده می شوند و رویکردهای جنبه محور روش‌هایی را برای ترکیب آن‌ها ارائه می دهند. بررسی اجمالی ماهیت جنبه گرایی کمی سازی و فراموشی AOP را می توان تمایل به اظهارنظرهای کمی در مورد رفتار برنامه ها ، و نگه داشتن این کمیت ها درباره برنامه های نوشته شده توسط برنامه نویسان فراموشی دانست. در حالی که کمی سازی به توانایی جنبه های مختلف برای تأثیرگذاری بر چندین نقطه در برنامه اشاره دارد. غیرتهاجمی بیانگر این است که جنبه ها می توانند بدون نیاز به تغییر در برنامه ، رفتار را به برنامه اضافه کنند ، با این حال فرض نمی‌شود که برنامه ها از جوانب آگاهی ندارند. بسیاری از رویکردهای جنبه گرا با استفاده از حاشیه‌نویسی به صراحت مکان هایی را در سیستم معرفی می کنند که جنبه ها رفتار را معرفی می کنند. این رویکردها نیاز به بازرسی دستی و اصلاح ماژول‌های دیگر در سیستم دارند و بنابراین تهاجمی هستند. از جنبه‌ها می توان برای جداسازی ویژگی‌هایی استفاده کرد که پیاده سازی آن‌ها در غیر این صورت با سایر ویژگی ها گره می خورد. مفاهیم و اصطلاحات رویکردهای جنبه گرا، پشتیبانی صریحی را برای محلی سازی دغدغه‌ها در ماژول های جداگانه فراهم میکنند که جنبه نامیده میشوند ( aspect ). | ## بخش 3: توسعه نرم‌افزار جنبه‌گرا | بیشتر زبانهای جنبه گرا از معرفی غیرتهاجمی رفتار به یک پایگاه کد و تعیین کمیت در نقاطی از برنامه که این رفتار باید معرفی شود ، پشتیبانی می کنند. نقطه ی اتصال به نقطه ای در اجرای برنامه گفته می شود که برای تعریف ساختار پویای نگرانی مقطعی استفاده می شود. مدل نقطه اتصال یک زبان جنبه‌گرا ، انواع نقاط پیوستگی را که توسط زبان جنبه‌گرا و نقاط تعامل احتمالی بین جنبه‌ها و ماژول‌های پایه پشتیبانی می شوند ، تعریف می کند. این کمیت ممکن است در ساختار زبان ضمنی باشد یا با استفاده از ساختاری شبیه پرس و جو به نام نشانگر ( pointcut ) بیان شود. نشانگرها به عنوان یک محمول بر روی درخت نحوی برنامه تعریف می شوند و رابطی را تعریف می کنند که محدود کننده قرار گرفتن در معرض عناصر برنامه پایه توسط نشانگر باشد. می توان نشانگرها را در دو دسته طبقه بندی کرد: نشانگرهای مهربان و نشانگرهای نا مهربان بدنه های مشاوره ای بدنه مشاوره کدی است که با رسیدن به نقطه ی اتصال اجرا می شود. ترتیب کنترل بدنه‌های مشاوره با جنبه های مختلف (و توسط پایگاه) ممکن است به طرق مختلف کنترل شود ، از جمله: با رسیدن به نقطه اتصال ، قبل از اینکه اجرا با پایه ادامه یابد. هنگامی که نقطه اتصال با اجرای یک روش مطابقت دارد ، یک توصیه یا مشاوره پس از بازگشت می تواند پس از بازگشت روش یا پس از ایجاد یک استثنا اجرا شود. | ## جمع‌بندی | با رسیدن به نقطه اتصال ، با کنترل صحیح بر اینکه آیا معناشناسی پایه اجرا می شود یا خیر.