در این نوشته، من به اصول اولیه چرخه حیات توسعه نرم افزار به انگلیسی Software Development Lifecycle یا به اختصار SDLC پرداختم و گفتم که چرا درک SDLC بسیار مهمه، و بعد از اون جوانب و فواید پنج تا از بهترین فرآیندهای توسعه نرم افزار رو معرفی کردم.
چرخه حیات توسعه نرم افزار SDLC چیست و چرا مهمه؟
چه با برنامه ریزی قبلی و چه بدون اون، هر نرم افزار یک رویه مشابه رو از ایده تا پیاده سازی و راه اندازی طی میکنه. به مجموعه مراحل این مسیر، چرخه توسعه نرم افزار یا چرخه حیات توسعه نرم افزار یا به اختصار SDLC گفته میشه. SDLC دنباله مراحلی هست که در هنگام تهیه یک قطعه نرم افزار انجام میشن.
هر مرحله از این چرخه حیات، یک خروجی ایجاد میکنه که یکی از این موارده:
- یک سری ایده و Idea
- یک سری سند و Document
- یک سری نمودار و Diagram
- یک قطعه نرم افزار و Software
که در ادامه به عنوان ورودی مرحله بعد استفاده میشه. و این مراحل تکرار میشن تا وقتی که به هدف تون برسید.
به عبارت بهتر:
نقل قولنرم افزار هرگز به پایان نمیرسه.
یعنی حتی انتشار نسخه اول نرم افزار رو هم میشه فقط یک مرحله دیگه در چرخه حیات توسعه نرم افزار محسوب کرد. در باب اهمیت و لزوم داشتن یک فرآیند توسعه نرم افزار روشن و آگاهی از مراحل توسعه هرچی بگم کم گفتم.
حتی اگه بتونید یک نرم افزار رو بدون داشتن فرآیند توسعه نرم افزار ایجاد کنید، به این معنی نیست که باید این کار رو بکنید. با الهام از سالها آزمایش ، تکرار و توسعه ، فرایند توسعه نرم افزار مدرن کمک کردن تا بتونیم نرم افزارها و ابزارهای جدید رو ارزان تر، کارآمدتر و با استرس کمتر بسازیم.
فواید استفاده از چرخه حیات توسعه نرم افزار
مهم نیست دارید با سیستم مدیریت محتوای وردپرس یک سایت مینویسید یا یک نرم افزار گسترده تحت وب. در هر صورت به SDLC نیاز دارید.
استفاده از SDLC به شیوه اصولی دارای چندین مزیت و فایده است:
- برای مراحل مختلف در طول مسیر توسعه واژگان مشترک و قابل فهم ایجاد میکنه
- کانال های ارتباطی و انتظارات مشخص بین توسعه دهندگان و ذینفعان پروژه رو تعریف میکنه
- نقش ها و مسئولیت های واضحی رو برای کل تیم تعیین میکنه (توسعه دهندگان ، طراحان ، مدیران پروژه و غیره …)
- تعریف مشخصی از وضعیت انجام شده که مورد توافق همه باشه ارائه میده تا دامنه و اسکوپ به انگلیسی Scopr پروژه تغییر نکنه
- نحوه رسیدگی به اشکالات ، باگ ها، درخواست قابلیتهای جدید و به روزرسانی ها رو تدوین میکنه
از این گذشته، نداشتن یک برنامه برای توسعه نرم افزار به معنای بازه های زمانی طولانی تر ، کیفیت پایین یا حتی خرابی های آشکاره. حتی بدتر، توسعه دهنده های شما نمیدونن دقیقا چی رو باید بسازن. مدیران پروژه هم هیچ سرنخی و اطلاعاتی از پیشرفت پروژه ندارن. مدیر پروژه بدون SDLC نمیتونه به شما بگه که آیا از بودجه پروژه عقب یا جلو هستین و اینکه اصلا قرار هست این پروژه تموم بشه یا نه.
فرایند توسعه نرم افزار در حکم نقشه راه
من میدونم که خودم کدوم گزینه رو انتخاب میکنم. بنابراین بیایید با درک اجزای سازنده اصلی SDLC شروع کنیم و بعد از اون با انتخاب فرایند توسعه نرم افزار مناسب برای تیم خودمون، نحوه بهینه سازی این اجزا رو بررسی کنیم.
هفت مرحله چرخه حیات توسعه نرم افزار SDLC
اگر مدیر پروژه باشید، احتمالاً با مراحل مختلف SDLC آشنا هستید. شما باید در مورد همه چیز از الزامات و خواسته های نرم افزار و نیازمندی های نرم افزاری گرفته تا ارتباطات با ذینفعان ، توسعه نرم افزار و نگهداری مداوم فکر کنید.
این مراحل تقریباً در هر فرآیند توسعه نرم افزاری که استفاده کنید همینجوری هستن. با این حال، همونطور که در ادامه خواهم گفت، ترتیب و دنباله ای که در اونها اتفاق میفته بسته به نیاز، اهداف و اندازه پروژه و تیم شما تغییر میکنه. به عنوان مثال، بعضی از مراحل ممکنه با هم ترکیب یا تکرار بشن یا اینکه به صورت موازی با هم اجرا بشن.
برنامه ریزی و تحلیل
وقتی که یک مشتری یا ذینفع درخواست پروژه میکنه، اولین مرحله از SDLC یعنی برنامه ریزی به انگلیسی Planning باید اتفاق بیفته. در برنامه ریزی باید موارد زیر رو بررسی کنید:
- جایگاه: این پروژه به ماموریت و اهداف بزرگتر شرکت یا سازمان مشتری چه ارتباط و اتصالی داره؟
- دسترسی و تخصیص منابع: آیا نیروی انسانی و ابزارهای لازم برای این کار رو در اختیار دارید؟
- برنامه ریزی زمانی پروژه: این پروژه کجای اهداف شرکت و سایر وظایف شما قرار میگیره؟ آیا زمان کافی برای انجامش دارین؟
- برآورد هزینه: هزینه واقعا بینانه انجام این پروژه چقدر میشه؟
مرحله برنامه ریزی پروژه نرم افزاری تضمین میکنه که دارید درست گام بر میدارید و به بیراهه نمیرید. بنابراین سعی کنید مطمئن بشید که تمام بخشهایی که قراره تحت تأثیر این پروژه قرار بگیرن شامل مدیران پروژه ، توسعه دهندگان ، عملیات ، امنیت و ذینفعان رو مد نظر قرار دادید.
در پایان مرحله برنامه ریزی ، باید اطلاعات کافی برای تدوین اسکوپ کاری پروژه یا دامنه کاری به انگلیسی Scope of Work سطح بالا داشته باشید.
برنامه ای که به ما میگه:
- چی قراره ساخته بشه
- چرا قراره ساخته بشه
- چطوری قراره ساخته بشه
نیازمندی ها یا Requirements
قدم بعدی درک نیازمندی های فنی پروژه است. هر قطعه نرم افزار خواه یک برنامه موبایل باشه، طراحی مجدد وب سایت باشه و یا افزودن یک ویژگی جدید به برنامه فعلی، قراره یک مشکل از مشکلات مشتری رو حل کنه.
همینطور که از مرحله برنامه ریزی عبور میکنید و دارید SOW رو ایجاد میکنید، درباره مشخصات پروژه این سؤالها رو بپرسید:
- این نرم افزار چه مشکلی رو قراره حل کنه؟
- چه کسی میخواد ازش استفاده کنه و چرا؟
- چه نوع یا انواع ورودی / خروجی داده لازمه؟
- آیا نیاز به ادغام و اتصال به ابزارهای دیگه یا API های مختلف وجود داره؟
- چطوری قراره امنیت / حریم خصوصی افراد کنترل بشه؟
وقتی که تیم در راستای اهداف SDLC توسعه پاسخ این سؤالات رو میگیرن، میتونن خواسته های فنی نرم افزار یا نیازمندی های فنی به انگلیسی Technical Requirements رو استخراج کنن، شرایط آزمایش رو مشخص کنن و درباره پشته فناوری به انگلیسی Technology Stack تصمیم بگیرن.
اگر از یک فرایند توسعه نرم افزار چابک به انگلیسی Agile software Development Process استفاده میکنید این مرحله جای مناسبیه تا اسپرینت به انگلیسی Sprint هاتون رو برنامه ریزی کنید یا کارهای بزرگ رو بشکنید و مراحل عملاتی تری رو از اونها استخراج کنید.
طراحی و نمونه سازی یا Design and Prototyping
با داشتن نیازمندی ها و خواسته های نرم افزار ، زمانش رسیده که شروع به طراحی ظاهر نرم افزار و طراحی عملکرد نرم افزار کنیم. منظور از طراحی ظاهر نرم افزار مباحث زیبایی شناسی نیست بلکه عملکرد و جریان داده و کنترل نرم افزار مد نظره. وقتی میگم ظاهر یعنی اینکه چه دکمه هایی باید توی فرم وجود داشته باشه. کاربر چه المان هایی باید ببینه؟ این المان ها چه کارهایی باید انجام بدن؟ …
بسته به فرایند توسعه نرم افزار که دنبال میکنید، این مرحله از SDLC ممکنه به معنای ایجاد سیم بندی یا وایرفریم به انگلیسی Wireframe ساده باشه تا نشون بده که تعامل در نرم افزار چطوریه. یا ممکنه به معنای ساخت نمونه اولیه یا پروتوتایپ به انگلیسی Prototype با استفاده از ابزارهایی مثل Marvel یا InVision برای نمایش به کاربران و دریافت نظرات شون باشه.
از طرف دیگه ممکنه فکر کنید که به بازخورد کاربر بیشتری احتیاج دارید و یک اسپرینت کامل رو به طراحی تخصیص بدید تا بتونید به سرعت یک ویژگی یا ایده رو به کاربران نهایی نرم افزار نشون بدید.
اگه در فرایند توسعه نرم افزار تصمیم گرفتید که این مرحله رو جدی نگریدی باید بهتون گوشزد کنم که این مرحله به تیم شما و مشتری کمک زیادی خواهد کرد که ایده ها رو تأیید کنن و بازخوردهای ارزشمندی، قبل از شروع کار کدنویسی رد و بدل کنن.
کدنویسی و Programming در چرخه حیات توسعه نرم افزار
حالا که ویژگی ها و قابلیت های پیشنهادی نرم افزار آماده شدن، همه وقتش رسیده که کد منبع نرم افزار رو مطابق با خواسته ها و SOW بنویسید.
این مرحله بدیهی است که سخت ترین و شاید خطرناک ترین مرحله SDLC باشه. هریک از انواع مختلف فرایند توسعه نرم افزار که در ادامه خواهم گفت، یه جور متفاوتی باهاش برخورد میکنن.
چه از الگوی فرایند توسعه نرم افزار آبشاری و چه از الگوی فرایند توسعه نرم افزار چابک استفاده کنیم، هدف این مرحله از SDLC باید چسبیدن به SOW و جلوگیری از بزرگ شدن دامنه و اسکوپ پروزه و ایجاد یک نرم افزار تمیز و کارآمد باشه.
آزمون نرم افزار و Testing در SDLC
همینطور که تیم توسعه داره کد میزنه، به طور همزمان آزمون نرم افزار هم باید به منظور ردیابی و رفع اشکالات انجام بشه. بعد از تکمیل ویژگی ها و آماده شدن محصول هم باید یک دور دیگه آزمایش های عمیق تری انجام بدید. این میتونه از طریق انتشار محدود محصول نرم افزاری برای گروه کوچکی از آزمایش کنندگان بتا یا استفاده از ابزارهای UX برای ردیابی نحوه تعامل کاربران با نرم افزار باشه.
در حالی که آزمایش میتونه مرحله طولانی دیگهای از SDLC باشه، مهمه که مطمئن بشید که یک نرم افزار پر از باگ رو به مشتریان نهایی ارائه نمیکنید. اشکالات و باگ های متعدد میتونن شهرت و اعتبار شما رو از بین ببرن و باعث بشن که درآمدتون رو از دست بدید. از همه بدتر، ساعت ها زمان و انرژی توسعه دهنده رو که میتونست صرف ایجاد ویژگی های جدید بشه رو از بین میبرن چون باید بشینه و باگ ها رو کشف و رفع کنه.
استقرار یا Deployment در چرخه حیات توسعه نرم افزار
با اتمام مرحله سنگین کدنویسی و آزمون نرم افزار حالا وقتش رسیده که نرم افزار رو برای همه کاربران مستقر کنید. در این مرحله کد منبع نرم افزار از فاز توسعه Development Phase و فاز آزمون Testing Phase خارج میشه و به مصرف کاربر Production Phase میرسه.
در اکثر تیم ها و شرکت ها، این مرحله با استفاده از یک مدل استقرار مداوم به انگلیسی Continuous Deployment یا ابزار اتوماسیون انتشار برنامه به انگلیسی Application Release Automation به اختصار ARA انجام میشه.
نگهداری یا Maintenance و به روز رسانی در SDLC
چرخه حیات نرم افزار SDLC بعد از انتشار نرم افزار تمام نمیشه. از اسمش هم پیداست که بهش میگیم چرخه حیات. پایان هر مرحله آغاز مرحله بعدیه.
نیازها و نیازمندیهای مشتری همیشه در حال تحول و تغییره. کاربران شروع به استفاده از نرم افزار میکنن و بی شک بعد از یه مدت یه سری اشکال و باگ پیدا میکنن و یا درخواست های جدید خواهند داشت.
همه این درخواست ها باید در لیست کار شما به بخش پشتیبانی محصول ارسال بشن و در اولویت مشخصی قرار بگیرن و به بخشی از نقشه راه محصول به انگلیسی Product Roadmap شما تبدیل بشن.