3. نمونههای روشهای توسعه نرمافزار
Waterfall
V
Spiral
Evolutionary Prototyping
Scrum
Unified Process
Extreme Programming
4. CONCERN
• قسمتی از سیستم که مورد توجّه قرار میگیرد.
• معیار اولیه برای تجزیهی نرمافزار به قسمتهای کوچکتر، قابل مدیریت و قابل درک
(text,picture,video,exceptionhandling,…)
5. SEPRATIONOF CONCERNS
• بر تقسیم نرمافزار به قسمتهای مجزا تمرکز دارد که تا حد امکان از نظر
کارکرد تداخلی نداشته باشند.
6. CROSS-CUTTING CONCERN
• متشکل از کارکردهای مشترک است. (CommonFunctionality)
• جزء نیازهای کاربردی نیست.
• نمیتوان آن را به طور مشخص در یک دسته بندی عمومی گنجاند.از جمله
(Object,method,API,…)
7. مشکلات CROSSCUTTING CONCERNS
پراکندگی
( Scattering )
• هر گاه کد پیادهسازی دغدغه بین چند
ماژول پخش شده باشد.
پیچیدگی
( Tangling )
• هر گاه کد پیادهسازی یک دغدغه با کد
یک دغدغه دیگر مخلوط شده باشد.
8. ASPECT
قسمتی از برنامه که شامل تلاقی (Cross-Cut) چندین دغدغه (Concern)
جدا از هم است.
حکم کلاس را در برنامهنویسی شیگرا
دارد.
9. تعریف AOSD
• تکنولوژی توسعه نرم افزارجنبه گرا، به تازگی در حال ظهور است .
• روشی است برای رسیدن به پیمانه بندی (modularization) جدید و
ساخت برنامه از ابتدا تا زمان انتشار آن.
• اجازه میدهد تا چند دغدغه به طور جداگانه مطرح شود.
10. هدف AOSD
شناسایی ) identification )
تشخیص (specification)
ارائه ) representation )
Cross
cutting concerns
با تقسیم بندی modularization به واحدهای عملیاتی
جداگانه و ترکیب خودکار آنها در داخل سیستم
11. JOINPOINT
نقاط قابل توجّهی در چرخهی حیات برنامه
که ممکن است چندین دغدغه (concern)
ایجاد شود. به عنوان مثال نقطه فراخوانی متد
12. POINTCUT
در AOP نیاز است نقاطی که موجب فراخوانی یک جنبه میشوند تعریف
گردند، در حقیقت pointcut یک مجموعه از joinpoint ها را تعریف میکند.
13. ADVICE
کد تکمیلی که به سیستم اضافه
میشود تا کارهای مربوط به یک
دغدغه را انجام دهد.
15. ASPECT ORIENTED PROGRAMMING (AOP)
• تکنیکی که به برنامهنویس کمک میکند به طور مشخص، اجزاء و جنبه ها را
از یکدیگر جدا کند.
• توجه اصلی ماژول بندی کد:
ارائه مکانیزم برای جداکردن
دغدغههای متقاطع
(cross-cuttingconcerns)
در سطح کد
1. public aspect CheckInCustomer{
2. ...
3. public void Room.assignCustomer()
4. {
5. // code to check in customer
6. }
7. public void Reservation.consume()
8. {
9. // code to consume reservation
10. }
11. public void Payment.createBill()
12. {
13. // code to generate an initial outstanding bill
14. }
15. ...
16. }
16. مزایای AOP
• تقسیمبندی بخشهای مختلف به نحوی ساده میشود که برطرفکردن
دغدغهها باعث پیچیدگی زیادی نمیشود.
• طراحی، فهم و نگهداری سیستم را راحتتر میکند.
• باعث تولید محصولاتی با بهرهوری بالاتر،کیفیت بهتر و امکان اضافه کردن
قابلیتهای بیشتری میشود.
• بهتر میتوان از تداخل دغدغهها جلوگیری کرد.
17. AOP چگونه کار میکند؟
دغدغههای مختلف به صورت مستقل و با ارتباط و وابستگی پایین پیادهسازی
میشوند
با ترکیب این پیادهسازیها سیستم نهایی را آماده میکند
19. معایب AOP
• قدرت و توانائی زبان برنامهنویسی جنبهگرا در ایجاد کدهای غیرقابل اشکالزدائی
• برنا مهنویسی جنبهگرا سعی میکند که جزئیات فراخوانی متدها را نادیده بگیرد.
• میزان امنیت ترکیب جنبهها در زمان اجرا، کامپایل یا بارگذاری و تأثیرات جانبی
ناشی ازتغییر نام یک تابع
20. چه کاربردی برای شما دارد؟؟؟
• کد کمتری مینویسید )نقصکمتر(
• کد کمتری میخوانید.
• مختصر و فهم آسان
• توجه بیشتر
• بهرهوری بیشتر
• هزینه توسعه و نگهداری کاهشمیدهد.