چیزی به نام برنامه عاری از باگ وجود ندارد
1397/12/26 14:47 , میلاد صاحب نظر

چیزی به نام برنامه عاری از باگ وجود ندارد

یک شاتل فضایی ۱۲۰ تنی آماده پرتاب است. هیچ انسانی در مرکز کنترل نیست تا کلید پرتاب را فشار دهد و شاتل به فضا پرتاب شود. بلکه یک نرم‌افزار به ۴ ماشین هوشمند یکسان در شاتل فضایی دستور می‌دهد و این نرم‌افزار، اطلاعات را از هزاران حسگر دریافت می‌کند و در هر میلی‌ثانیه، صدها تصمیم اتخاذ می‌کند.

شرکت سازنده ادعا کرده است که این نرم‌افزار عاری از باگ است، کرش نمی‌شود و نیاز به ریبوت شدن ندارد. این شرکت حتی به خودش جرات داده و اعلام کرده که برنامه کاملا سالم و بدون نقص است – تقریبا همانند انسان، تکامل یافته است. در سه ورژن آخر برنامه که ۴۲۰۰۰۰ خط کد داشت، در هر خط کد فقط یک ارور وجود داشت.

اگر نرم‌افزار باگ داشته باشد، آدم‌ها می‌میرند. این نرم‌افزار توسط یک گروه ۲۶۰ نفره از مردان و زنانی نوشته شد که روز و شب کار کردند (و هنوز هم می‌کنند) تا اطمینان حاصل کنند که نرم‌افزار به بهترین شکل به وظیفه‌اش عمل کرده و مطمئن شوند که کسی به خاطر باگ نرم‌افزار نمی‌میرد.

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

در توسعه چنین برنامه‌هایی از هیچ‌گونه منابعی دریغ نمی‌شود.

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

بلکه وابستگی برنامه به پلتفرمی که خارج از کنترل برنامه است و وجود کتابخانه‌ها باعث می‌شوند اوضاع بیش از پیش پیچیده شود.

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

حالا که صحبت از شخص سوم شد، باید بدانید که حتی کوچک‌ترین پیچیدگی‌ها در یک برنامه، باعث می‌شود برنامه شما به واسط کاربری برنامه یک شخص سوم گره بخورد – که دوباره، این نیز یک عامل خارجی است که کنترلی روی آن ندارید.

گای کاوازاکی در آخرین کتابش به نام "هنر آغاز ۲.۰" می‌نویسد: وقتی به سطح خوب و قابل‌قبولی رسیدید، پس همان‌قدر کافی است. بعدا وقت برای بهبود و تقویت هست. مهم نیست شروع شما چقدر عالی باشد – مهم این است که چقدر عالی به پایان می‌رسانید. این یک طرز تفکر عالی برای هر نوع کسب و کاری است.

به خصوص برنامه‌نویسی. از هر برنامه‌نویس موفقی که سوال کنید، به شما خواهند گفت که در ابتدا، برنامه آن‌ها چقدر باگ و ارور داشت.

اگر بخواهید در همان روزهای اولیه تولید و انتشار برنامه به تک‌تک USE CASEها توجه کنید هم خیلی خسته می‌شوید و هم این کار ممکن است ذهن شما را از موضوعات مهم دیگر منحرف کند – موضوعاتی مثل اعتبار و مقبولیت محصول.

بهترین کاری که می‌توانید انجام دهید این است که USE CASEهایی که از اول تصور کرده بودید را پیاده‌سازی کنید و اطمینان حاصل کنید که آن‌ها عاری از باگ باشند.

اپلیکیشن عاری از باگ

اپلیکیشن عاری از باگ

گزارش شدن باگ‌ها و اشکالات برنامه امری طبیعی است. بنابراین، برای برنامه یا اپلیکیشنی که می‌نویسید بهتر است این روش را پیش بگیرید:

  1. نباید هدفتان نوشتن یک برنامه عاری از باگ باشد. در عوض، یک برنامه کامل و عملی ارائه دهید تا کاربران بتوانند اشکالات آن را به شما گزارش دهند و شما بتوانید آن‌ها را برطرف کنید.

  2. بسیاری از باگ‌ها به این دلیل بروز می‌کنند که بین آنچه نرم‌افزار قادر به انجام است و آنچه کاربر نهایی انتظار دارد، سوء تفاهم پیش می‌آید. می‌توانید این مشکل را به راحتی قبل از اینکه حتی یک خط کد بنویسید برطرف کنید، فقط کافی است یک سند دقیق از مشخصات و کارایی(FS) برنامه خود فراهم کنید.
    در پروژه‌های بزرگی مانند نرم‌افزار شاتل، گزارش‌ها حاکی از آن است که یک سوم فرآیند برنامه‌نویسی، پیش از اینکه کسی حتی یک خط کد بنویسد آغاز می‌شود.
  1. اکثر برنامه‌نویسان عملیات تست واحد (unit testing) را انجام نمی‌دهند و حتی اصلا نمی‌دانند چگونه باید این کار را انجام دهند. این بدان معنا است که شما به عنوان یک برنامه‌نویس، باید علم خود را در مورد تست محصول نیز افزایش دهید.

  2. همه هزینه‌ها را در نظر بگیرید و سپس تصمیم بگیرید که چه چیزی بیشترین اهمیت را دارد – یک نرم‌افزار گران‌ قیمت که در ۹۹ درصد اوقات بدون مشکل عمل کند یا یک نرم‌افزار گران که در ۱۰۰ درصد مواقع بدون مشکل عمل کند؟
    همچنین باید تصمیم بگیرید که قصد دارید خیلی سریع برنامه را منتشر کنید یا فرصت زیادی دارید؟

منبع: entrepreneur

 مطالب مرتبط

 مقدمه ای بر زبان برنامه نویسی #C و پلتفرم NET Framework.
7 دلیل منطقی برای آموختن #C
 طبقه بندی زبان های برنامه نویسی
به دست آوردن Exceptionها در #C و یافتن همه خطاها
 LINQ(زبان جستجوی یکپارچه)
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات