ComponentBasedSESeminars.PDF

‫مهندسی نرمافزار مبتنی بر مولفه‬
‫مقدمات و کلیات‬
‫‪ .۱‬مقدمه‬
‫هدف از تولیسسد نرمافزارهای مبتنسسی بر مولفسسه و اسسستفاده از مولفههسسا در مهندسسسی نرمافزار‪ ،‬توسسسعه نرمافزار از قسسسمتهای از‬
‫پیشسسساخته شده‪ ،‬اسسستفاده مجدد از مولفههسسا در کاربردهای نرمافزاری و سسسهولت هماهنگسسسازی و پیکربندی مولفههای بسسه‬
‫کاررفتسه در کاربردهای نرمافزاری اسست‪ .‬از طرف دیگسر اسستفاده از نرمافزارهای مبتنسی بر مولفسه امکان آن را فراهسم میسسازد تسا‬
‫نرمافزارهای قابلاتکاتری ساخته شده و زمان لزم میان انتشار نسخههای مختلف نرمافزار کاهش یابد‪.‬‬
‫اسستفاده از مولفههسا در صسنعت فراگیسر شده اسست و بسه جرات میتوان گفست تمامسی صسنایع از مفهوم مولفههسا در توسسعه خود‬
‫استفاده میکنند‪ .‬در تمامی علوم مهندسی حرف از سرهمکردن بخشهای قابل استفاده مجدد‪ ،‬مستندسازی شده‪ ،‬قابل اعتماد‬
‫و بسا کیفیست بالسست‪ .‬حتسی در برخسی از علوم مهندسسی اسستفاده از مولفههسا‪ ،‬سسالهاست کسه انجام میپذیرد‪ .‬بسه عنوان مثال‬
‫میتوان به خانههای از پیش ساخته شده در مهند سی عمران‪ ،‬پروتئیسن در مهند سی شیمی‪ ،‬مدارهسا در مهند سی الکترون یک و‬
‫اتومبیل در مهندسی صنایع اشاره نمود‪.‬‬
‫ا ما سوال اصلی اینجاست که چرا تاکنون استفاده از مولفهها در مهندسی نرمافزار مانند دیگر علوم مهندسی پیشرفت نکرده‬
‫اسست‪ .‬دلیسل اصسلی ایسن مشکسل در ذات نرمافزار اسست‪ .‬در دیگسر علوم مهندسسی مولفههسا بسه عنوان محصسولت نهایسی و غیسر قابسل‬
‫تغییر مطرح میشوند‪ .‬اما در مهندسی نرمافزار مولفهها معمول به صورت محصولتی عمومی تولید میشوند که میتوان از آن‬
‫برای کارهای گوناگونسی اسستفاده نمود‪ .‬بسه عنوان مثال معمول رفتار مولفههای نرمافزاری را میتوان بسا اسستفاده از پارامترهای‬
‫ورودی تنظیم نمود‪.‬‬
‫علوه بر این‪ ،‬دیگر علوم مهندسی با استفاده از استانداردها‪ ،‬قوانین از مولفهها به صورت موفقیت آمیز استفاده نمایند‪ .‬اما قبل‬
‫از بروز بحران نرمافزار در سال ‪ ۱۹۶۸‬مهندسی نرمافزار دارای هیچ استانداردی نبود‪.‬‬
‫برای استفاده از مولفهها در مهندسی نرمافزار نیاز به دو گونه استاندارد زیر است‪.‬‬
‫‪ .1‬اسمتانداردهای تعاممل‪ :‬ایسن دسسته از اسستانداردها برای بیان دقیسق نحوه وابسستگی مولفههسا بسه دیگسر عناصسر‬
‫نرمافزار استفاده میشوند‪.‬‬
‫‪ .2‬ا ستانداردهای ترک یب‪ :‬ایسن دسسته از اسستانداردها برای بیان نحوه ترکیسب مولفههسا برای سساختن سساختارهای‬
‫بزرگتسر مورد اسستفاده قرار میگیرنسد و از طرف دیگسر نحوه جایگزینسی یسک مولفسه بسا مولفهای دیگسر نیسز در ایسن‬
‫دسته از استانداردها بیان میگردند‪.‬‬
‫‪ .۲‬مولفههای نرمافزاری‬
‫اکثر ما دیدی کلی و عمومی از مولفهها در ذهن خود داریم‪ .‬اما گوناگونی و تنوعی که در شکل‪ ،‬کارکرد‪ ،‬و ویژگیهای مولفهها‬
‫در مهندسسی نرمافزار وجود دارد‪ ،‬باعسث بوجود آمدن تعاریفسی گوناگون از مولفههای نرمافزاری شده اسست‪ .‬در ادبیات مهندسسی‬
‫نرمافزار میتوان تعاریف بسیاری برای مولفهها بدست آورد‪ ،‬اما نقطه مشترک تمامی تعاریف‪ ،‬پذیرفتن مولفهها بعنوان بخشی از‬
‫نرمافزار است‪ .‬اما تفاوت این تعاریف در توجه و تمرکز بر جنبه گوناگون مهندسی نرمافزار‪ ،‬مانند فازهای مختلف تولید نرمافزار‬
‫(تحلیل‪ ،‬طراحی و ‪ ،) ...‬جنبههای تجاری و معماریهای نرمافزار است‪.‬‬
‫یکسی از تعاریسف مهسم از مولفههسا تعریفسی اسست کسه ‪ Szyperski‬ارایسه داده اسست‪ .‬در ایسن تعریسف مولفههسا بر پایسه دو خصسوصیت‬
‫اصلیشان بیان شدهاند‪.‬‬
‫‪ .1‬یک مولفه نرمافزاری‪ ،‬یک واحد ترکیب با واسطهای به صورت قراردادی توصیف شده و وابستگیهای محیطی‬
‫مشخص است‪.‬‬
‫‪ .2‬یک مولفه نرمافزاری میتواند به صورت مستقل استقرار یافته و توسط یک عامل خارجی در ترکیب استفاده‬
‫شود‪.‬‬
‫این تعریف سه نکته زیر را به صورت تلویحی بیان کرده است‪.‬‬
‫‪ .1‬برای این که بتوان یک مولفه را مستقر کرد‪ ،‬باید مرز بین آن با محیط و سایر مولفهها را به صورت دقیق بیان‬
‫نمود‪.‬‬
‫‪ .2‬یک مولفه میبایست واسطهای دقیقا توصیف شده داشته باشد‪.‬‬
‫‪ .3‬پیادهسازی یک مولفه میبایست در داخل مولفه پنهان شده باشد و از طریق دیگر مولفهها در دسترس نباشد‪.‬‬
‫تعریف مهم دیگری که از مولفه نرمافزاری موجود است تعریفی است که ‪ D'Souza‬و ‪ Wills‬ارایه دادهاند‪ .‬آنها در تعریف خود‬
‫مولفه را به صورت زیر تعریف کردهاند‪.‬‬
‫‪ .1‬یک بخش قابل استفاده مجدد از نرمافزار است که به صورت مستقل توسعه یافته است و میتوان با تلفیق آن با‬
‫دی گر مولفهها واحد بزرگتری از نرمافزار را تولید کرد‪ .‬مولفهها را میتوان وفق داد اما نمیتوان در آنها تغییری‬
‫ایجاد نمود‪.‬‬
‫‪ .2‬یک مولفه میتواند کدی ترجمه شده بدون متن‪ ،‬قسمتی از مدل و یا قسمتی از طراحی باشد‪.‬‬
‫حال با توجه به دو تعریف ارایه شده‪ ،‬چه رابطهای میتوان میان یک شی و یک مولفه برقرار نمود‪ .‬در تعریف ‪ ،Szyperski‬یک‬
‫مولفسه شامسل دسسته از اشیاء اسست کسه در آن اشیسا بسا یکدیگسر همکاری کرده و شدیدا بسه هسم وابسسته هسستند‪ .‬امسا در تعریسف کسه‬
‫‪ D'Souza‬و ‪ Will‬ارایه دادهاند‪ ،‬اگر حتی یک کلس با واسطهای دقیقا تعریف شده و پیادهسازی آن واسط ارایه شود میتوان‬
‫عنوان مولفه را به آن کلس اطلق نمود‪.‬‬
‫‪ .۳‬تعریف و توصیف مولفهها‬
‫همانطور کسه از تعاریسف بیان شده در بخسش قبسل میتوان برداشست نمود‪ ،‬برای اینکسه بتوان یسک مولفسه را تولیسد و توصسیف کرد‬
‫میبایست مولفه شامل عناصر ذیل باشد‪.‬‬
‫‪ .1‬مجموعهای از واسطها‪ ،‬که به محیط ارایه شده و یا باید از محیط دریافت شوند‪.‬‬
‫‪ .2‬یک کد اجرایی‪ ،‬که از طریق واسطها با پیادهسازی دیگر مولفهها همکاری مینماید‪.‬‬
‫علوه بر دو عنصر مذکور برای افزایش کیفیت مولفهها بهتر است سه عنصر ذیل نیز به عناصر اصلی مولفه اضافه گردند‪.‬‬
‫‪ .1‬توصیف مشخصات غیر تابعی‬
‫‪ .2‬کد اعتبار سنجی‬
‫‪ .3‬اطلعات و مستندات اضافی‬
‫‪ .۱.۳‬واسطها‬
‫واسط یک مولفه در واقع توصیف نقطه اتصال به آن مولفه بدون در نظر گرفتن پیادهسازی آن است‪ .‬در واقسع واسسط‪ ،‬توصسیف‬
‫عملکرد و سرویسهای ارایه شده توسط یک مولفه است که در آن هیچ وابستگی به پیادهسازی عملکردها و سرویسها وجود‬
‫ندارد‪ .‬این جداسازی دو فایده اصلی برای مولفهها دارد‪:‬‬
‫‪ .1‬میتوان قسمت پیادهسازی را بدون تغییر واسط تعویض کرد‪.‬‬
‫‪ .2‬میتوان واسطهای جدیدی بدون تغییر پیادهسازی برای یک مولفه معرفی نمود‪.‬‬
‫برای توصیف و تعریف واسطهای یک مولفه باید از زبانها و استانداردهایی مانند ‪ Interface Definition Language‬استفاده‬
‫نمود که‬
‫‪ .1‬برای توصیف مشخصات تابعی یک مولفه کافی باشند‪.‬‬
‫‪ .2‬برای توصیف مشخصات کیفی و فراتابعی (مانند دقت‪ ،‬در دسترس بودن‪ ،‬پایداری‪ ،‬امنیت و ‪ )...‬ناکافی هستند‪.‬‬
‫واسسسطهای هسسر مولفسسه را میتوان بسسه دو دسسسته واسسسطهای خروجسسی و واسسسطهای ورودی تقسسسیم نمود‪ .‬واسسسطهای ورودی‪،‬‬
‫سرویسهای مورد نیاز مولفه از محیط را معین میسازند‪ .‬واسطهای خروجی‪ ،‬سرویسهایی که مولفه به محیط ارایه میدهد را‬
‫توصیف میکنند‪.‬‬
‫‪ .۲.۳‬قراردادها‬
‫همانطور که پیشتر آورده شد‪ ،‬تمامی جنبههای یک مولفه را نمیتوان توسط واسطها معرفی نمود‪ .‬لذا برای توصیف دقیقتر‬
‫رفتار یک مولفه از قراردادها استفاده میشود‪ .‬هر قرارداد از سه بخش زیر تشکیل شده است‪.‬‬
‫‪ .1‬ثابتها‪ :‬محدودیتهای سراسری که برای استفاده از مولفه نیاز است‪.‬‬
‫‪ .2‬پیششرطها‪ :‬محدودیتهایی که بایستی توسط مشتری برآورده شود‪.‬‬
‫‪ .3‬پسشرطها‪ :‬محدودیتهایی که مولفه پس از اجرا حتما برآورده میسازد‪.‬‬
‫علوه بر سسه بخسش فوق در قراردادهسا نحوه تعامسل میان مولفههسا نیسز بیان میگردد‪ .‬برای بیان تعامسل بیسن مولفههسا‪ ،‬مولفههای‬
‫شرکتکننده در تعامل‪ ،‬نقش هر مولفه در تعامل‪ ،‬و ثابتها بیان میگردند‪.‬‬
‫‪ .۴‬مولفهها و الگوها‬
‫همانطور کسسه میدانیسسد الگوهسسا راهکارهای تکرار شوندهای برای مسسسایل تکرار شونده هسسستند کسسه بسسه صسسورت غیسسر مجرد بیان‬
‫میگردند‪ .‬میبایست اثبات شود که این رویکردها مساله مورد نظر را حل میکنند و تنها تئوری و یا حدث نیستند‪ .‬از طرف‬
‫دیگر الگوها میبایست مکانیزمها و ساختارهای سیستم را به صورت عمیق تشریح کنند‪ .‬با توجه به این خصوصیات یک مولفه‬
‫را میتوان به عنوان پیادهسازی یک الگو در نظر گرفت‪.‬‬
‫الگوها را میتوان به سه دسته زیر تقسیم نمود‪:‬‬
‫‪ .1‬الگوهای معماری‪ ،‬که ساختار کلی و سازمان یک سیستم نرمافزاری را معین میسازند‪.‬‬
‫‪ .2‬الگوهای طرا حی‪ ،‬کسه سساختار و رفتار زیسر سسیستمها و مولفههای یسک سسیستم و همچنیسن روابسط میان آنهسا را‬
‫معین میسازند‪.‬‬
‫‪Idiom .3‬ها‪ ،‬که بسیار سطح پایین بوده و مربوط به زبان برنامهنویسی خاص و نمونه خاصی از یک مساله کوچک‬
‫هستند‪.‬‬
‫بسا توجسه بسه دسستهبندی فوق بسه نظسر میرسسد الگوهای طراحسی‪ ،‬نزدیکتریسن دسسته از الگوهسا بسه مولفههای نرمافزاری هسستند‪.‬‬
‫الگوهای طراحسی در فرآینسد تولیسد و تو سعه یسک سیستم نرمافزاری مبتنسی بر مول فه‪ ،‬که در آنها واحدهای قا بل ا ستفاده مجدد‬
‫میبایسست شناسسایی شونسد‪ ،‬بسسیار مورد اسستفاده قرار میگیرنسد‪ .‬از طرف دیگسر اسستفاده از الگوهای طراحسی موجسب سسهولت‬
‫شناسایی بخشهای قابل استفاده مجدد و یا مولفههای از پیش ساخته شده خواهد شد‪.‬‬
‫‪ .۵‬مولفهها و چارچوبهای نرمافزاری‬
‫همانطور کسه آورده شسد‪ ،‬مهندسسی نرمافزار بر پایسه مولفسه بدیسن معنسا اسست کسه »سسیستم نرمافزاری بسا ترکیسب تکههای مختلف‬
‫ساخته شود«‪ .‬چارچوبهای نرمافزاری محیطی را فراهم میآورند که بتوان از این تکهها استفاده نمود‪ .‬یک چارچوب نرمافزاری‬
‫یک طرا حی قابل استفاده مجدد از سیستم است و استخوانبندی عمومی یک کاربرد‪ ،‬که میتواند توسط یک تو سعهدهنده‬
‫نرمافزار تغییر یابد‪ ،‬را بیان مینماید‪.‬‬
‫بسه بیان دیگسر چارچوبهسا‪ ،‬در سسطح مدل و بسه صسورت عمومسی موقعیتهای قابسل تکرار را توصسیف کرده و توسسعه میدهنسد‪.‬‬
‫همانطور که در شکل ‪ ۱‬نمایش داده شده است‪ ،‬یک چارچوب مولفه را میتواند به مانند یک »بورد مدار الکترونیکی« دانست‬
‫دارای مکانهای خالی است که باید مولفهها را در آنها قرارداد تا یک سیستم اجرایی تولید شود‪.‬‬
‫شکل ‪ .۱‬چارچوب مولفه‬
‫در بحثهسا معمول دو مفهوم »مدلهای مولفسه« و »چارچوب مولفسه« بسا هسم بسه اشتباه مخلوط میشونسد‪ .‬یسک مدل مولفسه‪،‬‬
‫مجموعهای از اسستانداردها و قراردادهایسی را کسه توسسط یسک توسسعهدهنده مولفسه مورد اسستفاده قرار میگیرنسد‪ ،‬را در برمیگیرد‪.‬‬
‫همانطور که در شکل ‪ ۲‬نشان داده شده است‪ ،‬یک چارچوب مولفه‪ ،‬زیربنایی برای مدل مولفه است‪.‬‬
‫شکل ‪ .۲‬مدل مولفه‬
‫در شکل ‪ ۳‬نیز رابطه موجود میان واسطها‪ ،‬قراردادها‪ ،‬چارچوب و پیادهسازی توصیف شده است‪.‬‬
‫شکل ‪ .۳‬رابطه میان مفاهیم بیان شده‬
‫نکته دیگری که لزم به ذکر است‪ ،‬این است که چارچوبها خصوصیات کلی مربوط به ترکیب مولفهها را بیان مینمایند‪ .‬اما‬
‫قراردادها روابط میان اجزای واقعی سیستم را توصیف میکنند‪ .‬این توصیفات ممکن است برای مولفههای مختلف موجود در‬
‫یک ترکیب متفاوت باشد‪.‬‬
‫از طرف دیگر مهم است که درک کنیم الگوها و چارچوبها دو مقولهای هستند که از نظر ماهیت و طبیعت با هم تفاوت دارند‪.‬‬
‫در واقع الگوهای طراحی دارای ماهیتی منطقی هستند که برحسب تجربه و دانش از نرمافزار به دست میآیند‪ .‬در صورتی که‬
‫چارچوبهسا دارای ماهیتسی فیزیکیانسد و درواقسع برنامههای قابسل اجرا هسستند‪ .‬تفاوت میان چارچوبهسا و الگوهسا را میتوان در‬
‫جنبههای زیر خلصه نمود‪.‬‬
‫‪ .1‬سطح تجرید مربوط به الگوها و چارچوبها‬
‫‪ .2‬الگوهای طراحی‪ ،‬نسبت به چارچوبها‪ ،‬عناصر کوچکتری از معماری نرمافزارند‪.‬‬
‫‪ .3‬سطح تخصص (‪ )Specialization‬الگوها و چارچوبها‬
‫‪ .۶‬توسعه و پیادهسازی مولفهها‬
‫بسا توجسه بسه بخشهای پیشیسن میتوان گفست کسه یسک مولفسه از کدهسا و واسسطها تشکیسل شده اسست‪ .‬کدهسا بیانگسر عملکردهایسی‬
‫هسستند کسه یسک مولفسه زمان فراخوانسی انجام میدهسد‪ .‬واسسطها نیسز تمامسی اطلعات لزم برای نحوه اسستقرار مولفههسا را بیان‬
‫میدارنسد‪ .‬از طرف دیگسر‪ ،‬واسسطها تمامسی اطلعات لزم برای اسستفاده از یسک مولفسه را بسه کاربران مولفسه ارایسه میدهسد‪ .‬حال بسا‬
‫توجه به نقشی که کد و واسط در یک مولفه بازی میکنند‪ .‬میتوان ادعا نمود که توصیف یک مولفه در واقع توصیف واسط آن‬
‫است‪ .‬همانطور که پیشتر نیز آورده شد‪ ،‬واسطها میبایست تعریف دقیقی از عملکرد یک مولفه و تمامی وابستگیهای محیطی‬
‫آن را بیان دارند‪.‬‬
‫از توصیف مولفهها دو نقش استفاده میکنند‪ :‬کاربرها و توسعهدهندگان‪.‬‬
‫کاربرهای یک مولفه از توصیف آن برای استخراج وابستگیهای محیطی و همچنین عملکردهای هر مولفه استفاده میکنند‪ .‬به‬
‫همین دلیل است که توصیف یک مولفه باید دقیق و کامل باشد‪ .‬از طرف دیگر توسعهدهندگان یک مولفه از توصیف یک مولفه‬
‫برای استخراج تعریف مجرد عملکردهای یک مولفه استفاده میکنند‪.‬‬
‫یک مولفه پیادهسازی مجموعهای از واسطها و انواع دادهای را ارایه میدهد‪ ،‬که هر واسط دارای چند عملکرد نامدار است‪ .‬در‬
‫شکسل ‪ ۴‬مدل ‪ UML‬یسک مولفسه نشان داده شده اسست‪ .‬همانطور کسه از شکسل برمیآیسد‪ ،‬هسر واسسط توسسط یسک یسا چنسد مولفسه‬
‫پیادهسازی شده است و هر واسط نیز دارای چندین عملکرد است‪.‬‬
‫شکل ‪ .۴‬مدل ‪ UML‬مربوط به مولفهها‬
‫این مدل در بسیاری از زبانها و استانداردهای توصیف مولفه به کاربرده میشود‪ .‬بعنوان مثال در شکل ‪ ۵‬یک نمونه توصیف از‬
‫زبان ‪ IDL‬آورده شده است‪ .‬در این شکل ‪ ۲‬واسط ‪ IspellCheck‬و ‪ IcustomSpellCheck‬تعریف شده است که یکی از آنها‬
‫یسک عملکرد و دیگری دو عملکرد دارد‪ .‬و یسک کتابخانسه نیسز کسه شامسل ایسن دو واسسط اسست بعنوان ‪ SpellCheckerLib‬معرفسی‬
‫گشته است‪.‬‬
‫شکل ‪ .۵‬نمونهای از توصیف واسطها در زبان ‪IDL‬‬
‫اسستفاده اصسلی کسه از اینگونسه توصسیفات در توسسعه سسیستمهای مبتنسی بر مولفسه میشود‪ ،‬چسک کردن نوع در کدهای مشتری و‬
‫بیان نحوه تعامل میان مولفههایی است که توسط سازمانهای گوناگون توسعه یافته است‪.‬‬
‫یکی از نکات مهم در مورد واسطها نقشی است که آنها در نحوه جایگزین کردن مولفهها بازی میکنند‪ .‬جایگزین کردن مولفه‬
‫‪ X‬با مولفه ‪ ،Y‬امن گفته میشود اگر تمامی سیستمهایی که با ‪ X‬کار میکنند با ‪ Y‬هم کار کنند‪ .‬از منظر نحو‪ ،‬یک مولفه را‬
‫میتوان به صورت امن جایگزین نمود اگر مولفه جدید حداقل تمامی واسطهای مولفه قدیمی را پیادهسازی کرده باشد و یا‬
‫مولفه جدید یک زیر گونه از مولفه قدیمی باشد‪.‬‬
‫همانطور کسه پیشتسر نیسز آورده شسد علوه بر نحسو و قالب عملکردهای یسک مولفسه‪ ،‬جنبههای معنایسی آنهسا نیسز مهمانسد‪ .‬بسه همیسن‬
‫دلیل برای هر عملکرد یک واسط مجموعهای از ثابتها‪ ،‬پیششرطها و پسشرطها نیز معین میگردند‪ .‬همانطور که در شکل‬
‫‪ ۶‬نیز نشان داده شده است هر واسط دارای حالت و چند ثابت است‪ .‬هر عملکرد نیز دارای پیششرط و پسشرط است که بر‬
‫اساس پارامترهای ورودی و خروجی آن بیان میشود‪.‬‬
‫شکل ‪ .۶‬مدل ‪ UML‬جنبه معنایی مولفهها‬
‫حال بسا اسستفاده از مدل توصسیف واسسطها‪ ،‬مولفسه بسه صسورت دیاگرام توصسیف مولفسه نشان داده میشونسد‪ .‬در ایسن دیاگرام معیسن‬
‫میگردد که یک مولفه چه واسطهایی را نیاز داشته و چه واسطهایی را ارایه میدهد‪ .‬در شکل ‪ ۷‬یک مولفه نشان داده شده‬
‫است که دو واسط ارایه میدهد‪.‬‬
‫شکل ‪ .۷‬نمونهای از دیاگرام توصیف مولفه‬
‫علوه بر موارد فوق برای توصسیف مولفههسا میتوان بسا اسستفاده از زبانهایسی ماننسد ‪ ،OCL‬محدودیتهای میان واسسطهای را نیسز‬
‫معرفی نمود‪ .‬به طور مثال در مثال شکل ‪ ۷‬میتوان محدودیتی برای مولفه قائل شد که میبایست تمامی کلمات مورد استفاده‬
‫در فرهنگ لغات توسط واسط اول با کلمات استفاده شده در واسط دوم یکسان باشند‪.‬‬
‫‪context SpellChecker‬‬
‫‪IspellCheck::words = = ICustomSpellCheck::words‬‬
‫از دیگر عناصر توصیف مولفهها میتوان به اعتبارنامهها اشاره نمود‪ .‬هر اعتبارنامه یک سهتایی مرتب به صورت <‪Attribute,‬‬
‫‪ >Value, Credibility‬اسست کسه در آن ‪ Attribute‬توضیحات مربوط بسه یسک خصسوصیات از یسک مولفسه‪ Value ،‬اندازه آن‬
‫خصوصیت و ‪ Credibility‬نحوه بدست آوردن آن اندازه است‪ .‬در واقع با استفاده از اعتبارنامهها میتوان خصوصیات مربوط به‬
‫هر واسط یا مولفه را به صورت دقیق بیان نمود‪.‬‬
‫خصوصیات یک مولفه را میتوان به سه دسته زیر تقسیم نمود‪.‬‬
‫‪ .1‬خصوصیات ساختاری‪ :‬بیانگر نحوه ترکیب مولفه با دیگر مولفههاست‪.‬‬
‫‪ .2‬خصوصیات فراتابعی‪ :‬فرضیات غیر تابعی از قبیل کارایی‪ ،‬امنیت و ‪...‬‬
‫‪ .3‬خصوصیات خانوادگی‪ :‬بیانگر رابطه و شباهتهای مولفه با مولفههای دیگر است‪.‬‬
‫از اعتبارنامهها برای توصیف خصوصیات فراتابعی یک مولفه استفاده میشود‪ .‬در مهندسی نرمافزار مبتنی بر مولفه به دستهای‬
‫از اعتبارنامهها که مربوط به یک مولفه‪ ،‬بسته و یا تکنولوژی هستند را ‪ Ensemble‬مینامند‪.‬‬
‫در شکل ‪ ۸‬رابطه میان اعتبارنامهها و دیگر مفاهیم سیستم مبتنی بر مولفه نشان داده شده است‪.‬‬
‫جمعبندی و نتیجهگیری‬
‫شکل ‪ .۸‬مدل ‪ UML‬خصوصیات فراتابعی‬
‫استفاده از مولفهها برای تولید نرمافزار باعث کاهش هزینه و زمان و افزایش کیفیت سیستم خواهد شد‪ .‬هر مولفه از واسط و‬
‫کسد تشکیسل شده اسست‪ .‬کسه برای اسستفاده و اسستقرار مولفههسا از توصسیف واسسطهای مربوط بسه آنهسا اسستفاده میشود‪ .‬توصسیف‬
‫واسطهای یک مولفه شامل توصیف خصوصیات تابعی و خصوصیات غیرتابعی آن است‪ .‬که برای خصوصیات تابعی از زبانهای‬
‫رسمی و ساختیافتهای مان ند ‪ IDL‬ا ستفاده میشود و برای خصوصیات غیرتابعی از اعتبارنامهها و زبانهای مبتنی بر زبان‬
‫طبیعی مانند ‪ OCL‬استفاده میگردد‪ .‬بیان خصوصیات غیرتابعی یک مولفه هنوز کامل و دقیق قابل انجام نیست و یکی از‬
‫موضوعات تحقیقاتی مطرح چگونگی بیان رسمی از خصوصیات غیر تابعی مولفههاست‪.‬‬
*
:
$ #!"
7847 , 546 '#4
4
4
4 . 8#
01
23 '% ..%,
9
?@ 4 9 4
% - .#
>#= +
;%
'#
+
#
4J 4I
4*?
$
..# I
H
.
8
L
#G + .
)* +
&
.:
9
'4% ? 4# ) 4* + ' 4%
.#
'#
(
9
23 . <
C
$
@ ) #G +
F
%, ) ( ,
'%
%-
% , AB
.:
D
.
K%
# +
1
& E '% .
* +
& %
#7M ) 7M
&
[email protected] :& ' () *+ ,!"#$##$% :
. 8#
*
- 1 0 ) / ) A DB `M- ' 0- 7O 3 / - .E 1
'f 6 e
10 ) e
/)A
; h A cT- ' L
.gE 3
4 *
.E 1
[
E1 - 2
' L 9- ?
.E 3
a 4H L
/ 0C Q) _ / - i 0-
5P OQ
465 2 6 1 E + 9 (A ' 0 A
c?
6 6 L 3 - 0 ,= : N 0- . 0 ) k
45 2
' jA * / , - 3 ' L TA :E
.
%,
'# 6+ ONOQ
06 *6
A W6A L 6)' 3
6 0- Y - ; WA
3 /6 - A W6A L l jA .
b_ E+
N9
L - 6 - .*6
m 6- +6- 0 41 ' * 3 / 3 ,E + 0 A
/6 3 6- 7O G 1 6 1 K 00 * 23m
q
'<8 .E
- 3 E+
1 i p no[
Hn 1
- / / ) A E + 0 / /- 0 / +1 9 i p '
,L 23m 6
'
6(D 8 1 / 3 = :
& e
7 6 '/6M
6
4 3 ( 0
O 3 ./
'O *M6B 6 ?A 6 - 6- 7O 3 7 A ,*
1 Hr '
- L - -.
1 Hr ' L - Y A
E+
:E 1 S T A
'
- 3 \ 0 E A
/6
61 0M) W6 - _A / A K 0- i p F A - 3 .s
6 [ ' 613 6- 6
7 1 / 3 L- /
&6 *6 L6(
6
6 N 2 6G 1 . t
-. O
; 6 )' «I» / 3 0- «P) » - 3 / 3
L6 06- *6 L6(
- 3 L 2 G 1 0 A B ./ / 3 3 AE
+- «I» / 3 0 E -0
7 6 p ' 6 06- i p F A - 3 .* «P) » V/61 06- E +6
6 06 /1/
7( L E+
L6 2 6
- 1a' ./
- A1
L lL5
m6
6 O L 6A /6 0 : 6 06 /6 06C - 3 0 H
.0 5 9 (A [3] 7ATAM ./ 0- : 0 * [5] SAAM
6 SWT
5 3 E A & 7O 0 SWT - 3 .#
6 6(D 8 - 7O
/ /
(D 8 - _A / A K 0i6 p F6 A - 6 3 0- 6 - 3 L ./
- 3 3
65 3 ' 6H &6 F6 A - 6 3 L6 06 ;' A L - *
E +6
(D 8 L TA K 0- 45 2
SWT
. H ; B=:
7O e
-05 0 A
06 SW6T - 6 3 V<6: 6- 0
1 Hr ' - 3
.w
E1 65 6K 06- ,/1
[ - 3
E+
(D 8
P ON
06- 465 2 3 /
, 45 2
/ 0
, 1.
= 6: ;<( 6 6- 06
619
3 ( 7 8
6
+ * ?5
' - .*
45 2
/
06C
(D 8 3 /
0 A B , 10 3 @ /
-F6 ' ,
G * / 1 E + ,9 8 1 E +
/
6K = : 1 45 2 ' 1J ' I' , (5 H 1
.* '/M +- 3 1 2
L 3
,E G K
+66( ' , 465 2
N2
7/ O / / ./6 O 6 ' 06- 6
6- 6
/6
6 L A 6 O L 6- ; N A
1 0- E +
10 )
E +6 * 6
' (D 8
- - 0D ' ' /
P A
./
E1 5 7O 1 0 )
(D 8 Q+ - 6 6 - 465 2 6
6 .' /6 P A 3 ( / 6 : 6 , A 6 M E +6 & 0 - &
" :[4]E
F- ' ' 1 0 ) L = : , 1 0 ) 3 0 * E +
1 :
0) '
0 * ST P A L 3 . / 9 ( A O L 0 *
1 0 ) / ST
) / 0( & ' ' 1
06 )
6(D 8 ' ; W6T , 6G V 6N 3 ' / 3 6
E+
.(/
ST
E+
(D 8 ' 5 0 * 1
E +6 0 1 .
1 0 ) - ( 4 Y A 45 2
0 4 A ; B 0- / A 0 / +1
45 2
1
Z
1/6 ' G 6 06
/
O ; N A ' 1 0 ) 0- E +
7
6[ .*6
7 6 3 6 O ?) 6- ;< A ' E +
(D 8
' 61 06 ) \ 6 / - 0 7 ( ,; N A L ' - * '/M
./
1& ' 1
: 0- ; N A
0 /
4 A
N 0 )' 9
- 45 2
8
'
6(D 8 61 /6 3
]
-E+
D : 7O
^
.
N
0
, *: ( 1 :
&6 3 E +6 7/6 9 ( 6A 0_ ' 0- , / ST
N7 3
E+ &
.*+ S T A 9- [
7 3
/ 0 _[
/6 A 3 46 6 . 6
E+ L 0
O 3 ,0 ) S T A 9- [
7 3 7O
,/ 9( A4 < 0)
3 06 ) 1 E + ' 1 0 ) 0- `M- L 0
.*
' L6 L - ; N A
'E
G
H/
.E 2
06
./ +61 b 6 L6 0- a 4H L
/ 0C Q) _
K
- E + 0 A - 45 2
1 c? - ' `M6 8 /6 ' & Jd .E 1
2 7O 1 0 ) c? L
L( ;< / A \ * +[ L
.E
/)A
- 6 6[ 06 ) _
7O 0
- K 0' -
6 6 26
6
Hr ' & 3 /8 L TA & 7
06- .( ... ,*6 ,7 N * D- [ ,
, / G * D- [ 9t )
6- 23m 06 41 L 6 TA 6- a' &6 [2] . 6t 7 8
6K
6 /6 A ,7O 6 e 6 6- E +6
/G
465 2 6 L 6 /
' 6 - L G ' jA 1 * :
6
61 Hr ' - 4
G
1 & (A .* / 0C
.
' G
Requirement
Specification
Requirement
selection
##R+ :% %
Functionality-based
Architectural Design
F.R
(Partial)
Requirement
Specification
Application
Architecture
Architecture
Transformation
06
45 2 / ) A F: 2
/ ) A F:
3
0- 9 / A ,/ ) A F: 1 0 )
OK
Not OK
YES
Estimate
Quality Attributes
More
Requirements
NO
B *
3 G (
,. WM / ) A 2 G 1 .*
jA ' I T 0D ' 0- Jd '
.
9- [ E +
% -
OSOQ
B *
:(N) >T<
( 61 /6 3
6
' 'O i6 3 /6 -) .' 0D
6 26
6(D 8 61 6Hr ' e
- A
; 6B 06- /6 A 6 0 E
/ - 0D '
' Jd
6
1 Hr ' - 3 / - 0D ' L
./ z 2
I +6
/68 L 6 TA & Hr ' 1 0- ' z
2
6 ; 6K 6- - _ 1 Hr ' L 0 1 0 A B .
06D
' ; 6B L6 { | / 2 A 0N/ O
L 68 ' 6
61 6Hr '
- 7O 3 V/1 0 E
' 6-' Jd6 .*
F A / 0C
(D 8 y
6K 6
0- 7/
A
L 'E
- 3
;< /6 A ,/
/1 # 9(
0 N 7 1 .E
. 6t
- .7O \ ' 9 / A 0 ./ +1 / - 0 9- [ /
/6 l ' 2 {
' 7/ E +?A ,7/ 05 ] 9 / A
1
; 6 '4D 3 ( 7 8 0,
45 2
-E+
0- &
- 7O 3 0
O3 '
05H K E+
-2
7O 0- ,
7O
2G1 E+
jA
0) &
4G 3 / A ; jA L .
0 H
45
/6 3 &6
jA 0- x
0- 1 :
-' A
2 6G 1
6 c *) L
0 / 0 A ./ - ;'
0 *
4 l 7 1 i[ ' L ' .
y 4 E+
L6
/6 8 ;' 6 A ./ 3
7O 0- 0 ) 1E+
' ST 6 96 d 2 6G 1 06 ) 1E+ 0 *
6 6 jA , 6
465 2 6
0 )
/
/?
.* K /
2G1 E+
OK
QA-Optimizing
Solutions
OQOQ
N
.E 1
(A
H
5 ,/ 9/ A
.
0D
(A
-'
9/ A
OS
&6
- 0- A L - - ./ b _ e<
9 W A 0- `M- L
; W6T 06 *6
- 6A 6
N / ' .E 3
0(
6 N &6 ' /6
6 *65
' ' 7 6 8 06- 61 / 3
(s) 9(6
0 N 7 1 ./
/ ) A ' : 7 8 0.
9 ( A DB 3 5 0 3 / ' L ,/ -
7 H/6 1 0 6 A ' c
' 5 0- 0 *
06- Y 6- 9C +
- 0- cT- L 0
.
.E 3
1 0 ) PD T 1 0
, # Z8B
$ <
J
0D„+ ,0 ) \
H
[E+
; B W: L A
( 5# -
OQOY
/ ; 8
c
10 ) 3 0 ' / 0 H0 N7 1
`MA.
A 10 ) ' /
9- [ 1 0 ) 3
. 6 E +6
N 10 0D 0 -L -… 5
. z6 6 h A
+- 9 8 F A
N D *)
.
3 /6
6
6- 6 A E W6A & * L( ,. t
&6 6 / - 0 5 z ; B
1E+ 3 B: 10
L 6 † 1 . • ) (A 3 B : \ 3
- 3 - E WA
6 I l 6l &6 3
6
6
0- A 7 3 * L(
3 0l d(
- 10 ) L- N A
124 ( 3 08
3 6- 06- 06C 7 3 0(
' . zG- h A
N -0 / -0
./
A
A 10 ) 3
c 6 61 I l 6l 1 0 ) 3
,*D8 0- 0 A 7'/6
0D„+6 ,
6 . 6 6 O ' b 6N 06
- E WA , ) L l .* 3 Q+ - O / ) A - ;'
0 ) L l ./ zH
hA
- 10) L l3
96
7 6 /6 L - 6 - ,/ +
jA 9- [ D *)
1
a' L 5 6 K 0- , 1 0 )
0NL l . H ; B 10 ) 9 A - 1
] $
&
06 /
' /6
6
F 6M
/6 3
> 1
61 06 ) 06- /6 /
./ N
Component
ONOY
. 6 ' 7 3 K 3 - T L l 0 41 ,* ST 0 N 7 1
.
6 ' 613 L 6A 6- m 6- .
* m - +ƒ6
K
0 ) 0 B : 1 *)
45 2 0 A
,/6 - . 6
{ 06 )
/ -0
m - 7 N ' * 0L 6 l *6 4 ./ - z 0 A * L(
-T L l3
/6 ) A
N/ A
10 ) 0 * 0 0( L
-T
L - 6 - ' /6
'O 6- 6K
1 / 3 ?[ 0 /
61 0 ) L L
E1 0- 3 9B E + 0 / +1 L L @
. - /1 :
23m
1 Hr '
[\
, 6
ONOQOY
' 0) &
-7 - /
9- [ 0 E A
+1 1 0 ) ,P N L
& .E G- K P N
/6 /6 ) A = 6: E + &
-7 3 F A
* D- [ L
K 7'/- / 1 0 A K
0 ‡'
- 7/ 0l d(
- 1 0 ) L l ./ 1
2
/
76 N, 6
6 - ./
5' 7O - / - ,/ /
5 ' (D 8 7/ 05 ] ,0 )
1* '/M ' /8 [ 7 05 ]
Architecture
Added
Functionality
, rules,
and/or
constraints
Convert QR
To
functionality
Impose
Architectural
Pattern
Restructuring
Apply Design
Pattern
Impose
Architectural
Style
Scope of
Impact
Transformation
Type
/
>% +
'T
) #I + D
:(Q) >T<
# + OY
;m WA ' 1 0 ) 7 ST / A E +
0
G1
.*6 / 6
65 61 06 ) L 0- 7 E+ 7 3 ,/ C4
O
I l l3
* L(
N 05
0- &
3
- (CORBA EJB / ) B : 1 I l l
1 0 ) ./ 0 B A
(/ +1
9- [ 0
10 ) )} 3
~
1 0 ) 0- 0 5 = W : 1 / 3
]
0)
./ 6 6 / 6 ) A 6 I T (
L A 0 ) ; WT F A
; B W6: i- 6A /6 6A E +6 *
,/ 0 H 0 N 7 1
6 I 6T ; B
A ./1
9 ( A 7O 0 *
10 )
*6
6
/ /
1 / 3 - - _ ' • MB 0 A
'*
-c
- 0D ' 7 8 00- E A 0
.E
G E+
(D 8
S T A 9- [
10 )
3
-0 ) \ 0
:*
Z€
10 )
.s
K 0- 0
1 0 ) , 3 Q+ - / 0 :
./
=:3 & L A
9- [ 1 0 )
.#
96 [ 3 7 3 0
1 0 ) ,ZZ /
. - O &)
Z^
A 10)
.w
3 6- a' 65 6K 06- 0
10 ) ,
. / / ) A=: / ' 5F A
7 IT / A 7 3 & ‚1 5'*
' •' \
\ 6 I T 0- ƒ
3
/ '/M
1 0 4H L
06 ) 0 +6- ' 61 *6
L A .E = :
•'
-0 )
6
*6
H E WA K 0- 10 4H L 3 2 / 1 1
6
N
6- /6
6
6
& 6 I 6T
* '/M
. -4 E+
6 * L( ,
c
10 ) 3
2G1
3O 06
./6 - 0 6 / 06 ) 0 - / 03
'/M 1 0 )
3 0l d( G Gl ' 0 ) I T 03 6 0l d( * / ' .
* 1 / '/M
3O L .
- 10 )
; 68<N m 6 0 ) & API L † 1 ./
E1 65 = 6: F 6M & 0 )
5 G Gl ˆ
- 5
-63 'ˆ
6
t 6 b N 09( L ./
2/68 3
H 6D 6K 06- 1 0 )
'
(D 8 ; B W:
96 6 [ 6 - c 6 ' 61 0 ) L - /
-c
1 - _A
3 /6 0- Y - `
.
10 ) L 3 / 9( AE+
6 A .*6
?MA / /
+ ;8 ] 3 10 )
- 3 '
H
6(D 8 6 - c 6 96 8 06 *6
5 /1 L l ?MA ; B
.
z 7(
' 10 ) 3
-E+
6 O 3 E +6 06
61 06 ) \ 6 /6 0 H 0 N 7 1
7O 3 6 L6 .*6 z6H h A E +
9( A
.
c1 Q
c
10 ) IT 0 * '
0) *
[ 0 - l l 0N 0- .
. WM E +6
N/ O 5 -0
'
- / G- [ 7O 1
&6 7 6 8 06- 9 8 E + & 0 A B ./ +1 zH h A
1 * '/M ,E G- K
3
WT 9- [ I l l
,*6 m - +- = : I l l & A 3
2G1
,P6D T 61 I l l 3 7 4 1
7( ; B 0 )
./c1 1 * '/M L
, 6 c 6 61 06 ) 3
6 0 0- 0 +- 0
1/6 O 5 3
6 /6 3 ,= : I l l '
A 10)
76
A' 6
61 6 6K L /- .E +1 A' 0 A
6 [' E +6
N
3O 0 L Am - . /
PD T
/ - 3 Q+ - / 0 : E +
10) 0
E1 5
3
6 ; 6B 96- ?
.E
9 8E+ & 3 '
c 6 3 I l 6l &6 e 6 6- 1 7O 0 A '
A 10 )
'/M L( / L
- A 3O CORBA EJB / ST
6 * 6 06- 06 ) N
/' .
6A 6 N /6 O 5 , ) 6 L 6 l
6 3 * 0 4H L 3
6 4 ,7O 06
06 6 6 :
L( / L
./ - / / 0 5 *:
+ 0 -3
0† O /
6 0 41 '
- *8 - 1 E + E A
„A
N 7 1 ' ,.' G .E
7O
N * '/M
*6 3 , 6 ' L 6 l 3
0 41 ,/ 0 H 9 [ cT- 0
/6 ) A 6K 066- ; 6N A ' 61 066 )
3 6 066 - *6 D- [ 7
46H L 6 l 06 A 6B .* 13 - - _ ? [
+
06 H Zk / +6l /6 O 0- 1 H) / +1 1Zg / 1 5'
6 96- [ 06 /6 1
jA
N 10 ) L 0 (
./ - / / F M
*6 D- [ 6- 06 /6
@6
61 0 ) P N L G
6 ; 6B 06- 61 06 ) L6 ./ /
N /
6 ;' 6
61 G +- ' ' F
/ A '/ /
N
06- Q6 A ' 3 6 06l d(
H 6 0 0 * •] ' ./
.
G +- 0 ) 7 9- [ /?
]+
OQOQOY
6 N /6 O 5 ; 6 3
+6- 3 1 0 ) L l 3
* _[ 2/8 c 45 01 0 ) L ./ 1
[ h A *MA
/6 06- 0 +6- ' , / †
A 1 0 ) ./
N/ O 5
6 C 3 6- 613 0( N : 0- / † ./ +1 / ' Zq= :
0
O3 L † 1.
10 )
1 Hr ' c 45 061 06 ) L6 ,*6 a3
3
/
0- 4 A 3 , 3 6- C
5 N : 0- ' ./ +1 7O 7 N = : / 0- 0 +- '
t
A ( L l [' ./ +1 /
+- 1 0 ) L
1/ A ,/
05H K
45 2 G M /
./ O
' 0- 1 0 ) L l 3
- 3-9+
.
0 : / - 1 `M- 9C + L 010 ) \
- 0 * •] ' 0 5 H ; B 1 `M- - ' /6 - 6 06 A
;( 3 ( / -E+
06 ) &
- / 05 z 1*
323m ; K A
.
2
A '3 L(
A 0 ) \ 0- 0 A - / -
B * O^
6
6- 61 0 ) 0 E 3
A hA
- 0- cT- L
06 /
N
E+
0
G 1 ./ zH
nE /6 06 6N 7 1 n ,/
c
10 ) 3
3
6 L 6 † 1 . 6 6 . 8 7O 0- / /
1 * '/M
+6 06 - 3
6 /6 E + & 0 )
1I l l
7 +6 0 - , 1 0 - 9 DMA 1 . L )' .* 0 5 *:
76 . 6
1 : 6 3 /6 .
2/8 0 / 5
.*6 *T
+- O 9 DMA 0
10 06 -76 .
1 + '
1 * '/M . 8 0
L l 0- .
0 - 9 DMA '
: * D- [
A 9- [
= 6: 6N 06- .
6 ' 06 )
1I l l3
06 ) ;< 6 A 1 * '/M
1I l lL l3
L 6A 6- m 6
61 I l 6l L6 0
O 3 ./
1
- /
1 * '/M ,/ /
B:
1 Hr '
06- 6 / A
9 MA I l l F A 0 ;< A \
6D *)
(/
9- [ '
A)
c
10 )
.* E
3 0l d(
- / +l 1/ 3
/ 3
6 E 1 6 ' 465 2
7 ; N A ,a 4H L
06 6N7 6 1 .*65 H [
0) 1E +
7O
6
6106 ) /6 ST
45 2
,/ /
.*6 z6H h 6A 45 2
N 10 ) I T ' *
6 I 6T
b N(
c ,
A) 0 ) \ I T
\ 3 2/ 1 = :
- - K L 0- ./
'/M E +
E /6 = : N 0- .E
- 7O ; h A , 10 )
* '/M L
- , 1I l l '
c
10 ) 3
0
/6 6A 96 8 3O ' /6 6 . 8 E +
N - L(
, 6 ' L - ./1
c1
O L - ; N A \ ' 10 ) I T
10 ) '
1I l l 3
4 0 /
K 0;<( 6 ' 13 0 *
4
, 1* '/M
A
* 6 0- 1E + 7
' 7 N , 45 2
/
./
A 1 0 ) ' 1I l l 0 H L 3
0(
[1] Crnkovic, I., Larsson, M., Building Reliable ComponentBased Software Systems, Artech House, 2002.
[2] Bengtsson, P., and J. Bosch, .Architecture Level
Prediction of Software Maintenance,. Proc. 3rd European
Conf.
Software
Maintenance
and
Reengineering.CSMR.99, Los Alamitos, CA, IEEE
Computer Society, 1999.
[3] Clements, P., R. Kazman, and M. Klein, Evaluating
Software Architectures: Methods and Case Studies,
Reading, MA: Addison-Wesley, 2000.
[4] Bass, L., P. Clements, and R. Kazman, Software
Architecture in Practice, Reading, MA: Addison-Wesley,
1998.
[5] Kazman, R., et al., "SAAM: A Method for Analyzing the
Properties of Software Architectures," Proc. 16th Int.
Conf. Software Engineering, ACM Press, 1994.
`%
1
Connector
Monolithic
3
Architecture-Driven Component Develpoment
4
Component-Driven Architecture Development
5
Dynamic Software Architecture
6
Stakeholder
7
Architecture Trade-off Analysis Method
8
Implementation Components
9
Architectural Components
10
Custom-Build Components
11
Reusable Components
12
Commercial Components
2
%,
L 60DB 5 7
0- [ 0 / O
K 0- ,/ - • MB
L6l3
6
6 4 i6[ ' 6 .E +6 1 0 ) '
-2 6 1 0 )
; A 7/ O
' 0- 0/ A
('
n
6 ' 6 /
6G
10 3 t
0† O / n 45
/
['
0) ) ; _[ ; A 0 A ,. t 7 8 0- . ' ;m W6A
A ' Q+ H 00) ) 1 /
0
0 H ‰ 1 /M ;m
' 7 / l 0 7 3 ./ / G ; _[
, 6] . 6
)' * /
'
3 0) ) 0DB 5
?5 A
/ A
0) ) 0
.* / L A ‰ s" - - 0DB 5 L
0- 6 Š 6 0- 7/ . z ; B 2 ; 4 A Q+ 3 9 [
./
K 0- e
3 ' 7 / l 45 2 * B
]# O_
6106 ) e 6 6- E + 0 A
/D
? 45 2
6 :/ +61 0(6 & ' ' 45 2
' 10 ) .
' /6
6 ST
O;N A 'E+
1 0 ) 45 2
E +6 96 6 5 0 * 1 0 )
(D 8 ' ; WT . L 8
./
ST
6- E +6
-63 '0 6 A
6 D T 1c? 45 2
F6 A - 6 3
6- 6 L6 06( *+T .
0) e
- 6 6[
6
1 Hr ' - 3 ' SWT ,i p
.
4
jA * /
3 ,L - '<8 . H
6-'
6- 0D 6 ' 7 6 8 0- E A
3 0(
:m - '
E +6
6 2 6G 1 ' 6 ; 6B 06- E + 0- 1 :
.(
45 2
)E
6 N 3 65 L 6)' . /6 9 ( 6A 3 5 0 3 45 2
N
- A
3 0 )'
N& 0 *
(D 8 e
L6 2' 06D
./6 6 06C
6(D 8 1 / 3 e
[ - 3
7O
1 Hr ' L TA K 06
61 6Hr ' 6 - 06 ‡'
;< / A ,*
. H
6- 6 ' , 6 N 61 G) , 6
1 G) 3
- E+
./
/ 8 0- (D 8 0- / 3 9 / A
-06 ) 06 E +1 L / 3 , 45 2
/ ST 3 / DB 0 0 .E I T
'/) A E+ /1 9( A 1
6 96- [ ,3 6 Q+6 - / 0 : :
' 10)
06- 3 6 Q+ - / 0 :
10 ) .
A 10 ) ' /
&6 23m *6
' 6(D 8 7 6 E1 65 6K 06- = : N
F6 A 46 /6
9- [ 1 0 ) ./ O
' 0- E +
6 :
6
6 N 3 96 [ 6 / 0 5 0 A 7 3
:
/)A
:7 3 & F A
A 1 0 ) ./
[7 3
3
6 ./ 6 6 a' 65 06- 0_ ' & F A
8'/ /
13
14
15
16
Preexisting Components
Adapter
Glue Code
Idiosyncratic
& ' (' ! % " #
$ !" *
: )
*+
59 5 45 )
6 78 " 2'0 $ )3 4 1' 01
$ ./ - 0 % ' - ,
5 D5> . 5
? @ 0 A8 B> 6 78 < = 0 9 ' 6 78 " % 2: ' 4,;
5 756 JK / ' , I; 2'0 B>GH 2' 6 4,; " F> E- 3 "
. H3 01
, I; 2'0 B> 0 )% ' $ H3 , 4,; " LM H"
NO PNO
Component , ACME, Java Beans, COM+, CCM, .NET, OSGI
[email protected] *
&( ) A) Y K" #A' @ &) ADL
. # - K" #A' HF) &) &'() % (*
% &'() : [* \ I &'() M0 G0* : ADL
: I <) E<% <%') /0:: * ]0
) &. % M >$5^ I T*) &+D+ % -) I >U5*I
. %
. 1 ) : 0@ % & @ #$ &'() -) %
S RQ
!" #$ % &'() (* '+,) % -) &. /0 . 1% )
sun # -54) Java Beans .3
Microsoft # -54) COM+ .6
CORBA # -54) CCM .7
Microsoft # -54) .NET .8
Open Service Gateway #!! -5!!4) OSGI .9
M0 &: [H" I &'() M0 \ Interface
. ) : % ]D: &'() >+<= & &'()
•
#^ : ]00 &: % &'() -5* : Assembly
1D
•
Initiative
term : " ;<* +<= >? ) : : $ % &'()
) YP" &'() M0 & *+<= : Implementation
. ) @ %
•
G0* V @ % &'() @ * : Life cycle
% &",:
•
+0_) ") % ;: @ M0 B) : Frame work
.... N % ;: I
•
!0@ @! >.; " ) A) % &'() * %
!) B ) : : % -) 1%') <CA & ) : !" &!)": !: !) : ) % D) /E<% .
API >'$* @ .% &F B) & # @ % ;:
G!$* !:@ &!'() !% (* &D0H) . : ) E
I"J <" K;" @ LF M0 0@ # #, ADL <)
&! !N <% ) ) O4: B+4* &0;P* N @A ADL
@ @A +<= >? ) : &'() % (* &'J
!: &'() % (* G$* P0 ) R% ) . ) QF)
/!0 &!: ) QF) & (F) S.. : ) ADL >?F$
&'() @ ' T) & ,0* B0U : & # >$
&! +!$ 1%!') != &!: ACME :@ 1 ) :
>!$ &!: : % V,:. 1 ) A) ) QF) ADL
. 1% ) " #$ &'() % (* ') 5,)
ACME , I; 2'0 RU
Y!A @ 1!% AJ YA @ 1% ACME <) G$* :@
!* 1!% !) @ 5!,) G!$* !) I ! ) ' )
;!A Y" <) &A0 #^ % & : \*) 1%') &=<P)
: G0*. 1 G$*
% % -5* % &'() @ AJ = &: 1D M0
M0 X:) *4) $= % &'() . ) G$*
) " &'() ;0 04) . % ) " 1D
M0 J;: &: 0 : AJ \ &< M0 ` &: "*
+^ ^ & # a E % &'() : . . "<: C
>$ &: & # &'() &: #D" ^ 0 &'() M0 \
) VAN \4) : &'() M0 +)* % > @ &=<P)
K?a & % ) " b" D^ & M0 : &'().:
. : ) &'( ) >?)* B4)
&'() &: [:) B
B & N <%. : B)* "* ) ]00 : % &'()
&'() : % &'() & # )@ \4) - LF : ) 0@
^ LF . : B)* "* ) I )@ \4) %
K> ' RT
: 1 : 1"* ) J0 @ D0" &)": :@ #A'
B) % W0 1<* X0@* & )@ #A' .3
Dynamic loader ,binary : )
interoperability , program execution
Y@U #A' distributed application @ M0
/0 &P" (rpc) remote procedure call & 10
&: 10 5 J X0@* " . # #<D
container YC') & 1% 1<* .% W0 >$
&=<P) : K;" M0 Container . 0 ) corba ) &: &'() M0 : & # . % W0
<%'): ) % &)":@ ' &)": N .6
@ /0 T*) &+D+ % S? E<% =;"
N Z) /0 : UML :@." ) A)
. #
% &: /E<% . @ ) 1%A % #04) : : ":@ ) # &<<a #04) : 0 M0 "* ) #0)
. : ) 1D K" & ) : <) % M G0*
) I : LF % &)": : % &'() & # : % &)":
. : B)* "*
Java Beans % #
RV
&'() M0 Bean M0I # sun # -54) -) /0
' #+: : ;A Y" &'() M0 Java Bean M0. #
>$ &: Builder tool "* ) & : ) P)
\ #^ : Java Bean M0. visually
&'() /0 % #0;).# &^ GUI: AJ
: >') &)@ builder \4) T* )@ •
. % \4) )@ •
. ) G0* > K" C` -) /0
%) •
>$5^ •
%0 (* X:) •
(listener). ]) % 0 & :) •
: : B)* B4) &'()
% &'() &0U & <)
I: ) % &'() /: % [* \ VH" % % -5*
client /: SQL Connection -5* E<% =;" >U5*
. DB
% -5* B
&'() -)
# @ e M0 \* % &'() :
. # 0f ) 1% * E % @ )
.% ) " % -5* - &: &'() > I ]D: M0
% -5* &'() N* M(
I % % -5*@ &=<P) I % &'() @ &=<P) 1D M0
. # ( % % ") % ]D: @ &=<P)
>N* @ Wrapping a legacy object
. ) P0 .% " % > % ) /:
Multiple-objects implementation M0 " <% 1% : & % e @ M0
. ) : &D: &'()
Dependency on traditional entities
. 1 ) "^A &'() 4) @ g^ ]0 e
% % -5*% &'() @ &=<P) 1D M0
>$5^ @ &=<P) : #0) % &0 ) ACME
. @ ) 1%A 1 :
g segment &: . ) @ > M0 B
. " segment T* ]+<=. ) ( #
% & @ 0 Assembly" % (assembly) $& W
<" Z" 04) $^ B h% # Java +
. # - B: assembly G+,) % i /0::. J
: &'() @ M0 : % W0Container' - >$ : Framework
&!'() &!: [!:) ! &0 : : S "* ) &'()
security, !!!E<% .!!!% W0!!! Container. !!! ! !k*
: ) l* persistence, transaction, events
container 0 )%
. ) 1%A 0@ % #+:
. % ) V0;A P) ' #+: •
.% ) V% JE •
. ,: ) C: C]" #+: •
% &'() +<
&: &I %) &. M0 % &'() : &D: : () ) ) % &'() #D( ) ( builder ;:
. J
&D: /: [* ]D: G0* B) % bean G0* . : ) %
"* ) &'() ^ @ * E customization . :
COM, DCOM,MTS and % #
RV
COM+
.NET % #
RZ
) ' &'() D0" &)": : D0" &)": :@ 0 @
I : ) % &'() /: >N* &: [:) >=?N B) &)":.
. # )@ Y@U >=?N X< -D) +0_)
-5* Y" &: $^ YC')I : ) &'() ]'$* Y" Manifest
$^ ) % event I X:) I %) " %
) P0 MSIL Y" &: ") M0 &: &." ) g^
B: % B0A & )-) M0 @ &'() M0 (assembly) .
"* <" % -). # B * (: ) DLL . D" *) &+D+ /0:: I " assemble
# #A0) Com come from Microsoft @ (* /0
windows % \4) c ,c++ Bj) D0" &)": % :@ :
@ D0" &)": C":@ &: ) i?* # N
&: distribution #$^ &Aa : DCOM. %: "]<%"
persistency and #$^ &Aa : . 0 ) #: COM
X<P+$ B$ MTS , COM &: transaction service
. &P" COM+ 1% : (* /0
CORBA % #
RX
!0@ !$= @ &!'() M!0 \! : ) corba # -54)
: # B *
Facets
Receptacles
Event sources Event sources
Event sinks Event sinks
.NET % #
&)": :@ )@ #+") @ & # &"J /0 )@ \4)
security ,distribution E<% :*. ) ' D0"
: &'() B
. # fJ ( B)= 1D &: ,version control
! segment . #! !% segment Y!" &: % &F @ &=<P)
#! ! &" D0" &)": :@ % & # . B:
F R\
% (* &'() : ) <) : @ ` 100 & F"<%
% # .: ) B ) < C" @D() : " N
&* N G+,) B) *') % 0 G+,)
;" : &)@ & I" : &: &'() : ) % (*
.# & .;D: VH" K* /0
W [1] Crnkovic Ivica, Magnus Larsson, Building reliable
component-base software Systems. Artech HouseBoston .
London
[2] www.artechhouse.com
.NET % 0 )
OSGI % #
R[
D!'* &!'() = &: "* ) & # YC') S: -) /0
Bundle !! M!!0 @ :!! &!!)": !!% : Bundle. •
. # B *
B * Service M0 @ Bundle % : Service •
. #
M!0 &! # ;A Y" % #0) @ &=<P) Bundle M0
>! K!" & : Bundle % . % ) " ;A Y" @ &F
. # B)*
Traditional technology
Other components
The run-time environment
•
•
•
! !: .!0 >U5* % W0 /: "* ) % Bundle
.% iJ % event &: "* ) % Bundle. /E<%
A bundle component publishes a service interface
&! >$5!^ @ &!=<P) ) ) bundle M0 . ) B5) &: ) G$* Jm0 /0
&'() % \
: B) & ) 0 : @ jar M0 >$ &: Bundle
Service components
•
Java packages
•
Other resources file such as configuration files
•
and images
&'() : &D:
‫ﻣﺪﻝ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﮐﻴﻔﻴﺖ ﺍﺟﺰﺍ ﻧﺮﻡ ﺍﻓﺰﺍﺭ‬
‫*‬
‫ﻣﻬﺪﻱ ﮐﺎﺭﮔﺮ‬
‫ﺩﮐﺘﺮ ﺟﻌﻔﺮ ﺣﺒﻴﺒﻲ‬
‫ﭼﻜﻴﺪﻩ‬
‫ﻓﺮﺁﻳﻨﺪ ﻫﺎﻱ ﻃﺮﺍﺣﻲ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ﺑﺮ ﺍﺳﺎﺱ ﺍﻳﻦ ﺍﺻﻞ ﺍﺳﺘﻮﺍﺭ ﺍﺳﺖ ﮐﻪ ﮐﺎﺭﺍﻳﻲ ﻭ ﮐﻴﻔﻴﺖ ﻳﮏ ﺳﻴﺘﻢ ﺑﻪ ﻃﻮﺭ ﻣﺴﺘﻘﻴﻢ ﺑﺎ ﮐﻴﻔﻴﺖ‬
‫ﺍﺟﺰﺍﺀ ﺁﻥ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺭﺩ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ﺑﺎﻳﺪ ﺗﮑﻨﻴﮏ ﻫﺎﻳﻲ ﺭﺍ ﺑﺮﺍﻱ ﺍﺭﺯﻳﺎﺑﻲ ﺍﺟﺰﺍﺀ ﺍﺭﺍﺋﻪ ﮐﻨﺪ‪ .‬ﭘﺲ ﺍﺯ ﺍﺭﺯﻳﺎﺑﻲ ﺍﺟـﺰﺍﺀ ﻣـﻲ‬
‫ﺗﻮﺍﻧﻴﻢ ﺍﺯ ﺑﻴﻦ ﺁﻧﻬﺎ ﺑﻬﺘﺮﻳﻦ ﻗﻄﻌﻪ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻦ ﻣﺪﻝ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﮐﻴﻔﻴﺖ ﺍﺟﺰﺍﺀ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫ﻫﻤﭽﻨﻴﻦ ﺑﻪ ﺑﺮﺭﺳﻲ ﻭ ﺍﺭﺯﻳﺎﺑﻲ ﻋﻤﻠﮑﺮﺩ ﻳﮏ ﺟﺰﺀ ﺑﻪ ﺻﻮﺭﺕ ﺩﺍﺧﻠﻲ ﻭ ﺍﺯ ﺩﻳﺪﮔﺎﻩ ﺗﺮﮐﻴﺐ ﺷﺪﻥ ﺁﻥ ﺑﺎ ﺳﺎﻳﺮ ﺍﺟﺰﺍﺀ ﺳﻴﺴﺘﻢ ﻧﮕﺎﻩ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺩﺭ‬
‫ﻧﻬﺎﻳﺖ ﺑﺎ ﻣﻌﺮﻓﻲ ﺗﻮﺍﺑﻊ ﻭﺯﻥ ﺩﻫﻲ ﻣﺨﺘﻠﻒ‪ ،‬ﺑﻬﺘﺮﻳﻦ ﺟﺰﺀ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫ﻛﻠﻤﺎﺕ ﻛﻠﻴﺪﻱ‬
‫ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ‪ ،‬ﺍﺭﺯﻳﺎﺑﻲ ﮐﻴﻔﻴﺖ ‪ ،‬ﺍﻧﺘﺨﺎﺏ ﻗﻄﻌﻪ‬
‫* ‪[email protected] ۸۵۲۰۵۷۷۲‬‬
‫‪ ‐۱‬ﻣﻘﺪﻣﻪ‬
‫ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﺑﻪ ﻃﻮﺭ ﻓﺰﺍﻳﻨﺪﻩ ﺍﻱ ﻣﺘﮑﻲ ﺑﺮ ﺍﺟﺰﺍﻱ ﺗﻮﻟﻴﺪ ﺷﺪﻩ‬
‫ﺑﻪ ﻭﺳﻴﻠﻪ ﺷﺮﮐﺖ ﻫﺎﻱ ﺗﺠﺎﺭﻱ ﻣﻲ ﺑﺎﺷﻨﺪ‪ .‬ﺑﺎ ﺍﻓﺰﺍﻳﺶ ﺭﻭﺯ ﺍﻓﺰﻭﻥ ﺷﺮﮐﺖ‬
‫ﻫﺎﻱ ﺗﻮﻟﻴﺪ ﮐﻨﻨﺪﻩ ﺍﺟﺰﺍﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻭ ﻫﻤﭽﻨﻴﻦ ﭘﻴﭽﻴﺪﮔﻲ ﻭ ﮔﺴﺘﺮﺩﮔﻲ‬
‫ﺣﻖ ﺍﻧﺘﺨﺎﺏ ﺻﺎﺣﺒﺎﻥ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻣﻘﺼﺪ‪ ،‬ﻧﻴﺎﺯ ﺑﻪ ﺍﺭﺯﻳﺎﺑﻲ ﻭ ﺍﻧﺘﺨﺎﺏ ﻳﮏ‬
‫ﺟﺰﺀ ﺍﺯ ﺑﻴﻦ ﺳﺎﻳﺮ ﺍﺟﺰﺍﺀ ﺑﻴﺶ ﺍﺯ ﭘﻴﺶ ﺍﺣﺴﺎﺱ ﻣﻲ ﺷﻮﺩ‪ .‬ﺩﺭ ﺍﻳﻦ ﻣﻘﺎﻟﻪ‬
‫ﺳﻌﻲ ﻣﺎ ﺩﺭ ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﺭﻭﺵ ﻫﺎﻱ ﻣﻔﻴﺪﻱ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﻭ ﺍﺭﺯﻳﺎﺑﻲ‬
‫ﺩﺭﺳﺖ ﺍﺟﺰﺍﺀ ﺭﺍ ﺍﺭﺍﺋﻪ ﺩﻫﻴﻢ‪ .‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺭﻭﺵ ﻫﺎ ﻣﻲ ﺗﻮﺍﻥ ﺍﻣﻴﺪﻭﺍﺭ‬
‫ﺑﻮﺩ ﮐﻪ ﺳﻴﺴﺘﻢ ﻧﻬﺎﻳﻲ ﻫﻢ ﺩﺭ ﺣﺎﻟﺖ ﮐﻠﻲ‪ ،‬ﮐﻴﻔﻴﺖ ﻗﺎﺑﻞ ﻗﺒﻮﻟﻲ ﺧﻮﺍﻫﺪ‬
‫ﺩﺍﺷﺖ‪.‬‬
‫ﻗﺒﻞ ﺍﺯ ﺍﻳﻦ ﮐﻪ ﺑﺨﻮﺍﻫﻴﻢ ﻭﺍﺭﺩ ﺑﺤﺚ ﺍﺻﻠﻲ ﺷﻮﻳﻢ‪ ،‬ﻻﺯﻡ ﺍﺳﺖ ﮐﻪ ﺑﺎ ﭼﻨﺪ‬
‫ﻣﻔﻬﻮﻡ ﻣﻘﺪﻣﺎﺗﻲ ﺁﺷﻨﺎ ﺷﻮﻳﻢ‪.‬‬
‫ﺍﺟﺰﺍﺀ‪ :‬ﺍﺟﺰﺍﺀ ﺑﺨﺶ ﻫﺎﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﻣﺴﺘﻘﻞ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺎﺩﻩ‬
‫ﺳﺎﺯﻱ ﺷﺪﻩ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﻣﺎ ﻗﺮﺍﺭ ﺩﺍﺭﺩ‪ .‬ﺍﺟﺰﺍﺀ ﺗﺠﺎﺭﻱ ﺗﻮﺳﻂ ﻳﮏ ﺷﺮﮐﺖ‬
‫ﺧﺎﺹ ﻋﺮﺿﻪ ﻭ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﺷﻮﻧﺪ‪.‬‬
‫ﺗﺮﮐﻴﺐ‪ :‬ﺗﺮﮐﻴﺐ ﻳﺎ ﺳﺮﻫﻢ ﺑﻨﺪﻱ‪ ،‬ﻳﻌﻨﻲ ﺍﺟﺘﻤﺎﻉ ﻭ ﺑﻪ ﻫﻢ ﭘﻴﻮﺳﺘﻦ ﺗﻌﺪﺍﺩﻱ‬
‫ﻗﻄﻌﻪ ﮐﻪ ﺩﺭ ﻧﻬﺎﻳﺖ ﻳﮏ ﺭﻓﺘﺎﺭ ﻣﺠﺘﻤﻊ ﺍﺭﺍﺋﻪ ﻣﻲ ﺩﻫﻨﺪ‪.‬‬
‫ﺍﻧﺘﺨﺎﺏ‪ :‬ﺣﻖ ﺍﻧﺘﺨﺎﺏ ﻫﻨﮕﺎﻣﻲ ﺑﺮﺍﻱ ﻣﺎ ﺑﻪ ﻭﺟﻮﺩ ﻣﻲ ﺁﻳﺪ ﮐﻪ ﺑﺘﻮﺍﻧﻴﻢ ﺍﺯ‬
‫ﺑﻴﻦ ﻳﮏ ﻣﺠﻤﻮﻋﻪ ﺍﺯ ﺍﺟﺰﺍﺀ ﺟﺪﺍ ﺍﺯ ﻫﻢ ﻭ ﻣﺴﺘﻘﻞ‪ ،‬ﻳﮑﻲ ﺭﺍ ﺑﺮﺍﻱ ﮐﺎﺭﺑﺮﺩﻱ‬
‫ﺧﺎﺹ ﺑﺮﮔﺰﻳﻨﻴﻢ‪ .‬ﺍﻧﺘﺨﺎﺏ ﻳﮏ ﺟﺰﺀ ﺍﺯ ﺑﻴﻦ ﺳﺎﻳﺮﻳﻦ ﻣﺸﻤﻮﻝ ﺩﺍﺩﻥ ﺍﻣﺘﻴﺎﺯ‬
‫ﺑﻴﺸﺘﺮ ﺑﻪ ﺟﺰﺀ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﺍﺭﺯﻳﺎﺑﻲ‪ :‬ﺍﺭﺯﻳﺎﺑﻲ ﻓﺮﺁﻳﻨﺪ ﺭﺳﻤﻲ ﺍﻣﺘﻴﺎﺯ ﺩﻫﻲ ﺑﻪ ﺍﺟﺰﺍﺀ ﺑﺮ ﺍﺳﺎﺱ ﺗﺼﻤﻴﻤﺎﺕ‬
‫ﺍﻧﺴﺎﻧﻲ ﺍﺳﺖ‪ .‬ﺗﻤﺎﻡ ﺗﺼﻤﻴﻤﺎﺕ ﺍﻧﺘﺨﺎﺑﻲ‪ ،‬ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﺗﺼﻤﻴﻢ ﺑﻪ ﺧﻮﺍﻧﺪﻥ ﻳﺎ‬
‫ﻧﺨﻮﺍﻧﺪﻥ ﺍﻳﻦ ﻣﻘﺎﻟﻪ ﺑﻪ ﻧﻮﻋﻲ ﺷﺎﻣﻞ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﺑﻪ ﺣﻖ ﺍﻧﺘﺨﺎﺏ ﻫﺎﺳﺖ‪.‬‬
‫ﺍﺭﺯﻳﺎﺑﻲ‪ ،‬ﺍﻳﻦ ﻓﺮﺁﻳﻨﺪ ﺭﺍ ﺭﺳﻤﻲ‪ ،‬ﺻﺮﻳﺢ ﻭ ﻗﺎﺑﻞ ﺳﻨﺠﺶ ﻣﻲ ﮐﻨﺪ‪.‬‬
‫ﻓﺮﺁﻳﻨﺪ ﻫﺎﻱ ﻃﺮﺍﺣﻲ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ﺑﺮ ﺍﺳﺎﺱ ﺍﻳﻦ ﺍﺻﻞ ﺍﺳﺘﻮﺍﺭ‬
‫ﺍﺳﺖ ﮐﻪ ﮐﺎﺭﺍﻳﻲ ﻭ ﮐﻴﻔﻴﺖ ﻳﮏ ﺳﻴﺘﻢ ﺑﻪ ﻃﻮﺭ ﻣﺴﺘﻘﻴﻢ ﺑﺎ ﮐﻴﻔﻴﺖ ﺍﺟﺰﺍﺀ‬
‫ﺁﻥ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺭﺩ‪.‬‬
‫ﺑﻪ ﺑﻴﺎﻥ ﺩﻳﮕﺮ ﻳﮏ ﺳﻴﺴﺘﻢ ﺧﻮﺏ ﺍﺯ ﺗﺮﮐﻴﺐ ﻳﮏ ﺳﺮﻱ ﺍﺟﺰﺍﺀ ﺑﺪ ﺑﻪ ﻭﺟﻮﺩ‬
‫ﻧﻤﻲ ﺁﻳﺪ ﻭ ﻃﺒﻴﻌﺘﺎ ﺗﺮﮐﻴﺐ ﻳﮏ ﺳﺮﻱ ﺍﺟﺰﺍﺀ ﺧﻮﺏ ﺩﺭ ﻧﻬﺎﻳﺖ ﺑﻪ ﺗﺸﮑﻴﻞ‬
‫ﻳﮏ ﺳﻴﺴﺘﻢ ﻧﻬﺎﻳﻲ ﺑﺪ ﻧﻤﻲ ﺍﻧﺠﺎﻣﺪ‪ .‬ﺩﺭﺳﺖ ﻣﺎﻧﻨﺪ ﻳﮏ ﺗﻴﻢ ﻓﻮﺗﺒﺎﻝ ﺧﻮﺏ‬
‫ﮐﻪ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺑﺎﺯﻳﮑﻨﺎﻥ ﺧﻮﺏ ﺗﺸﮑﻴﻞ ﺷﺪﻩ ﺍﺳﺖ ﻭ ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ‬
‫ﺑﻴﺎﻥ ﻓﻮﻕ ﺭﺍ ﺭﺳﻤﻲ ﺗﺮ ﺑﮕﻮﻳﻴﻢ ﺑﻪ ﻧﺘﺎﻳﺞ ﺯﻳﺮ ﻣﻲ ﺭﺳﻴﻢ‪:‬‬
‫•‬
‫ﺍﮔﺮ ﮐﻴﻔﻴﺖ ﺍﺟﺰﺍﺀ ﻧﺮﻡ ﺍﻓﺰﺍﺭ‪ ،‬ﮐﻴﻔﻴﺖ ﺳﻴﺴﺘﻢ ﻧﻬﺎﻳﻲ ﺭﺍ ﻣﺸﺨﺺ‬
‫ﮐﻨﺪ‪.‬‬
‫• ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ﺑﺎﻳﺪ ﺗﮑﻨﻴﮏ ﻫﺎﻳﻲ ﺭﺍ ﺑﺮﺍﻱ ﺍﺭﺯﻳﺎﺑﻲ‬
‫ﺍﺟﺰﺍﺀ ﺍﺭﺍﺋﻪ ﮐﻨﺪ‪.‬‬
‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﻄﺎﻟﺐ ﮔﻔﺘﻪ ﺷﺪﻩ ﻣﺸﮑﻞ ﺑﻪ ﻧﻈﺮ ﻣﻲ ﺭﺳﺪ ﮐﻪ ﺑﺘﻮﺍﻥ ﺑﺎ ﮔﻔﺘﻪ‬
‫ﻫﺎﻱ ﺑﺎﻻ ﻣﺨﺎﻟﻔﺖ ﮐﺮﺩ‪ .‬ﭼﻮﻥ ﻗﺴﻤﺖ ﺍﻭﻝ ﺍﺳﺘﺪﻻﻝ ﺑﺎﻻ ﮐﻪ ﮐﺎﻣﻼ ﻣﻨﻄﻘﻲ‬
‫ﺍﺳﺖ ﻭ ﻗﺴﻤﺖ ﺩﻭﻡ ﻫﻢ ﮐﻪ ﻧﺘﻴﺠﻪ ﻃﺒﻴﻌﻲ ﻗﺴﻤﺖ ﺍﻭﻝ ﺍﺳﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ‬
‫ﺍﮔﺮ ﺗﻮﺟﻪ ﺑﻴﺸﺘﺮﻱ ﺑﻪ ﺳﺎﺧﺘﺎﺭ ﻃﺮﺍﺣﻲ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ﺩﺍﺷﺘﻪ‬
‫ﺑﺎﺷﻴﻢ‪ ،‬ﺑﻪ ﻧﺘﺎﻳﺞ ﺯﻳﺮ ﻫﻢ ﻣﻲ ﺭﺳﻴﻢ‪:‬‬
‫•‬
‫ﺍﮔﺮ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ﻣﻲ ﺑﺎﻳﺴﺖ ﺗﮑﻨﻴﮏ ﻫﺎﻱ ﻗﺎﺑﻞ‬
‫ﺍﻋﺘﻤﺎﺩ ﻭ ﺗﮑﺮﺍﺭ ﭘﺬﻳﺮﻱ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﻣﺆﻟﻔﻪ ﻫﺎ ﺍﺭﺍﺋﻪ ﮐﻨﺪ‪.‬‬
‫• ﺍﺭﺯﻳﺎﺑﻲ ﻣﺆﻟﻔﻪ ﻫﺎ ﻳﮏ ﻓﺮﺁﻳﻨﺪ ﺗﺸﺨﻴﺺ ﭘﺬﻳﺮ ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ‬
‫ﺍﺳﺖ‪ .‬ﺍﻳﻦ ﻓﺮﺁﻳﻨﺪ ﻧﻤﻮﺩﺍﺭ ﺍﺭﺯﻳﺎﺑﻲ ﺟﺮﻳﺎﻥ ﻭ ﺗﮑﻨﻴﮏ ﻫﺎﻱ‬
‫ﻣﺨﺼﻮﺹ ﺑﻪ ﺧﻮﺩ ﺭﺍ ﺩﺍﺭﺍ ﺍﺳﺖ‪.‬‬
‫ﺑﻌﺪ ﺍﺯ ﺗﻤﺎﻡ ﻣﺴﺎﺋﻞ ﮔﻔﺘﻪ ﺷﺪﻩ‪ ،‬ﭼﻴﺰﻱ ﮐﻪ ﻭﺍﺿﺢ ﺍﺳﺖ ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﻣﺎ ﺍﺯ‬
‫ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﺍﺟﺰﺍﺀ ﺭﺍ ﺍﺭﺯﻳﺎﺑﻲ ﮐﻨﻴﻢ‪ ،‬ﺳﭙﺲ ﺑﻬﺘﺮﻳﻦ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﻢ‪ .‬ﺗﮑﻨﻴﮏ‬
‫ﻫﺎﻱ ﺯﻳﺎﺩﻱ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺍﺑﺪﺍﻉ ﺷﺪﻩ ﺍﻧﺪ‪ .‬ﻣﻌﺮﻭﻑ ﺗﺮﻳﻦ ﺁﻧﻬﺎ ﮐﻪ ﺑﺮ‬
‫ﻣﺒﻨﺎﻱ ﻣﺪﻝ ﻫﺎ ﮐﺎﺭ ﻣﻲ ﮐﻨﻨﺪ‪ ،‬ﺗﮑﻨﻴﮏ ﺿﻮﺍﺑﻂ ﭼﻨﺪﮔﺎﻧﻪ ﺍﻧﺘﺨﺎﺏ ﻧﺎﻡ ﺩﺍﺭﺩ‪.‬‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺍﺑﺰﺍﺭﻫﺎ ‪ ،‬ﻣﻌﻴﺎﺭﻫﺎ ﻭ ﻗﻮﺍﻋﺪﻱ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﺍﺟﺰﺍﺀ ﻭﺿﻊ‬
‫ﻣﻲ ﮐﻨﻴﻢ ﻭ ﺳﭙﺲ ﺍﺯ ﺍﺭﺯﻳﺎﺑﻲ ﻫﺮ ﮐﺪﺍﻡ ﺍﺯ ﻗﻄﻌﺎﺕ ﮐﻪ ﺑﻴﺸﺘﺮ ﺑﺎ ﺍﻳﻦ‬
‫ﻣﻌﻴﺎﺭﻫﺎ ﺗﻄﺎﺑﻖ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ ،‬ﺑﻬﺘﺮﻳﻦ ﻗﻄﻌﻪ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫ﺿﻮﺍﺑﻂ ﭼﻨﺪﮔﺎﻧﻪ ﺍﻧﺘﺨﺎﺏ ﻣﺪﻝ ﻫﺎﻱ ﺭﻳﺎﺿﻲ ﻫﺴﺘﻨﺪ ﮐﻪ ﺩﺭ ﺗﺼﻤﻴﻢ ﮔﻴﺮﻱ‬
‫ﻫﺎﻱ ﺗﺠﺎﺭﻱ‪ ،‬ﺳﻴﺎﺳﻲ‪ ،‬ﻋﻠﻮﻡ ﺍﺟﺘﻤﺎﻋﻲ ﻭ‪ ...‬ﮐﺎﺭﺑﺮﺩ ﺯﻳﺎﺩﻱ ﺩﺍﺭﻧﺪ‪ .‬ﺩﺭ ﺍﻳﻨﺠﺎ‬
‫ﺑﻪ ﮐﺎﺭﺍﻳﻲ ﺍﻳﻦ ﺍﺑﺰﺍﺭ ﺩﺭ ﺑﺤﺚ ﺧﻮﺩ ﻧﻤﻲ ﭘﺮﺩﺍﺯﻳﻢ‪ ،‬ﺑﻠﮑﻪ ﺩﺭ ﺍﺩﺍﻣﻪ ﻧﺸﺎﻥ‬
‫ﺧﻮﺍﻫﻴﻢ ﺩﺍﺩ ﭼﮕﻮﻧﻪ ﺍﻳﻦ ﺍﺑﺰﺍﺭ ﺑﻪ ﻣﺎ ﺩﺭ ﺍﻧﺘﺨﺎﺏ ﺍﺟﺰﺍﺀ ﮐﻤﮏ ﻣﻲ ﮐﻨﺪ‪.‬‬
‫ﻫﻤﭽﻨﻴﻦ ﻣﺎ ﺩﺭ ﺍﻳﻦ ﻣﻘﺎﻟﻪ ﻣﺎ ﺑﻪ ﺑﺮﺭﺳﻲ ﻭ ﺍﺭﺯﻳﺎﺑﻲ ﻋﻤﻠﮑﺮﺩ ﻳﮏ ﺟﺰﺀ ﺍﺯ‬
‫ﺩﻳﺪﮔﺎﻩ ﺗﺮﮐﻴﺐ ﺷﺪﻥ ﺁﻥ ﺑﺎ ﺳﺎﻳﺮ ﺍﺟﺰﺍﺀ ﺳﻴﺴﺘﻢ ﻧﮕﺎﻩ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺍﺟﺰﺍﺀ‬
‫ﺗﺠﺎﺭﻱ ﻋﻼﻭﻩ ﺑﺮ ﮐﺎﺭﺍﻳﻲ ﺧﻮﺩ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﮏ ﺟﺰﺀ ﻣﺴﺘﻘﻞ ﺑﺎﻳﺪ ﺍﺯ ﺍﻳﻦ ﻧﻈﺮ‬
‫ﮐﻪ ﺩﺭ ﻳﮏ ﺳﻴﺴﺘﻢ ﺗﻌﺎﻣﻠﻲ ﺑﺎ ﻗﻄﻌﺎﺕ ﺩﻳﮕﺮ ﻗﺮﺍﺭ ﺩﺍﺭﻧﺪ ﻫﻢ ﺑﺮﺭﺳﻲ ﺷﻮﻧﺪ‪.‬‬
‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﻳﮏ ﻃﺮﺍﺡ ﺻﺮﻓﺎ ﺑﺎ ﻳﮏ ﺳﺮﻱ ﺍﺟﺰﺍﺀ ﺟﺪﺍ ﺍﺯ ﻫﻢ ﺳﺮﻭﮐﺎﺭ ﻧﺪﺍﺭﺩ‬
‫ﺑﻠﮑﻪ ﺑﺎ ﺗﺮﮐﻴﺒﻲ ﺍﺯ ﺁﻧﻬﺎ ﮐﻪ ﺩﺭ ﭘﺎﻳﺎﻥ ﺳﻴﺴﺘﻢ ﻧﻬﺎﻳﻲ ﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﮐﻨﻨﺪ ﺩﺭ‬
‫ﺗﻌﺎﻣﻞ ﺍﺳﺖ‪.‬‬
‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﻓﻘﻂ ﺍﺟﺰﺍﺀ ﻧﻴﺴﺘﻨﺪ ﮐﻪ ﻧﻴﺎﺯ ﺑﻪ ﺍﺭﺯﻳﺎﺑﻲ ﺩﺍﺭﻧﺪ‪ ،‬ﺑﻠﮑﻪ ﺗﺮﮐﻴﺐ ﺍﺟﺰﺍﺀ‬
‫ﻭ ﮐﻨﺎﺭ ﻫﻢ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﺁﻧﻬﺎ ﻧﻴﺰ ﺑﺎﻳﺪ ﻣﻮﺭﺩ ﺗﻮﺟﻪ ﻗﺮﺍﺭ ﮔﻴﺮﺩ‪ .‬ﻫﻤﺎﻥ ﻃﻮﺭ ﮐﻪ‬
‫ﺩﺭ ﺍﺩﺍﻣﻪ ﻣﻘﺎﻟﻪ ﺧﻮﺍﻫﻴﻢ ﺩﻳﺪ‪ ،‬ﺗﺼﻤﻴﻢ ﺑﻪ ﺍﺭﺯﻳﺎﺑﻲ ﺗﺮﮐﻴﺒﻲ ﺍﺟﺰﺍﺀ ﻳﮏ‬
‫ﺗﺼﻤﻴﻢ ﺻﺮﻓﺎ ﻧﻈﺮﻱ ﻧﻴﺴﺖ‪ ،‬ﺑﻠﮑﻪ ﺍﺯ ﻟﺤﺎﻅ ﮐﺎﺭﺍﻳﻲ ﻭ ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﺳﻴﺴﺘﻢ‬
‫ﻫﺎﻱ ﺑﺰﺭﮒ ﺍﻣﺮﻭﺯﻱ ﮐﺎﺭﺑﺮﺩ ﻓﻮﻕ ﺍﻟﻌﺎﺩﻩ ﺯﻳﺎﺩﻱ ﺩﺍﺭﺩ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﻣﻘﺎﻟﻪ ﺍﺑﺘﺪﺍ ﻳﮏ ﻣﺪﻝ ﻣﺠﺮﺩ ﺍﺯ ﺭﻭﺵ ﺿﻮﺍﺑﻂ ﭼﻨﺪﮔﺎﻧﻪ ﺍﻧﺘﺨﺎﺏ ﺭﺍ‬
‫ﺍﺭﺍﺋﻪ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺳﭙﺲ ﺑﻪ ﺍﻳﻦ ﻣﻘﻮﻟﻪ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ ﮐﻪ ﭼﺮﺍ ﺍﻳﻦ ﺭﻭﺵ‬
‫ﭘﺎﺳﺨﮕﻮﻱ ﺗﻤﺎﻡ ﻧﻴﺎﺯ ﻫﺎﻱ ﻣﺎ ﻧﻴﺴﺖ ﻭ ﺑﺎﻳﺪ ﺑﻪ ﺩﻧﺒﺎﻝ ﺭﻭﺵ ﺩﻳﮕﺮﻱ ﻧﻴﺰ‬
‫ﺑﺎﺷﻴﻢ‪.‬‬
‫ﺩﺭ ﺍﺩﺍﻣﻪ ﺑﺤﺚ ﺍﺭﺯﻳﺎﺑﻲ ﺗﺮﮐﻴﺒﻲ ﻭ ﺍﻧﺘﺨﺎﺑﻲ ﺭﺍ ﻣﻄﺮﺡ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺍﻳﻦ ﺑﺤﺚ‬
‫ﺑﻪ ﻣﺎ ﮐﻤﮏ ﻣﻲ ﮐﻨﺪ ﮐﻪ ﻳﮏ ﺭﺍﺑﻄﻪ ﮐﺎﺭﺑﺮﺩﻱ ﺑﻴﻦ ﺍﻧﺘﺨﺎﺏ ﺍﺟﺰﺍﺀ ﻭ ﻓﺮﺁﻳﻨﺪ‬
‫ﻃﺮﺍﺣﻲ ﺍﻳﺠﺎﺩ ﮐﻨﻴﻢ‪ .‬ﺩﺭ ﭘﺎﻳﺎﻥ ﻧﺘﻴﺠﻪ ﺑﺤﺚ ﻫﺎﻱ ﮔﻔﺘﻪ ﺷﺪﻩ ﺧﻮﺍﻫﺪ ﺁﻣﺪ‪.‬‬
‫‪ ‐۲‬ﺿﻮﺍﺑﻂ ﭼﻨﺪﮔﺎﻧﻪ ﺍﻧﺘﺨﺎﺏ‬
‫ﻳﮑﻲ ﺍﺯ ﺑﺤﺚ ﻫﺎﻱ ﻗﺎﺑﻞ ﺍﺭﺍﺋﻪ ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻣﺮﺗﺒﻂ ﺑﺎ ﺗﺌﻮﺭﻱ ﺿﻮﺍﺑﻂ‬
‫ﭼﻨﺪﮔﺎﻧﻪ ﺍﻧﺘﺨﺎﺏ ﺍﺳﺖ‪ .‬ﺩﺭ ﺍﻳﻦ ﻣﺒﺤﺚ ﻣﺎ ﺗﻤﺮﮐﺰ ﺧﻮﺩ ﺭﺍ ﺭﻭﻱ ﺍﺑﺰﺍﺭﻫﺎﻱ‬
‫ﺗﺼﻤﻴﻢ ﮔﻴﺮﻱ ﺑﺮﺍﻱ ﺣﻞ ﻣﺴﺎﻟﻪ ﻣﻲ ﮔﺬﺍﺭﻳﻢ‪ .‬ﺩﺭ ﺍﻳﻨﺠﺎ ﻓﺮﺽ ﻣﻲ ﮐﻨﻴﻢ ﮐﻪ‬
‫ﺣﻖ ﺍﻧﺘﺨﺎﺏ ﺍﺯ ﻳﮏ ﻣﺠﻤﻮﻋﻪ ﮐﻮﭼﮏ ﻭ ﺛﺎﺑﺖ ﺭﺍ ﺩﺍﺭﻳﻢ‪.‬‬
‫ﺭﺩﻩ ﮐﻠﻲ ﻣﺴﺎﺋﻞ ﺗﺼﻤﻴﻢ ﭘﺬﻳﺮﻱ ﺍﻏﻠﺐ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺴﺎﻟﻪ ﺍﻧﺘﺨﺎﺏ ﺷﻨﺎﺧﺘﻪ‬
‫ﻣﻲ ﺷﻮﻧﺪ‪ .‬ﺩﺭ ﺍﻳﻨﺠﺎ ﻫﺪﻑ ﻣﺎ ﺍﺯ ﺍﺭﺍﺋﻪ ﺿﻮﺍﺑﻂ ﭼﻨﺪﮔﺎﻧﻪ ﺍﻧﺘﺨﺎﺏ ﺍﻳﻦ ﺍﺳﺖ‬
‫ﮐﻪ ﺧﻮﺍﻧﻨﺪﻩ ﺩﺭﮎ ﮐﻠﻲ ﺍﺯ ﺍﻳﻦ ﮔﻮﻧﻪ ﻣﺴﺎﺋﻞ ﭘﻴﺪﺍ ﮐﻨﺪ ﻭ ﻫﻤﭽﻨﻴﻦ ﺑﺘﻮﺍﻧﺪ ﺍﺯ‬
‫ﺁﻧﻬﺎ ﺩﺭ ﺣﻞ ﻣﺴﺎﺋﻞ ﻣﺮﺗﺒﻂ ﺑﺎ ﻣﻬﻨﺪﺳﻲ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻫﻢ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﺪ‪.‬‬
‫ﻫﺪﻑ ﺍﺯ ﺿﻮﺍﺑﻂ ﭼﻨﺪﮔﺎﻧﻪ ﺍﻧﺘﺨﺎﺏ ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﻳﮏ ﺑﺴﺘﺮ ﮐﻠﻲ ﺑﺮﺍﻱ‬
‫ﺍﻧﺘﺨﺎﺏ ﻭ ﺍﺭﺯﻳﺎﺑﻲ ﻣﺆﻟﻔﻪ ﻫﺎ ﺑﺮﺍﻱ ﻣﺎ ﻓﺮﺍﻫﻢ ﮐﻨﺪ‪ .‬ﺩﺭ ﺍﻳﻦ ﺭﻭﺵ ﻣﺎ ﻳﮏ‬
‫ﺳﺮﻱ ﻣﻌﻴﺎﺭﻫﺎﻱ ﺍﻧﺘﺨﺎﺏ ﺩﺍﺭﻳﻢ ﻭ ﺑﺮ ﺍﺳﺎﺱ ﺍﻳﻦ ﻣﻌﻴﺎﺭﻫﺎ ﺍﺑﺘﺪﺍ ﻫﺮ ﻳﮏ ﺍﺯ‬
‫ﺍﺟﺰﺍﺀ ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫ﻳﻌﻨﻲ ﻫﺮ ﺟﺰﺀ ﺭﺍ ﺑﺮ ﺍﺳﺎﺱ ﺗﻤﺎﻡ ﻣﻌﻴﺎﺭ ﻫﺎﻱ ﻣﻮﺭﺩ ﺳﻨﺠﺶ ﻗﺮﺍﺭ ﻣﻲ‬
‫ﺩﻫﻴﻢ‪ .‬ﺳﭙﺲ ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻡ ﺍﻳﻦ ﺍﺭﺯﻳﺎﺑﻲ ﻫﺎ ﺭﺍ ﺩ ﺭﮐﻨﺎﺭ ﻳﮑﺪﻳﮕﺮ ﺩﺭ ﻧﻈﺮ‬
‫ﻣﻲ ﮔﻴﺮﻳﻢ ﻭ ﺍﻗﺪﺍﻡ ﺑﻪ ﺍﻧﺘﺨﺎﺏ ﺑﻬﺘﺮﻳﻦ ﺁﻧﻬﺎ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺑﺪﻳﻦ ﻭﺳﻴﻠﻪ ﻣﻲ‬
‫ﺗﻮﺍﻥ ﺗﺎ ﺣﺪ ﺯﻳﺎﺩﻱ ﻣﻄﻤﺌﻦ ﺑﻮﺩ ﮐﻪ ﺑﻬﺘﺮﻳﻦ ﻭ ﮐﺎﺭﺍﺗﺮﻳﻦ ﺟﺰﺀ ﻣﻤﮑﻦ ﺭﺍ ﺍﺯ‬
‫ﺑﻴﻦ ﺗﻤﺎﻡ ﺍﺟﺰﺍﻳﻲ ﮐﻪ ﺣﻖ ﺍﻧﺘﺨﺎﺏ ﺩﺍﺷﺘﻴﻢ ﺑﺮﮔﺰﻳﺪﻩ ﺍﻳﻢ‪.‬‬
‫ﻻﺯﻣﻪ ﻱ ﺍﻳﻦ ﻓﺮﺁﻳﻨﺪ ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﺍﺑﺘﺪﺍ ﻭﻳﮋﮔﻲ ﻫﺎﻳﻲ ﺭﺍ ﮐﻪ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ‬
‫ﻳﮏ ﻗﻄﻌﻪ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﻣﺸﺨﺺ ﮐﻨﻴﻢ‪ ،‬ﺳﭙﺲ ﺑﻪ ﻫﺮ ﻗﻄﻌﻪ ﻧﻤﺮﻩ ﻣﺮﺑﻮﻁ‬
‫ﺑﻪ ﺁﻥ ﺭﺍ ﺍﺧﺘﺼﺎﺹ ﺩﻫﻴﻢ‪ .‬ﺩﺭ ﺍﺩﺍﻣﻪ ﻣﻘﺎﻟﻪ ﺑﻪ ﺑﺮﺭﺳﻲ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﻗﺎﺑﻞ‬
‫ﺍﺭﺯﻳﺎﺑﻲ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ ﻭ ﻳﮏ ﻣﺪﻝ ﮐﺎﻣﻼ ﺭﻳﺎﺿﻲ ﺍﺯ ﻓﺮﺁﻳﻨﺪ ﺿﻮﺍﺑﻂ ﭼﻨﺪﮔﺎﻧﻪ‬
‫ﺍﻧﺘﺨﺎﺏ ﺭﺍ ﺍﺭﺍﺋﻪ ﻣﻲ ﺩﻫﻴﻢ‪.‬‬
‫ﺍﻧﺘﺨﺎﺏ‬
‫ﻗﻄﻌﻪ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ‬
‫ﻓﺮﻭﺷﻨﺪﻩ‬
‫ﮐﺎﺭﺍﻳﻲ‬
‫ﺷﻬﺮﺕ‬
‫ﻗﻴﻤﺖ‬
‫ﺷﻜﻞ )‪ :(۱‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﻧﺘﺨﺎﺑﻲ‬
‫ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﻧﺘﺨﺎﺏ ﺍﻏﻠﺐ ﺑﻪ ﺻﻮﺭﺕ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺒﻲ ﺍﺭﺍﺋﻪ ﻣﻲ ﺷﻮﻧﺪ‬
‫ﻫﺮﭼﻨﺪ ﻟﺰﻭﻣﺎ ﻧﻴﺎﺯﻱ ﺑﻪ ﺍﻳﻦ ﮐﺎﺭ ﻧﻴﺴﺖ‪ .‬ﺭﻳﺸﻪ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﺧﺮﻭﺟﻲ ﺭﺍ‬
‫ﻣﺸﺨﺺ ﻣﻲ ﮐﻨﺪ‪ .‬ﻭ ﻭﻳﮋﮔﻲ ﻫﺎ ﺻﻔﺎﺗﻲ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺮ ﺭﻭﻱ ﺧﺮﻭﺟﻲ ﺍﺛﺮ‬
‫ﻣﻲ ﮔﺬﺍﺭﻧﺪ‪.‬‬
‫ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﭘﺎﻳﻪ ﺩﺭ ﭘﺎﻳﺎﻥ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﺩﻳﺪﻩ ﻣﻲ ﺷﻮﻧﺪ‪ .‬ﺑﻪ ﺁﻧﻬﺎ ﻭﻳﮋﮔﻲ‬
‫ﻫﺎﻱ ﭘﺎﻳﻪ ﻣﻲ ﮔﻮﻳﻴﻢ ﺯﻳﺮﺍ ﺣﺎﺻﻞ ﺗﺮﮐﻴﺐ ﭼﻨﺪ ﻭﻳﮋﮔﻲ ﺩﻳﮕﺮ ﻧﻴﺴﺘﻨﺪ‪ .‬ﺍﻳﻦ‬
‫ﻫﺎ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪﻩ ﻫﺴﺘﻨﺪ‪ .‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺗﺮﮐﻴﺒﻲ ﺩﺭ ﮔﺮﻩ ﻫﺎﻱ‬
‫ﻣﻴﺎﻧﻲ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﻧﺪ‪ .‬ﺍﻳﻦ ﻭﻳﮋﮔﻲ ﻫﺎ ﺣﺎﺻﻞ ﺗﺮﮐﻴﺐ ﺳﺎﻳﺮ ﻭﻳﮋﮔﻲ ﻫﺎ‬
‫ﻫﺴﺘﻨﺪ‪.‬‬
‫ﻳﮑﻲ ﺍﺯ ﻭﻳﮋﮔﻲ ﻫﺎﻳﻲ ﮐﻪ ﻣﺎ ﺩﺭ ﻓﺮﺁﻳﻨﺪ ﺗﺼﻤﻴﻢ ﮔﻴﺮﻱ ﺑﻪ ﺁﻥ ﻧﻴﺎﺯ ﺩﺍﺭﻳﻢ‪،‬‬
‫ﺗﮑﺮﺍﺭ ﭘﺬﻳﺮﻱ ﺍﺳﺖ‪ .‬ﺩﺭ ﺣﻘﻴﻘﺖ ﭘﺎﻳﻪ ﺗﮑﺮﺍﺭ ﭘﺬﻳﺮﻱ ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﻣﺎ ﻣﻲ‬
‫ﺗﻮﺍﻧﻴﻢ ﺑﺮﺍﻱ ﻫﺮ ﻳﮏ ﺍﺯ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﻳﮏ ﻣﻌﻴﺎﺭ ﺳﻨﺠﺶ ﺩﺭ ﻧﻈﺮ‬
‫ﺑﮕﻴﺮﻳﻢ‪ .‬ﺷﮑﻞ ‪ ۲‬ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﮐﻪ ﺑﺮ ﺍﺳﺎﺱ ﺑﺤﺚ ﻗﺒﻠﻲ ﺍﺳﺖ‪ .‬ﺑﻪ‬
‫ﻫﺮﻳﮏ ﺍﺯ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﭘﺎﻳﻪ ﻳﮏ ﻣﻌﻴﺎﺭ ﺍﺭﺯﻳﺎﺑﻲ ﻧﺴﺒﺖ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫‪ ‐۳‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ‬
‫ﻧﺘﻴﺠﻪ ﺗﺼﻤﻴﻢ ﮔﻴﺮﻱ ﺍﻧﺘﺨﺎﺏ ﻳﮏ ﺧﺮﻭﺟﻲ ﺍﺳﺖ‪ .‬ﺑﻌﻀﻲ ﻭﻗﺖ ﻫﺎ ﺭﺍﺑﻄﻪ‬
‫ﺑﻴﻦ ﺗﺼﻤﻴﻢ ﮔﻴﺮﻱ ﻭ ﺧﺮﻭﺟﻲ ﺁﻧﻘﺪﺭ ﻗﻮﻱ ﺍﺳﺖ ﮐﻪ ﺗﻔﺎﻭﺕ ﺑﻴﻦ ﺍﻳﻦ ﺩﻭ ﺑﻪ‬
‫ﺳﺨﺘﻲ ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﺧﺮﻭﺟﻲ ﺗﺼﻤﻴﻢ ﻣﺎ ﻣﺒﻨﻲ ﺑﺮ ﺍﻧﺘﺨﺎﺏ ﺑﻴﻦ ﻣﺎﻫﻲ ﻭ ﻣﺮﻍ ﺑﺮﺍﻱ ﻧﺎﻫﺎﺭ ﺍﻳﻦ‬
‫ﺍﺳﺖ ﮐﻪ ﻣﺎ ﺩﺭ ﻧﻬﺎﻳﺖ ﺑﺮﺍﻱ ﻧﺎﻫﺎﺭ ﻣﺎﻫﻲ ﻳﺎ ﻣﺮﻍ ﻣﻲ ﺧﻮﺭﻳﻢ‪ .‬ﺍﻣﺎ ﮔﺎﻫﻲ‬
‫ﺍﻭﻗﺎﺕ ﻗﻀﻴﻪ ﺑﻪ ﺍﻳﻦ ﺳﺎﺩﮔﻲ ﻧﻴﺴﺖ‪ .‬ﻣﺜﻼ ﺍﻧﺘﺨﺎﺏ ﻳﮏ ﺭﺷﺘﻪ ﺩﺍﻧﺸﮕﺎﻫﻲ ﺍﺯ‬
‫ﺑﻴﻦ ﭼﻨﺪﻳﻦ ﺭﺷﺘﻪ ﮐﻪ ﺣﻖ ﺍﻧﺘﺨﺎﺏ ﺩﺍﺭﻳﻢ‪ ،‬ﺩﺭ ﻧﻬﺎﻳﺖ ﺑﻪ ﻣﻮﻗﻌﻴﺖ ﺷﻐﻠﻲ‬
‫ﺁﻳﻨﺪﻩ ﻣﺎ ﻭ ﺷﺎﻳﺪ ﮐﻞ ﻣﺴﻴﺮ ﺯﻧﺪﮔﻲ ﻣﻨﺘﻬﻲ ﺷﻮﺩ‪.‬‬
‫ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ‪ ،‬ﻣﻌﻴﺎﺭﻫﺎﻳﻲ ﺭﺍ ﺗﻮﺻﻴﻒ ﻣﻲ ﮐﻨﻨﺪ ﮐﻪ ﺑﺮ ﻃﺒﻖ ﺁﻧﻬﺎ ﻣﻲ‬
‫ﺗﻮﺍﻥ ﺑﻪ ﺧﻮﺑﻲ ﻭ ﺑﺪﻱ ﺧﺮﻭﺟﻲ ﭘﻲ ﺑﺮﺩ‪ .‬ﺩﺭ ﺣﻘﻴﻘﺖ ﺁﻧﻬﺎ ﺗﻤﻴﺰ ﺩﻫﻨﺪﻩ ﺑﻴﻦ‬
‫ﻋﻨﺎﺻﺮﻱ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺎﻳﺪ ﺍﺯ ﺑﻴﻦ ﺁﻧﻬﺎ ﻳﮑﻲ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﻢ‪ .‬ﺑﺮﺍﻱ ﻣﺜﺎﻝ‬
‫ﺷﮑﻞ ‪ ۱‬ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬ﮐﻪ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﻧﺘﺨﺎﺑﻲ ﺭﺍ ﺑﺮﺍﻱ ﻳﮏ ﻣﺴﺎﻟﻪ‬
‫ﺍﻧﺘﺨﺎﺏ ﻓﺮﺿﻲ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﺍﻧﺘﺨﺎﺏ‬
‫ﻗﻄﻌﻪ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ‬
‫ﺁﻳﺘﻢ ﻣﻨﻮﻫﺎ‬
‫ﻓﺮﻭﺷﻨﺪﻩ‬
‫ﮐﺎﺭﺍﻳﻲ‬
‫ﺷﺎﺧﺺ ﮐﺎﺭﺍﻳﻲ‬
‫ﺷﻬﺮﺕ‬
‫ﻗﻴﻤﺖ‬
‫ﻗﻀﺎﻭﺕ‬
‫ﻗﻀﺎﻭﺕ‬
‫ﺷﻜﻞ )‪ :(۱‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﻧﺘﺨﺎﺑﻲ ﻭ ﻣﻌﻴﺎﺭﻫﺎ‬
‫ﻣﺎ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﮐﺎﺭﺍﻳﻲ ﻳﮏ ﻓﺮﺩ ﺭﺍ ﺑﻪ ﻭﺳﻴﻠﻪ ﺟﻤﻊ ﺗﻌﺪﺍﺩ ﺁﻳﺘﻢ ﻫﺎﻱ ﻣﺠﺰﺍﻱ‬
‫ﻳﮏ ﻣﻨﻮ ﻣﺤﺎﺳﺒﻪ ﮐﻨﻴﻢ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺭﺍ ﺑﺮ ﺍﺳﺎﺱ‬
‫ﺗﻌﺪﺍﺩ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﻣﺸﺎﻫﺪﻩ ﺷﺪﻩ ﺍﺯ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻣﺜﻞ ﺑﺮﮔﺸﺖ‬
‫ﻧﺎﻣﺘﻨﺎﻫﻲ ﺑﺴﻨﺠﻴﻢ‪ .‬ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﮐﻪ ﺻﺮﻑ ﻣﻌﻨﺎﺩﺍﺭ ﺑﻮﺩﻥ ﻳﮏ ﻭﻳﮋﮔﻲ‬
‫ﺩﻟﻴﻞ ﺧﻮﺏ ﺑﻮﺩﻥ ﺁﻥ ﻧﻴﺴﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻳﮏ ﻭﻳﮋﮔﻲ ﺑﺎﻳﺴﺘﻲ ﻗﺎﺑﻠﻴﺖ ﺗﮑﺮﺍﺭ‬
‫ﭘﺬﻳﺮﻱ ﻫﻢ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫ﺍﻳﻦ ﻣﻌﻴﺎﺭﻫﺎ ﺑﺎﻳﺪ ﻳﮏ ﻭﻳﮋﮔﻲ ﺍﺳﺎﺳﻲ ﻭ ﺿﺮﻭﺭﻱ ﺩﺭ ﻣﻮﺭﺩ ﻳﮏ ﺟﺰﺀ ﺭﺍ‬
‫ﺑﻴﺎﻥ ﮐﻨﺪ‪ .‬ﺳﭙﺲ ﻣﺎ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﺑﮕﻮﻳﻴﻢ ﮐﻪ ﺍﻳﻦ ﻭﻳﮋﮔﻲ ﺣﻖ ﺍﻧﺘﺨﺎﺏ ﺑﺎﻻﻳﻲ‬
‫ﺑﻪ ﻣﺎ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﺍﮔﺮ ﻣﺎ ﺍﺯ ﻣﺪﻳﺮﺍﻥ ﻣﺨﺘﻠﻒ ﺩﺭ ﻣﻮﺭﺩ ﺷﻬﺮﺕ ﻭ ﺍﻋﺘﺒﺎﺭ ﻳﮏ‬
‫ﺳﺎﺯﻧﺪﻩ ﺳﻮﺍﻝ ﮐﻨﻴﻢ‪ ،‬ﻣﻤﮑﻦ ﺍﺳﺖ ﺟﻮﺍﺏ ﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺍﺯ ﻣﺪﻳﺮﺍﻥ ﻣﺨﺘﻠﻒ‬
‫ﺑﺸﻨﻮﻳﻢ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻣﻌﻴﺎﺭ ﺷﻬﺮﺕ‪ ،‬ﻳﮏ ﻣﻌﻴﺎﺭ ﺗﮑﺮﺍﺭ ﺷﺪﻧﻲ ﻧﻴﺴﺖ‪ .‬ﭼﻮﻥ ﺩﺭ‬
‫ﺷﺮﺍﻳﻂ ﻣﺨﺘﻠﻒ‪ ،‬ﺑﺴﺘﻪ ﺑﻪ ﻣﺪﻳﺮ ﻣﻮﺭﺩ ﭘﺮﺳﺶ‪ ،‬ﺟﻮﺍﺏ ﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ‬
‫ﺩﺭﻳﺎﻓﺖ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫ﻫﺮ ﻳﮏ ﺍﺯ ﻣﻌﻴﺎﺭﻫﺎ ﺑﺎﻳﺪ ﻳﮏ ﻣﻘﻴﺎﺱ ﺍﻧﺪﺍﺯﻩ ﮔﻴﺮﻱ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻣﺜﻼ‬
‫ﺗﻌﺪﺍﺩ ﺁﻳﺘﻢ ﻫﺎﻱ ﻳﮏ ﻣﻨﻮ ﻭ ﺷﺎﺧﺺ ﮐﺎﺭﺍﻳﻲ ﻣﺠﺪﺩ ﻫﺮ ﺩﻭ ﻣﻌﻴﺎﺭ ﻫﺎﻱ‬
‫ﻋﺪﺩﻱ ﻫﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻫﻨﮕﺎﻡ ﺗﻌﺮﻳﻒ ﻳﮏ ﻣﻌﻴﺎﺭ ﺑﺎﻳﺪ ﺑﻪ ﺍﻳﻦ ﻧﮑﺘﻪ ﻫﻢ‬
‫ﺗﻮﺟﻪ ﮐﺮﺩ‪.‬‬
‫‪ ‐۴‬ﺍﺭﺯﻳﺎﺑﻲ ﺑﺮ ﺍﺳﺎﺱ ﺑﺮﺗﺮﻱ ﻫﺎﻱ ﺩﺍﺧﻠﻲ ﻗﻄﻌﺎﺕ‬
‫ﺩﺭ ﺍﻳﻦ ﻣﺮﺣﻠﻪ ﺍﺑﺘﺪﺍ ﻣﺪﻟﻲ ﺑﺮﺍﻱ ﺍﺭﺯﻳﺎﺑﻲ ﻗﻄﻌﺎﺕ ﺍﺭﺍﺋﻪ ﻣﻲ ﮐﻨﻴﻢ ﮐﻪ ﺑﺮ ﺍﻳﻦ‬
‫ﻓﺮﺽ ﺍﺳﺘﻮﺍﺭ ﺍﺳﺖ ﮐﻪ ﻫﺮ ﻗﻄﻌﻪ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﺟﺪﺍﮔﺎﻧﻪ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ‬
‫ﻭ ﺩﺭ ﺣﻘﻴﻘﺖ ﺑﻪ ﻗﻄﻌﻪ ﺍﺯ ﺩﺭﻭﻥ ﻧﮕﺎﻩ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻦ ﻧﮕﺎﻩ ﻭﻳﮋﮔﻲ ﻫﺎﻳﻲ‬
‫ﻣﺜﻞ ﮐﺎﺭﺍﻳﻲ ﻳﮏ ﻗﻄﻌﻪ ﺑﺮﺍﻱ ﻣﺎ ﺍﻫﻤﻴﺖ ﺩﺍﺭﺩ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻣﻤﮑﻦ ﺍﺳﺖ‬
‫ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺟﺎﻧﺒﻲ ﻣﺜﻞ ﺗﻌﺪﺍﺩ ﺧﻄﻮﻁ ﺑﺮﻧﺎﻣﻪ ﻭ‪ ...‬ﻫﻢ ﻣﻬﻢ ﺑﺎﺷﺪ‪ .‬ﺍﺑﺘﺪﺍ‬
‫ﻣﺪﻝ ﺳﺎﺩﻩ ﺷﺪﻩ ﺍﻱ ﺍﺯ ﺍﻳﻦ ﺣﺎﻟﺖ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ‬
‫ﺗﻮﺍﺑﻊ ﺯﻳﺮ ﺭﺍ ﻣﻄﺮﺡ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫•‬
‫)‪ x : S(x,y‬ﺑﺮ ‪ y‬ﺑﺮﺗﺮﻱ ﺩﺍﺭﺩ‬
‫•‬
‫)‪ P(x,y‬ﺑﺮﺗﺮﻱ ﻣﻄﻠﻖ‬
‫•‬
‫)‪ I(x,y‬ﺑﺮﺗﺮﻱ ﻣﺸﺎﺑﻪ‬
‫•‬
‫)‪ R(x,y‬ﻏﻴﺮﻗﺎﺑﻞ ﻗﻴﺎﺱ‬
‫ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﮐﻪ ﻣﺎ ﺑﻪ ﺻﻮﺭﺕ ﮐﻠﻲ ﺑﺮﺗﺮﻱ ﻳﮏ ﻗﻄﻌﻪ‬
‫ﺑﺮ ﺩﻳﮕﺮﻱ ﺭﺍ ﺑﺮﺭﺳﻲ ﮐﺮﺩﻳﻢ ﻭ ﺩﺭ ﺣﻘﻴﻘﺖ ﻣﻌﻴﺎﺭ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﺭﺍ ﻭﺍﺭﺩ‬
‫ﻣﺎﺟﺮﺍ ﻧﮑﺮﺩﻩ ﺍﻳﻢ‪ .‬ﺩﺭ ﺍﺩﺍﻣﻪ ﺗﻮﺍﺑﻊ ﺯﻳﺮ ﺭﺍ ﻣﻌﺮﻓﻲ ﻣﻲ ﮐﻨﻴﻢ ﮐﻪ ﻧﺸﺎﻥ ﺩﻫﻨﺪﻩ‬
‫ﺑﺮﺗﺮﻱ ﺍﺟﺰﺍﺀ ﺑﺮ ﻳﮑﺪﻳﮕﺮ ﺑﺮ ﺍﺳﺎﺱ ﻣﻌﻴﺎﺭﻫﺎﻱ ﺍﺯ ﭘﻴﺶ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫•‬
‫)‪ x : S(x,y,g‬ﺑﺮ ‪ y‬ﺑﺮﺗﺮﻱ ﺩﺍﺭﺩ ﺑﺮﺍﺳﺎﺱ ﻣﻌﻴﺎﺭ ‪g‬‬
‫•‬
‫)‪ P(x,y,g‬ﺑﺮﺗﺮﻱ ﻣﻄﻠﻖ‬
‫•‬
‫)‪ I(x,y,g‬ﺑﺮﺗﺮﻱ ﻣﺸﺎﺑﻪ‬
‫•‬
‫)‪ R(x,y,g‬ﻏﻴﺮﻗﺎﺑﻞ ﻗﻴﺎﺱ‬
‫ﺣﺎﻝ ﺑﻪ ﺫﮐﺮ ﻳﮏ ﻣﺜﺎﻝ ﺩﺭ ﺍﻳﻦ ﺯﻣﻴﻨﻪ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ‪).‬ﺷﮑﻞ ‪(۳‬‬
‫ﺷﻜﻞ )‪ :(۳‬ﻣﺜﺎﻝ‬
‫ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﻣﺸﺎﻫﺪﻩ ﻣﻲ ﺷﻮﺩ ﻣﺆﻟﻔﻪ ‪ P‬ﺩﺭ ﺻﻮﺭﺗﻲ ﺑﺮ ﻣﺆﻟﻔﻪ ‪ I‬ﺑﺮﺗﺮﻱ‬
‫ﺩﺍﺭﺩ ﮐﻪ ﺗﻔﺎﻭﺕ ﺗﺎﺑﻊ ﺍﺭﺯﻳﺎﺑﻲ ﺷﺎﻥ ﺍﺯ ﻳﮏ ﻣﻘﺪﺍﺭ ﺁﺳﺘﺎﻧﻪ ﺑﻴﺸﺘﺮ ﺑﺎﺷﺪ‪ .‬ﺑﻪ‬
‫ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﻫﻨﮕﺎﻡ ﺍﺭﺯﻳﺎﺑﻲ ﻗﻄﻌﺎﺕ ﻣﺎ ﺑﺮﺍﻱ ﻫﺮ ﻳﮏ ﺍﺯ ﺁﻧﻬﺎ ﻳﮏ ﻣﻘﺪﺍﺭ‬
‫ﺁﺳﺘﺎﻧﻪ ﻫﻢ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ ﮐﻪ ﺩﺭ ﺻﻮﺭﺗﻲ ﮐﻪ ﺗﻔﺎﻭﺕ ﺩﻭ ﻣﺆﻟﻔﻪ ﺍﺯ‬
‫ﻣﻘﺪﺍﺭ ﺁﺳﺘﺎﻧﻪ ﺑﻴﺸﺘﺮ ﺑﻮﺩ‪ ،‬ﻳﮑﻲ ﺑﺮ ﺩﻳﮕﺮﻱ ﺑﺮﺗﺮﻱ ﺩﺍﺭﺩ‪ ،‬ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ‬
‫ﺩﻭ ﻣﺆﻟﻔﻪ ﺍﺯ ﻧﻈﺮ ﺍﻳﻦ ﻣﻌﻴﺎﺭ ﺧﺎﺹ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﺑﺮﺍﺑﺮ ﻫﺴﺘﻨﺪ‪.‬‬
‫ﺍﮔﺮ ‪ m‬ﺭﺍ ﺗﻌﺪﺍﺩ ﻭﻳﮋﮔﻲ ﻫﺎ ﻭ ‪ n‬ﺭﺍ ﺗﻌﺪﺍﺩ ﺍﺟﺰﺍﺀ ﺑﮕﻴﺮﻳﻢ‪ ،‬ﺗﻌﺪﺍﺩ ﮐﻞ ﺍﺭﺯﻳﺎﺑﻲ‬
‫ﻫﺎ ﺑﺮﺍﺑﺮ )!)‪ (m*n!)/(2*(n-2‬ﺍﺳﺖ‪ .‬ﻫﻤﺎﻥ ﻃﻮﺭ ﮐﻪ ﻣﻲ ﺑﻴﻨﻴﻢ ﺩﺭ ﺻﻮﺭﺕ‬
‫ﺍﻓﺰﺍﻳﺶ ﻣﻘﺪﺍﺭ ‪ m‬ﻳﺎ ‪ ،n‬ﻣﻘﺪﺍﺭ ﮐﻞ ﺍﺭﺯﻳﺎﺑﻲ ﻫﺎ ﻫﻢ ﺧﻴﻠﻲ ﺯﻳﺎﺩ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺎﻳﺪ ﺑﻪ ﺩﻧﺒﺎﻝ ﺭﺍﻩ ﻫﺎﻳﻲ ﺑﻮﺩ ﮐﻪ ﺗﻌﺪﺍﺩ ﻣﻘﺎﻳﺴﻪ ﮐﻤﺘﺮ ﺷﻮﺩ‪ .‬ﻣﺜﻼ‬
‫ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﺭﻭﺵ ﻫﺎﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﻮﺵ ﻣﺼﻨﻮﻋﻲ ﻳﺎ ﻫﺮﺱ ﮐﺮﺩﻥ ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﮐﺮﺩ‪.‬‬
‫ﺣﺎﻝ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﮐﻴﻔﻴﺖ ﻣﺆﻟﻔﻪ ‪ x‬ﺭﺍ ﺑﺮ ﺣﺴﺐ ﻣﻌﻴﺎﺭﻫﺎﻱ ‪ g‬ﺑﻪ ﺻﻮﺭﺕ ﺗﺎﺑﻊ‬
‫ﺯﻳﺮ ﺑﻴﺎﻥ ﮐﻨﻴﻢ‪.‬‬
‫)‪Q(x) = C1Q1(x,g1) + … + CnQn(x,gn‬‬
‫ﮐﻪ ﺩﺭ ﺁﻥ )‪ Q(x,g‬ﮐﻴﻔﻴﺖ ﺟﺰﺀ ‪ x‬ﺑﺮ ﺣﺴﺐ ﻣﻌﻴﺎﺭ ‪ g‬ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﭘﺲ ﺍﺯ‬
‫ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﮐﺎﺭ ﻣﻲ ﺗﻮﺍﻥ ﺑﺎ ﻣﺮﺗﺐ ﮐﺮﺩﻥ ‪Q‬ﻫﺎ ﺑﻬﺘﺮﻳﻦ ﻭ ﺑﺎ ﺻﺮﻓﻪ ﺗﺮﻳﻦ‬
‫ﻣﺆﻟﻔﻪ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩ‪.‬‬
‫‪ ‐۵‬ﺍﺭﺯﻳﺎﺑﻲ ﺑﺮ ﺍﺳﺎﺱ ﺑﺮﺗﺮﻱ ﻫﺎﻱ ﺑﻴﺮﻭﻧﻲ ﻗﻄﻌﺎﺕ‬
‫ﻣﻨﻈﻮﺭ ﺍﺯ ﺍﺭﺯﻳﺎﺑﻲ ﻫﺎﻱ ﺑﻴﺮﻭﻧﻲ ﻳﮏ ﻗﻄﻌﻪ‪ ،‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺍﻳﻦ ﻗﻄﻌﻪ ﺑﻪ‬
‫ﻫﻨﮕﺎﻡ ﺗﺮﮐﻴﺐ ﻭ ﺍﺗﺼﺎﻝ ﺑﺎ ﺳﺎﻳﺮ ﻗﻄﻌﺎﺕ ﺍﺳﺖ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻧﻴﺎﺯﻣﻨﺪ ﻣﻌﻴﺎﺭﻫﺎﻳﻲ‬
‫ﺟﺪﺍ ﺍﺯ ﻣﻌﻴﺎﺭ ﻫﺎﻱ ﺑﺨﺶ ﻗﺒﻞ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﻫﺴﺘﻴﻢ‪.‬‬
‫‪ ‐۶‬ﺍﻧﺘﺨﺎﺏ ﻧﻬﺎﻳﻲ‬
‫ﺩﺭ ﺍﻳﻦ ﻣﺮﺣﻠﻪ ﭘﺲ ﺍﺯ ﺍﻳﻨﮑﻪ ﻗﻄﻌﺎﺕ ﺭﺍ ﺑﺮ ﺍﺳﺎﺱ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺩﺍﺧﻠﻲ ﻭ‬
‫ﺑﻴﺮﻭﻧﻲ ﺍﺭﺯﻳﺎﺑﻲ ﮐﺮﺩﻳﻢ‪ ،‬ﻣﻲ ﺑﺎﻳﺴﺖ ﺑﺎ ﺗﺮﮐﻴﺐ ﺩﻭ ﻣﻌﻴﺎﺭ ﺍﺳﺎﺳﻲ ﻭ ﺑﺎ ﺗﻮﺟﻪ‬
‫ﺑﻪ ﺍﻳﻨﮑﻪ ﮐﺪﺍﻡ ﻳﮏ ﺑﺮﺍﻱ ﻣﺎ ﺍﺭﺯﺵ ﺑﻴﺸﺘﺮﻱ ﺩﺍﺭﺩ‪ ،‬ﺍﻗﺪﺍﻡ ﺑﻪ ﺍﻧﺘﺨﺎﺏ ﻗﻄﻌﻪ‬
‫ﻣﻨﺎﺳﺐ ﺑﮑﻨﻴﻢ‪.‬‬
‫ﻫﻤﭽﻨﻴﻦ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻨﮑﻪ ﮐﺪﺍﻡ ﻳﮏ ﺍﺯ ﻭﻳﮋﮔﻲ ﻫﺎ ﺑﺮﺍﻱ ﻣﺎ ﺍﺯ‬
‫ﺍﻫﻤﻴﺖ ﺑﻴﺸﺘﺮﻱ ﺑﺮ ﺧﻮﺭﺩﺍﺭ ﺍﺳﺖ‪ ،‬ﻭﺯﻥ ﺁﻥ ﻭﻳﮋﮔﻲ ﺭﺍ ﺑﻴﺸﺘﺮ ﺩﺭ ﻧﻈﺮ‬
‫ﺑﮕﻴﺮﻳﻢ‪.‬‬
‫‪ ‐۷‬ﻧﺘﻴﺠﻪ‬
‫ﺷﻜﻞ )‪ :(۴‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺩﺍﺧﻠﻲ‬
‫ﻣﺜﻼ ﻫﻤﺎﻥ ﻃﻮﺭ ﮐﻪ ﺩﺭ ﺷﮑﻞ ‪ ۴‬ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪ ،‬ﺍﺟﺰﺍﺀ ‪ C1‬ﻭ ‪C2‬‬
‫ﺻﺮﻓﺎ ﺑﺮ ﺍﺳﺎﺱ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺩﺍﺧﻠﻲ ‪ P1‬ﻭ ‪ P2‬ﺍﺭﺯﻳﺎﺑﻲ ﺷﺪﻩ ﺍﻧﺪ‪ ،‬ﺍﻣﺎ ﺩﺭ‬
‫ﺷﮑﻞ ‪ ۵‬ﻗﻄﻌﻪ ‪ C1‬ﻋﻼﻭﻩ ﺑﺮ ﺍﻳﻦ ﮐﻪ ﺑﺮ ﺍﺳﺎﺱ ‪ P1‬ﺍﺭﺯﻳﺎﺑﻲ ﺷﺪﻩ ﺍﺳﺖ‪ ،‬ﺑﺮ‬
‫ﺍﺳﺎﺱ ﻣﻌﻴﺎﺭﻱ ﺩﻳﮕﺮﻱ ﺑﻪ ﻧﺎﻡ ‪ PE1‬ﻫﻢ ﺍﺭﺯﻳﺎﺑﻲ ﺷﺪﻩ ﺍﺳﺘﮑﻪ ﻳﮏ ﻣﻌﻴﺎﺭ‬
‫ﺑﻴﺮﻭﻧﻲ ﺑﺮﺍﻱ ﺁﻥ ﺑﻪ ﺷﻤﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﻣﻘﺎﻟﻪ ﺑﻪ ﺑﺮﺭﺳﻲ ﻣﺪﻝ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﮐﻴﻔﻴﺖ ﺍﺟﺰﺍﺀ ﻧﺮﻡ ﺍﻓﺰﺍﺭ‬
‫ﭘﺮﺩﺍﺧﺘﻴﻢ ﻭ ﻣﺪﻝ ﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺑﺮﺍﻱ ﺁﻥ ﺭﺍ ﻣﻌﺮﻓﻲ ﮐﺮﺩﻳﻢ‪.‬‬
‫ﺳﻌﻲ ﻣﺎ ﺩﺭ ﺍﻳﻦ ﺑﻮﺩ ﮐﻪ ﺭﻭﺵ ﻫﺎﻱ ﻣﻔﻴﺪﻱ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﻭ ﺍﺭﺯﻳﺎﺑﻲ‬
‫ﺩﺭﺳﺖ ﺍﺟﺰﺍﺀ ﺭﺍ ﺍﺭﺍﺋﻪ ﺩﻫﻴﻢ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﺭﺍﺳﺘﺎ ﺑﻪ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺩﺍﺧﻠﻲ ﻭ ﺑﻴﺮﻭﻧﻲ ﻫﺮ ﺩﻭ ﺗﻮﺟﻪ ﮐﺮﺩﻳﻢ‪ .‬ﺑﻪ‬
‫ﻋﻠﺖ ﻗﺎﺑﻠﻴﺖ ﺍﻧﻌﻄﺎﻑ ﺑﺎﻻﻱ ﺳﻴﺴﺘﻢ ‪ ،‬ﻫﺮ ﮔﻮﻧﻪ ﻭﺯﻥ ﺩﻫﻲ ﺍﺧﺘﻴﺎﺭﻱ ﺩﺭ ﺍﻳﻦ‬
‫ﻣﺪﻝ ﻣﺠﺎﺯ ﺍﺳﺖ‪.‬‬
‫ﺩﺭ ﻧﻬﺎﻳﺖ ﮐﺎﺭﺑﺮ ﺑﺎﻳﺪ ﻫﻨﮕﺎﻡ ﻭﺯﻥ ﺩﻫﻲ ﺑﻪ ﺍﻳﻦ ﻧﮑﺘﻪ ﺗﻮﺟﻪ ﮐﻨﺪ ﮐﻪ ﺗﻤﺎﻡ‬
‫ﻓﺮﺍﻳﻨﺪ ﮐﺎﺭﻱ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻳﮏ ﺟﺰﺀ ﮐﺎﻣﻞ ﺑﺒﻴﻨﺪ‪.‬‬
‫ﻣﺮﺍﺟﻊ‬
‫ﺷﻜﻞ )‪ :(۴‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺑﻴﺮﻭﻧﻲ‬
‫ﻳﮑﻲ ﺍﺯ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﻣﻄﺮﺡ ﺩﺭ ﺍﺭﺯﻳﺎﺑﻲ ﻋﻤﻠﮑﺮﺩ ﻳﮏ ﻗﻄﻌﻪ ﺍﺯ ﻧﻈﺮ ﻭﻳﮋﮔﻲ‬
‫ﻫﺎﻱ ﺑﻴﺮﻭﻧﻲ ‪ API‬ﺍﺳﺖ‪ API .‬ﻧﻘﺶ ﺗﻌﻴﻴﻦ ﮐﻨﻨﺪﻩ ﺍﻱ ﺩﺭ ﻧﻮﻉ ﺍﺭﺗﺒﺎﻁ‬
‫ﺍﺟﺰﺍﺀ ﻳﮏ ﺳﻴﺴﺘﻢ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﺩﺍﺭﺩ‪.‬‬
‫ﺩﺭ ﻧﻬﺎﻳﺖ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﻣﺸﺎﺑﻪ ﺣﺎﻟﺖ ﻗﺒﻞ ﺗﺎﺑﻊ ﺯﻳﺮ ﺭﺍ ﺑﺮﺍﻱ ﺑﺮﺭﺳﻲ ﻋﻤﻠﮑﺮﺩ‬
‫ﻗﻄﻌﻪ ‪ y‬ﺑﻴﺎﻥ ﮐﻨﻴﻢ‪.‬‬
‫)‪F(y) = C1F1(y,h1) + … + CnFn(y,hn‬‬
‫ﮐﻪ ﺩﺭ ﺁﻥ )‪ f(y,h‬ﮐﻴﻔﻴﺖ ﺟﺰﺀ ‪ y‬ﺑﺮ ﺣﺴﺐ ﻣﻌﻴﺎﺭ ‪ h‬ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺳﭙﺲ‬
‫ﺑﺎ ﻣﺮﺗﺐ ﮐﺮﺩﻥ ‪ y‬ﻫﺎ ﺍﻗﺪﺍﻡ ﺑﻪ ﺍﻧﺘﺨﺎﺏ ﺑﻬﺘﺮﻳﻦ ﻗﻄﻌﻪ ﮐﻨﻴﻢ‪.‬‬
‫‪[1] Jeanrenaud, A., and P. Rmanazzi, Software Product‬‬
‫‪Evaluation Metrics: Methodological Approach Software‬‬
‫‪Quality Management II. Building Quality into Software 2‬‬
‫‪Vol. 776, 1995, pp. 59-69‬‬
‫‪[2] Kontio, J. A Case Study in Applying a Systematic Method‬‬
‫‪for COTS Selection, Proc. 18th Int. Conf. on Software‬‬
‫‪Engineering, Berlin, Germany, IEEE Computer‬‬
‫‪Society,1996.‬‬
‫‪[3] Min, H., Selection of Software: The Analytic Hierarchy‬‬
‫‪Process, Int. J. of Physical Distribution and Logistics‬‬
‫‪Management, Vol. 22, No. 1, 1992, pp. 42-52.‬‬
‫‪[4] Morisio, M., and A. Tsoukias, IusWare: A Methodology‬‬
‫‪for the Evaluation and Selection of Software Products‬‬
‫‪IEE Proc. Software Engineering, Vol. 144, No. 3, 1997,‬‬
‫‪pp. 162-174.‬‬
‫‪[5] Balsamo, S., P. Inverardi, and C. Mangano, An Approach‬‬
‫‪to Performance Evaluationof Software Architectures,‬‬
‫‪Proc. Workshop on Software and Performance, Santa Fe,‬‬
‫‪CA,1998.‬‬
‫ﺍﺩﻏﺎﻡ ﻭ ﺗﺮﮐﻴﺐ ﻣﺆﻟﻔﻪ ﻫﺎ‬
‫ﺍﻟﻬﺎﻡ ﭘﺎﻳﮑﺎﺭﻱ‬
‫*‬
‫ﭼﻜﻴﺪﻩ‬
‫ﻳﮑﭙﺎﺭﭼﻪﺳﺎﺯﻱ ﻳﺎ ﺍﺩﻏﺎﻡ ﻣﺆﻟﻔﻪﻫﺎ ﻭ ﺗﺮﮐﻴﺐ ﮐﻠﻤﺎﺕ ﻣﺘﺮﺍﺩﻓﻲ ﻧﻴﺴﺘﻨﺪ‪ .‬ﺗﻤﺎﻣﻲ ﺍﺳﻤﺒﻠﻲﻫﺎﻱ‪ ١‬ﺗﺸﮑﻴﻞ ﺩﻫﻨﺪﻩﻱ ﺳﻴـﺴﺘﻢﻫـﺎﻱ ﻧـﺮﻡﺍﻓـﺰﺍﺭﻱ‪،‬‬
‫ﺧﻮﺩﺷﺎﻥ ﺑﻪﺻﻮﺭﺕ ﺑﺎﻟﻘﻮﻩ ﺯﻳﺮﺳﻴﺴﺘﻢ ﻫﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺎﻳﺪ ﻳﮏ ﺭﻭﺵ ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺠﻤﻮﻋﻪﻫﺎﻱ ﺗﺸﮑﻴﻞ ﺩﻫﻨـﺪﻩ ﻭ ﻣﻨﺎﺳـﺐ‬
‫ﺑﺮﺍﻱ ﺑﺮﺭﺳﻲ ﻗﺎﺑﻠﻴﺖﻫﺎﻱ ﺯﻣﺎﻥ ﺍﺟﺮﺍﻳﺸﺎﻥ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺗﺮﮐﻴﺐ ﻣﺆﻟﻔﻪﻫﺎ ﺍﻳﻦ ﻧﻮﻉ ﺍﺯ ﺍﺳﺘﺪﻻﻝ ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﮐﻨﺪ‪ .‬ﺍﻳﻦ ﻋﻤﻞ ﻳـﮏ‬
‫ﻣﺮﺣﻠﻪ ﺍﺯ ﺍﺩﻏﺎﻡ ﻓﺮﺍﺗﺮ ﻣﻲ ﺭﻭﺩ ﮐﻪ ﺩﺭ ﺁﻥ ﻧﺘﻴﺠﻪﻱ ﺗﺮﮐﻴﺐ ﻣﺆﻟﻔﻪﻫﺎ ﻳﮏ ﺍﺳﻤﺒﻠﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎ ﺍﺳﺖ ﮐﻪ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﻋﻨﻮﺍﻥ ﻗـﺴﻤﺘﻲ ﺍﺯ ﻳـﮏ‬
‫ﺗﺮﮐﻴﺐ ﺑﺰﺭﮒﺗﺮ ﻧﻴﺰ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ‪ .‬ﺍﺳﻤﺒﻠﻲﻫﺎ ﺑﺎﻳﺪ ﺑﻪ ﺭﻭﺷﻲ ﻃﺮﺍﺣﻲ ﺷﻮﻧﺪ ﮐﻪ ﺑﺘﻮﺍﻧﻨﺪ ﺩﺭ ﺍﻧﻮﺍﻉ ﺯﻣﻴﻨﻪﻫﺎ ﺯﻧﺪﻩ ﺑﻤﺎﻧﻨﺪ‪ .‬ﺯﻣـﺎﻧﻲ‬
‫ﮐﻪ ﻳﮏ ﺍﺳﻤﺒﻠﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖ‪،‬‬
‫ﺑﺎﻳﺪ ﺍﻣﮑﺎﻥ ﺍﺳﺘﺪﻻﻝ ﺩﺭﺑﺎﺭﻩﻱ ﭼﮕﻮﻧﮕﻲ ﺗﺄﺛﻴﺮ ﮔﺬﺍﺭﻱ ﺍﺳﻤﺒﻠﻲ ﺑﺮ ﺳﻴﺴﺘﻤﻲ ﮐﻪ ﺩﺭ ﺁﻥ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﮔﺮﻓﺘـﻪ ﺍﺳـﺖ ﻭ ﻫﻤﭽﻨـﻴﻦ‬
‫ﭼﮕﻮﻧﮕﻲ ﺗﺄﺛﻴﺮ ﮔﺮﻓﺘﻦ ﺍﺯ ﺁﻥ ﺳﻴﺴﺘﻢﻫﺎ‪ ،‬ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻣﺆﻟﻔﻪﻫﺎ ﻣﺒﺘﻨﻲ ﺑﺮ ﺗﻮﺍﻧﺎﻳﻲ ﺗﺨﺼﻴﺺ ﻣﺸﺨﺼﺎﺕ ﺑﻪ ﮐﻞ‪ ،‬ﺑﺮﺍﺳﺎﺱ ﻣﺸﺨـﺼﺎﺕ‬
‫ﻗﺴﻤﺖﻫﺎ ﻭ ﺍﺭﺗﺒﺎﻃﺎﺕ ﻣﻴﺎﻥ ﺁﻥﻫﺎ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺗﺮﮐﻴﺐ‪ ،‬ﻳﮏ ﻣﺒﻨﺎ ﻭ ﺍﺳﺎﺱ ﺑﺮﺍﻱ ﺍﺳﺘﺪﻻﻝ ﺩﺭﺑﺎﺭﻩ ﻱ ﺭﻓﺘﺎﺭ ﺑﺮﺁﻣﺪﻩ‪ ٢‬ﻓﺮﺍﻫﻢ ﻣﻲ ﺁﻭﺭﺩ‪ .‬ﺍﺑـﻦ ﻳـﮏ‬
‫ﮐﺎﺭ ﻣﻬﻨﺪﺳﻲ‪ ،‬ﻓﺮﺍﺗﺮ ﺍﺯ ﮐﺎﺭ ﻣﮑﺎﻧﻴﮑﻲ ﻧﻮﺷﺘﻦ ﻣﺆﻟﻔﻪﻫﺎ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﺍﺳﺖ‪.‬‬
‫ﻛﻠﻤﺎﺕ ﻛﻠﻴﺪﻱ‬
‫ﺳﻴﺴﺘﻢﻫﺎﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪﻫﺎ‪ ،‬ﺍﺩﻏﺎﻡ‪ ،‬ﺗﺮﮐﻴﺐ‪ ،‬ﺍﺳﻤﺒﻠﻲ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ ﺗﺄﻳﻴﺪ )‪ ،(PACC‬ﺗﮑﻨﻮﻟﻮﮊﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑـﻞ‬
‫ﭘﻴﺶ ﺑﻴﻨﻲ )‪(PECT‬‬
‫* ﺷﻤﺎﺭﻩﻱ ﺩﺍﻧﺸﺠﻮﻳﻲ ‪ ، ۸۴۷۰۰۶۷۲‬ﻧﺸﺎﻧﻲ ﭘﺴﺖ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ‪[email protected]‬‬
‫‪ ‐۱‬ﻣﻘﺪﻣﻪ‬
‫ﺁﻳﻨﺪﻩﻱ ﺗﻮﻟﻴﺪ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﻪ ﺗﻮﺍﻧﺎﻳﻲ ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﺩﺭ ﺗﺮﮐﻴﺐ ﻗـﺴﻤﺖ‪-‬‬
‫ﻫﺎﯼ ﻣﻮﺟﻮﺩ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﺑﺮﻧﺎﻣـﻪ ﮐـﺎﺭﺑﺮﺩﻱ ﺟﺪﻳـﺪ ﺑـﺴﺘﮕﻲ ﺩﺍﺭﺩ‪.‬‬
‫ﺗﮑﻨﻴﮏﻫﺎﻱ ‪ Build-from-scratch‬ﻓﻌﻠﻲ ﺑﺎﻳﺪ ﺟﺎﻱ ﺧﻮﺩ ﺭﺍ ﺑﻪ ﺗﮑﻨﻴﮏ‪-‬‬
‫ﻫﺎﻳﻲ ﺑﺪﻫﻨﺪ ﮐﻪ ﺳﺎﺧﺘﻦ ﺍﺯ ﺑﻼﮎﻫﺎﻱ ﺳﺎﺯﻧﺪﻩﻱ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩﻱ ﻣﺠﺪﺩ ﺭﺍ‬
‫ﻣﻮﺭﺩ ﺗﺄﮐﻴﺪ ﻗﺮﺍﺭ ﻣﻲ ﺩﻫﻨﺪ‪.‬‬
‫ﺩﺭ ﺩﻫﻪﻱ ﮔﺬﺷﺘﻪ ﺣﻤﺎﻳﺖ ﺭﻭﺑﻪ ﺍﻓﺰﺍﻳﺸﻲ ﺑﺮﺍﻱ ﺭﻭﻳﮑﺮﺩﻫﺎﻱ ﺗﺮﮐﻴﺒـﻲ‬
‫ﺩﺭ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺍﺳﺖ‪ .‬ﺗﺤﻘﻴﻘﺎﺕ ﺯﻳﺎﺩﻱ ﺩﺭ ﺯﻣﻴﻨـﻪﻱ ﺍﺳـﺘﻔﺎﺩﻩﻱ‬
‫ﻣﺠﺪﺩ ﺻﻮﺭﺕ ﮔﺮﻓﺘﻪ ﺍﺳﺖ‪ .‬ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎﻱ ﺻﻨﻌﺘﻲ ﻣﺎﻧﻨﺪ ‪ CORBA‬ﺑﺮﺍﻱ‬
‫ﺗﻌﺎﻣﻞ ﻣﻴﺎﻥ ﻣﺆﻟﻔﻪﻫﺎ ﺗﻮﻟﻴﺪ ﺷﺪ ﻭ ﺑـﺴﻴﺎﺭﻱ ﺍﺯ ﻣﻌﻤـﺎﺭﻱﻫـﺎﻱ ﺑـﺎ ﺩﺍﻣﻨـﻪﻱ‬
‫ﺧﺎﺹ ﻭ ﺍﺑﺰﺍﺭﻫﺎﻳﻲ ﮐﻪ ﺍﺳﺘﻔﺎﺩﻩﻱ ﻣﺠﺪﺩ ﺭﺍ ﺣﻤﺎﻳﺖ ﻣﻲﮐﻨﻨﺪ‪ ،‬ﺍﻳﺠﺎﺩ ﺷـﺪﻩ‪-‬‬
‫ﺍﻧﺪ‪.‬‬
‫ﻫﻨﻮﺯ ﺳﺎﺧﺘﻦ ﺳﻴـﺴﺘﻤﺎﺗﻴﮏ ﻧـﺮﻡﺍﻓﺰﺍﺭﻫـﺎﻱ ﺑـﺰﺭﮒ ﺍﺯ ﻗـﺴﻤﺖﻫـﺎﻱ‬
‫ﻣﻮﺟﻮﺩ‪ ،‬ﻳﮏ ﻫﺪﻑ ﺑﻌﻴﺪ ﺑﻪﻧﻈﺮ ﻣﻲﺁﻳﺪ‪ .‬ﻳﮑﻲ ﺍﺯ ﻣﻬﻢﺗﺮﻳﻦ ﺩﻻﻳـﻞ‪ ،‬ﮐﻤﺒـﻮﺩ‬
‫ﻗﺴﻤﺖﻫﺎﻳﻲ ﺍﺳﺖ ﮐﻪ ﺑﻪ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺑﺎﺷﻨﺪ‪ ،‬ﻭ ﻳﺎ ﻧـﺎﺗﻮﺍﻧﻲ ﺩﺭ‬
‫ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﻗﺴﻤﺖﻫﺎﻱ ﻣﻨﺎﺳﺐ ﺯﻣﺎﻧﻲ ﮐﻪ ﺣﺘﺎ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬
‫ﺣﺘﺎ ﻫﻨﮕﺎﻣﻲ ﮐﻪ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻣﻨﺎﺳﺐ ﺩﺭ ﺩﺳـﺘﺮﺱ ﻫـﺴﺘﻨﺪ‪ ،‬ﻣـﺸﮑﻞ‬
‫ﺍﺻﻠﻲ ﺍﻏﻠﺐ ﺑﺎﻗﻲ ﻣﻲﻣﺎﻧﺪ‪ ،‬ﭼﺮﺍﮐﻪ ﻗﺴﻤﺖﻫﺎﻱ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﺑﻪﺧﻮﺑﻲ ﺑﺎ ﻫﻢ‬
‫ﺟﻮﺭ ﻭ ﻣﻨﺎﺳﺐ ﺩﺭﻧﻤﻲﺁﻳﻨﺪ‪ .‬ﺩﺭ ﺑﺴﻴﺎﺭﻱ ﻣﻮﺍﺭﺩ ﺍﻳﻦ ﻧﺎﺟﻮﺭﻱﻫﺎ ﻣﻤﮑﻦ ﺍﺳﺖ‬
‫ﺑﻪ ﺧﺎﻃﺮ ﻣﺸﮑﻼﺕ ﺳﻄﺢ ﭘﺎﻳﻴﻦ ﻗﺎﺑﻠﻴﺖ ﺗﻌﺎﻣﻼﺕ ﺑﻴﻨـﺎﺑﻴﻨﻲ ﺑﺎﺷـﺪ‪ ،‬ﻣﺎﻧﻨـﺪ‬
‫ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﺩﺭ ﺯﺑﺎﻥﻫﺎﻱ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ‪ ،‬ﺯﻳﺮﺑﻨﺎﻱ ﻋﺎﻣـﻞ ﻳـﺎ ﺷـﻤﺎﻱ ﭘﺎﻳﮕـﺎﻩ‬
‫ﺩﺍﺩﻩ‪ .‬ﺍﻳﻦﻫﺎ ﻣﺸﮑﻼﺕ ﻣﻬﻤﻲ ﻫﺴﺘﻨﺪ ﮐﻪ ﻧﻤﻲﺗﻮﺍﻥ ﺑﻪﺳﺎﺩﮔﻲ ﺑﺮﺁﻥﻫﺎ ﻏﻠﺒﻪ‬
‫ﮐﺮﺩ‪ ،‬ﻭﻟﻲ ﺗﺤﻘﻴﻘﺎﺕ ﺍﺧﻴـﺮ ﭘﻴـﺸﺮﻓﺖ ﺧـﻮﺑﻲ ﺭﺍ ﺩﺭ ﺣـﻞ ﺑـﺴﻴﺎﺭﻱ ﺍﺯ ﺍﻳـﻦ‬
‫ﻣﺸﮑﻼﺕ ﺩﺍﺷﺘﻪ ﺍﺳﺖ‪.‬‬
‫ﺳﻴﺴﺘﻢﻫﺎﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎﻳﻲ ﮐـﻪ ﻣﻤﮑـﻦ ﺍﺳـﺖ‬
‫ﺧﻮﺩﺷﺎﻥ ﺳﻴﺴﺘﻢ ﺑﺎﺷﻨﺪ‪ ،‬ﻭ ﺑﻪ ﺻﻮﺭﺕ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺒﻲ ﺗﺮﮐﻴﺐ ﻣـﻲ ﺷـﻮﻧﺪ‪.‬‬
‫ﺍﻳﻦ ﻣﺆﻟﻔﻪﻫﺎﻱ ﺯﻳﺮﺳﻴﺴﺘﻤﻲ ﻣﻤﮑﻦ ﺍﺳﺖ ﺩﺭ ﻳـﮏ ﺳـﺎﺯﻣﺎﻥ ﻣﺠـﺰﺍ ﺍﻳﺠـﺎﺩ‬
‫ﺷﺪﻩ ﺑﺎﺷﻨﺪ ﻭ ﻳﺎ ﺣﺘـﻲ ﻣﻤﮑـﻦ ﺍﺳـﺖ ﺑـﺎ ﻳـﮏ ﻧﻴـﺖ ﺧـﺎﺹ ﺩﺭ ﺫﻫﻨﻴﺘـﻲ‬
‫ﻧﺎﻣﺮﺑﻮﻁ ﺑﻪ ﺯﻣﻴﻨﻪﻱ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩﻱ ﮐﻨﻮﻧﻲﺷﺎﻥ ﺍﻳﺠـﺎﺩ ﺷـﺪﻩ ﺑﺎﺷـﻨﺪ‪ .‬ﺩﺭ‬
‫ﺣﻘﻴﻘﺖ ‪ CBSE‬ﺩﺭﮔﻴﺮ ﺑﺮﻗﺮﺍﺭﻱ ﺍﺗﺼﺎﻝ ﻣﻴﺎﻥ ﻣﺠﻤﻮﻋﻪﻫﺎﻳﻲ ﺍﺯ ﻣﺆﻟﻔـﻪﻫـﺎ‬
‫ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﻳﮏ ﺳﻴﺴﺘﻢ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﺑﺎ ﻗﺎﺑﻠﻴﺖ ﺍﻧﺠﺎﻡ ﺑﺮﺧﻲ ﻋﻤﻠﻴﺎﺕ ﻣﻔﻴـﺪ‬
‫ﻣﻲﺑﺎﺷﺪ‪ .‬ﻳﮑﭙﺎﺭﭼﮕﻲ ﻭ ﺍﺩﻏـﺎﻡ ﻣﺆﻟﻔـﻪﻫـﺎ ﻳـﮏ ﮐـﺎﺭ ﻣﮑـﺎﻧﻴﮑﻲ )ﻣﺎﺷـﻴﻨﻲ(‬
‫ﻧﻮﺷﺘﻦ ﻣﺆﻟﻔﻪﻫﺎ ﺑﺎ ﻳﮑﺪﻳﮕﺮ‪ ،‬ﻭ ﺗﻄﺒﻴـﻖ ﻧﻴﺎﺯﻫـﺎ ﻭ ﺧـﺪﻣﺎﺕ ﻳـﮏ ﻣﺆﻟﻔـﻪ ﺑـﺎ‬
‫ﺧﺪﻣﺎﺕ ﻭ ﻧﻴﺎﺯﻫﺎﻱ ﺩﻳﮕﺮﺍﻥ ﺍﺳـﺖ‪ .‬ﺍﺩﻏـﺎﻡ ﺑـﻪ ﺗﻨﻬـﺎﻳﻲ ﺑـﺮﺍﻱ ﺍﻃﻤﻴﻨـﺎﻥ ﺍﺯ‬
‫ﮐﻴﻔﻴﺖ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺟﺰﻳﻴﺎﺕ ﺗﻌﺎﻣـﻞ ﺯﻣـﺎﻥ ﺍﺟـﺮﺍ ﺩﺭ ﺳﻴـﺴﺘﻢ ﻧـﺮﻡﺍﻓـﺰﺍﺭﻱ‬
‫ﻣﺮﮐﺐ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎﻱ ﺗﺸﮑﻴﻞ ﺩﻫﻨﺪﻩ‪ ،‬ﮐﺎﻓﻲ ﻧﻤﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺗﺮﮐﻴﺐ ﻣﺎﻧﻨﺪ ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﺩﺭ ﺍﺗﺼﺎﻝ ﻳﮏ ﺗﻘﻮﻳﺖ ﮐﻨﻨﺪﻩﻱ ﺑﺴﻴﺎﺭ ﻗﻮﻱ‬
‫ﺑﻪ ﻳﮏ ﺑﻠﻨﺪﮔﻮﻱ ﻭﻟﺘﺎﮊ ﭘﺎﻳﻴﻦ‪ .‬ﺑﻠﻨﺪﮔﻮﻫﺎ ﺑﺪﻭﻥ ﻫﻴﭻ ﻣﺸﮑﻠﻲ ﺑﻪ ﺑﺮﻕ ﻭﺻـﻞ‬
‫ﻣﻲﺷﻮﻧﺪ ﻭ ﺩﺭ ﺍﻧﺪﺍﺯﻩ ﻱ ﺻﺪﺍﻱ ﮐﻢ ﺍﺣﺘﻤﺎ ﹰﻻ ﺑﻪ ﺻﻮﺭﺕ ﻗﺎﺑﻞ ﻗﺒـﻮﻟﻲ ﻋﻤـﻞ‬
‫ﻣﻲﮐﻨﻨﺪ‪ ،‬ﻭﻟﻲ ﺍﮔﺮ ﺍﻧﺪﺍﺯﻩ ﻱ ﺻﺪﺍ ﺑﺎﻻ ﺑﺮﻭﺩ‪ ،‬ﺑﻠﻨﺪﮔﻮ ﺑﻪ ﺍﺣﺘﻤﺎﻝ ﻗﻮﻱ ﺧﺮﺍﺏ‬
‫ﺧﻮﺍﻫﺪ ﺷﺪ‪.‬‬
‫ﻳﮑﭙﺎﺭﭼﻪﺳﺎﺯﻱ ﻭ ﺍﺩﻏﺎﻡ ﻣﺆﻟﻔﻪﻫـﺎ ﺑﺮﺍﺳـﺎﺱ ﺍﻃﻼﻋـﺎﺕ ﻧﺤـﻮﻱ ﻣﺎﻧﻨـﺪ‬
‫ﺍﻣﻀﺎﻱ‪ ٣‬ﻣﺘﺪ ﻭ ﺩﺭ ﺻﻮﺭﺕ ﺩﺳﺘﺮﺱﭘﺬﻳﺮﻱ‪ ،‬ﺍﻃﻼﻋﺎﺕ ﺟﻨﺒﻲ‪ ٤‬ﺫﺧﻴﺮﻩ ﺷـﺪﻩ‬
‫ﺩﺭ ﻭﺍﺳﻂ ﻣﺆﻟﻔﻪﻫﺎ ﻣﻲﺑﺎﺷﺪ‪ .‬ﺍﻃﻼﻋﺎﺕ ﺟﻨﺒﻲ ﻭ ﺍﺿـﺎﻓﻲ ﺑـﻪ ﺍﺣﺘﻤـﺎﻝ ﻗـﻮﻱ‬
‫ﺍﻃﻼﻋﺎﺗﻲ ﻣﺎﻧﻨـﺪ ﺷـﺮﺡ ﻋﻤﻠﻴـﺎﺗﻲ ﮐـﻪ ﺍﻧﺠـﺎﻡ ﻣـﻲ ﺩﻫﻨـﺪ ﻭ ﺍﻧـﻮﺍﻉ ﺍﺩﺍﺭﻩﻱ‬
‫ﺍﺳﺘﺜﻨﺎﺋﺎﺕ‪ ٥‬ﺭﺍ ﺷﺎﻣﻞ ﻣﻲ ﺷﻮﻧﺪ‪ .‬ﺍﻳﻦ ﺍﻃﻼﻋﺎﺕ ﻣﻔﻴـﺪ ﻫـﺴﺘﻨﺪ‪ ،‬ﻭﻟـﻲ ﺑـﺮﺍﻱ‬
‫ﺍﺳﺘﺪﻻﻝ ﺩﺭﺑﺎﺭﻩﻱ ﻣﺸﺨﺼﺎﺕ ﺍﺳﻤﺒﻠﻲ ﺣﺎﺻﻞ ﺷﺪﻩ ﮐـﺎﻓﻲ ﻧﻤـﻲ ﺑﺎﺷـﻨﺪ ﻭ‬
‫ﺗﺮﮐﻴﺐ ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻧﻤﻲ ﻧﻤﺎﻳﻨﺪ‪ .‬ﺩﺭ ﻭﺍﻗﻊ‪ ،‬ﻣﺎﻧﻨـﺪ ﻣﺜـﺎﻝ ﺍﺳـﺘﺮﻳﻮ ﺩﺭ ﺑـﺎﻻ‪،‬‬
‫ﻣﺆﻟﻔﻪﻫﺎﻳﻲ ﮐﻪ ﻭﺍﺳـﻂﻫﺎﻳـﺸﺎﻥ ﺑـﻪ ﺻـﻮﺭﺕ ﻧﺤـﻮﻱ ﺳـﺎﺯﮔﺎﺭ ﻫـﺴﺘﻨﺪ‪ ،‬ﺩﺭ‬
‫ﺣﻘﻴﻘﺖ‪ ،‬ﺭﻓﺘﺎﺭ ﻧﺎﺧﻮﺷﺎﻳﻨﺪﻱ ﺩﺭ ﺯﻣﺎﻥ ﺍﺳﺘﻔﺎﺩﻩ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﺑﻪ ﻧﻤﺎﻳﺶ ﻣـﻲ‪-‬‬
‫ﮔﺬﺍﺭﻧﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ‪ ،‬ﺗﺮﮐﻴﺐ ﻭ ﺍﺩﻏﺎﻡ ﻋﻤﺪﺗ ﹰﺎ ﺗﻮﺳﻂ ﺍﻳﻦ ﺣﻘﻴﻘﺖ ﮐـﻪ ﺗﺮﮐﻴـﺐ‬
‫ﻫﻢﭼﻨﻴﻦ ﺑﺮ ﺭﻭﻱ ﺭﻓﺘﺎﺭ ﺩﺭ ﺳﻄﺢ ﺍﺳﻤﺒﻠﻲ ﺑﺮﺁﻣﺪﻩ ﺗﻤﺮﮐـﺰ ﺩﺍﺭﺩ‪ ،‬ﺑـﺎ ﺗﺄﻳﻴـﺪ‬
‫ﺍﻳﻨﮑﻪ ﺍﺳﻤﺒﻠﻲ ﺑﻪ ﺻﻮﺭﺕ ﻣﻄﻠﻮﺏ ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ ﻭ ﻣﻲ ﺗﻮﺍﻧـﺪ ﺑـﻪ ﻋﻨـﻮﺍﻥ‬
‫ﻳﮏ ﻗﺴﻤﺖ ﺍﺳﺎﺳﻲ ﺩﺭ ﻳﮏ ﺳﻴﺴﺘﻢ ﺑﺰﺭﮒﺗﺮ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ‪ ،‬ﺍﺯ‬
‫ﻳﮑﺪﻳﮕﺮ ﻣﺘﻤﺎﻳﺰ ﻣﻲﺷﻮﻧﺪ‪ .‬ﻣﺆﻟﻔﻪﻫﺎﻱ ﻣﺘﺸﮑﻠﻪ ﻧـﻪ ﺗﻨﻬـﺎ ﺑﺎﻳـﺪ ﺑـﻪ ﺑﮑـﺪﻳﮕﺮ‬
‫ﺑﺨﻮﺭﻧﺪ‪ ،‬ﺑﻠﮑﻪ ﺑﺎﻳﺪ ﺑﻪ ﺧﻮﺑﻲ ﺑﺎ ﻫﻢ ﻋﻤﻞ ﮐﻨﻨﺪ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﻧﻮﺷﺘﻪ ﺑﻪ ﺟﻨﺒﻪﻫﺎﻱ ﻣﺘﻔﺎﻭﺕ ﺗﻮﻟﻴﺪ ﺳﻴﺴﺘﻢﻫﺎﻱ ﻧﺮﻡ ﺍﻓـﺰﺍﺭﻱ‬
‫ﺑﺮﺍﺳﺎﺱ ﻣﺆﻟﻔﻪﻫﺎ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ‪ .‬ﻣﺆﻟﻔﻪﻫـﺎﻱ ﻧـﺎﺟﻮﺭ ﺭﺍ ﺷـﺮﺡ ﻣـﻲ ﺩﻫـﻴﻢ ﻭ‬
‫ﻣﮑﺎﻧﻴﺴﻢﻫﺎﻱ ﺑﻪ ﮐﺎﺭ ﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﻓﻨﺎﻭﺭﻱﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ ﺑﺮﺍﻱ ﮐﻤﮏ‬
‫ﺑﻪ ﺳﺎﺯﻧﺪﻩ ﻭ ﻃﺮﺍﺡ ﺑﺮﺍﻱ ﺍﺗﺼﺎﻝ ﻣﺆﻟﻔﻪﻫﺎ ﺑﻪ ﻳﮑﺪﻳﮕﺮ ﺭﺍ‪ .‬ﺳـﭙﺲ ﻳـﮏ ﺭﻭﺵ‬
‫ﻧﻤﻮﻧﻪﻱ ﺟﺪﻳﺪ ﺑﺮﺍﻱ ﺗﺮﮐﻴﺐ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﻣﻌﺮﻓﻲ ﻣﻲ ﮐﻨـﻴﻢ ﮐـﻪ‬
‫ﺁﻥ ﺭﺍ ﺍﺳﻤﺒﻠﻲ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ ﺗﺄﻳﻴﺪ )‪ (٦PACC‬ﻣﻲ‪-‬‬
‫ﻧﺎﻣﻴﻢ ﻭ ﺗﮑﻨﻮﻟﻮﮊﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ )‪ (٧PECT‬ﺭﺍ ﺷـﺮﺡ ﻣـﻲ‪-‬‬
‫ﺩﻫﻴﻢ‪ .‬ﮐﻪ ﺭﻭﻳﮑﺮﺩ ﻣﺎ ﺑﺮﺍﻱ ﭘﻞ ﺯﺩﻥ ﻣﻴﺎﻥ ﺷﮑﺎﻑ ﺍﺩﻏـﺎﻡ ﻭ ﺗﺮﮐﻴـﺐ ﺍﺳـﺖ‪.‬‬
‫ﺗﮑﻨﻮﻟﻮﮊﻱ ‪ PECT‬ﺳﺎﺧﺘﻦ ﺍﺳﻤﺒﻠﻲﻫﺎﻳﻲ ﮐﻪ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻧﺮﻡﺍﻓـﺰﺍﺭﻱ ﺭﺍ ﺑـﻪ‬
‫ﺻﻮﺭﺕ ﺍﺳﻤﺒﻠﻲﺍﻱ ﺗﺮﮐﻴﺐ ﻣﻲ ﮐﻨﻨﺪ ﮐـﻪ ﺑـﻪ ﺻـﻮﺭﺕ ﻗﺎﺑـﻞ ﺣـﺪﺱ ﻧﻴـﺎﺯ‬
‫ﮐﻴﻔﻴﺘﻲ ﺭﺍ ﺑﺮﺁﻭﺭﺩﻩ ﻣﻲﺳﺎﺯﻧﺪ‪ ،‬ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲﮐﻨﺪ‪.‬‬
‫‪ ‐۲‬ﺍﺩﻏﺎﻡ ﻣﺆﻟﻔﻪﻫﺎ‬
‫‪٨‬‬
‫ﺍﺩﻏﺎﻡ ﻣﺆﻟﻔﻪﻫﺎ ﻣﻲﺗﻮﺍﻧﺪ ﺑـﻪ ﻋﻨـﻮﺍﻥ ﻳـﮏ ﻓﺮﺁﻳﻨـﺪ ﻣﮑـﺎﻧﻴﮑﻲ ﺍﺗـﺼﺎﻝ‬
‫ﻣﺆﻟﻔﻪﻫﺎ ﺑﻪ ﻳﮑﺪﻳﮕﺮ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮﺩ‪ .‬ﺍﻳﻦ ﺗﻘﺮﻳﺒ ﹰﺎ ﺯﻣﺎﻧﻲ ﺍﺗﻔﺎﻕ ﻣﻲﺍﻓﺘـﺪ‬
‫ﻼ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﻣﻄﺎﺑﻖﺍﻧﺪ ﻭ ﺑﻨﺎﺑﺮﺍﻳﻦ ﻓﺮﺁﻳﻨﺪ ﺑﻪ ﺻﻮﺭﺕ ﻳـﺎﻓﺘﻦ‬
‫ﮐﻪ ﺩﻭ ﺟﺰ ﮐﺎﻣ ﹰ‬
‫ﺩﻭ ﻣﺆﻟﻔﻪ ﮐﻪ ﺑﻪ ﺳﺎﺩﮔﻲ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﻳـﮏ ﮐـﺎﺭ ﺭﺍ ﺑـﻪ ﺍﻧﺠـﺎﻡ ﻣـﻲﺭﺳـﺎﻧﻨﺪ ﻭ‬
‫ﺳﭙﺲ ﺍﺗﺼﺎﻝ ‪ API‬ﺁﻥﻫﺎ‪ ،‬ﺷﮑﻞ ﻣﻲﮔﻴﺮﺩ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻣﻤﮑـﻦ ﺍﺳـﺖ ﺗﻮﻟﻴـﺪ‬
‫ﻭﻓﻖ ﺩﻫﻨﺪﻩﻫﺎﻳﻲ‪ ٩‬ﺑﺮﺍﻱ ﺗﺮﺟﻤﻪﻱ ﺍﻧﻮﺍﻉ ﺩﺍﺩﻩﻫﺎ ﻳﺎ ﻣﺪﻳﺮﻳﺖ ﻣﻮﺍﺭﺩ ﮐﻨﺘﺮﻟـﻲ‬
‫ﻻﺯﻡ ﺑﺎﺷﺪ‪ .‬ﮔﺎﺭﻻﻥ‪ ،‬ﺁﻟﻦ ﻭ ﺍﮐﺮﺑﻠﻮﻡ ﺍﻧـﻮﺍﻉ ﻣـﺸﮑﻼﺗﻲ ﺭﺍ ﮐـﻪ ﻫﻨﮕـﺎﻡ ﺗﻮﻟﻴـﺪ‬
‫ﺳﻴﺴﺘﻢ ‪ ١٠AESOP‬ﺑﺎ ﺁﻧﻬﺎ ﺭﻭﺑﻪ ﺭﻭ ﺷﺪﻧﺪ ﮐﻪ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺆﻟﻔـﻪﻫـﺎﻱ ﺑـﻪ‬
‫ﺩﺳﺖ ﺁﻣﺪﻩ ﺍﺯ ﻣﻨﺎﺑﻊ ﺑﻴﺮﻭﻧﻲ ﺭﺍ ﻻﺯﻡ ﻣﻲ ﮐﻨﺪ‪ ،‬ﮔـﺰﺍﺭﺵ ﺩﺍﺩﻩ ﺍﻧـﺪ‪ .‬ﺩﻭ ﺗـﺎ ﺍﺯ‬
‫ﻣﺸﮑﻼﺕ ﻣﺮﺑﻮﻁ ﺑﻪ ﻋﺪﻡ ﺗﻄﺎﺑﻖ ﻣﺆﻟﻔﻪﻫﺎ ﺑﻮﺩﻧـﺪ ﮐـﻪ ﺍﺯ ﺍﺗـﺼﺎﻝ ﺁﻥﻫـﺎ ﺑـﻪ‬
‫ﻳﮑﺪﻳﮕﺮ ﺟﻠﻮﮔﻴﺮﻱ ﻣﻲ ﮐﺮﺩﻧﺪ‪ .‬ﻳـﮏ ﻋـﺪﻡ ﺗﻄـﺎﺑﻖ ﺑـﻪ ﺧـﺎﻃﺮ ﻧﺎﺳـﺎﺯﮔﺎﺭﻱ‬
‫ﻣﮑﺎﻧﻴﺴﻢﻫﺎﻱ ﺍﺭﺗﺒﺎﻃﻲ ﻣﺒﺘﻨـﻲ ﺑـﺮ ﺭﻭﻳـﺪﺍﺩ‪ ١١‬ﺍﺳـﺘﻔﺎﺩﻩ ﺷـﺪﻩ ﺩﺭ ﺩﻭ ﺍﺑـﺰﺍﺭ‬
‫ﺗﺸﮑﻴﻞﺩﻫﻨﺪﻩ ﺑﻮﺩ‪ .‬ﺩﻭﻣﻲ ﺑﻪ ﻋﻠﺖ ﺩﺍﺷﺘﻦ ﻣﻔﺮﻭﺿﺎﺕ ﻣﺘﻔﺎﻭﺕ ﺍﻳﻦ ﺩﻭ ﺍﺑﺰﺍﺭ‬
‫ﺩﺭﺑﺎﺭﻩﻱ ﻗﺎﻟﺒﻲ ﺍﺳﺖ ﮐﻪ ﺩﺭ ﺁﻥ ﺩﺍﺩﻩﻫﺎ ﻣﺒﺎﺩﻟﻪ ﻣﻲ ﺷﻮﻧﺪ‪ .‬ﻋﺪﻡ ﺗﻄـﺎﺑﻖ ﺍﻭﻝ‬
‫ﺗﻮﺳﻂ ﻣﻬﻨﺪﺳﻲ ﻣﻌﮑﻮﺱ‪ ١٢‬ﻭ ﺗﻐﻴﻴﺮ‪ ١٣‬ﻳﮑﻲ ﺍﺯ ﺍﺑﺰﺍﺭ ﺣﻞ ﺷـﺪ‪ .‬ﺩﻭﻣـﻲ ﻫـﻢ‬
‫ﺗﻮﺳﻂ ﺗﻮﻟﻴﺪ ﻳﮏ ﻣﺘﺮﺟﻢ ﻭ ﺑﺴﺘﻪ ﺑﻨﺪﻱ ﻣﺆﻟﻔﻪﻫﺎ‪ .١٤‬ﺍﻳﺠﺎﺩ ﭼﻨﻴﻦ ﺗﻄﺒﻴـﻖ‪-‬‬
‫ﻫﺎﻳﻲ ﻧﻪ ﺗﻨﻬﺎ ﺯﻣﺎﻥ ﻭ ﺯﺣﻤﺖ ﺯﻳﺎﺩﻱ ﻣﻲ ﺑﺮﺩ‪ ،‬ﺑﻠﮑﻪ ﻧﻴﺎﺯ ﺑﻪ ﻣﻘـﺪﺍﺭ ﺯﻳـﺎﺩﻱ‬
‫ﺩﺍﻧﺶ ﺩﺭﺑﺎﺭﻩ ﻱ ﺩﺭﻭﻧﻴﺎﺕ ﺍﺳـﺘﻔﺎﺩﻩ ﺷـﺪﻩ ﺩﺭ ﺍﺑـﺰﺍﺭ ﻧﻴـﺰ ﺩﺍﺭﺩ‪ .‬ﻭ ﺩﺭ ﺍﻧﺘﻬـﺎ‪،‬‬
‫ﺳﻴﺴﺘﻢ ﺣﺎﺻﻞ ﺑﺴﻴﺎﺭ ﭘﻴﭽﻴﺪﻩ ﺧﻮﺍﻫـﺪ ﺑـﻮﺩ‪ ،‬ﻭ ﻧﮕﻬـﺪﺍﺭﻱ ﺁﻥ ﻧﻴـﺰ ﺳـﺨﺖ‬
‫ﺍﺳﺖ‪.‬‬
‫ﺗﻮﻟﻴﺪ ﮐﻨﻨﺪﮔﺎﻥ ﺳﻴﺴﺘﻢﻫﺎﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪﻫﺎ‪ ،‬ﺩﺭ ﻃـﻮﻝ ﺳـﺎﻝﻫـﺎ‬
‫ﺍﺗﺼﺎﻝ‪ ،‬ﻧﻤﻮﻧﻪﺳﺎﺯﻱ‪ ،١٥‬ﺗﻨﻈﻴﻢ‪ ١٦‬ﻭ ﻣﻴﺰﺍﻥ ﺳﺎﺯﻱ ﻣﺆﻟﻔﻪ ﻫﺎ ﺭﺍ ﺩﺭ ﺍﺳﻤﺒﻠﻲﻫـﺎ‬
‫ﺍﻧﺠــﺎﻡ ﻣـﻲﺩﺍﺩﻩﺍﻧــﺪ‪ .‬ﻣﺎﻧﻨــﺪ ﺁﻥﭼــﻪ ﺩﺭ ﺻــﻨﺎﻳﻊ ﻧﻴــﺰ ﺭﺥ ﺩﺍﺩ ﻭ ﺟﻮﺭﺳــﺎﺯﻱ‬
‫ﻗﺴﻤﺖﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﻣﻬﻢ ﻭ ﻣﺸﮑﻞ ﻣﻲﻧﻤﻮﺩ‪ ،‬ﺍﺳﺘﺎﻧﺪﺍﺭﺩﺳﺎﺯﻱ ﺑﻪ‬
‫ﻋﻨﻮﺍﻥ ﻳﮏ ﻣﺤﺪﻭﺩﻳﺖ ﻻﺯﻡ ﺑﺮﺍﻱ ﺳﺎﺩﻩ ﺳﺎﺯﻱ ﻓﺮﺁﻳﻨـﺪ ﺳـﺎﺧﺘﻤﺎﻥ ﻣﻄـﺮﺡ‬
‫ﺷﺪ‪.‬‬
‫‪١٧‬‬
‫ﻋﺪﻡ ﺗﻄﺎﺑﻖ ﺩﺭ ﺍﺩﻏﺎﻡ ﺑﻪ ﺍﻧﺪﺍﺯﻩﻱ ﺯﻳﺎﺩﻱ ﺗﻮﺳﻂ ﻣﻌﺮﻓﻲ ﻣـﺪﻝﻫـﺎﻱ‬
‫ﻣﺆﻟﻔﻪﻫﺎ ﻣﺎﻧﻨﺪ ﻣﺪﻝ ﻫﺎﻱ ‪ CORBA ،EJB‬ﻭ ‪ COM‬ﮐﻪ ﺑﺮﺍﻱ ﻣﺆﻟﻔـﻪﻫـﺎ‬
‫ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﻓﺮﺍﻫﻢ ﻣﻲ ﺁﻭﺭﻧﺪ ﻭ ﻳﮏ ﻗﺎﻟﺐ ﮐﺎﺭﻱ ﮐﻪ ﻣﺆﻟﻔﻪﻫﺎ ﻣﻲ ﺗﻮﺍﻧﻨـﺪ ﺑـﻪ‬
‫ﺁﻥ ﺍﺗﺼﺎﻝ ﺑﻴﺎﺑﻨﺪ‪ ،‬ﺍﺻﻼﺡ ﺷﺪﻩ ﺍﻧﺪ‪ .‬ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﻣﺆﻟﻔﻪﻫـﺎ‪ ،‬ﻣﻌﻨـﺎﻳﻲ ﮐـﻪ ﻳـﮏ‬
‫ﻣﺆﻟﻔـﻪ ﺩﺭ ﻳـﮏ ﻣــﺪﻝ ﺧــﺎﺹ ﺩﺍﺭﺩ ﺭﺍ ﺗﻌﺮﻳـﻒ ﻣـﻲﮐﻨــﺪ‪ .‬ﺑــﻪ ﻃــﻮﺭ ﮐﻠـﻲ‪،‬‬
‫ﺍﺳﺘﺎﻧﺪﺍﺭﺩ‪ ،‬ﻧﺤﻮ ﺑﺮﺍﻱ ﻭﺍﺳﻂﻫﺎ ﺭﺍ ﺗﻮﺻﻴﻒ ﻣﻲﮐﻨﺪ ﻭ ﻣﻤﮑﻦ ﺍﺳﺖ ﻣﺘﺪﻫـﺎﻳﻲ‬
‫ﺭﺍ ﮐﻪ ﻣﺆﻟﻔﻪﻫﺎ ﺑﺎﻳﺪ ﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﮐﻨﻨﺪ ﺭﺍ ﺗﻌﻴﻴﻦ ﮐﻨﺪ‪ .‬ﻳﮏ ﻗﺎﻟﺐ ﮐﺎﺭﻱ ﻫـﻢ‬
‫ﻳﮏ ﻣﺠﻤﻮﻋﻪ ﺍﺯ ﻗﺮﺍﺭﺩﺍﺩﻫﺎ ﻭ ﺧـﺪﻣﺎﺗﻲ ﮐـﻪ ﺍﺭﺗﺒﺎﻃـﺎﺕ ﻣﻴـﺎﻥ ﻣﺆﻟﻔـﻪﻫـﺎ ﺭﺍ‬
‫ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲﮐﻨﺪ‪ ،‬ﺗﻌﺮﻳﻒ ﻣﻲﻧﻤﺎﻳﺪ‪ .‬ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫـﺎ ﺳـﺎﺧﺘﺎﺭﻱ ﺑـﺮﺍﻱ‬
‫ﻃﺮﺍﺣﻲ ﺳﻴﺴﺘﻢﻫﺎﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺆﻟﻔﻪﻫﺎ ﮐﻪ ﻧﻪ ﺗﻨﻬﺎ ﺳﺎﺧﺘﻦ ﺁﻥﻫﺎ ﺭﺍ ﺳﺎﺩﻩ‬
‫ﻣﻲﮐﻨﺪ ﺑﻠﮑﻪ ﻧﮕﻬﺪﺍﺭﻱ ﺁﻥﻫﺎ ﺩﺭ ﻃﻮﻝ ﺯﻣﺎﻥ ﺭﺍ ﻧﻴﺰ ﺁﺳﺎﻥ ﻣﻲﺳﺎﺯﺩ‪ ،‬ﺑﻪﺍﺟـﺮﺍ‬
‫ﺩﺭ ﻣﻲﺁﻭﺭﺩ‪ .‬ﺍﮔﺮ ﭼﻪ ﻣﻌﺮﻓﻲ ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ ﺗﻮﻟﻴﺪ ﮐﻨﻨـﺪﮔﺎﻥ ﺳﻴـﺴﺘﻢ‪-‬‬
‫ﻫﺎﻱ ﺑﺮﺍﺳﺎﺱ ﻣﺆﻟﻔﻪﻫﺎ ﺭﺍ ﻗﺎﺩﺭ ﺑﻪ ﺍﺗﺼﺎﻝ ﺁﻧﻬﺎ ﺑﻪ ﻳﮑﺪﻳﮕﺮ ﺭﺍ ﻧﺴﺒﺖ ﺑﻪ ﻗﺒـﻞ‬
‫ﺳﺎﺩﻩﺗﺮ ﺳﺎﺧﺘﻪ ﺍﺳﺖ‪ ،‬ﺍﻣﺎ ﻫﻨﻮﺯ ﺍﻳﻦﮐﻪ ﺑﻪ ﺧﻮﺑﻲ ﺑـﺎ ﻳﮑـﺪﻳﮕﺮ ﻋﻤـﻞ ﮐﻨﻨـﺪ‬
‫ﻣﺸﮑﻞ ﺍﺳﺖ‪.‬‬
‫‪ ‐۳‬ﺍﺯ ﺍﺩﻏﺎﻡ ﺗﺎ ﺗﺮﮐﻴﺐ‬
‫ﺑﺎ ﻇﻬﻮﺭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎ ﻭ ﻗﺎﻟﺐ ﻫـﺎﻱ ﮐـﺎﺭﻱ ﺑـﺮﺍﻱ ﻣﺆﻟﻔـﻪﻫـﺎ ﻓﻨـﺎﻭﺭﻱ‬
‫ﻣﺆﻟﻔﻪﻫﺎ ﭼﻨﺪﻳﻦ ﻗﺪﻡ ﺑﻪ ﺟﻠﻮ ﮔﺎﻡ ﺑﺮﺩﺍﺷﺖ‪ ،‬ﻭ ﺍﻳﻦ ﻣـﺸﮑﻞ ﺍﺗـﺼﺎﻝ )ﺳـﻴﻢ‬
‫ﺑﻨﺪﻱ( ﻣﺆﻟﻔﻪﻫﺎ ﻫﻢﺍﮐﻨﻮﻥ ﻳﮏ ﻣﺸﮑﻞ ﻗﺪﻳﻤﻲ ﺑﻪ ﺣﺴﺎﺏ ﻣﻲﺁﻳﺪ‪ .‬ﺁﻧﭽﻪ ﺑـﻪ‬
‫ﺟﺎﻱ ﺁﻥ ﻇﺎﻫﺮ ﺷﺪﻩ ﺍﺳﺖ ﻣﺸﮑﻞ ﻣﻬﻢﺗﺮ ﺍﺯ ﺁﻥ ﻳﻌﻨﻲ ﭘـﻴﺶ ﺑﻴﻨـﻲ ﺭﻓﺘـﺎﺭ‬
‫ﺑﺮﺁﻣﺪﻩ ﺍﺯ ﺍﺳﻤﺒﻠﻲ ﻣﺆﻟﻔﻪﻫﺎ ﺍﺳﺖ‪ .‬ﻣﺸﮑﻞ ﺍﺳﺘﺪﻻﻝ ﺩﺭﺑﺎﺭﻩﻱ ﺍﻳﻦﮐﻪ ﭼﮕﻮﻧﻪ‬
‫ﻣﺆﻟﻔﻪﻫﺎ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﻋﻤﻞ ﻣﻲﮐﻨﻨﺪ ﻣﺸﮑﻞ ﻣﻬﻢﺗﺮﻱ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﮐﻨﻨـﺪﮔﺎﻥ‬
‫ﺳﻴﺴﺘﻢﻫﺎﻱ ﻣﺆﻟﻔﻪ ﻣﺒﻨﺎ ﺍﺳﺖ‪ .‬ﻫﻢﺍﮐﻨﻮﻥ ﺯﻣﺎﻥ ﺣﻞ ﺍﻳﻦ ﻣﺸﮑﻞ ﺍﺳـﺖ ﮐـﻪ‬
‫‪ CBD‬ﺍﺯ ﺍﺩﻏﺎﻡ ﺑﻪ ﺳﻮﻱ ﺗﺮﮐﻴﺐ ﺣﺮﮐﺖ ﮐﻨﺪ‪ .‬ﺍﺭﺯﺵ ﺑﺎﺯﺍﺭ ﻣﺆﻟﻔﻪﻫﺎ ﺯﻣـﺎﻧﻲ‬
‫ﻓﻬﻤﻴﺪﻩ ﺧﻮﺍﻫﺪ ﺷﺪ ﮐﻪ ﺑﺘﻮﺍﻧﻨﺪ ﺑﻪ ﺻﻮﺭﺕ ﻗﺎﺑﻞ ﭘـﻴﺶ ﺑﻴﻨـﻲ ﻭ ﻣﻄﻤﺌﻨـﻲ‬
‫ﺧﺮﻳﺪﺍﺭﻱ ﺷﻮﻧﺪ ﻭ ﺗﻮﺳﻂ ﺳﺎﺯﻣﺎﻥﻫﺎﻳﻲ ﮐـﻪ ﺑﻴـﺸﺘﺮ ﺩﺭ ﺯﻣﻴﻨـﻪﻱ ﺗﺮﮐﻴـﺐ‬
‫ﻣﺘﺨﺼﺺﺍﻧﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‪ ،‬ﺑـﺮﺍﻱ ﺳـﺎﺧﺘﻦ ﺳﻴـﺴﺘﻢﻫـﺎﻱ ﺑـﺰﺭﮒﺗـﺮ ﻭ‬
‫ﭘﻴﭽﻴﺪﻩﺗﺮ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ‪.‬‬
‫ﺗﻤﺎﻳﻞ ﺑﻪ ﺣﺮﮐﺖ ﻓﺮﺍﺗﺮ ﺍﺯ ﺍﺩﻏﺎﻡ ﺗﺎ ﺗﺮﮐﻴﺐ‪ ،‬ﺗﻮﺳﻂ ﺍﻳﻦ ﺣﻘﻴﻘـﺖ ﮐـﻪ‬
‫ﻭﺍﺳﻂﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ ﺍﻃﻼﻋﺎﺕ ﮐﺎﻓﻲ ﺭﺍ ﺑﺮﺍﻱ ﺍﺯ ﭘﻴﺶ ﺗﻌﻴﻴﻦ ﮐـﺮﺩﻥ ﻧﺘـﺎﻳﺞ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻭ ﻣﺆﻟﻔﻪ ﺑﺎ ﻫﻢ ﺭﺍ ﻓﺮﺍﻫﻢ ﻧﻤﻲ ﺁﻭﺭﻧﺪ‪ ،‬ﻣﺘﻮﻗـﻒ ﻣـﻲﺷـﻮﺩ‪ .‬ﻳـﮏ‬
‫ﻭﺍﺳﻂ ﺑﻪ ﺻﻮﺭﺕ ﻃﺒﻴﻌﻲ ﺍﻃﻼﻋﺎﺕ ﮐﺎﻓﻲ ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺍﻳﻨﮑﻪ ﺁﻳﺎ ﻳﮏ ﻣﺆﻟﻔﻪ‬
‫ﻣﻲﺗﻮﺍﻧﺪ ﺑﻪ ﻣﺆﻟﻔﻪﻱ ﺩﻳﮕﺮﻱ ﻣﺘﺼﻞ ﺷﻮﺩ ﻳﺎ ﻧـﻪ ﺭﺍ ﻓـﺮﺍﻫﻢ ﻣـﻲﺁﻭﺭﺩ‪ .‬ﺑـﺮﺍﻱ‬
‫ﻣﺜﺎﻝ‪ CORBA IDL ،‬ﺑﺮﺍﻱ ﮐﭙﺴﻮﻟﻪ ﮐﺮﺩﻥ ﺍﺷﻴﺎ‪ ،‬ﻧﺤﻮﻱ ﺭﺍ ﻓـﺮﺍﻫﻢ ﻣـﻲ‪-‬‬
‫ﺁﻭﺭﺩ ﮐﻪ ﺗﻮﺻﻴﻔﺎﺕ ﺍﻣﻀﺎﻱ ﻣﺘﺪ ﻣـﺴﺘﻘﻞ ﺍﺯ ﺯﺑـﺎﻥ ﺭﺍ ﺍﺳـﺘﻔﺎﺩﻩ ﻣـﻲﮐﻨـﺪ ﻭ‬
‫ﺍﺷﻴﺎﻱ ﻣﺘﻨﻮﻋﻲ ﺭﺍ ﺩﺭ ﺑﺮﺩﺍﺭﺩ‪ .‬ﺁﻥﭼﻪ ﺩﺭ ﺍﻳﻦ ﻣﻴﺎﻥ ﺍﺯ ﺩﺳﺖ ﻣﻲﺭﻭﺩ ﺷـﮑﻞ‬
‫ﻣﻮﺍﺯﻱ ﺗﻮﺻﻴﻔﺎﺕ ﺍﺳـﺖ ﮐـﻪ ﺍﺳـﺘﺪﻻﻝ ﺩﺭﺑـﺎﺭﻩﻱ ﺧـﺼﻮﺻﻴﺎﺕ ﺑﺮﺁﻣـﺪﻩ ﺍﺯ‬
‫ﺍﺳﻤﺒﻠﻲﻫﺎﻳﻲ ﮐﻪ ﺩﺭ ﺁﻥﻫﺎ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪﺍﻧﺪ ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣـﻲ‪-‬‬
‫ﮐﻨﺪ‪.‬‬
‫ﺛﺎﺑﺖ ﺷﺪﻩ ﺍﺳﺖ ﮐﻪ ﺍﻳـﻦ ﺩﻳـﺪﮔﺎﻩ ﮐﻨـﻮﻧﻲ ﺍﺯ ﻭﺍﺳـﻂﻫـﺎﻱ ﻣﺆﻟﻔـﻪﻫـﺎ‬
‫ﻧﺎﮐﺎﻓﻲ ﻣﻲﺑﺎﺷﺪ‪ .‬ﺗﺼﻤﻴﻤﺎﺕ ﺍﺩﻏﺎﻡ ﺑﺮﺍﺳﺎﺱ ﺍﻳـﻦ ﺳـﻄﺢ ﺍﺯ ﺍﻃﻼﻋـﺎﺕ ﺑـﻪ‪-‬‬
‫ﺗﻨﻬﺎﻳﻲ ﺍﻏﻠﺐ ﻣﻨﺠﺮ ﺑﻪ ﺍﺳﻤﺒﻠﻲﻫﺎﻳﻲ ﻣﻲﺷـﻮﺩ ﮐـﻪ ﺭﻓﺘـﺎﺭ ﻏﻴﺮﻣﻨﺘﻈـﺮﻩ ﻳـﺎ‬
‫ﮐﻴﻔﻴﺖ ﻏﻴﺮﻗﺎﺑﻞ ﻗﺒﻮﻟﻲ ﺩﺍﺭﻧـﺪ‪ .‬ﻋﻠـﺖ ﺍﻳـﻦ ﻣﻮﺿـﻮﻉ ﻫـﻢ ﺑـﻲﺗـﻮﺟﻬﻲ ﺑـﻪ‬
‫ﻣﻌﻤﺎﺭﻱ ﺍﺳﻤﺒﻠﻲ ﻭ ﺗﺄﺛﻴﺮﺍﺕ ﺁﻥ ﺑﺮ ﺭﻭﻱ ﺭﻓﺘﺎﺭ ﻣﺆﻟﻔﻪﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺍﻧﻔـﺮﺍﺩﻱ‬
‫ﻣﻲﺑﺎﺷﺪ‪ .‬ﻋﻼﻭﻩ ﺑﺮ ﻣﺸﮑﻞ ﺍﺗﺼﺎﻝ ﮐﻪ ‪ Garlan‬ﻭ ﻫﻤﮑﺎﺭﺍﻧﺶ ﻫﻨﮕﺎﻡ ﺗﻮﻟﻴـﺪ‬
‫‪ Aesop‬ﺑﺎ ﺁﻥ ﺭﻭﺑﻪﺭﻭ ﺷﺪﻧﺪ ﻭ ﺩﺭ ﺑﺨﺶ ﻗﺒﻠﻲ ﺫﮐﺮ ﮐـﺮﺩﻳﻢ‪ ،‬ﺳـﺨﺘﻲﻫـﺎﻱ‬
‫ﺩﻳﮕﺮﻱ ﻫﻢ ﺩﺭ ﺭﺳﻴﺪﻥ ﺑﻪ ﻣﺆﻟﻔﻪﻫﺎﻳﻲ ﮐﻪ ﺑﺎ ﻳﮑـﺪﻳﮕﺮ ﮐـﺎﺭ ﮐﻨﻨـﺪ‪ ،‬ﻭﺟـﻮﺩ‬
‫ﺩﺍﺭﺩ‪ .‬ﺟﻨﺒﻪﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺗﺠﺮﺑﻪﻱ ﺁﻥﻫﺎ ﺑﺮﺍﻱ ﻫﺮ ﮐﺴﻲ ﮐـﻪ ﺑﺨﻮﺍﻫـﺪ ﻳـﮏ‬
‫ﺳﻴﺴﺘﻢ ﻣﺆﻟﻔﻪ ﻣﺒﻨﺎ ﺑﺴﺎﺯﺩ ﻫﻢ ﭘﻴﺶ ﺧﻮﺍﻫﺪ ﺁﻣﺪ‪ .‬ﻫﻤﺎﻥ ﻃـﻮﺭ ﮐـﻪ ﺩﺭ ﺑـﺎﻻ‬
‫ﮔﻔﺘﻪ ﺷﺪ‪ ،‬ﺩﻭ ﺗﺎ ﺍﺯ ﻣﺸﮑﻼﺕ‪ ،‬ﺍﺯ ﺍﺗﺼﺎﻝ ﻣﺆﻟﻔﻪﻫـﺎ ﺑـﻪ ﻳﮑـﺪﻳﮕﺮ ﺟﻠـﻮﮔﻴﺮﻱ‬
‫ﻣﻲﮐﻨﺪ‪ .‬ﺑﺎﻗﻲ ﻣﺸﮑﻼﺕ ﻫﻢ ﻣﺮﺑﻮﻁ ﻣﻲﺷﻮﺩ ﺑﻪ ﻧﺎﺗﻮﺍﻧﻲ ﺁﻥﻫﺎ ﺑﺮﺍﻱ ﺳﺎﺧﺘﻦ‬
‫ﺳﻴﺴﺘﻤﻲ ﮐﻪ ﺁﻥﻫﺎ ﺑﺮﺍﻳﺸﺎﻥ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺑﻮﺩﻧﺪ‪ ،‬ﺑﻪ ﺧﺎﻃﺮ ﻓﺮﺿﻴﺎﺕ‬
‫ﻣﺆﻟﻔﻪﻫﺎ ﺩﺭﺑﺎﺭﻩﻱ ﻣﺤﻴﻄﻲ ﮐﻪ ﺩﺭ ﺁﻥ ﺑﻪ ﮐﺎﺭﮔﺮﻓﺘﻪ ﻣﻲ ﺷﺪﻧﺪ‪.‬‬
‫ﺩﺭ ﮔــﺰﺍﺭﺵ ‪ Garlan‬ﻭ ﻫﻤﮑــﺎﺭﺍﻧﺶ ﭼﻬــﺎﺭ ﺩﺳــﺘﻪ ﻱ ﻣﺨﺘﻠــﻒ ﺍﺯ‬
‫ﻣﻔﺮﻭﺿﺎﺕ ﺳﺎﺧﺘﺎﺭﻱ‪ ١٨‬ﮐﻪ ﺩﺭ ﻃﻮﻝ ﺍﺩﻏﺎﻡ ﺳﻴﺴﺘﻤﺸﺎﻥ ﻭﺍﺭﺩ ﺻـﺤﻨﻪ ﺷـﺪﻩ‬
‫ﺑﻮﺩﻧﺪ‪ ،‬ﺷﺮﺡ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪ :‬ﻃﺒﻴﻌـﺖ ﻣﺆﻟﻔـﻪﻫـﺎ‪) ١٩‬ﺯﻳﺮﺳـﺎﺧﺖ‪ ،٢٠‬ﻣـﺪﻝ‬
‫ﮐﻨﺘﺮﻝ ﻭ ﻣﺪﻝ ﺩﺍﺩﻩ(‪ ،‬ﻃﺒﻴﻌﺖ ﺭﺍﺑﻂﻫﺎ‪) ٢١‬ﻗﺮﺍﺭﺩﺍﺩﻫﺎ‪ ٢٢‬ﻭ ﻣـﺪﻝ ﻫـﺎﻱ ﺩﺍﺩﻩ(‪،‬‬
‫ﻣﻌﻤﺎﺭﻱ ﺍﺳﻤﺒﻠﻲﻫﺎ )ﻣﺤﺪﻭﺩﻳﺖ ﻫﺎﻱ ﺭﻭﻱ ﺗﻌﺎﻣﻼﺕ‪ ،(٢٣‬ﻭ ﻓﺮﺁﻳﻨﺪ ﺳـﺎﺧﺖ‬
‫ﺯﻣﺎﻥ ﺍﺟﺮﺍ‪) ٢٤‬ﺗﺮﺗﻴﺐ ﻧﻤﻮﻧﻪ ﺳﺎﺯﻱ(‪ .‬ﺯﻣﺎﻧﻲ ﮐﻪ ﺁﻥﻫﺎ ﻧـﺴﺨﻪﺍﻱ ﺍﺯ ‪Aesop‬‬
‫ﺭﺍ ﮐﻪ ﮐﺎﺭ ﻣﻲ ﮐﺮﺩ – ﺑﻌﺪ ﺍﺯ ﮐﺎﺭ ﺑﺮﺭﻭﻱ ﻧﺎﺟﻮﺭﻱﻫﺎﻱ ﺍﺩﻏـﺎﻡ ﻭ ﻣﻔﺮﻭﺿـﺎﺕ‬
‫ﻣﺆﻟﻔﻪﻫﺎ‐ ﺍﺭﺍﻳﻪ ﺩﺍﺩﻧﺪ‪ ،‬ﺍﻳﻦ ﻧﺴﺨﻪ ﺑﺴﻴﺎﺭ ﺑـﺰﺭﮒ ﺷـﺪﻩ ﺑـﻮﺩ‪ ،‬ﻧﮕـﻪﺩﺍﺭﻱ ﺁﻥ‬
‫ﺳﺨﺖ ﺑﻮﺩ ﻭ ﮐﺎﺭﺍﻳﻲ ﺿﻌﻴﻔﻲ ﺩﺍﺷﺖ‪.‬‬
‫ﭘــــﺲ ﺍﺯ ﺁﻥ‪ Inveradi ،‬ﻭ ‪ Wolf‬ﻭ ‪ Yankelevich‬ﺍﺳــــﺘﻔﺎﺩﻩ ﺍﺯ‬
‫ﺗﻮﺻﻴﻒ ﻣﻌﻤﺎﺭﻱ ﺭﺳـﻤﻲ ﻭ ﺗﺤﻠﻴـﻞ ﺑـﺮﺍﻱ ﺭﻭﺷـﻦ ﺳـﺎﺧﺘﻦ ﺁﻥﭼـﻪ ﺁﻥ ﺭﺍ‬
‫ﻧﺎﺟﻮﺭﻱ ﺭﻓﺘﺎﺭﻱ ﻣﻴﺎﻥ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺑـﺮﺍﻱ ﺳـﺎﺧﺘﻦ ﭘﺮﻭﮐـﺴﻲ‬
‫ﻓﺸﺮﺩﻩﺳﺎﺯﻱ ﻣﻲﻧﺎﻣﻴﺪﻧﺪ‪ ،‬ﺭﺍ ﺷﺮﺡ ﺩﺍﺩﻧﺪ‪ .‬ﺍﻳﻦ ﻧﻮﻉ ﻣﺸﮑﻼﺕ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺑﻪ‪-‬‬
‫ﺧﻮﺑﻲ ﺍﺯ ﻣﺸﮑﻼﺗﻲ ﮐﻪ ‪ Garlan‬ﻭ ﻫﻤﮑﺎﺭﺍﻧﺶ ﺑـﺎ ﺁﻥﻫـﺎ ﺭﻭ ﺑـﻪ ﺭﻭ ﺷـﺪﻧﺪ‬
‫ﻳﻌﻨﻲ ﺍﺯ ﻧﺎﺟﻮﺭﻱ ﻣﺆﻟﻔﻪﻫﺎ‪ ،‬ﺗﺸﺨﻴﺺ ﺩﺍﺩ‪ .‬ﺍﮐﺜﺮ ﺍﻳﻦ ﺳﺨﺘﻲﻫـﺎ ﻧﻤـﻲﺗﻮﺍﻧﻨـﺪ‬
‫ﻣﺎﻧﻊ ﺍﺗﺼﺎﻝ ﻣﺆﻟﻔﻪﻫﺎ ﺑﻪﻳﮑﺪﻳﮕﺮ ﺷﻮﻧﺪ‪ .‬ﻭﻟﻲ ﺁﻥﭼﻪ ﻧﺎﺟﻮﺭﻱ ﻣﺆﻟﻔﻪﻫـﺎ ﻣـﻲ‪-‬‬
‫ﻧﺎﻣﻴﻢ ﺑﻴﺸﺘﺮ ﺍﺯ ﺭﺳـﻴﺪﻥ ﺳﻴـﺴﺘﻢ ﺑـﻪ ﻧﻴﺎﺯﻣﻨـﺪﻱﻫـﺎﻱ ﻋﻤﻠﻴـﺎﺗﻲ‪ ٢٥‬ﻭ ﻓـﺮﺍ‬
‫ﻋﻤﻠﻴﺎﺗﻲ‪ ٢٦‬ﺍﺵ ﺟﻠﻮﮔﻴﺮﻱ ﻣﻲﮐﻨﺪ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦﮐﻪ ﺍﻳﻦ ﺗﻔﺎﻭﺕ ﺭﻭﺷﻦ ﻭ ﻭﺍﺿﺢ‬
‫ﺷﻮﺩ‪ ،‬ﻣﺎ ﻧﺎﺟﻮﺭﻱﻫﺎﻱ ﺍﺩﻏﺎﻡ ﺭﺍ ﮐﻪ ‪ Garlan‬ﻭ ﻫﻤﮑـﺎﺭﺍﻧﺶ ﺑـﺎ ﺁﻥ ﺭﻭﺑـﻪ ﺭﻭ‬
‫ﺷﺪﻧﺪ‪ ،‬ﻭ ﺁﻥﻫﺎ ﺭﺍ ﺍﺯ ﺍﺗﺼﺎﻝ ﻣﺆﻟﻔﻪﻫﺎ ﺑﻪ ﻳﮑﺪﻳﮕﺮ ﺑﻪ ﺧﺎﻃﺮ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﺎﻟﺐ‪-‬‬
‫ﻫﺎﻱ ﺩﺍﺩﻩﺍﻱ ﻣﺘﻔﺎﻭﺕ‪ ،‬ﺑﺎﺯﺩﺍﺷﺖ‪ ،‬ﺑﺎ ﺭﻓﺘﺎﺭ ﭘﺮﻭﮐﺴﻲ ﻓـﺸﺮﺩﻩﺳـﺎﺯﻱ‪ ،‬ﮐـﻪ ﺩﺭ‬
‫ﭘﺎﺭﺍﮔﺮﺍﻑ ﺑﻌﺪﻱ ﺷﺮﺡ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ‪ ،‬ﻭ ﻳﮏ ﺧﺼﻮﺻﻴﺖ ﻧـﺎﻣﻄﻠﻮﺏ ﺑﺮﺁﻣـﺪﻩ‬
‫ﻳﻌﻨﻲ ﭘﺘﺎﻧﺴﻴﻞ ﺍﻳﺠﺎﺩ ﺑﻦ ﺑﺴﺖ ﺭﺍ ﺑﻪ ﻧﻤـﺎﻳﺶ ﻣـﻲﮔـﺬﺍﺭﺩ‪ ،‬ﻣﻘﺎﻳـﺴﻪ ﻣـﻲ‪-‬‬
‫ﻧﻤﺎﻳﻴﻢ‪ .‬ﺩﺭ ﻣﻮﺭﺩ ﺩﻭﻣﻲ‪ ،‬ﻣﺸﮑﻠﻲ ﺩﺭ ﻣﻮﺭﺩ ﺍﺗـﺼﺎﻝ ﻣﺆﻟﻔـﻪﻫـﺎ ﺑـﻪ ﻳﮑـﺪﻳﮕﺮ‬
‫ﻭﺟﻮﺩ ﻧﺪﺍﺷﺖ‪ .‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﮑﻨﻴﮏﻫﺎﻱ ﺗﺤﻠﻴﻞ ﭘﻴﺸﺮﻓﺘﻪ‪ ،‬ﻣﻌﻨﺎﻱ ﭘﻴﺶﺑﻴﻨﻲ‬
‫ﭘﺘﺎﻧﺴﻴﻞ ﺑﺮﺍﻱ ﺷﮑﺴﺖﻫﺎﻱ‪ ٢٧‬ﺯﻣﺎﻥ ﺍﺟﺮﺍ ﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲﺁﻭﺭﺩ‪.‬‬
‫ﭘﺮﻭﮐﺴﻲ ﻓﺸﺮﺩﻩﺳﺎﺯﻱ ﺑـﺮﺍﻱ ﺑﻬﺒـﻮﺩ ﮐـﺎﺭﺍﻳﻲ ﮐـﺎﻭﺵﮔﺮﻫـﺎﻱ ﻭﺏ ﺍﺯ‬
‫ﻃﺮﻳﻖ ﻓﺸﺮﺩﻩﺳﺎﺯﻱ ﺷﻔﺎﻑ‪ ٢٨‬ﻭ ﺑﻪ ﺣﺎﻟﺖ ﻗﺒﻞ ﺍﺯ ﻓـﺸﺮﺩﻩﺳـﺎﺯﻱ ﺩﺭ ﺁﻭﺭﺩﻥ‬
‫ﺩﺍﺩﻩﻫﺎﻱ ﺍﻧﺘﻘﺎﻝ ﻳﺎﻓﺘﻪ‪ ٢٩‬ﻃﺮﺍﺣﻲ ﺷﺪ‪ .‬ﻧﺎﺟﻮﺭﻱ ﻣﻲﺗﻮﺍﻧـﺪ ﺑﺎﻋـﺚ ﺑـﻦﺑـﺴﺖ‬
‫ﺷﻮﺩ‪ ،‬ﮐﻪ ﻳﮏ ﺧﺼﻮﺻﻴﺖ ﻣﺜﺒﺖ ﺑﺮﺍﻱ ﻳﮏ ﺍﺳﻤﺒﻠﻲ ﮐﻪ ﺑﺮﺍﻱ ﺑﻬﺒﻮﺩ ﮐﺎﺭﺍﻳﻲ‬
‫ﻃﺮﺍﺣﻲ ﺷﺪﻩ ﺍﺳﺖ ﺑﻪ ﺣﺴﺎﺏ ﻧﻤﻲﺁﻳﺪ‪ .‬ﺷﮑﻞ )‪ (۱‬ﻳﮏ ﺍﺭﺍﻳﻪﻱ ﺗﺼﻮﻳﺮﻱ ﺍﺯ‬
‫ﭘﺮﻭﮐﺴﻲ ﻓﺸﺮﺩﻩﺳﺎﺯﻱ ﺍﺳﺖ‪ .‬ﺩﺍﺩﻩﺍﻱ ﮐﻪ ﺩﺭ ﻭﺏ ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﻣـﻲﺷـﻮﺩ‪ ،‬ﺍﺯ‬
‫ﻃﺮﻳﻖ ﻓﻴﻠﺘﺮ ﺳﻤﺖ ﭼﭗ ﻭﺍﺭﺩ ﻣﻲﺷﻮﺩ‪ .‬ﺳﭙﺲ ﺍﺯ ﺁﻧﺠﺎ ﻭﺍﺭﺩ ﻓﻴﻠﺘـﺮ ﺩﻳﮕـﺮﻱ‬
‫ﻣﻲﺷﻮﺩ ﮐﻪ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﮏ ﺗﻄﺒﻴﻖ ﺩﻫﻨﺪﻩ ﮐﻪ ﺷﺮﺍﻳﻂ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﺮﻧﺎﻣـﻪﻱ‬
‫ﮐﺎﺭﺑﺮﺩﻱ ‪ GZIP‬ﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲﺁﻭﺭﺩ‪ ،‬ﻋﻤﻞ ﻣﻲﮐﻨﺪ‪ ،‬ﻭ ﺍﻳﻦ ﺑﺮﻧﺎﻣـﻪ ﻓـﺸﺮﺩﻩ‪-‬‬
‫ﺳﺎﺯﻱ ﺩﺍﺩﻩﻫﺎ ﺭﺍ ﺑﻪﺍﻧﺠﺎﻡ ﻣﻲﺭﺳﺎﻧﺪ‪ .‬ﺑﺎ ﻳﮏ ﺗﺤﻠﻴﻞ ﺩﻗﻴﻖ‪ ،‬ﭘﺘﺎﻧـﺴﻴﻞ ﺭﺥﺩﺍﺩ‬
‫ﺑﻦ ﺑﺴﺖ ﻣﻌﻠﻮﻡ ﺷﺪ‪ ،‬ﭼﺮﺍﮐﻪ ﺗﻄﺒﻴﻖ ﺩﻫﻨﺪﻩ ﻣﻤﮑﻦ ﺍﺳﺖ ﺩﺭ ﺯﻣﺎﻥ ﺗﺤﻮﻳـﻞ‬
‫ﺩﺍﺩﻩ ﺑﻪ ‪ GZIP‬ﺑﻠﻮﮐﻪ ﺷﻮﺩ‪ .‬ﭼﺮﺍﮐﻪ ﺗﻄﺒﻴﻖ ﺩﻫﻨﺪﻩ ﻧﻤﻲﺗﻮﺍﻧﺪ ﺗﺎ ﺯﻣﺎﻧﻲ ﮐـﻪ‬
‫ﺗﻤﺎﻣﻲ ﺩﺍﺩﻩ ﻫﺎ ﺗﻮﺳﻂ ‪ GZIP‬ﺧﻮﺍﻧﺪﻩ ﻧﺸﺪﻩﺍﻧﺪ‪ ،‬ﻫﻴﭻﺩﺍﺩﻩﻱ ﻓﺸﺮﺩﻩﺷﺪﻩﺍﻱ‬
‫ﺭﺍ ﺩﺭﻳﺎﻓﺖ ﮐﻨـﺪ‪ .‬ﻫﻤﭽﻨـﻴﻦ ‪ GZIP‬ﺗـﺎ ﺯﻣـﺎﻧﻲ ﮐـﻪ ﺗﻤـﺎﻣﻲ ﺩﺍﺩﻩﻫـﺎ ﺭﺍ ﺍﺯ‬
‫ﺗﻄﺒﻴﻖ ﺩﻫﻨﺪﻩ ﻭ ﺍﺯ ﻃﺮﻳﻖ ﺍﺭﺗﺒﺎﻁ ‪ ۲‬ﻧﺨﻮﺍﻧﺪﻩ ﺑﺎﺷـﺪ‪ ،‬ﻣﺠـﺎﺯ ﺑـﻪ ﺑﺎﺭﮔـﺬﺍﺭﻱ‬
‫ﺩﺍﺩﻩﻱ ﺯﻳﭗ ﺷﺪﻩ ﺍﺯ ﻃﺮﻳﻖ ﺍﺭﺗﺒﺎﻁ ‪ ۳‬ﻧﺨﻮﺍﻫﺪ ﺑﻮﺩ‪ .‬ﺍﻳﻦ ﻳﻌﻨﻲ ﻫـﺮ ﺗﻼﺷـﻲ‬
‫ﺑﺮﺍﻱ ﭘﺮﺩﺍﺯﺵ ﻳﮏ ﻓﺎﻳﻞ ﺑﺰﺭﮒ ﺗﺮ ﺍﺯ ﻇﺮﻓﻴﺖ ﺑـﺎﻓﺮ ‪ GZIP‬ﺑﺎﻋـﺚ ﺧﻮﺍﻫـﺪ‬
‫ﺷﺪ ﮐﻪ ﺳﻴﺴﺘﻢ ﺑﻪ ﺑﻦﺑﺴﺖ ﺑﺮﺳﺪ‪ .‬ﺑﺮﺍﺳﺎﺱ ﺍﻳﻦ ﻳﺎﻓﺘﻪ‪ ،‬ﺗﻄﺒﻴﻖ ﺩﻫﻨـﺪﻩ ﺑـﺎ‬
‫ﻳﮏ ﻧﺴﺨﻪﻱ ﻏﻴﺮﺑﻠﻮﮐﻪ ﺷﻮﻧﺪﻩ ﺟﺎﻳﮕﺬﺍﺭﻱ ﺷﺪ ﻭ ﭘﺮﻭﮐﺴﻲ ﻫﻤﺎﻥﻃـﻮﺭ ﮐـﻪ‬
‫ﺍﻧﺘﻈﺎﺭ ﻣﻲﺭﻓﺖ ﻋﻤﻞ ﮐﺮﺩ‪ .‬ﺍﻳﻦ ﻳﮏ ﻧـﺎﺟﻮﺭﻱ ﺑـﻴﻦ ﻣﺆﻟﻔـﻪﻫـﺎ ﻧﻴـﺴﺖ‪ .‬ﺩﺭ‬
‫ﺣﻘﻴﻘﺖ‪ ،‬ﺗﺤﺖ ﺗﻤﺎﻣﻲ ﻣﻮﻗﻌﻴﺖﻫﺎ‪ ،‬ﭘﺮﻭﮐﺴﻲ ﺑﻪ ﺩﺭﺳﺘﻲ ﻋﻤﻞ ﺧﻮﺍﻫﺪ ﮐﺮﺩ‪.‬‬
‫ﺍﻳﻦ ﻳﮏ ﻧﺎﺟﻮﺭﻱ ﺑﺎ ﻧﻴﺎﺯﻣﻨﺪﻱﻫﺎﻱ ﺳﻴﺴﺘﻢ ﺍﺳﺖ‪ .‬ﺍﮔﺮ ﺍﻳﻦ ﻧﻴﺎﺯﻣﻨﺪﻱﻫﺎ ﺑـﻪ‬
‫ﺍﻧﺘﻘﺎﻝ ﻓﺎﻳﻞﻫﺎﻱ ﺑﻪﺍﻧﺪﺍﺯﻩﻱ ﮐﺎﻓﻲ ﮐﻮﭼﮏ ﻣﺤﺪﻭﺩ ﺷﻮﻧﺪ‪ ،‬ﭘﺘﺎﻧﺴﻴﻞ ﺭﺧـﺪﺍﺩ‬
‫ﺑﻦﺑﺴﺖ ﻫﻢ ﺍﺯ ﻣﻴﺎﻥ ﺧﻮﺍﻫﺪ ﺭﻓﺖ‬
‫‪.‬‬
‫ﺷﮑﻞ )‪ :(۱‬ﭘﺮﻭﮐﺴﻲ ﻓﺸﺮﺩﻩ ﺳﺎﺯﻱ )ﺗﻮﺳﻂ ‪(Alexander L. Wolf‬‬
‫ﺩﺭﺳﻲ ﮐﻪ ﺍﺯ ﺍﻳﻦ ﺗﺠﺮﺑﻪ ﻭ ﺗﺠﺮﺑﻴﺎﺕ ‪ Garlan‬ﻭ ﺑﺎﻗﻲ ﺁﻣﻮﺧﺘـﻪ ﻣـﻲﺷـﻮﺩ‪،‬‬
‫ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﺗﺤﻠﻴﻞ ﺩﻗﻴﻖ ﻣﻔﺮﻭﺿﺎﺕ ﻣﺆﻟﻔﻪﻫﺎ ﺩﺭﺑﺎﺭﻩﻱ ﺯﻣﻴﻨﻪﺍﻱ ﮐﻪ ﻗﺮﺍﺭ‬
‫ﺍﺳﺖ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗـﺮﺍﺭ ﮔﻴﺮﻧـﺪ‪ ،‬ﻣـﻲﺗﻮﺍﻧـﺪ ﺩﺭ ﺟﻠـﻮﮔﻴﺮﻱ ﺍﺯ ﺧﻄﺎﻫـﺎﻱ‬
‫ﻃﺮﺍﺣﻲ ﮐﻤﮏ ﮐﻨﺪ ﻭ ﻣﻨﺠﺮ ﺑﻪ ﺳﺎﺧﺘﻦ ﻣﺤﺼﻮﻝ ﺩﺭﺳﺖ ﺩﺭ ﺯﻣﺎﻥ ﮐﻤﺘﺮﻱ‬
‫ﺷﻮﺩ‪ .‬ﻣﻮﺍﺭﺩﻱ ﮐﻪ ‪ Garlan‬ﻭ ﻫﻤﮑـﺎﺭﺍﻧﺶ ﻣﻄـﺮﺡ ﮐـﺮﺩﻩﺍﻧـﺪ‪ ،‬ﻋﺒﺎﺭﺗﻨـﺪ ﺍﺯ‪:‬‬
‫ﻧﺎﺟﻮﺭﻱﻫﺎﻱ ﻣﻌﻤﺎﺭﻱ ﮐﻪ ﺍﺯ ﻧﺎﺟﻮﺭﻱ ﺩﺭ ﻓﺮﺽﻫﺎﻳﻲ ﮐـﻪ ﻳـﮏ ﻗـﺴﻤﺖ ﺑـﺎ‬
‫ﻗﺎﺑﻠﻴﺖ ﺍﺳﺘﻔﺎﺩﻩﻱ ﻣﺠﺪﺩ ﺩﺭﺑﺎﺭﻩ ﻱ ﺳﺎﺧﺘﺎﺭ ﺳﻴﺴﺘﻤﻲ ﮐﻪ ﺧﻮﺩ ﻗﺴﻤﺘﻲ ﺍﺯ‬
‫ﺁﻥ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪ ،‬ﺭﻳﺸﻪ ﻣﻲﻳﺎﺑﺪ‪ .‬ﺍﻳﻦ ﻣﻔﺮﻭﺿﺎﺕ ﻏﺎﻟﺐ ﺍﻭﻗﺎﺕ ﺑـﺎ ﻓـﺮﺽﻫـﺎﻱ‬
‫ﺩﻳﮕﺮ ﻗﺴﻤﺖﻫﺎ ﺗﻨﺎﻗﺾ‪ ٣٠‬ﺩﺍﺭﻧﺪ ﻭ ﺗﻘﺮﻳﺒ ﹰﺎ ﻫﻤﻴﺸﻪ ﺿـﻤﻨﻲ ﻣـﻲﺑﺎﺷـﻨﺪ‪ ،‬ﮐـﻪ‬
‫ﺗﺤﻠﻴﻞ ﻗﺒﻞ ﺍﺯ ﺳﺎﺧﺘﻦ ﺳﻴﺴﺘﻢ ﺭﺍ ﺑﺮﺍﻱ ﺁﻥﻫﺎ ﻣﺸﮑﻞ ﻣﻲﺳﺎﺯﺩ‪.‬‬
‫ﻳﮏ ﻣﺆﻟﻔﻪ ﺑﺎﻳﺪ ﺑﺎﻳﺪ ﭼﻨﻴﻦ ﻣﻔﺮﻭﺿﺎﺗﻲ ﺭﺍ ﻣﺎﻧﻨﺪ ﺍﻧﺪﺍﺯﻩﻱ ﺑﺎﻓﺮ ﻳﺎ ﻗﺎﻟﺐ ﺩﺍﺩﻩ‪-‬‬
‫ﻱ ﻣﻮﺭﺩ ﻧﻈﺮ‪ ،‬ﺩﺭﺑﺎﺭﻩﻱ ﻫﺮ ﻣﺤﻴﻄﻲ ﮐﻪ ﺩﺭ ﺁﻥ ﻣﻮﺭﺩ ﺍﺳـﺘﻔﺎﺩﻩ ﻗـﺮﺍﺭ ﻣـﻲ‪-‬‬
‫ﮔﻴﺮﺩ‪ ،‬ﺑﻴﺎﻥ ﻧﻤﺎﻳﺪ ﻭ ﻫﻤﭽﻨﻴﻦ ﺑﺎﻳﺪ ﻗﺎﺩﺭ ﺑﻪ ﺑﻴﺎﻥ ﺗـﺄﺛﻴﺮﺍﺗﺶ ﺑـﺮ ﺍﻳـﻦﮔﻮﻧـﻪ‬
‫ﻣﺤﻴﻂﻫﺎ ﺑﺎﺷﺪ‪ .‬ﺑﺪﻭﻥ ﻳﮏ ﺑﻴﺎﻥ ﺍﺯ ﺧـﺼﻮﺻﻴﺎﺕ ﺭﻓﺘـﺎﺭﻱ‪ ،‬ﮐﭙـﺴﻮﻟﻪ ﮐـﺮﺩﻥ‬
‫ﺭﻓﺘﺎﺭ ﻣﺆﻟﻔﻪﻫﺎ ﻣﻤﮑﻦ ﻧﺨﻮﺍﻫﺪ ﺑﻮﺩ‪ ،‬ﭼﺮﺍﮐﻪ ﮐﭙﺴﻮﻟﻪ ﮐﺮﺩﻥ ﭼﻴﺰﻱ ﮐﻪ ﻧﻤﻲ‪-‬‬
‫ﺗﻮﺍﻧﺪ ﺩﺭ ﻣﮑﺎﻧﻴﺴﻢ ﮐﭙﺴﻮﻟﻪ ﺳﺎﺯﻱ ﺍﺭﺍﻳﻪ ﺷﻮﺩ‪ ،‬ﻣﻤﮑﻦ ﻧﻴﺴﺖ‪ .‬ﺍﻳـﻦ ﮐﻤﺒـﻮﺩ‬
‫ﺑﻴﺎﻥ‪ ٣١‬ﻣﻨﺠﺮ ﺑﻪ ﺭﺧﻨﻪﻫﺎﻳﻲ ﺩﺭ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺆﻟﻔﻪﻫﺎ ﻣﻲﺷﻮﺩ‪ ،‬ﮐـﻪ ﻣﻤﮑـﻦ‬
‫ﺍﺳﺖ ﺳﺮﭼﺸﻤﻪﻱ ﻭﺍﺑـﺴﺘﮕﻲﻫـﺎﻱ ﺿـﻤﻨﻲ ﻣﺆﻟﻔـﻪﻫـﺎ ﺑـﻪ ﻳﮑـﺪﻳﮕﺮ ﺷـﻮﺩ‪.‬‬
‫ﻣﻔﺮﻭﺿﺎﺕ ﻧﺎﻣﻌﻴﻦ ﻭ ﻧﺎﻣﻌﻠﻮﻡ ﻭﻟﻲ ﻭﺍﻗﻌﻲ ﻣﻤﮑـﻦ ﺍﺳـﺖ ﺳـﻬﻤﻲ ﮐـﻪ ﻳـﮏ‬
‫ﻣﺆﻟﻔﻪ ﺩﺭ ﺧﺼﻮﺻﻴﺎﺕ ﺑﺮﺁﻣﺪﻩﻱ ﺍﺯ ﺍﺳﻤﺒﻠﻲ ﺩﺍﺭﺩ ﺭﺍ ﻣﺤﻮ ﮐﻨﺪ‪.‬‬
‫ﻣﻮﻓﻘﻴ ـﺖ ﺑــﺎﺯﺍﺭ ﻣﺆﻟﻔــﻪﻫــﺎ ﺑــﻪ ﺩﺍﺷــﺘﻦ ﻣﻄﺎﻟﺒــﺎﺕ ﻗﺎﺑــﻞ ﺍﻃﻤﻴﻨــﺎﻥ ﺑــﺮﺍﻱ‬
‫ﺧﺼﻮﺻﻴﺎﺕ ﻣﺆﻟﻔﻪﻫﺎ ﻭ ﺗﮑﻨﻴﮏﻫﺎﻱ ﺗﺤﻠﻴـﻞ ﻋﻤـﻮﻣﻲ ﺑـﺮﺍﻱ ﭘـﺸﺘﻴﺒﺎﻧﻲ ﺍﺯ‬
‫ﺍﺳﺘﺪﻻﻝ ﺩﺭﺑﺎﺭﻩﻱ ﺧﺼﻮﺻﻴﺎﺕ ﺑﺮﺁﻣﺪﻩ ﺍﺯ ﺍﺳﻤﺒﻠﻲﻫـﺎ ﭘـﻴﺶ ﺍﺯ ﺍﺳـﺘﻔﺎﺩﻩ ﻭ‬
‫ﺍﺩﻏﺎﻡ‪ ،‬ﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ‪.‬‬
‫‪ ‐۴‬ﺍﺳﻤﺒﻠﻲ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ‬
‫ﺗﺄﻳﻴﺪ‬
‫ﺩﺭ ﺣــﺎﻝ ﺣﺎﺿــﺮ ﻣﻄﺎﻟﻌــﺎﺗﻲ ﺭﻭﻱ ﺭﻭﻳﮑﺮﺩﻫــﺎﻳﻲ ﺑــﺮﺍﻱ ﺗــﻀﻤﻴﻦ ﺍﻳـﻦ ﮐــﻪ‬
‫ﺍﺳﻤﺒﻠﻲﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﺑﻪ ﺻﻮﺭﺕ ﻣﻮﺭﺩ ﺍﻧﺘﻈﺎﺭ ﻋﻤﻞ ﻣـﻲﮐﻨﻨـﺪ ﻭ‬
‫ﺧﺼﻮﺻﻴﺎﺕ ﺍﺳﻤﺒﻠﻲﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺻﺮﻳﺢ ﺑﺮﺍﻱ ﭘﺸﺘﻴﺒﺎﻧﻲ ﺍﺯ ﺗﺮﮐﻴﺐ ﺳﻠﺴﻠﻪ‬
‫ﻣﺮﺍﺗﺒﻲ ﺳﻴﺴﺘﻢ ﺩﺭ ﺩﺳﺘﺮﺳـﻨﺪ‪ ،‬ﻭﺟـﻮﺩ ﺩﺍﺭﻧـﺪ‪ .‬ﺑـﻪ ﺻـﻮﺭﺕ ﻏﻴـﺮ ﺭﺳـﻤﻲ‪،‬‬
‫ﺍﺳﺘﺪﻻﻝ ﺗﺮﮐﻴﺒﻲ ﻓﺮﺽ ﻣﻲﮐﻨﺪ ﺍﮔﺮ ﻣﺎ ﭼﻴـﺰﻱ ﺩﺭﺑـﺎﺭﻩﻱ ﺧـﺼﻮﺻﻴﺎﺕ ﺩﻭ‬
‫ﺟﺰ ‪ c1‬ﻭ ‪ c2‬ﻣﻲﺩﺍﻧﻴﻢ‪ ،‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺗـﺎﺑﻊ ﺍﺳـﺘﺪﻻﻝ ‪ f‬ﮐـﻪ )‪f(c1,c2‬‬
‫ﻳﮏ ﺧﺼﻮﺻﻴﺖ ﺍﺯ ﺍﺳﻤﺒﻠﻲ ﺷﺎﻣﻞ ‪ c1‬ﻭ ‪ c2‬ﺭﺍ ﻧﺸﺎﻥ ﻣﻲﺩﻫﺪ‪ ،‬ﺗﻌﺮﻳﻒ ﮐﻨﻴﻢ‪.‬‬
‫ﺑﺴﻴﺎﺭﻱ ﺩﺭ ﺍﻳﻦ ﺑﺎﺭﻩ ﺑﺤﺚ ﮐﺮﺩﻩﺍﻧﺪ ﮐﻪ ﺍﺳـﺘﺪﻻﻝ ﺗﺮﮐﻴﺒـﻲ ﻫـﺪﻑ ﻧﻬـﺎﻳﻲ‬
‫ﻣﻬﻨﺪﺳﻲ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺍﺳﺖ‪ .‬ﺍﻳﻦ ﺑﺤﺚ ﻣﻌﻤﻮ ﹰﻻ ﺑﻪ ﻋﻨﻮﺍﻥ ﻓـﺮﺽ ﺍﺻـﻠﻲ‪ ،‬ﺗﻨﻬـﺎ‬
‫ﻼ ﺭﺳﻤﻲ ﺭﺍ ﻣﻮﺭﺩ ﻗﺒﻮﻝ ﺩﺍﺭﺩ‪ .‬ﺍﮔﺮ ﺍﺯ ﺍﻳﻦ‬
‫ﻳﮏ ﺗﺎﺑﻊ ﺍﺳﺘﺪﻻﻝ ﺳﺨﺖ‪ ٣٢‬ﻭ ﮐﺎﻣ ﹰ‬
‫ﻓﺮﺽ ﻣﻘﺪﻡ ﭘﻴﺮﻭﻱ ﮐﻨﻴﻢ‪ ،‬ﭘﻴﺸﺮﻓﺘﻤﺎﻥ ﻭﺍﻗﻌ ﹰﺎ ﮐﻨﺪ ﺧﻮﺍﻫﺪ ﺑـﻮﺩ‪ .‬ﺩﺭ ﻋـﻮﺽ‪،‬‬
‫ﻣﻲﺗﻮﺍﻥ ﻳﮏ ﺭﻭﻳﮑـﺮﺩ ﺍﻓﺰﺍﻳـﺸﻲﺗـﺮ ﺭﺍ ﮐـﻪ ﺳـﻄﻮﺡ ﺯﻳـﺎﺩﻱ ﺍﺯ ﺭﺳـﻤﻴﺖ ﻭ‬
‫ﺳﺨﺖﮔﻴﺮﻱ ﺩﺍﺭﺩ‪ ،‬ﺍﺗﺨﺎﺫ ﮐﺮﺩ‪ .‬ﺑﺮﺍﻱ ﺷﺮﻭﻉ‪ ،‬ﺑﺎﻳﺪ ﺳﻪ ﺳﺆﺍﻝ ﻣـﺮﺗﺒﻂ ﭘﺎﺳـﺦ‬
‫ﺩﺍﺩﻩ ﺷﻮﺩ‪:‬‬
‫‪.۱‬‬
‫‪.۲‬‬
‫‪.۳‬‬
‫ﭼﻪ ﺍﻧﻮﺍﻋﻲ ﺍﺯ ﺧـﺼﻮﺻﻴﺎﺕ ﮐﻴﻔﻴﺘـﻲ ﺳﻴـﺴﺘﻢ ﻣـﻮﺭﺩ ﻋﻼﻗـﻪﻱ‬
‫ﺳﺎﺯﻧﺪﮔﺎﻥ ﺁﻥﻫﺎ ﺩﺭ ﻣﻮﺭﺩ ﭘﻴﺶ ﺑﻴﻨﻲ ﺍﺳﺖ؟‬
‫ﭼﻪ ﺍﻧﻮﺍﻋﻲ ﺍﺯ ﺗﮑﻨﻴﮏﻫﺎﻱ ﺗﺤﻠﻴـﻞ‪ ،‬ﺍﺳـﺘﺪﻻﻝ ﺩﺭﺑـﺎﺭﻩ ﻱ ﺍﻳـﻦ‬
‫ﺧــﺼﻮﺻﻴﺎﺕ ﮐﻴﻔﻴﺘ ـﻲ ﺭﺍ ﭘــﺸﺘﻴﺒﺎﻧﻲ ﻣ ـﻲﮐﻨــﺪ‪ ،‬ﻭ ﺁﻥﻫــﺎ ﭼــﻪ‬
‫ﻣﻘﺎﺩﻳﺮﻱ ﺍﺯ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺆﻟﻔـﻪﻫـﺎ ﺭﺍ ﺑـﻪ ﻋﻨـﻮﺍﻥ ﭘﺎﺭﺍﻣﺘﺮﻫـﺎﻱ‬
‫ﻭﺭﻭﺩﻱ ﻧﻴﺎﺯ ﺩﺍﺭﻧﺪ؟‬
‫ﭼﮕﻮﻧﻪ ﺍﻳﻦ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺆﻟﻔﻪﻫﺎ ﺗﻌﺮﻳﻒ‪ ،‬ﺍﻧﺪﺍﺯﻩ ﮔﻴﺮﻱ‪ ،‬ﻭ ﺗﺄﻳﻴﺪ‬
‫ﻣﻲﺷﻮﻧﺪ؟‬
‫ﺍﻳﻦ ﺳﻪ ﺳﺆﺍﻝ ﻣﺴﺘﻘﻞ ﺍﺯ ﻫﻢ ﻫﺴﺘﻨﺪ‪ .‬ﺍﻧﻮﺍﻉ ﺍﺳﺘﺪﻻﻝ ﺗﺮﮐﻴﺒﻲ ﮐﻪ ﻣﻲﺗﻮﺍﻧﺪ‬
‫ﺻﻮﺭﺕ ﺑﭙﺬﻳﺮﺩ ﺩﺭ ﻧﻬﺎﻳﺖ ﺑﻪ ﺍﻧﻮﺍﻉ ﺧـﺼﻮﺻﻴﺎﺕ ﻣﺆﻟﻔـﻪﻫـﺎ ﮐـﻪ ﻣـﻲﺗﻮﺍﻧﻨـﺪ‬
‫ﺍﻧﺪﺍﺯﻩﮔﻴﺮﻱ ﺷﻮﻧﺪ‪ ،‬ﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ‪ .‬ﺍﺯ ﻃﺮﻑ ﺩﻳﮕﺮ‪ ،‬ﺍﻳﻦ ﺗﮑﻨﻴﮏﻫﺎﻱ ﺍﺳﺘﺪﻻﻝ‬
‫ﻫﺴﺘﻨﺪ ﮐﻪ ﺗﻌﻴﻴﻦ ﻣﻲﮐﻨﻨﺪ ﭼﻪ ﺧﺼﻮﺻﻴﺎﺗﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎ ﺩﺭ ﺍﻭﻟـﻴﻦ ﻣﮑـﺎﻥ‬
‫ﻼ ﺁﮔـﺎﻫﻲ‬
‫ﻣﻬﻢ ﻫﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ‪ ،‬ﭘﺎﺳـﺦ ﺑـﻪ ﺍﻳـﻦ ﺳـﻪ ﺳـﺆﺍﻝ‪ ،‬ﮐـﻪ ﻣﺘﻘـﺎﺑ ﹰ‬
‫ﺭﺳﺎﻧﻨﺪﻩ )ﻭ ﺗﺤﻤﻴﻞ ﮐﻨﻨﺪﻩ( ﺍﺳﺖ‪ ،‬ﻳﮏ ﺍﺳـﺎﺱ ﺑـﺮﺍﻱ ﺑﻬﺒـﻮﺩ ﻣﻨﺎﺳـﺒﻲ ﺩﺭ‬
‫ﭘﻴﺶ ﺑﻴﻨﻲ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺆﻟﻔﻪﻫﺎﻱ ﺍﺳﻤﺒﻠﻲﻫﺎ ﻭ ﺍﻃﻤﻴﻨﺎﻥ ﺑـﻪ ﻣﺆﻟﻔـﻪﻫـﺎﻱ‬
‫ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﮐﻪ ﺍﻳﻦ ﺍﺳﻤﺒﻠﻲﻫﺎ ﺭﺍ ﺗـﺸﮑﻴﻞ ﻣـﻲﺩﻫﻨـﺪ‪ ،‬ﻓـﺮﺍﻫﻢ ﻣـﻲﺁﻭﺭﻧـﺪ‪.‬‬
‫ﻫﺮﭼﻨﺪ ﭘﺎﺳﺦ ﺑﻪ ﺍﻳﻦ ﺳﺆﺍﻻﺕ ﻳـﮏ ﻓﺮﺁﻳﻨـﺪ ﺩﺭ ﺣـﺎﻝ ﭘﻴـﺸﺮﻓﺖ‪ ،‬ﻣـﺪﺍﻭﻡ ﻭ‬
‫ﺍﻓﺰﺍﻳﺸﻲ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪ .‬ﻣﺪﻝﻫﺎﻱ ﭘﻴﺶ ﺑﻴﻨﻲ ﺟﺪﻳﺪ‪ ،‬ﻣﻌﻴﺎﺭﻫﺎﻱ ﺍﻧﺪﺍﺯﻩﮔﻴـﺮﻱ‬
‫ﺟﺪﻳﺪ ﻳﺎ ﺑﻬﺒﻮﺩ ﻳﺎﻓﺘﻪﺍﻱ ﻧﻴﺎﺯ ﺩﺍﺭﻧﺪ‪ ،‬ﮐﻪ ﺑﻪ ﭘﻴﺶ ﺑﻴﻨﻲﻫﺎﻱ ﺩﻗﻴﻖﺗﺮ‪ ،‬ﻣﺪﻝ‪-‬‬
‫ﻫﺎﻱ ﭘﻴﺶ ﺑﻴﻨﻲ ﺍﺿﺎﻓﻲ ﻳﺎ ﮐﺎﻣﻞﺗﺮ‪ ،‬ﻣﻌﻴﺎﺭﻫﺎﻱ ﺍﻧﺪﺍﺯﻩﮔﻴﺮﻱ ﺩﻗﻴﻖﺗﺮ ﻣﺆﻟﻔﻪ‪-‬‬
‫ﻫﺎ‪ ،‬ﻭ ﻣﺎﻧﻨﺪ ﺁﻥﻫﺎ ﺭﻫﻨﻤﻮﻥ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪ ‐۵‬ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ‬
‫ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ ﺷﺎﻣﻞ ﻳﮏ ﻣﺪﻝ ﻣﺆﻟﻔـﻪ ﻭ ﻳـﮏ ﻣـﺪﻝ‬
‫ﺗﺤﻠﻴﻞ ﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻥ ﺍﺳﺖ‪ .‬ﺑـﺴﻴﺎﺭﻱ ﺍﺯ ﺗﮑﻨﻴـﮏﻫـﺎﻱ ﺗﺤﻠﻴـﻞ‪ ،‬ﺍﺳـﺘﺪﻻﻝ‬
‫ﺩﺭﺑﺎﺭﻩﻱ ﺧﺼﻮﺻﻴﺎﺕ ﺑﺮﺁﻣﺪﻩ ﺍﺯ ﺍﺳـﻤﺒﻠﻲﻫـﺎ ﺭﺍ ﭘـﺸﺘﻴﺒﺎﻧﻲ ﻣـﻲﮐﻨـﺪ‪ .‬ﺍﻳـﻦ‬
‫ﺗﮑﻨﻴﮏﻫﺎ ﺑﺮ ﺭﻭﻱ ﻃﺮﺍﺣﻲ ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ‪ ،‬ﮐﻪ ﺩﺭ ﺷﮑﻞ )‪ (۲‬ﺑـﺎ ﮐﻤـﺎﻥ‬
‫ﭘﺎﻳﻴﻨﻲ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪ ،‬ﻳـﺎ ﻣـﺪﻝﻫـﺎﻱ ﺗﺤﻠﻴـﻞ ﮐـﻪ ﻣﻤﮑـﻦ ﺍﺳـﺖ‬
‫ﺳﺎﺧﺘﻪ ﻳﺎ ﺍﻗﺘﺒﺎﺱ ﺷﻮﻧﺪ‪ ،‬ﺑﺮﺍﻱ ﮐﺎﺭﺑﺮﺩﻫﺎﻳﻲ ﺑﺮﺍﻱ ﻣـﺪﻝﻫـﺎﻱ ﻣﺆﻟﻔـﻪﻫـﺎﻱ‬
‫ﺧﺎﺹ ﮐﻪ ﺗﻮﺳﻂ ﮐﻤﺎﻥ ﺑﺎﻻﻳﻲ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳـﺖ‪ ،‬ﺗـﺄﺛﻴﺮ ﻣـﻲﮔـﺬﺍﺭﺩ‪.‬‬
‫ﺭﻭﻳﮑﺮﺩ ‪ PECT‬ﻣﺒﺘﻨﻲ ﺑﺮ ﺩﻭ ﻓﺮﺽ ﺍﺳﺎﺳﻲ ﺍﺳﺖ‪ :‬ﺍﻭﻝ‪ ،‬ﺍﻳـﻦ ﮐـﻪ ﺻـﻔﺎﺕ‬
‫ﮐﻴﻔﻴﺘﻲ ﺳﻴﺴﺘﻢ‪ ،‬ﻫﻤﺎﻥ ﺧﺼﻮﺻﻴﺎﺕ ﺑﺮﺁﻣﺪﻩﺍﻱ ﻫﺴﺘﻨﺪ ﮐـﻪ ﺑـﻪ ﺍﻟﮕﻮﻫـﺎﻱ‬
‫ﺗﻌﺎﻣﻞ ﻣﻴﺎﻥ ﻣﺆﻟﻔﻪﻫﺎ‪ ،‬ﻣﺮﺑﻮﻁ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻭ ﺩﻭﻡ‪ ،‬ﺍﻳﻦﮐﻪ ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪﻫـﺎﻱ‬
‫ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﻳﮏ ﻣﻌﻨﺎ ﺍﺯ ﺍﻟﮕﻮﻫﺎﻱ ﺗﻌﺎﻣﻠﻲ ﻃﺮﺍﺣﻲ ﺷـﺪﻩ ﻭ ﺍﺯ ﭘـﻴﺶ ﺗﻌﺮﻳـﻒ‬
‫ﺷﺪﻩ ﻓﺮﺍﻫﻢ ﻣﻲﺁﻭﺭﺩ ﮐﻪ ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﻪﺩﺳﺖ ﺁﻭﺭﺩﻥ ﺻﻔﺎﺕ ﮐﻴﻔﻴﺘﻲ ﺳﻴـﺴﺘﻢ‬
‫ﺗﻮﺳﻂ ﺳﺎﺧﺘﺎﺭ ﺳﺎﺩﻩ ﻣﻲﺷﻮﺩ‪ .‬ﻫﻤﺎﻥﻃﻮﺭ ﮐـﻪ ﺩﺭ ﺑﺨـﺶ ﺍﺩﻏـﺎﻡ ﻣﺆﻟﻔـﻪﻫـﺎ‬
‫ﺑﺤﺚ ﺷﺪ‪ ،‬ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﻳﮏ ﻣﻌﻨﺎ ﺑـﺮﺍﻱ ﺳﻴـﺴﺘﻢﻫـﺎﻱ‬
‫ﺗﺮﮐﻴﺒﻲ ﺍﺯ ﻗﺴﻤﺖﻫﺎﻱ ﺍﺯ ﭘﻴﺶ ﮐﺎﻣﭙﺎﻳﻞ ﺷﺪﻩ ﻓﺮﺍﻫﻢ ﻣﻲﺁﻭﺭﻧﺪ‪.‬‬
‫ﺷﮑﻞ )‪ :(۲‬ﻓﻨﺎﻭﺭﻱﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ‬
‫ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ ﺑﺮﺍﻱ ﭘﺸﺘﻴﺒﺎﻧﻲ ﺍﺯ ﺍﺩﻏﺎﻡ ﻣﺆﻟﻔﻪﻫـﺎﻳﻲ ﮐـﻪ ﺩﺭ ﻣﺤﻴﻄـﻲ‬
‫ﺍﻳﺰﻭﻟﻪ ﻭ ﺷﺎﻳﺪ ﺩﺭ ﻣﺤﻴﻂﻫﺎ ﻭ ﺯﺑﺎﻥﻫـﺎﻱ ﻫﻤﮕـﻦ ﺍﻳﺠـﺎﺩ ﺷـﺪﻩﺍﻧـﺪ‪ ،‬ﺗﻮﻟﻴـﺪ‬
‫ﺷﺪﻧﺪ‪ .‬ﻓﺮﺽ ﺑﺮ ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﻳﮏ ﻣﺆﻟﻔـﻪ ﺍﺯ ﻃﺮﻳـﻖ ﻭﺍﺳـﻂﺍﺵ ﻭ ﺗﻤـﺎﻣﻲ‬
‫ﺍﻃﻼﻋﺎﺕ ﻻﺯﻡ ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻭ ﺍﺳﺘﻘﺮﺍﺭ ﺳﺮﻭﻳﺲﻫﺎﻳﺶ ﺷﻨﺎﺧﺘﻪ ﻣـﻲﺷـﻮﺩ‪.‬‬
‫‪٣٣‬‬
‫ﻫﺮﭼﻨﺪ ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫـﺎﻱ ﮐﻨـﻮﻧﻲ ﺍﺳـﺘﺪﻻﻝ ﺩﺭﺑـﺎﺭﻩﻱ ﺧـﺼﻮﺻﻴﺎﺕ‬
‫ﮐﻴﻔﻴﺘﻲ ﺑﺮﺁﻣـﺪﻩ ﺍﺯ ﺳﻴـﺴﺘﻢ )ﻣﺎﻧﻨـﺪ ﮐـﺎﺭﺍﻳﻲ‪ ،‬ﻗﺎﺑﻠﻴـﺖ ﺗﻐﻴﻴـﺮ‪ ،٣٤‬ﻗﺎﺑﻠﻴـﺖ‬
‫ﺍﻃﻤﻴﻨﺎﻥ‪ ،‬ﻭ ﺍﻳﻤﻨﻲ( ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻧﻤﻲ ﮐﻨﺪ‪ .‬ﺩﺭ ﻋﻮﺽ‪ ،‬ﻣﻬﻨﺪﺳﻴﻦ ﺑﺎﻳـﺪ ﺗـﺎ‬
‫ﺯﻣﺎﻥ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩﻥ ﻭ ﺍﺩﻏﺎﻡ ﮐﻞ ﺳﻴﺴﺘﻢ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﮏ ﻣﺤﮏ ﻭ ﻣﻌﻴـﺎﺭ‬
‫ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺍﻳﻦﮐﻪ ﺁﻳﺎ ﺳﻴﺴﺘﻢ ﺍﻫﺪﺍﻑ ﮐﻴﻔﻴﺘﻲ ﺧﻮﺩ ﺭﺍ ﺑﺮﺁﻭﺭﺩﻩ ﻣﻲ ﺳـﺎﺯﺩ‬
‫ﻳﺎ ﻧﻪ‪ ،‬ﻣﻨﺘﻈﺮ ﺑﻤﺎﻧﻨﺪ‪.‬‬
‫ﻣﻌﻤﺎﺭﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺧﺼﻮﺻﻴﺎﺕ ﮐﻴﻔﻴﺘﻲ‪ ،‬ﻳﮏ ﻣﻌﻨﺎ ﺑﺮﺍﻱ ﺗﺤﻠﻴـﻞ‬
‫ﻃﺮﺍﺣﻲﻫﺎﻱ ﺳﻴﺴﺘﻢ ﻓﺮﺍﻫﻢ ﻣﻲﺁﻭﺭﺩ‪ .‬ﺩﺭ ﻭﺍﻗﻊ‪ ،‬ﻓﺮﺽ ﺍﺻﻠﻲ ﻣﻌﻤﺎﺭﻱ ﻧـﺮﻡ‪-‬‬
‫ﺍﻓﺰﺍﺭ ﺍﻳﻦ ﺍﺳﺖ ﮐـﻪ ﺧـﺼﻮﺻﻴﺎﺕ ﺑﺮﺁﻣـﺪﻩ ‐ﻭ ﺗﻮﺍﻧـﺎﻳﻲ ﻣـﺎ ﺑـﺮﺍﻱ ﺍﺳـﺘﺪﻻﻝ‬
‫ﺩﺭﺑﺎﺭﻩﻱ ﺁﻥﻫﺎ‐ ﺑﻪ ﺍﻟﮕﻮﻫﺎﻱ ﺳﺎﺧﺘﺎﺭﻱ ﺧﺎﺹ ﻭ ﺗﮑﺮﺍﺭﻱ ﻣﺮﺑﻮﻁ ﻣﻲ ﺷـﻮﺩ‪.‬‬
‫ﺍﻟﮕﻮﻫﺎﻱ ﺳﺎﺧﺘﺎﺭﻱ ﺍﻏﻠﺐ ﺑﻪ ﻋﻨـﻮﺍﻥ ﺳـﺒﮏﻫـﺎﻱ ﻣﻌﻤـﺎﺭﻱ ﻣـﻮﺭﺩ ﺍﺭﺟـﺎﻉ‬
‫ﻫﺴﺘﻨﺪ‪ ،‬ﻭ ﻣﻌﻤﻮ ﹰﻻ ﻫﻢ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺠﻤﻮﻋﻪﻫﺎﻳﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎ ﻭ ﺍﻧﻮﺍﻉ ﺭﺍﺑﻂﻫـﺎ‬
‫ﻭ ﺍﻟﮕﻮﻫﺎﻱ ﻣﺠﺎﺯ ﺗﻌﺎﻣﻼﺗﺸﺎﻥ ﺗﻌﺮﻳﻒ ﻣـﻲﺷـﻮﻧﺪ‪ .‬ﺑﻨـﺎﺑﺮﺍﻳﻦ‪ ،‬ﻳـﮏ ﺷـﻴﻮﻩﻱ‬
‫ﻫﻤﮕﺎﻡﺳﺎﺯﻱ ﺧﻂ ﻟﻮﻟـﻪ ﺍﻱ ﻫﻤﺰﻣـﺎﻥ ﻣـﻲ ﺗﻮﺍﻧـﺪ ﺑـﺮﺍﻱ ﺳﻴـﺴﺘﻢﻫـﺎﻱ ﺑـﺎ‬
‫ﻧﻴﺎﺯﻣﻨﺪﻱ ﺗﺄﺧﻴﺮ‪ ٣٥‬ﺩﻗﻴﻖ ﻭ ﻏﻴﺮﻗﺎﺑﻞ ﺍﻓﺰﺍﻳﺶ ﻣﻨﺎﺳـﺐ ﺑﺎﺷـﺪ‪ ،‬ﭼﺮﺍﮐـﻪ ﺍﻳـﻦ‬
‫ﺷﻴﻮﻩ ﺗﺤﻠﻴﻞﻫﺎﻱ ﻧﺮﺥ ﻳﮑﻨﻮﺍﺧﺖ ‪ RMA‬ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﮐﻨـﺪ‪ .‬ﺍﺯ ﺳـﻮﻱ‬
‫ﺩﻳﮕﺮ‪ ،‬ﺳﺒﮏ ﺳﻪ ﻻﻳﻪﺍﻱ ﻫﻢ ﻣﻲﺗﻮﺍﻧﺪ ﺑﺮﺍﻱ ﺳﻴـﺴﺘﻢﻫـﺎﻳﻲ ﮐـﻪ ﺩﺭ ﺁﻥﻫـﺎ‬
‫ﺗﻐﻴﻴﺮﭘﺬﻳﺮﻱ ﻣﻨﻄﻖ ﮐﺎﺭ‪ ٣٦‬ﻣﻬﻢﺗﺮﻳﻦ ﺍﻫﻤﻴـﺖ ﺭﺍ ﺩﺍﺭﺍﺳـﺖ‪ ،‬ﻣﻨﺎﺳـﺐ ﺑﺎﺷـﺪ‪.‬‬
‫ﻫﺮﭼﻨﺪ‪ ،‬ﻣﻌﻤﺎﺭﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ‪ ،‬ﻫﻨﻮﺯ ﺗﺄﺛﻴﺮ ﻓﺎﺑﻞ ﺗﻮﺟﻬﻲ ﺭﻭﻱ ﺗﮑﻨﻮﻟﻮﮊﻱ ﻣﺆﻟﻔﻪ‬
‫ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﻧﺪﺍﺭﺩ‪.‬‬
‫ﻫﺪﻑ ﮐﺎﺭ ﻣﺎ ﺍﻳﻦ ﺍﺳﺖ ﮐﻪ ﻧﺸﺎﻥ ﺑﺪﻫﻴﻢ‪ ،‬ﭼﮕﻮﻧﻪ ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪﻫﺎ ﻣﻲﺗﻮﺍﻧﺪ‬
‫ﺑﺮﺍﻱ ﭘﺸﺘﻴﺒﺎﻧﻲ ﺍﺳﺘﺪﻻﻝ ﺗﺮﮐﻴﺒﻲ ﮔﺴﺘﺮﺵ ﻭ ﺗﻮﺳﻌﻪ ﻳﺎﺑﺪ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﮐـﺎﺭ‪،‬‬
‫‪ PECT‬ﺍﻳﺪﻩﻫﺎﻳﻲ ﺭﺍ ﺍﺯ ﺗﺤﻘﻴﻘﺎﺕ ﺩﺭ ﺣﻴﻄﻪﻱ ﻣﻌﻤـﺎﺭﻱ ﻧـﺮﻡﺍﻓـﺰﺍﺭ‪ ،‬ﺗﺄﻳﻴـﺪ‬
‫ﻣﺆﻟﻔﻪ‪ ،‬ﻭ ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﮔﺮﺩ ﻫـﻢ ﻣـﻲﺁﻭﺭﺩ‪ .‬ﺍﻳـﺪﻩﻫـﺎﻱ ﺗﺤﻠﻴـﻞ‬
‫ﻣﻌﻤﺎﺭﻱ ﻣﺒﻨﺎ‪ ،‬ﺗﺄﻳﻴﺪ ﻣﺆﻟﻔﻪ‪ ،‬ﻭ ﺷﻴﻮﻩﻱ ﻣﻌﻤﺎﺭﻱ ﺟﺪﻳﺪ ﻭ ﻧـﻮ ﻧﻴـﺴﺘﻨﺪ ﻭﻟـﻲ‬
‫ﮔﺮﺩﺁﻭﺭﻱﺷﺎﻥ ﭼﺮﺍ‪.‬‬
‫‪ ‐۶‬ﺗﺤﻠﻴﻞ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﻌﻤﺎﺭﻱ‬
‫ﺗﺤﻠﻴﻞ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﻌﻤﺎﺭﻱ ﻧﺮﻡﺍﻓـﺰﺍﺭ ﻳـﮏ ﭘﺎﻳـﻪ ﻭ ﺍﺳـﺎﺱ ﺑـﺮﺍﻱ ﺍﺳـﺘﺪﻻﻝ‬
‫ﺩﺭﺑﺎﺭﻩﻱ ﮐﺎﻣﻞ ﺑﻮﺩﻥ‪ ٣٧‬ﻭ ﺩﺭﺳﺘﻲ‪ ٣٨‬ﺳﻴﺴﺘﻢ ﺩﺭ ﺍﻭﺍﻳﻞ ﻓﺮﺁﻳﻨـﺪ ﺗﻮﻟﻴـﺪ ﻭ ﺩﺭ‬
‫ﺳﻄﺢ ﺑﺎﻻﻳﻲ ﺍﺯ ﺗﺠﺮﺩ ﻓﺮﺍﻫﻢ ﻣﻲﺁﻭﺭﺩ‪ .‬ﻫﻢﺍﮐﻨﻮﻥ ﺗﺤﻘﻴـﻖ ﺩﺭ ﺍﻳـﻦ ﺣﻴﻄـﻪ‪،‬‬
‫ﺍﺳﺎﺳ ﹰﺎ ﺑﺮ ﺭﻭﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ADL‬ﻫﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﺯﻳﺮﻻﻳﻪﺍﻱ ﺑـﺮﺍﻱ ﺍﻟﮕـﻮﺭﻳﺘﻢ‪-‬‬
‫ﻫﺎﻱ ﺗﺤﻠﻴﻞ ﺗﻤﺮﮐﺰ ﺩﺍﺭﺩ‪ .‬ﺍﻟﮕﻮﺭﻳﺘﻢﻫﺎﻱ ﺗﺤﻠﻴﻠﻲ ﮐـﻪ ﺑـﺮﺍﻱ ﺍﻳـﻦ ﺯﺑـﺎﻥﻫـﺎ‬
‫ﺗﻮﻟﻴﺪ ﺷـﺪﻩﺍﻧـﺪ‪ ،‬ﺑـﻪﺻـﻮﺭﺕ ﮐﻠـﻲ ﺑـﺮ ﺭﻭﻱ ﺧـﺼﻮﺻﻴﺎﺕ ﺩﺭﺳـﺘﻲ ﻣﺎﻧﻨـﺪ‬
‫‪ liveness‬ﻭ ‪ safety‬ﺗﻤﺮﮐﺰ ﺩﺍﺭﻧﺪ‪ .‬ﻫﺮﭼﻨﺪ‪ ،‬ﺍﻧﻮﺍﻉ ﺩﻳﮕﺮ ﺗﺤﻠﻴﻞ ﻫـﻢ ﺑـﺮﺍﻱ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﺳﻄﺢ ﻣﻌﻤﺎﺭﻱ ﻣﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ ﻭ ﻫﻢﺍﮐﻨﻮﻥ ﻫﻢ ﻣﺮﮐـﺰ ﺍﺻـﻠﻲ‬
‫ﺗﻮﺟﻪ ﭘﺮﻭﮊﻩﻫﺎﻱ ﺗﺤﻘﻴﻘﺎﺗﻲ ﻣﻲﺑﺎﺷﻨﺪ‪ .‬ﺑﻪﻋﻨـﻮﺍﻥ ﻣﺜـﺎﻝ ﻣـﻲﺗـﻮﺍﻥ ﺍﺯ ﺩﺭﮎ‬
‫ﺳﻴﺴﺘﻢ‪ ،٣٩‬ﺗﺤﻠﻴﻞ ﮐﺎﺭﺍﻳﻲ‪ ،٤٠‬ﻭ ﺗﺴﺖ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﻌﻤﺎﺭﻱ‪ ٤١‬ﻧﺎﻡ ﺑﺮﺩ‪.‬‬
‫ﻫﻢﭼﻨﺎﻥ ﻳﮏ ﭼﺎﻟﺶ ﺣﻞ ﻧـﺸﺪﻩ ﺩﺭ ﻓﻨـﺎﻭﺭﻱ ﻣﻌﻤـﺎﺭﻱ‪ ،‬ﺍﻳﺠـﺎﺩ ﭘـﻞ ﺭﻭﻱ‬
‫ﻓﺎﺻﻠﻪﻱ ﻣﻴﺎﻥ ﺍﻧﺘﺰﺍﻉ ﻣﻌﻤـﺎﺭﻱ ﻭ ﭘﻴـﺎﺩﻩ ﺳـﺎﺯﻱ ﺍﺳـﺖ‪ .‬ﺑﻬﺒـﻮﺩ ﻭ ﭘـﺎﻻﻳﺶ‬
‫ﺗﻮﺻﻴﻒ‪ ،‬ﻳﮑﻲ ﺍﺯ ﺭﻭﻳﮑﺮﺩﻫﺎﻳﻲ ﺍﺳﺖ ﮐﻪ ﺍﺛﺒﺎﺕ ﺧـﺼﻮﺻﻴﺎﺕ ﺍﺭﺗﺒـﺎﻁ ﻣﻴـﺎﻥ‬
‫ﺍﻧﺘﺰﺍﻉ ﻭ ﺗﻮﺻﻴﻔﺎﺕ ﺩﻗﻴﻖﺗﺮ‪ ،‬ﺩﺭ ﻧﻮﺷﺘﺎﺭ ﻫﻤﮕﻦ ﻳﺎ ﻏﻴﺮﻫﻤﮕﻦ ﺭﺍ ﺩﻧﺒﺎﻝ ﻣﻲ‪-‬‬
‫ﮐﻨﺪ‪ .‬ﻣﺤﻘﻘﻴﻦ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﺩﺭ ﺣﺎﻝ ﮐﺎﻭﺵ ﺑـﺮﺍﻱ ﻳـﮏ ﺭﻭﻳﮑـﺮﺩ ﺍﺛﺒـﺎﺕ‬
‫ﺧﺼﻮﺻﻴﺎﺕ ﺗﻮﺻﻴﻔﺎﺕ ﻋﻴﻨﻲ‪ ٤٢‬ﻳﺎ ﻣﺪﻝﻫﺎﻱ ﺳﺎﺯﻧﺪﻩﺍﻱ ﻫﺴﺘﻴﻢ ﮐـﻪ ﺩﺭﮔﻴـﺮ‬
‫ﺗﻌﻴﻴﻦ ﻭ ﺗﻌﺮﻳﻒ ﻧﮕﺎﺷـﺖﻫـﺎﻳﻲ ﻣﻴـﺎﻥ ﻣـﺪﻝﻫـﺎﻱ ﺗﺤﻠﻴـﻞ ﻭ ﻣـﺪﻝ ﻫـﺎﻱ‬
‫ﺳﺎﺯﻧﺪﻩ‪ ٤٣‬ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪﺍﻱ ﻗﺎﺑﻞ ﺍﺳـﺘﺪﻻﻝ ﺑﺎﺷـﺪ‪ .‬ﻣـﺪﻝﻫـﺎﻱ‬
‫ﺗﺤﻠﻴﻠﻲ‪ ،‬ﺍﺻﻮﻝ ﻭ ﻣﺒﻨﺎﻱ ﺗﮑﻨﻴﮏﻫﺎﻱ ﺍﺳﺘﺪﻻﻝ ﺗﺮﮐﻴﺒﻲ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﻣـﻲ‐‬
‫ﺁﻭﺭﺩ‪.‬‬
‫‪ ‐۷‬ﺗﺄﻳﻴﺪ ﻣﺆﻟﻔﻪ ﻫﺎ‬
‫ﺁﮊﺍﻧﺲ ﺍﻣﻨﻴﺖ ﻣﻠﻲ )‪ (٤٤NSA‬ﻭ ﻣﺆﺳﺴﻪﻱ ﻣﻠﻲ ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎ ﻭ ﻓﻨﺎﻭﺭﻱﻫـﺎ‬
‫)‪ (٤٥NIST‬ﻣﻌﻴﺎﺭﻫـــﺎﻱ ﺍﺭﺯﻳـ ـﺎﺑﻲ ﺍﻣﻨﻴﺘـ ـﻲ ﻣـــﻮﺭﺩ ﺍﻋﺘﻤـــﺎﺩ ﮐـــﺎﻣﭙﻴﻮﺗﺮ‬
‫)‪ a.k.a ،(٤٦TCSEC‬ﻭ ‪ Orange Book‬ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﭘﺎﻳﻪ ﻭ ﺍﺳﺎﺳﻲ ﺑﺮﺍﻱ‬
‫ﻣﻌﻴﺎﺭﻫﺎﻱ ﻣﺘﻌﺎﺭﻑ ﻭ ﻣﺸﺘﺮﮎ‪ ،‬ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﺩﺍﺩﻧﺪ‪ ،‬ﮐﻪ ﻣﻌﻴﺎﺭﻫـﺎﻳﻲ‬
‫ﺭﺍ ﺑﺮﺍﻱ ﺗﺄﻳﻴﺪ ﺧﺼﺎﻳﺺ ﺍﻣﻨﻴﺘﻲ ﻣﺆﻟﻔﻪﻫﺎ ﺗﻌﺮﻳﻒ ﻣﻲﮐﻨﺪ‪ .‬ﺗﻼﺵﻫﺎﻱ ﺁﻥﻫـﺎ‬
‫ﺑﻪ ﻣﻮﻓﻘﻴﺘﻲ ﺩﺳﺖ ﻧﻴﺎﻓـﺖ‪ ،‬ﺣـﺪﺍﻗﻞ ﺩﺭ ﺍﻳـﻦ ﻗـﺴﻤﺖ‪ ،‬ﭼﺮﺍﮐـﻪ ﺍﻳـﻦ ﻫـﻴﭻ‬
‫ﻣﻌﻨﺎﻳﻲ ﺑﺮﺍﻱ ﻣﻌﻴﺎﺭﻫـﺎﻱ ﺗﺮﮐﻴـﺐ )ﺧـﺼﺎﻳﺺ( ﺩﺭ ﮐـﻼﺱﻫـﺎﻱ ﻣﺆﻟﻔـﻪﻫـﺎ‬
‫ﺗﻌﺮﻳﻒ ﻧﻤﻲﮐﺮﺩ‪.‬‬
‫‪٤٧‬‬
‫ﻣﺆﻟﻔﻪﻫﺎﻱ ﻣﻮﺭﺩ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺑﺘﺪﺍﻳﻲ )‪ ( TCI‬ﻳﮏ ﻭﺍﺑـﺴﺘﮕﻲ ﺳـﺴﺖ ﻣﻴـﺎﻥ‬
‫ﻣﺤﻘﻘﻴﻦ ﺑﺎ ﻳﮏ ﻣﻴﺮﺍﺙ ﻣﺸﺘﺮﮎ ﺍﺯ ﺗﺠﺮﺑﻴﺎﺕ ﺩﺭ ﻣﺸﺨﺼﺎﺕ ﺭﺳﻤﻲ ﻭﺍﺳﻂ‪-‬‬
‫ﻫﺎ ﺍﺳﺖ‪ .‬ﻧﻤﺎﻳﻨﺪﻩ ‪ TCI‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺷﺮﺍﻳﻂ ﭘﻴـﺸﻴﻦ‪/‬ﭘـﺴﻴﻦ ﺭﻭﻱ ‪API‬ﻫـﺎ‬
‫ﺍﺳﺖ‪ .‬ﺻﻔﺎﺕ ﮐﻴﻔﻴﺘﻲ‪ ،‬ﻣﺎﻧﻨﺪ ﺍﻣﻨﻴﺖ‪ ،‬ﮐـﺎﺭﺍﻳﻲ‪ ،‬ﺩﺳـﺘﺮﺱﭘـﺬﻳﺮﻱ‪ ،‬ﻭ ﻣﺎﻧﻨـﺪ‬
‫ﺁﻥﻫﺎ ﻓﺮﺍﺗﺮ ﺍﺯ ﺩﺳـﺘﺮﺱ ﭼﻨـﻴﻦ ﺯﺑـﺎﻥﻫـﺎﻳﻲ ﺍﺳـﺖ‪ .‬ﭘـﺲ ﺍﺯ ﺁﻥ ‪ Voas‬ﻭ‬
‫‪ Payne‬ﻣﺪﻝﻫﺎﻱ ﺭﻳﺎﺿﻲ ﺳﺨﺘﻲ ﺍﺯ ﻗﺎﺑﻠﻴﺖ ﺍﻃﻤﻴﻨﺎﻥ ﻣﺆﻟﻔـﻪﻫـﺎ ﺑﺮﺍﺳـﺎﺱ‬
‫ﺭﻭﻳﮑﺮﺩﻫﺎﻱ ﺁﻣﺎﺭﻱ ﺑﺮﺍﻱ ﺁﺯﻣﺎﻳﺶ ﻭ ﺗﺴﺖ ﺁﻥﻫﺎ ﺗﻌﺮﻳﻒ ﮐﺮﺩﻧﺪ‪ ،‬ﻭﻟﻲ ﻫﻨـﻮﺯ‬
‫ﻣﺪﻝﻫﺎﻳﻲ ﺑﺮﺍﻱ ﺍﻧﺪﺍﺯﻩﮔﻴﺮﻱ ﻗﺎﺑﻠﻴﺖ ﺍﻃﻤﻴﻨﺎﻥ ﺗﺮﮐﻴﺐ ﮐﺮﺩﻥ‪ ،‬ﺗﻌﺮﻳﻒ ﻧﺸﺪﻩ‬
‫ﺍﺳﺖ‪.‬‬
‫ﻓﺮﻭﺷﻨﺪﮔﺎﻥ ﻣﺆﻟﻔﻪﻫﺎﻱ ﺗﺠﺎﺭﻱ ﺑﻪ ﺗﻌﺮﻳـﻒ ﻭ ﺗﻌﻴـﻴﻦ ﻓﺮﻣـﺎﻝ ﻭﺍﺳـﻂﻫـﺎﻱ‬
‫ﻣﺆﻟﻔﻪﻫﺎﻳﺸﺎﻥ ﻣﺘﻤﺎﻳﻞ ﺷﺪﻩ ﺍﻧﺪ‪ ،‬ﻭ ﺍﻳﻦ ﺧﻴﻠﻲ ﻣﻬﻢ ﻧﻴﺴﺖ ﮐﻪ ﺑﺎﻳﺪ ﺍﻫﻤﻴـﺖ‬
‫ﻣﺎﻟﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺗﺎ ﺍﻳﻦ ﮐﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﻨﺪ‪ .‬ﺩﺭ ﺍﻳﻦ ﻣـﻮﺭﺩ‪ Shaw ،‬ﮔﻔﺘـﻪ‬
‫ﺍﺳﺖ ﮐﻪ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺧﺼﺎﻳﺺ ﻣﺆﻟﻔﻪﻫﺎﻱ ﺗﺠﺎﺭﻱ ﺗﻨﻬـﺎ ﺩﺭ ﺯﻣـﺎﻥ ﺍﺳـﺘﻔﺎﺩﻩ‬
‫ﻣﺸﺨﺺ ﻭ ﻣﻌﻠﻮﻡ ﻣﻲﺷﻮﻧﺪ‪ .‬ﺳﭙﺲ ﺍﻭ ﺍﻋﺘﺒﺎﺭﻧﺎﻣﻪﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ‪ ٤٨‬ﺭﺍ ﺑﻪﻋﻨﻮﺍﻥ‬
‫ﻳﮏ ﺗﻮﺻﻴﻒ ﻭﺍﺳﻂ ﻣﺒﺘﻨﻲ ﺑﺮ ﺧﺼﻮﺻﻴﺖ‪ ٤٩‬ﻭ ﺑﻲ ﭘﺎﻳـﺎﻥ‪ ٥٠‬ﭘﻴـﺸﻨﻬﺎﺩ ﻣـﻲ‪-‬‬
‫ﺩﻫــﺪ‪ .‬ﻳ ـﮏ ﺍﻋﺘﺒﺎﺭﻧﺎﻣــﻪ‪ ،‬ﻳ ـﮏ ﺳــﻪ ﺗــﺎﻳﻲ ﺍﺳــﺖ ) ‪attribute, value,‬‬
‫‪ (knowledge‬ﮐﻪ ﺑﻴﺎﻥ ﻣﻲﮐﻨﺪ ﮐﻪ ﻣﺆﻟﻔـﻪ‪ ،‬ﻳـﮏ ﺻـﻔﺖ ﺑـﺎ ﻳـﮏ ﻣﻘـﺪﺍﺭ‬
‫ﻣﺸﺨﺺ ﺩﺍﺭﺩ ﻭ ﺍﻳﻦ ﻣﻘﺪﺍﺭ ﺑﻪ ﻃﻮﺭ ﺧﺎﺻﻲ ﻣﻌﻨﺎ ﻣﻲﻳﺎﺑﺪ‪ .‬ﺍﻋﺘﺒﺎﺭﻧﺎﻣﻪﻫﺎ‪ ،‬ﻧﻴﺎﺯ‬
‫ﺑﻪ ﺣﻞ ﻣﺸﮑﻞ ﭘﻴﭽﻴﺪﮔﻲ ﻣﺆﻟﻔﻪ‪ ،‬ﺩﺍﻧـﺶ ﻧﺎﮐﺎﻣـﻞ‪ ،‬ﻭ ﺳـﻄﻮﺡ ﺍﻋﺘﻤـﺎﺩ ﮐـﻪ‬
‫ﺩﺭﺑﺎﺭﻩﻱ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺆﻟﻔﻪ ﺷﻨﺎﺧﺘﻪ ﺷـﺪﻩ ﺍﺳـﺖ‪ ،‬ﻭﻟـﻲ ﻓﺮﺍﺗـﺮ ﺍﺯ ﻣﻔـﺎﻫﻴﻢ‬
‫ﻧﻮﺷﺘﺎﺭﻱ ﻧﻤﻲﺭﻭﺩ‪ ،‬ﺭﺍ ﻣﻨﻌﮑﺲ ﻣﻲﮐﻨﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ‪ ،‬ﻋﻠـﻲﺭﻏـﻢ ﺗـﻼﺵ ﻫـﺎﻱ‬
‫ﺑﺴﻴﺎﺭ‪ ،‬ﺳﺆﺍﻻﺕ ﺍﺳﺎﺳﻲ ﺑﻲ ﭘﺎﺳﺦ ﻣﺎﻧﺪﻩ ﺍﻧﺪ‪ .‬ﺍﻃﻤﻴﻨﺎﻥ ﺑﻪ ﻳﮏ ﻣﺆﻟﻔﻪ ﻳﻌﻨـﻲ‬
‫ﭼﻪ‪ ،‬ﺣﺘﻲ ﺍﺻﻮﻝ ﺑﻴﺸﺘﺮﻱ ﻣﺜﻞ‪ :‬ﺩﺭ ﻧﻬﺎﺑﺖ ﺑﺎ ﺗﺄﻳﻴﺪ ﻳﺎ ﺍﻳﺠـﺎﺩ ﺍﻃﻤﻴﻨـﺎﻥ ﺩﺭ‬
‫ﺍﻳﻦ ﺧﺼﻮﺻﻴﺎﺕ ﭼﻪ ﻣﻲﺷﻮﺩ؟‬
‫‪ ‐۸‬ﺳﺒﮏﻫﺎﻱ ﻣﻌﻤﺎﺭﻱ ﻭ ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ‬
‫ﺳﺒﮏﻫﺎﻱ ﻣﻌﻤﺎﺭﻱ ﻣﺠﻤﻮﻋﻪﻫﺎﻳﻲ ﺍﺯ ﺍﻧﻮﺍﻉ ﻣﺆﻟﻔﻪﻫﺎ ﻫـﺴﺘﻨﺪ‪ .‬ﻣﺤـﺪﻭﺩﻳﺖ‪-‬‬
‫ﻫﺎﻳﻲ ﺑﺮ ﺭﻭﻱ ﺍﻳﻦﮐﻪ ﭼﮕﻮﻧﻪ ﻧﻤﻮﻧﻪﺳﺎﺯﻱ ﺍﻳﻦ ﺍﻧﻮﺍﻉ ﻣﻲﺗﻮﺍﻧـﺪ ﺑـﻪ ﻳﮑـﺪﻳﮕﺮ‬
‫ﺍﺗﺼﺎﻝ ﻳﺎﺑﺪ‪ .‬ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪﻫﺎ‪ ،‬ﺗﺤﻘﻖ ﻗﻴﻮﺩ ﺳﺒﮏﻫﺎﻱ ﻣﻌﻤﺎﺭﻱ ﺩﺭ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ﻼ ﺗﺎﺑﻊ ﺗﻔـﺴﻴﺮ‬
‫ﺭﺍ ﻣﻌﻨﺎ ﻣﻲﺑﺨﺸﺪ ﻭ ﺩﺭ ﺣﻘﻴﻘﺖ ﻣﻔﻬﻮﻡ ﺳﺒﮏ ﻣﻌﻤﺎﺭﻱ ﮐﺎﻣ ﹰ‬
‫ﻣﺆﻟﻔﻪ ﻣﺒﻨﺎ‪ ٥١‬ﺍﺳﺖ‪ .‬ﺩﺭ ﺩﻳﺪﮔﺎﻩ ﻣﻄﺮﺡ ﺷﺪﻩ‪ ،‬ﻳﮏ ﻣﺪﻝ ﻣﺆﻟﻔﻪ ﻣـﻲﺗﻮﺍﻧـﺪ ﺩﺭ‬
‫ﺗﺮﮐﻴﺐ ﺍﺳﻤﺒﻠﻲ ﻫﻢ ﻧﻘﺸﻲ ﻣﺎﻧﻨـﺪ ﻧﻘـﺸﻲ ﮐـﻪ ﺯﺑـﺎﻥﻫـﺎﻱ ﺑﺮﻧﺎﻣـﻪﻧﻮﻳـﺴﻲ‬
‫ﺳﺎﺧﺘﺎﺭﻳﺎﻓﺘﻪ ﻭ ﮐﺎﻣﭙﺎﻳﻠﺮﻫﺎ ﺩﺭ ﺯﺑﺎﻥﻫﺎﻱ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺍﻣﺮﻱ‪ ٥٢‬ﺑﺎﺯﻱ ﮐﺮﺩﻧﺪ‪،‬‬
‫ﮐﻪ ﺁﺯﺍﺩﻱ ﻃﺮﺍﺡ ﻳﺎ ﺑﺮﻧﺎﻣـﻪ ﻧـﻮﻳﺲ ﺭﺍ ﻣﺤـﺪﻭﺩ ﻣـﻲ ﮐﻨـﺪ‪ ،‬ﺩﺍﺷـﺘﻪ ﺑﺎﺷـﺪ‪،‬‬
‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻳﺎ ﻃﺮﺍﺣﻲ ﻧﺘﻴﺠﻪ ﺷﺪﻩ ﺭﺍﺣﺖﺗﺮ ﻗﺎﺑﻞ ﺗﺤﻠﻴﻞ ﺍﺳﺖ‪.‬‬
‫ﺩﺭ ﻣﻴﺎﻥ ﻣﺜﺎﻝﻫﺎﻱ ﻣﻤﮑﻦ ﺯﻳﺎﺩ‪ ،‬ﺗﻌﺮﻳﻒ ﻣﺸﺨﺼﺎﺕ ‪ EJB‬ﺍﻧﻮﺍﻉ ﻣﺆﻟﻔﻪﻫـﺎ ﺭﺍ‬
‫ﺗﻌﺮﻳﻒ ﻣﻲﮐﻨﺪ‪ ،‬ﻣﺎﻧﻨﺪ ‪ session‬ﻭ ‪ ،entity beans‬ﻭ ﻗﻴﻮﺩﻱ ﺭﻭﻱ ﺁﻥﮐـﻪ‬
‫ﭼﮕﻮﻧﻪ ﺁﻥﻫﺎ ﺑـﺎ ﻳﮑـﺪﻳﮕﺮ‪ ،‬ﺑـﺎ ﺑﺮﻧﺎﻣـﻪﻫـﺎﻱ ﻣـﺸﺘﺮﻱ‪ ،‬ﻭ ﺑـﺎ ﻣﺤـﻴﻂ ﺯﻣـﺎﻥ‬
‫ﺍﺟﺮﺍﻳﺸﺎﻥ ﺗﻌﺎﻣﻞ ﻭ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺭﻧﺪ‪.‬‬
‫ﻓﻨﺎﻭﺭﻱﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑـﻞ ﭘـﻴﺶ ﺑﻴﻨـﻲ ﺍﺭﺗﺒـﺎﻁ ﻣﻴـﺎﻥ ﻣﺤﺪﻭﺩﺳـﺎﺯﻱ‬
‫ﺳﺎﺧﺘﺎﺭﻱ ﻭ ﻣﻔﺮﻭﺿﺎﺕ ﻣﺪﻝﻫﺎﻱ ﺗﺤﻠﻴـﻞ ﺑـﺮﺍﻱ ﻣﺤﺎﺳـﺒﻪﻱ ﺧـﺼﻮﺻﻴﺎﺕ‬
‫ﺍﺳﻤﺒﻠﻲﻫﺎ ﺑﺮﺍﺳـﺎﺱ ﺧـﺼﻮﺻﻴﺎﺕ ﻣـﻮﺭﺩ ﺍﻃﻤﻴﻨـﺎﻥ ﺍﺳـﻤﺒﻠﻲﻫـﺎﻱ ﺷـﺎﻣﻞ‬
‫ﻣﺆﻟﻔﻪﻫﺎ ﺭﺍ ﺍﺳﺘﺨﺮﺍﺝ ﻣﻲ ﮐﻨﺪ‪.‬‬
‫‪ ‐۹‬ﻧﺘﻴﺠﻪ‬
‫ﺩﺭ ﻧﻬﺎﻳﺖ ﺑﺎﻳﺪ ﮔﻔﺖ‪ ،‬ﺍﺩﻏﺎﻡ ﻭ ﺗﺮﮐﻴﺐ ﻣﺆﻟﻔﻪﻫـﺎ ﻣﺘـﺮﺍﺩﻑ ﻧﻴـﺴﺘﻨﺪ‪ .‬ﺍﺩﻏـﺎﻡ‬
‫ﻣﺆﻟﻔﻪﻫﺎ ﻳﮏ ﻓﺮﺁﻳﻨﺪ ﻣﮑﺎﻧﻴﮑﻲ ﺍﺯ ﺍﺗﺼﺎﻝ ﻣﺆﻟﻔـﻪﻫـﺎ ﺑـﻪ ﻳﮑـﺪﻳﮕﺮ ﺍﺳـﺖ‪ ،‬ﺩﺭ‬
‫ﺣﺎﻟﻲ ﮐﻪ ﺗﺮﮐﻴﺐ ﻳﮏ ﻗﺪﻡ ﺟﻠﻮﺗﺮ ﺭﻓﺘﻪ ﻭ ﺍﻃﻤﻴﻨﺎﻥ ﻣﻲﺩﻫﺪ ﮐﻪ ﺍﺳـﻤﺒﻠﻲ‪-‬‬
‫ﻫﺎﻱ ﺣﺎﺻﻞ ﺧﻮﺩ ﻣﻲﺗﻮﺍﻧﻨﺪ ﺑﻪﻋﻨﻮﺍﻥ ﻳﮏ ﻣﺆﻟﻔﻪ ﺩﺭ ﻳﮏ ﺍﺳﻤﺒﻠﻲ ﺑﺰﺭﮒﺗـﺮ‬
‫ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ‪ .‬ﻳﮏ ﻣﻮﺭﺩ ﺟﺪﻳﺪ ﺑﺮﺍﻱ ﺳﺎﺧﺘﻦ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺆﻟﻔﻪ‬
‫ﻣﺒﻨﺎ‪ ،‬ﭘﺪﻳﺪﺍﺭ ﺷﺪﻥ ﻓﺮﺿﻴﺎﺗﻲ ﺑﺮﺍﻱ ﭘﺸﺘﻴﺒﺎﻧﻲ ﺍﺯ ﺳﺎﺧﺘﻦ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺩﺭﺳـﺖ‬
‫ﺍﺯ ﻣﺆﻟﻔﻪ ﻫﺎ ﺩﺭ ﺍﻭﻟﻴﻦ ﺗﻼﺵ ﻭ ﺑﻪﻣﻮﻗﻊ ﺍﺳﺖ‪ .‬ﻣﺤﻘﻘﻴﻦ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿـﺮ ﺩﺭ‬
‫ﺣﺎﻝ ﺗﻮﻟﻴﺪ ﻳﮏ ﻣﺪﻝ ﺑﺮﺍﻱ ﻓﻨﺎﻭﺭﻱ ﻣﺆﻟﻔﻪﻫـﺎﻱ ﻗﺎﺑـﻞ ﭘـﻴﺶ ﺑﻴﻨـﻲ ﺑـﺮﺍﻱ‬
29
Decompression of Transmitted Data
30
Conflict
31
Expressiveness
32
Rigorous
33
Attribute
34
Modifiability
35
Latency
36
Business Logic
37
Completeness
38
Correctness
39
System Understanding
40
Performance Analysis
41
Architecture-based Testing
42
Concrete Specification
43
Constructive Models
44
National Security Agency
45
National Institute of Standards
and Technology
46
Trusted Computer Security Evaluation
Criteria
47
Trusted Components Initiative
48
Component Credentials
49
Property-based Interface
50
Open-ended
51
Component-based Interpretation
52
imperative programming
‫ ﺗﮑﻨﻮﻟﻮﮊﻱﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎﻱ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨـﻲ‬.‫ﺭﺳﻴﺪﻥ ﺑﻪ ﺍﻳﻦ ﻫﺪﻑ ﻫﺴﺘﻨﺪ‬
،‫ ﺗﺄﻳﻴﺪ ﻣﺆﻟﻔﻪﻫﺎ‬،‫ﺗﺤﻘﻴﻘﺎﺕ ﺩﺭ ﺯﻣﻴﻨﻪﻫﺎﻱ ﺗﺤﻠﻴﻞ ﺑﺮﺍﺳﺎﺱ ﻣﻌﻤﺎﺭﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ﻭ ﺳﺒﮏﻫﺎﻱ ﻣﻌﻤﺎﺭﻱ ﺭﺍ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﻣﺪﻝﻫﺎﻱ ﻣﺆﻟﻔﻪﻫﺎ ﮐﻪ ﺑﺮﺍﻱ ﭘﺸﺘﻴﺒﺎﻧﻲ‬
‫ﺍﺯ ﺍﺳﺘﺪﻻﻝ ﺩﺭﺑﺎﺭﻩﻱ ﺧﺼﻮﺻﻴﺎﺕ ﻋﻤﻠﻴﺎﺗﻲ ﻭ ﻓـﺮﺍ ﻋﻤﻠﻴـﺎﺗﻲ ﺳﻴـﺴﺘﻢﻫـﺎﻱ‬
-‫ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ‬،‫ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﺗﺮﮐﻴﺒﻲ ﺍﺯ ﻣﺆﻟﻔﻪﻫﺎ ﺭﺍ ﻣﻮﺭﺩ ﺑﺮﺭﺳﻲ ﻗﺮﺍﺭ ﻣﻲﺩﻫﺪ‬
.‫ﮐﻨﻨﺪ‬
‫ﻣﺮﺍﺟﻊ‬
[1] Crnkovic I., Larsson M., Building Reliable ComponentBased Software Systems, Artech House, London, 2002.
[2] Shaw M., Garlan D., Software Architecture: Perspectives
on an Emerging Discipline, Upper Saddle River,
Prentice-Hall, 1996.
[3] Garlan D., Allen R., Ockerbloom J., "Architectural
Mismatch: Why Reuse Is so Hard", IEEE Software, Vol.
12, No. 6, pp. 17-26, 1995.
[4] Inverardi P., Wolf A.L., Yankelevich D., “Static
Checking of System Behaviors Using Derived Component
Assumptions”, ACM Trans. on Software Engineering,
Vol. 9, No. 3, pp. 238-272, 2000.
[5] Crnkovic, I., et al.,(editors), 4th ICSE Workshop on
Component-Based Software Engineering: Component
Certification and System Prediction, Software
Engineering Notes, Vol. 26, No. 6, 2001.
‫ﺯﻳﺮﻧﻮﻳﺲﻫﺎ‬
1
Assembly
Emergent
3
Signature
4
Supplementary
5
Exception Thrown
6
Predictable Assembly from Certifiable Components
7
Prediction-enabled Component Technology
8
Wiring
9
Adaptor
10
Automated Endoscopic System for Optimal
Positioning
11
Event-based Communication Mechanisms
12
Reverse Engineering
13
Modification
14
Wrapping of the Components
15
Prototyping
16
Tweaking
17
Mismatch
18
Structural
19
The Nature of Components
20
Infrastructure
21
The Nature of Connectors
22
Protocols
23
Constraints on Interactions
24
The Run-time Construction Process
2
25
26
27
28
Functional
Extra functional
Failure
Transparent Compression
‫ﮔﺰﺍﺭﺵ ﺍﺭﺍﺋﻪ ﻣﻬﻨﺪﺳﻲ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ‪۲‬‬
‫ﺗﺤﻮﻝ ﻭ ﻧﮕﻬﺪﺍﺭﻱ ﺩﺭ ﺳﻴﺴﺘﻢﻫﺎﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﻮﻟﻔﻪ ﻫﺎ‬
‫ﻣﺴﻌﻮﺩ ﺁﺧﻮﻧﺪﻱ‬
‫*‬
‫ﭼﻜﻴﺪﻩ‬
‫ﺩﺭ ﺍﻳﻦ ﻧﻮﺷﺘﻪ ﺩﺭ ﺍﺑﺘﺪﺍ ﺑﻪ ﺑﺮﺭﺳﻲ ﺍﻧﻮﺍﻉ ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﻓﺎﺯ ﻧﮕﻬﺪﺍﺭﻱ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ‪ .‬ﺳﭙﺲ ﺑﻪ ﺑﺮﺭﺳﻲ ﺷـﻴﻮﻩ ﻫـﺎﻱ‬
‫ﺗﺴﺖ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﭘﺮﺩﺍﺧﺘﻪ ﻭ ﻣﺸﮑﻼﺕ ﻫﺮ ﻳﮏ ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺳﭙﺲ ﺑﻪ ﻃﻮﺭ ﺧﺎﺹ ﺷﻴﻮﻩ ﺗﺴﺘﻲ ﺑﺮﺍﻱ ‪CBS‬ﻫﺎ ﺍﺭﺍﺋﻪ ﻣﻲ ﺩﻫﻴﻢ ﻭ ﺑـﺮﺍﻱ‬
‫ﻫﺮ ﻳﮏ ﺍﺯ ﺍﻧﻮﺍﻉ ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﻓﺎﺯ ﻧﮕﻬﺪﺍﺭﻱ ﺷﻴﻮﻩ ﺍﻱ ﺧﺎﺹ ﺭﺍ ﺑﺮﺍﻱ ﺗﺴﺖ ﻣﻌﺮﻓﻲ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫ﻛﻠﻤﺎﺕ ﻛﻠﻴﺪﻱ‬
‫ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ‪ ،‬ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻔﻴﺪ‪ ،‬ﺗﺴﺖ ‪ CBS‬ﻣﺒﺘﻨﻲ ﺑﺮ ‪ ،UML‬ﻧﮕﻬﺪﺍﺭﻱ ﻭﻓﻘﻲ‪ ،‬ﻧﮕﻬﺪﺍﺭﻱ ﺍﺻﻼﺣﻲ‪ ،‬ﻧﮕﻬﺪﺍﺭﻱ ﺑﻬﺒﻮﺩﻱ‪.‬‬
‫* ‪[email protected]‬‬
‫‪ -۱‬ﻣﻘﺪﻣﻪ‬
‫ﺍﻳﻦ ﻧﻮﺷﺘﺎﺭ‪ ،‬ﺷﺎﻣﻞ ﮔﺰﺍﺭﺷﻲ ﺍﺯ ﺁﺧﺮﻳﻦ ﺍﺭﺍﺋﻪ ﻣﺮﺗﺒﻂ ﺑﺎ ﺳﻴـﺴﺘﻢ ﻫـﺎﻱ ﻧـﺮﻡ‬
‫ﺍﻓﺰﺍﺭﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﻮﻟﻔﻪ) ‪ (CBSS٢‬ﻣﻲ ﺑﺎﺷﺪ‪ ،‬ﮐـﻪ ﺩﺭ ﺁﻥ ﺑـﻪ ﻧﮕﻬـﺪﺍﺭﻱ ﻭ‬
‫ﺗﺤﻮﻝ ﺍﻳﻦ ﺳﻴﺴﺘﻢ ﻫﺎ ﭘﺮﺩﺍﺧﺘﻪ ﺍﺳﺖ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﮔﺰﺍﺭﺵ ﺍﺑﺘﺪﺍ ﺑﻪ ﺑﺮﺭﺳﻲ ﺑﺮﺧﻲ ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﻪ ﺩﺭ ﻧﮕﻬﺪﺍﺭﻱ ﻧﺮﻡ ﺍﻓـﺰﺍﺭ‬
‫ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ‪ ،‬ﺳﭙﺲ ﻗﻮﺍﻧﻴﻦ ﻣﺮﺑـﻮﻁ ﺑـﻪ ﺗﺤـﻮﻝ ﻧـﺮﻡ ﺍﻓـﺰﺍﺭ ﺩﺭ ‪CBS‬ﻫـﺎ ﻭ‬
‫ﭼﺎﻟﺸﻬﺎﻱ ﻧﮕﻬﺪﺍﺭﻱ ﺭﺍ ﺑﺮﺭﺳﻲ ﺧﻮﺍﻫﻴﻢ ﮐﺮﺩ‪ .‬ﺩﺭ ﺍﻧﺘﻬﺎ ﺷـﻴﻮﻩ ﺍﻱ ﺧـﺎﺹ ﺭﺍ‬
‫ﺑﺮﺍﻱ ﺗﺴﺖ ﮐﺮﺩﻥ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺩﺭ ‪CBS‬ﻫﺎ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺧـﺼﻮﺻﻴﺎﺕ ‪CBS‬ﻫـﺎ‬
‫ﺍﺭﺍﺋﻪ ﺧﻮﺍﻫﻴﻢ ﮐﺮﺩ‪.‬‬
‫‪ -۲‬ﺍﻧﻮﺍﻉ ﻧﮕﻬﺪﺍﺭﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭ‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺑﻪ ﺳﻪ ﺩﺳﺘﻪ ﺯﻳﺮ ﺗﻘﺴﻴﻢ ﻣﻲ ﺷﻮﺩ‪:‬‬
‫‪3‬‬
‫• ﻭﻓﻘﻲ‬
‫‪4‬‬
‫• ﺍﺻﻼﺣﻲ‬
‫‪٥‬‬
‫• ﺑﻬﺒﻮﺩ ﺩﻫﻲ‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﻭﻓﻘﻲ ﺷﺎﻣﻞ ﺗﻐﻴﻴﺮﺍﺕ ﻧﺎﺷﻲ ﺍﺯ ﺗﺤﻮﻝ ﺩﺭ ﻣﺤـﻴﻂ ﺳﻴـﺴﺘﻢ‬
‫ﺍﺳﺖ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺩﺭ ﺣـﻮﺯﻩ ﺗﺠـﺎﺭﺕ‬
‫ﺍﻟﮑﺘﺮﻭﻧﻴﮑﻲ ﺩﺭ ﺍﻭﺍﺧﺮ ﺩﻫـﻪ ‪ ۹۰‬ﻣـﻴﻼﺩﻱ ﺑـﺎ ﭘﻴـﺪﺍﻳﺶ ‪ EDI6‬ﻣﺠﺒـﻮﺭ ﺑـﻪ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺑﺮﺍﻱ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺳﺎﻳﺮ ﺳﻴﺴﺘﻢ ﻫﺎ ﺷﺪﻧﺪ‪ .‬ﺍﻳﻦ ﻧﻮﻉ‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﻣﻌﻤﻮﻻ ‪ ۲۰‬ﺗﺎ ‪ ۲۵‬ﺩﺭﺻﺪ ﻓﻌﺎﻟﻴﺘﻬﺎﻱ ﻣﺮﺑﻮﻁ ﺑـﻪ ﻧﮕﻬـﺪﺍﺭﻱ ﻧـﺮﻡ‬
‫ﺍﻓﺰﺍﺭ ﺭﺍ ﺑﻪ ﺧﻮﺩ ﺍﺧﺘﺼﺎﺹ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﺍﺻﻼﺣﻲ ﺑﻪ ﻣﻨﻈـﻮﺭ ﺭﻓـﻊ ﺧﻄﺎﻫـﺎﻱ ﻣﻮﺟـﻮﺩ ﺩﺭ ﺳﻴـﺴﺘﻢ‬
‫ﭘﺪﻳﺪﺍﺭ ﻣﻲ ﺷﻮﺩ‪ .‬ﺍﻳﻦ ﻓﻌﺎﻟﻴﺖ ﺣـﺪﻭﺩ ‪ ۲۰‬ﺩﺭﺻـﺪ ﻓﻌﺎﻟﻴﺘﻬـﺎﻱ ﻣﺮﺑـﻮﻁ ﺑـﻪ‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺭﺍ ﺑﻪ ﺧﻮﺩ ﺍﺧﺘﺼﺎﺹ ﻣﻲ ﺩﻫﺪ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻳﮑـﻲ ﺍﺯ‬
‫ﻣﻌﻴﺎﺭﻫﺎﻱ ﮐﻴﻔﻲ ﺍﻳﻦ ﻧـﻮﻉ ﻧﮕﻬـﺪﺍﺭﻱ ‪ DRE7‬ﻣـﻲ ﺑﺎﺷـﺪ‪ ،‬ﮐـﻪ ﻣﻴﺰﺍﻧـﻲ ﺍﺯ‬
‫ﺗﻮﺍﻧﺎﻳﻲ ﻓﻴﻠﺘﺮ ﮐﺮﺩﻥ ﺧﻄﺎﻫﺎ ﭘـﻴﺶ ﺍﺯ ﺗﺤـﻮﻝ ﻧـﺮﻡ ﺍﻓـﺰﺍﺭ ﺍﺳـﺖ ﮐـﻪ ﻳﮑـﻲ‬
‫ﻓﻌﺎﻟﻴﺘﻬﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ ﮐﻨﺘﺮﻝ ﻭ ﺗﻀﻤﻴﻦ ﮐﻴﻔﻴﺖ ﺍﺳﺖ‪.‬‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﻭﻓﻘﻲ ﺑﻪ ﺗﻐﻴﻴﺮﺍﺕ ﻧﺎﺷﻲ ﺍﺯ ﻧﻴﺎﺯﻫﺎﻱ ﺟﺪﻳـﺪ ﮐـﺎﺭﺑﺮﺍﻥ ﻭ ﻳـﺎ‬
‫ﺗﻼﺵ ﺑﺮﺍﻱ ﺑﻬﺒﻮﺩ ﮐﺎﺭﺍﻳﻲ ﺳﻴﺴﺘﻢ ﺍﺷﺎﺭﻩ ﻣﻲ ﮐﻨﺪ‪ ،‬ﻣﺎﻧﻨـﺪ ﻧﻴـﺎﺯ ﺑـﻪ ‪web‬‬
‫‪ base‬ﺑﻮﺩﻥ ﺳﻴﺴﺘﻢ ﻳﺎ ﮐﺎﻫﺶ ﺯﻣـﺎﻥ ﭘﺎﺳـﺦ ﺳﻴـﺴﺘﻢ‪ .‬ﺍﻳـﻦ ﻓﻌﺎﻟﻴـﺖ ﻧﻴـﺰ‬
‫ﺣﺪﻭﺩ ‪ ۵۰‬ﺗﺎ ‪ ۶۰‬ﺩﺭﺻﺪ ﻓﻌﺎﻟﻴﺘﻬﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ ﻧﮕﻬـﺪﺍﺭﻱ ﻧـﺮﻡ ﺍﻓـﺰﺍﺭ ﺭﺍ ﺑـﻪ‬
‫ﺧﻮﺩ ﺍﺧﺘﺼﺎﺹ ﻣﻲ ﺩﻫﺪ‪ .‬ﻻﺯﻡ ﺑﻪ ﺫﮐﺮ ﺍﺳﺖ ﮐﻪ ﻓﻌﺎﻟﻴﺖ ﻧﮕﻬﺪﺍﺭﻱ ﻣﻮﺟـﻮﺩ‬
‫ﺩﺭ ﺍﻳﻦ ﺩﺳﺘﻪ ﺑﺎ ﻇﻬﻮﺭ ﻣﻮﻟﻔﻪ ﻫﺎ‪ ،‬ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﺳـﺮﻭﻳﺲ ﻭ ﻧﻴـﺰ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ gatway‬ﻫﺎ ﺳﺎﺩﻩ ﺗﺮ ﺍﺯ ﮔﺬﺷﺘﻪ ﺍﻧﺠـﺎﻡ ﻣـﻲ ﺷـﻮﺩ‪ .‬ﺑـﻪ ﻋﻨـﻮﺍﻥ‬
‫ﻣﺜﺎﻝ ﺑﺮﺍﻱ ﺍﻓﺰﺍﻳﺶ ﺯﻣﺎﻥ ﭘﺎﺳﺦ ﺳﻴﺴﺘﻢ‪ ،‬ﻗﺴﻤﺘﻲ ﺍﺯ ﺁﻥ ﺭﺍ ﮐـﻪ ﺑـﻪ ﻋﻨـﻮﺍﻥ‬
‫‪ bottleneck‬ﺑﻪ ﺣﺴﺎﺏ ﻣـﻲ ﺁﻳـﺪ ﺑـﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﺗﮑﻨﻮﻟﻮﮊﻳﻬـﺎ ﻭ ﻃﺮﺍﺣـﻲ‬
‫‪Component Based Software Syetem 2‬‬
‫‪Adaptive 3‬‬
‫‪Corrective 4‬‬
‫‪Perfective 5‬‬
‫‪Electronic Data Interchange 6‬‬
‫‪Defect Removal Efficiency 7‬‬
‫ﺟﺪﻳﺪ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﮐﺮﺩﻩ ﻭ ﺑﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ‪ gatway‬ﺑـﻪ ﺳـﺎﻳﺮ ﻗـﺴﻤﺘﻬﺎﻱ‬
‫ﺳﻴﺴﺘﻢ ﻗﺒﻠﻲ ﺍﺗﺼﺎﻝ ﻣﻲ ﺩﻫﻴﻢ‪.‬‬
‫ﺩﺭ ﺷﮑﻞ)‪ (۱‬ﺩﺭﺻﺪ ﺗﻘﺮﻳﺒﻲ ﻫﺮ ﻳﮏ ﺍﺯ ﻓﻌﺎﻟﻴﺖ ﻫﺎﻱ ﻣﺮﺑﻮﻁ ﺑـﻪ ﻓـﺎﺯ‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻣﻲ ﮐﻨﻴﺪ‪.‬‬
‫‪60‬‬
‫‪50‬‬
‫‪40‬‬
‫‪30‬‬
‫‪20‬‬
‫‪10‬‬
‫‪0‬‬
‫ﺑﻬﺒﻮﺩﯼ‬
‫ﺍﺻﻼﺣﯽ‬
‫ﻭﻓﻘﯽ‬
‫ﺷﻜﻞ )‪ :(۱‬ﻓﻌﺎﻟﻴﺖ ﻫﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ ﻧﮕﻬﺪﺍﺭﻱ‬
‫‪ -۳‬ﺗﺤﻮﻝ ﻧﺮﻡ ﺍﻓﺰﺍﺭ‬
‫ﭘﺲ ﺍﺯ ﺑﺮﺭﺳﻲ ﺍﻧﻮﺍﻉ ﻓﻌﺎﻟﻴﺘﻬﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ ﻧﮕﻬﺪﺍﺭﻱ ﻧﺮﻡ ﺍﻓـﺰﺍﺭ ﺍﮐﻨـﻮﻥ ﺑـﻪ‬
‫ﺑﺮﺭﺳﻲ ﺗﺤﻮﻝ ﺩﺭ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ‪ .‬ﺗﺤﻮﻝ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺭﺍ ﺍﺯ ﺟﻨﺒﻪ ﻫـﺎﻱ‬
‫ﮔﻮﻧﺎﮔﻮﻧﻲ ﻧﻈﻴﺮ ﭼﮕﻮﻧﮕﻲ ﺍﻋﻤﺎﻝ ﺗﻐﻴﻴﺮﺍﺕ ﻭ ﺗـﺴﺖ ﻧـﺮﻡ ﺍﻓـﺰﺍﺭ ﻣـﻲ ﺗـﻮﺍﻥ‬
‫ﺑﺮﺭﺳﻲ ﮐﺮﺩ‪ .‬ﻣﺎ ﺩﺭ ﺍﻳﻨﺠﺎ ﻓﻘﻂ ﺑﺮ ﺭﻭﻱ ﺗﺴﺖ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻓﻮﮐﻮﺱ ﻣﻲ ﮐﻨـﻴﻢ‬
‫ﻭ ﺩﺭ ﺍﺩﺍﻣﻪ ﺑﺤﺚ ﺑﻪ ﺑﺮﺭﺳﻲ ﺑﺮﺧﻲ ﺍﺯ ﺷﻴﻮﻩ ﻫﺎﻱ ﺭﺍﻳﺞ ﺑﺮﺍﻱ ﺗﺴﺖ ﻧﺮﻡ ﺍﻓﺰﺍﺭ‬
‫ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ ﻭ ﭘﺲ ﺍﺯ ﺗﻮﺿﻴﺢ ﻫﺮ ﻳﮏ ﻣﻌﺎﻳﺐ ﺁﻥ ﺭﺍ ﻧﻴﺰ ﺑﻴﺎﻥ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺩﺭ‬
‫ﺍﻧﺘﻬﺎ ﻧﻴﺰ ﺑﻪ ﺑﺮﺭﺳﻲ ﻫﺮ ﻳﮏ ﺍﺯ ﺍﻳﻦ ﺭﻭﺷﻬﺎ ﺩﺭ ‪ CBS‬ﻫﺎ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ‪.‬‬
‫‪ -۱-۳‬ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ‬
‫ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ ﮐﻪ ﺗﺴﺖ ﺭﻓﺘﺎﺭﻱ ﻧﻴﺰ ﺧﻮﺍﻧﺪﻩ ﻣﻲ ﺷﻮﺩ‪ ،‬ﺑﺮ ﺧﻮﺍﺳﺘﻪ ﻫﺎﻱ‬
‫ﻋﻤﻠﻴﺎﺗﻲ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺗﮑﻴﻪ ﺩﺍﺭﺩ‪ .‬ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ‪ ،‬ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ ﻣﻬﻨﺪﺱ‬
‫ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺭﺍ ﻗﺎﺩﺭ ﻣـﻲ ﺳـﺎﺯﺩ ﺗـﺎ ﻣﺠﻤﻮﻋـﻪ ﻫـﺎﻳﻲ ﺍﺯ ﺷـﺮﻃﻬﺎﻱ ﻭﺭﻭﺩﻱ ﺭﺍ‬
‫ﺑﺪﺳﺖ ﺁﻭﺭﺩ ﮐﻪ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺧﻮﺍﺳﺘﻪ ﻫﺎﻱ ﻋﻤﻠﻴﺎﺗﻲ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺗـﺴﺖ ﮐﻨـﺪ‪.‬‬
‫ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ ﺳﻌﻲ ﻣﻲ ﮐﻨﺪ ﺧﻄﺎﻫﺎﻱ ﻣﻮﺟـﻮﺩ ﺩﺭ ﮔﺮﻭﻫﻬـﺎﻱ ﺯﻳـﺮ ﺭﺍ‬
‫ﺑﻴﺎﺑﺪ‪:‬‬
‫• ﻋﻤﻠﮑﺮﺩ ﻧﺎﺩﺭﺳﺖ ﻳﺎ ﺟﺎ ﺍﻓﺘﺎﺩﻩ‬
‫• ﺧﻄﺎﻫﺎﻱ ﻭﺍﺳﻂ‬
‫• ﺧﻄﺎﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺩﺭ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩ ﻫﺎ ﻳﺎ ﺩﺳﺘﻴﺎﺑﻲ ﺑـﻪ ﺑﺎﻧـﮏ‬
‫ﺍﻃﻼﻋﺎﺗﻲ ﺧﺎﺭﺟﻲ‬
‫• ﺧﻄﺎﻫﺎﻱ ﺭﻓﺘﺎﺭﻱ ﻳﺎ ﮐﺎﺭﺍﻳﻲ‬
‫• ﺧﻄﺎﻫﺎﻱ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﺍﻭﻟﻴﻪ ﻳﺎ ﺧﺎﺗﻤﻪ ﺑﺮﻧﺎﻣﻪ‬
‫‪ -۱-۱-۳‬ﺭﻭﺷﻬﺎﻱ ﺁﺯﻣﻮﻥ ﻣﺒﺘﻨﻲ ﺑﺮ ﮔﺮﺍﻑ‬
‫ﻧﺨﺴﺘﻴﻦ ﮔﺎﻡ ﺩﺭ ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ‪ ،‬ﺷﻨﺎﺧﺖ ﺍﺷـﻴﺎﻳﻲ ﺍﺳـﺖ ﮐـﻪ ﺩﺭ ﻧـﺮﻡ‬
‫ﺍﻓﺰﺍﺭ ﻣﺪﻟﺴﺎﺯﻱ ﻣﻲ ﺷﻮﻧﺪ‪ ،‬ﺑﻪ ﻫﻤﺮﺍﻩ ﺭﻭﺍﺑﻂ ﻣﻴﺎﻥ ﺍﻳﻦ ﺍﺷﻴﺎ ﺍﺳـﺖ‪ .‬ﻣﺮﺣﻠـﻪ‬
‫ﺑﻌﺪ ﺷﺎﻣﻞ ﺗﻌﻴﻴﻦ ﺗﻌﺪﺍﺩﻱ ﺗﺴﺖ ﺍﺳﺖ ﮐﻪ ﺛﺎﺑﺖ ﮐﻨﻨﺪﻩ ﺭﻭﺍﺑﻂ ﻣﻮﺭﺩ ﺍﻧﺘﻈﺎﺭ‬
‫ﻣﻴﺎﻥ ﺍﺷﻴﺎ ﺍﺳﺖ‪ .‬ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ‪ ،‬ﺗﺴﺖ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺑﺎ ﺍﻳﺠﺎﺩ ﮔﺮﺍﻓﻲ ﺍﺯ ﺍﺷﻴﺎ ﻭ‬
‫ﺭﻭﺍﺑﻂ ﻣﻴﺎﻥ ﺁﻧﻬﺎ‪ ،‬ﺗﻌﺪﺍﺩﻱ ﺗﺴﺖ ﺭﺍ ﭘﺎﻳـﻪ ﺭﻳـﺰﻱ ﻣـﻲ ﮐﻨـﺪ ﮐـﻪ ﮔـﺮﺍﻑ ﺭﺍ‬
‫ﭘﻮﺷﺶ ﺩﻫﻨﺪ‪ ،‬ﺑﻪ ﮔﻮﻧﻪ ﺍﻱ ﮐﻪ ﻫﺮ ﻳﮏ ﺍﺯ ﺍﺷﻴﺎ ﻭ ﺭﻭﺍﺑﻂ ﻣﻴﺎﻥ ﺁﻧﻬـﺎ ﻣـﻮﺭﺩ‬
‫ﺁﺯﻣﺎﻳﺶ ﻗﺮﺍﺭ ﮔﻴﺮﻧﺪ ﻭ ﺧﻄﺎﻫﺎ ﮐﺸﻒ ﮔﺮﺩﻧﺪ‪ .‬ﺩﺭ ﻃﺮﺍﺣﻲ ﻣـﻮﺍﺭﺩ ﺗـﺴﺖ ﺩﻭ‬
‫ﻫﺪﻑ ﺩﻧﺒﺎﻝ ﻣﻲ ﺷﻮﺩ‪ ،‬ﻧﺨﺴﺖ ﭘﻮﺷﺶ ﺩﻫﻲ ﮔﺮﻩ ﻫﺎﺳﺖ‪ .‬ﺑﺪﻳﻦ ﻣﻌﻨـﺎ ﮐـﻪ‬
‫ﺁﺯﻣﻮﻧﻬﺎ ﺑﺎﻳﺪ ﻃﻮﺭﻱ ﻃﺮﺍﺣﻲ ﺷﻮﻧﺪ ﮐﻪ ﻣﺸﺨﺺ ﮐﻨﻨﺪ ﮐﻪ ﻫﻴﭻ ﮔﺮﻩ ﺍﻱ ﺑـﻪ‬
‫ﻃﻮﺭ ﻧﺎﺧﻮﺍﺳﺘﻪ ﺣﺬﻑ ﻧﺸﺪﻩ ﺍﺳﺖ‪ .‬ﻫﺪﻑ ﺩﻳﮕﺮ ﭘﻮﺷﺶ ﺩﻫﻲ ﺭﺍﺑﻄﻪ ﻫﺎﺳﺖ‪.‬‬
‫ﺩﺭ ﺗﻌﺮﻳﻒ ﺍﻳﻦ ﻣﻮﺍﺭﺩ ﺗﺴﺖ ﺍﺯ ﺧﻮﺍﺹ ﺗﻌﺪﻱ‪ ،‬ﻣﺘﻘـﺎﺭﻥ ﻭ ﺍﻧﻌﮑﺎﺳـﻲ ﻣﻴـﺎﻥ‬
‫ﺭﻭﺍﺑﻂ ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫‪ -۵-۱-۳‬ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ ﺑﺮﺍﻱ ‪CBS‬ﻫﺎ‬
‫ﺩﺭ ﺷﮑﻞ ‪ ۲‬ﺧﻼﺻﻪ ﺍﻱ ﺍﺯ ﺍﻳﻦ ﻧﻮﻉ ﺗﺴﺖ ﺑﺮﺍﻱ ‪CBS‬ﻫﺎ ﺁﻣـﺪﻩ ﺍﺳـﺖ‪ .‬ﻫـﺮ‬
‫ﮐﻼﻳﻨﺖ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﺍﺳﻄﻬﺎﻱ ﺗﺴﺖ‪ ،‬ﻣﻮﺭﺩﻫﺎﻱ ﺗﺴﺖ ﺭﺍ ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﻲ‬
‫ﺩﻫﺪ‪ .‬ﺍﻳﻦ ﻭﺍﺳﻂ ﻫﺎ ﻧﻴـﺰ ﺑـﻪ ﻧﻮﺑـﻪ ﺧـﻮﺩ ﺍﺯ ‪ test case analyzer‬ﻭ ‪test‬‬
‫‪ specification‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩﻩ ﻭ ﺑﻪ ﺗﺴﺖ ﺳﻴـﺴﺘﻢ ﻣـﻲ ﭘـﺮﺩﺍﺯﺩ‪Test .‬‬
‫‪ specification‬ﺩﺭ ﺑﺮﮔﻴﺮﻧــﺪﻩ ﺍﻃﻼﻋــﺎﺗﻲ ﺑــﺮﺍﻱ ﻣﻮﺭﺩﻫــﺎﻱ ﺗــﺴﺖ ﻧﻈﻴ ـﺮ‬
‫ﺳﺎﺧﺘﺎﺭ ﻓﺎﻳﻞ ﻭﺭﻭﺩﻱ ﺗﺴﺖ ﻭ ‪ ...‬ﺍﺳﺖ‪ .‬ﺩﺭ ﺻﻮﺭﺗﻲ ﮐﻪ ﻣﻮﻟﻔﻪ ﺟﺪﻳﺪ ﺑﺘﻮﺍﻧﺪ‬
‫ﻣﻌﻴﺎﺭﻫﺎﻱ ﺗﻮﺻﻴﻒ ﺷﺪﻩ ﺭﺍ ﺑﺮﺁﻭﺭﺩﻩ ﺳﺎﺯﺩ‪ ،‬ﻧـﺴﺨﻪ ﺟﺪﻳـﺪ ﺁﻥ ﺍﻧﺘـﺸﺎﺭ ﻣـﻲ‬
‫ﻳﺎﺑﺪ‪ .‬ﺍﺭﺯﻳﺎﺑﻲ ﺗﻮﺍﻧﺎﻳﻲ ﻣﻮﻟﻔﻪ ﺑﺮﺍﻱ ﺭﺳـﻴﺪﻥ ﺑـﻪ ﻣﻌﻴﺎﺭﻫـﺎﻱ ﺗﻮﺻـﻴﻒ ﺷـﺪﻩ‬
‫ﺗﻮﺳﻂ ‪ test analyzer‬ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫‪ -۲-۱-۳‬ﺍﻓﺮﺍﺯ ﻫﻢ ﺍﺭﺯﻱ‬
‫ﻳﮑﻲ ﺩﻳﮕﺮ ﺍﺯ ﺭﻭﺷﻬﺎﻱ ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ ﺍﻓﺮﺍﺯ ﻫﻢ ﺍﺭﺯﻱ ﺍﺳﺖ ﮐـﻪ ﺩﺍﻣﻨـﻪ‬
‫ﻭﺭﻭﺩﻱ ﻳﮏ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺑﻪ ﻃﺒﻘﺎﺗﻲ ﺍﺯ ﺩﺍﺩﻩ ﻫـﺎ ﺗﻘـﺴﻴﻢ ﻣـﻲ ﮐﻨـﺪ ﻭ ﻣـﻮﺍﺭﺩ‬
‫ﺗﺴﺖ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﺭﻭﻱ ﺁﻥ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩ‪ .‬ﻃﺒﻘﺎﺕ ﻫﻢ ﺍﺭﺯﻱ ﺑﺮﺍﻱ ﻳـﮏ‬
‫ﺷﺮﻁ ﻭﺭﻭﺩﻱ ﺍﺳﺖ‪ .‬ﺍﮔـﺮ ﺑﺘـﻮﺍﻥ ﻣﺠﻤﻮﻋـﻪ ﺍﻱ ﺍﺯ ﺍﺷـﻴﺎ ﺭﺍ ﺗﻮﺳـﻂ ﺭﻭﺍﺑـﻂ‬
‫ﻣﺘﻘﺎﺭﻥ‪ ،‬ﺗﻌﺪﻱ ﻭ ﺍﻧﻌﮑﺎﺳﻲ ﺑﻪ ﻫﻢ ﭘﻴﻮﻧـﺪ ﺩﺍﺩ‪ ،‬ﻳـﮏ ﻃﺒﻘـﻪ ﻫـﻢ ﺍﺭﺯﻱ ﺑـﻪ‬
‫ﻭﺟﻮﺩ ﻣﻲ ﺁﻳﺪ‪ .‬ﻃﺒﻘﻪ ﻫﻢ ﺍﺭﺯﻱ ﻧﺸﺎﻧﮕﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺣﺎﻟﺘﻬﺎﻱ ﻣﻌﺘﺒـﺮ ﻭ‬
‫ﻧﺎﻣﻌﺘﺒﺮ ﺑﺮﺍﻱ ﺷﺮﺍﻳﻂ ﻭﺭﻭﺩﻱ ﺍﺳﺖ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺍﮔﺮ ﺷﺮﻁ ﻭﺭﻭﺩﻱ ﺑـﺎﺯﻩ‬
‫ﺍﻱ ﺭﺍ ﻣﺸﺨﺺ ﮐﻨﺪ‪ ،‬ﻳﮏ ﻃﺒﻘﻪ ﻫـﻢ ﺍﺭﺯﻱ ﻣﻌﺘﺒـﺮ ﻭ ﺩﻭ ﻃﺒﻘـﻪ ﻫـﻢ ﺍﺭﺯﻱ‬
‫ﻧﺎﻣﻌﺘﺒﺮ ﺑﻪ ﻭﺟﻮﺩ ﻣﻲ ﺁﻳﺪ‪.‬‬
‫‪ -۳-۱-۳‬ﺗﺤﻠﻴﻞ ﻣﻘﺎﺩﻳﺮ ﻣﺮﺯﻱ‬
‫ﻣﻌﻤﻮﻻ ﺗﻌﺪﺍﺩ ﺧﻄﺎﻫﺎﻱ ﻣﻮﺟـﻮﺩ ﺩﺭ ﻣﺮﺯﻫـﺎﻱ ﺩﺍﻣﻨـﻪ ﻭﺭﻭﺩﻱ‪ ،‬ﻧـﺴﺒﺖ ﺑـﻪ‬
‫ﻣﻘﺎﺩﻳﺮ ﻣﺮﮐﺰﻱ ﺩﺍﻣﻨﻪ ﺑﻴﺸﺘﺮ ﺍﺳﺖ‪ .‬ﺗﺤﻠﻴﻞ ﻣﻘﺎﺩﻳﺮ ﻣﺮﺯﻱ ﻣﮑﻤﻞ ﺍﻓﺮﺍﺯ ﻫـﻢ‬
‫ﺍﺭﺯﻱ ﺍﺳﺖ‪ .‬ﺍﻳﻦ ﺭﻭﺵ ﺑﻪ ﺟﺎﻱ ﺁﻧﮑﻪ ﻓﻘﻂ ﺑﺮ ﺷﺮﻃﻬﺎﻱ ﻭﺭﻭﺩﻱ ﺗﮑﻴﻪ ﮐﻨﺪ‪،‬‬
‫ﻣﻮﺍﺭﺩ ﺗﺴﺘﻲ ﺍﺯ ﺩﺍﻣﻨﻪ ﺧﺮﻭﺟﻲ ﺭﺍ ﻧﻴﺰ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻭﺭﺩ‪.‬‬
‫‪ -۴-۱-۳‬ﺁﺯﻣﻮﻥ ﺁﺭﺍﻳﻪ ﻫﺎﻱ ﻣﺘﻌﺎﻣﺪ‬
‫ﺩﺍﻣﻨﻪ ﻭﺭﻭﺩﻱ ﺑﺮﺧﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﮐﺎﺭﺑﺮﺩﻱ ﻣﺤﺪﻭﺩ ﺍﺳﺖ‪ ،‬ﻳﻌﻨـﻲ ﺗﻌـﺪﺍﺩ‬
‫ﭘﺎﺭﺍﻣﺘﺮﻫﺎﻱ ﻭﺭﻭﺩﻱ‪،‬ﮐﻮﭼﮏ ﻭ ﻣﻘﺎﺩﻳﺮﻱ ﮐﻪ ﻫﺮﻳﮏ ﺍﺯ ﭘﺎﺭﺍﻣﺘﺮﻫـﺎ ﺑـﻪ ﺧـﻮﺩ‬
‫ﻣﻲ ﮔﻴﺮﻧﺪ ﺩﺍﺭﺍﻱ ﻣﺮﺯ ﻣﺸﺨﺼﻲ ﺍﺳـﺖ‪ .‬ﻣـﻲ ﺗـﻮﺍﻥ ﺩﺭ ﺍﻳـﻦ ﺣﺎﻟـﺖ ﺗﻤـﺎﻡ‬
‫ﺣﺎﻻﺕ ﻭﺭﻭﺩﻱ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓـﺖ ﻭ ﭘـﺮﺩﺍﺯﺵ ﺩﺍﻣﻨـﻪ ﻭﺭﻭﺩﻱ ﺭﺍ ﺑـﻪ ﻃـﻮﺭ‬
‫ﺟﺎﻣﻊ‪ ،‬ﻣﻮﺭﺩ ﺁﺯﻣﺎﻳﺶ ﻗﺮﺍﺭ ﺩﺍﺩ‪ .‬ﻭﻟﻲ ﺑﺎ ﺭﺷﺪ ﺗﻌﺪﺍﺩ ﻣﻘﺎﺩﻳﺮ ﻭﺭﻭﺩﻱ ﻭ ﺗﻌﺪﺍﺩ‬
‫ﻣﻘﺎﺩﻳﺮ ﻣﺠﺰﺍ ﺟﻬﺖ ﻫﺮ ﻋﻨﺼﺮ ﺩﺍﺩﻩ ﺍﻱ‪ ،‬ﺁﺯﻣﻮﻥ ﺟﺎﻣﻊ ﻏﻴﺮ ﻋﻤﻠﻲ ﻭ ﺍﻣﮑـﺎﻥ‬
‫ﻧﺎﭘﺬﻳﺮ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ‪ ،‬ﻫـﺮ ﭘـﺎﺭﺍﻣﺘﺮ ﺭﺍ ﺑـﺮ ﺭﻭﻱ ﻳـﮏ ﻣﺤـﻮﺭ ﺩﺭ ﻧﻈـﺮ ﮔﺮﻓﺘـﻪ ﻭ‬
‫ﻣﻘﺎﺩﻳﺮﻱ ﺭﺍ ﮐﻪ ﺁﻥ ﭘﺎﺭﺍﻣﺘﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺍﺭﺍ ﺑﺎﺷﺪ‪ ،‬ﺑﻪ ﻋﻨﻮﺍﻥ ﺩﺍﻣﻨﻪ ﺁﻥ ﻣﺤﻮﺭ‬
‫ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ‪ ،‬ﺣﺎﻝ ﻫﺮ ﻧﻘﻄﻪ ﺩﺭ ﺁﻥ ﻓﻀﺎ‪ ،‬ﺑﻪ ﻋﻨـﻮﺍﻥ ﻳـﮏ ﺣﺎﻟـﺖ ﺑـﻪ‬
‫ﺣﺴﺎﺏ ﺁﻣﺪﻩ ﻭ ﻣﻲ ﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﻳﮏ ﻣﻮﺭﺩ ﺗﺴﺖ ﺑﻪ ﺣﺴﺎﺏ ﺁﻭﺭﺩ‪.‬‬
‫ﺷﻜﻞ )‪ :(۲‬ﭼﺎﺭﭼﻮﺏ ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ ﺑﺮﺍﻱ ‪CBS‬‬
‫‪ -۶-۱-۳‬ﭼﺎﻟﺸﻬﺎﻱ ﻫﻤﺮﺍﻩ ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻴﺎﻩ‬
‫ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺧﻄﺎﻫﺎ ﻣﻤﮑﻦ ﺍﺳﺖ ﺩﺭ ﺍﻳﻦ ﺗﺴﺖ ﺩﻳﺪﻩ ﻧﺸﻮﻧﺪ‪ .‬ﺩﺭ ﺍﻳﻦ ﺗـﺴﺖ‬
‫ﺑﻪ ﻋﻠﺖ ﻭﺟﻮﺩ ﭘﺎﺭﺍﻣﺘﺮﻫﺎﻱ ﻓﺮﺍﻭﺍﻧﻲ ﮐﻪ ﺳﻴﺴﺘﻢ ﻣﻤﮑﻦ ﺍﺳﺖ ﺍﺯ ﺁﻧﻬـﺎ ﺗـﺎﺛﻴﺮ‬
‫ﺑﭙﺬﻳﺮﺩ ﻭ ﺩﺭ ﻧﺘﻴﺠـﻪ ﺩﺭ ﺷـﺮﺍﻳﻂ ﻣﺨﺘﻠـﻒ ﺟـﻮﺍﺏ ﻫـﺎﻱ ﻣﺨﺘﻠـﻒ ﺑﺪﻫـﺪ‪،‬‬
‫ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺧﻄﺎﻫﺎ ﻣﻤﮑﻦ ﺍﺳﺖ ﻧﺎﺩﻳﺪﻩ ﮔﺮﻓﺘﻪ ﺷﻮﺩ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺍﺟﺮﺍﻱ‬
‫ﻳﮏ ﻗﺴﻤﺖ ﺧﺎﺹ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻧﻴﺎﺯ ﺑﻪ ﺣﺠﻢ ﻣﺸﺨﺼﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺍﺻﻠﻲ ﺩﺍﺭﺩ‬
‫ﻭ ﻓﺮﺩﻱ ﮐﻪ ﺩﺭ ﺣﺎﻝ ﺗﺴﺖ ﺳﻴﺴﺘﻢ ﻣﻲ ﺑﺎﺷﺪ‪ ،‬ﺁﻥ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﺳﻴﺴﺘﻤﻬﺎﻳﻲ‬
‫ﺗﺴﺖ ﻣﻲ ﮐﻨﺪ ﮐﻪ ﺣﺎﻓﻈﻪ ﮐﺎﻓﻲ ﺩﺭ ﺍﺧﺘﻴـﺎﺭ ﺩﺍﺭﻧـﺪ ﻭ ﺣـﺎﻝ ﺁﻧﮑـﻪ ﻫﻤـﻴﻦ‬
‫ﺑﺮﻧﺎﻣﻪ ﺑﺮ ﺭﻭﻱ ﺳﻴﺴﺘﻤﻲ ﮐﻪ ﺣﺎﻓﻈﻪ ﮐﺎﻓﻲ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﻧـﺪﺍﺭﺩ ﭘﻴﻐـﺎﻡ ﺧﻄـﺎ‬
‫ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﺍﺯ ﻃﺮﻑ ﺩﻳﮕﺮ ﺗﺴﺖ ﮐﺎﻣﻞ ﻋﻤﻠﮑﺮﺩ ﺑﻪ ﻋﻠﺖ ﭘﻴﭽﻴﺪﮔﻲ ﺗﺮﮐﻴﺒﺎﺕ ﻣﺨﺘﻠـﻒ‬
‫ﺗﻮﺍﺑﻊ ﻭﺭﻭﺩﻱ ﺳﻴﺴﺘﻢ ﺩﺭ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﻣﻮﺍﻗﻊ ﻏﻴﺮ ﻣﻤﮑﻦ ﺑﻪ ﻧﻈﺮ ﻣﻲ ﺭﺳـﺪ‪.‬‬
‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻓﺮﺽ ﮐﻨﻴﺪ ﮐﻪ ﻳﮑﻲ ﺍﺯ ﻣﺘﻐﻴﻴﺮﻫﺎﻱ ﻭﺭﻭﺩﻱ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺩﺍﻣﻨﻪ‬
‫ﺍﻋﺪﺍﺩ ﺣﻘﻴﻘﻲ ﺍﻧﺘﺨـﺎﺏ ﺷـﻮﺩ‪ ،‬ﺩﺭ ﺍﻳـﻦ ﺻـﻮﺭﺕ ﺗـﺴﺖ ﻫﻤـﻪ ﻣﻘـﺎﺩﻳﺮ ﺁﻥ‬
‫ﺍﻣﮑﺎﻧﭙﺬﻳﺮ ﻧﻤﻲ ﺑﺎﺷﺪ‪ .‬ﺣﺎﻝ ﻓﺮﺽ ﮐﻨﻴﺪ ﮐﻪ ﻋﻼﻭﻩ ﺑﺮ ﺍﻳﻦ ﭼﻨـﺪﻳﻦ ﻣﺘﻐﻴﻴـﺮ‬
‫ﻭﺭﻭﺩﻱ ﺩﻳﮕﺮ ﻫﻢ ﺩﺭ ﺳﻴﺴﺘﻢ ﺑﺎﺷﺪ!!!‪.‬‬
‫‪ -۲-۳‬ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻔﻴﺪ‬
‫ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻔﻴﺪ ﮐﻪ ﮔﺎﻩ ﺗﺴﺖ ﺟﻌﺒﻪ ﺷﻴﺸﻴﻪ ﺍﻱ ﻧﻴﺰ ﺧﻮﺍﻧﺪﻩ ﻣﻲ ﺷـﻮﺩ‪،‬‬
‫ﻳﮏ ﺭﻭﺵ ﻃﺮﺍﺣﻲ ﺑﺮﺍﻱ ﻣﻮﺍﺭﺩ ﺗﺴﺖ ﺍﺳﺖ ﮐﻪ ﺑﺮﺍﻱ ﺑﺪﺳﺖ ﺁﻭﺭﺩﻥ ﻣـﻮﺍﺭﺩ‬
‫ﺗﺴﺖ ﺍﺯ ﺳﺎﺧﺘﺎﺭ ﮐﻨﺘﺮﻟﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﮐﻨﺪ‪ .‬ﺑﻪ ﻫﻤﻴﻦ ﻋﻠﺖ ﺑﻪ ﺁﻥ "ﺗـﺴﺖ‬
‫ﻣﺒﺘﻨﻲ ﺑﺮ ﺑﺮﻧﺎﻣﻪ" ﻭ "ﺗﺴﺖ ﻣﺒﺘﻨﻲ ﺑﺮ ﺳـﺎﺧﺘﺎﺭ" ﻧﻴـﺰ ﮔﻔﺘـﻪ ﻣـﻲ ﺷـﻮﺩ‪ .‬ﺑـﺎ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺗﺴﺖ ﻣﻲ ﺗﻮﺍﻥ ﻣﻮﺍﺭﺩ ﺗﺴﺘﻲ ﺭﺍ ﺗﻬﻴﻪ ﮐﺮﺩ ﮐﻪ‪:‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫ﺗﻀﻤﻴﻦ ﻣﻲ ﮐﻨﻨﺪ ﮐﻪ ﻫﻤﻪ ﻣﺴﻴﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺩﺭ ﻳﮏ ﭘﻴﻤﺎﻧـﻪ‬
‫ﺣﺪﺍﻗﻞ ﻳﮑﺒﺎﺭ ﺍﻣﺘﺤﺎﻥ ﺷﺪﻩ ﺍﻧﺪ‪.‬‬
‫ﻫﻤﻪ ﺗﺼﻤﻴﻢ ﮔﻴﺮﻳﻬﺎﻱ ﻣﻨﻄﻘﻲ ﺭﺍ ﺩﺭ ﺩﻭ ﺑﺨﺶ ﺩﺭﺳﺖ ﻭ ﻏﻠﻂ‬
‫ﺍﻣﺘﺤﺎﻥ ﻣﻲ ﮐﻨﺪ‪.‬‬
‫ﻫﻤﻪ ﺣﻠﻘﻪ ﻫﺎ ﺭﺍ ﺩﺭ ﻣﺮﺯﻫﺎ ﻭ ﺩﺭ ﺩﺍﺧﻞ ﻣﺮﺯﻫﺎﻱ ﻋﻤﻠﻴﺎﺗﻲ ﺁﻧﻬـﺎ‬
‫ﺍﺟﺮﺍ ﻣﻲ ﮐﻨﺪ‪.‬‬
‫ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻫﻬﺎﻱ ﺩﺍﺧﻠﻲ ﺭﺍ ﺍﻣﺘﺤﺎﻥ ﻣﻲ ﮐﻨﺪ ﺗﺎ ﺍﻋﺘﺒﺎﺭ ﺁﻧﻬـﺎ‬
‫ﺛﺎﺑﺖ ﺷﻮﺩ‪.‬‬
‫‪ -۱-۲-۳‬ﺗﺴﺖ ﻣﺴﻴﺮﻫﺎﻱ ﭘﺎﻳﻪ‬
‫‪ -۳-۲-۳‬ﭼﺎﻟﺸﻬﺎﻱ ﻫﻤﺮﺍﻩ ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻔﻴﺪ‬
‫ﺍﻳﻦ ﺗﺴﺖ ﻧﻴﺰ ﺧﺎﻟﻲ ﺍﺯ ﻧﻘﺺ ﻧﻤﻲ ﺑﺎﺷﺪ‪ .‬ﻫﻤﺎﻧﻄﻮﺭ ﮐـﻪ ﺍﺷـﺎﺭﻩ ﺷـﺪ‪ ،‬ﺑـﺮﺍﻱ‬
‫ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻔﻴﺪ ﻧﻴﺎﺯ ﺑﻪ ﮐﺪ ﺑﺮﻧﺎﻣﻪ ﻣﻲ ﺑﺎﺷﺪ‪ ،‬ﻳﮑﻲ ﺍﺯ ﻣﺸﮑﻼﺕ ﻣﻬﻢ ﺍﻳﻦ‬
‫ﺗﺴﺖ ﺑﻪ ﺧﺼﻮﺹ ﺩﺭ ‪CBS‬ﻫﺎ ﻋﺪﻡ ﺩﺭ ﺩﺳﺘﺮﺱ ﺑﻮﺩﻥ ﮐﺪ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺖ‪ ،‬ﺑﻪ‬
‫ﺧﺼﻮﺹ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻦ ﻧﮑﺘﻪ ﮐﻪ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﻣﻮﻟﻔـﻪ ﻫـﺎ ﺑـﻪ ﺻـﻮﺭﺕ ‪off-‬‬
‫‪ the-shelf‬ﺧﺮﻳﺪﺍﺭﻱ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫ﺑﻪ ﻋﻠﺖ ﮔﺴﺘﺮﺩﻩ ﺑﻮﺩﻥ ﺩﺍﻣﻨﻪ ﺗﺴﺖ ﺟﻌﺒﻪ ﺳﻔﻴﺪ‪ ،‬ﻓﻌﺎﻟﻴﺖ ﺯﻳﺎﺩﻱ ﺭﺍ ﻃﻠـﺐ‬
‫ﻣﻲ ﮐﻨﺪ‪ ،‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺍﺯ ﺍﺑﺰﺍﺭﻫﺎﻱ ﺧﺎﺻﻲ ﺑـﻪ ﻣﻨﻈـﻮﺭ ﺍﺗﻮﻣﺎﺗﻴـﮏ ﮐـﺮﺩﻥ ﺍﻳـﻦ‬
‫ﺗﺴﺖ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ‪ .‬ﺍﻣﺎ ﺑﻪ ﺩﻟﻴﻞ ﻧﺎﻫﻤﮕﻨﻲ ﻓﺮﺍﻭﺍﻧـﻲ ﮐـﻪ ﺩﺭ ‪CBS‬ﻫـﺎ‬
‫ﻭﺟﻮﺩ ﺩﺍﺭﺩ)ﺑﻪ ﻋﻠﺖ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺯﺑﺎﻧﻬﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻣﺨﺘﻠﻒ‪ ،‬ﭼـﺎﺭﭼﻮﺏ‬
‫ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﻭ ‪ ( ....‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﺑﺰﺍﺭ ﺧﺎﺻﻲ ﺑﺮﺍﻱ ﺗﺴﺖ ﺗﻤﺎﻣﻲ ‪CBS‬ﻫـﺎ‬
‫ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﻋﻤﻠﻲ ﺑﻪ ﻧﻈﺮ ﻧﻤﻲ ﺭﺳﺪ‪.‬‬
‫ﺗﺴﺖ ﻣﺴﻴﺮﻫﺎﻱ ﭘﺎﻳﻪ ﻧﺨﺴﺘﻴﻦ ﺑﺎﺭ ﺗﻮﺳﻂ ﺗﺎﻡ ﻣﮏ ﮐﻴـﺐ ﭘﻴـﺸﻨﻬﺎﺩ ﺷـﺪ‪.‬‬
‫ﺭﻭﺵ ﻣﺴﻴﺮﻫﺎﻱ ﭘﺎﻳﻪ‪ ،‬ﻃﺮﺍﺡ ﻣﻮﺍﺭﺩ ﺁﺯﻣﻮﻥ ﺭﺍ ﻗﺎﺩﺭ ﻣـﻲ ﺳـﺎﺯﺩ ﺗـﺎ ﻣﻴﺰﺍﻧـﻲ‬
‫ﻣﻨﻄﻘﻲ ﺍﺯ ﭘﻴﭽﻴﺪﮔﻲ ﺭﻭﻳﻪ ﺍﻱ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩ ﻭ ﺍﺯ ﺍﻳـﻦ ﻣﻌﻴـﺎﺭ ﺑـﻪ ﻋﻨـﻮﺍﻥ‬
‫ﺭﺍﻫﻨﻤﺎﻳﻲ ﺟﻬﺖ ﺗﻌﺮﻳﻒ ﻳﮏ ﻣﺠﻤﻮﻋﻪ ﭘﺎﻳـﻪ ﺍﺯ ﻣـﺴﻴﺮﻫﺎﻱ ﺍﺟـﺮﺍ ﺍﺳـﺘﻔﺎﺩﻩ‬
‫ﮐﻨﺪ‪ .‬ﻣﻮﺍﺭﺩ ﺗﺴﺖ ﺑﺪﺳﺖ ﺁﻣﺪﻩ ﺑﺮﺍﻱ ﺍﻣﺘﺤﺎﻥ ﮐﺮﺩﻥ ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﭘﺎﻳﻪ‪ ،‬ﻫﺮ‬
‫ﺩﺳﺘﻮﺭ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺣﺪﺍﻗﻞ ﻳﮏ ﺑﺎﺭ ﺩﺭ ﺍﺛﻨﺎﻱ ﺁﺯﻣﻮﻥ ﺍﺟﺮﺍ ﺧﻮﺍﻫﻨﺪ ﮐﺮﺩ‪.‬‬
‫ﺍﻳﻦ ﺗﺴﺖ ﺍﺯ ﮔﺮﺍﻑ ﺧﺎﺻﻲ ﺑﻪ ﻧﺎﻡ ﮔﺮﺍﻑ ﺟﺮﻳﺎﻥ ﺍﺳـﺘﻔﺎﺩﻩ ﻣـﻲ ﮐﻨـﺪ‪ .‬ﺍﻳـﻦ‬
‫ﮔﺮﺍﻑ‪ ،‬ﺟﺮﻳﺎﻥ ﮐﻨﺘﺮﻝ ﻣﻨﻄﻘﻲ ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺸﺎﻧﻪ ﮔﺬﺍﺭﻱ ﺧﺎﺻﻲ ﻧﺸﺎﻥ‬
‫ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﺩﺭ ﺍﻳﻨﺠﺎ ﺑﺮﺍﻱ ﺍﺩﺍﻣﻪ ﺑﺤﺚ ﻧﻴﺎﺯ ﺑﻪ ﺗﻌﺮﻳﻒ ﻣﻌﻴﺎﺭ ﺩﻳﮕﺮﻱ ﺑﻪ ﻧﺎﻡ ﭘﻴﭽﻴـﺪﮔﻲ‬
‫ﺳﻴﮑﻠﻮﻣﺎﺗﻴﮏ ﺩﺍﺭﻳﻢ‪ .‬ﺍﻳﻦ ﻣﻌﻴﺎﺭ‪ ،‬ﻣﻴﺰﺍﻧﻲ ﺍﺯ ﭘﻴﭽﻴـﺪﮔﻲ ﻣﻨﻄﻘـﻲ ﻳـﮏ ﻧـﺮﻡ‬
‫ﺍﻓﺰﺍﺭ ﺭﺍ ﺍﺭﺍﺋﻪ ﻣﻲ ﺩﻫﺪ‪ .‬ﻣﻘﺪﺍﺭ ﻣﺤﺎﺳﺒﻪ ﺷﺪﻩ ﺑﺮﺍﻱ ﭘﻴﭽﻴﺪﮔﻲ ﺳﻴﮑﻠﻮﻣﺎﺗﻴﮏ‪،‬‬
‫ﺗﻌﺪﺍﺩ ﻣﺴﻴﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺩﺭ ﻣﺠﻤﻮﻋﻪ ﭘﺎﻳﻪ)ﮔﺮﺍﻑ ﺟﺮﻳﺎﻥ( ﻳـﮏ ﺑﺮﻧﺎﻣـﻪ ﺭﺍ‬
‫ﺗﻌﻴﻴﻦ ﻣﻲ ﮐﻨﺪ ﻭ ﻳﮏ ﺣﺪ ﻓﻮﻗﺎﻧﻲ ﺑﺮﺍﻱ ﺗﻌﺪﺍﺩ ﻣﺴﻴﺮﻫﺎﻳﻲ ﻓﺮﺍﻫﻢ ﻣﻲ ﺁﻭﺭﺩ‬
‫ﮐﻪ ﺑﺎﻳﺪ ﺍﺟﺮﺍ ﺷﻮﻧﺪ ﺗﺎ ﺍﻃﻤﻴﻨﺎﻥ ﺣﺎﺻﻞ ﺷﻮﺩ ﮐﻪ ﻫﻤـﻪ ﺩﺳـﺘﻮﺭﻫﺎ ﺣـﺪﺍﻗﻞ‬
‫ﻳﮏ ﺑﺎﺭ ﺍﺟﺮﺍ ﺷﺪﻩ ﺍﻧﺪ‪ .‬ﻣﺴﻴﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ‪ ،‬ﻫﺮ ﻣﺴﻴﺮﻱ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺖ ﮐـﻪ‬
‫ﺣﺪﺍﻗﻞ ﻳﮏ ﻣﺠﻤﻮﻋﻪ ﺟﺪﻳﺪ ﺍﺯ ﺩﺳﺘﻮﺭﻫﺎﻱ ﭘﺮﺩﺍﺯﺵ ﻳﺎ ﻳﮏ ﺩﺳﺘﻮﺭ ﺷﺮﻃﻲ‬
‫ﺭﺍ ﻣﻌﺮﻓﻲ ﮐﻨﺪ‪.‬‬
‫ﭘﺲ ﺍﺯ ﺗﻌﻴﻴﻦ ﮐﺮﺩﻥ ﺗﻌﺪﺍﺩ ﻣﺴﻴﺮﻫﺎﻱ ﭘﺎﻳﻪ ﺑﺎﻳﺪ ﻣـﻮﺍﺭﺩ ﺁﺯﻣـﻮﻥ ﺭﺍ ﺑﺪﺳـﺖ‬
‫ﺁﻭﺭﺩ‪ ،‬ﮐﻪ ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﺭﻭﺷﻬﺎﻱ ﻣﺨﺘﻠﻔـﻲ ﻣﺎﻧﻨـﺪ ﻣـﺎﺗﺮﻳﺲ ﮔـﺮﺍﻑ ﺟﺮﻳـﺎﻥ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ‪ .‬ﺍﻳﻦ ﺭﻭﺵ ﻳﮏ ﺷﻴﻮﻩ ﺳﻴﺴﺘﻤﺎﺗﻴﮏ ﺑﺮﺍﻱ ﺗﻬﻴﻪ ﻣﻮﺍﺭﺩ ﺁﺯﻣﻮﻥ‬
‫ﺑﺪﺳﺖ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﺩﺭ ﺍﺑﺘﺪﺍ ﺑﻪ ﻃﻮﺭ ﺧﻼﺻﻪ ﺩﻻﻳـﻞ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ‪ UML‬ﺭﺍ ﺑﻴـﺎﻥ ﻣـﻲ ﮐﻨـﻴﻢ‪.‬‬
‫ﺳﭙﺲ ﺑﻪ ﺗﻮﺿﻴﺢ ﺩﻭ ﻣﻮﺭﺩ ﺍﺯ ﺩﻳﺎﮔﺮﺍﻣﻬﺎﻱ ‪ UML‬ﮐﻪ ﺩﺭ ﺗﺴﺖ ﺑﻪ ﺁﻧﻬﺎ ﻧﻴﺎﺯ‬
‫ﺩﺍﺭﻳﻢ‪ ،‬ﺧﻮﺍﻫﻴﻢ ﭘﺮﺩﺍﺧﺖ‪ .‬ﭼﺎﻟﺸﻬﺎﻳﻲ ﺭﺍ ﮐﻪ ﺩﺭ ﻧﺘﻴﺠﻪ ﺗﻐﻴﻴﺮ ﻣﻮﻟﻔـﻪ ﻫـﺎ ﺑـﺎ‬
‫ﺁﻧﻬﺎ ﻣﻮﺍﺟﻪ ﻫﺴﺘﻴﻢ ﺭﺍ ﻣﻌﺮﻓﻲ ﮐﺮﺩﻩ ﻭ ﺳﺮﺍﻧﺠﺎﻡ ﺭﺍﻫﮑﺎﺭﻫﺎﻳﻲ ﺭﺍ ﺑﺮﺍﻱ ﺗـﺴﺖ‬
‫ﻗﺴﻤﺘﻬﺎﻳﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺑﺮﺍﻱ ﻫﺮ ﻳﮏ ﺍﺯ ﺍﻧـﻮﺍﻉ ﻧﮕﻬـﺪﺍﺭﻱ ﺍﺻـﻼﺣﻲ‪ ،‬ﻭﻓﻘـﻲ ﻭ‬
‫ﺑﻬﺒﻮﺩﻱ ﺍﺭﺍﺋﻪ ﺧﻮﺍﻫﻴﻢ ﮐﺮﺩ‪.‬‬
‫‪ -۲-۲-۳‬ﺗﺴﺖ ﺳﺎﺧﺘﺎﺭ ﮐﻨﺘﺮﻟﻲ‬
‫‪ -۱-۴‬ﭼﺮﺍ ‪UML‬‬
‫ﺗﮑﻨﻴﮏ ﺗﺴﺖ ﻣﺴﻴﺮﻫﺎﻱ ﭘﺎﻳﻪ ﺑـﻪ ﺗﻨﻬـﺎﻳﻲ ﺑـﺮﺍﻱ ﺗـﺴﺖ ﮐـﺮﺩﻥ ﺳـﺎﺧﺘﺎﺭ‬
‫ﮐﻨﺘﺮﻟﻲ ﺑﺮﻧﺎﻣﻪ ﮐﺎﻓﻲ ﻧﻴﺴﺖ‪ .‬ﺑﻪ ﻣﻨﻈﻮﺭ ﺑﻬﺒﻮﺩ ﮐﻴﻔﻴﺖ ﺁﺯﻣﻮﻥ ﺟﻌﺒﻪ ﺳـﻔﻴﺪ‬
‫ﺍﺯ ﺗﺴﺖ ﻫﺎﻱ ﺩﻳﮕﺮ ﺑﺎﻳﺪ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ ﮐﻪ ﻣﻬﻤﺘﺮﻳﻦ ﺁﻧﻬﺎ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ‪:‬‬
‫• ﺗﺴﺖ ﺷﺮﻃﻬﺎﻱ ﻣﻨﻄﻘﻲ ﺑﺮﻧﺎﻣﻪ‬
‫• ﺗﺴﺖ ﺟﺮﻳﺎﻥ ﺩﺍﺩﻩ ﻫﺎ‬
‫• ﺗﺴﺖ ﺣﻠﻘﻪ ﻫﺎ‬
‫ﺩﺭ ﺍﻳﻦ ﺗﺴﺖ ﺑﻪ ﻃﻮﺭ ﺧﺎﺹ ﺑﺮ ﺭﻭﻱ ﻗـﺴﻤﺘﻲ ﺍﺯ ﺑﺮﻧﺎﻣـﻪ ﻣﺎﻧﻨـﺪ ﺍﻟﮕـﻮﺭﻳﺘﻢ‬
‫ﻣﻮﺟﻮﺩ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺮﮐﺰ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫ﺑﻪ ﻃﻮﺭ ﮐﻠﻲ ﺑﻪ ﭼﻬﺎﺭ ﺩﻟﻴﻞ ﺯﻳﺮ ﺍﺯ ‪ UML‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﮐﻨﻴﻢ‪:‬‬
‫‪8‬‬
‫• ﺷﻔﺎﻓﻴﺖ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ‬
‫‪ UML‬ﺍﻃﻼﻋﺎﺕ ﺳﻄﺢ ﺑﺎﻻﻳﻲ ﺭﺍ ﺑﺮﺍﻱ ﺗﻮﺻـﻴﻒ ﺩﺍﺧﻠـﻲ ﻣﻮﻟﻔـﻪ ﻫـﺎ‬
‫ﻓﺮﺍﻫﻢ ﻣﻲ ﮐﻨﺪ‪ .‬ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺠﺮﻳـﺪﻱ ﮐـﻪ ﻓـﺮﺍﻫﻢ ﻣـﻲ‬
‫ﮐﻨﺪ‪ ،‬ﻣﺎ ﺭﺍ ﺍﺯ ﻣﻼﺣﻈﺎﺕ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺟﺪﺍ ﻣﻲ ﺳـﺎﺯﺩ‪ .‬ﺗﺠﺮﻳـﺪ ﻣـﻲ ﺗﻮﺍﻧـﺪ‬
‫ﺳﻄﻮﺡ ﻣﺨﺘﻠﻔـﻲ ﺍﺯ ﺟﺰﺋﻴـﺎﺕ ﺭﺍ ﺩﺭ ‪ UML‬ﺩﺍﺭﺍ ﺑﺎﺷـﺪ‪ .‬ﺑـﻪ ﻋﻨـﻮﺍﻥ ﻣﺜـﺎﻝ‬
‫ﻣﻤﮑﻦ ﺍﺳﺖ ﺷﻤﺎ ﺑﺮﺍﻱ ﻳﮏ ﺳﻨﺎﺭﻳﻮ ﺍﺯ ﻧﻤﻮﺩﺍﺭﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‬
‫‪ -۳-۳‬ﺗﺴﺖ ﻣﺒﺘﻨﻲ ﺑﺮ ‪ UML‬ﺑﺮﺍﻱ ‪CBS‬ﻫﺎ‬
‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﻄﺎﻟﺐ ﻗﺒﻠﻲ ﺑﻪ ﻧﻈﺮ ﻣﻲ ﺭﺳﺪ ﮐﻪ ﺑﺎﻳﺪ ﺍﺯ ﺷﻴﻮﻩ ﺍﻱ ﮐﺎﺭﺍﺗﺮ ﺑﺮﺍﻱ‬
‫ﺗﺴﺖ ‪CBS‬ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﮐـﺮﺩ‪ .‬ﻣـﺎ ﺗـﺴﺖ ‪CBS‬ﻫـﺎ ﻣﺒﺘﻨـﻲ ﺑـﺮ ‪ UML‬ﺭﺍ‬
‫ﭘﻴﺸﻨﻬﺎﺩ ﻣﻲ ﮐﻨﻴﻢ‪ .‬ﺍﻟﺒﺘﻪ ﺍﻳﻦ ﻣﻄﻠﺐ ﺩﻻﻟﺖ ﺑﺮ ﻋﺪﻡ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻭ ﺷـﻴﻮﻩ‬
‫ﻗﺒﻠﻲ ﺗﺴﺖ)ﺟﻌﺒﻪ ﺳﻔﻴﺪ‪ ،‬ﺟﻌﺒﻪ ﺳﻴﺎﻩ( ﻧﺪﺍﺭﺩ‪ ،‬ﺑﻠﮑـﻪ ﺑـﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﺷـﻴﻮﻩ‬
‫ﺗﺴﺖ ﻣﺒﺘﻨﻲ ﺑﺮ ‪ UML‬ﺑﻪ ﺍﻧﺘﺨﺎﺏ ﻫﺪﻓﻤﻨﺪ ﻣﻮﺍﺭﺩ ﺗﺴﺖ ﺑـﺮﺍﻱ ﺩﻭ ﺷـﻴﻮﻩ‬
‫ﺗﺴﺖ ﭘﺎﻳﻪ ﺍﻗـﺪﺍﻡ ﻣـﻲ ﮐﻨـﻴﻢ‪ .‬ﺩﺭ ﺣﻘﻴﻘـﺖ ﻣـﻮﺍﺭﺩ ﺗـﺴﺘﻲ ﺭﺍ ﮐـﻪ ﺷـﺎﻣﻞ‬
‫ﻗﺴﻤﺘﻬﺎﻱ ﺗﻐﻴﻴﺮ ﮐﺮﺩﻩ ﺑﺮﻧﺎﻣﻪ ﻣﻲ ﺷﻮﺩ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫ﺩﺭ ﻗﺴﻤﺖ ﺍﺑﺘﺪﺍ ﺩﻻﻳﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ UML‬ﺭﺍ ﺑﻴﺎﻥ ﮐﺮﺩﻩ ﻭ ﺳﭙﺲ ﺑﻪ ﻧﺤـﻮﻩ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺭﻭﺵ ﺑﺮﺍﻱ ﺗﺴﺖ ‪CBS‬ﻫﺎ ﺧﻮﺍﻫﻴﻢ ﭘﺮﺩﺍﺧﺖ‪.‬‬
‫‪ -۴‬ﭼﺎﻟﺸﻬﺎﻱ ﻧﮕﻬﺪﺍﺭﻱ ﻭ ﺗﺴﺖ ﻣﺒﺘﻨﻲ ﺑﺮ ‪UML‬‬
‫‪Implementation Transparency 8‬‬
‫ﻭ ﺧﻮﺩ ﺁﻧﻬﺎ ﻧﻴﺰ ﺑﻪ ﺻﻮﺭﺕ ‪ nested‬ﺑﺎﺷﻨﺪ‪ ،‬ﮐﻪ ﻧﻤﻮﺩﺍﺭﻫـﺎﻱ ‪ nested‬ﺷـﺪﻩ‬
‫ﺩﺍﺭﺍﻱ ﺟﺰﺋﻴﺎﺕ ﺑﻴﺸﺘﺮﻱ ﻣﻲ ﺑﺎﺷﻨﺪ‪.‬‬
‫‪9‬‬
‫• ﻫﻤﮕﻨﻲ ﻭ ﺩﺳﺘﺮﺳﻲ‬
‫‪ UML‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﮏ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺻﻨﻌﺘﻲ ﺑﺮﺍﻱ ﻧﻤﺎﺩﻫـﺎﻱ ﻣﺪﻟـﺴﺎﺯﻱ‬
‫ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﭘﺪﻳﺪﺍﺭ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﺑﻪ ﻫﻤﻴﻦ ﺩﻟﻴـﻞ ﺍﺑﺰﺍﺭﻫـﺎﻱ ﺯﻳـﺎﺩﻱ ﺑـﺮﺍﻱ ﺁﻥ‬
‫ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﻭ ﺍﺯ ﻃﺮﻑ ﺩﻳﮕﺮ ﻳﮏ ﺯﺑﺎﻥ ﻣﺸﺘﺮﮎ ﺑـﻴﻦ ﺍﻓـﺮﺍﺩ ﺑـﺮﺍﻱ ﺑﻴـﺎﻥ‬
‫ﺟﻨﺒﻪ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺳﻴﺴﺘﻢ ﺍﺳﺖ‪.‬‬
‫‪10‬‬
‫• ﺍﻣﮑﺎﻥ ﭘﺬﻳﺮﻱ‬
‫ﻫﺮ ﻓﺮﺩ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺎ ﺗﻮﺟـﻪ ﺑـﻪ ﻫﺰﻳﻨـﻪ ﻭ ﺯﻣـﺎﻥ ﺳـﻄﻮﺡ ﻣﺨﺘﻠﻔـﻲ ﺍﺯ‬
‫ﺟﺰﺋﻴﺎﺕ ﺭﺍ ﺗﻮﺳﻂ ‪ UML‬ﺍﺭﺍﺋﻪ ﺩﻫﺪ‪ .‬ﺑـﻪ ﻋﺒـﺎﺭﺕ ﺩﻳﮕـﺮ ﻗﺎﺑﻠﻴـﺖ ﺗﻄﺒﻴـﻖ‬
‫ﺯﻳﺎﺩﻱ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺤﺪﻭﺩﻳﺘﻬﺎﻱ ﺣﻞ ﻣﺴﺎﻟﻪ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻨﺪﮔﺎﻥ‬
‫ﻗﺮﺍﺭ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫‪11‬‬
‫• ﺳﺎﺩﮔﻲ ﺍﺗﻮﻣﺎﺳﻴﻮﻥ‬
‫ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺩﻳـﺎﮔﺮﻡ ﻫـﺎﻱ ‪ UML‬ﺑـﻪ ﻃـﻮﺭ ﺍﺗﻮﻣﺎﺗﻴـﮏ ﻣـﻲ ﺗﻮﺍﻧﻨـﺪ‬
‫ﭘﺮﺩﺍﺯﺵ ﺷﻮﻧﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻣﻮﺭﺩﻫﺎﻱ ﺗﺴﺖ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑـﻪ ﻃـﻮﺭ ﺍﺗﻮﻣﺎﺗﻴـﮏ‬
‫ﺗﻮﻟﻴﺪ ﺷﻮﻧﺪ‪.‬‬
‫‪ -۲-۴‬ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ‬
‫• ﻋﻤﻠﻴﺎﺗﻲ ﺭﺍ ﮐﻪ ﺍﺯ ﮐﻼﺳﻬﺎﻱ ﺩﻳﮕﺮ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲ ﺷﻮﻧﺪ‪ ،‬ﻧـﺸﺎﻥ‬
‫ﻣﻲ ﺩﻫﺪ‪ .‬ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺗﻌﺎﻣﻞ ﺑـﺎ ﺍﺷـﻴﺎ ﮐﻼﺳـﻬﺎﻱ ﺩﻳﮕـﺮ ﺭﺍ‬
‫ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫• ﺍﻟﮕﻮﻱ ﺍﺭﺗﺒﺎﻃﻲ ﺍﺷﻴﺎ ﺩﺭ ﻳﮏ ﺍﺭﺗﺒﺎﻁ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﺍﻳﻦ ﻧﻤﻮﺩﺍﺭ ﺩﺭ ‪ UML2.0‬ﺑﻪ "ﻧﻤﻮﺩﺍﺭ ﺍﺭﺗﺒﺎﻁ‪ "١٤‬ﺗﻐﻴﻴﺮ ﻧﺎﻡ ﺩﺍﺩﻩ ﺍﺳﺖ‪.‬‬
‫‪ -۳-۴‬ﮔﺬﺍﺭ ﺣﺎﻟﺖ ﻭ ﺭﻭﻳﺪﺍﺩﻫﺎ ﺩﺭ ‪UML‬‬
‫ﺣﺎﻟﺖ ﺷﻲ‪ ،‬ﺗﺮﮐﻴﺒﻲ ﺍﺯ ﻫﻤﻪ ﻣﻘﺎﺩﻳﺮ ﺻﻔﺘﻬﺎ ﻭ ﺍﺷﻴﺎﻳﻲ ﺍﺳﺖ ﮐﻪ ﺷـﻲ‬
‫ﺩﺭﺑﺮﮔﻴﺮﻧﺪﻩ ﺁﻧﻬﺎﺳﺖ‪ .‬ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﮐﻪ ﺣﺎﻟﺖ ﺷـﻲ ﺗﻨﻬـﺎ ﺑـﻪ ﻣﻘـﺎﺩﻳﺮ‬
‫ﺻﻔﺘﻬﺎ ﻭ ﺭﻭﺍﺑﻄﻲ ﮐﻪ ﺍﺯ ﺑﻴﺮﻭﻥ ﺩﻳﺪﻩ ﻣﻲ ﺷﻮﺩ‪ ،‬ﺍﺷﺎﺭﻩ ﻧﻤﻲ ﺷـﻮﺩ ﻭ ﺷـﺎﻣﻞ‬
‫ﻣﻘﺎﺩﻳﺮ ﺧﺼﻮﺻﻲ ﺷﻲ ﻧﻴﺰ ﻣﻲ ﺷﻮﺩ‪ .‬ﺩﺭ ﺷﮑﻞ ‪ ۴‬ﻳﮏ ﻧﻤﻮﻧﻪ ﺍﺯ ﻧﻤﻮﺩﺍﺭ ﮔﺬﺍﺭ‬
‫ﺣﺎﻟﺖ ﺑﺮﺍﻱ ﻳﮏ ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ ﺧﺎﺹ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﺩﺭ ﻧﻤﻮﺩﺍﺭ ﺣﺎﻟﺖ‪:‬‬
‫• ﭘﻮﻳﺎﻳﻲ ﺍﺷﻴﺎ ﺍﺯ ﻃﺮﻳﻖ ﮔﺬﺭ ﻣﻴﺎﻥ ﺣﺎﻟﺘﻬﺎ ﻣﺪﻝ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫• ﺭﻭﻳﺪﺍﺩ‪ ،‬ﺗﺸﺨﻴﺺ ﻳﮏ ﺣﺎﺩﺛﻪ ﻣﻬﻢ ﺍﺳﺖ ﮐﻪ ﺩﺍﺭﺍﻱ ﺯﻣـﺎﻥ‬
‫ﻭ ﻣﮑﺎﻥ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪١٢‬‬
‫ﺍﻳﻦ ﻧﻤﻮﺩﺍﺭ ﺗﻮﺻﻴﻒ ﮐﻨﻨﺪﻩ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺍﺷﻴﺎ ﺍﺳﺖ ﮐﻪ ﺑﻪ ﻣﻨﻈـﻮﺭ‬
‫ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﭼﻨﺪﻳﻦ ﺭﻓﺘﺎﺭ ﺩﺭ ﺯﻣﻴﻨﻪ ﮐﺎﺭﻱ ﻣﺸﺨﺼﻲ ‪ ١٣‬ﺑﺎ ﻳﮑﺪﻳﮕﺮ ﺗﻌﺎﻣـﻞ‬
‫ﺩﺍﺭﻧﺪ‪ ،‬ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺍﺷﻴﺎ ﺩﺭ ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑـﺎﺭﻱ ﻧﻤﻮﻧـﻪ ﻫـﺎﻳﻲ ﺍﺯ ﮐﻼﺳـﻬﺎ‪ ،‬ﺩﺭ‬
‫ﻧﻤﻮﺩﺍﺭ ﮐﻼﺱ ﻫﺴﺘﻨﺪ‪ .‬ﺷﮑﻞ ‪ ۳‬ﻧﻤﻮﻧﻪ ﺍﻱ ﺍﺯ ﺍﻳﻦ ﻧﻮﻉ ﻧﻤﻮﺩﺍﺭ ﺭﺍ ﻧﺸﺎﻥ ﻣـﻲ‬
‫ﺩﻫﺪ‪.‬‬
‫ﺷﻜﻞ )‪ :(۳‬ﻧﻤﻮﻧﻪ ﺍﻱ ﺍﺯ ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ‬
‫ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ‪:‬‬
‫• ﺍﺷﻴﺎﻳﻲ ﮐﻪ ﺩﺭ ﻳﮏ ﺗﻌﺎﻣﻞ ﺷﺮﮐﺖ ﺩﺍﺭﻧﺪ ﻭ ﺳـﺎﺧﺘﺎﺭ ﺍﻳـﻦ ﺍﺷـﻴﺎ‬
‫ﺍﺳﺖ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫• ﻧﻤﻮﻧﻪ ﻫﺎﻳﻲ ﺍﺯ ﺩﻧﺒﺎﻟﻪ ﻫﺎﻱ ﻣﺠﺎﺯ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻋﻤﻠﻴﺎﺕ ﺭﻭﻱ ﻳـﮏ‬
‫ﺷﻲ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫• ﻣﻌﺎﻧﻲ ﻋﻤﻠﻴﺎﺕ ﺭﺍ ﺑﻴﺎﻥ ﻣﻲ ﺩﺍﺭﺩ‪.‬‬
‫‪Heterogeneity and Availability 9‬‬
‫‪Feasibility 10‬‬
‫‪Easy of Automation 11‬‬
‫‪Collaboration diagram 12‬‬
‫‪Context 13‬‬
‫ﺷﻜﻞ )‪ :(۴‬ﻧﻤﻮﻧﻪ ﺍﻱ ﺍﺯ ﻧﻤﻮﺩﺍﺭ ﺣﺎﻟﺖ ﺑﺮﺍﻱ ﻳﮏ ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ‬
‫‪ -۴-۴‬ﭼﺎﻟﺸﻬﺎﻱ ﻧﮕﻬﺪﺍﺭﻱ‬
‫ﺩﺭ ﻓﺎﺯ ﻧﮕﻬﺪﺍﺭﻱ ‪CBS‬ﻫﺎ ﺑﺎ ﺩﻭ ﭼﺎﻟﺶ ﺯﻳﺮ ﺑﻪ ﻃﻮﺭ ﺧﺎﺹ ﻣﻮﺍﺟﻪ ﻫﺴﺘﻴﻢ‪:‬‬
‫‪ -۱‬ﻫﻨﮕﺎﻣﻲ ﮐﻪ ﻣﻮﻟﻔﻪ ﻫﺎ ﺗﻐﻴﻴﺮ ﻣﻲ ﮐﻨﻨﺪ‪ ،‬ﭼﮕﻮﻧـﻪ ﺍﺯ ﺗـﺎﺛﻴﺮﺍﺕ ﺁﻥ‬
‫ﺁﮔﺎﻩ ﺷﻮﻳﻢ؟‬
‫‪ -۲‬ﭼﮕﻮﻧﻪ ﺑﻪ ﺷـﻴﻮﻩ ﺍﻱ ﮐـﺎﺭﺍ‪ ،‬ﺑـﻪ ﻧﮕﻬـﺪﺍﺭﻱ ﻭ ﺗﻮﺳـﻌﻪ ‪CBS‬ﻫـﺎ‬
‫ﺑﭙﺮﺩﺍﺯﻳﻢ؟‬
‫‪Communication diagram 14‬‬
‫ﺑﺪﻳﻦ ﻣﻨﻈﻮﺭ ﻧﻤﻮﺩﺍﺭﻫﺎﻱ ‪ UML‬ﻣﻌﺮﻓﻲ ﺷﺪﻩ‪ ،‬ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑـﻪ ﻧﺤـﻮﻩ ﻣـﻮﺛﺮ‬
‫ﺍﻳﻦ ﺩﻭ ﺳﻮﺍﻝ ﺭﺍ ﭘﺎﺳﺨﮕﻮ ﺑﺎﺷﻨﺪ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﺷـﮑﻞ ‪ ۵‬ﻧﻤﻮﺩﺍﺭﻫـﺎﻱ‬
‫ﻣﺮﺑﻮﻁ ﺑﻪ ﻳﮏ ﺳﻴﺴﺘﻢ ‪ ATM‬ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷـﺪﻩ ﺍﺳـﺖ ﮐـﻪ ﺩﻭ ﻋﻤﻠﻴـﺎﺕ‬
‫‪ Eject‬ﻭ ‪ confiscate‬ﺑﻪ ﺁﻥ ﺍﺿﺎﻓﻪ ﺷـﺪﻩ ﺍﺳـﺖ‪ .‬ﺑـﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﻧﻤـﻮﺩﺍﺭ‬
‫ﻫﻤﮑﺎﺭﻱ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﺑﻪ ﺭﺍﺣﺘﻲ ﺑﻔﻬﻤﻴﻢ ﮐﻪ ﭼﻪ ﻗﺴﻤﺘﻬﺎﻳﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺍﻳﻦ‬
‫ﺗﻐﻴﻴﺮ ﺗﺎﺛﻴﺮ ﻣﻲ ﭘﺬﻳﺮﻧﺪ‪ .‬ﺍﺯ ﺍﻳﻦ ﺩﻭ ﻧﻤﻮﺩﺍﺭ ﺑﺮﺍﻱ ﺍﻳﺠـﺎﺩ ﺗـﺴﺘﻬﺎﻱ ﻣﻨﺎﺳـﺐ‬
‫ﺑﺮﺍﻱ ﺗﺴﺖ ﺗﻤﺎﻣﻲ ﺣﺎﻟﺘﻬﺎﻱ ﺗﻐﻴﻴﺮ ﻳﺎﻓﺘﻪ ﻭ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ‪.‬‬
‫ﻣﻲ ﺷﻮﺩ ﮐﻪ ﻭﺍﺳﻄﻬﺎﻱ ﺑﺮﻧﺎﻣﻪ ﺗﻐﻴﻴﺮ ﭘﻴﺪﺍ ﻧﮑﻨﻨﺪ‪ ،‬ﺑﻨـﺎﺑﺮﺍﻳﻦ ﺗﻐﻴﻴـﺮﺍﺕ ﺩﺍﺩﻩ‬
‫ﺍﻱ ﺑﻨﺪﺭﺕ ﺍﺗﻔﺎﻕ ﻣﻲ ﺍﻓﺘﺪ ﻭ ﭘﻴﮕﻴﺮﻱ ﺁﻧﻬﺎ ﻧﻴﺰ ﺭﺍﺣﺖ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺷﻜﻞ )‪ :(۶‬ﭘﻴﮕﻴﺮﻱ ﺗﻐﻴﻴﺮﺍﺕ ﻧﺎﺷﻲ ﺍﺯ ﺗﺎﺛﻴﺮﺍﺕ ﺩﺍﺩﻩ ﺍﻱ‬
‫ﺗﻐﻴﻴــﺮﺍﺕ ﮐﻨﺘﺮﻟــﻲ ﺭﺍ ﻧﻴــﺰ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻭ ﺩﻳــﺎﮔﺮﺍﻡ ﻫﻤﮑــﺎﺭﻱ ﻭ‬
‫ﺣﺎﻟﺖ)ﺷﮑﻞ‪ (۵‬ﭘﻴﮕﻴﺮﻱ ﻣﻲ ﮐﻨﻨـﺪ‪ .‬ﺩﺭ ﺣﻘﻴﻘﻴـﺖ ﺑـﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳـﻦ ﺩﻭ‬
‫ﻧﻤﻮﺩﺍﺭ ﻣﻲ ﺗﻮﺍﻥ ﺑﻪ ﺑﺮﺭﺳﻲ ﺣﺮﮐﺖ ‪ token‬ﺑﻴﻦ ﺣﺎﻟﺘﻬـﺎ ﻭ ﺍﺷـﻴﺎﺋﻲ ﮐـﻪ ﺍﺯ‬
‫ﺍﻳﻦ ﺣﺮﮐﺖ ﺗﺎﺛﻴﺮ ﻣﻲ ﭘﺬﻳﺮﻧﺪ‪ ،‬ﭘﺮﺩﺍﺧﺖ‪ .‬ﺩﺭ ﻧﺘﻴﺠﻪ ﺍﻧﺘﺨﺎﺏ ﺯﻳـﺮ ﻣﺠﻤﻮﻋـﻪ‬
‫ﺍﻱ ﺍﺯ ﺗﺴﺖ ﻫﺎﻱ ﻗﺒﻠﻲ ﺑﻪ ﮔﻮﻧﻪ ﺍﻱ ﮐﺎﺭﺍﺗﺮ ﻭ ﻣﻮﺛﺮ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ﺗﺎ ﺩﻭﺑﺎﺭﻩ‬
‫ﺑﻪ ﺗﺴﺖ ﺑﺮﻧﺎﻣﻪ ﭘﺮﺩﺍﺧﺘﻪ ﻭ ﻗﺴﻤﺘﻬﺎﻳﻲ ﮐﻪ ﻣﻤﮑﻦ ﺍﺳﺖ ﺩﭼﺎﺭ ﺧﻄـﺎ ﺷـﻮﻧﺪ‬
‫ﺭﺍ ﺗﺴﺖ ﻧﻤﺎﻳﻴﻢ‪.‬‬
‫‪ -۶-۴‬ﻓﻌﺎﻟﻴﺘﻬﺎﻱ ﻧﮕﻬﺪﺍﺭﻱ ﻭﻓﻘﻲ ﻭ ﺑﻬﺒﻮﺩ ﺩﻫﻲ‬
‫ﺷﻜﻞ )‪ :(۵‬ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﻧﻤﻮﺩﺍﺭﻫﺎﻱ ﻫﻤﮑﺎﺭﻱ ﻭ ﺣﺎﻟﺖ‬
‫‪ -۵-۴‬ﺗﺴﺖ ﺭﮔﺮﺳﻴﻮﻥ ﺑﺮﺍﻱ ﻧﮕﻬﺪﺍﺭﻱ ﺍﺻﻼﺣﻲ‬
‫ﺍﺑﺘﺪﺍ ﺗﻮﺿﻴﺢ ﻣﺨﺘﺼﺮﻱ ﺩﺭ ﻣﻮﺭﺩ ﺗﺴﺖ ﺭﮔﺮﺳﻴﻮﻥ ﻣﻲ ﺩﻫﻴﻢ ﻭ ﺳـﭙﺲ ﺑـﻪ‬
‫ﺗﺎﺛﻴﺮ ﺍﻳﻦ ﺗﺴﺖ ﺩﺭ ﻧﮕﻬﺪﺍﺭﻱ ﺍﺻﻼﺣﻲ ﺧﻮﺍﻫﻴﻢ ﭘﺮﺩﺍﺧﺖ‪.‬‬
‫‪ -۱-۵-۴‬ﺗﺴﺖ ﺭﮔﺮﺳﻴﻮﻥ‬
‫ﻫﺮ ﺑﺎﺭ ﮐﻪ ﻳﮏ ﻣﻮﻟﻔﻪ ﺟﺪﻳﺪﻱ ﺍﺿﺎﻓﻪ ﻣﻲ ﺷـﻮﺩ ﻳـﺎ ﻗـﺴﻤﺘﻲ ﺍﺯ ﺁﻥ ﺗﻐﻴﻴـﺮ‬
‫ﮐﺮﺩﻩ ﻳﺎ ﺣﺬﻑ ﻣﻲ ﺷﻮﺩ ﻧﻴﺎﺯ ﺑﻪ ﺗﺴﺖ ﻣﺠﺪﺩ ﺟﺎﻣﻌﻴﺖ ﻣﻮﻟﻔﻪ ﻭ ﺑﺮﻧﺎﻣـﻪ ﺑـﻪ‬
‫ﻭﺟﻮﺩ ﻣﻲ ﺁﻳﺪ‪ .‬ﺍﻳﻦ ﺗﻐﻴﻴﺮﺍﺕ ﻣﻤﮑﻦ ﺍﺳﺖ ﺑﺎﻋﺚ ﻣﺸﮑﻼﺕ ﺩﺭ ﻋﻤﻠﮑﺮﺩﻫﺎﻳﻲ‬
‫ﺑﺸﻮﺩ ﮐﻪ ﻗﺒﻼ ﺑﺪﻭﻥ ﻧﻘﺺ ﮐﺎﺭ ﻣﻲ ﮐﺮﺩﻩ ﺍﻧﺪ‪ .‬ﺗﺴﺖ ﺭﮔﺮﺳـﻴﻮﻥ ﻋﺒـﺎﺭﺕ ﺍﺯ‬
‫ﺍﺟﺮﺍﻱ ﺩﻭﺑﺎﺭﻩ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺴﺘﻬﺎﺳﺖ ﮐﻪ ﻗﺒﻼ ﺍﺟـﺮﺍ ﺷـﺪﻩ ﺍﻧـﺪ ﺗـﺎ‬
‫ﺍﻃﻤﻴﻨﺎﻥ ﺣﺎﺻﻞ ﺷﻮﺩ ﮐﻪ ﺗﻐﻴﻴﺮﺍﺕ ﺑﺎﻋﺚ ﺍﻧﺘﺸﺎﺭ ﺍﺛﺮﺍﺕ ﺟـﺎﻧﺒﻲ ﻧﺎﺧﻮﺍﺳـﺘﻪ‬
‫ﻧﺸﺪﻩ ﺍﻧﺪ‪.‬‬
‫ﺑﺮﺍﻱ ﺍﻳﻦ ﻧﻮﻉ ﺍﺯ ﻓﻌﺎﻟﻴﺘﻬﺎﻱ ﻧﮕﻬﺪﺍﺭﻱ ﻧﻴﺎﺯﻣﻨﺪ ﺗﻌﺮﻳﻒ ﻣﺤﺪﻭﺩﻳﺖ ﻭ ﺯﻣﻴﻨـﻪ‬
‫ﮐﺎﺭﻱ ﻣﻲ ﺑﺎﺷﻴﻢ‪ .‬ﻣﺤﺪﻭﺩﻳﺖ ‪ ١٥‬ﻳﮏ ﻣﺘﻐﻴﻴﺮ ﺑﻮﻟﻲ ﺍﺳﺖ ﮐﻪ ﺑـﺮﺍﻱ ﺍﻧﺘﺨـﺎﺏ‬
‫ﻳﮏ ﻣﺴﻴﺮ ﺑﻪ ﮐﺎﺭ ﻣﻲ ﺭﻭﺩ‪ .‬ﺯﻣﻴﻨﻪ ﮐﺎﺭﻱ ‪ ١٦‬ﻳـﮏ ﻣﺠﻤﻮﻋـﻪ ﺍﺯ ﻣﺤـﺪﻭﺩﻳﺘﻬﺎ‬
‫ﺍﺳﺖ ﮐﻪ ﺑﺎ ﻳﮏ ﻣﺴﻴﺮ ﺍﺟﺮﺍﻳﻲ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺭﺩ‪.‬‬
‫ﺗﺎﺛﻴﺮ ﺗﻐﻴﻴﺮﺍﺕ ﺑﺮ ﺭﻭﻱ ﻭﺍﺑﺴﺘﮕﻲ ﺩﺍﺩﻩ ﺍﻱ ﺩﺭ ﺍﻳﻦ ﺣﺎﻻﺕ ﻣﺸﺎﺑﻪ ﻧﮕﻬـﺪﺍﺭﻱ‬
‫ﺍﺻﻼﺣﻲ ﺍﺳﺖ‪ .‬ﺍﻣﺎ ﺗﺎﺛﻴﺮ ﺗﻐﻴﻴﺮﺍﺕ ﺑﺮ ﺭﻭﻱ ﺩﻧﺒﺎﻟﻪ ﻫﺎﻱ ﮐﻨﺘﺮﻟـﻲ ﺑـﻪ ﺩﺳـﺘﻪ‬
‫ﻫﺎﻱ ﺯﻳﺮ ﺗﻘﺴﻴﻢ ﻣﻲ ﺷﻮﺩ‪:‬‬
‫• ﺯﻣﻴﻨﻪ ﮐﺎﺭﻱ‪ ،‬ﻣﺎﻧﻨﺪ ﻗﺒﻞ ﺑﺎﻗﻲ ﻣﻲ ﻣﺎﻧﺪ‪.‬‬
‫• ﺑﻪ ﺯﻣﻴﻨﻪ ﮐﺎﺭﻱ ﻣﺤﺪﻭﺩﻳﺘﻬﺎﻳﻲ ﺍﺿﺎﻓﻪ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫• ﺍﺯ ﺯﻣﻴﻨﻪ ﮐﺎﺭﻱ ﻣﺤﺪﻭﺩﻳﺘﻬﺎﻳﻲ ﺑﺮﺩﺍﺷﺘﻪ ﻣﻲ ﺷﻮﺩ‬
‫• ﺑﻪ ﺯﻣﻴﻨﻪ ﮐﺎﺭﻱ ﺑﺮﺧﻲ ﻣﺤﺪﻭﺩﻳﺘﻬﺎ ﺍﺿﺎﻓﻪ ﻭ ﺑﺮﺧﻲ ﺣـﺬﻑ ﻣـﻲ‬
‫ﺷﻮﻧﺪ‪.‬‬
‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺑﺎ ﺍﺿﺎﻓﻪ ﻧﻤﻮﺩﻥ ﻳﮏ ‪ entity‬ﺑﻪ ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ ﺷﮑﻞ ‪،۷‬‬
‫ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ ﺷﮑﻞ ‪ ۸‬ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ‪ .‬ﺩﺭ ﺷﮑﻞ ‪ ۸‬ﺑﺮﺧـﻲ ﻣﺤـﺪﻭﺩﻳﺖ‬
‫ﻫﺎ ﻣﺎﻧﻨﺪ ‪ w1.1‬ﻭ‪ ...‬ﺍﺿﺎﻓﻪ ﺷﺪﻩ ﺍﻧﺪ ﻭ ﺩﺭ ﻧﺘﻴﺠﻪ ﺯﻣﻴﻨﻪ ﮐـﺎﺭﻱ ﻣﺮﺑـﻮﻁ ﺑـﻪ‬
‫‪ entity‬ﻣﻴﺎﻧﻲ ﺍﺿﺎﻓﻪ ﺷﺪﻩ ﺍﺳﺖ ﻭ ﺯﻣﻴﻨﻪ ﮐﺎﺭﻱ ‪ entity‬ﺳﻤﺖ ﭼﭗ ﺗﻐﻴﻴﺮ‬
‫ﮐﺮﺩﻩ ﺍﺳﺖ‪.‬‬
‫‪ -۲-۵-۴‬ﻧﮕﻬﺪﺍﺭﻱ ﺍﺻﻼﺣﻲ‬
‫ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﻣﻮﻟﻔﻪ ﻫﺎ ﻫﻢ ﺑﺮ ﺩﻧﺒﺎﻟﻪ ﻫﺎﻱ ﮐﻨﺘﺮﻟﻲ ﻭ ﻫﻢ ﺩﺍﺩﻩ ﺍﻱ ﺗﺎﺛﻴﺮ ﻣـﻲ‬
‫ﮔﺬﺍﺭﺩ‪ .‬ﺗﺎﺛﻴﺮﺍﺕ ﻧﺎﺷﻲ ﺍﺯ ﺗﻐﻴﻴـﺮﺍﺕ ﺩﺍﺩﻩ ﺍﻱ ﺭﺍ ﻣـﻲ ﺗـﻮﺍﻥ ﺑـﺎ ﻧﻤﻮﺩﺍﺭﻫـﺎﻱ‬
‫ﻣﺨﺘﻠﻒ ‪ UML‬ﻣﺎﻧﻨﺪ ﺷﮑﻞ ‪ ۶‬ﭘﻴﮕﻴﺮﻱ ﮐﺮﺩ‪ .‬ﻣﻌﻤـﻮﻻ ﺩﺭ ‪CBS‬ﻫـﺎ ﺳـﻌﻲ‬
‫‪15‬‬
‫‪16‬‬
‫‪Constraint‬‬
‫‪Context‬‬
‫ﻣﺮﺍﺟﻊ‬
‫‪[1] Ivica Crnkovic, Magnus Larsson, Building Reliable‬‬
‫‪Component-Based Software Systems, Artech House,‬‬
‫‪2002.‬‬
‫‪[2] [PRE01] Pressman, R. S., Software Engineering, A‬‬
‫‪Practitioners Approach,5th Ed., McGraw-Hill, 2001.‬‬
‫‪[3] Component-Based Software Systems, ptc/06-07-12,‬‬
‫‪December 2006‬‬
‫‪http://www.swen.uwaterloo.ca/~ltahvild/ECE750-11/ .‬‬
‫‪[4] ICSE 2005 Workshop on Architecting Dependable‬‬
‫‪Systems, ptc/06-07-12, December 2006,‬‬
‫‪www.cs.kent.ac.uk/events/conf/2005/wads/Slides/wu.pdf.‬‬
‫ﺷﻜﻞ )‪ :(۷‬ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ ﻗﺒﻞ ﺍﺯ ﺍﻋﻤﺎﻝ ﺗﻐﻴﻴﺮﺍﺕ‬
‫ﺷﻜﻞ )‪ :(۸‬ﻧﻤﻮﺩﺍﺭ ﻫﻤﮑﺎﺭﻱ ﺑﻌﺪ ﺍﺯ ﺍﻋﻤﺎﻝ ﺗﻐﻴﻴﺮﺍﺕ‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﻧﻮﻉ ﺭﻭﺵ ﻣﻲ ﺗﻮﺍﻥ ﻣﺴﻴﺮﻫﺎﻳﻲ ﺭﺍ ﮐﻪ ﺑـﻪ ﻧﺤـﻮﻱ ﺩﭼـﺎﺭ‬
‫ﺗﻐﻴﻴﺮ ﺷﺪﻩ ﺍﻧﺪ ﺭﺍ ﻣﺸﺨﺺ ﮐﺮﺩ‪ .‬ﺩﺭ ﺻﻮﺭﺗﻲ ﮐﻪ ﻣﻮﺍﺭﺩ ﺗﺴﺖ ﻗﺒﻠـﻲ ﺑـﺮﺍﻱ‬
‫ﺗﺴﺖ ﺍﻳﻦ ﻣﺴﻴﺮﻫﺎ ﮐﺎﻓﻲ ﺑﺎﺷﺪ‪ ،‬ﺍﺯ ﺁﻧﻬﺎ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩﻩ ﻭ ﺩﺭ ﻏﻴﺮ ﺍﻳﻨـﺼﻮﺭﺕ‬
‫ﻣﺠﻤﻮﻋﻪ ﺟﺪﻳﺪﻱ ﺍﺯ ﻣﻮﺍﺭﺩ ﺗﺴﺖ ﺷﺎﻣﻞ ﺑﺮﺧـﻲ ﺍﺯ ﺗـﺴﺘﻬﺎﻱ ﮔﺬﺷـﺘﻪ ﺑـﻪ‬
‫ﻫﻤﺮﺍﻩ ﻣﻮﺭﺩﻫﺎﻱ ﺗﺴﺖ ﺟﺪﻳﺪ‪ ،‬ﺍﻳﺠﺎﺩ ﻣﻲ ﮐﻨﻴﻢ‪.‬‬
‫‪ -۵‬ﻧﺘﻴﺠﻪ‬
‫ﻓﺎﺯ ﻧﮕﻬﺪﺍﺭﻱ ﻳﮑﻲ ﺍﺯ ﻓﺎﺯﻫﺎﻱ ﻣﻬﻢ ﺩﺭ ﺩﻭﺭﻩ ﺣﻴﺎﺕ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺍﺳﺖ‪ .‬ﺩﺭ‬
‫ﺍﻳﻦ ﻓﺎﺯ ﺍﺣﺘﻴﺎﺝ ﺑـﻪ ﺗﻐﻴﻴﺮﺍﺗـﻲ ﺑـﺮ ﺭﻭﻱ ﻧـﺮﻡ ﺍﻓـﺰﺍﺭ ﺑـﺮﺍﻱ ﺑـﺮﺍﻭﺭﺩﻩ ﮐـﺮﺩﻥ‬
‫ﺧﻮﺍﺳﺘﻪ ﻫﺎﻱ ﮐﺎﺭﺑﺮﺍﻥ ﺍﻣﺮﻱ ﺣﻴﺎﺗﻲ ﺑﻪ ﻧﻈﺮ ﻣﻲ ﺭﺳـﺪ‪ .‬ﺑﻨـﺎﺑﺮﺍﻳﻦ ﺑﺎﻳـﺪ ﺑـﻪ‬
‫ﺩﻧﺒﺎﻝ ﺷﻴﻮﻩ ﺍﻱ ﮐﺎﺭﺍ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﺗﻐﻴﻴـﺮﺍﺕ ﺑﺎﺷـﻴﻢ‪ ،‬ﺑـﻪ ﮔﻮﻧـﻪ ﺍﻱ ﮐـﻪ‬
‫ﮐﻤﺘﺮﻳﻦ ﺍﺛﺮ ﺳﻮﺀ ﺭﺍ ﺩﺍﺷﺘﻪ ﻭ ﺳﺎﻳﺮ ﻗﺴﻤﺘﻬﺎﻱ ﺳﻴﺴﺘﻢ ﻣﺨﺘﻞ ﻧﺸﻮﺩ‪ .‬ﺑﺪﻳﻦ‬
‫ﻣﻨﻈﻮﺭ ﺑﺎﻳﺪ ﭘﺲ ﺍﺯ ﺍﻧﺠﺎﻡ ﺗﻐﻴﻴﺮﺍﺕ ﺍﻗﺪﺍﻡ ﺑﻪ ﺗﺴﺖ ﻧـﺮﻡ ﺍﻓـﺰﺍﺭ ﻧﻤـﺎﻳﻴﻢ‪ .‬ﺍﻣـﺎ‬
‫ﺗﺴﺖ ﮐﺎﻣﻞ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﭘﺲ ﺍﺯ ﻫﺮ ﺗﻐﻴﻴﺮ ﻫﺰﻳﻨﻪ ﻓﺮﺍﻭﺍﻧﻲ ﺭﺍ ﺑﻪ ﻫﻤﺮﺍﻩ ﺧﻮﺍﻫـﺪ‬
‫ﺩﺍﺷﺖ‪ .‬ﺩﺭ ﺍﻳﻨﺠﺎ ﺑﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻳﺎﮔﺮﺍﻣﻬـﺎﻱ ‪ UML‬ﺭﻭﺷـﻲ ﺭﺍ ﭘﻴـﺸﻨﻬﺎﺩ‬
‫ﮐﺮﺩﻳﻢ ﮐﻪ ﺩﺭ ﺁﻥ ﺑﻪ ﺍﻧﺘﺨﺎﺏ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺴﺘﻬﺎ ﺑﺮﺍﻱ ﺗﺴﺖ ﮐﺎﻣـﻞ‬
‫ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺑﻪ ﺧﺼﻮﺹ ﺩﺭ ﺣﻮﺯﻩ ‪CBS‬ﻫﺎ ﺍﻗﺪﺍﻡ ﻧﻤﺎﻳﻴﻢ‪.‬‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺴﺖ ﻣﺒﺘﻨﻲ ﺑﺮ ‪ UML‬ﻗﺴﻤﺘﻬﺎﻳﻲ ﺍﺯ ﻧﺮﻡ ﺍﻓـﺰﺍﺭ ﺭﺍ ﮐـﻪ‬
‫ﺍﺯ ﺗﻐﻴﻴﺮﺍﺕ ﺗﺎﺛﻴﺮ ﻣﻲ ﭘﺬﻳﺮﻧﺪ‪ ،‬ﻣﺸﺨﺺ ﮐﺮﺩﻩ ﻭ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻣـﻮﺍﺭﺩ‬
‫ﺗﺴﺖ ﻗﺒﻠﻲ ﺑﻪ ﻫﻤﺮﺍﻩ ﻣﻮﺭﺩﻫﺎﻱ ﺗﺴﺖ ﺟﺪﻳﺪ)ﺩﺭ ﺻﻮﺭﺕ ﻟﺰﻭﻡ( ﺑﺮﺍﻱ ﺗﺴﺖ‬
‫ﺍﻳﻦ ﻗﺴﻤﺖ ﻫﺎ ﺑﻪ ﮐﺎﺭ ﻣﻲ ﺑﺮﻳﻢ‪.‬‬
‫ﺯﻳﺮﻧﻮﻳﺲﻫﺎ‬