افشار محبی
افشار محبی
خواندن ۲ دقیقه·۵ سال پیش

معادله طراحی نرم افزار

در حال خواندن کتاب Code Simplicity هستم. بخشی از کتاب راجع به معادله طراحی نرم افزار است که به این شکل تعریف می شود که مطلوبیت نرم افزار برابر است با نسبت ارزشی که نرم افزار ایجاد می کند به هزینه ای که برای تولید آن صرف می شود. فرمول با اضافه کردن ارزش آتی نرم افزار و هزینه نگهداری گسترش پیدا می کند و تبدیل می شود به نسبت ارزشی که نرم افزار در آینده ایجاد می کند به هزینه ای که برای نگهداری آن صرف می شود. و نهایتاً پس از شرح و بسط موضوع، این قاعده نتیجه گیری می شود که:

کاهش هزینه های نگهداری نرم افزار از کاهش هزینه های توسعه اولیه نرم افزار مهم تر است.

حین خواندن جزییات فرمول و نتیجه گیری ذکر شده به این فکر می کردم که خوب است ما هم در طراحی نرم افزار و بودجه بندی پروژه کمی از این تحلیل ها استفاده کرده و مقداری از این اعداد کمک بگیریم. به این امید که به ادبیات مشترکی در تیم پروژه و اعضای شرکت برسیم. و البته که بتوانیم پرزنت بهتری در برابر مشتری داشته باشیم.

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

  • به روز رسانی با تکنولوژی روز: مثلاً اگر نرم افزاری در سال 1380 با ASP Classic نوشته شده، باید در سال 1382 به ASP.NET Web Form، در سال 1384 به ASP.NET MVC، در سال 1388 به SPA و در سال 1395 به ASP.NET Core ارتقا پیدا کند. در اینجا کد بیس و لاجیک برنامه تغییری پیدا نمی کند و فقط به خاطر همگامی با تکنولوژی است که تغییرات انجام می شود. در غیر این صورت روزی خواهد رسید که دیگر هیچ Host پیدا نخواهد شد که پروژه ASP Classic شما را هاست کند.
  • تغییر در قوانین. مثل قضیه OWASP و بعدها AFTA که به عنوان قوانین کشور اجباری اعلام شدند و حتی پروتکل ECE که یک زمانی برای نرم افزارهای اتوماسیون اجباری شدند.
  • تغییر در بیزنس و نیازمندی های مشتری چه تغییرات عمده و چه تغییرات جزیی. برخی از این تغییرات عبارت هستند از برداشته شدن قریب الوقوع 4 صفر از پول ملی، ارسال SMS اطلاع رسانی، لاگین دو فاکتوری و تغییر در قوانین مالیاتی.
  • باگ هایی که همیشه کشف می شوند و نیاز به اصلاح دارند.
  • به روز رسانی های امنیتی

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

دقت در مجموع  هزینه اولیه و هزینه نگهداری که در طول دوره عمر نرم افزار اتفاق می افتد کمک می کند که بفهمیم اصلاً آیا استارت این پروژه با توجه به عایدی اولیه و عایدی طول عمر نرم افزار کار عاقلانه ای است یا نه.


اصل این نوشته در اینجا منتشر شده است.

Code Simplicityطراحی نرم افزارکتابمعادلهنرم افزار
مهندس نرم افزار، توسعه دهنده، برنامه نویس
شاید از این پست‌ها خوشتان بیاید