باگ‌های نرم‌افزارها زیادتر شده‌اند یا کم‌تر؟

تعداد متوسط باگ به ازای هر نرم‌افزار در طول زمان چه طور تغییر کرده؟ کم‌تر شده یا بیش‌تر؟ (یا در همون حد و حدود مونده؟)

8 thoughts on “باگ‌های نرم‌افزارها زیادتر شده‌اند یا کم‌تر؟”

  1. سلام
    باید سوالت رو تصحیح کنی. آیا منظورت باگ ها و آسیب پذیری های کشف شده است؟ (ما درکی و آماری از باگ های کشف نشده یا 0day نداریم)
    فن آوری کامپایلر ها (مترجم کد به زبان ماشین) در طول زمان پیشرفت های خیلی زیادی داشته (هم از نظر امنیتی هم بهینه سازی سرعت و غیره)
    از طرفی، درک و آگاهی برنامه نویسان نسبت به کد نویسی امن (Secure Coding) افزایش پیدا کرده.
    تخصص بنده امنیت نرم افزار هست. نه بر اساس آمار، بلکه بر اساس تجربه شخصیم میگم که آسیب پذیری های موجود در برنامه های مختلف نسبت به دهه گذشته میلادی (و قطعا نسبت به دهه نود میلادی) کاهش داشته ولی شیب کاهش متناسب با پیشرفت امنیت نبوده (علل مختلفی وجود داره که یکیش اینه که ما همچنان داریم core و مدل قبلی که ریشه در تفکر دهه نود داره رو تغییر میدیم و به روز می کنیم)
    برای یه نرم افزار خاص مثل کرنل لینوکس یا مثلا مرورگر اینترنت اکسپلورر میتونی آمار آسیب پذیری های کشف شده (مثلا لیست CVE) رو بررسی و مقایسه کنی، منتها این فقط نوک کوه یخی هست که بیرون زده. در نهایت نمیشه جواب قطعی و دقیق به این سوال داد مگر این که سوال تغییر کنه

  2. به نظرم باگ کلی تر از آسيب پذيری (Vulnerability) هست و لزوماً تفسیر امنیتی نداره.

  3. نظر شما صحیحه و در اون صورت جواب دادن به این سوال کلی، سخت تر هم میشه

  4. مهدی و افشین: هر دو نظر برام جالب بودن، دست هر دو نفرتون درد نکنه. برای من هم خیلی روشن نیست و تازه که کامنت گذاشتین، متوجه شدم که سوال رو ساده دیده‌ام و قضیه پیچیده‌تر از اونی بوده که فکر می‌کردم.

    اما در مورد باگ‌های نرم‌افزاری اپلیکیشن‌ها که کاربر در استفاده‌ی روزانه برخورد می‌کنه یا آسیب‌پذیری‌ها یا خیلی موردهای مشابه، باید تخمینی وجود داشته باشه، نه؟

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

  5. ابتدا این لینک ها رو ببینید
    http://programmers.stackexchange.com/questions/185660/is-the-average-number-of-bugs-per-loc-the-same-for-different-programming-languag
    http://security.stackexchange.com/questions/21137/average-number-of-exploitable-bugs-per-thousand-lines-of-code
    (توضیح: Code Complete یه جورایی انجیل برنامه نویسی محسوب میشه :) همونطور که می بینید یکی از ادعاها، ثابت موندن نسبی میزان باگ هست)
    چون من متخصص امنیت نرم افزار هستم و نه یک برنامه نویس حرفه ای، در مورد باگ و تولید نرم افزار نظر نمیدم (باالطبع لینک های فوق تا حدودی کمکتون می کنن. آنچه که بنده مشاهده و تجربه کردم، پیشرفت روز به روز کامپایلر ها و سیستم عامل ها از جنبه های مختلف بوده، اما مدل برنامه نویسی و پایه اون و نظام آموزشی دانشگاه ها همچنان ریشه در دهه هفتاد و هشتاد میلادی داره و در این زمینه صنعت نرم افزار بسیار جوان هست)
    آسیب پذیری ها قابل ارائه توسط آمار هستن اما باید توجه داشت که ما داریم در مورد آسیب پذیری های کشف و ثبت شده در مراجعی مثل MITRE بحث می کنیم و نه آسیب پذیری های بالقوه که یا هنوز کشف نشدن و یا توسط برخی کشف شدن اما پابلیک نیستن.
    من فکر می کنم بهتره یه خورده در این زمینه مطالعه و جستجو بکنید تا با ترمینولوژی و همینطور آمار مراجع آشنا بشید بعدش میتونیم به صورت خاص در مورد یک سوال جزئی بحث کنیم

  6. مهدی: این کامنت شما خیلی خیلی برام جالب بود. دست‌تون درد نکنه، واقعن جالب بود. به لینک‌ها نگاه کردم، هرچند با دقت خوبی نخوندم. در اولین فرصت با دقت بیش‌تری می‌خونم. باز هم تشکر از کامنت به این خوبی که لطف کردین و گذاشتین.

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

Leave a Reply

Your email address will not be published.