برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

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

- تعداد برنامه نویسان دائماً افزایش می یابد - زیرا مقدار کد در حال افزایش است و برنامه نویسان بیشتری به طور مداوم از آن پشتیبانی می کنند.
— اما کد در حال قدیمی شدن است، برخی از آن دیگر پشتیبانی نمی شوند. حتی ممکن است نوعی تعادل وجود داشته باشد.

چند روز بعد با یادآوری آنها، به این فکر کردم که آیا حفظ کد، که به منابع بیشتر و بیشتر در طول زمان نیاز دارد، در نهایت می تواند توسعه عملکرد جدید را فلج کند یا نیاز به افزایش نامحدود در تعداد برنامه نویسان دارد؟ تجزیه و تحلیل ریاضی و معادلات دیفرانسیل به ارزیابی کیفی وابستگی میزان پشتیبانی به توسعه و یافتن پاسخ سوالات کمک کرد.

سوال یک. آیا می‌توان از همه منابع توسعه «خوردن» حمایت کرد؟

تیمی از برنامه نویسان را در نظر بگیرید که تعداد شرکت کنندگان در آن ثابت است. سهم زمان کارشان برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ (برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟) صرف توسعه کد جدید و زمان باقی مانده می شود برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ برای حمایت می رود در مفروضات مدل، فرض می‌کنیم که نوع اول فعالیت با هدف افزایش حجم کد است و دومی با هدف تغییر آن (اصلاح خطاها) است و تأثیر قابل‌توجهی بر حجم کد ندارد.

بیایید نشان دهیم برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ کل مقدار کد نوشته شده تا آن نقطه در زمان برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟. با فرض اینکه سرعت نوشتن کد متناسب باشد برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟، ما گرفتیم:

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

طبیعی است که فرض کنیم هزینه های نیروی کار برای حفظ کد متناسب با حجم آن است:

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

یا

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

از چه رو

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

ما یک معادله دیفرانسیل به دست می آوریم که به راحتی قابل ادغام است. اگر در لحظه اولیه مقدار کد صفر باشد، پس

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

در برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ عملکرد برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟و برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟. و این به معنای کاهش تدریجی در طول زمان در توسعه عملکرد جدید به صفر و انتقال تمام منابع به پشتیبانی است.

با این حال، اگر در طول زمان برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ کد منسوخ می شود و دیگر پشتیبانی نمی شود، سپس مقدار کدی که نیاز به پشتیبانی دارد در هر زمان برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ در حال حاضر برابر است برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ سپس

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

а برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ یک راه حل برای یک معادله دیفرانسیل با آرگومان عقب افتاده [1] است:

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

راه حل چنین معادله ای به طور منحصر به فرد با تعیین مقادیر تعیین می شود برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ "پیش از آغاز زمان" برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟. از آنجایی که کد هنوز قبل از لحظه اولیه در زمان نوشته نشده بود، در مورد ما برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ در برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟.

بیایید به چند نمونه نگاه کنیم. ما زمان را بر حسب سال و مقدار کد را در هزاران خط اندازه گیری می کنیم. سپس برای برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ مقادیر مرتبه ده ها قابل قبول است، 50 و 100 می گیریم. یعنی در یک سال تیم توسعه به ترتیب پنجاه و صد هزار خط کد می نویسد. برای برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ مقادیر قابل قبول ممکن است: برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟, برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟, برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟. این بدان معناست که یک تیم توسعه می‌تواند از مقدار کدی که در یک سال می‌نویسد پشتیبانی کند، خواه یک چهارم، نیم یا تمام وقت. به عنوان میانگین طول عمر کد، مقادیر زیر را تعیین می کنیم: 1، 2 و 4 سال. با حل عددی معادله، نمونه هایی از رفتار تابع را به دست می آوریم برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ برای برخی از ترکیبات پارامترها برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟.
برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟
رفتار عملکرد برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ با پیر شدن کد، تغییر کرده است. این تابع دیگر یکنواخت نیست، اما نوسانات با گذشت زمان "آرام می شوند" و تمایل به برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ به مقداری ثابت نمودارها نشان می دهد: بیشتر برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟, برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ и برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟یعنی هر چه کد کندتر پیر می شود، کد جدید سریعتر توسعه می یابد و کیفیت کد پایین تر است، منابع کمتری برای توسعه عملکرد جدید باقی می ماند. این تمایل وجود داشت که حداقل یک مثال در آن ارائه شود برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ نزدیک به صفر "فوت کرده". اما این امر مستلزم انتخاب شاخص‌های کیفیت توسعه بسیار ضعیف و کدهایی بود که برای مدت طولانی پیر نمی‌شوند. حتی در نمودار پایین سمت چپ، مقدار قابل توجهی از منابع برای عملکرد جدید باقی مانده است. بنابراین، پاسخ صحیح به سؤال اول بیشتر این است: از نظر نظری - بله، ممکن است; عملا - به سختی.

سوالاتی که نمی توان پاسخ داد:

  1. آیا این درست است برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ به حدی در میل دارد برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ برای همه برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟? اگر نه برای همه، پس برای کدام یک؟
  2. اگر محدودیتی وجود داشته باشد، مقدار آن به چگونه بستگی دارد برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟?

سوال دو آیا نگهداری کد می تواند باعث رشد نامحدود تعداد برنامه نویسان شود؟

بیایید نشان دهیم برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ تعداد برنامه نویسان درگیر در توسعه کد جدید. مانند بالا، برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ - مقدار کد نوشته شده تا یک نقطه در زمان برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟. سپس

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

پشتیبانی کد را مشغول نگه دارید برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟ برنامه نویسان با در نظر گرفتن کد پیری،

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

از چه رو

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

اگر برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟، و سپس

برای حفظ کدهای نوشته شده قبلی به چند برنامه نویس نیاز است؟

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

نتیجه

مدل‌های در نظر گرفته شده، مدل‌های ریاضی «نرم» هستند [2]. آنها بسیار ساده هستند. با این وجود، وابستگی نتایج شبیه‌سازی به مقادیر پارامتر با آنچه برای سیستم‌های واقعی انتظار می‌رود مطابقت دارد، این به نفع کفایت مدل‌ها و دقت کافی برای به دست آوردن تخمین‌های با کیفیت بالا است.

منابع

1. Elsgolts L.E., Norkin S.B. مقدمه ای بر نظریه معادلات دیفرانسیل با استدلال انحرافی. مسکو. انتشارات "علم". 1971.
2. آرنولد وی. مدل‌های ریاضی «سخت» و «نرم». مسکو. انتشارات MCNMO. 2004.

منبع: www.habr.com

اضافه کردن نظر