
توسعه نرم افزار به روش فیبوناچی
۱۴۰۰/۰۹/۰۴
کاربرد سری اعداد فیبوناچی در توسعه نرم افزار
نمودار فیبوناچی به صورت شگفتانگیزی در عالم طبیعت؛ ساختههای بشر که الهام گرفته از طبیعت هستن؛ هنر (مثل موسیقی) و در سدههای اخیر در اقتصاد به عنوان نمودارهای تحلیلی برای بورس و معاملات دیده میشه.
حالا کابرد فیبوناچی در نرمافزار چطور میتونه باشه؟!
توسعه نرم افزار از نگاه راجر اس. پرسمن:
«راجر اس. پرسمن» توسعه نرمافزار رو به یک مارپیج تشبیه میکنه که در مرکز با شعاع و ماژول های کوچیکی شروع میشه و در مسیر توسعه کم کم از نظر شعاع و اندازه بزرگتر میشه. نمودار پرسمن یک نمودار کاملن دایرهای با مراحل توسعه یکسانه و بر اساس این نمودار، نرمافزار به صورت آهسته و پیوسته رشد میکنه و رشد هر فاز با رشد فازهای قبلی یکسانه.
تغییر نمودار پرسمن به نمودار فیبوناچی:
اگر که اون رو تبدیل کنیم به نمودار فیبوناچی اتفاقات جدیدی رخ میده؟
در دنباله فیبوناچی، رشد هر فاز مجموع رشد فازهای قبلی محسوب میشه. یعنی هر فاز نسبت به فازهای قبلیش بسیار رشد بالاتری داره. این شیوه توسعه به صورت تصاعدی، هم نمودار یک توسعه فزاینده ست و هم نمایاننده تکرار موفقیت فازهای قبلی، در فازهای بعدی.
اگر بخوایم یه کم عادلانه نگاه کنیم کلن توسعه و پیشرفت در مورد بشریت هم همینطور بوده؛ یعنی کل موفقیتهایی که در یک مقطعی داشته برابری میکرده با مجموع سالهای قبل از اون.
حالا اگر یک نرمافزار در هر فاز بتونه موفقیت تمام فازهای قبلیش رو از نظر کیفی و کمی تکرار کنه، معنیش اینه که هر چی نرمافزار رو به توسعه و گسترش میره نتایجش درخشانتر، مطلوبتر، سریعتر، دقیقتر و قابل اتکاتر میشه. اگر از نسبتهای طلایی که از نسبتهای سری اعداد فیبوناچی به دست میاد استفاده کنیم، نسبتهایی وجود خواهد داشت که به نرمافزار کمک میکنه به نقطه طلایی برسه.
البته همه اینا در حد ایده و تئوریه و در واقعیت دیده نشده که توسعه نرمافزار رو به صورت نمودار فیبوناچی ببینن. شاید در خیلی موارد هم این ایدهآل باشه اما اگر دیدگاه به این شکل باشه، باعث میشه نرمافزاربه درستی ماژولبندی بشه و مخصوصن برای استارتاپهایی که مبتنی بر اپلیکیشن یا نرم افزارن میتونه رشد و توسعهی خارقالعادهای در توسعه کسب و کار و نرم افزارشون ایجاد کنه.
به طور کلی میتونه اینطوری باشه که تسکهای مورد نیاز یک نرمافزار اول اولویتبندی بشه و برای یک فاز و برای زمانبندی کوتاهتری، انجام اونها در اولویت قرار بگیره. وقتی که انجام اونها در یک بازه زمانی مشخص انجام شد، برای معادل مجموع کارهای فازهای قبلی، زمان بزرگتری در نظر گرفته میشه (تقریبا برابر مجموع زمانی که کارهای قبلی مورد نیاز بود) و تلاش میشه که توی اون زمان مجموعه اون تسکها انجام بشه و به همین شکل تا فازهای بعدی.
همینطور در مورد تسکها؛ در هر بازه میزان تسکهایی که باید انجام بشه نه تدریجن، که به صورت تصاعدی بیشتر میشه؛ یعنی مجموعه فعالیتهایی که تو هر فاز باید انجام بشه برابری میکنه با مجموع فعالیتهای قبلی!
به این ترتیب حجم کار در هر فاز بیشتر از فاز قبلیه و زمان بیشتری هم خواهد داشت و بر همین الگو نیرو توان و انرژی بیشتری رو هم به خودش اختصاص میده اما نتیجهای که حاصل میشه یک نرمافزار بسیار متناسب با رشد سریع در توسعه ست.
این مدل میتونه بدون تعجیل، باعث شتابدهی و چابک شدن توسعه نرمافزار بشه.
همانطور که گفته شد این فقط یک تئوریه و از نظر علمی ریسورسی براش پیدا نکردیم، ایده ما بوده اگر کسی مایله به این چیزی اضافه کنه میتونه با شرکت دایره در تماس باشه.