گزارش سمینار توسعه نرم افزار جنب هگرا Aspect-Oriented Software Development

تعداد صفحات: 142 فرمت فایل: word کد فایل: 10001920
سال: 1388 مقطع: مشخص نشده دسته بندی: پایان نامه مهندسی کامپیوتر
قیمت قدیم:۲۰,۸۰۰ تومان
قیمت: ۱۸,۷۰۰ تومان
دانلود مقاله
  • خلاصه
  • فهرست و منابع
  • خلاصه گزارش سمینار توسعه نرم افزار جنب هگرا Aspect-Oriented Software Development

    سمینار کارشناسی ارشد رشته مهندسی کامپیوتر- نرم افزار(M.Sc)  

    چکیده   

          جنبه گرائی به عنوان یک روش میان رشته ای برای توسعه سیستم ها از سال ۱۹۶۱ معرفی شد و توسط افراد و دانشمندان مختلف توسعه یافت. با توجه به اهمیت و ارزش پیمانه بندی در توسعه نرم افزار و قابلیتی که جنب هگرائی در تامین پیمانه بندی داشت جنبه گرائی در زمینه مهندسی نرم افزار، منجر به تولید زبان "برنامه نویسی جنبه گرا" در سال ۱۹۹۷ و "توسعه نرم افزاری جنبه گرا" در حال حاضر گردید. "زبان برنامه نویسی جنبه گرا" شامل ابزارها و تکنیک هایی است که از پیمان هبندی دغدغه های مداخله ای Crosscutting Concern (CC) در سطح کد پشتیبانی می کند و "توسعه نرم افزاری جنبه گرا" نیز از پیمانه بندی

    دغدغه های مداخله ای درکلیه فازهای توسعه سیستم نر م افزاری حمایت می کند.   

    توسعه مبتنی بر جنبه در حال حاضر مورد توجه محققان زیادی به خصوص محققان مهندسی نرم افزار است و حوزه های تحقیقاتی و مشکلات موجود در آن به طور کامل مشخص نشده اند. هدف از این تحقیق بدست آوردن چالشهای مهم در این حوزه، به خصوص پیرامون شناسائی و مشخص کردن دغدغه ها در فاز اولیه توسعه است. در واقع در این تحقیق سعی بر آن است تا با واضح بیان کردن مفاهیم و بهبود تعاریف اولیه، دیدی مناسب نسبت به جنبه گرائی حاصل شود که بتوان نتایج حاصله را در کارهای آتی مورد استفاده قرار داد.   

    همچنین با توجه به اینکه یکی از اهداف شناسائی و مشخص کردن دغدغه ها در فاز اولیه، پیدا کردن تاثیر دغدغه های مداخله ای بر دیگر فرآورده های فازهای توسعه است داشتن دید کلی از این روش توسعه نرم افزاری و فازهای آن بسیار مهم است و باعث  میشود در هنگام مشخص کردن دغدغ ههای مداخله ای و جنبه ها تاثیر بر این فرآو ردهها را مد نظر قرار داد. البته در این میان دانستن نقاط ضعف و قوت زبان پیاده سازی جنبه ها نیز می تواند بسیار مفید باشد. بنابراین پیرامون همین تفکر به بررسی مفاهیم جنبه گرائی، مزایا و معایب برنامه نویسی جنبه گرا و فازهای توسعه نرم افزاری جنبه گرا پرداخته خواهد شد و برای آشنایی بهتر با توسعه نرم افزاری جنبه گرا، توسعه نرم افزاری جنبه گرا با موارد کاربری تشریح می شود که نتایج حاصله از آن باعث خواهد شد که در فاز شناسائی و تشخیص جنبه ها به نکات حاصله توجه خاصی داشته باشیم. 

     

        کلمات کلیدی: جنبه گرائی، برنامه نویسی جنبه گرا، توسعه نرم افزاری جنبه گرا، جنبه، موارد کاربری، دغدغه، جداسازی

    دغدغه ها، دغدغه های مداخله ای 

    ... فصل اول ...

    معرفی

       در این فصل ابتدا نگاهی کلی بر موضوع این تحقیق خواهیم داشت و بیان خواهیم کرد که شیوه

    عملکرد در این تحقیق به چه صورت خواهد بود. سپس به تعریف مشکل موجود در این حوزه پرداخته و در ادامه مشکلات روش های موجود را در برخورد با مسئله تعریف شده بیان خواهیم کرد.   

    در بخش " حرکت به سمت راه حل" شیوه یا اسلوبی را که برای حل این مشکل اختیار خواهیم کرد بیان

    کرده و در پایان نیز نتایجی را که خواهان آن هستیم در این تحقیق بدان دست یابیم  ذکر خواهد شد.   

    ۱ -۱ -مقدمه    

          با وجود انواع متدولوژیها و تکنیک ها در زمینه مهندسی نرم افزار، باز هم نیازمند روش ها، سبک ها، پارادایم ها و زبان های پیاده سازی به همراه محیط های توسعه هستیم تا بتوان مشکلات پیش روی این حوزه

    را سهل تر کرده یا آنها را از بین برد.                  

     تمام تکنیک های ارائه شده در زمینه توسعه سیستم، تمرکزشان بر روی جدا کردن بخش های مختلف سیستم به واح دهای مجزایی است که کمترین هم پوشانی را با یکدیگر داشته باشند و به نتایج مثبتی در این

    زمینه رسیده اند. اما باز هم این روش ها در برخورد با دغدغه هایی از سیستم که درگیر با بخش های مختلف

    سیستم هستند عاجزاند و این دغدغه ها باعث می شوند پیمانه ای کردن یک سیستم به شکل مطلوب صورت

    نگیرد که به این دغدغه ها، دغدغه های مداخله ای١ گفته می شود.             

    در شیو ههای سنتی و رایج امروزی توسع هدهندگان با مشکل مربوط به دغدغه های مداخل های در بخش  تحلیل و طراحی توسعه، چندان کاری نداشته و آنها را موکول به مرحله پیاده سازی می کردند که در مرحله

    پیاده سازی، این دغدغه های مداخل های باعث ایجاد پیچیدگی کد و پراکندگی کد مربوط به یک دغدغه در میان چندین کلاس پیاده سازی می شدند. در روند رو به رشد برای حل این مشکل در فاز پیاده سازی، زبان برنامه نویسی ارائه شد تا بتواند این مشکل در فاز پیاده سازی را حل کند. این  زبان برنام هنویسی، تحت

                                                            

     Crosscutting Concerns 1

    عنوان "برنامه نویسی جنبه گرا" معرفی گردید که اجازه می داد تا پیاده سازی دغدغه های مداخله ای را در کد، پیمانه بندی کرد. و از بروز مشکلات مربوطه جلوگیری شود. این زبان تمرکز خود را بیشتر بر روی بیان

    رفتارهای سیستم بنا نهاد تا بتواند بر این مشکلات چیره گردد و البته نیز قالب های خاص ترکیب و تجزیه برای این منظور را نیز معرفی کرد. اما با به کارگیری این روش در توسعه نر مافزاری مشاهده شد که تنها

    پیمانه بندی این دغدغه ها در فاز پیاده سازی ارزش چندانی را به ارمغان نم یآورد و این اسلوب باید در تمام فازهای توسعه به کار گرفته شود. دلیل آن نیز ناشی از این نکته بود که تحلیل و طراحی ما که قابلیت

    پیمانه بندی مناسب را نداشت (بر حسب جنبه) در نهایت توسط کد به قالب پیمانه بندی شده تبدیل می شد

    و پیاد هساز نمی توانست درک درستی از این پیمانه ها بدست آورد و متحمل کارهای سختی برای انجام این عمل می شد. برای همین منظور "توسعه نرم افزاری جنبه گرا" معرفی گردید تا در این اسلوب، از جنبه گرایی که یک سازوکار خوب برای پیمانه بندی است، در سرتاسر چرخه حیات نر مافزار به کار گرفته شده و از

    قدرت آن استفاده شود. اما اصلی ترین موضوع در این اسلوب و دیگر اسلوب های توسعه آن است که باید قادر باشیم دغدغه های سیستم را به عناصر پایه آن اسلوب تبدیل کرده و آن را مدلسازی و سپس پیاده سازی

    کنیم. در این اسلوب نیز ما باید در اولین گام قادر باشیم تا جنبه ها را در یک سیستم تشخیص داده و آنها را همراه با دیگر عناصر مدلسازی کنیم. برای این منظور ما موارد کاربری را به عنوان یک ابزار مهم در بدست

    آوردن نیازها و دغدغه ها مورد توجه قرار داده و از آنها به جنبه ها دست خواهیم یافت.                        

    ۱ -۲ - تعریف مسئله   

          همان طور که می دانید یک راه حل خوب و اثبات شده برای حل یک مسئله پیچیده شکستن آن مسئله

    به زیر بخش های کوچک و تا حد ممکن جدا از هم است. این روش در مورد سیستمهای نرم افزاری نیز به

    اثبات رسیده است که در آن سیستم نرم افزاری را به واحدهای مجزا با کمترین وابستگی به نام پیمانه تقسیم می کنند. اما مشکلی که در این حالت رخ می دهد وابستگی این پیمان هها به یکدیگر است اگر این پیمانه ها

    وابستگی (شدید) به یکدیگر داشته باشند این امکان را نخواهند داد تا هر یک از این پیما نهها به صورت مجزا توسط تیم های مختلف نرم افزاری مورد توسعه قرار گیرند و روند توسعه سیستم به کندی صورت

    خواهد پذیرفت. از طرفی هم امکان قابلیت نگهداری سیستم را کاهش خواهد داد چون تغییر در یک پیمانه از سیستم منجر به تغییر در چندین پیمانه خواهد شد و باعث خواهد گردید که اعمال تغییرات به یک چنین سیستمی خیلی کند باشد. پس اولین مشکل شکستن یک سیستم به ب خشهایی است که تا حد ممکن

     

    وابستگی نداشته باشند و ثانیا قرار دادن این پیمانه ها در قالبهایی که بتواند به همان شکل پیاده سازی شود. 

    عاملی که در سیستمهای نرم افزاری منجر به این مسئله می شود همان دغدغه های مداخله ای است یعنی

    مشکل اصلی جدا کردن دغدغه های مداخله ای سیستم به شکلی است که هم در مدلسازی فرآیند توسعه و هم در پیاده سازی مستقل باشند. پس هدف و صورت مسئله برای این تحقیق شناخت دغدغه های

    مداخله ای، جداسازی آنها در قالب جنبه ها و مدلسازی آنها است.    

    ۱ -۳ - مشکلات روش های مرسوم   

          روش های پیما نهبندی مرسوم از قبیل کلاس ها و مول فهها نم یتوانند دغدغه های مداخل های را به صورت

    مجزا از یکدیگر نگاه دارند و این عدم توانائی در مجزا نگه داشتن دغدغه ها در طول طراحی و پیاده سازی، سیستم را برای درک و نگهداری بسیار سخت می کند و جلوی توسعه موازی سیستم را می گیرد و سیستم را

    به سمتی سوق می دهد که گسترش آن به سختی می تواند صورت پذیرد و همچنین مشکلات بسیار زیادی

    که پروژ های امروزی به آن دچار هستند.   

     اما اگر بخواهیم این عدم توانائی در مجزا نگ ه داشتن را بهتر بیان کنیم به این صورت قابل بیان است که 

    روش های موجود نمی توانند "دغدغه های همتا" و "دغدغه های گسترش" را به صورت مجزا نگه دارند و منجر به مشکلات "درهم پیچیدگی" و " پراکندگی" می شوند و همین دو موضوع تبدیل به یک مشکل برای

    توسعه، نگهداری، گسترش وآزمایش سیستم های نرم افزاری می گردد.    

    ۱ -۴ - حرکت به سمت راه حل            

          همان طور که می دانیم مولفه ها اگر چه ابزار بسیار عالی برای ساخت سیستم در یک روش سلسله

    مراتبی هستند ولی مولفه ها با این حال برای این کار کافی نیستند چون توانائی مجزا نگه داشتن دغدغه های

    مداخله ای را ندارند، در نتیجه اضافه کردن یک دغدغه جدید به سیستم بسیار برای توسع هگر آن دردسرساز خواهد بود.   

    برای حل این مشکل نیاز به نوعی پیمان هبندی است تا دغدغه های مداخله ای را در تمام مراحل چرخه

    حیات، از تحلیل تا آزمایش به صورت مجزا نگه دارد. برای دست یابی به این پیما نهبندی  نیاز به رو شهایی

    است تا این پیمان ههای جدید را به صورت منسجم یکپارچه کرده و یک کد قابل اجرا را بدست آورد. این پیما نهبندی جدید باید کمک کند که تمام کارهای مرتبط با دغدغه در مراحل نیازمندیها، تحلیل، طراحی، پیاده سازی و آزمایش پیمانه بندی شود. پس برای دست یابی به این نوع پیمانه بندی جدید نیاز به دو چیز

     ۴

     

    داریم اولی تکنیک جداسازی دغدغه، و دیگری تکنیک ترکیب دغدغه ها است که در جهت جداسازی دغدغه ها ما باید دغدغه ها را مدلسازی کرده و آنها را بسازیم.   

     تکنیک مورد کاربری در مدلسازی دغدغه ها در طول پیاده سازی و تحلیل بسیار مفید است زیرا در آن سعی خواهیم کرد که کارهای مورد نیاز برای یک دغدغه در طول مدلسازی و توسعه را در قالب یک برش یا

    ماژول فراهم کنیم و بعد با استفاده از قابلی تهای زبان جنبه گرایی و مکانیزم های ترکیبی، این ماژ ولها را در جهت ساخت یک سیستم قابل اجرا با هم ترکیب کنیم. پس ما از طریق پیما نهبندی کردن تمام خصوصیات

    دغدغه ها در قالب یک برش سعی در حل این مشکل خواهیم کرد که در فصل های بعدی مورد بررسی

    قرار خواهد گرفت.                  

    ۱ -۵ -  نتایج تحقیقاتی مورد انتظار   

          انتظار می رود که در پایان این تحقیق ما قادر باشیم تا از طریق موارد کاربری به جنبه ها برسیم و بعد از

    دستیابی به جنبه ها و کشف "موارد کاربری همتا" و "موارد کاربری گسترش" آنها را با استفاده از "برش های موارد کاربری" و "ماژول مورد کاربری" مدلسازی نمائیم. در واقع به دنبال آن هستیم که تمام

    خصوصیت های یک دغدغه در یک مدل را در قالب یک برش تهیه کرده و به صورت مستقل مورد توسعه قرار دهیم. بعد از آن نیز در یک مرحله کامل تر تمام ویژگیهای درگیر یک دغدغه در کلیه مدلهای توسعه را

    در قالب یک ماژول فراهم خواهیم کرد که به ما قابلیت توسعه موازی و مستقل بهتری نسبت به برش برای

    آن دغدغه را خواهد داد.   

     علاوه بر اینها انتظار می رود که با بررسی ساختارهای برنامه نویسی جنبه گرا، مزایا و معایب آن و همچنین

    تشریح فازهای توسعه نر مافزاری جنبه گرا نتایجی حاصل شود که آگاه بودن از آنها برای شخصی که در فاز

    اولیه توسعه در حال جداسازی دغدغه ها و شناسائی جنبه ها است بسیار مفید باشد و باعث شود که مهندس نیازمندیها بتواند خوب نگاشت و تاثیرات جنبه ها را پیش بینی کند(از دیدگاه فنی). 

    ۱ -۶ -  ساختار سمینار   

          روند و ساختار این تحقیق(سمینار) به صورت زیر است:                      

    در فصل دوم مفاهیم اصلی و پرکاربرد در زمینه جنبه گرائی تعریف و بررسی خواهد شد. این مفاهیم  برای ادامه تحقیق بسیار مهم هستند. همچنین دو مفهوم مهم تحت عنوان پیچیدگی و پراکندگی تشریح خواهند شد که علاوه بر اینکه مشکلات روشهای توسعه سنتی هستند عامل اصلی در پدیدار شدن برنامه نویسی

    ۵

    جنبه گرا نیز به حساب می آیند.           

    در فصل سوم برنامه نویسی جنبه گرا بررسی می شود. در این فصل ابتدا تاریخچه زبان، مزایا و معایب آن ذکر

    شده و بعد مفاهیم پایه آن تعریف خواهند شد و برای درک بهتر یک مطالعه موردی تحت عنوان سیستم سیستم مدیریت هتل ذکر خواهد شد.   

    در فصل چهارم خود توسعه نر مافزاری جنبه گرا هدف اصلی است و فازهای اصلی آن بیان شده و حوزه های چالش برانگیز در هر فاز تشریح خواهند شد. در فصل پنجم نیز توسعه نرم افزاری جنب هگرا با

    موارد کاربری ذکر خواهد شد که بیشتر تمرکز در آن بر روی تحلیل، طراحی و مدلسازی خواهد بود. در

    این فصل با ارائه ساختارهای جدید که متشکل از موارد کاربری و مفهوم جنبه گرائی است به سیستم و روشی دست پیدا خواهیم کرد که اصل پیمانه بندی در آن به خوبی رعایت شده است. و نهایتا در فصل ششم از کلیه مطالب ذکر شده در فصول قبلی نتیجه گیری کرده و بیان خواهیم کرد که اولا چه نتایجی

    حاصل شده و ثانیا کارهای آتی در این زمینه چه موضوعاتی خواهد بود     

    ۶

    صفحه فنی 

              

    ... فصل دوم ...

    تعاریف و مفاهیم 

     

          در این فصل ما به معرفی مفاهیم مرتبط با این تحقیق خواهیم پرداخت و دو مشکل  مربوط به

    دغدغه های مداخله جویانه که "پراکندگی" و " پیچیدگی"  هستند را بررسی خواهیم کرد. نهایتا نیز نگاهی گذرا به "برنامه نویسی جنبه گرا"، " توسعه نرم افزای جنبه گرا" و توسعه نر مافزاری جنبه گرا با مورد کاربری خواهیم داشت.    

    ۲ -۱ - حوزه مسئله١   

          در تعریف عمومی، "حوزه مسئله" حوزه ای است که پارامترهای آن محدودی تهای حوزه و

    نگاشت های مناسب به یک مجموعه از محدوده ها را تعریف و بیان می کند به طوریکه آن محدوده ها (اعضا و تعاریف) قابلیت فهیم بودن لازم برای تشریح سیستماتیک حوزه مربوطه را ندارند[۱]. از جنبه دیگر "حوزه مسئله" یک نگاه ساده به عناوین حوزه مورد بحث (مورد علاقه) است به عنوان مثال در توسعه یک سیستم در ارتباط با دارو، عنوانی مانند فرش نمی تواند در حوزه مسئله ی سیستم مورد بحث باشد (نباید فرش را در حوزه مسئله تعریف کنیم) این حوزه مسئله، منحصرا ارجاع به عناوین مرتبط با سیستم مورد

    نظر دارد مثلا دارو.                 

    از دیدگاه             شیگرا یک "حوزه مسئله" به صورت یک مجموعه از اشیاء توصیف  میشود که این اشیاء رفتارها

    و صفات خاص دارند[۲] یعنی مسائل در قالب یک سری از اشیا، خود را نمایان می کنند.                    

    ۲ -۲ - نیازمندی٢          

          در مهندسی، نیازمندیها یک مستند منحصر به فرد از موارد لازم است که یک محصول یا سرویس باید

    دارای آن بوده یا آنها را باید انجام دهد. در واقع آن مستند ویژگیها، قابلی تها، خصوصیات و کیفیت یک سیستم را در جهت اینکه سیستم مورد نظر ارزش و کاربرد لازم برای کاربر را دارد، مشخص  میکند[۳].

    در مهندسی نر مافزار نیازمندی عبارت است از توضیحاتی از مواردی (شروط یا قابلی تها) که یک سیستم

                                                            

  • فهرست و منابع گزارش سمینار توسعه نرم افزار جنب هگرا Aspect-Oriented Software Development

    فهرست:

    عنوان ............................................................................................................................................... صفحه  چکیده .....................................................................................................................................................۱ 

    فصل اول . مقدمه .............................................................................................................................٢

    - مقدمه ..................................................................................................................................٢

    - تعریف مسئله ......................................................................................................................٣

    - مشکلات روش های مرسوم .................................................................................................٤

    - حرکت به سمت راه حل .......................................................................................................٤

    - نتایج تحقیقاتی مورد انتظار ..................................................................................................٥

    -  ساختار سمینار ....................................................................................................................٥

    فصل دوم . تعاریف و مفاهیم ............................................................................................................٨

    حوزه مسئله ..........................................................................................................................٨

    نیازمندی ...............................................................................................................................٨

    ٢-٢ -١ - نیازمندیهای وظیفه مندی .........................................................................................٩ 

    ٢-٢ -٢ - نیازمندیهای غیروظیفه مندی ....................................................................................٩ 

    -٣ - خصوصیات نیازمندیهای خوب ..............................................................................٩

    دغدغه ..................................................................................................................................١١

    -١ - تعریف دغدغه .......................................................................................................١٢ 

    -٢ - دغدغه هسته و منطق حرفه ...................................................................................۱۲ 

    دغدغه مداخله ای .................................................................................................................١٣

    -١ - تقسیم بندی دغدغه های مداخله ای .........................................................................۱۴

    جداسازی دغدغه ها ..............................................................................................................١٤

    خاصیت پیمانه ای ..................................................................................................................١٥

    مدل ......................................................................................................................................١٦

    درهم پیچیدگی .....................................................................................................................١٧

    ج

    پراکندگی .............................................................................................................................١٨

    مورد کاربری.........................................................................................................................١٨

    برنامه نویسی جنبه گرا ...........................................................................................................١٩

    توسعه نرم افزاری جنبه گرا .....................................................................................................٢٠

    توسعه نرم افزاری جنبه گرا با موارد کاربری ..........................................................................٢٠

    فصل سوم . برنامه نویسی جنبه گرا .....................................................................................................٢٣

    - برنامه نویسی جنبه گرا چیست؟ .............................................................................................٢٣

    - تاریخچه ..............................................................................................................................٢٤

    - مزایا .....................................................................................................................................٢٤

    - معایب ..................................................................................................................................٢٥

    - مفاهیم پایه ...........................................................................................................................٢٦

    ٣-٥ -١ - جنبه ......................................................................................................................٢٦ 

    -٢ - نقطه اتصال یا  Joinpoint ....................................................................................۲۸ 

      ۲۹.............................................................................................................. Pointcut - ۳- ۵-٣

      ۲۹...................................................................................................... Advice Code - ۴- ۵-۳

    - محیط (زبان)های برنامه نویسی .............................................................................................٣٠

      ۳۱.............................................................................................................. AspectJ - ١-

      ۳۱............................................................................... Java Aspect Components - ۲- ۶-۳

      ۳۲........................................................................................................ JBoss AOP - ۳- ۶-۳

      ۳۲....................................................................................................... Spring AOP - ۴- ۶-۳

    - مطالعه موردی ......................................................................................................................٣٢

    ٣-٧ -١ - سیستم مدیریت هتل .............................................................................................٣٣ 

    ٣-٧ -٢ - مشکلات سیستم مدیریت هتل .............................................................................٣٤ 

    -٣ - نگرش جنبه گرا به سیستم مدیریت هتل ................................................................٣٧ 

    - نتیجه گیری ...........................................................................................................................٤٢ 

    فصل چهارم . توسعه نرم افزاری جنبه گرا ..........................................................................................٤٤

    ح

    - توسعه نرم افزاری جنبه گرا چیست؟ .....................................................................................٤٤

    - مهندسی نیازمندیهای جنبه گرا ..............................................................................................٤٥

    - معماری سیستم جنبه گرا ......................................................................................................٤٦

    - طراحی و مدلسازی جنبه گرا ................................................................................................٤٧

    - برنامه نویسی جنبه گرا ...........................................................................................................٤٨

    - حمایت متد رسمی برای جنبه گرائی ....................................................................................٤٨

    - آزمایش برنامه های جنبه گرا .................................................................................................٤٩

    فصل پنجم . توسعه نرم افزاری جنبه گرا با موارد کاربری ...................................................................٥١

    - توسعه نرم افزاری جنبه گرا با موارد کاربری چیست؟ ...........................................................٥١

    - جنبه ها و موارد کاربری .......................................................................................................٥٢

    -١ - توسعه مبتنی بر مورد کاربری ...............................................................................٥٣

    - ساخت سیستم با استفاده از "برش مورد کاربری" ...............................................................٥٥

    -١ - مجزا نگاه داشتن "مورد کاربری همتا" .................................................................٥٦ 

    ٥-٣ -٢ - مجزا نگاه داشتن "مورد کاربری گسترش" ...........................................................٥٨ 

    -٣ - توسعه موازی سیستم با ماژول مورد کاربری .......................................................٥٩

    - مجزا نگاه داشتن تحقق موارد کاربری همتا با جنبه ها .........................................................٦٠

    -١ - تحقق بخشیدن به موارد کاربری همتا ..................................................................٦٠ 

    ٥-٤ -٢ - مجزا نگاه داشتن مشخصات موارد کاربری ..........................................................٦٥ 

    -٣ - برخورد با روی هم افتادگی .................................................................................٧١

    - مجزا نگاه داشتن گسترشها با Pointcuts ............................................................................٧٧

    -١ - تحقق موارد کاربری گسترش ..............................................................................٧٨ 

    -٢ - حفظ پیمانه بندی تحقق مورد کاری گسترش .......................................................٧٩

    - نتیجه گیری ..........................................................................................................................٨٤

    ٦ - فصل ششم. نتیجه گیری ....................................................................................................................٨٦

    کارهای آتی .............................................................................................................................................۸۷

    مراجع ......................................................................................................................................................۸۹ 

    منبع:

     

    http://en.wikipedia.org/wiki/Problem_domain.

    Roger S.Pressman, Software Engineering: a practitioner’s approach, Fifth edition, McGraw-Hill, page 541, 2001.

    Young, Ralph R. Effective Requirements Practices. Boston: Addison-Wesley, 2001.

    Boehm, B.W. and Papaccio, P.N., 1988, Understanding and controlling software costs, IEEE Trans of Software Engineering, 14(10), 1462-1477.

    Bridges, W., 1995, Managing Transitions, Making the most of change, Nicholas Brealey Publishing, UK.

    Brinkkemper, S., 1996, Method engineering: engineering of information systems development methods and tools, Inf. Software Technol., 38(4), 275-280.

    Davis, A.M., 1993, Software Requirements: Analysis and Specification, Prentice Hall, second Edition, 1993.

    http://www.research.ibm.com/hyperspace/ConcernSpaces.htm.

    Ivar Jacobson, Pan-Wei Ng, Aspect-Oriented Software Development with Use Cases, Addison Wesley Professional, ISBN: 0-321-26888-1, December 30, 2004.

    Joseph D. Gradecki, Nicholas Lesiecki, Mastering AspectJ: Aspect-Oriented Programming in Java, 2003.

    Tarr, P., Ossher, H., Harrison, W., and Sutton Jr.,S. M. 1999. N degrees of separation: Multi-dimensional separation of concerns. In 21st Int'l Conf. Software Engineering (ICSE), (Los Angeles). IEEE, 107119.

    Merriam-Webster.        Merriam-Webster         collegiate         dictionary        online. http://www.merriam-webster.com.

    IEEE. 2000. IEEE recommended practice for architectural description of softwareintensive systems. IEEE Std.14712000.

    Klein, M. and Kazman, R. 1999. Attribute -based architectural styles. Tech. Rep. CMU/SEI-99-TR-022, Software Engineering Institute, Carnegie Mellon University. Oct.

    Nuseibeh, B., Kramer, J., and Finkelstein, A. 1993. Expressing the relationships between multiple views in requirements specification. In 15th Int'l Conf. Software Engineering (ICSE), (Baltimore, Maryland). IEEE, 187196.

    Sutton Jr.,S. M. 1999. Multiple dimensions of concern in software testing. In Workshop on Multi-Dimensional Separation of Concerns (OOPSLA), (Denver).

    http://www.cs.ubc.ca/~murphy/multid-workshop-oopsla99/positionpapers/ws13sutton.pdf .

    http://wikipedia.org

    Dijkstra, Edsger W. (1982), "On the role of scientific thought", in Dijkstra, Edsger W., Selected writings on Computing: A Personal Perspective, New York, NY, USA: Springer-Verlag New York, Inc., pp. 60–66, ISBN 0-387-90652-5.

    Reade, Chris (1989). Elements of Functional Programming. Boston, MA, USA:

    Addison-Wesley Longman Publishing Co., Inc., 600 pages. ISBN 0201129159.

    Grady Booch, Ivar Jacobson, and James Rumbaugh, Object Oriented Analysis and Design with Applications 3rd Edition, Addison.Wesley,2007.

    Parnas, D.L. (1972): On the Criteria To Be Used in Decomposing Systems into Modules, in: Communications of the ACM, December 1972, Vol. 15, No. 12, 10531058.

    Kiczales, Gregor; John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin (1997). "Aspect-Oriented Programming", Proceedings of the European Conference on Object-Oriented Programming, vol.1241, pp.220–242.  The paper originating AOP.

    Renaud Pawlak, Lionel Seinturier, and Jean-Philippe Retaillé, Foundations of AOP for J2EE Development, Springer-Verlag New York, ISBN: 1-59059-507-6, 2005.

    Doug Rosenberg, Matt Stephens, Use Case Driven Object Modeling with UML, Springer-Verlag, ISBN: 1-59059-774-5, 2007.

    Filman, R. and D. Friedman, Aspect-oriented programming is quantification and Obliviousness, Proceedings of the Workshop on Advanced Separation of Concerns, in conjunction with OOPSLA’00 (2000).

    http://en.wikipedia.org/wiki/Aspect-oriented_software_development.

    http://trese.cs.utwente.nl/taosad/aosd.htm.

    R.T. Alexander, J.M. Bieman, and A.A. Andrews,“Towards the Systematic Testing of Aspect- Oriented Programs”, Technical Report CS-4-105, ColoradoState University, 2004.

    Reza Meimandi Parizi, Abdul Azim Ghani, "A Survey on Aspect-Oriented Testing Approaches", IEEE DOI 10.1109/ICCSA, 2007.

    Awais Rashid, Aspect-Oriented Requirements Engineering: An Introduction, IEEE

    DOI 10.1109/RE, 2008.

    Awais Rashid, Ruzanna Chitchyan, "Aspect-Oriented Requirements Engineering: A Roadmap", ACM 978-1-60558-032, 2008.

     

ثبت سفارش
عنوان محصول
قیمت