Software Development Life Cycle یا به اختصار SDLC به معنی «چرخۀ حیات توسعۀ نرمافزار» میباشد و به فرآیندی اشاره دارد که به منظور توسعۀ نرمافزار مورد استفاده قرار میگیرد. در واقع، چرخۀ حیات توسعۀ نرمافزار یک پروسۀ گامبهگام است که میباید از سوی تیمهای نرمافزاری رعایت شود تا منجر به تولید و ارائۀ نرمافزاری با کیفیت بالا و متناسب با نیازهای کاربران گردد. به طور کلی، مراحل چرخۀ حیات توسعۀ نرمافزار توصیفکنندۀ نحوۀ طراحی، توسعه، ارتقاء و نگهداری محصول نهایی میباشند به طوری که این چرخه امکان بازبینی محصول، رفع مشکلات احتمالی و همچنین افزودن قابلیتهایی متناسب با نیازهای متغیر کاربران را فراهم میآورد که در ادامه به بررسی هر یک از آنها خواهیم پرداخت.
برنامهریزی و آنالیز نیازهای کاربران
مرحلۀ اول از چرخۀ حیات توسعۀ نرمافزار مربوط به برنامهریزی و آنالیز نیازهای کاربران میباشد. در واقع، چنین تحلیلی به منزلهٔ اولین مرحله از این چرخه بوده و از اهمیت بالایی برخوردار است به طوری که در این مرحله مهندسین نرمافزار و افراد باتجربۀ تیم دیتای مربوط به نیازهای کاربران را با بررسی نظرات، تحلیلهای دپارتمان فروش، انجام نظرسنجی از بازار و همچنین نظرات کارشناسان مرتبط با حوزۀ توسعهٔ محصول مورد نظر جمعآوری کرده سپس دادههای موجود را برای برنامهریزی رویکرد توسعۀ نرمافزار و همچنین بررسی امکانسنجی تولید محصول مورد نظر در هر یک از حوزههای اقتصادی، عملیاتی و فنی مورد استفاده قرار میدهند.
به طور کلی، برنامهریزی برای تولید محصولی با کیفیت و متناسب با نیازهای کاربران و همچنین شناسایی ریسکهای مربوط به پروژه در این مرحله انجام میشود که خروجی آن داکیومنتی شامل رویکردهای مختلف جهت موفقیت در پیادهسازی پروژه با حداقل ریسک است که به عنوان ورودی به مرحلۀ بعد داده میشوند.
تعریف و مستندسازی نیازهای نرمافزار
پس از مشخص کردن نیازهای کاربران، در مرحلۀ دوم افرادی همچون مدیر پروژه و دیگر افراد ذیربط اقدام به تعریف و مستندسازی نیازهای نرمافزار میکنند تا امکان تولید چنین محصولی از نظر بودجه، منابع و زمان موجود سنجیده شود که خروجی آن نیز داکیومنتی تحت عنوان Software Requirement Specification یا به اختصار SRS میباشد که حاوی دیتایی از مرحلۀ طراحی تا توسعه است.
انتخاب معماری توسعهٔ نرمافزار
مهندسین در مرحلۀ سوم با توجه به داکیومنت تهیهشده در مرحلۀ قبل، مواردی همچون نیازهای سختافزاری و معماری مناسب برای توسعۀ نرمافزار را از میان الگوهای موجود انتخاب کرده و بر آن اساس در مرحلۀ بعد اقدام به توسعۀ نرمافزار مینمایند مضاف بر اینکه دولوپرها در این مرحله الگوهای طراحی مناسب جهت حل مسائل الگوریتمیک در توسعۀ نرمافزار را انتخاب میکنند و در برخی موارد نیز در این مرحله یک به اصطلاح پروتوتایپ (نمونۀ اولیۀ محصول) تولید میشود تا بدین وسیله مناسبترین روش برای توسعۀ محصول نهایی اتخاذ گردد که خروجی این مرحله داکیومنتی شامل لیستی از الگوها و کامپوننتهای انتخابشده برای توسعۀ محصول و در برخی موارد قطعه کدی مربوط به نمونۀ اولیۀ میباشد که به عنوان نقطۀ شروعی برای توسعۀ نرمافزار مورد استفاده قرار میگیرد.
کدنویسی کامپوننتهای پروژه
مرحلۀ چهارم مربوط به کدنویسی نرمافزار مد نظر است که در این مرحله دولوپرها بر اساس خروجی دریافتشده از مرحلۀ قبل اقدام به کدنویسی پروژه مینمایند و چنانچه معماری نرمافزار در مرحلۀ سوم با جزئیات بیشتری طراحی شده و الگوی طراحی مناسبی انتخاب شده باشد، کدنویسی در این مرحله بدون مشکل خاصی انجام خواهد شد. به طور کلی، تَسکهای مورد نیاز برای تکمیل توسعۀ نرمافزار در قالب یکسری کامپوننت یا ماژول به دولوپرها واگذار میگردد و میتوان گفت که مرحلۀ چهارم تا حدودی طولانیترین مرحله در چرخۀ حیات توسعۀ نرمافزار میباشد.
تست نرمافزار
مرحلۀ پنجم مربوط به تست محصول نهایی است که این فاز در بسیاری از مدلهای SDLC به عنوان زیرمجموعهای از تمامی مراحل چرخۀ توسعۀ نرمافزار و همزمان با آنها میباشد اما در عین حال به عنوان یک مرحلۀ جداگانه نیز پس از توسعۀ محصول نهایی انجام میشود که در آن قابلیتهای نرمافزار مورد نظر تست میشود تا میزان تناسب آن با نیازهای کاربران مورد سنجش قرار گیرد که در طی این فرآیند برخی نواقص و باگهای موجود در نرمافزار شناسایی شده و به تیم مهندسی ارجاع داده میشوند تا مرتفع گردیده و نرمافزار مجدداً برای بررسی ارورهای احتمالی در اختیار تیم تست اپلیکیشن قرار میگیرد و این فرآیند تا زمانی ادامه مییابد که نرمافزار بدون باگ، مطابق با نیازهای کاربر و متناسب با کیفیتی باشد که در مرحلۀ دوم مشخص گردیده است.
انتشار نرمافزار
مرحلۀ ششم دیپلوی نرمافزار میباشد که پس از توسعه، تست و سنجش قابلیتهای آن در مراحل پیشین، به طور رسمی، معمولاً تحت نسخهٔ بتا، منتشر میشود.
نگهداری از نرمافزار
مرحلۀ هفتم پس از انتشار نرمافزار آغاز میشود که در آن ممکن است کاربران پس از استفاده از نرمافزار با برخی مسائلی مواجه شوند که نیاز به رفع داشته باشند به طوری که پس از حل آنها و تست مجددِ، نرمافزار در اختیار ایشان قرار میگیرد. به علاوه، مرحلۀ نگهداری شامل مواردی همچون ارائۀ نسخۀ جدید از نرمافزار یا افزودن فیچرهای جدید به آن بر اساس نیازهای متغیر کاربران میباشد که در طول زمان تغییر کرده و نیازمند بازبینی مجدد میباشند و از همین روی میتوان گفت که چرخۀ حیات توسعۀ نرمافزار نقطۀ پایانی نداشته و مرحلۀ نگهداری نیز به عنوان نقطۀ شروع مجدد این چرخه میباشد بدین معنی که تمامی مراحل فوق به منظور رفع نیازهای کاربران و ارائۀ محصولی باکیفیت میباید به طور مداوم تکرار شوند.
جمعبندی
به طور کلی، مدلهای مختلفی برای SDLC یا «چرخۀ حیات توسعۀ نرمافزار» ارائه شدهاند که متدولوژی مناسب برای توسعۀ نرمافزار مد نظر بر اساس اهداف و نیازهای محصول و همچنین سایر مواردی نظیر هزینۀ تولید، زمان مورد نیاز برای توسعه و نیازهای متنوع کاربران انتخاب میگردد که هر یک از مدلها نیز مراحلی خاص خود را به منظور ارائۀ محصولی با کیفیت شامل میشوند.