ی بسیاری مانند افزایش کاربر،بهبود تغییرپذیری و نگهداری از این روش نتیجه شده است. مهندسی نرم افزار شیء گرا31 که یک متدولوژی و زبان مدلسازی شیء است، توسط ایوار یاکوبسون در سال ???? وقتی که در شرکت” آبجکتری ای بی “کار می‌کرد طراحی شد. این اولین متدولوژی طراحی شیءگراست که از”مورد کاربرد”32 برای طراحی نرم افزار استفاده مینماید. همچنین عناصر طراحی دیگری نیز شبیه به عناصر مورد کاربرد درمدلسازی اشیاء دارد.درروند تکمیل این روش مفاهیم و نمادهای OOSE در UML33 استفاده شدند و درشکل متدولوژی یا یک محصول دیگر به نام 34RUP به بلوغ رسید. با توجه به اثبات قدرت شی گرایی باز سیستم های نرم افزاری پیچیده تر شده اند و این مفهوم قادر به پاسخ به نیازهای جدید نبود.
یکی از آن ها تغییرات سریع محیط سیستم های اطلاعاتی است. سیستم های نرم افزاری هم اکنون به یکدیگر بیشتر متصل هستند و غیر متمرکز شده اند این تغییرات با توجه به افزایش محبوبیت اینترنت پیچیدگی های پیشرو را افزایش داده است.
با افزایش پیچیدگی سیستمها و پیشرفت روزافزون اینترنت و سیستمهای همراه, نیاز به ارایه روشی مهندسی برای برخورد با آنها لازم به نظر میرسید .در سیستمهای پیچیده مفاهیمی همچون ارتباطات میان زیر سیستمها و درون سیستمها بر پیچیدگی میافزاید.با توجه به توضیحات داده شده و همچنین دو دلیل زیر برای برخورد با سیستمهای پیچیده از روشهای سنتی مهندسی نرم افزار استفاده نمیشودxvii :
1.چون طراحی سطح بالا برای هر روش برنامه نویسی ،انتزاعهای متفاوتی دارد مانند در برنامه نویسی رویه ای میگوییم چه کاری انجام میدهد؟شیء گرا میگوید چه اشیایی انجا هستند ،داده و عملیات کدام است؟عامل میگوید چه اهدافی وجود دارند؟ چه رابطه ای بین عاملها است؟
2.در طراحی سطح پایین با اعمال غیرقطعی و شکستها روبرو هستیم که نیازمند نقشه های جایگزین، و بیش از یک راه حل مورد نیاز است.
با توجه به خصوصیات سیستم های پیچیده استفاده از مجموعه ای از اشیا غیر فعال منطقی به نظر نمی رسد به همین علت علاقه به عامل ها و مفهوم مهندسی نرم افزار آن افزایش پیدا کرده است.دو مفهوم قابلیت های پیشرفته عامل ها و سیستم های چند عامله و قابلیت بازنمایی قوی آن ها راه حلهای خوبی را برای سیستم های پیچیده فراهم می کند.
سه ابزاری که عاملگرایی برای توسعه و مدیریت پیچیدگی در اختیار استفاده کنندگان قرار می دهد عبارتند از: شکستن،انتزاع و سازمان؛ با شکستن فضای مسئله سیستم پیچیده به بخش های عامل و ارتباطات شکسته می شود ، با انتزاع عامل ها، برای طراحی و ساخت سیستم ها مناسب به نظر می رسند و مورد سوم بیانگر کارایی آن ها برای مدل سازی و مدیریت روابط سازمانی برای رسیدن به وابستگی ها و روابط درون سیستم پیچیده است.در جدول زیر تفکیک مفاهیم در مقایسه سیستم برپایه عامل با سیستم پیچیده را میبینید.
سیستم پیچیدهسیستم بر پایه عاملزیر سیستمهاسازمان عاملهامولفههای زیر سیستمیعاملهاتعامل میان زیرسیستمها و مولفههای زیرسیستمیهمکاری برای رسیدن به یک هدف،هماهنگی اعمال،گفتگو برای رفع تداخلهاتعاملات میان زیرسیستمها و مولفههای زیرسیستمی در طول زمان تغییر میکند و آنها به عنوان یک مجموعه واحد عمل مینمایند.یک روش مجزا برای مدیریت و بازنمایی روابط سازمانی ، و همچنین ساختاری برای مدلسازی مجموعهها وجود دارد.
با توجه به دلایل فوق و همچنین مزایای دیگر استفاده از سیستمهای چندعامله در حل مسایل مهندسی مانند افزایش قابلیت اطمینان، توسعهپذیری، استفاده مجدد، امکان اجرای موازی ، تعامل سیستمهای متفاوت، امکان پیادهسازی نظریههای علمی رشتههای دیگر , سیستمهای پیچیده مهندسی نرمافزار مبتنی بر عامل 35، به عنوان راهکاری جدید در مهندسی نرمافزار مطرح شده اند.
در سال ???? آقای “وولدریج” متدولوژی MADE را معرفی نمودند و در سال???? تحت مقالهای به نام مهندسی نرمافزار مبتنی بر عامل برای اولین بار به بیان مفهوم جدید مهندسی نرمافزار مبتنی برعامل پرداختxviii.در AOSE اجزای مطرح و پایهای عاملها هستند، و این روش مهندسی بر روی بعضی از سیستمهایی که مبتنی بر عامل نیستند نیز قابل اعمال است . در متدولوژیهای مهندسی نرمافزار مبتنی بر عامل تمامی یا قسمتی از زیربخشهایی که در علم مهندسی نرمافزار مطرح هستند ، پوشش داده میشوند. برای روشن شدن معانی واژگان و ارتباط میان آنها در مطالب ارایه شده در این سمینار توضیحاتی در زیر میآید:
2-1-1. فرایند توسعه:36 مجموعهای از گامهایی است که شامل فعالیتها ، محدودیتها و منابعی برای رسیدن به یک خروجی مطلوب میباشد که یک سری از نیازهای ورودی را پاسخگو است. فرایند معمولا شامل چند فاز یا قدم است که هر کدام یک فعالیت را نشان میدهند.
2-1-2. فرایند توسعهی نرم افزار37: مجموعهای همسان از سیاستها، ساختارهای سازمانی، فنآوریها،روشها و محصولاتی که برای توسعه ، نگهداری، تجهیز و درک سیستم نرم افزاری مورد نیاز هستند.(fuggeta 2000)فرایند توسعهی نرمافزار شامل مراحلی برای رسیدن به محصول نهایی است، که گامهای تعریف شده در آن ، با فرایند توسعه، سه تفاوت اساسی دارد :
* بایستی نیازمندیها درک شوند
* باید در محیط عملیاتی کارگذاشته شود
* بنا بر درخواستهای کاربران و نیاز به تغییرنرمافزار، نگهداری از ان انجام میشود.
فرآیند توسعهی نرم افزار که با عنوان چرخهی حیات38 تولید نرم افزار نیز شناخته می‌شود، ساختاری است که روی توسعه و تولید محصولات نرم افزاری اعمال می‌شود. عبارتهای همانندی چون چرخهی حیات نرم افزارو فرآیند نرم افزار در این رابطه استفاده می‌شود. مدلهای گوناگونی همچون فرآیندهای خاص وجود دارند که هر کدام خط مشی مختص آن فرآیندها را برای انجام کارها و فعالیت‌های متنوع در طول فرآیندها مشخص می‌کنند.