سه شنبه, ۱ خرداد, ۱۴۰۳ / 21 May, 2024
مجله ویستا

چرخه تولید نرم افزار


چرخه تولید نرم افزار

نگاهی به چگونگی تولید نرم افزار های بزرگ و کوچک

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

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

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

● روش آبشاری

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

● روش افزایشی

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

● روش سریع

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

● روش نمونه‌ای

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

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

● متدولوژی‌های سنگین

شناخته‌شده‌‌ترین متدولوژی سنگینRational Unified Process است. RUP توسط شرکت رشنال برای مدیریت پروژه‌های نرم‌افزاری ارائه شد و هم اکنون پرکاربردترین فرآیند تولید و توسعه سیستم‌های نرم‌افزاری است، این متدولوژی برای انواع پروژه با اندازه‌های کوچک تا بسیار بزرگ قابل استفاده است، ولی به دلیل وجود مستندسازی‌های فراوان بیشتر در پروژه‌های بزرگ استفاده می‌شود. از محاسن این روش می‌توان به تحلیل دقیق ریسک‌های پیش روی پروژه، بررسی دقیق نیازمندی‌ها و فازبندی دقیق پروژه اشاره کرد.

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

● متدولوژی‌های سبک (Agile)

متدولوژی سبک، گروهی از متدهای توسعه نرم‌افزار است که در واقع در مقابل متدولوژی‌های سنگین به وجود آمد و بر اساس تکرار و افزایش بنا نهاده شده‌ است. ویژگی این متدها انعطاف‌پذیری آنها در برابر تغییرات، قابلیت بالای کار گروهی و همچنین مستند‌سازی کمتر نسبت به RUP است. دو نمونه از این متدولوژی‌ها عبارتند از:

(XP (eXtended Programming: در XP تاکید بر رضایت مشتری و کار تیمی است، برنامه‌نویسان، مشتری و مدیر پروژه جزئی از تیم هستند. مشتری با ارائه بازخورد خود از محصول، در تکمیل آن کمک می‌کند.

Scrum: این روش امروزه بسیار مورد استقبال بوده و خیلی از شرکت‌های بزرگ به سمت آن رفته‌اند؛ زیرا برای پروژه‌های بزرگ و کوچک قابل اجراست و مانند XP توانسته رضایت مشتری را جلب کند.

● ابزارها

با استفاده از روش‌ها و متدولوژی‌ها مسیر کلی پروژه معلوم و تحلیل‌ها انجام می‌شود. در این میان ابزارهایی وجود دارد که می‌تواند با ارائه دیاگرام‌های دیداری و مفهومی مسیرها و تحلیل‌ها را به صورتی قابل فهم مدل کند.

UML یک زبان مدلسازی است که با استفاده از آن می‌توان همه سناریو‌های موجود در نرم‌افزار را مدل کرد و طرحی دقیق از نحوه پیاده‌سازی سیستم ارائه داد.

● انتخاب زبان برنامه‌نویسی

انتخاب زبان برنامه‌نویسی و در صورت نیاز سیستم مدیریت پایگاه داده مناسب برای تولید نرم‌افزار یکی از تصمیم‌های مهم به شمار می‌رود. هر زبان ویژگی‌های خاص خود را دارد؛ مثلا اگر قرار است برنامه‌ای بنویسید که محاسبات ریاضی انجام دهد، بهتر است بروید سراغ Prolog یا ++C زیرا ابزارهای خوبی در این زمینه دارد. اگر قصد تولید نرم‌افزار اداری دارید Visual Studio مایکروسافت ابزارهای مناسبی در اختیارتان قرار می‌دهد. انتخاب زبان مناسب به متغیر‌های زیادی وابسته بوده و برای هر پروژه متفاوت است. یک انتخاب غلط می‌تواند به شکست پروژه منتهی شود.

حمید خدابنده‌لو