ﻪﺘﻓﺮﺸﻴﻴ ﭘ راﺰﻓامﺮﻧ ﻲﺳﺪﻨﻬﻣ...
TRANSCRIPT
تعاليتعالي بسمهبسمه
شرفتهشرفتهييدرس مهندسي نرم افزار پدرس مهندسي نرم افزار پ
))AspectAspect--oriented Developmentoriented Development((توسعه مبتني بر جنبه توسعه مبتني بر جنبه
مبتني بر مباحث دكتر فريدون شمس مبتني بر مباحث دكتر فريدون شمس تغيير(( اندكي تغييربا اندكي ))با ))با اندكي تغييربا اندكي تغيير((
خوشنويسخوشنويس
بفهرست مطالب رنرم افزارهاي مدرن و مشكالت آنتوسعه نو و رن ي ر ز رممفاهيم توسعه مبتني بر جنبهنمونه هاي توجه به جنبهءتفاوت جنبهش با با جنبهشيءتفاوتتوسعه نرم افزار مبتني بر جنبه
٢
رتوسعه نرم افزار ز رم و
نرم افزارهاي قديمينرم افزارهاي موجود نرم افزارهاي آينده
ثابت، محاسباتي و داده گراثابت، محاسباتي و داده گراتوسعه نرم افزار از حالت حالت ابه لفهگ از ن به ته ب يا اپ لفهگ از ن به ته ب يا استپ شده ديل ت
٣
تبديل شده استپويا، بسته به نياز و مولفه گراپويا، بسته به نياز و مولفه گرابه حالت
)ادامه(توسعه نرم افزار ر ز رم وواحدبندي
Object Oriented ProgrammingObject Oriented Programming
واحدبندي روشي براي مهار پيچيدگي است
Data AbstractionData Abstraction
Com
plex
ity
Structured ProgrammingStructured Programming
Modular ProgrammingModular ProgrammingC
Compiled Programming LanguagesCompiled Programming Languages
٤Modularity
)ادامه(توسعه نرم افزار ر ز رم وبرنامه نويسي ساختاريافتهبرنامه نويسي ساختاريافته
راحتي خواندن و نوشتنراحتي خواندن و نوشتنقابليت توسعه پائينقابليت توسعه پائين
Program
Main program
i = 1
ين پ و ي ينب پ و ي بقابليت نگهداري پائينقابليت نگهداري پائينقابليت استفاده مجدد پائينقابليت استفاده مجدد پائين
data
while (i < 4) { print(i) i = i + 1}
فاقد واحدبنديفاقد واحدبندي
}
٥
)ادامه(توسعه نرم افزار ر ز رم وبرنامه نويسي رويه ايبرنامه نويسي رويه اي
راحتي خواندن و نوشتنراحتي خواندن و نوشتنقابليت توسعه بهبوديافتهقابليت توسعه بهبوديافته
ProgramMain program
data ي بهبو و يت يب بهبو و يت ب بهبوديافتهبهبوديافتهقابليت نگهداري قابليت نگهداريبهبوديافتهبهبوديافتهقابليت استفاده مجددقابليت استفاده مجدد
data
Procedure1
Procedure2
واحدبندي بهبوديافتهواحدبندي بهبوديافته1 2
Proceduren
٦
)ادامه(توسعه نرم افزار ر ز رم وبرنامه نويسي شي گرابرنامه نويسي شي گرا
راحتي خواندن و نوشتنراحتي خواندن و نوشتنقابليت توسعه خوبقابليت توسعه خوب
ProgramObject 1
data
خوبخوبقابليت نگهداري قابليت نگهداري خوبخوبقابليت استفاده مجدد قابليت استفاده مجدد
Object 2Object 4
dataواحدبندي خوبواحدبندي خوب
Object 2data
Object 3datadata
٧
)ادامه(توسعه نرم افزار ر ز رم وومشكالت روش هاي شي گرا از آنجا ناشي مي شود كه ي ي ج ز ر ي ي روش
است يك به يكيك به يكنگاشت بين مولفه ها اغلبش لف ن ا ك تغ ان ت ا ن ا ن تغ تغيير نيازمندي ها مي تواند سبب تغيير يك يا چند مولفه شود
محلي نمودن دغدغه هاي )Concerns ( يا گاهي غيرممكن عمومي دشواراست
و كدها است، در حاليكه بهبود برنامه نويسيبر روي تمركز شيء گراييباشد نيازمندي هانياز است تا تمركز بر روي
چالش اصلي توسعه نرم افزار، برآورده سازي نيازمندي هاست
٨نيازمندي ها و پوشش بهينه آنها ارائه شده استنيازمندي ها و پوشش بهينه آنها ارائه شده استتمركز بر تمركز بر با با ) ) AspectAspect--orientedoriented((توسعه مبتني بر جنبه توسعه مبتني بر جنبه
بمفاهيم توسعه مبتني بر جنبه ج بر ي ب و يمدغدغه)Concern( )Conce n(
دارد اولويتنيازمندي سيستم كه براي ذينفعانمجموعه خاصي از رفتارهاي مورد نياز براي يك برنامه مي گذاردتأثير نرم افزار ماژول هاي مختلفبر باشندكاركردي يا غيركاركردي مي توانندباشندسطح باال يا سطح پائينمي توانند وا يني پ ح ي ال ب بح
٩
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و مجداسازي دغدغه ها )Separation of concerns ( روشي براي توجه زي p(ج f(وج ي بر ي رو
) trace(گيـري دربه آنهـا بـه صـورت مجزاسـت كـه اجـازه نديها از دهدن ا ادهسازي پ به به پياده سازي را مي دهدنيازمندي ها
واحدبنـــدياز طريـــق هـــاي ســـنتي جداســـازي در روش )Modularity(ــورو ــازيمحص ــراهم )encapsulation( س ف
مي گرددهاي رويه اي دغدغه ها را به رويه ها تبديل مي كنند زبانشيزبان راهاي دغدغهها ميكننداشياءبهگرا تبديل
١٠
تبديل مي كننداشياءبهگرا دغدغه ها راهاي شيزبانطراحي هاي سرويس گرا دغدغه ها را به سرويس تبديل مي كنند
)ادامه(مفاهيم توسعه مبتني بر جنبه
concern concern
concern
١١
concern co ce
Separation of concerns
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و مCore concernsCore concerns
دغدغه هايي هستند كه به اهداف اصـلي سيسـتم مـرتبط هسـتند و.مي گيرندقرارشيءمعموالً در يك رويه، ماژول يا ي ژول روي ي ر يرراريوال ي
Crosscutting ConcernsCrosscutting Concerns
اط ل اژ ن نشل گ ا ق قرار مي گيرند شيءمعمول در چندين رويه، ماژول يابه طور. مي شوددر هنگام تغيير به دو صورت مشكل ايجاد:
Tangling : مي كنديك مولفه بيش از يك نيازمندي را پياده سازي.Scattering : مي شودپياده سازي يك نيازمندي توسط چند مولفه انجام.
١٢
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و م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
بنمونه توجه به جنبه ج ب وج و
Good modularization
١٤
Good modularizationXML parsing is implemented in its own module
)ادامه(نمونه توجه به جنبه ج وج و
Good modularization
١٥
Good modularizationURL pattern matching is implemented in 2 modules
)ادامه(نمونه توجه به جنبه ج وج و
B d d l i ti
١٦
Bad modularizationLogging is implemented in a lot of different places
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و م)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
١٧
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و ماكندگ )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 ()...
...
١٨
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و ميپيامدهاي درهم پيچيدگي و پراكندگي پر و ي پيچي م ر ي پي
تغيير در يك دغدغه موجب تغيير در دغدغه هاي ديگر مي شودند از ن كشف نهاعد كد ق ط از دغدغه ه هر دغدغه از طريق كد منبعيها عدم كشف نيازمندي سيستم واحدبندياز بين بردنضعف در درك و فهم
براي سيستم هاي بزرگ
قابليت درك ضعيف
قابليت ضعيف سختي توسعه نگهداري
١٩
انواع دغدغه ها -مفاهيم توسعه مبتني بر جنبه ب ج بر ي ب و عيم وكاركردي)Functional(
با وظيفه مندي خاصي از سيستم مرتبط هستند كيفيت سرويس)Quality of Service(
ف رفتار غيروظيفه مندي سيستم مرتبط هستند سياست)Policy(
هستند حاكم سيستم از استفاده بر كه سياستهاي سياست هايي كه بر استفاده از سيستم حاكم هستند سيستم)System(
ربه خصوصيات سيستم به عنوان يك كل مانند قابليت نگهداري و پيكربنديش مـرتبط ش ر پ و ري ه ل ن و م وهستند
سازماني)Organisational(آ
٢٠
به اهداف سازماني و اولويت هاي آن مرتبط هستند
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و مجنبه)Aspect( ب ج
دغدغـه هـاي تجريدي است كه كد مرتبط باcross-cutting را كپسـولهيمي كند
بايد به كد برنامه اضـافه چه وقتدر هر جنبه اطالعاتي در مورد اينكهشود، وجود دارد
يك جنبه متشكل از دو بخشPointcut, Advice Code است ،نقطـه اتصـال جايي در برنامه كه جنبه مي تواند در آنجا افزوده شـود و زو ج ر و ي ب ج بر ر يي لج
)Join Point( نام دارددر برنامهنقاط اتصالبه مجموعه اي ازPointcutگويند
٢١
ز ي و برلب ور
)ادامه(مفاهيم توسعه مبتني بر جنبه
Advice
كد يك دغدغه پياده سازيWaving
كد تلفيقAdvice در برنامه با استفاده ازAspect Weaver
Joint Point Model
كه مي توانند در يك رويدادهامجموعه اي ازPointcut مورد اشاره قـرارگيرند
٢٢
)ادامه(مفاهيم توسعه مبتني بر جنبه ج ر ي و ممحل قرارگيريانواع JPهاي JPهاي قرارگيريانواع محل
فراخواني و اجراي متد دو تا : متدهاJP محسوب مي شوندفراخواني و اجراي يك سازنده، نوعي از : سازنده هاJP ها استررخ دادن استثناء و اجرا رفتار مورد انتظار دو نقطه اصلي در :استثناءها ي و ر ور ر ر جر و ن رخ
ها است JPاجراي يك برنامه كاربردي نوعي از ا ل اف ن انن ت ا ل ف ش ن ان خ ا JPل عمليات خواندن و نوشتن بر روي فيلدها مي توانند به عنوان :فيلدهاJP
در نظر گرفته شوند
٢٣
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
Aspect weavingp g
Aspect Weaversرا منبع برنامهپردازشكد در را جنبهها و نموده Aspect Weaversنموده و جنبه ها را در برنامه پردازشكد منبع راخاصي قرار مي دهد Pointcutو در
سه روش براي قرار دادن جنبه هاSource Code pre-processingp p g
Link-time weaving
Dynamic, Execution-time weaving
٢٥
Aspect weavingp g
٢٦
بنمونه استفاده از جنبه ج ز وسيستم مديريت هتل
٢٧
)ادامه(نمونه استفاده از جنبه ج ز وتحقق بخشيدن به دغدغه ها
٢٨
)ادامه(نمونه استفاده از جنبه ج ز وتحقق بخشيدن به دغدغه ها
٢٩
)ادامه(نمونه استفاده از جنبه ج ز وتحقق بخشيدن به دغدغه ها
٣٠
)ادامه(نمونه استفاده از جنبه ج ز وكد پياده سازي
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. }
و جنبهءشي بي ج وبشباهت
هر دو داراي نوع هستندشوند داده توسعه ديگر جنبههاي يا ديگر كالسهاي به مي توانند به كالس هاي ديگر يا جنبه هاي ديگر توسعه داده شوندميتوانندمي توانند به صورت تجريد باشندباشند داده نوع و متدها فيلد، داراي توانند م مي توانند داراي فيلد، متدها و نوع داده باشند
تفاوتگ جنبه ها مي توانند به صفات ديگر اعضا دسترسي داشته باشند
٣٢
بتوسعه نرم افزار مبتني بر جنبه ج بر ي ب ر ز رم وز توليـد و توسـعه در جنبـهتوسعه مبتني بر جنبه به استفاده از ب ب ج بر ي ب بو ورج و ي و
اشاره دارد نرم افزار همانند متدولوژي هاي ديگر، متدولوژي هاي مبتني بر جنبه نيـز
مي دانند مبتني بر جنبهفازهاي مشابه خود را دارند، اما خود را
٣٣
)ادامه(توسعه نرم افزار مبتني بر جنبه ج ر ي ر ز رم و
... 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
٣٤
رمهندسي نيازمندي هاي جنبه گرا ب ج ي ي ز ي يكه با توسـعه دغدغه هاي مشتريروشي به منظور تمركز بر روي روي بر ز ر ور ب ي ريرو وي ب
جنبه گرا سازگار استش ا اا پايه اين روشViewpointهستند ها
استفاده ازViewpoint دغدغه ها جداسازيها براي استفاده ازViewpoint مـرتبط گـروه هـاي نيازمندي هايها براي نمايش
ذينفعانCross-cutting concerns دغدغه هايي كه توسط تمامViewpoint ها مشخص
مي شوند
٣٥
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز ي
Cross-cutting
٣٦
Cross cutting concerns
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز ي نيازمندي هاي اصلي)Core Requirements( ي ي ي ز )q(ي
دغدغه هاي اصليهمان )Core Concerns (هستندت ا ل ا ها ند از ن ه ا ت د ت ه ت از هدف هدف از توسعه سيستم دستيابي به نيازمندي هاي اصلي است
نيازمندي هاي توسعه اي)Extension Requirements( مجموعه اي ازCross-cutting Concerns هستند
٣٧
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ينو ي جير ز رو
مجموعه اي از فروشگاه ها كه خدمات خود را به صورت اينترنتـي ارائـهيمي دهند
كاربران با مشاهده كاالها، درخواست خريد خود را ارائه مي دهندوكاال براي كاربر بوسيله پست ارسال مي شود ي ل ر پ ي بو ربر ي بر اين فروشگاه ها داراي يك انبار مركزي هستند كه كاالهـاي خـود را از
يآنجا تهيه و در صورت خرابي به آنجا ارسال مي نمايند ي ل ر ج ب بي ر ور ر و هي ج سـاعت پـس از 48در صورت خرابي يا نقص در كاال، كاربر مـي توانـد
خريد آن را عودت دهد
٣٨
و ر ن ر
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو
ديد كاربرانويجستجوي كاالهامشاهده موجودي هر كاالمشاهده موجودي كاال در فروشگاه هاي خاصپيدا كردن نزديكترين فروشگاهدرخواست خريد كاال
كاال اف ش ا گ گزارش عدم دريافت كاالگزارش خرابي كاالي خريداري شده...
٣٩
...
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو
ديد فروشندهمركزي انبار از كاال تقاضاي تقاضاي كاال از انبار مركزيجستجوي كاالهايمشاهده موجودي كاالها وجومشاهده، بررسي و تائيد درخواست خريد كاالمشاهده، بررسي و تائيد گزارش خرابي كاالارسال كاالي داراي نقص به انبار مركزي...
٤٠
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو
ديد انباردارمتقاض فروشگاه به كاال ارسال ارسال كاال به فروشگاه متقاضيجستجوي كاالها در انبار مركزيصبررسي و تعويض كاالي داراي نقص ي ر ي ويض و ي بررباركدگذاري كاالهاي انباربروز نگهداري اطالعات موجودي انبار...
٤١
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يفروشگاه زنجيره اي آنالين:نمونه ديدگاه ي ينو ي جير ز رو
نيازمندي هاي اصلين ا ن شا ا ا كاال انن ت ا كا كاربران مي توانند كاالها را جستجو و مشاهده نمايند
مـي تواننـد اطالعـات كامـل كـاال را مشـاهده و ) شناسايي شده(كاربران مجازكنند يد خ درخواست خريد كننددرخواست
فروشندگان مي توانند موجودي كاالي خود را مشاهده و تغيير دهندنمايد ايجاد را كاال تعويض زمانبندي برنامه بايست م انباردار انباردار مي بايست برنامه زمانبندي تعويض كاال را ايجاد نمايد...
٤٢
)ادامه(مهندسي نيازمندي هاي جنبه گرا ر ج ي ي ز يديدگاه آنالين:نمونه زنجيرهاي فروشگاه فروشگاه زنجيره اي آنالين:نمونه ديدگاه
نيازمندي هاي توسعه اي ديد كاربر (كاربر و فروشنده مي توانند برنامه زماني تعويض كاال را مشاهده نمايد
)ديد انباردار+ ديد فروشنده + ركردي
كاربر و انباردار مي توانند گزارش خرابي كاالي تائيد شـده توسـط فروشـنده را)ديد انباردار+ ديد فروشنده + ديد كاربر (مشاهده نمايند
كاري
اطالعات كاربران، فروشندگان و انبارداران به صورت رمزشده ذخيره مي شود
غيركاركرد
٤٣
رمعماري جنبه گرا ب ج ري معماري سيستم جنبه گرا برپاية معماري سيستم هاي اصلي)Core ي ي م ي ري ي برپ ر ب ج م ي (ري
Systems ( و توسعه ها)Extensions (است
Ext 3
Ext 2
Ext 1
Core systemهاي اصلي نيازمندي
اي هاي توسعه نيازمندي
Ext 4
٤٤
Ext 6Ext 5
)ادامه(معماري جنبه گرا ر ج ريوانواع توسعه ها ع و
توسعه هاي كاركردي ثانويهزقابليت هايي كاركردي اضافه اي را به سيستم اصلي مي افزايد ي ي م ي ي ر ي
توسعه هاي سياستي)Policy( ماننـد امنيـت (قابليت هاي كاركردي را براي حمايت از سياست هاي سـازماني (
مي افزايد توسعه هاي كيفيت سرويس)QoS(
قابليت هاي كاركردي را براي كمك به نگهداري كيفيت سرويس مي افزايد توسعه هاي زيرساختي)Infrastructure(
٤٥
قابليت هاي كاركردي را براي حمايـت از پيـاده سـازي سيسـتم روي سـكوهايمختلف مي افزايد
رطراحي جنبه گرا ب ج ي رپيـادهسـازي بـراي جنبهها از سيستمي طراحي crossفرآيند طراحي سيستمي از جنبه ها بـراي پيـاده سـازي -crossفرآيند
cutting concerns و ديگر نيازمندي هـايي كـه در طـول فرآينـدمهندسي نيازمندي ها شناسايي شده اند، استفاده مي كند
كل مش دو ه ك ود ش ام انج هاي هگون ب بايد جنبهگرا طراح طراحي جنبه گرا بايد بـه گونـه اي انجـام شـود كـه دو مشـكلScattering وTangling به كمترين حد خود برسد
٤٦
)ادامه(طراحي جنبه گرا ر يج رProgram
ProgramObject 1
data
Object 1data
Object 2
Object 4data
Object 2data
Object 4data
data
Object 3data
Object 3data
Implicit invocation
Aspect
٤٧
Implicit invocation
)ادامه(طراحي جنبه گرا ر يج رمي تواند به عنوان جنبه در نظر گرفته شودمورد كاربري ربري وور ر ر ر ب ج ن و ب و ي ايده استفاده از مورد كاربري براي جنبه توسطJacobsen و بــا
-useو use-case slicesاستفـاده از مفـاهيم جـديــدي چــون
case modulesارائه شده استبراي نمايش مدل معمـاري جنبـه گـراي مورد كاربري توسعه اي
ل اا ا توسعه ها بكار مي رود+اصلي
٤٨
)ادامه(طراحي جنبه گرا ر يج رمورد كاربري توسعه اي
View maintenanceschedule
«extend»
schedule
View itemUser
٤٩
)ادامه(طراحي جنبه گرا ر يج ررافرآيند انجام طراحي جنبه گرا ب ج ي را م ج ا رآي
بين جنبه ها شناسايي تعارضتعارضبايد عدم همپوشاني جنبه هاعدم همپوشاني جنبه هابراي بررسيش و رفع شودف
٥٠
)ادامه(طراحي جنبه گرا ر يج راستفاده از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
ربرنامه نويسي جنبه گرا ب ج ي وي بردر شيوه فكر كردن در زمينه مهندسي نرم افزاريانقالب ريب ز رم ي ه ي ز ر ن ر ر يو ر براي اولين بار توسطGregor Kiczales معرفي شد 1997در سالنيز اطالق مي شود جداسازي پيشرفته دغدغه هاجداسازي پيشرفته دغدغه هامكانيزمجنبهكنندههاي پشتيبانيزبان ن يزب يب پ بي
AspectJ : يك بسته كه امكاناتAOP را به زبـان برنامـه نويسـي جـاوايكنداضافه مي ا
Aspeckwerkz , Jboss-AOP , HyperJ
٥٢
رآزمايش جنبه گرا ب يشج ز وهمانند ساير سيستم ها، سيسـتم هـاي جنبـه گـرا مـي تواننـد ي ر ب ج ي م ي م ي ير
مورد آزمايش قرار گيرند جعبه سياهجعبه سياهبه صورت ش ا كفآ ا ا اآ ا برنامه استآنها پيچيده و وابسته به كد جعبه سفيدآزمايش.
مشكالت آزمايش جنبه هارابط جنبه چگونه مي تواند آزمايش شود؟وچگونه جنبه ها مي توانند مستقل از سيستم اصلي آزمايش شوند؟ يش آز ي ا م ي از ل وا ي ب ج و چ چگونه مي توان آزمايشي طراحي نمود كه همه نقاط اتصال اجرا شده و
گيرند؟ قرار آزمايش مورد مناسب جنبههاي
٥٣
جنبه هاي مناسب مورد آزمايش قرار گيرند؟
)ادامه(آزمايش جنبه گرا ر شج زبراي جنبه ها غيرممكن است، به همين گراف جريان برنامهتوليد ي برو ن جري ينر ب ن ير ب ج ي بر
دليل طراحي آزمايشاتي كه تضمين دهند همه تركيبات جنبه ها است ا دش ند ش ا اج اصل كد و كد اصلي اجرا شوند، دشوار استو
پوشش آزمايش )test coverage (معناي خاصي نداردكد هر جنبه يكبار اجرا شود؟ كد هر جنبه در هر نقطه اتصالي كه جنبه قرار داده شده اسـت يكبـار
اجرا شود؟؟
٥٤
ا پايانا
٥٥