گزارش سمینار کارشناسی ارشد
رشته مهندسی کامپیوتر گرایش فناوری اطلاعات
چکیده
مهندسی خط تولید نرم افزار روش مناسبی برای کاهش زمان و هزینه توسعه خانوادهای از سیستمهایدارای ویژگیهای مشترک از طریق افزایش قابلیت استفاده مجدد است. چ ارچوبها و رویکردهای مهندسی خطوط تولید نرم افزار فعلی داراییهای پایه را به عنوان واحدهای سازنده سیستمهای نرم-افزاری معرفی میکنند که از زمان طراحی تا استقرار میتواند به سیستم افزوده شوند. این بدین معنا است که تمامی نقاط تغییرپذیری محصول باید قبل از تحویل نمونهسازی شده باشند. با توجه بهتغییرات سریع در نیازمندیها و بازار به محصولاتی نیاز است که قابلیت تغییرپیکربندی در زمان اجرا را نیز داشته باشند. یک راه حل برای این مسئله استفاده از پارادایم سرویس گرائی در مهندسی خط تولید نرمافزار است.
در این تحقیق در مورد رابطه میان خط تولید نر مافزار و معماری سرویسگرا مطالعه میشود و
شباهتها و تفاوتهای میان این دو مشخص میشود. هدف از این تحقیق رسیدن به یک چارچوب
خط تولید سرویسگرای جامع است که قادر به رفع چالشهای حاصل از ترکیب این دو رویکرد باش د.
به این منظور چارچوبهای خط تولید نرم افزار مرجع و همچنین چارچو بها و رویکرد خط تولید
سرویسگرای پیشنهاد شده مطالعه و مقایسه میشوند. نقاط ضعف و کمبودهای موجود شناسایی می-
شوند و همچنین چارچوبی پیشنهاد میشود که در آن تلاش شده بستر مناسب برای رفع این معایب
فراهم شود.
کلمات کلیدی: خط تولید نرم افزار، معماری سرویس گرا، خط تولید سرویسگرا
فصل اول - مقدمه
مقدمه
خط تولید نرم افزار و معماری سرویسگرا به عنوان دو رویکرد که قابلیت استفاده مجدد را برای
طراحان سیستمها فراهم میکنند شناخته میشوند. با توجه به بزرگتر و پیچیدهتر شدن سیست مها
نیاز به استفاده مجدد از مولفهها و عناصر افزایش پیدا کرده است. از این رو شرکتها و سازمانهای
زیادی به سمت استفاده از این دو رویکرد رفتهاند. البته با وجود تاکید بر استفاده مجدد، تفاو تهایی
بین این دو رویکرد وجود دارد. خط تولید نرمافزار روی ایجاد یک خانواده از محصولات مرتبط با
استفاده از داراییهای پایه مشترک تمرکز دارد در حالیکه معماری سرویسگرا بر روی ایجاد سیست م-
هایی انعطافپذیر با استفاده از سرویسها متمرکز است.
با توجه به موارد فوق به نظر میرسد که با ترکیب این دو رویکرد میتوان به روشی دست یافت که
انعطافپذیری ،تغییرات پویا در زمان اجرا و قابلیت استفاده مجدد را در طراحی سیستمها فراهم آورد.
تعریف مسئله
ترکیب خط تولید نرمافزار و معماری سرویسگرا میتواند مزایای فراوانی به همراه داشته باشد. از آنجا
که در خط تولید نرمافزار محصولاتی با پیکربندی ثابت تولید میشوند، یعنی تمام مشخصات محصول
قبل از تحویل به مشتری معین میشوند و تغییر محصول بعد از آن دشوار میباشد، خط تولید دارای
انعطافپذیری محدودی است. از طرف دیگر گرایشهای فعلی به این سمت است که محصولاتی با
امکان پیکربندی پویا تولید شوند. با توجه به این نکته برای افزایش اثربخشی خط تولید نرمافزار نیاز
است تا انعطافپذیری آن را افزایش داد تا امکان تولید محصولاتی با قابلیت پیکربندی مجدد پویا
فراهم شود.
معماری سرویسگرا با توجه به ویژگی انعطافپذیریاش میتواند راه حل مناسبی برای رفع این چالش
در خط تولید نرمافزار باشد. در معماری سرویسگرا امکان انتخاب سرویسهای متفاوت در زما نهای
مختلف چرخه توسعه سیستم – از طراحی تا اجرا – تولید سیستمهایی با پیکربندی پویا را میسر می-
کند.
مسئلهای که مطرح میشود این است که چگونه میتوان از قابلیتهای معماری س رویسگرا در خط
تولید نرمافزار بهره گرفت به طوریکه خط تولید خصوصیات مثبت خود را حفظ کند. برای این کار باید
در مورد شباهتها و تفاوتهای این دو رویکرد تحقیق کرد و در نهایت روشه ایی برای تحلیل،
طراحی، پیادهسازی، تست و استفاده از مولفههایی که با معماری سرویسگرا سازگار هستند را
پیشنهاد کرد.
1-3. اهداف تحقیق
هدف از انجام این تحقیق رسیدن به یک چارچوب جامع و کامل برای خط تولید سرویسگرا است
است که تمامی مراحل و قدمهای لازم برای تولید داراییهای پایه و محصولات را مشخص کند.
همچنین ورودی و خروجی هر مرحله، نحوه ارزیابی و روند تکامل در آن مشخص باشد. این مراحل با
توجه به رویکردهای سرویسگرائی و خط تولید نرمافزار باید انتخاب شوند و قابلیتهای این دو رویکرد
را در قالب رویکرد خط تولید سرویسگرا فراهم آورند.
1-4. محدوده تحقیق
خط تولید نرمافزار از اواخر دهه 09 مطرح و میان محقق ان و صنعت پذیرفته شده است. معماری
سرویسگرا موضوع نسبتا تازهای است که با توجه به قابلیتهایش به سرعت مورد استقبال همه قرار
گرفت. ایده خط تولید سرویسگرا از سال 2005 مطرح شد و کارهایی در این زمینه نیز انجام شده
است، اما هنوز به بلوغ و تکامل نرسیده است.
با توجه به مطالب فوق در این تحقیق روی چارچوبها و رویکردهای خط تولید نرمافزار تمرکز می-
شود. چارچوبهای اصلی معرفی شده برای خط تولید نرمافزار بررسی م یشوند و از آنها برای رفع
چالشهای خط تولید سرویسگرا و پیشنهاد یک چارچوب جامع استفاده میشود. از این رو محدوده
این تحقیق شامل روشها و رویکردهای خط تولید نرمافزار و همچنین مفاهیم و روشهای توسعه
سیستمها بر پایه معماری سرویسگرا میشود.
1-5. ساختار تحقیق
روند و ساختار این تحقیق به صورت زیر است:
در فصل دوم مفاهیم و ادبیات مرتبط با خط تولید نرم افزار و معماری سرویسگرا معرفی میشون د. در
ادامه تحقیق از این مفاهیم استفاده خواهد شد و آشنایی با آنها به درک بهتر تحقیق کمک م یکن د.
همچنین این مفاهیم مقدمهای برای معرفی خط تولید سرویسگرا هستند که در انتهای این فصل
بررسی میشود.
فصل سوم به مرور ادبیات در زمینه خط تولید نرمافزار میپردازد. در این فصل روشها و چارچوبهای
موجود برای خط تولید نرمافزار و خط تولید سرویسگرا معرفی میشوند و در مورد مراحل هر یک
بحث میشود. در آخر این فصل مقایسهای میان این چارچوبها انجام میشود .
در فصل چهارم یک رویکرد جدید برای خط تولید سرویسگرا معرفی میشو د. در این فصل ابتدا
ضعفهای روشهای موجود مورد بررسی قرار میگیرد و چال شهای موجود در زمینه خط تولید
سرویسگرا مطرح میشوند. در آخر چارچوب پیشنهادی معرفی میشود که در آن سعی شده است به
چالشهای مطرح پاسخ داده شود.
در فصل پنجم نتیجهگیری کارهای انجام شده، سوالات پیش آمده در طول تحقیق و کارهای آینده
عنوان میشود .
فصل دوم - ادبیات موضوع
مقدمه
هدف از این بخش آشنایی با مفاهیم کلیدی به کار برده شده در ارتباط با خط تولید نرمافزار و
معماری سرویس گرا در این تحقیق است. علاوه براین یک مقایسه منظم میان خط تولید نرمافزار و
معماری سرویس گرا نیز ارائه میشود که تلاش میکند نقاط اشتراک و تفاوتهای این دو رویکرد
توسعه سیستم را آشکار سازد.
خط تولید نرم افزار
خط تولید نرمافزار یا خانوادههای نرمافزار به عنوان یک پارادایم توسعه نرمافزار مهم در حال رشد است [1]. شرکتهای بزرگی مانند Nokia ،HP و Motorola نشان دادهاند که استفاده از رویکرد خط تولید
برای توسعه نرمافزار میتواند بهبودهای کمی و کیفی قابل توجهی را در بهرهوری، زمان عرضه به بازار،
کیفیت محصول و رضایت مشتری فراهم آورد.
تعریف مرسوم برای خط تولید به صورت زیر است:
"مجموعهای از سیستمهای مبتنی بر نرمافزار١ که دارای یک سریویژگ یهاعمومی و
مدیریت شده مشترک بوده، نیازهای مشخصی از بازار یا ماموریتخاص ی را برآورده می-
نمایند و براساس مجموعه مشترکی از داراییهای پایه٢ به صورت تجویزی توسعه داده می-
شوند [2]."
ایده اصلی در خط تولید نرم افزار جمعآوری مولفه های اصلی مشترک و تغییرپذیر بین مجموعهای از
محصولات نرمافزاری است که نیازمندیهای بخش خاصی از بازار را برآورده میکنند [1] 0. مدل خط
تولید نرمافزار به جای توصیف یک سیستم نرمافزاری خاص مجموعهای از محصولات درون یک دامنه
را توصیف میکند. این کار از طریق شناسایی عناصر مشترک بین تمامی محصولات خط تولید و
عناصری که در محصولات مختلف متفاوت هستند امکان پذیر است. عامل کلیدی دیگر در خط تولید
داراییهای پایه هستند که پایه خط تولید را تشکیل میدهند [1]. داراییهای پایه میتواند شامل
معماری، مولفههای نرمافزار قابل استفاده مجدد، مدلهای دامنه ،شرح نیازمندیها، طرحهای تست،
موارد تست و توصیف فرآیندها باشند .]3[
در ادامه دیگر مفاهیم مرتبط با خط تولید تشریح میشوند.
2 -2-1. حیطهبندی خط تولید
حیطهبندی فرآیندی است که در آن در مورد محصولاتی که قرار است تولید شوند، محصولاتی که
بخشی از خط تولید خواهند بود و مشترکات و تفاوتهای آنها تصمیمگیری میشود [1]. این فعالیت
قبل از فازهای چرخه عمر خط تولید انجام میشود. حیطهبندی در سه سطح انجام میشود [4]:
مرتبط هستند مشخص میشوند.
3 - حیطه بندی داراییها: در این سطح عملکرد دقیقی که مولفههای قابل استفاده مجدد باید
انجام دهند مشخص میشود .
-2-2. چرخه عمر خط تولید
به طور معمول برای خط تولید دو چرخه عمر در نظر گرفته میشو د: مهندسی دامنه١ و مهندسی
محصول٢. این دو چرخه ارتباط نزدیکی با یکدیگر دارند و اطلاعاتی را تولید میکند که به اجرای هر
چه بهتر چرخه دیگر کمک میکند. دلیل وجود دو چرخه عمر برای خط تولید نرمافزار به تمرکز آن بر
روی خانوادهای از نرمافزارها، به جای یک سیستم نرمافزاری برمیگردد. در یک چرخه زیربنای لازم
برای خانواده ایجاد میشود و در چرخه دیگر محصولاتی از خانواده با نیازمندیهای خاص تولید م ی-
شوند [5].
2 -2-2-1. مهندسی دامنه
دامنه یک بدنه دانش اختصاصی، یک حوزه تخصص یا مجموعهای از عملکردها است [3]. مهندسی
دامنه اغلب توسعه داراییهای پایه٣ هم نامیده میشود .هدف از مهندسی دامنه بنا نهادن قابلیت تولید
محصولات است [3]. در این چرخه داراییهای پایه که با هم زیربنای خط تولید را تشکیل م یدهند
ساخته میشوند. تمامی فعالیتهای جمعآوری و تحلیل نیازمندیها، طراحی، پیادهسازی و تست
داراییها در این چرخه انجام میشود.
2 -2-2-2. مهندسی محصول
در چرخه مهندسی محصول – که به آن توسعه محصول١ نیز گفته میشود – یک محصول از خانواده
نرمافزار با توجه به نیازهای خاص ایجاد میشود. این چرخه از داراییهای پایه خط تولید برای ایجاد
محصولات استفاده میکند [6]. در حین چرخه مهندسی محصول، محصولات اختصاصی مطابق با
نتایج حیطهبندی و مهندسی دامنه پیادهسازی میشوند [5]. نیازمندیهای خاص محصول که در خط
تولید دیده نشدهاند در این مرحله تحلیل، طراحی، پیادهسازی و تست میشوند. خروجی این چرخه
که محصول نهایی است میتواند بازخوردهای مناسبی برای چرخه مهندسی دامنه فراهم کند که روی
داراییهای پایه و برنامه تولید خط تولید اثر بگذارند [3].
به عنوان مثال برای توسعه یک سیستم مدیریت بیمارستان، نیازمندیهای آن معین میشوند و از
میان مولفههای تولید شده در مرحله مهندسی دامنه مولفهها و معماری مورد نیاز انتخ اب م یشون د.
نیازمندیهایی که در مهندسی دامنه شناسایی نشدهاند شناسایی، مولف ههای مورد نیاز تولید و با
مولفههای موجود ترکیب میشوند. سپس سیستم دوباره مورد تست قرار میگیرد تا مشکلات احتمالی
ناشی از افزودن مولفهها شناسایی و رفع گردن د. در مرحله تست نیز از تستهای انجام شده در
مهندسی دامنه میتوان استفاده کرد. خروجی نهایی چرخه مهندسی محصول سیستم آماده تحویل
است.
2 -2-3. نمودار ویژگیها
ویژگی٢ یک جنبه، کیفیت یا مشخصه مهم و متمایز سیستم یا سیستمهای نرمافزاری است که از دید
کاربر قابل مشاهده است [7]. تغییرپذیری میان ویژگیها اغلب با استفاده از یک نمودار ویژگی
نمایش داده میشود [8]. طبق تعریف [7] نمودارهای ویژگی اغلب به صورت درخت نمایش داده می-
شوند که ریشه درخت به کل سیستم اشاره میکند و سطوح پایینتر درخت به ویژگیهای ریزتر اشاره
میکنند. ارتباط میان گرههای درخت ویژگیها محدودیتها و قواعد وابستگی را مشخص میکن د.
ویژگیها در این ساختار درختی به ویژگیهای اجباری، انتخابی و جایگزین شکسته میشوند. ویژگی-
های اجباری ویژگیهایی هستند که در همه محصولات در نظر گرفته میشوند. ویژگ یهای انتخابی
ویژگیهایی هستند که با توجه به نیاز محصول انتخاب یا کنار گذاشته میشوند. ویژگیهای جایگزین
ویژگیهایی هستند که از میان آنها فقط یک مورد میتواند انتخاب شود. نمودار ویژگ یهای یکی از
مهمترین فرآوردههای تولید شده در مهندسی دامنه است که به توسعه محصول در چرخ ه مهندسی
محصول کمک زیادی میکند [1].
2 -2-4. نقاط تغییر١
یکی از فعالیتهای اصلی در خط تولید مشخص کردن مشترکات و تفاوتهای سیستمهای یک دامنه
است. این مشترکات و تفاوتها به صورت نقاط تغییرپذیری٢ نمایش داده میشوند. نقاط تغییرپذیری
تغییرات در ویژگیها درون خط تولید را توصیف میکنند. ویژگیها یا مشترک هستند یا متغی ر [9].
هنگام ایجاد محصول نهایی از میان ویژگیهای مختلف ممکن برای نقاط تغییر ویژگیای که نیازهای
خاص محصول را برآورده میکند انتخاب و با بقیه مولفهها یکپارچه میشود .مدلسازی نقاط تغییر از
این جهت اهمیت بسیار بالایی دارد که اگر تعداد آنها زیاد باشد، تعداد حالات ممکن برای انتخاب
ویژگیها به صورت نمایی رشد میکند که تست تمامی این حالات را عملا غیرممکن میس ازد .به
عنوان مثال میتوان نحوه نمایش نتیجه در یک بازی رایانهای را نمونهای از نقاط تغییرپذیری در نظر
گرفت. نحوه نمایش میتواند به صورت دیجیتال ،گرافیکی و یا ساده باشد. در هنگام توسعه محصول
باید در مورد انتخاب یکی از این سه نحوه نمایش تصمیمگیری شود.
2 -2-5. معماری خط تولید
معماری خط تولید یکی از عناصر اصلی خط تولید نرمافزار است [6]. معماری خط تولید محصولات
منفرد، مولفههای مشترک و تفاوتهای بین محصولات خانواده - نقاط تغییرپذیری - را توصیف م ی-
کند [2]. معماری خط تولید در چرخه مهندسی دامنه ایجاد میشود و در مهندسی محصول از آن به
عنوان یک دارایی پایه استفاده میشود که معماری محصول از طریق نمونهسازی و گسترش آن بدست
میآید .]6[ گسترش در معماری مطابق با نقاط تغییرپذیری تعریف شده صورت میگیر د.