شاید برای برخی از کسانی که به تازگی وارد چرخه توسعه نرم افزار شده باشند، هنوز تصویر واضحی از مسیر شروع به توسعه نرم افزار و عوامل تاثیر گذار بر این چرخه وجود نداشته باشد. برای این منظور شاید پاسخ به برخی از سوالات که در اینجا طرح شده است، مسیری واضح تر از جرخه تولید و عمر نرم افزار را نشان دهد.
- چرخه عمر توسعه نرم افزار چیست؟
- چرخه عمرتوسعه نرم افزار چگونه کار می کند؟
- مراحل مختلف در چرخه عمر توسعه نرم افزار چیست؟
چرخه عمر توسعه نرمافزار (SDLC) به متدولوژی اشاره دارد که فرایند های شفافی را برای ایجاد نرمافزار با کیفیت بالا ارائه نموده است.
فازهایی که SDLC برای توسعه نرم افزار روی آنها متمرکز است، عبارتند از:
- برنامه ریزی
- طراحی نرم افزار (طراحی معماری نرم افزار)
- توسعه نرم افزار
- تست
- استقرار
تعریف چرخه عمر توسعه نرم افزار
چرخه عمر توسعه نرم افزار(SDLC)، فرآیندی است که در آن نرم افزار با بالاترین کیفیت، کمترین هزینه و در کوتاهترین زمان ممکن تولید می گردد. SDLC یک جریان ساخت یافته و منسجم را برای هریک از فازها ارائه می دهد که به یک سازمان کمک می کند تا به سرعت، نرم افزاری با کیفیت بالا تولید نماید که بخوبی مورد آزمایش قرار گرفته است و برای استفاده در محیط عملیاتی آماده است.
در خصوص چرخه عمر توسعه نرم افزار مدل های متعددی تا کنون ارائه شده است. با این حال برخی از این مدل ها، در میان توسعه دهندگان نرم افزاری از محبوبیت بالاتری برخوردار هستند.
بهترین مدل ها برای چرخه عمر توسعه نرم افزار کدامند؟
- مدل آبشاری
- مدل حلزونی یا مارپیچ
- مدل چابک
- مدل ناب
- مدل تکرارپذیر
- مدل DevOps
چرخه عمر توسعه نرمافزار چگونه کار میکند؟
SDLC با کاهش هزینه توسعه نرم افزار و در عین حال افزایش کیفیت و کمترین زمان تولید عمل میکند. چرخه عمر توسعه نرم افزار با دنبال کردن مدل هایی در راستای این سه محور عمل می کنند، به این اهداف دست می یابد.
در این مدل ها، در ابتدا با ارزیابی ساختارهای موجود برای شناسایی کمبودها و نقایص آغاز می شود. در ادامه، الزامات لازم برای ساختار جدید را تعریف می نماید. پس از آن نرم افزار را از طریق مراحل آنالیز، برنامه ریزی، طراحی، توسعه، آزمایش و استقرار تولید می کند. با پیش بینی اشتباهات پرهزینه، مانند عدم درخواست از کاربر نهایی یا مشتری برای بازخورد، SDLC می تواند دوباره کاری های اضافی را حذف کند.
نکته بسیار مهم و قابل توجه در مدل SDLC، تمرکز قوی بر روی مرحله آزمایش است. همانطور که SDLC یک روش تکرارپذیر است، پس باید از کیفیت کد در هر چرخه اطمینان حاصل شود. بسیاری از سازمانها تمایل دارند تلاش کمی را برای تست کردن محصول صرف کنند در حالی که تمرکز قویتر بر روی تست میتواند باعث صرفهجویی در زمان و هزینه شود.
مراحل مختلف در چرخه عمر توسعه نرم افزار چیست؟
با دنبال کردن بهترین تجارب و مراحل چرخه عمر تولید و توسعه نرم افزار می توان از شیوه ی موثر وکارا در این فراینده ها اطمینان حاصل کرد.
مرحله اول – شناسایی مشکلات کنونی
مشکلات فعلی چه هستند؟ این مرحله از SDLC به معنی وارد کردن ورودی از تمامی ذی نفعان، از جمله مشتریان، فروشندهها، خبرگان صنعت و برنامه نویسان است. بایستی نقاط قوت و ضعف سیستم فعلی را با هدف بهبود شناسایی نمود.
مرحله دوم – برنامه ریزی
چه می خواهیم؟ در این مرحله تیم توسعه، هزینه و منابع مورد نیاز برای پیاده سازی نیازمندیهای تحلیلشده را تعیین میکند. همچنین جزئیات مربوط به ریسکها و شرح برنامه های مربوط به کاهش هر یک ازاین ریسکها شرح میدهد.
به عبارت دیگر، تیم باید امکان سنجی پروژه و چگونگی اجرای موفقیتآمیز پروژه را با کمترین ریسک متصور، تعیین کند.
به عبارت دیگر، تیم باید امکان سنجی پروژه و چگونگی اجرای موفقیتآمیز پروژه را با کمترین ریسک متصور، تعیین کند.
مرحله سوم – طراحی
چگونه میتوانیم آنچه را که میخواهیم به دست آوریم؟ این مرحله با درج مشخصات نرمافزاری در یک مستند به نام نقشه خصوصیات طرح آغاز میشود. سپس همه ذی نفعان این طرح را بررسی کرده و بازخوردها و پیشنهاداتشان را ارائه میکنند. داشتن برنامهای برای جمعآوری و گنجاندن پیشنهادات ذی نفعان در این سند بسیار مهم و امری حیاتی است. بی توجهی به این نکته مهم به طور حتم منجر به عدم موفقیت و هزینههای بیشتر و در بدترین حالت فروپاشی کامل پروژه میشود.
مرحله چهارم – ساخت
بیایید چیزی را که میخواهیم، بسازیم. در این مرحله، پیشرفت واقعی شروع میشود. مهم است که هر توسعه دهنده نرم افزار، به طرح کلی مورد توافق، توجه کند. همچنین دقت کنید که دستورالعملهای مناسب در مورد سبک و شیوه کد نویسی داشته باشید.
برای مثال، استفاده از یک سبک نامگذاری استاندارد برای فایلها و یا متغیرهای مورد استفاده در برنامه به تیم شما کمک خواهد کرد تا کد منظم و منسجم تولید کنند که درک آن برای همگی آسانتر است و در فاز تست با سرعت بیشتری می توان به حل ایرادات احتمالی پرداخت.
مرحله پنچم – تست
آیا به چیزی که می خواهیم رسیده ایم؟ در این مرحله به بررسی عیوب و نواقص میپردازیم. ما مشکلات را تا زمانی که محصول با مشخصات اصلی مطابقت داشته باشد، ادامه می دهیم.
به طور خلاصه، ما میخواهیم بررسی کنیم که آیا کد با الزامات تعریف شده مطابقت دارد یا خیر.
به طور خلاصه، ما میخواهیم بررسی کنیم که آیا کد با الزامات تعریف شده مطابقت دارد یا خیر.
مرحله ششم – استقرار نرم افزار
بیایید با چیزی که ساخته ایم شروع کنیم. در این مرحله، هدف استقرار نرم افزار تولید شده در محیط عملیاتی می باشد تا کاربران بتوانند از محصول استفاده کنند. با این حال در بسیاری از سازمانهای بزرگ، پیش از انتقال محصول به محیط عملیاتی آن را در محیط های تست مختلف آزمایش می کنند.
این کار به هر یک از ذینفعان اجازه میدهد تا قبل از انتشار محصول به بازار، به طور ایمن محصول را ارزیابی کنند. علاوه بر این، انجام این کار اجازه میدهد تا هر گونه خطای نهایی قبل از انتشار محصول، شناسایی شود.
برنامه اضافی: نگهداری نرمافزار
بیایید این محصول را به چیزی که میخواهیم نزدیکتر کنیم. واقعیت آن است این بخش از برنامه تقریبا هرگز به پایان نخواهد رسید. علاوه براین، با توجه به شرایطی که در دنیای واقعی تغییر میکند، ما باید نرمافزار را به روز رسانی و توسعه دهیم.
جنبش DevOps، روش SDLC را به طریقی تغییر داده است. در مدل توسعه نرم افزار به سبک DevOps، توسعه دهندگان مسئول گامهای بیشتری را در مسیر فرآیند توسعه برمی دارند.
همچنین ارزش تغییر را نیز با وضوح بیشتری می توان مشاهده نمود. زمانی که تیمهای توسعه (development) و راهبری (Operation) از ابزارهای مشابه برای ردیابی عملکرد نرم افزار استفاده میکنند و نقصهای ایجاد شده از نقطه شروع تا پایان یک برنامه را بررسی میکنند، این کار یک زبان مشترک و انتقال سریعتری در میان تیمها را فراهم میکند.
ابزارهای نظارت بر عملکرد برنامه (Application performance monitoring) را میتوان در توسعه، تست کیفیت و محیط عملیاتی مورد استفاده قرار داد. این باعث میشود که همه از همان مجموعه ابزار در سراسر چرخه عمر توسعه نرم افزار استفاده کنند.
مدل های معروف چرخه عمر تولید نرم افزار
مدل آبشاری
این مدل، قدیمیترین و ساده ترین مدل است. در این روش، ابتدا یک فاز را تمام میکنیم و سپس فازبعدی را شروع میکنیم. هر فاز برنامه کوچک خود را دارد و هر فاز ” آبشار ” را به مرحله بعدی میرساند. بزرگترین اشکال این مدل این است که جزئیات کوچکی که ناقص ماندهاند میتوانند کل فرآیند را متوقف کنند.
مدل چابک
مدل چابک در SDLC، محصول را از چرخه جدا میکند و یک تکه قابل تحویل از محصول نهایی را به سرعت تحویل میدهد. این روش یک توالی در تولید نسخ ایجاد میکند. تست هر نسخه اطلاعات را در نسخه بعدی ذخیره میکند. طبق گفته رابرت نیمه، اشکال این مدل این است که تاکید زیاد بر تعامل مشتری میتواند منجر به هدایت پروژه در مسیر اشتباه شود.
مدل تکرار پذیر
این مدل از SDLC، تاکید بر تکرار دارد. سازندگان یک نسخه بسیار سریع و با هزینه نسبتا ً کمی تولید میکنند، سپس آن را از طریق نسخههای سریع و پیدرپی بهبود میبخشند. یک عیب بزرگ در این مدل این است که اگر نسخه های تولید شده بدون کنترل باقی بمانند میتواند هزینه ها را به سرعت بالا ببرد.
مدل V شکل
این مدل بسیار شبیه مدل آبشاری است. با این تفاوت که از روش نمونه گیری متفاوتی استفاده می نماید که اصطلاحا فرآیند نمونه گیری در نقاط خاصی اتفاق می افتد.
مدل بیگ بنگ
این مدل SDLC با ریسک بالا، بیشتر منابع خود را در توسعه و بهترین عملکرد برای پروژههای کوچک به کار میاندازد. این مدل فاقد مرحله تعریف الزامات کامل شبیه به روشهای دیگر است.
مدل حلزونی
مدل حلزونی از پرکاربردترین مدلهای SDLC و بسیار شبیه به مدل تکرارپذیر در تاکید بر تکرار است. مدل حلزونی برنامهریزی، طراحی، ساخت و تست را بارها و بارها با بهبودهای تدریجی در هر مرحله انجام میدهد.
فواید استفاده از چرخه عمر توسعه نرم افزار چیست؟
اگر SDLC درست انجامشده باشد، میتواند بالاترین سطح مدیریت کنترل و مستندسازی را ایجاد نماید. توسعه دهندگان نرم افزار متوجه میشوند که چه چیزی باید بسازند و چرا. همه ذینفعان یک هدف، پیش از رسیدن به آن توافق دارند و برای رسیدن به این هدف طرح روشنی را میبینند و اینکه همه هزینهها و منابع مورد نیاز را درک میکنند.
چندین دام میتوانند روش SDLC را به یک ابزار بازدارنده برای توسعه محصول تبدیل کنند تا ابزاری که به ما کمک میکند. عدم توجه به نیازهای مشتریان و تمام کاربران و ذینفعان میتواند منجر به درک ضعیف نیازهای سیستم در ابتدا شود. SDLC تنها در صورتی موفقیت آمیز خواهد بود که برنامه با وفاداری دنبال شود.
نکات کلیدی
پایبندی به چرخه عمر مناسب برای تکمیل موفقیت آمیز پروژه بسیار مهم است. این به نوبه خود مدیریت چنین پروژه هایی را نیز آسان تر می کند.
مدل های مختلف چرخه عمر توسعه نرم افزار مزایا و معایب خاص خود را دارند. بهترین مدل برای هر پروژه را می توان با عواملی مانند نیاز (مشخص یا نامشخص)، پیچیدگی سیستم، اندازه پروژه، هزینه، محدودیت مهارت و غیره تعیین کرد.