معماري سرويس گرا

Download Report

Transcript معماري سرويس گرا

‫به نام خدا‬
‫‪2/56‬‬
‫مباحث پیشرفته در مهندسی نرم‬
‫افزار‬
‫استاد‪:‬‬
‫جناب آقای دکتر حنانی‬
‫ارائه دهندگان‪:‬‬
‫سمیرا یاوری‬
‫وحید نصرتی‬
‫امین رضائی‬
‫یزدان ولیئی‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪3/56‬‬
‫‪Software Product Line‬‬
‫خط تولید نرم‬
‫افزار‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫عناوین‬
‫‪4/56‬‬
‫• مقدمه‬
‫• تاریخچه استفاده مجدد‬
‫• چالش های تولید نرم افزار‬
‫• روش های سنتی تولید نرم افزار و مشکالتش‬
‫• آینده نگری به جای انتظار برای فرصت ها‬
‫• خط تولید نرم افزار (‪( )SPL‬دارایی های اصلی‪ ،‬مزایاي خط تولید نرم افزار‪ ،‬هزینه‬
‫ایجاد یك خط تولید نرم افزار)‬
‫• معماري سرویس گرا (‪( )SOA‬سه دیدگاه صاحب نظران در مورد معماری سرویس گرا (‪،)SOA‬‬
‫اصول حاکم بر معماری سرویس گرا‪ ،‬تفاوت معماري سرویس گرا و معماري سنتي)‬
‫• تركیب خط تولید نرم افزار و معماري سرویس گرا (دو رویکرد تركیب خط تولید نرم افزار‬
‫و معماري سرویس گرا)‬
‫• خط تولید سرویس گرا‬
‫• ارتباط بین ‪ SOA‬و ‪SPL‬‬
‫• تغییرپذیري اجزاء سیستم (مکانیزم تغییرپذیری)‬
‫• مرور و نتیجه گیری‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪5/56‬‬
‫مقدمه‬
‫و‬
‫مشکالت تیم های تولید‬
‫پشتیبانی نرم افزار‪:‬‬
‫• تاخیر در تحویل نرم افزار‬
‫• نارضایتی مشتری از کیفیت‬
‫نرم افزار‬
‫• ابهام در میزان پیشرفت‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪6/56‬‬
‫مقدمه (ادامه‪)...‬‬
‫امروزه محصوالت زیادي (مانند گوشي‬
‫تلفن همراه) تولید مي شود كه نرم‬
‫افزار قسمتي از آن محصوالت را تشكیل‬
‫مي دهد‪.‬‬
‫اهداف تولید كنندگان‪ :‬كیفیت باال‪،‬‬
‫عرضه سریع به بازار‪ ،‬غلبه به بازار‪،‬‬
‫مشتري‪،‬‬
‫نیازهاي‬
‫با‬
‫محصول‬
‫تطبیق‬
‫افزایش رضایت مشتري‪ ،‬بهره وري و كاهش‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید نرم افزار‬
‫‪.‬‬
‫نگهداري‬
‫هزینه هاي تولید و‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪7/56‬‬
‫مقدمه (ادامه‪)...‬‬
‫توجه به موضوع استفاده مجدد‪ ،‬نه‬
‫تنها در مرحله كدنویسي و پیاده‬
‫سازي‪ ،‬بلكه در تمامي مراحل‬
‫توسعه نرم افزار نظیر تحلیل و‬
‫طراحي‪.‬‬
‫استفاده مجدد از دارایي هاي‬
‫سازمان براي تولید نرم افزارهاي‬
‫سمت‬
‫به‬
‫را‬
‫ما‬
‫خانواده‬
‫هم‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪8/56‬‬
‫مقدمه (ادامه‪)...‬‬
‫توجه مراكز تحقیقاتي‪،‬‬
‫دانشگاهي و صنعت به‬
‫خط تولید نرم افزار‬
‫به دلیل نقش مهم و‬
‫اساسی نرم افزار در‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪9/56‬‬
‫تاریخچه استفاده مجدد (‪)Reuse‬‬
‫تاریخچه استفاده مجدد‪.‬‬
‫رویکرد مهندسین نرم افزار در‬
‫مجدد از مولفه ها و سرویس ها‪.‬‬
‫خط تولید نرم افزار‬
‫استفاده‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪10/56‬‬
‫چالش های‬
‫تولید نرم‬
‫افزار‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪11/56‬‬
‫چالش های تولید نرم افزار‬
‫گاهی‬
‫‪ -۱‬تولید نرم افزار با تاخیر صورت می گیرد و‬
‫اوقات ارزش خود را از دست می دهد‪.‬‬
‫‪ -۲‬نرم افزار دارای باگ های زیادی است و با رفع آنها‬
‫باگ های جدیدی ظاهر می گردند‪.‬‬
‫‪ -3‬ویژگی های درخواست شده‪ ،‬پیاده سازی شده‪ ،‬تست شده و‬
‫تحویل شده به صورت مدون ثبت و پی گیری نمی شوند‪.‬‬
‫‪ -4‬وضعیت عملکرد اعضای تیم شفاف نیست و مشخص نیست که‬
‫هر عضو چه کاری را طی چه مدت انجام داده است‪.‬‬
‫‪ -5‬برخی از اعضای تیم دور کار هستند و امکان ادغام‬
‫منظم کدهای آنها در نرم افزار دشوار است‪.‬‬
‫اگر‬
‫یاوری‪ -‬یا‬
‫کنند‬
‫افزار استفاده نمی‬
‫نرم کد‬
‫سورس‬
‫‪ -6‬از سیستم‬
‫وحید نصرتی‪-‬‬
‫سمیرا‬
‫کنترل تولید‬
‫خط‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪12/56‬‬
‫روش هاي سنتي تولید‬
‫نرم افزار و مشکالتش‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪13/56‬‬
‫روش هاي سنتي تولید نرم افزار‬
‫و مشکالتش‬
‫در روش‬
‫افزار‪:‬‬
‫هاي‬
‫سنتي‬
‫تولید‬
‫نرم‬
‫▪ به ازای هر نرم افزار جدید داریم‪:‬‬
‫بررسی نیازمندي ها‪ ،‬فرآیند تولید‪،‬‬
‫تکنولوژي هاي مورد استفاده و ‪...‬‬
‫▪ پیاده سازي نرم افزار از ابتدا‪ ،‬در‬
‫نتیجه‪:‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪14/56‬‬
‫آینده نگري به‬
‫جاي انتظار براي‬
‫فرصت ها‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪15/56‬‬
‫آینده نگري به جاي انتظار‬
‫براي فرصت ها‬
‫موارد زیادي در فرآیند تولید و اجزاي‬
‫مختلف نرم افزارهاي تولید‪ ،‬مشترک‬
‫هستند‪.‬‬
‫تکیه به اشتراکات‪ ،‬اصل اساسي در خطوط‬
‫تولید‪.‬‬
‫همچنین‪:‬‬
‫خطوط تولید به جاي انتظار براي فرصت‬
‫استفاده مجدد از اجزاي پیش ساخته‪ ،‬با‬
‫آینده نگري از ابتدا مي کوشند فرآیند‬
‫تولید را به گونه اي هدایت کنند که‬
‫‬‫یاوری‪-‬وحید نصرتی‬
‫سرویس سمیرا‬
‫تولید نرم افزار‬
‫خط‬
‫موجود‬
‫هاي‬
‫کردن‬
‫همساز‬
‫بتوان با‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪16/56‬‬
‫خط تولید نرم‬
‫افزار چیست؟‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪17/56‬‬
‫خط تولید نرم افزار چیست؟‬
‫خطوط تولید نرم افزار‪ ،‬سازه هاي‬
‫مهندسي براي تولید نرم افزار با‬
‫استفاده از مجموعه اي از دارائي هاي‬
‫نرم افزاري‪.‬‬
‫دارائي نرم افزاري‪ :‬سیستم یا زیر‬
‫سیستمي نرم افزاري که به خوبي‬
‫معماري و تولید شده تا در یک خط‬
‫تولید مناسب بتوان به راحتي تعدادي‬
‫از آنها را با هم یکپارچه کرد‪.‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪18/56‬‬
‫خط تولید نرم افزار‬
‫چیست؟(ادامه‪)...‬‬
‫بنا بر موارد زیر‪ ،‬محصوالت خروجي خط‬
‫متفاوت‬
‫بسیار‬
‫توانند‬
‫مي‬
‫تولید‬
‫باشند‪:‬‬
‫• تنوع دارائي هاي نرم افزاري‬
‫سازمان به عنوان ورودي هاي خط‬
‫تولید‬
‫• قابلیت تنظیم رفتار و ارتباطات‬
‫تمامي سرویس ها‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪19/56‬‬
‫خط تولید نرم افزار (‪)SPL‬‬
‫مفهوم خط تولید نرم افزار براي نرم‬
‫افزارهاي هم خانواده مطرح مي شود‪.‬‬
‫افزار‪،‬‬
‫نرم‬
‫تولید‬
‫خط‬
‫از‬
‫هدف‬
‫تغییرپذیري و حمایت از نقاط تغییرو‬
‫در نتیجه‪ ،‬استفاده مجدد از دارایي‬
‫هاي اصلي سازمان‪.‬‬
‫معماري خط تولید نرم افزار یعنی‬
‫استفاده مجدد از معماري نرم افزار‪.‬‬
‫در اینجا معماري نرم افزار به عنوان‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪20/56‬‬
‫خط تولید نرم افزار (‪)SPL‬‬
‫(ادامه‪)...‬‬
‫یك خط تولید نرم افزار‬
‫مجموعه اي از سیستم هاي‬
‫مبتني بر نرم افزار است‬
‫كه داراي یك سري ویژگي‬
‫هاي عمومي مشترك بوده‪،‬‬
‫نیازهاي مشخصي از بازار‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪21/56‬‬
‫شمای کلی خط تولید نرم افزار‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪22/56‬‬
‫دارایی های اصلی‬
‫دارایي اصلي‪ :‬یك فراورده قابل‬
‫استفاده مجدد یا یك منبع كه‬
‫در بیش از یك خط تولید مورد‬
‫استفاده قرار مي گیرد‪.‬‬
‫برخي از این دارایي ها كه مي‬
‫توانند براي سازمان قابلیت‬
‫استفاده مجدد داشته باشند‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫دارایی های اصلی (ادامه‪)...‬‬
‫‪23/56‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫نیازمندي ها و تحلیل نیازمندي ها‬
‫مدل دامنه‬
‫معماري نرم افزار و طراحي‬
‫مستندات‬
‫برنامه هاي تست‪ ،‬موارد تست و داده هاي تست‬
‫كاركنان‪ ،‬دانش و مهارت ها‬
‫فرایندها‪ ،‬روش ها و ابزارها‬
‫بودجه ها‪ ،‬زمانبندي ها و برنامه هاي كاري‬
‫مولفه ها و سرویس ها‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪24/56‬‬
‫دارایی های اصلی پایه‬
‫پایه‪،‬‬
‫اصلي‬
‫دارایي‬
‫مجموعه تمام دارایي‬
‫هاي اصلي است كه در‬
‫مورد‬
‫تولید‬
‫خط‬
‫یك‬
‫مي‬
‫قرار‬
‫استفاده‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪25/56‬‬
‫مزایاي خط تولید نرم افزار‬
‫براي معمار یا توسعه دهنده‬
‫اصلي‬
‫خط تولید نرم افزار براي هر یك از‬
‫ذینفعان مزایایي دارد‪ .‬اما خط تولید چه‬
‫مزایایي براي معمار یا توسعه دهنده‬
‫دارایي هاي اصلي دارد؟‬
‫• چالش ها به صورت كلي تر است‬
‫• كارها سریع تر انجام مي شود‬
‫تولید‬
‫خط‬
‫صورت‬
‫به‬
‫بازار‬
‫در‬
‫عرضه‬
‫قابل‬
‫•‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید نرم افزار‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪26/56‬‬
‫هزینه ایجاد یك خط تولید نرم‬
‫افزار‬
‫در جدول صفحه ی بعد‬
‫در‬
‫اصلي‬
‫هاي‬
‫دارایي‬
‫ستون اول و در ستون‬
‫دوم‪ ،‬هزینه اي كه باید‬
‫بپردازیم تا بتوانیم خط‬
‫باشیم‪،‬‬
‫داشته‬
‫تولید‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪27/56‬‬
‫هزینه ایجاد خط تولید‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪28/56‬‬
‫استخراج دارایي هاي موجود‬
‫اهمیت باالی استخراج (كاوش) دارایي هاي‬
‫موجود در سازمان به منظور استفاده در‬
‫خط تولید‪.‬‬
‫استخراج دارایي هاي موجود یعني احیا‬
‫كردن و توانا كردن یك قطعه از یك سیستم‬
‫قدیمي براي سرویس دادن در یك سیستم‬
‫جدید‪.‬‬
‫استخراج دارایي اغلب به معني پیدا كردن‬
‫‬‫دارایيوحید نصرتی‬
‫سمیرا یاوری‪-‬‬
‫خط تولید نرم‬
‫هاي‬
‫مفیدافزاراز بین‬
‫كدهاي موروثي‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪29/56‬‬
‫استخراج دارایي هاي‬
‫موجود(ادامه‪)...‬‬
‫عالوه بر كدهای نوشته شده‪ ،‬كاندیدهاي بسیار‬
‫با ارزشي وجود دارند كه مي توانند بعنوان‬
‫دارایي های قابل استفاده مجدد استخراج‬
‫شوند‪:‬‬
‫‪‬مدل هاي تجاري‬
‫‪‬مشخصه نیازمندي ها‬
‫‪‬زمانبندي ها‪ ،‬بودجه ها‬
‫‪‬برنامه هاي تست‬
‫‪‬موارد تست‬
‫‪‬استانداردهاي كدنویسي‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید نرم افزار‬
‫فرایندها‬
‫‪‬الگوریتم ها و تعریف‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪30/56‬‬
‫استخراج دارایي هاي‬
‫موجود(ادامه‪)...‬‬
‫استخراج یعني چه چیزي موجود است‪ ،‬چه چیزي مورد‬
‫نیاز است و چگونه مي توان كارها را سازمان‬
‫داد‪.‬‬
‫تحلیل و درك مشتركات بین سیستم جدید و سیستم‬
‫هاي موروثي به منظور استخراج دارایی ها‪.‬‬
‫اولین قدم‪ :‬تمركز روي دارایي هاي دانه بزرگ‪،‬‬
‫به دلیل درك آسان تر آنها نسبت به كدها یا‬
‫الگوریتم ها‪.‬‬
‫باید مشخص شود كه چگونه دارایي هاي كاندید با‬
‫مورد‬
‫افزار جدید در‬
‫سیستم‬
‫توجه به اهداف‬
‫معماري‪-‬وحید نصرتی‪-‬‬
‫سمیرا یاوری‬
‫خط تولید نرم‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪31/56‬‬
‫استخراج دارایي هاي‬
‫موجود(ادامه‪)...‬‬
‫نكته مهمي كه باید به آن توجه‬
‫نباید‬
‫كه‬
‫است‬
‫این‬
‫كرد‬
‫نیازمندي هایی نظیر كارایي‪،‬‬
‫قابلیت اصالح و قابلیت اطمینان‬
‫را فراموش كنیم‪ .‬ضمنا باید‬
‫مطمئن شویم كه دارایي هاي غیر‬
‫نرم افزاري نظیر فراورده هاي‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪32/56‬‬
‫معماري سرویس‬
‫)‪(SOA‬گرا‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪33/56‬‬
‫معماري سرویس گرا (‪)SOA‬‬
‫معماري‬
‫معماري‬
‫سرویس‬
‫تعامل‬
‫فناوري‬
‫سرویس گرا‪ :‬سبكي از‬
‫است كه از اتصال سست‬
‫ها‪ ،‬جهت انعطاف پذیري و‬
‫پذیري بصورت مستقل از‬
‫پشتیباني مي كند‪.‬‬
‫معماري سرویس گرا‪ ،‬یكي از رایج‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪34/56‬‬
‫معماري سرویس گرا (‪)SOA‬‬
‫(ادامه‪)...‬‬
‫تعریف معماري سرویس گرا‪:‬‬
‫سبكي از معماري كه از اتصال سست‬
‫سرویس ها جهت انعطاف پذیري و تعامل‬
‫پذیري پشتیباني مي كند و از تركیب‬
‫مجموعه اي از سرویس ها تشكیل شده كه‬
‫این سرویس ها انعطاف پذیري و‬
‫پیكربندي پویا را براي فرآیندها‬
‫محقق مي كنند‪.‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪35/56‬‬
‫معماری سرویس گرا و خط تولید‬
‫نرم افزار‬
‫معماري سرویس گرا‪ ،‬دیدگاهي از معماري نرم‬
‫افزار است كه در آن استفاده از سرویس هاي‬
‫نرم افزاري با درجه اتصال سست‪ ،‬جهت‬
‫پشتیباني از فرایندهاي حرفه ای پیشنهاد مي‬
‫شود‪.‬‬
‫از سوي دیگر‪ ،‬خط تولید نرم افزار براي‬
‫توسعه نرم افزارهاي هم خانواده مورد‬
‫استفاده قرار مي گیرد‪ .‬در خط تولید نرم‬
‫از‬
‫حمایت‬
‫تغییرپذیري و‬
‫دنبال‬
‫افزار ما به‬
‫وحید نصرتی‪-‬‬
‫سمیرا یاوری‪-‬‬
‫نرم افزار‬
‫خط تولید‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪36/56‬‬
‫معماری سرویس گرا و خط تولید‬
‫نرم افزار(ادامه‪)...‬‬
‫هدف از بكارگیري معماري سرویس گرا‪:‬‬
‫• مونتاژ‬
‫• همنواسازي‬
‫• نگهداري از راه حل هاي سازماني براي انجام‬
‫عملكرد سریع در هنگام تغییر نیازمندي ها‬
‫در واقع خط تولید و معماري سرویس گرا مي توانند‬
‫یك سازماندهي براي استفاده مجدد از دارایي هاي‬
‫سازمان ایجاد كرده و آنها را براي سیستم جدید‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید نرم افزار‬
‫توسعه دهند‪.‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪37/56‬‬
‫سه دیدگاه صاحب نظران‬
‫در مورد معماری سرویس گرا‬
‫(‪)SOA‬‬
‫• كارشناسان حرفه‪:‬‬
‫مجموعه اي از سرویس ها كه سازمان مایل به ارائه آنها به‬
‫مشتریان یا شركاي خود است‪( .‬تعریف سرویس كسب و كار)‬
‫• معماران‪:‬‬
‫سبكي از معماري كه حاوي قوانین‪ ،‬الگوها و ضوابطي است كه‬
‫منجر به ایجاد خصایصي نظیر پیمانه اي بودن‪ ،‬بسته بندي‪،‬‬
‫اتصال سست‪ ،‬تركیب پذیري و استفاده مجدد شده و از نظر‬
‫ساختاري از یك ارائه دهنده سرویس و یك درخواست كننده‬
‫سرویس تشكیل شده است‪.‬‬
‫• طراحان و پياده سازان‪:‬‬
‫یك مدل برنامه نویسي كه از استانداردهایي مانند ‪،WSDL‬‬
‫‪ SOAP ،UDDI‬و فناوري هایي نظیر سرویس هاي وب استفاده مي‬
‫‬‫افزارينصرتی‬
‫نرم یاوری‪-‬وحید‬
‫بین مولفه هاي سمیرا‬
‫پذیريافزار‬
‫تعاملتولید نرم‬
‫خط‬
‫را‬
‫كند و قابلیت‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪38/56‬‬
‫اصول حاکم بر معماری سرویس‬
‫گرا‬
‫اصول حاكم بر معماري سرویس‬
‫قابلیت‬
‫از‪:‬‬
‫عبارتند‬
‫گرا‬
‫استفاده مجدد‪ ،‬قرارداد رسمي‬
‫براي تعامل‪ ،‬اتصال سست سرویس‬
‫ها‪ ،‬پنهان سازي‪ ،‬پیاده سازي‬
‫داخلي‪ ،‬قابلیت تركیب پذیري‪،‬‬
‫بي‬
‫ها‪،‬‬
‫سرویس‬
‫خودمختاري‬
‫وضعیتي یا بی تابعیتی سرویس‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪39/56‬‬
‫تفاوت معماري سرویس گرا و‬
‫معماري سنتي‬
‫جدول زیر تفاوت معماري سرویس گرا و معماري سنتي را‬
‫نمایش مي دهد‪.‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪40/56‬‬
‫ترکیب خط تولید‬
‫نرم افزار و‬
‫معماری سرویس‬
‫گرا‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪41/56‬‬
‫تركیب خط تولید نرم افزار‬
‫و معماري سرویس گرا‬
‫نگرش خط تولید نرم افزار و معماري سرویس گرا‬
‫رسیدن به یك هدف تجاري مشترك‪ :‬استفاده مجدد‪.‬‬
‫• استفاده مجدد در خط تولید نرم افزار‪ ،‬با‬
‫استفاده از دارایي هاي اصلي در چند سیستم كه‬
‫هم خانواده هستند‪.‬‬
‫• استفاده مجدد در یك سیستم سرویس گرا‪ ،‬بوسیله‬
‫استفاده از عملكردهاي تجاري یكسان در چندین‬
‫فرآیند یا برنامه هاي كاربردي مختلف‪.‬‬
‫معماري سرویس گرا و خط تولید نرم افزار از دو‬
‫و‬
‫دارند‪:‬‬
‫اشتراك‬
‫لحاظ با هم‬
‫مجددنصرتی‪-‬‬
‫استفادهیاوری‪-‬وحید‬
‫سمیرا‬
‫نرم افزار‬
‫خط تولید‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪42/56‬‬
‫دو سؤال مطرح در خصوص‬
‫تلفیق خط تولید نرم افزار و‬
‫معماري سرویس گرا‬
‫• چگونه سیستم هاي سرویس گرا مي توانند از‬
‫مزایایي كه خط تولید نرم افزار دارد (نظیر‬
‫كنترل تغییرپذیري به منظور مشخص كردن و‬
‫طراحي سرویس ها با هدف استفاده در چندین‬
‫سیستم سرویس گرا) استفاده كنند؟‬
‫• چگونه خط تولید نرم افزار مي تواند از‬
‫مزایاي معماري سرویس گرا بوسیله بكار گرفتن‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪43/56‬‬
‫دو رویکرد تركیب‬
‫خط تولید نرم افزار و معماري‬
‫سرویس گرا‬
‫رویكرد اول‪:‬‬
‫استفاده از خط تولید در سیستم‬
‫هاي سرویس گرا‬
‫رویكرد دوم‪:‬‬
‫استفاده از سرویس گرایي در خط‬
‫تولید نرم افزار‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪44/56‬‬
‫دو رویکرد تركیب خط تولید نرم‬
‫افزار‬
‫و معماري سرویس گرا‬
‫(ادامه‪)...‬‬
‫رویكرد اول‪ ،‬موارد ذیل را دنبال مي كند‪:‬‬
‫• استفاده از تغییرپذیري و مشتركات كه‬
‫منجر به شناخت مجموعه مناسبي از سرویس‬
‫ها خواهد شد كه مي تواند در چندین محیط‬
‫سرویس گرا مورد استفاده قرار گیرد‪.‬‬
‫• استفاده از نقاط تغییر براي نسخه هاي‬
‫مختلف سرویس‪ .‬این موضوع هم در زمان‬
‫طراحي و هم در زمان اجرا یك مشكل عمده‬
‫مي‬
‫سرویس گرا محسوب‬
‫براي سیستم هاي‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید نرم افزار‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪45/56‬‬
‫دو رویکرد تركیب خط تولید نرم‬
‫افزار‬
‫و معماري سرویس گرا‬
‫(ادامه‪)...‬‬
‫رویكرد دوم موارد ذیل را دنبال مي كند‪:‬‬
‫• پیاده سازي دارایي هاي اصلي خط تولید به‬
‫صورت سرویس‪.‬‬
‫• استفاده از فراخواني سرویس بوسیله یك‬
‫مكانیزم تغییرپذیري‪.‬‬
‫• استفاده از سرویس گرایي براي پشتیباني از‬
‫تغییرات مورد نظر كاربر نهایي‪.‬‬
‫هدف مشترک هر دو رویكرد‪ ،‬عینیت بخشیدن به‬
‫وحید نصرتی‪-‬‬
‫سمیرا یاوری‬
‫تولید نرم‬
‫خط‬
‫است‪.-‬‬
‫افزار گرا (‪)SOPL‬‬
‫سرویس‬
‫تولید‬
‫ایده ی خط‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪46/56‬‬
‫خط تولید سرویس گرا‬
‫معماري سرویس گرا و خط تولید نرم افزار‬
‫مي توانند یك سازماندهي براي استفاده‬
‫مجدد از دارایي هاي نرم افزار ایجاد‬
‫كرده و آنها را براي سیستم جدید توسعه‬
‫دهند‪.‬‬
‫خط تولید نرم افزار مي تواند از اجزاء‬
‫استفاده‬
‫افزار سیستم ها‬
‫اينرم از‬
‫مشترك مجموعه‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪47/56‬‬
‫فعالیت هاي مدیریت سرویس‬
‫در یك خط تولید سرویس گرا‬
‫این شكل نشان مي دهد كه چگونه در یك سیستم‬
‫سرویس گرا‪ ،‬مفاهیم مهندسي خط تولید نرم‬
‫افزار )‪ (SPLE‬براي مشخص كردن سرویس هاي قابل‬
‫گیرند‪.‬ویژگی‬
‫تحلیل‬
‫مجدد‪ ،‬مورد استفاده قرار مي‬
‫استفاده‬
‫بر رفتار که دنباله ای از‬
‫سرویس های مبتنی‬
‫ها و مقید یا‬
‫وظایف را تعریف می کنند‬
‫مرتبط کردن‬
‫آنها‬
‫(سازماندهی‬
‫ویژگی های‬
‫سیستم در یک‬
‫کردن‬
‫منظور‬
‫به‬
‫مشخص های‬
‫ویژگی‬
‫مدل‬
‫تولید)‬
‫سرویسخط‬
‫استفاده مجدد‬
‫های قابل‬
‫سرویس های‬
‫بازیابی‬
‫شده‬
‫انبار‬
‫سرویس‬
‫قابل‬
‫استفاده‬
‫محاسبات که یک‬
‫سرویس های مبتنی بر‬
‫مجددشده را ارائه می دهند‬
‫وظیفه از پیش تعریف‬
‫خط تولید نرم افزار‬
‫تحلیل سرویس‪ ،‬به‬
‫منظور بررسی‬
‫اطالعات مدل‬
‫مقید‬
‫ویژگی و‬
‫نصرتی‪-‬‬
‫سمیرا یاوری‪-‬وحید‬
‫ویژگی‬
‫کردن‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪48/56‬‬
‫ارتباط بین ‪ SOA‬و ‪SPL‬‬
‫نگاشتی برای برقراری ارتباط بین ‪SOA‬‬
‫و ‪: SPL‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪49/56‬‬
‫نگاشت ارتباط بین ‪ SOA‬و ‪SPL‬‬
‫ما از سطح اجزاء پایه سیستم شروع مي كنیم‬
‫و آنها را با سرویس هاي تجزیه ناپذیر‬
‫نگاشت مي كنیم‪ .‬در واقع این كار روشي است‬
‫كه ما دارایي هاي اصلي را ارائه دهیم‪.‬‬
‫پیكربندي‪ :‬تركیب مخصوصي از چند سرویس‬
‫تجزیه ناپذیر‪.‬‬
‫اینگونه پیكربندي ها‪ ،‬محصوالت ممكن براي‬
‫خط تولید نرم افزار را ارائه مي دهند‪.‬‬
‫سیستم‬
‫افزارنگاه كنیم‪ ،‬كل‬
‫باالتر‬
‫اگر از یك سطح‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید نرم‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪50/56‬‬
‫نگاشت ارتباط بین ‪ SOA‬و‬
‫‪(SPL‬ادامه‪)...‬‬
‫مزیت این نگاشت‪ :‬شرح مجموعه اي از‬
‫محصوالت در یک دامنه توسط خط تولید‬
‫ارائه شده‪ ،‬به جای شرح یك سیستم‬
‫منفرد‪.‬‬
‫مشخص كردن تمام اجزاي مشترك بین همه‬
‫محصوالت موجود در خط تولید و المان‬
‫هایي كه از یك محصول به محصول دیگر‬
‫در حال تغییر هستند و داشتن سرویس‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪51/56‬‬
‫تغییرپذیري اجزاء سیستم‬
‫نمایش‬
‫نمودار اجزاء‪ ،‬روشی براي‬
‫تغییرپذیري اجزاء سیستم‪.‬‬
‫نمودار اجزاء‪ :‬یک نمایش درختي كه‬
‫ریشه آن سیستم را نشان مي دهد‪.‬‬
‫سرویس هاي تجزیه ناپذیر به صورت برگ‬
‫هاي این درخت ظاهر مي شوند‪ .‬نقاط‬
‫تغییر در اجزایي است كه حداقل یك‬
‫زیر جزء مستقیم دارند‪ .‬این اجزاء‬
‫معموال از تركیب چند زیر جزء تشكیل‬
‫ا‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪52/56‬‬
‫نمودار اجزاء سیستم‬
‫به عنوان مثال‪ ،‬نمودار اجزاء سیستم یک ساختمان‬
‫‪:‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪53/56‬‬
‫مكانیزم تغییرپذیري‬
‫رسیدن به اهداف تجاري از طریق‬
‫خط تولید یا مجموعه ای از سیستم‬
‫هاي سرویس گرا‪ ،‬نیازمند مدیریت‬
‫تغییرپذیري دارایي ها است‪ .‬یكي‬
‫از این دارایي ها‪ ،‬سرویس ها‬
‫هستند‪.‬‬
‫‪ SOA‬زیر ساخت های الزم براي‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪54/56‬‬
‫تفاوت جنبه هاي معمارانه ‪SPL‬‬
‫و ‪SOA‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪55/56‬‬
‫مرور و نتیجه‬
‫گیری‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪56/56‬‬
‫مرور و نتیجه گیری‬
‫• در این تحقیق ابتدا در مورد مفاهیم خط تولید‬
‫نرم افزار و معماري سرویس گرا صحبت كردیم‪ .‬سپس‬
‫به بررسي تركیب این دو پرداختیم‪ .‬گفتیم كه‬
‫چگونه مفاهیم موجود در خط تولید به مفاهیم‬
‫موجود در معماري سرویس گرا نگاشت مي شوند‪.‬‬
‫• همچنین تفاوت هاي جنبه هاي معمارانه ‪ SOA‬و ‪SPL‬‬
‫را بررسي كردیم‪.‬‬
‫• همانطور كه گفتیم هدف اصلي در خط تولید‬
‫یكي‬
‫افزاراصلي سازمان است كه‬
‫هاي‬
‫استفاده از دارایي‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫خط تولید نرم‬
‫این‬
‫انجام‬
‫از مهمترین آنها سرویس است‪.‬‬
‫یزدان ولیئی‬
‫برايامین رضائی‪-‬‬
‫‪57/56‬‬
‫با سپاس از‬
‫حسن توجه و‬
‫شکیبایی شما‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬
‫‪58/56‬‬
‫خط تولید نرم افزار‬
‫سمیرا یاوری‪-‬وحید نصرتی‪-‬‬
‫امین رضائی‪-‬یزدان ولیئی‬