امروزه توسعهدهندگان براي بيان طرحي کاملاً پيمانهاي و مدل کپسولهسازي مشکل دارند. در واقع تکنيکهاي برنامهنويسي شيگرا تمامي طراحيهاي مهم مورد نياز در پيادهسازي برنامهها را تامين نميکنند. هم چنين بايد گفت که متدها نيز در بعضي از اوقات کارايي ندارند. به عنوان مثال، قصد داريد در برنامهنويسي شيگرا خطوطي از کد را در کلاسهاي متعددي تکرار نماييد. بنابراين هر کلاس نياز به يک متد خواهد داشت که اين کد را درون کلاس پيادهسازي نمايد. با روش شيگرا قادر نخواهيد بود آن متد را در يک کلاس جداگانه پيادهسازي کنيد. اين فرآيند بيان کنندهي نياز به استخراج جنبهها است.
در شيگرايي، نرمافزار را از بعد وظيفهمندي به اجزاي کوچکتري تقسيم کرده و به بعد غيروظيفهمند به اندازهي بعد وظيفهمند بها داده نميشود. وجود بعد غيروظيفهمند در درون بعد وظيفهمند سبب ميگردد تا موارد مرتبط با بعد وظيفهمندي، در قالب کپسولهسازي مستقل پديدار نگردند. درعوض، اجزايي از نرمافزار که مسئول پوشش وظيفهمندي سيستمها هستند پراکنده ميشوند.
مفاهيمي که به خواستههاي غيروظيفهمند مربوط ميشوند، محيط اشيا را تشکيل ميدهند. در صورتي که نرمافزار را با شيوهي شيگرايي به اجزاي کوچکتري تقسيم کنيد، مشکلات زير را در آن مشاهده خواهيد کرد:
• درهمريختگي کد برنامه: بدينمعني که يک کلاس، دربرگيرندهي چند مفهوم ميباشد. مفاهيم مربوط به خود کلاس و مفاهيم مربوط به خواستههاي غيروظيفهمندي که محيط کلاس را تشکيل ميدهند. اين امر سبب پيچيدگي شده و نگهداري نرمافزار را مشکل مينمايد.
• پراکندگي مفاهيم در کد برنامه: به دليل آنکه مفاهيم مربوط به خواستههاي غيروظيفهمند در قالب واحدهاي کپسولهسازي مجزا ظاهر نميشوند، از اين رو در کلاسهاي مختلف پراکنده ميگردند. اين پراکندگي سبب کاهش تحملپذيري کلاس در برابر تغييرات اين مفاهيم ميشود. همچنين قابليت استفادهي مجدد کلاسها پايين ميآيد.
با توجه به مشکلات ياد شده، بهتر است تغييراتي در نرمافزارهايي که قابليت استفادهي مجدد آنها بالا است اعمال گردد. بدينسان، قابليت پيکربندي اجزاي مختلف نرمافزار براي قرار گرفتن در محيطهاي مختلف مهيا ميگردد. علاوه براين، قابليت استفادهي مجدد به محيط اشيا و خواستههاي غيروظيفهمندي نيز داده ميشود.
روش جنبهگرا با تقسيمبندي بخشهاي مختلف برنامه، پيچيدگي برنامه را کاهش ميدهد. در واقع با کاهش پيچيدگي، طراحي، درک و هم چنين نگهداري سيستم نرمافزاري آسانتر خواهد شد. علاوه بر اين، برنامهنويسي جنبهگرا باعث توليد محصولاتي با بهرهوري بالا، کيفيت بهتر و اضافه کردن قابليتهاي بيشتر ميگردد.
مشکل ديگر در برنامههاي شيگرا، وجود دغدغه است. دغدغه هدفي مشخص، مفهوم يا يک حوزهي کاري ميباشد. يک سيستم نرمافزاري عادي داراي دغدغههاي متعددي است. اين دغدغهها از لايهي مرکزي تا لايههاي سيستمي يک برنامهي نرمافزاري ادامه دارند. براي نمونه، دغدغهي اصلي يک سيستم پردازش کارت اعتباري، پردازش پرداختها ميباشد. اما دغدغههاي سيستمي آن، ثبت وقايع، يکپارچه کردن تراکنشها، شناسايي کاربر، امنيت، کارآيي و غيره هستند. بسياري از اين دغدغهها به دغدغههاي تداخلي معروف هستند که بر پيادهسازي پيمانههاي مختلف برنامه تاثير ميگذارند. شيوهي جنبهگرا مکانيزمهايي را در اختيار توسعهدهندگان قرار ميدهد تا بتوانند کدهايي که بيانگر دغدغههاي متداخل باشد را بنويسند.
در صورت استفاده از شيوههاي برنامهنويسي کنوني، دغدغههاي تداخلي روي تعداد زيادي از پيمانههاي برنامه پخش شده و اثر ميگذارند. به همين دليل طراحي و درک سيستم مورد نظر سختتر و هم چنين پيادهسازي آن پيچيدهتر خواهد شد. تغيير در چنين سيستمي دشوار است. برنامهنويسي جنبهگرا بهتر از روشهاي متداول قبلي، دغدغهها را از پيمانههاي سيستم جدا ميکند. پس ميتوان از تداخل دغدغهها جلوگيري نمود.
ميتوان بطور خلاصه چنين نتيجهگيري نمود که هر جنبه، شاخص وظيفهاي خاص از وظايف يک سيستم است. به همين دليل جهت تشخيص وظايف، نياز به استخراج جنبهها از متن برنامههاي شيگرا ميباشد. استخراج جنبهها و تعيين حدود هر جنبه در داخل کد برنامهها موجب افزايش خوانايي و قابليت توسعه برنامه ميگردد. مقولهي استفادهي مجدد معمولاً در قالب عمليات مطرح است و نه کلاسها. لذا، با استخراج و تعيين سرحد جنبهها امکان استفادهي مجدد از کد برنامهها افزايش مييابد.
منبع:
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J. M. Loingtier and J. Irwin, “Aspect-Oriented Programming”, proceedings of the European Conference on Object-Oriented Programming (ECOOP), Finland, 1997.
E. Filman, T. Elrad, S. Clarke and M. Aksit, “Aspect-Oriented Software Development”, Addison Wesley Professional, 2004.
J. D. Gradecki and N. Lesiecki, “Mastering AspectJ - Aspect-Oriented Programming in Java”, Wiley Publishing, 2003.
N. Loughran and A. Rashid, “Mining Aspects”, Lancaster University, UK, 2002.
منبع:www.articles.ir/س