ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ...

55
ﺑﺴﻤﻪ ﺑﺴﻤﻪ ﺗﻌﺎﻟﻲ ﺗﻌﺎﻟﻲاﻓﺰار ﻧﺮم ﻣﻬﻨﺪﺳﻲ درساﻓﺰار ﻧﺮم ﻣﻬﻨﺪﺳﻲ درس ﺸﺮﻓﺘﻪ ﺸﺮﻓﺘﻪ ﺟﻨﺒﻪ ﺑﺮ ﻣﺒﺘﻨﻲ ﺗﻮﺳﻌﻪ ﺟﻨﺒﻪ ﺑﺮ ﻣﺒﺘﻨﻲ ﺗﻮﺳﻌﻪ) Aspect Aspect-oriented Development oriented Development ( ﺷﻤﺲ ﻓﺮﻳﺪون دﻛﺘﺮ ﻣﺒﺎﺣﺚ ﺑﺮ ﻣﺒﺘﻨﻲ ﺷﻤﺲ ﻓﺮﻳﺪون دﻛﺘﺮ ﻣﺒﺎﺣﺚ ﺑﺮ ﻣﺒﺘﻨﻲ) ﺑﺎ اﻧﺪﻛﻲ ﺗﻐﻴﻴﺮ ﺑﺎ اﻧﺪﻛﻲ ﺗﻐﻴﻴﺮ( ) ﺗﻐﻴﻴﺮ اﻧﺪﻛﻲ ﺑﺎ ﺗﻐﻴﻴﺮ اﻧﺪﻛﻲ ﺑﺎ( ﺧﻮﺷﻨﻮﻳﺲ ﺧﻮﺷﻨﻮﻳﺲ

Upload: others

Post on 31-Dec-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

تعاليتعالي بسمهبسمه

شرفتهشرفتهييدرس مهندسي نرم افزار پدرس مهندسي نرم افزار پ

))AspectAspect--oriented Developmentoriented Development((توسعه مبتني بر جنبه توسعه مبتني بر جنبه

مبتني بر مباحث دكتر فريدون شمس مبتني بر مباحث دكتر فريدون شمس تغيير(( اندكي تغييربا اندكي ))با ))با اندكي تغييربا اندكي تغيير((

خوشنويسخوشنويس

Page 2: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

بفهرست مطالب رنرم افزارهاي مدرن و مشكالت آنتوسعه نو و رن ي ر ز رممفاهيم توسعه مبتني بر جنبهنمونه هاي توجه به جنبهءتفاوت جنبهش با با جنبهشيءتفاوتتوسعه نرم افزار مبتني بر جنبه

٢

Page 3: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

رتوسعه نرم افزار ز رم و

نرم افزارهاي قديمينرم افزارهاي موجود نرم افزارهاي آينده

ثابت، محاسباتي و داده گراثابت، محاسباتي و داده گراتوسعه نرم افزار از حالت حالت ابه لفهگ از ن به ته ب يا اپ لفهگ از ن به ته ب يا استپ شده ديل ت

٣

تبديل شده استپويا، بسته به نياز و مولفه گراپويا، بسته به نياز و مولفه گرابه حالت

Page 4: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(توسعه نرم افزار ر ز رم وواحدبندي

Object Oriented ProgrammingObject Oriented Programming

واحدبندي روشي براي مهار پيچيدگي است

Data AbstractionData Abstraction

Com

plex

ity

Structured ProgrammingStructured Programming

Modular ProgrammingModular ProgrammingC

Compiled Programming LanguagesCompiled Programming Languages

٤Modularity

Page 5: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(توسعه نرم افزار ر ز رم وبرنامه نويسي ساختاريافتهبرنامه نويسي ساختاريافته

راحتي خواندن و نوشتنراحتي خواندن و نوشتنقابليت توسعه پائينقابليت توسعه پائين

Program

Main program

i = 1

ين پ و ي ينب پ و ي بقابليت نگهداري پائينقابليت نگهداري پائينقابليت استفاده مجدد پائينقابليت استفاده مجدد پائين

data

while (i < 4) { print(i) i = i + 1}

فاقد واحدبنديفاقد واحدبندي

}

٥

Page 6: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(توسعه نرم افزار ر ز رم وبرنامه نويسي رويه ايبرنامه نويسي رويه اي

راحتي خواندن و نوشتنراحتي خواندن و نوشتنقابليت توسعه بهبوديافتهقابليت توسعه بهبوديافته

ProgramMain program

data ي بهبو و يت يب بهبو و يت ب بهبوديافتهبهبوديافتهقابليت نگهداري قابليت نگهداريبهبوديافتهبهبوديافتهقابليت استفاده مجددقابليت استفاده مجدد

data

Procedure1

Procedure2

واحدبندي بهبوديافتهواحدبندي بهبوديافته1 2

Proceduren

٦

Page 7: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(توسعه نرم افزار ر ز رم وبرنامه نويسي شي گرابرنامه نويسي شي گرا

راحتي خواندن و نوشتنراحتي خواندن و نوشتنقابليت توسعه خوبقابليت توسعه خوب

ProgramObject 1

data

خوبخوبقابليت نگهداري قابليت نگهداري خوبخوبقابليت استفاده مجدد قابليت استفاده مجدد

Object 2Object 4

dataواحدبندي خوبواحدبندي خوب

Object 2data

Object 3datadata

٧

Page 8: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(توسعه نرم افزار ر ز رم وومشكالت روش هاي شي گرا از آنجا ناشي مي شود كه ي ي ج ز ر ي ي روش

است يك به يكيك به يكنگاشت بين مولفه ها اغلبش لف ن ا ك تغ ان ت ا ن ا ن تغ تغيير نيازمندي ها مي تواند سبب تغيير يك يا چند مولفه شود

محلي نمودن دغدغه هاي )Concerns ( يا گاهي غيرممكن عمومي دشواراست

و كدها است، در حاليكه بهبود برنامه نويسيبر روي تمركز شيء گراييباشد نيازمندي هانياز است تا تمركز بر روي

چالش اصلي توسعه نرم افزار، برآورده سازي نيازمندي هاست

٨نيازمندي ها و پوشش بهينه آنها ارائه شده استنيازمندي ها و پوشش بهينه آنها ارائه شده استتمركز بر تمركز بر با با ) ) AspectAspect--orientedoriented((توسعه مبتني بر جنبه توسعه مبتني بر جنبه

Page 9: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

بمفاهيم توسعه مبتني بر جنبه ج بر ي ب و يمدغدغه)Concern( )Conce n(

دارد اولويتنيازمندي سيستم كه براي ذينفعانمجموعه خاصي از رفتارهاي مورد نياز براي يك برنامه مي گذاردتأثير نرم افزار ماژول هاي مختلفبر باشندكاركردي يا غيركاركردي مي توانندباشندسطح باال يا سطح پائينمي توانند وا يني پ ح ي ال ب بح

٩

Page 10: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و مجداسازي دغدغه ها )Separation of concerns ( روشي براي توجه زي p(ج f(وج ي بر ي رو

) trace(گيـري دربه آنهـا بـه صـورت مجزاسـت كـه اجـازه نديها از دهدن ا ادهسازي پ به به پياده سازي را مي دهدنيازمندي ها

واحدبنـــدياز طريـــق هـــاي ســـنتي جداســـازي در روش )Modularity(ــورو ــازيمحص ــراهم )encapsulation( س ف

مي گرددهاي رويه اي دغدغه ها را به رويه ها تبديل مي كنند زبانشيزبان راهاي دغدغهها ميكننداشياءبهگرا تبديل

١٠

تبديل مي كننداشياءبهگرا دغدغه ها راهاي شيزبانطراحي هاي سرويس گرا دغدغه ها را به سرويس تبديل مي كنند

Page 11: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه

concern concern

concern

١١

concern co ce

Separation of concerns

Page 12: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و مCore concernsCore concerns

دغدغه هايي هستند كه به اهداف اصـلي سيسـتم مـرتبط هسـتند و.مي گيرندقرارشيءمعموالً در يك رويه، ماژول يا ي ژول روي ي ر يرراريوال ي

Crosscutting ConcernsCrosscutting Concerns

اط ل اژ ن نشل گ ا ق قرار مي گيرند شيءمعمول در چندين رويه، ماژول يابه طور. مي شوددر هنگام تغيير به دو صورت مشكل ايجاد:

Tangling : مي كنديك مولفه بيش از يك نيازمندي را پياده سازي.Scattering : مي شودپياده سازي يك نيازمندي توسط چند مولفه انجام.

١٢

Page 13: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و مProgramProgram

Object 1data

Concern Implementation

A Object 1

Object 2data

Object 4data

B Object 2C Object 3data

Object 3data

D Object 4E Object 1,2,3

C tti CC tti C

١٣

Crosscutting ConcernsCrosscutting Concerns

Page 14: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

بنمونه توجه به جنبه ج ب وج و

Good modularization

١٤

Good modularizationXML parsing is implemented in its own module

Page 15: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(نمونه توجه به جنبه ج وج و

Good modularization

١٥

Good modularizationURL pattern matching is implemented in 2 modules

Page 16: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(نمونه توجه به جنبه ج وج و

B d d l i ti

١٦

Bad modularizationLogging is implemented in a lot of different places

Page 17: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و م)Tangling(درهم پيچيدگي

synchronized void put (SensorRecoed rec) throws Interrupted Exception{

ي پيچي م gر g

{if (numberOfEntries == bufsize)

wait ();store [back] = new SensorRecord (rec.sensorId, rec.sensoral) ;back = back + 1;if (back == bufsize)

back =0;b OfE t i b OfE t i 1numberOfEntries = numberOfEntries +1;

notify();} // put

١٧

Page 18: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و ماكندگ )Scattering(پ

Image ConsultationPatient

)Scattering(پراكندگي

getModality ()archive ()

<attribute decls>

makeAppoint ()cancelAppoint ()

<attribute decls>

getName ()editName ()

<attribute decls>

()getDate ()editDate ()...saveDiagnosis ()

pp ()assignNurse ()bookEquip ()...anonymise ()

()getAddress ()editAddress ()...anonymise ()

saveType ()...

saveConsult ()...

...

١٨

Page 19: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و ميپيامدهاي درهم پيچيدگي و پراكندگي پر و ي پيچي م ر ي پي

تغيير در يك دغدغه موجب تغيير در دغدغه هاي ديگر مي شودند از ن كشف نهاعد كد ق ط از دغدغه ه هر دغدغه از طريق كد منبعيها عدم كشف نيازمندي سيستم واحدبندياز بين بردنضعف در درك و فهم

براي سيستم هاي بزرگ

قابليت درك ضعيف

قابليت ضعيف سختي توسعه نگهداري

١٩

Page 20: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

انواع دغدغه ها -مفاهيم توسعه مبتني بر جنبه ب ج بر ي ب و عيم وكاركردي)Functional(

با وظيفه مندي خاصي از سيستم مرتبط هستند كيفيت سرويس)Quality of Service(

ف رفتار غيروظيفه مندي سيستم مرتبط هستند سياست)Policy(

هستند حاكم سيستم از استفاده بر كه سياستهاي سياست هايي كه بر استفاده از سيستم حاكم هستند سيستم)System(

ربه خصوصيات سيستم به عنوان يك كل مانند قابليت نگهداري و پيكربنديش مـرتبط ش ر پ و ري ه ل ن و م وهستند

سازماني)Organisational(آ

٢٠

به اهداف سازماني و اولويت هاي آن مرتبط هستند

Page 21: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و مجنبه)Aspect( ب ج

دغدغـه هـاي تجريدي است كه كد مرتبط باcross-cutting را كپسـولهيمي كند

بايد به كد برنامه اضـافه چه وقتدر هر جنبه اطالعاتي در مورد اينكهشود، وجود دارد

يك جنبه متشكل از دو بخشPointcut, Advice Code است ،نقطـه اتصـال جايي در برنامه كه جنبه مي تواند در آنجا افزوده شـود و زو ج ر و ي ب ج بر ر يي لج

)Join Point( نام دارددر برنامهنقاط اتصالبه مجموعه اي ازPointcutگويند

٢١

ز ي و برلب ور

Page 22: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه

Advice

كد يك دغدغه پياده سازيWaving

كد تلفيقAdvice در برنامه با استفاده ازAspect Weaver

Joint Point Model

كه مي توانند در يك رويدادهامجموعه اي ازPointcut مورد اشاره قـرارگيرند

٢٢

Page 23: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و ممحل قرارگيريانواع JPهاي JPهاي قرارگيريانواع محل

فراخواني و اجراي متد دو تا : متدهاJP محسوب مي شوندفراخواني و اجراي يك سازنده، نوعي از : سازنده هاJP ها استررخ دادن استثناء و اجرا رفتار مورد انتظار دو نقطه اصلي در :استثناءها ي و ر ور ر ر جر و ن رخ

ها است JPاجراي يك برنامه كاربردي نوعي از ا ل اف ن انن ت ا ل ف ش ن ان خ ا JPل عمليات خواندن و نوشتن بر روي فيلدها مي توانند به عنوان :فيلدهاJP

در نظر گرفته شوند

٢٣

Page 24: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

Aspectpنمونه

aspect authentication {{ before: call (public void update* (..)) // this is a pointcut { // this is the advice that should be executed when woven into // the executing system// the executing system int tries = 0 ; string userPassword = Password.Get ( tries ) ; while (tries < 3 && userPassword != thisUser.password ( ) ) { // allow 3 tries to get the password right tries = tries + 1 ; userPassword = Password.Get ( tries ) ; }

if (userPassword ! thisUser password ( )) then if (userPassword != thisUser.password ( )) then //if password wrong, assume user has forgotten to logout System.Logout (thisUser.uid) ; } } // authentication

٢٤

} // authentication

Page 25: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

Aspect weavingp g

Aspect Weaversرا منبع برنامهپردازشكد در را جنبهها و نموده Aspect Weaversنموده و جنبه ها را در برنامه پردازشكد منبع راخاصي قرار مي دهد Pointcutو در

سه روش براي قرار دادن جنبه هاSource Code pre-processingp p g

Link-time weaving

Dynamic, Execution-time weaving

٢٥

Page 26: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

Aspect weavingp g

٢٦

Page 27: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

بنمونه استفاده از جنبه ج ز وسيستم مديريت هتل

٢٧

Page 28: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(نمونه استفاده از جنبه ج ز وتحقق بخشيدن به دغدغه ها

٢٨

Page 29: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(نمونه استفاده از جنبه ج ز وتحقق بخشيدن به دغدغه ها

٢٩

Page 30: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(نمونه استفاده از جنبه ج ز وتحقق بخشيدن به دغدغه ها

٣٠

Page 31: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(نمونه استفاده از جنبه ج ز وكد پياده سازي

1. public aspect CheckInCustomer {2. ...3. public void Room.assignCustomer ()4. {5. // code to check in customer6 }6. }7. public void Reservation.consume()8. {9. // code to consume reservation10. }11. public void Payment.createBill()12. {13. // code to generate an initial outstanding bill

٣١

13. // code to generate an initial outstanding bill14. }

Page 32: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

و جنبهءشي بي ج وبشباهت

هر دو داراي نوع هستندشوند داده توسعه ديگر جنبههاي يا ديگر كالسهاي به مي توانند به كالس هاي ديگر يا جنبه هاي ديگر توسعه داده شوندميتوانندمي توانند به صورت تجريد باشندباشند داده نوع و متدها فيلد، داراي توانند م مي توانند داراي فيلد، متدها و نوع داده باشند

تفاوتگ جنبه ها مي توانند به صفات ديگر اعضا دسترسي داشته باشند

٣٢

Page 33: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

بتوسعه نرم افزار مبتني بر جنبه ج بر ي ب ر ز رم وز توليـد و توسـعه در جنبـهتوسعه مبتني بر جنبه به استفاده از ب ب ج بر ي ب بو ورج و ي و

اشاره دارد نرم افزار همانند متدولوژي هاي ديگر، متدولوژي هاي مبتني بر جنبه نيـز

مي دانند مبتني بر جنبهفازهاي مشابه خود را دارند، اما خود را

٣٣

Page 34: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(توسعه نرم افزار مبتني بر جنبه ج ر ي ر ز رم و

... Requirements Engineering... Requirements Engineering

... Architecture... Architecture

Aspect-oriented...Aspect-oriented...... Design... Design

... Architecture... Architecture

pp... Programming... Programming

... Verification techniques... Verification techniques

... Middleware... Middleware

... Verification techniques... Verification techniques

٣٤

Page 35: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

رمهندسي نيازمندي هاي جنبه گرا ب ج ي ي ز ي يكه با توسـعه دغدغه هاي مشتريروشي به منظور تمركز بر روي روي بر ز ر ور ب ي ريرو وي ب

جنبه گرا سازگار استش ا اا پايه اين روشViewpointهستند ها

استفاده ازViewpoint دغدغه ها جداسازيها براي استفاده ازViewpoint مـرتبط گـروه هـاي نيازمندي هايها براي نمايش

ذينفعانCross-cutting concerns دغدغه هايي كه توسط تمامViewpoint ها مشخص

مي شوند

٣٥

Page 36: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز ي

Cross-cutting

٣٦

Cross cutting concerns

Page 37: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز ي نيازمندي هاي اصلي)Core Requirements( ي ي ي ز )q(ي

دغدغه هاي اصليهمان )Core Concerns (هستندت ا ل ا ها ند از ن ه ا ت د ت ه ت از هدف هدف از توسعه سيستم دستيابي به نيازمندي هاي اصلي است

نيازمندي هاي توسعه اي)Extension Requirements( مجموعه اي ازCross-cutting Concerns هستند

٣٧

Page 38: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ينو ي جير ز رو

مجموعه اي از فروشگاه ها كه خدمات خود را به صورت اينترنتـي ارائـهيمي دهند

كاربران با مشاهده كاالها، درخواست خريد خود را ارائه مي دهندوكاال براي كاربر بوسيله پست ارسال مي شود ي ل ر پ ي بو ربر ي بر اين فروشگاه ها داراي يك انبار مركزي هستند كه كاالهـاي خـود را از

يآنجا تهيه و در صورت خرابي به آنجا ارسال مي نمايند ي ل ر ج ب بي ر ور ر و هي ج سـاعت پـس از 48در صورت خرابي يا نقص در كاال، كاربر مـي توانـد

خريد آن را عودت دهد

٣٨

و ر ن ر

Page 39: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو

ديد كاربرانويجستجوي كاالهامشاهده موجودي هر كاالمشاهده موجودي كاال در فروشگاه هاي خاصپيدا كردن نزديكترين فروشگاهدرخواست خريد كاال

كاال اف ش ا گ گزارش عدم دريافت كاالگزارش خرابي كاالي خريداري شده...

٣٩

...

Page 40: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو

ديد فروشندهمركزي انبار از كاال تقاضاي تقاضاي كاال از انبار مركزيجستجوي كاالهايمشاهده موجودي كاالها وجومشاهده، بررسي و تائيد درخواست خريد كاالمشاهده، بررسي و تائيد گزارش خرابي كاالارسال كاالي داراي نقص به انبار مركزي...

٤٠

Page 41: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو

ديد انباردارمتقاض فروشگاه به كاال ارسال ارسال كاال به فروشگاه متقاضيجستجوي كاالها در انبار مركزيصبررسي و تعويض كاالي داراي نقص ي ر ي ويض و ي بررباركدگذاري كاالهاي انباربروز نگهداري اطالعات موجودي انبار...

٤١

Page 42: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو

نيازمندي هاي اصلين ا ن شا ا ا كاال انن ت ا كا كاربران مي توانند كاالها را جستجو و مشاهده نمايند

مـي تواننـد اطالعـات كامـل كـاال را مشـاهده و ) شناسايي شده(كاربران مجازكنند يد خ درخواست خريد كننددرخواست

فروشندگان مي توانند موجودي كاالي خود را مشاهده و تغيير دهندنمايد ايجاد را كاال تعويض زمانبندي برنامه بايست م انباردار انباردار مي بايست برنامه زمانبندي تعويض كاال را ايجاد نمايد...

٤٢

Page 43: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يديدگاه آنالين:نمونه زنجيرهاي فروشگاه فروشگاه زنجيره اي آنالين:نمونه ديدگاه

نيازمندي هاي توسعه اي ديد كاربر (كاربر و فروشنده مي توانند برنامه زماني تعويض كاال را مشاهده نمايد

)ديد انباردار+ ديد فروشنده + ركردي

كاربر و انباردار مي توانند گزارش خرابي كاالي تائيد شـده توسـط فروشـنده را)ديد انباردار+ ديد فروشنده + ديد كاربر (مشاهده نمايند

كاري

اطالعات كاربران، فروشندگان و انبارداران به صورت رمزشده ذخيره مي شود

غيركاركرد

٤٣

Page 44: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

رمعماري جنبه گرا ب ج ري معماري سيستم جنبه گرا برپاية معماري سيستم هاي اصلي)Core ي ي م ي ري ي برپ ر ب ج م ي (ري

Systems ( و توسعه ها)Extensions (است

Ext 3

Ext 2

Ext 1

Core systemهاي اصلي نيازمندي

اي هاي توسعه نيازمندي

Ext 4

٤٤

Ext 6Ext 5

Page 45: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(معماري جنبه گرا ر ج ريوانواع توسعه ها ع و

توسعه هاي كاركردي ثانويهزقابليت هايي كاركردي اضافه اي را به سيستم اصلي مي افزايد ي ي م ي ي ر ي

توسعه هاي سياستي)Policy( ماننـد امنيـت (قابليت هاي كاركردي را براي حمايت از سياست هاي سـازماني (

مي افزايد توسعه هاي كيفيت سرويس)QoS(

قابليت هاي كاركردي را براي كمك به نگهداري كيفيت سرويس مي افزايد توسعه هاي زيرساختي)Infrastructure(

٤٥

قابليت هاي كاركردي را براي حمايـت از پيـاده سـازي سيسـتم روي سـكوهايمختلف مي افزايد

Page 46: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

رطراحي جنبه گرا ب ج ي رپيـادهسـازي بـراي جنبهها از سيستمي طراحي crossفرآيند طراحي سيستمي از جنبه ها بـراي پيـاده سـازي -crossفرآيند

cutting concerns و ديگر نيازمندي هـايي كـه در طـول فرآينـدمهندسي نيازمندي ها شناسايي شده اند، استفاده مي كند

كل مش دو ه ك ود ش ام انج هاي هگون ب بايد جنبهگرا طراح طراحي جنبه گرا بايد بـه گونـه اي انجـام شـود كـه دو مشـكلScattering وTangling به كمترين حد خود برسد

٤٦

Page 47: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(طراحي جنبه گرا ر يج رProgram

ProgramObject 1

data

Object 1data

Object 2

Object 4data

Object 2data

Object 4data

data

Object 3data

Object 3data

Implicit invocation

Aspect

٤٧

Implicit invocation

Page 48: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(طراحي جنبه گرا ر يج رمي تواند به عنوان جنبه در نظر گرفته شودمورد كاربري ربري وور ر ر ر ب ج ن و ب و ي ايده استفاده از مورد كاربري براي جنبه توسطJacobsen و بــا

-useو use-case slicesاستفـاده از مفـاهيم جـديــدي چــون

case modulesارائه شده استبراي نمايش مدل معمـاري جنبـه گـراي مورد كاربري توسعه اي

ل اا ا توسعه ها بكار مي رود+اصلي

٤٨

Page 49: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(طراحي جنبه گرا ر يج رمورد كاربري توسعه اي

View maintenanceschedule

«extend»

schedule

View itemUser

٤٩

Page 50: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(طراحي جنبه گرا ر يج ررافرآيند انجام طراحي جنبه گرا ب ج ي را م ج ا رآي

بين جنبه ها شناسايي تعارضتعارضبايد عدم همپوشاني جنبه هاعدم همپوشاني جنبه هابراي بررسيش و رفع شودف

٥٠

Page 51: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(طراحي جنبه گرا ر يج راستفاده ازUMLبراي جنبه ها

مدلي نه چندان كامل از تعريف جنبه

«aspect»«aspect»Maintenance

pointcutsviewMain = call getItemInfo (..)

i ll ( )mainco = call removeItem (..)main ci = call addItem (..)

class extensions

ViewMaintenanceHistory

<viewItem> { after (<viewMain>)displayHistory}

٥١

More extensions here

Page 52: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

ربرنامه نويسي جنبه گرا ب ج ي وي بردر شيوه فكر كردن در زمينه مهندسي نرم افزاريانقالب ريب ز رم ي ه ي ز ر ن ر ر يو ر براي اولين بار توسطGregor Kiczales معرفي شد 1997در سالنيز اطالق مي شود جداسازي پيشرفته دغدغه هاجداسازي پيشرفته دغدغه هامكانيزمجنبهكنندههاي پشتيبانيزبان ن يزب يب پ بي

AspectJ : يك بسته كه امكاناتAOP را به زبـان برنامـه نويسـي جـاوايكنداضافه مي ا

Aspeckwerkz , Jboss-AOP , HyperJ

٥٢

Page 53: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

رآزمايش جنبه گرا ب يشج ز وهمانند ساير سيستم ها، سيسـتم هـاي جنبـه گـرا مـي تواننـد ي ر ب ج ي م ي م ي ير

مورد آزمايش قرار گيرند جعبه سياهجعبه سياهبه صورت ش ا كفآ ا ا اآ ا برنامه استآنها پيچيده و وابسته به كد جعبه سفيدآزمايش.

مشكالت آزمايش جنبه هارابط جنبه چگونه مي تواند آزمايش شود؟وچگونه جنبه ها مي توانند مستقل از سيستم اصلي آزمايش شوند؟ يش آز ي ا م ي از ل وا ي ب ج و چ چگونه مي توان آزمايشي طراحي نمود كه همه نقاط اتصال اجرا شده و

گيرند؟ قرار آزمايش مورد مناسب جنبههاي

٥٣

جنبه هاي مناسب مورد آزمايش قرار گيرند؟

Page 54: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

)ادامه(آزمايش جنبه گرا ر شج زبراي جنبه ها غيرممكن است، به همين گراف جريان برنامهتوليد ي برو ن جري ينر ب ن ير ب ج ي بر

دليل طراحي آزمايشاتي كه تضمين دهند همه تركيبات جنبه ها است ا دش ند ش ا اج اصل كد و كد اصلي اجرا شوند، دشوار استو

پوشش آزمايش )test coverage (معناي خاصي نداردكد هر جنبه يكبار اجرا شود؟ كد هر جنبه در هر نقطه اتصالي كه جنبه قرار داده شده اسـت يكبـار

اجرا شود؟؟

٥٤

Page 55: ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ سردfaculties.sbu.ac.ir/~s_khoshnevis/IAUM/ASE941/ASE-Session...(ﻪﻣادا) ررﺰاﺰﻓامﺮﻧ ﻪﻌﺳﻮﺗ

ا پايانا

٥٥