درک مراحل چرخه زندگی توسعه نرم افزار
در حالی تکنولوژی، روش ها و دیدگاه های مربوط به ساخت خدمات نرم افزاری با کارایی بالا تغییر کرده اند .چرخه زندگی توسعه نرم افزار (SDLC)مجموعه ای از مراحل مهم است که برای تیم های تولید و تحویل نرم افزار با کیفیت بالا تعریف شده است. درمقاله SDLC و مراحل آن با جزئیات بیشتری مورد بحث قرار خواهد گرفت.
چرخه زندگی توسعه نرم افزار چیست؟
چرخه زندگی توسعه نرم افزار به مراحل کار تولید برنامه های نرم افزاری اشاره دارد. هر مرحله مربوط به نقش یا مسئولیتی است که همکاران مربوط به نرم افزار باید آن را درک، مدیریت و بهینه سازی کنند تا خدمات نرم افزاری خود را با سرعت و عملکرد ارائه دهند. این مراحل کار عبارتند از:
- جمع آوری ملزومات
- طراحی نرم افزار
- توسعه نرم افزار
- تست و ادغام
- گسترش
- عملیاتی سازی و نگهداری
حال هر مرحله از کار را با جزئیات بیشتری بررسی می کنیم.
مراحل SDLC
جمع آوری نیازمندی ها
در این مرحله از کار ، تیم مشکلات ، نیازها ، درخواست ها و انتظارات مشتری مربوط به برنامه یا سرویس نرم افزار را شناسایی ، جمع آوری و تعریف می کند.
برخی از فعالیت های مربوط به مرحله جمع آوری نیازها می تواند شامل ایجاد مشخصات نرم افزار ، ایجاد یک طرح دقیق ، اسناد ، پیگیری موضوع و برنامه ریزی پروژه یا محصول ، از جمله اختصاص دادن منابع صحیح باشد.
تعریف نرم افزار یا ملزومات محصول ، به تیم ها آینده نگری و زمینه لازم برای ارائه و تولید راه حل های نرم افزاری خود را می دهد.
طراحی نرم افزار
در این مرحله از طراحی ، تیم تصمیمات مربوط به طراحی نرم افزار را در مورد معماری و راه حل نرم افزار اتخاذ می کند.
این می تواند شامل ایجاد اسناد طراحی ، دستورالعمل های کدگذاری و بحث در مورد ابزارها ، روش ها ، زمان اجرا یا چارچوب هایی باشد که به تیم کمک می کند مشخصات مورد نیاز نرم افزار و اهداف تعریف شده در مرحله جمع آوری ملزومات را برآورده کند.
توسعه نرم افزار
در این مرحله از کار ، تیم ها بر اساس تصمیمات طراحی شده ، راه حل های نرم افزاری را می سازند. در اینجا ، تیم ها با پیاده سازی راه حل اهداف و نتایج تعیین شده در مرحله جمع آوری نیازهای نرم افزاری را برآورده می کنند.
روند توسعه ممکن است شامل تیم هایی از افراد ، تکنولوژی جدید و چالش های غیرمنتظره باشد. با این حال ، تیم های توسعه دهنده معمولاً با رهبران تکنولوژی و مدیران محصول یا پروژه برای رفع انسداد فرآیند ، تصمیم گیری یا ارائه پشتیبانی کار می کنند. هنگامی که تیم ها کد خود را بسته بندی و ساختند ، این مرحله از کار به پایان می رسد.
تست و یکپارچه سازی
در این مرحله از کار ، برای اطمینان از کیفیت ، یک نرم افزار بسته بندی و آزمایش می شود. آزمایش یا تضمین کیفیت ، راه حل و عملکرد اجرا شده استاندارد را برای کیفیت را تضمین و تصویب می کنند. این می تواند شامل آزمایش واحد ، انجام آزمایشات یکپارچه سازی ، تأیید / اعتبار سنجی و گزارش یا شناسایی اشکالات یا نقص ها در حل مشکل نرم افزار باشد.
استقرار:
در این مرحله از کار ، نرم افزار در یک محیط تولید مستقر می شود. کار جمع آوری ، طراحی ، توسعه و آزمایش می شود و با مصرف کنندگان و کاربران سرویس نرم افزار به اشتراک گذاشته می شود. این فرایند شامل تأمین زیرساخت در یک ارائه دهنده ابری یا cloud و تعریف استراتژی استقرار نرم افزار برای ارائه تغییرات به مشتری است.
عملیاتی سازی و نگهداری
در این مرحله از کار ، نرم افزار عملیاتی می شود تا اطمینان حاصل شود که هیچ مسئله یا رویدادی مربوط به استقرار وجود ندارد. این مرحله از کار می تواند شامل بررسی ، درک و نظارت بر تنظیمات شبکه ، پیکربندی های زیرساخت و عملکرد سرویس های برنامه در تولید باشد. این فرایند می تواند شامل حل و فصل یا مدیریت رویداد در روند هر گونه مسئله یا تغییر ایجاد شده برای تأثیر بر مشتری یا پایگاه کاربر باشد.
چرا SDLC برای تحویل نرم افزار اهمیت دارد؟
اکنون که درباره کار مرتبط با هر قسمت از SDLC اطلاعات بیشتری کسب کردیم ، می توانیم در مورد چرایی اهمیت آن و نحوه کاربرد آن در نحوه ارائه نرم افزار امروز بحث کنیم. برای بسیاری از سازمان ها ، ارائه سریعتر نرم افزار بهتر یک چالش است. شناخت SDLC به تیم ها این امکان را می دهد تا درک کنند چه چیزی برای ارائه ویژگی ها یا تغییرات کد به مشتریان لازم است.
واقعیت برای بسیاری از توسعه دهندگان این است که باید ماه ها یا سالها منتظر بمانند تا تغییرات کد را به کاربران، همراه با ارتباط و همکاری در طول فرآیند منتقل کنند . سازمان ها و تیم هایی که توانایی استقرار در صورت تقاضا و به صورت سلف سرویس را دارند تیم های خود را قادر می سازند تا بهترین کار خود را انجام دهند.
گزارش تحویل مداوم 2020 Insights ما نشان داد که تیم های مهندسی به طور متوسط سالانه 109،000 دلار برای استقرار و تحویل برنامه های نرم افزاری خود هزینه می کنند. تلاش های استقرار تولید به طور متوسط به 25 ساعت تلاش مهندسی منجر می شود.
SDLC چشم انداز مراحل کار مشخصی را که برای تولید نرم افزار لازم است ، ارائه می دهد. درک این کار به تیم ها اجازه می دهد تا با ایجاد تعادل در اوایل چرخه ، از مشکلات جابه جایی جلوگیری کنند.
همین طور نیز در مورد ادغام بازخورد و بینش در طی فرایند توسعه نرم افزار برای ارائه مداوم ارزش به صورت تکرارپذیر ، سریع و پایدار می باشد.
نمونه هایی از مدل چرخه زندگی توسعه نرم افزار
دانشمندان رایانه ، دست اندركاران توسعه نرم افزار و رهبران همیشه سعی در ارائه سریعتر نرم افزار بهتر داشته اند. با گذشت زمان ، چندین مدل (waterfall, spiral, Agile) برای توصیف و بازنمایی فرآیندهای SDLC و مدیریت سطح پیچیدگی توسعه با تغییر تقاضا ، ابزارها ، فرایندها و ذهنیت ها ظهور کردند.
مدل Waterfall
شاید یکی از اولین مدلهای مورد استفاده برای نشان دادن فرآیند تحویل نرم افزار، مدل (waterfall ) باشد که در سال 1956 تولید شد. در این مدل ، یک زنجیره از مراحل متوالی خطی ، فعالیتهای ارائه نرم افزار را نشان می دهد.
هر مرحله به تحویل و اجرای مرحله قبلی بستگی دارد ، جایی که هر مرحله شامل مجموعه ای از وظایف است. این مدل از صنایع تولیدی و ساختمانی نشات گرفته و برای دانش یا کارهای خلاقانه مبتنی بر پروژه به کار گرفته شده است.
اشکال این مدل وابستگی های آن است. از آنجا که پیشرفت در یک جهت جریان دارد ، پس از تصمیم گیری در مورد طراحی و شروع اجرای آن ، فضای کمی برای سازگاری با محدودیت ها ، الزامات و مشکلات تازه کشف شده وجود داشت.
ارائه کلیه نرم افزارها منجر به افزایش هزینه ها می شود زیرا تغییر در الزامات منجر به طراحی مجدد عمده ، توسعه مجدد و آزمایش مجدد می شود. این اشکال منجر به مدل های اصلاح شده (waterfall) ، مانند Sashimi (مدل "waterfall" با مراحل همپوشانی)و... می شود.
مدل تکراری و افزایشی(Iterative and Incremental)
در پاسخ به مشکلات قابل درک با مدل (waterfall) ، سازمانهایی مانند وزارت دفاع ایالات متحده بیانیه هایی را منتشر کردند ، مانند MIL-STD-498 ، "توسعه تکراری و فزاینده" را تشویق می کنند. این منجر به اصطلاحی شد که هم طراحی تکراری و هم الگوهای توسعه تدریجی را ترکیب کند.
در این مدل ، نرم افزار از طریق چرخه های مکرر بخشهای کوچکتر کار تولید و تحویل داده می شود. این مدل به تیم های نرم افزاری این امکان را می دهد تا از یادگیری ها و بینش هایی که قبلاً در فرآیند توسعه و استفاده از سیستم نرم افزاری ایجاد کرده اند ، استفاده کنند. تیم ها در هر بار تکرار کار ، تغییرات لازم را در طراحی و قابلیت های عملکردی اضافی ایجاد می کنند.
پروژه 1960 NASA NASA Mercury نمونه ای از استفاده اولیه از مدل توسعه تکراری و افزایشی است. موفقیت پروژه بعداً منجر به تصویب بیشتر شد زیرا مهندسان Project Mercury به تیم ها و پروژه های دیگر رفتند.
اگرچه منشأ مدل تکرار شونده از صنعت نرم افزار ناشی می شود ، اکنون بسیاری از سخت افزارها و توسعه نرم افزارهای جاسازی شده از تکنیک های تکراری و افزایشی استفاده می کنند (به عنوان مثال شرکت هایی مانند SpaceX و Rocket Lab).
تکامل مدل های فرایند
به دنبال موفقیت روشهای توسعه نرم افزار تکراری و افزایشی ، سایر روشهای توسعه نرم افزار برای استفاده از اصول مدیریت پروژه و روشهای توسعه بیشتر ظهور کردند.
مدل مارپیچی(The spiral) یک مدل توسعه مبتنی بر ریسک است که تیم های پروژه را تشویق می کند بر اساس خطرات منحصر به فرد پروژه ، با استفاده از یک یا بسیاری از عناصر سایر روش های تحویل ، ارائه دهند. در دهه 1990 ، Agile manifestoمنجر به پذیرش و محبوبیت مدل Agile و متدولوژی های Agile بعدی شد.
امروزه ما چرخه زندگی DevOps را داریم ، که نمایانگر SDLC و اهداف ما برای ارائه مداوم ارزش نرم افزار به عنوان یک تیم متقابل است.
نحوه توسعه یا جابه جایی به شما بستگی دارد. آنچه مهم است این است که بدانید چه چیزی در این روند دخیل است در این پست وبلاگ چرخه عمر نرم افزار و مدل های SDLC که به ما امکان می دهند خدمات نرم افزاری خود را امروز بسازیم و به اشتراک بگذاریم ، مورد بحث قرار گرفت.
با آرزوی موفقیت برای همه کسانی که چرخه پروژه را مدیریت می کنند یا بخشی ازاین چرخه هستند!
توضیحات خود را بنویسید