شيوههاي مورد استفادهي محققين را در سه رده يا طبقهي اصلي سازماندهي ميکنيم:
تکنيکهاي اوليهي استخراج جنبه. در گذشته، اصليترين مساله در توسعهي نرمافزارهاي جنبهگرا، مرحلهي پيادهسازي نرمافزار بود. در تحقيقات اوليهاي که روي جنبهها صورت پذيرفت سعي بر اين بود تا جنبهها نيز مانند نيازمنديها و تحليل دامنه يا طراحي معماري در مراحل اوليهي چرخهي توليد نرمافزار ظاهر شوند. تشخيص و مديريت تکنيکهاي اوليه ي جنبه، هيچ تاثيري در بهبود پيمانهبندي نيازمنديها و طراحي معماري ندارد، زيرا در اين حالت، نتيجهاي همانند پيادهسازي جنبهها حاصل ميشود. در سيستمهاي قديمي که داراي نيازمنديها و مستندات معماري منسوخ شده يا غيرقابل دسترس هستند، تکنيکهاي استخراج جنبه امکان ظهور و تمرکز روي کد را ندارند.
کاوشگرهاي اختصاصي . به دستهاي از کاوشگرهاي خاص اطلاق ميشود که در آن توليد کننده، براي کشف دغدغههاي تداخلي، کد سيستم را به صورت دستي جهتيابي يا کنترل مينمايد. هدف اين شيوهها استخراج جنبهها نبوده بلکه هدف اوليهي آن بررسي اختصاصي مستندات و کشف دغدغههاي تداخلي است که اين کار نيز به نگهداري و تکامل سيستم ترجيح داده ميشود. از کاوشگرهاي اختصاصي ميتوان براي شناسايي جنبهها در سيستم استفاده کرد.
معمولاً کاربر در کد با دغدغههايي روبرو ميشود که کشف آن برعهدهي کاوشگرهاي اختصاصي است. در چنين کاوشگرهايي، کاربر کانون بحرانهايي خواهد شد که به دغدغه ترجيح داده ميشوند، يا اين که کاربر خود با زبان پرسوجو دغدغه را به صورت دستي پيدا ميکند. ميتوان براي مثال شيوههايي مانند گرافهاي دغدغه [1]، ديدهاي Intensional [2]، کاوشگر جنبه [3]، ابزار جنبهکاوي (توسعه يافته) [4]، Prism [5]، JQuery و غيره را نام برد.
شناسايي (شبه-) خودکار کانديدهاي جنبه. براي تکميل کاوشگرهاي اختصاصي، تکنيکهايي وجود دارد که به عنوان هدف براي فرآيند خودکار شناسايي جنبهها بکار ميآيند و کاربر به آنها يک يا چند کانديد جنبه را پيشنهاد ميکند. در نهايت، اين تکنيکها کد سيستم يا داده را استدلال کرده تا با اجرا يا دستکاري کد، جنبه بدست آيد. به نظر ميرسد براي نشان دادن دغدغههاي تداخلي، دستکم تمام تکنيکها با هم اشتراک دارند. درواقع، تکنيکهاي دادهکاوي و تحليل داده شبيه تحليل مفهوم رسمي و تحليل خوشهبندي، يا تکنيکهاي تحليل کد شبيه برش برنامه، اندازهگيري نرم افزار، تشخيص هم نوع، تکنيکهاي تطبيق الگو، تحليل پويا و غيره را بکار ميبرند.
در ادامه نگرشي کلي از کار پژوهشگراني که روي تکنيکهاي استخراج خودکار جنبه تحقيق کردهاند، ارائه ميگردد:
سيلويا بروو و جنز کرينک از تحليل ايستا و پويا براي تشخيص الگوهاي فراخواني تکراري و استخراج دغدغههاي تداخلي استفاده کردند [6].
ماجيل برونتينک و تام توروو بررسي نمودند که دغدغههاي تداخلي چطور ميتواند از مهندسي معکوس برنامههاي کاربردي صنعتي بزرگ حاصل شود و چگونه تکنيکهاي توسعهي نرمافزار جنبهگرا ميتوانند کيفيت چنين برنامههاي کاربردي را بهبود بخشند.
ماريانو سککاتو و پائولو تونللا تکنيکهاي تحليل پويا و تحليل مفهوم رسمي را براي استخراج کد با جنبهها ترکيب نمودند[7].
کريس گيبلز و اندي کللنز تکنيکهاي استخراج جنبهي مبتني بر سلسله مراتب را کشف کردند که از طريق آن به تکنيک برنامهنويسي منطق استقرايي خودکار نقاط برش در نرمافزار پي بردند.
ماريوس مارين ، لئون مونن و اريه وان درسن تکنيک تحليل ظرفيت ورودي به شناسايي شبه خودکار جنبهها در کد جاوا را مطالعه نمودند که به صورت جنبهگرا نوشته نشده است[10].
مارتين روبيللارد و گيل مورفي به استخراج دغدغه با استفاده از وابستگي عضو کلاس پرداختند. در اين روش، دغدغههاي پيمانهبندي شده با تعريف سيستم يا اعضاي کلاس ادغام ميشوند[12].
کيم منز و تام توروو تکنيک تحليل مفهوم رسمي در کد Smalltalk يا جاوا را براي کشف جنبهها و دغدغههاي تداخلي، مبتني بر مشابهت در شناسايي متدها و کلاسها ارائه کردند[8].
ديويد شفرد چارچوبي براي ترکيب تحليل استخراج جنبه ارائه داد. هم چنين تشخيص همنوعي کد را جهت شناسايي جنبهها مورد استفاده قرار داد[9].
اندي زايدمن از الگوريتمهاي دادهکاوي براي کشف کلاسهاي مهم در معماري سيستم استفاده کرد که کانديدهاي درجه يک براي جنبهها هستند[11].
منبع:
1. M. P. Robillard and G. C. Murphy, “Concern graphs: Finding and describing concerns using structural program dependencies”, Proceedings of the 24th International Conference on Software Engineering (ICSE 2002), Orlando, Florida, 2002.
2. K. Mens, B. Poll and S. Gonz´alez, “Using intentional source-code views to aid software maintenance”, International Conference on Software Maintenance (ICSM’03), IEEE Computer Society Press, 2003.
3. W. Griswold, Y. Kato and J. Yuan, “Aspect browser: Tool support for managing dispersed aspects”, Workshop on Multi-Dimensional Separation of Concerns in Object-oriented Systems, 1999.
4. C. Zhang and H. Jacobsen, “Extended aspect mining tool”, http://www.eecg.utoronto.ca/_czhang/amtex, 2002.
5. C. Zhang and H. Jacobsen, “Prism is research in aspect mining”, OOPSLA, ACM, 2004.
6. J. Krinke and S. Breu, “Control-flow-graph-based aspect mining”, Proceedings of the First Workshop on Aspect Reverse Engineering at Working onference on Reverse Engineering (WCRE 2004), Delft, 2004.
7. P. Tonella and M. Ceccato, “Aspect mining through the formal concept analysis of execution traces”, Working Conference on Reverse Engineering (WCRE), 2004.
8. K. Mens and T. Tourw´e, “Delving source-code with formal concept analysis”, Elsevier Journal on Computer Languages, Systems & Structures, 2005.
9. D. Shepherd, T. Tourw´e and L. Pollock, “Using language clues to discover crosscutting concerns”, Workshop on the Modeling and Analysis of Concerns, 2005.
10. M. Marin, A. van Deursen and L. Moonen, “Identifying aspects using fan-in analysis”, Working Conference on Reverse Engineering (WCRE), IEEE Computer Society, 2004.
11. A. Zaidman, T. Calders, S. Demeyer, and J. Paredaens, “Applying web mining techniques to execution traces to support the program comprehension process”, 8th European Conference on Software Maintenance and Reengineering (CSMR), pages 329–338. IEEE Computing Society, 2005.
12. M. P. Robillard and G. C. Murphy, “Concern graphs: Finding and describing concerns using structural program dependencies”, Proceedings of the 24th International Conference on Software Engineering (ICSE 2002), Orlando, Florida, 2002.
منبع:www.articles.ir/س