Professional Documents
Culture Documents
مهندسی نرم افزار-تعریف
مهندسی نرم افزار-تعریف
تعریف :1معماری سرویس گرا یا service orientationبه این معین است که برنامهها یا سیستمها به صورت قابل
تقسیم و باز استفادهپذیر طراحی شوند .در این روش ،اجزا یا سرویسهای مختلف سیستم به صورت مستقل
طراحی و پیادهسازی یمشوند و سپس توسط ارتباطات استاندارد یا رابطهای برنامهنوییس به یکدیگر متصل
یمشوند.
تعریف :2معماری سرویس گرا یا " "service orientationبه شکل ساده به این معناست که وقیت کارهای زیادی را
برای انجام یک کار بزرگ انجام یمدهیم ،بهتر است این کارها را به بخشهای کوچکتر و مستقل تقسیم کنیم و هر
قسمت را به صورت یک سرویس جداگانه در نظر بگیریم.
برای توضیح بهتر ،فرض کنید یک مدل قطار باشید .هر بخش از قطار ،مانند چرخ ،موتور یا واگن ،مستقل از
بخشهای دیگر است اما همیگ با یکدیگر ارتباط دارند و با همکاری با هم ،قطار به مقصد یمرسد.
برای مثال ،فرض کنید یک خونه را یمخواهید بسازید .معماری ساده به شما یمگوید که بهتر است ابتدا از
بخشهای مختلف مثل بناکاری ،برق کیش ،چیدمان داخیل و ...به عنوان سرویسهای جداگانه استفاده کنید تا
بتوانید هر بخش را به صورت مستقل مدیریت کنید و در صورت نیاز به راحیت آن را تغییر دهید.
.1برای یک اپلیکیشن بانکداری ،قسمت مدیریت حساب ،انتقال وجه ،پرداخت قبض و گزارشدهی به صورت
سرویسهای جداگانه طراحی یمشود و این سرویسها با یکدیگر ارتباط دارند.
.2یک سیستم مدیریت انبار ،بهطور مستقل برای مدیریت موجودی ،پیگیری سفارشها و مدیریت حمل و نقل
طراحی یمشود و بعدا این اجزا به یکدیگر متصل یمشوند.
.3یک فروشگاه آنلین با سرویسهای مختلفی برای مدیریت محصوالت ،سفارشات ،پرداخت و ارسال اطلعات
به سیستمهای پرداخت طراحی یمشود.
.4یک سیستم رزرواسیون هواپیما با سرویسهای جداگانه برای مدیریت پروازها ،صندلها ،پرداخت و ارسال
اطلعات به سیستمهای فرودگاهی پیادهسازی یمشود.
.5یک سیستم مدیریت مشتریان با اجزا مختلف برای مدیریت اطلعات مشتری ،پشتیباین مشتری و تحلیل
دادهها به صورت سرویسهای مجزا طراحی یمشود.
.6سفارش غذا از رستوران – دریافت و پرداخت وجه از بانک – جستجو در اینترنت توسط موتور های جستجو –
دریافت مجوز های ساختماین از شهرداری – تعمیر اتومبیل در تعمیرگاه – دریافت گذرنامه
نمونههای واقعی:
.1یک بانک قصد دارد فرایندهای خود را بهبود دهد تا زماین که یک حساب بانیک جدید باز یمشود ،کاهش یابد.
برای این منظور ،از معماری فرایند گرا استفاده یمکند تا فرایندهای موجود را ارزیایب کرده و بهبود بخشید.
.2یک شرکت حمل و نقل مسافران قصد دارد با بهینهسازی فرایندهایش ،زمان حضور و رفت و آمد مسافران را
کاهش دهد .از معماری فرایند گرا استفاده یمکند تا به این هدف دست یابد.
.3یک شرکت تولیدی به دنبال بهبود بهره وری و کاهش هزینههاست .با اعمال معماری فرایند گرا ،فرایندهای
تولید و عرضه محصوالت خود را بهبود یمبخشد.
.4یک موسسه آموزیش فرایندهای ثبت نام و پذیرش دانشجویان خود را مورد برریس قرار داده و با استفاده از
معماری فرایند گرا ،زمان و هزینههای مرتبط با این فعالیتها را کاهش یمدهد.
.5یک شرکت خدمایت قصد دارد پشتیباین مشتریان خود را بهبود دهد .با استفاده از معماری فرایند گرا،
فرایندهای پشتیباین مشتریان را تحلیل کرده و اصلحات الزم را اعمال یمکند.
همچنین ،سامانههای مدیریت فرایندهای کسب و کار ( )BPMSبه شرکتها کمک یمکنند تا فرایندهای کاری خود
را مدیریت و بهینهسازی کنند .این سامانهها از اتوماسیون و برنامهریزی هوشمند برای اجرا و نظارت بر
فعالیتها استفاده یمکنند و به سازمانها کمک یمکنند تا بهبودهای پیوسته در فرایندهای خود داشته باشند.
نمونههای واقعی:
.1یک شرکت بزرگ حمل و نقل بینالملیل از سامانههای BPMSبرای برنامهریزی مسیرهای حمل و نقل ،مدیریت
موجودی و پیگیری حملونقل استفاده یمکند تا زماین که کاالها به مقصد نهایی خود یمرسند ،همه چیز بهخویب
پیش برود.
.2یک شرکت فناوری اطلعات از سامانههای BPMSبرای پیگیری و مدیریت فرایندهای توسعه نرمافزار و ارتقاء
سیستمها استفاده یمنماید.
.3یک سازمان موسسه مال از سیستمهای BPMSبرای مدیریت فرآیندهای اعطای و پرداخت وامها به مشتریان
خود استفاده یمکند.
.4یک کارخانه تولیدی از BPMSبرای اتوماسیون فرایندهای تولید ،کنترل کیفیت و مدیریت منابع برای بهبود
بهرهوری استفاده یمکند.
.5یک پزشیک خدمات بهداشیت از سامانههای BPMSبرای مدیریت نوبتدهی بیماران ،پیگیری نسخهها و
مدیریت انبار داروها استفاده یمنماید.
تعریف 2
معماری فرایند گرا یک روش سازماندهی است که برای بهبود فرایندهای کاری و سازماین استفاده یمشود .این
روش معموال ً شامل تعریف ،طراحی ،اجرا ،و نظارت بر فرایندهای کاری است تا موجب بهبود بهرهوری و افزایش
کیفیت خدمات شود.
.1تعریف فرایندهای کاری :شناسایی و توصیف دقیق فرایندهای انجام شده در یک سازمان.
.2طراحی فرایندها :بهینهسازی فرایندهای کاری برای بهبود بهرهوری و افزایش کیفیت.
.3اجرا و انجام فرایندها :اجرای فرایندهای کاری طراحی شده و نظارت بر آنها.
.4نظارت و بهبود مداوم :مانیتور کردن فرایندها و انجام تغییرات برای بهبود مستمر.
بانک :فرایندهای باز شدن حساب بانیک از شناسایی مشتری تا صدور کارت بانیک. .1
فروشگاه :فرایند خرید از انتخاب محصول تا تسویه حساب. .2
BPMSبه معنای سیستم مدیریت فرایندهای کاری است که از نرمافزارها و تکنولوژیهای مختلف برای بهبود و
اجرای بهینهتر فرایندهای کاری استفاده یمکند.
.4ایجاد گزارشات و آمارها :تهیه گزارشهای دقیق از اجرای فرایندها برای ارزیایب و بهبود.
.5اتصال به سیستمهای دیگر :امکان ارتباط سیستم BPMSبا سایر سیستمهای سازماین برای انجام فرایندهای
کاری.
مدیریت ایمیل :استفاده از نرمافزارهای مدیریت ایمیل برای اتوماسیون و دستهبندی ایمیلها. .1
مدیریت زنجیره تأمین :استفاده از سیستم BPMSبرای ردیایب و مدیریت حرکت کاالها در زنجیره تأمین. .2
مدیریت پروژه :استفاده از سیستم مدیریت پروژه برای تخصیص و نظارت بر وظایف و فعالیتهای یک .3
پروژه.
مراکز تماس :استفاده از سیستم BPMSبرای مدیریت و نظارت بر فرایندهای تماس مشتریان. .4
سیستم مدیریت بیمارستان :استفاده از سیستم BPMSبرای مدیریت و پیگیری بخشهای مختلف یک .5
بیمارستان.
Open Source
اوپنسورس یا open sourceیک کلمه تخصیص است که به معنای این است که نرمافزار یا پروژهای که بهصورت
اوپنسورس منتشر شده باشد ،کدهای منبع آن عموماً برای عموم قابل دستریس و مشاهده است .بنابراین هر
کیس یمتواند کدهای منبع آن را ببیند ،تغییر دهد و با همکاری دیگران به بهترین شکل ممکن آن را بهبود بخشد.
این نوع نرمافزارها معموال ً بهصورت رایگان منتشر یمشوند.
.1سیستم عامل لینوکس :لینوکس یک سیستم عامل اوپنسورس است که توسط جامعه برنامهنویسان در
سراسر جهان توسعه یافته و بهبود یافته است.
.2مرورگر فایرفاکس :فایرفاکس یک مرورگر اینترنت معروف اوپنسورس است که توسط موزیل توسعه یافته
است و به کاربران این امکان را یمدهد تا کد منبع آن را برریس و بهبود بخشند.
.3وردپرس :سیستم مدیریت محتوا وردپرس یک سیستم معروف اوپنسورس برای ساخت و مدیریت
وبسایتهاست که توسط یک جامعه بزرگ از توسعه دهندگان حمایت یمشود.
.4اندروید :سیستم عامل موبایل اندروید نیز به عنوان یک مثال از نرمافزار اوپنسورس مطرح است که به طور
گسترده ای توسط توسعه دهندگان در سراسر جهان توسعه یافته است.
.5محتوای یوتیوب-دیل-پلز :این یک پروژه اوپنسورس است که به ویدیوها و ترجمههای آنها از طریق جامعهای
از داوطلبان در سراسر جهان یمپردازد.
یعین در برنامه و پایگاه های دادهمان ،فانکشن های مختلفی را تعریف و برنامه نوییس کنیم و بعد همه آن ها را
درون برنامه قرار بدیم .هر فانکشن یک کار خایص انجام یمدهد .نرم افزار نهایی ،مجموعه ای از فانکشن های
مختلف است.
نرم افزار هایی که منو داشته باشند و فانکشن های آن در منو قرار گرفته شده باشند ،اکثرا معماری وظیفه محور
هستند.
مثالهایی که یمتوان برای درک بهتر معماری وظیفهای در برنامهنوییس ذکر کرد عبارتند از:
.1مثال سادهای از معماری وظیفهای یمتواند تابع محاسبه مجموع دو عدد صحیح باشد .به این صورت که یک
تابع با ورودی دو عدد صحیح را یمخواهد و خروجی مجموع این دو عدد را باز یمگرداند.
.2یک مثال واقعی از معماری وظیفهای ،سیستیم است که پردازش تصاویر را انجام یمدهد .مثل ً یک تابع برای
تغییر اندازه تصویر ،یک تابع برای اعمال فیلتر روی تصویر و یا یک تابع برای تشخیص چهره.
.3یک سیستم بانیک نیز یمتواند از معماری وظیفهای استفاده کند .برای مثال ،یک تابع برای انتقال وجه ،یک تابع
برای محاسبه موجودی حساب و یک تابع برای ایجاد گزارش تراکنشها.
.4یک برنامه آماری یمتواند از معماری وظیفهای استفاده کند .به عنوان مثال ،یک تابع برای محاسبه میانگین یک
سری اعداد ،یک تابع برای محاسبه واریانس و یک تابع برای رسم نمودار.
.5نرمافزارهای گرافییک نیز معموال ً از معماری وظیفهای بهره یمبرند .به عنوان مثال ،یک تابع برای ایجاد اشکال
هندیس ،یک تابع برای تغییر رنگ و یک تابع برای حرکت دادن اشیاء در صفحه.
تعریف 2
معماری وظیفهای یا functionalیا موجب یمشود که برنامهنویسان برنامهها را به صورت تکلیف محور بنویسند.
این روش تاکید بیشتری بر توابع و وظایف دارد که داده را به عنوان ورودی دریافت کرده ،یک پردازش را انجام
یمدهد و سپس خروجی مورد نظر را تولید یمکند.
برای توضیح بهتر ،فرض کنید که یک برنامه نویس بخواهد یک برنامه بنویسد که اعداد فرد را در یک لیست به
توان ۲یمبرد .به جای اینکه هر بار دوست داشتههای خود را بنویسد ،یمتواند یک تابع مانند ""calculateSquare
برای انجام این کار بنویسد و هر بار که نیاز باشد از آن استفاده کند.
تعریف 3
معماری وظیفهای یا Functionalدر برنامهنوییس به این معناست که برنامهنویس متمرکز بر توابع (یا کارها) است و
به این ترتیب کد برنامه به صورت ترکییب از توابع است .در این نوع از برنامهنوییس ،هر تابع وظیفهی مشخص
خود را دارد و به طور مستقل از بقیه برنامه اجرا یمشود.
یک مثال ساده یمتواند ماشین حساب باشد .به عنوان مثال ،تابع جمع کردن دو عدد و تابع ضرب کردن دو عدد،
هر یک کارهای مشخص خود را انجام یمدهند و یمتوانند بدون ارتباط با یکدیگر اجرا شوند.
.3جستجوی اطلعات :در یک وبسایت جستجو ،وظیفه جستجو در بانک اطلعایت یک وظیفه مستقل است که
یمتواند به تنهایی انجام شود.
.4ساخت ویدیو :در یک ویرایشگر ویدیو ،وظیفه افزودن فیلم ،صدا و افکتهای ویدیویی وظایف مجزا هستند که
یمتوانند به تنهایی انجام شوند.
.5محاسبه مالیات :در یک نرمافزار حسابداری ،وظیفه محاسبه مالیات بر اساس فرمولهای مشخص یک وظیفه
مستقل است که یمتواند به تنهایی انجام شود.
معماری Agent-Based
معماری مبتین بر عامل ( )Agent-Basedیعین ساختاری که در آن سیستم به شکل اجزای مستقل و هوشمند به نام
عاملها تقسیم یمشود .هر عامل یمتواند اطلعات را دریافت ،پردازش کرده و رفتارهای مختلف را انجام دهد.
عاملها در ارتباط با یکدیگر هستند و یمتوانند بر اساس این ارتباطات به صورت هماهنگ عمل کنند.
مثال:
.1در یک بازی کامپیوتری ،هر شخصیت در بازی ممکن است یک عامل باشد که واکنشهای مختلفی نسبت به
بازیکن دیگران داشته باشد.
.2در شبیهسازی ترافیک شهری ،هر خودرو ممکن است یک عامل باشد که بر اساس وضعیت محیط اطرافش
تصمیمگیری یمکند.
.3در یک بازار مال ،هر معاملهگر یمتواند به عنوان یک عامل دیده شود که بر اساس اطلعات و رفتارهای
دیگران تصمیمگیری یمکند.
.4در مدلهای شبیهسازی طبیعت ،هر موجود زنده ممکن است به عنوان یک عامل در نظر گرفته شود که با
محیط و سایر موجودات تعامل دارد.
.5در رباتیک ،هر ربات یمتواند به عنوان یک عامل دیده شود که بر اساس حرکت و رفتار دیگر رباتها
تصمیمگیری یمکند.
تعریف 2
Agent-Based Architectureیک الگوی طراحی است که در آن سیستم به شکل انعطاف پذیری سازماندهی یمشود،
به این صورت که هر عامل (یا )agentدارای ویژیگها ،رفتار ،و قابلیت تصمیمگیری مستقیل است .این اعضا
یمتوانند با یکدیگر تعامل کنند و در نتیجه به صورت جمعی به رسیدن به اهداف کلن سیستم کمک کنند.
به این صورت یمتوان به یک نقشهی شهری نگاه کرد ،هر فرد یک خودرو یا راننده است که به صورت مستقل
در خیابانها حرکت یمکند ،اما همچنین یمتواند با دیگر رانندهها در تقاطعها یا جای دیگر تعامل داشته باشد تا
به نحو بهینه تری به مقصدشان برسند.
5مثال واقعی:
.1در سیستمهای حمل و نقل هوشمند از معماری Agent-Basedاستفاده یمشود ،مثل ً هر خودرو مجهز به یک
سیستم هوش مصنوعی یمباشد که به صورت مستقل تصمیمگیری یمکند و اطلعات را با سایر خودروها به
اشتراک یمگذارد تا به افزایش راندمان و کاهش ترافیک کمک کند.
.2در شبیهسازهای شهری ،هر انسان یا واحد مسکوین یمتواند به صورت مستقل عمل کرده و با سایر اعضا
تعامل داشته و از این راه بهینهسازی منابع شهری شود.
.3در بازیهای ویدئویی ،شخصیتهای مختلف با قابلیتها و هدفهای مستقل ممکن است با یکدیگر تعامل کنند
تا بهبود تجربه بازی را برای بازیکنان فراهم کنند.
.4در بازارهای مال ،معاملهگران یمتوانند به صورت مستقل تصمیمگیری کرده و با یکدیگر معامله کنند و در
نتیجه به شکلگیری قیمتها کمک کنند.
.5در محیطهای هوش مصنوعی و رباتیک ،رباتها یمتوانند به صورت مستقل و هماهنگ با یکدیگر برای انجام
وظایف مختلف همکاری کنند ،مانند تجمیع مواد در یک کارخانه یا برای انجام عملیات نجات.
تعریف 3
معماری مبتین بر عامل یا Agent-Basedمعماری است که در آن سیستم به عنوان یک مجموعه از عوامل یا همان
واحدهای فعال تعریف یمشود .این عوامل یمتوانند خودمختار باشند و برخوردهایشان با محیط و سایر عوامل
طبق قوانین وضوح دارند .این معماری به عنوان یک الگوی طراحی ،برای مدلسازی و تحلیل سیستمهای پیچیده
و توزیعشده مورد استفاده قرار یمگیرد.
.2شبیهسازیهای استفاده در علوم :در زمینههای مختلف علیم مانند زیستشنایس یا اقتصاد ،از معماری Agent-
Basedبرای شبیهسازی رفتار عوامل زنده یا اقتصادی و تأثیر آنها بر یکدیگر استفاده یمشود.
.3بازیهای رایانهای :در بازیهای رایانهای معموال ً شخصیتها و NPCها به عنوان عوامل مستقل و با
تصمیمگیریهای خود به کار یمروند که در نهایت به شکل داستان بازی تأثیر یمگذارد.
.4شبکههای اجتماعی :شبکههای اجتماعی مانند فیسبوک یا توییتر نیز یمتوانند به عنوان یک مجموعه از عوامل
مستقل دیده شوند که با یکدیگر تعامل داشته و رفتارهای مختلفی از خود نشان یمدهند.
.5بازارهای مال :در بازارهای مال ،معاملهگران ،شرکتها و سایر عوامل موجود یمتوانند به عنوان عوامل
مستقل دیده شوند که با یکدیگر در بازار ارتباط دارند و تصمیمگیریهایشان قیمتها و معاملت را تحت تأثیر
قرار یمدهند.