در توسعه نرم افزار با روش Aspect Oriented مفهومی با نام use case slice وجود دارد که به توسعه دهندگان کمک می کند که پیاده سازی use case ها را از یکدیگر جدا کنند و با این کار use case های درون سیستم با یکدیگر overlap نداشته باشند. بمنظور روشنتر شدن مطلب یک مثال عملی می آوریم:

در روش های (use case driven development) توسعه نرم افزار براساس use case مانند RUP فعالیت های زیر برای رسیدن به یک محصول خوب انجام می شود:
1. پیدا کردن use case ها و مشخص کردن جزئیات هر کدام از آنها.
2. طراحی هر کدام از use case.
3. طراحی و پیاده سازی هر کدام از کلاس ها.
4. آزمایش هر کدام از use case.

در شکل زیر دیاگرام use case سیستم فرضی رزرو هتل را مشاهده می کنید:


 

نکته: برای مشاهده عکس ها در سایز بزرکتر برروی آنها کلیک کنید.
در شکل بعدی مراحل و چگونگی رسیدن به کلاس های سیستم را با استفاده از روش های (use case driven development) توسعه نرم افزار براساس use case مشاهده می کنید:
 

 

نکته: برای مشاهده عکس ها در سایز بزرکتر برروی آنها کلیک کنید.
همانطور که در شکل بالا مشاهده می کنید پس از پایان مرحله سوم و پیاده سازی کلاس های سیستم ، مشاهده می کنیم که کلاس های سیستم overlap زیادی دارند بدین معنی که مثلا پیاده سازی یک use case مانند Reserve Room در چهار کلاس مختلف پخش شده است که این امر Modularity سیستم را پایین می آورد و اصلاح سیستم در آینده را دشوار می سازد.
اما در توسعه نرم افزار با روش Aspect Oriented پس از پیدا کردن use case های سیستم و Realize کردن آنها ، با استفاده از مفهوم use case slice و AOP = Aspect Oriented Programming ، جداسازی use case در زمان پیاده سازی بطور کامل رعایت می شود. برای روشنتر شدن مطلب به شکل زیر توجه کنید:

 

 

نکته: برای مشاهده عکس ها در سایز بزرکتر برروی آنها کلیک کنید.
همانطور که در شکل بالا مشاهده می کنید در واقع use case slice ها همان تکه های طراحی یک use case هستند که در کلاس های مختلف پخش شده بودند.
حال با استفاده از مفهوم aspect در AOP = Aspect Oriented Programming (مثال زیر با AspectJ است) که معادل با use case slice است ، هر کدام از use case slice های بدست آمده در مرحله قبل را پیاده سازی می کنیم.

 

 
نکته: برای مشاهده عکس ها در سایز بزرکتر برروی آنها کلیک کنید.
البته برای درک بهتر تکه کد بالا شما نیاز به اطلاعات ابتدایی در باره برنامه نویسی AspectJ دارید.
این یکی از مزیت های توسعه نرم افزار با استفاده از Aspect Oriented است که در حال حاضر بسیاری از شرکت های بزرگ برای تولید نرم افزارهای خود از آن استفاده می کنند (برای مثال : IBM برای تولید IBM WebSphere و Apple برای تولید Mac OS)
برای اطلاعات بیشتر کتاب Aspect-Oriented Software Development with Use Cases یک کتاب عالی در این زمینه می باشد که نویسندگان آن Ivar Jacobson, Pan-Wei Ng می باشند .


منبع:

شاد باشید.