مهندسی نرم افزار در سیستمهای متن باز | علوم کامپيوتری - رضا رمضانی
دوشنبه , تیر ۲۵ ۱۳۹۷
خانه / تحقیقات و مقالات / مهندسی نرم افزار در سیستمهای متن باز

مهندسی نرم افزار در سیستمهای متن باز

مهندسی نرم افزار در سیستمهای متن باز

نرم‌افزارهای متن‌باز از نظر مالی به دو دسته مختلف طبقه‌بندی می‌شوند. دسته اول نرم‌افزارهایی هستند که بدون هیچ‌گونه حمایت مالی تولید می‌شوند و دسته دوم نرم‌افزارهایی هستند که علاوه بر اینکه متن‌باز هستند دارای حمایت مالی نیز می‌باشند. قطعاً فرایند تولید این دو گروه نرم‌افزار دارای تفاوتهایی با یکدیگر می‌باشد. به همین دلیل فرایند تولید این دو گروه هر کدام به صورت جداگانه در ادامه بررسی خواهد شد.

فرایند تولید نرم‌افزار متن‌باز بدون حمایت مالی

این مراحل معادل مراحل فرایندهای مهندسی نرم‌افزار نمی‌باشد و کارهایی که در مراحل این فرایند طی می‌شوند بعضاً با کارهای معادل خود در فرایند مهندسی نرم‌افزار متفاوتند.

جمع‌آوری نیازمندیها:

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

طراحی در سطح سیستم:

به طور معمول هیچ طراحی در سطح سیستمی برای یک محصول متن‌باز بدون حمایت مالی وجود ندارد. طراحی سیستمی در این نوع محصولات اغلب‌ به صورت ضمنی انجام می‌شود و معمولاً از نسخه دو یا سه به بعد از یک محصول. در واقع یک طراحی سطح سیستمی برای محصول وجود دارد، هرچند که در جایی نوشته نشده باشد و یا عملاً این مرحله به عنوان یک مرحله جداگانه انجام نشده باشد.

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

پیاده‌سازی:

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

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

نکته منفی که در مرحله پیاده‌سازی این فرایند وجود دارد این است که هیچ‌گونه بازبینی کد از جانب کسی، قبل از اینکه نرم‌افزار بیرون داده شود صورت نمی‌گیرد احتمال اشتباهات منطقی و یا ظاهری در کد هنگامی که در اختیار همگان قرار می‌گیرد بسیار زیاد است.

آزمون

آزمون طی‌شده در فرایند مهندسی نرم‌افزار از کمبود یک مساله رنج می‌برد و آن قرار گرفتن نرم‌افزار در شرایط دنیای واقعی و کار کردن آن در شرایط غیرقابل پیش‌بینی می‌باشد. بسیاری از تلاشهایی که در زمینه آزمایش کردن صورت می‌گیرد همگی حاوی این موضوع هستند که شرایطی مشابه واقعیت فراهم شده و سپس نرم‌افزار آزمایش شود و این دقیقاً موضوعی است که به طور ذاتی در آزمایش نرم‌افزارهای متن‌باز بدون حمایت مالی وجود دارد: قرار گرفتن نرم‌افزار در دنیای واقعی و کارکردن آن در شرایط غیر قابل پیش‌بینی.

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

فرایند تولید نرم‌افزار متن‌باز تجاری

بسیاری از نکات مربوط به این فرایند در قسمت فرایند تولید نرم‌افزار متن‌باز بدون حمایت مالی گفته شد و بسیاری از مسایل این دو فرایند نیز مشترک می‌باشند. مطلبی که در این راستا قابل اهمیت است این می‌باشد که این فرایند به دلیل حمایت مالی می‌تواند از هر یک از فرایندهای مهندسی نرم‌افزار را در رأس کار خود قراردهد و در عین حال از سایر مزیت‌های فرایندی که شامل حال نرم‌افزارهای متن‌باز می‌شود نیز استفاده نماید. تنها مسأله‌ای که وجود دارد این است که در صورت وجود خطا در این نرم‌افزار، مشابه نرم‌افزارهای متن‌باز بدون حمایت مالی همه چیز به خوبی و خوشی تمام نمی‌شود و کاربران چون پرداخت مالی داشته‌اند کاملاً انتظار محصولات بدون ایراد و خطا را دارند و پشتیبانی و نگهداری نیز جزء بدیهیات این‌گونه نرم‌افزارها می‌باشد.

سوالات نمونه:

۱- چرا فاز جمع آوری اطلاعات در نرم افزار ها ی متن باز بسیار بهتر از سایر نرم افزارها انجام می شود؟

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

۲- در فاز آزمون در مهندسی نرم افزاهای متن باز ایراد اصلی چیست؟

بدلیلوجودداشتنکدبرنامهساده‌ترمی‌توانبهایراداتبرنامهپیبردواینخطرحضورافرادسودجورابیشترمی‌کند. درصورتیافت‌شدنیکایراددربرنامهممکناستافرادیوجودداشتهباشندکهبخواهندازآنسوءاستفادهکنند.

۳- مهمترین مزیت در فاز پیاده سازی در نرم افزارهای متن باز چیست؟

مطلببسیارخوبیکهراجعبهاینمرحلهوجودداردایناستکهبرنامه ‌نویساندراینمرحلهسعیمی‌کنندقالبهایجدیدکاریوهمچنینکارهایتازه‌برنامه‌نویسیآزمایشنشدهخودراآزمایشکنندکهاینموضوعهموارهباعثپیدایشقالبهایظاهریجالبتروهمچنینشیوه‌هایپویاوکاراتردربرنامه‌نویسیمی‌شود.

۴-تفاوتبینفازپیادهسازیدرسیستمهایتجاریوغیرتجاریچیست؟

برنامه‌نویسموجوددریکفرایندمتن‌‌بازغیرتجاریبرایعلاقهخودبرنامه ‌می‌نویسدوتحتفشارنیستپسبهراحتیمی‌تواندشیوه‌هایبدیعوتازه‌ایراازمایشکندبدونترسازاینمطلبکهجوابنگیردامادریکفرایندتجاریهموارهسعیمی‌شودکهبسیارمحافظه‌کارانهعملشده،روشهاییاستفادهشوندکهتاکنونجوابخوبیداده‌اند

درباره‌ رضا رمضانی

رضا رمضانی

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*