بخشی از مقاله

استفاده از سطوح معماری مدلگرا در مهندسی نرمافزار


چکیده - رهیافت خط تولید نرم افزار یک استراتژی برای تولید محصولات نرمافزاری متمرکز است. این استراتژی مدیریت سازمانی، مدیریت فنی و جنبه های مهندسی نرم افزاری تولید محصولات را شامل میشود.مهندسی خط تولید نرم افزار ارزش افزوده فراوانی برای شرکتهای

توسعه دهنده دارد.استفاده مجدد بالا، زمان کوتاه عرضه محصولات به بازار، بازاریابی و رقابت با دیگر شرکتها، افزایش بهرهوری و کیفیت همگی از ویژگیهایی هستند که توسعه آنها را مقرون به صرفه نمودهاند. ترکیب معماری مدلگرا و خط تولید نرمافزار باعث میشود که بتوان از مزایای هر دو روش در جهت تولید نرمافزار بهره برد. این مقاله به بررسی کارهای انجام شده در زمینه خط تولید نرمافزار با استفاده از معماری مدلگرا میپردازد.

کلید واژه- استفاده مجدد، خط تولید نرم افزار ، محصولات، ،معماری مدلگرا، مهندسی نرم افزار

-1 مقدمه

استفاده مجدد فاکتور اصلی در بهبود بهرهوری و کیفیت مهندسی نرمافزار است. یکی از مزایای شیگرایی ، امکان استفاده مجدد از محصولات جهت کاهش هزینه و زمان می باشد.[1] به همین منظور جهت استفاده مجدد از محصولات در نرمافزار روشهای مختلفی ارائه شده اند که می توان راهاندازی خط تولید نرمافزار ، معماری مدلمحور ، طراحی الگوهای عمومی ، نرمافزارهای مبتنی بر مؤلفه و ... اشاره نمود.

افزایش سرعت و کاهش هزینه تولید، از فاکتورهای مهم و اساسی جهت تبدیل تولید نرمافزار به یک صنعت سود آور می باشند. با داشتن نرمافزارهای مختلف در سازمان می توان یک بانک نرمافزاری از دارائیهای نرمافزاری سازمان ایجاد کرد. برای ایجاد نرمافزارهای جدید در صورت داشتن تشابه با نرمافزارهای قدیمی ، می توان با توجه به موارد و بخشهای مشابه یافت شده از آنها در جهت تولید نرمافزار جدید استفاده نمود. بدین ترتیب بجای کدنویسی مجدد و صرف هزینه و زمان، با استفاده مجدد از کدهای موجود می توان هزینه و زمان را کاهش داد. این مقاله

کارهای انجام شده در زمینه خط تولید نرمافزار با استفاده از معماری مدلگرا را بررسی می کند.

-2 مهندسی مبتنی بر مدل1
در مهندسی مبتنی بر مدل ، برنامه نویسی بوسیله مدلسازی و تبدیل کردن مدل به کد انجام می شود. بنابراین فرایند توسعه نرمافزار بصورت یک خط لوله2 از تبدیلات مدل می باشد که در نهایت به یک محصول نهایی منجر می شود.[2]

MDE یک روش کلی و عمومی برای توسعه نرمافزار است که با استفاده از مدلها باعث افزایش بهرهوری و سازگاری مابین سیستمها می شود. مهندسی مبتنی بر مدل رهیافت های توسعه نرمافزاری را شرح میدهد که در ارتباط با کاهش فاصله انتزاعی بین حوزه مسئله و حوزه پیاده سازی نرمافزار می باشند. این موضوع از طریق استفاده از فنآوریهای است که تبدیل


1

سیستماتیک و منظم حوزه مسئله به پیادهسازی نرمافزار را پشتیبانی می کنند. در چشم انداز MDE مدل محصول اصلی توسعه است و توسعه دهنده گان به فن آوریهای مبتنی بر کامپیوتر جهت تبدیل مدلها به سیستم های اجرایی تکیه دارند. همچنین MDE از تبدیل خودکار مدلها به یکدیگر پشتیبانی می نماید.[3] توسعه مدلمحور3 یک راه حل برای توسعه نرمافزار است که از
رهیافت مهندسی مدلمحور عمومی پیروی میکند و محدود به معماری مدلمحور4 نمی باشد. توسعه مدلمحور یک چارچوب توسعه نرمافزار است که بر انتزاع مبتنی بر مدل و تولید کد بصورت خودکار تاکید دارد. [4]

-3 معماری مدلگرا5
استاندارد IEEE 1471، معماری را اینگونه تعریف میکند : [5] »معماری، سازمان بنیادی سیستم است که به صورت اجزاء تشکیل دهنده سیستم و ارتباط آنها با یکدیگر و با محیط ارائه میشود و اصول راهنمایی در رابطه با طراحی و تکامل را در بر دارد «. معماری مدلگرا روشی برای مدل سازی برنامهها و تولید نرمافزار است. تعدادی از سازمان ها به ایده معماری مدلگرا به عنوان راهی برای سازمان دهی و مدیریت برنامههای خود نگاه می کنند. معماری مدلگرا روش مدلمحوری است که کد در آن بصورت خودکار یا نیمه خودکار از مدلهایی با انتزاع زیاد تولید میشوند و این مسئله با استفاده از زبانهای توصیف استاندارد و برای توصیف این مدلها و تبدیل آنها به یکدیگر انجام می شوند. معماری مدلگرا در چهار سطح پیاده سازی میشود : [6]

· مدل مستقل از محاسبات: 6 توصیف سیستم از نقطه نظر مستقل از محاسبات، پرداختن به جنبههای ساختاری سیستم است. CIM اغلب مدل دامنه، کسب و کار و مفاهیم نامیده میشود. هدف از مدل محاسبات مستقل (CIM) در نظر گرفتن یک دامنه به همراه مفاهیم و ویژگیهای آن است.

· مدل مستقل از سکو: 7 ساختار منطقی سیستم ها را مدل میکند. مدل های ساخته شده در این سطح مستقل از سکو می باشند.برای این منظور میتوان از UML برای مدل کردن استفاده کرد. این سطح نیازمندیهای استخراج شده از سطح CIM را به مدل منطقی سیستم ها تبدیل میکند.

· مدل وابسته به سکو: 8 مدلهای بدست آمده در سطح PIM را به مدلهای وابسته به سکو تبدیل میکند.

· کد : در این سطح مدل وابسته به سکو در سطح PSM به

کد تبدیل میشود. برای این منظور میتوان از ابزارهایی مانند EMF،OAW و Rational Rose جهت تبدیل خودکار مدلها به کد استفاده کرد.

معماری مدلگرا زیرمجموعه توسعه مدل محور و توسعه مدلمحور زیر مجموعه مهندسی مبتنی بر مدل می باشد.

شکل :1 رابطه بین معماری مدلگرا و توسعه مدلمحور و مهندسی مبتنی بر مدل


-4 مهندسی خط تولید نرمافزار

رهیافت خط تولید نرمافزار یک استراتژی برای تولید محصولات نرمافزاری متمرکز است. این استراتژی مدیریت سازمانی، مدیریت فنی و جنبه های مهندسی نرمافزاری تولید محصولات را شامل میشود. [5]

2


شکل :2 نقشها در خط تولید نرمافزار [7]

خط تولید نرمافزار مطابق شکل 2 دارای نقشهای ذیل می باشد :
· توسعه دهنده گان سرمایه های محوری

· توسعه دهنده گان محصول
· مدیریت

-5 مهندسی خط تولید مدل

با استفاده از مهندسی مبتنی بر مدل و اصول خط تولید می توان خط تولید مدل را ایجاد نمود. خط تولید مدل فرایند ساخت مدل را از حالت سنتی به حالت صنعتی تغییر می دهد. مهندسی خط تولید مدل از دو جنبه قابل بررسی است :

· فرایند ایجاد خودکار مدل با استفاده از مدل های پایه ای مانند Feature Model ، Use case Diagram و ... .

· استخراج مدل مورد نظر یا بخشی از آن جهت استفاده مجدد در مدل جدید در حال طراحی

-6 مهندسی خط تولید مدل و نرم افزار

مهندسی مبتنی بر مدل و مهندسی خط تولید نرمافزار هر کدام مزایای خاص خود را دارند. ترکیب آنها مهندسی خط تولید مدلمحور (MDPLE9) نامیده می شود که شامل مزایای هر دو روش است. در این صورت این ترکیب نیاز دارد تا مهندسی مبتنی بر مدل با شرایط جدیدی در مهندسی خط تولید نرمافزار ادغام شود و این بر سرمایه های محوری و فرایند توسعه نرمافزار دلالت می کند. این چالش شامل دو قسم است : -1 مدلها بعنوان سرمایه محوری، که از آنها محصولات بدست می آیند. -2

فرایند توسعه نرمافزار ، که با توجه به ترکیب MDE10 و SPLE11 نیاز به تغییرات دارد.[2]

در مهندسی مبتنی بر مدل و مهندسی خط تولید نرمافزار روش استفاده مجدد و فرایندهای توسعه متفاوت می باشند.

برای تبدیل مدل ها از سطحی به سطح دیگر و در بین خطوط تولید مختلف نیاز به یک فرایند جهت بررسی صحت و درستی تبدیل انجام شده مورد نیاز است. مدل ها بین زبانها و نمادهای مختلف تا تولید کد نرمافزار نهایی تبدیل می شوند . بنابراین تبدیلات درست از یک مدل به مدل دیگر در این روش از اهمیت خاصی برخوردار است. هر چه تعداد زبانها و ابزار جهت انجام این کار زیاد باشند بررسی صحت و درستی این تبدیلات به همان نسبت سخت و پیچیده خواهد شد. [8]


-7 تغییرپذیری

در گذشته برنامه نویسان در هنگام ایجاد سیستم جدید، از کدهای مشابه موجود در سیستم های قبلی استفاده مینمودند. آنها برای این منظور کدهای مشابه یافت شده را در سیستم جدید کپی می نمودند و وظایف جدید را به صورت دستی اضافه می کردند. . این روش در عمل با خطاهای فراوانی مواجه می شد. عناصر اضافه شده از آن جهت که در برنامههای قبلی نبوده اند، خود یک متغیر هستند ولی ممکن است که عناصر اضافه شده جایگزین عناصر قبلی در برنامه ی جدید باشند. تغییرات تشخیص داده شده می بایست توسط نقاط تغییر، مشخص و کنترل شده، تعویض گردند. به علاوه یک دستکاری لازم است تا متغیرها بهتر نمایش داده شوند.[9] برخی روشها از معماری مدلمحور صرفا به منظور مدیریت

تغییرپذیری در خط محصول استفاده نموده اند. مدیریت تغییرپذیری بخشی از خط محصول است که وظیفه کنترل و نگهداری تفاوتهای بین اعضای خط تولید را برعهده دارد. تغییرپذیری و مدیریت آن یکی از پیچیدهترین فعالیت ها در خط تولید است. [10]


3

 

-8 کارهای انجام شده
مقاله [11]، مهندسی مبتنی بر مدل با هدف بالا بردن سطح انتزاع در توصیف مشخصات برنامه و افزایش تولید خودکار برنامهها در توسعه نرمافزار می باشد. به همین دلیل در این تحقیق، با استفاده از MDE و خطوط تولید و فرابرنامه نویسی12 یک پارادایم چند سطحی نرمافزار پیشنهاد شده است. از روشهای طراحی شیءگرا برای نمایش برنامهها استفاده شده است.فرا برنامهها این برنامه ها را تولید می کنند و فرا_فر ا برنامهها13، فرا برنامهها را تولید می کنند و برعکس. در واقع، این روش مهندسی مبتنی بر مدل، خط تولید نرمافزار و فرا برنامهنویسی بر اساس شیءگرایی را با هم ترکیب نموده است و یک روش جدید را بوجود آورده است. باتری در این مقاله دو سطح طراحی را پیشنهاد داده است که همان لایه برنامه و فرابرنامه است. البته به امکان افزودن سطوح در این مقاله نیز اشاره شده است.

در مقاله [12] یک روش جدید با استفاده از مدل ویژگی معرفی شده است. در این روش تمامی سیستم ها دارای موجودیت میباشند و به همین دلیل یک روش جدید بر اساس سه نوع تغییر مثبت، منفی و ساختاری ارائه گردیده است. در این روش اضافه شدن یک آیتم جدید را تغییر مثبت، حذف یک آیتم را تغییر منفی و تغییر در ارتباطات ما بین موجودیتها را تغییر ساختاری مینامند.

در مقاله [13] سناریوهای Use Case ها به گونه ای تغییر داده شدهاند تا بتوان با استفاده از آنها نمودار توالی 14 و نمودار کلاس را استخراج و در نهایت کد نرمافزار را تولید نمود. این مقاله با استفاده از معماری مدلگرا اقدام به ایجاد نمودارهای UML مینماید.

در مقاله [14] برای پشتیبانی نیازمندیهای رابط کاربر15 و تولید خودکار آن، روش مدل سازی سنتی که بر روی سیستم و پیادهسازی متمرکز است بهبود داده شده و یک روش مدلسازی که بر استفاده و کاربر تاکید دارد ارائه شده است.ترکیب Use Case ها عملکرد سیستم را از دید کاربر شرح میدهد. این


روش مبتنی بر ترکیب موارد کاربرد است. با استفاده از این روش میتوان رابط های نهایی کاربر را ایجاد کرد.

مقاله [15] رهیافت مبتنی بر رابطه را جهت یکپارچه نمودن مدلها ارائه نموده است. یک مسئله کلیدی در توسعه مبتنی بر مدل، تجمیع مجموعه ای از مدلها در یک مدل بزگتر و با ویژگیهای بیشتر جهت ساخت یک سیستم عملیاتی است. در این تحقیق سه عملگر weaving , composition , merge

بررسی شدند و برای هر کدام از آنها رابطه هایی جهت یکپارچه سازی مدلها تعریف گردیده است.

ادغام برای ایجاد یک دیدگاه سراسری از یک مجموعه مدل که با هم تداخل دارند مورد استفاده قرار می گیرد هدف ادغام گرفتن زوایای مختلف قابلیت های مشابه است .ترکیب برای جمع آوری مجموعه ای از ویژگی های مستقل و نحوه تعامل با آنها استفاده میشود که باید آنها را به ترتیب و یا به صورت موازی اجرا کرد. weaving در توسعه جنبه گرا مورد استفاده قرار می گیرد. برای ایجاد مدل جدید از مدل های موجود از نمودارهای UML بهره برده است. از روش ارائه شده در این مقاله برای مهندسی نرمافزار سراسری16 میتوان استفاده کرد.

در تحقیق [16] با ارائه یک روش ترکیبی و با استفاده از ابزارهای معماری مدلگرا در Eclipse تغییرپذیری در تولید نرمافزار را مدیریت کرده است.

در مقاله [17] یک نمونه از خط تولید مدلگرا در یک شرکت خاص را پیاده سازی نموده است. در این رهیافت ابتدا مدل ها از جهات مختلف تقسیم و سپس با یکدیگر ادغام می شدند.. تقسیم بندی انجام شده در این شرکت بر مبنای موضوعات موجود در آن شرکت می باشد.

در مقاله [18] سمانتیک نمودارهای UML که یک روش تحلیل و طراحی مبتنی بر شیء گرایی است بررسی شده اند. پیچیدگی خصوصیات UML که شامل چندین نمودار و نماد است و کمبود سمانتیکهای رسمی، کیفیت مدلهای تولید شده سیستم را کاهش میدهد . این امر باعث می شود که تفسیرها و ناسازگاریهای اشتباه بین مدلها بوجود آید. بنابراین یک معنی دقیق، مختصر و مفید از نمودارهای UML اهمیت بسیاری در

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید