مراحل توسعه و مهندسی نرم افزار

در این نقطه از فرآیند توسعه ی نرم افزار User Story مشخص است. حالا باید مراحلی را به ترتیب طی کنیم تا اولین چرخه ی توسعه ی نرم افزار آغاز شود. این چرخه مرتبا باید تکرار شود و در هر تکرار برنامه را بهتر کنیم. در این قسمت چرخه را توضیح میدهیم اما در این فصل تنها یک دوره از این چرخه را پیاده میکنیم.

Systems development life cycle

در نمودار های مختلف چرخه ی عمر توسعه ی نرم افزار بین 4 تا 12 مرحله دارد اما بهترین نمایش آن نمایش 6 مرحله ای است. به تصویر پایین توجه کنید:

بیایید مراحل این چرخه را بررسی کنیم و ببینیم که در کدام نقطه قرار داریم:

1- برنامه ریزی

در این مرحله تمام(یا بخشی ) اعضای تیم (مدیریت، مارکتینگ، توسعه دهندگان و فروش و ...) با برگزاری جلسات مختلف و ارائه ی خواسته های خود و اطلاعات مشتریان شروع به برنامه ریزی برای داشتن محصول با ویژگی های مختلفی می کنند. این نیازمندی ها به صورت Task ها(وظایف خرد شده و کوچکتر) و User Story (ممکن است دقیقا اینطوری پیش نرود و خروجی این مرحله به ساختار مدیریتی تیم بستگی دارد) تولید می شوند و در اختیار اعضای تیم قرار میگیرند.

2- تحلیل

حالا دیگر تنها در مورد تیم برنامه نویسی بک اند صحبت میکنیم!

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


این مرحله را خودتان با توجه به قسمت قبلی انجام دهید و یک برنامه ریزی برای پیاده سازی محصول بکنید.


حالا نوبت طراحی سیستم برای برنامه نویسان ارشد و یا مسئولان طراحی است.

3- طراحی

در مرحله ی طراحی ساختار دیتابیس مشخص یا بروزرسانی می شود و سپس EndPoint های برنامه تعیین می شوند و ویژگی های مد نظر آن ها را به لیست Taskها اضافه می کنیم و سپس با برگزاری جلسات مختلف مطمئن می شویم که تیم برنامه نویسی و مدیریت هردو دنبال محصول مشترکی هستند و تصور برنامه نویسان با مدیریت تفاوت ندارد یا در تضاد نیست. مدیر یک پروژه ی نرم افزاری باید بتواند برنامه ی طراحی شده را درک کند. شما هم به عنوان توسعه دهنده باید بتوانید نیازمندی های محصول را بفهمید.

4- پیاده سازی

این مرحله به 2 حالت کلی رخ میدهد:

  1. توسعه ی خطی یا نرمال: در این حالت با توجه به داده های تولید شده،شروع به پیاده سازی برنامه می کنیم و سپس برنامه را عرضه می کنیم.
  2. توسعه مبتنی بر تست(TDD): در این حالت ابتدا با توجه به انتظارات خود از برنامه تست ها را توسعه میدهیم و سپس به سراغ توسعه برنامه می رویم و بعد بررسی میکنیم که آیا تست ها پاس می شوند یا نه و اگر پاس شدند و نیاز به تست جدیدی کشف نشد برنامه را عرضه میکنیم و اگر تست ها مشکلی داشتند آن ها را اصلاح میکنیم و دوباره برنامه را تست میکنیم و اگر برنامه تست های خود را پاس نکرد برنامه را درست میکنیم.

نکته ی خیلی مهم:

مسئله ی دیگر در این مرحله این است که در برنامه نویسی بک اند اولین اصلاحات باید سمت دیتابیس انجام شوند. در فصل 2 دیدید که یک بار دیتابیس را پاک کردیم و دیتابیس قبلی از تغییرات سنگین جان سالم بدر نمی برد! این مسئله برای تمام دیتابیس های SQL باید رعایت شود و این محدودیت دیتابیس به نفع ما توسعه دهنده هاست اما گاهی کار را سخت میکند. همیشه مراقب باشید که migration ها حتی اگر ساده باشند ممکن است به درستی عمل نکنند!


در مورد TDD بعدا و در فصل 14 صحبت می کنیم. فعلا مطمئن باشید که کد های فصل های مختلف تست شده اند و به درستی کار خواهند کرد.

5- پیاده سازی و تست

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

6- نگهداری

این مرحله همزمان با مرحله ی قبل رخ میدهد.

وظیفه ی برنامه نویسان و متخصصین زیرساخت در این مرحله نگهداری محصول و بالانگه داشتن آن و رفع مشکلات برنامه (اگر مشکلی پیش بیاید که در مراحل قبلی جا مانده باشد یا از زیر دستمان در رفته باشد) تا زمان شروع سیکل بعدی است. داده ها و تجربیات بدست آمده توسط برنامه نویسان در این مرحله با داده های مرحله ی قبل جمع می شود و برای استفاده در سیکل بعدی در اختیار اعضای تیم قرار میگیرند.

تمام شد؟

نه! حالا باید با داده ها و تجربیات جدید مراحل گفته شده را از اول طی کنیم!