مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

چرا برنامه ها باگ دارند؟ 5 دلیل و 7 نکته در Bug نرم افزارها

دلایل وجود باگ در نرم افزارها چیست؟ چرا برنامه ها باگ دارند ؟ در این مطلب قصد دارم به عواملی که باعث می شوند در برنامه های نوشته شده خطا به وجود بیاید بپردازم.خطای برنامه نویسی (bug) به مشکلات و رخنه های موجود در یک برنامه که باعث می شود برنامه نتایج ناخوشایند و نادرست بدهد گفته می شود. به عبارت دیگر مشکلی که باعث جلوگیری از کارکرد اصلی برنامه می شود خطا گفته می شود.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. چرا یک نرم افزار خطا دارد؟
وب سایت توسینسو

چرا یک نرم افزار خطا دارد؟

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

  1. تعامل نادرست یا عدم تعامل: هر برنامه نرم افزاری موفق به تعامل بین تیم توسعه و تیم طراحی و تیم تست و... بستگی دارد. این به این معنی است که برای این که یک نرم افزار به درستی و موفقیت کمتر ساخته شود همه ی عواملی که در ساخت آن دخیل هستند با یکدیگر تعامل داشته باشند. حالتی را در نظر بگیرید که نیازمندی های طراحی نرم افزار مبهم بوده و تفسیر این نیازمندی ها نیز به درستی انجام نشود در این صورت نتیجه کار یک نرم افزار بی کیفیت خواهد شد. عدم تعامل اعضای تیم با یکدیگر می تواند باعث این شود که نیازمندی ها به طور دقیق مشخص نشوند یا به درستی تفسیر نشوند.
  2. پیچیدگی نرم افزار: امروزه نرم افزارها به اندازه ای پیچیده شده اند که به سختی می توان به منطق یک نرم افزار از روی کد پی برد. رابط های ویندوزی، برنامه های توزیع شده و کلاینت سروری، ارتباطات داده ها، بانک اطلاعاتی های با رابطه های بسیار زیاد و برنامه های بسیار بزرگ همگی باعث شده اند که پیچیدگی نرم افزار به سرعت بالا رود. همچنین اگر از برنامه نویسی شی گرا به درستی استفاده نشود به جای این که پیچیدگی را کم کند می تواند پیچیدگی نرم افزار را به صورت چشم گیری افزایش دهد.
  3. مشکلات برنامه نویسی: برنامه نویس ها هم مانند بقیه انسان ها اشتباه می کنند. همه ی برنامه نویسان هم به صورت حرفه ای برنامه نویسی نمی کنند و سطح مهارتشان متفاوت است. برنامه نویسانی که تجربه کافی ندارند ممکن است باعث برنامه نویسی بد شوند. به گونه ای که جوانب لازم را در نظر نگیرند و یا به گونه ای برنامه بنویسند که در یک تیم باعث به اشتباه افتادن سایرین شوند. ننوشتن کدهای ساده و عدم تست واحد (unit testing) ممکن است باعث مشکلات و خطاهایی شود.
  4. تغییر نیازمندی ها: مشتری ممکن است که تاثیر تغییرات بر برنامه را درک نکند یا شاید درک کند ولی تغییرات را در هر صورت از ما بخواهد. طراحی دوباره برنامه بر روی پروژه اثر خواهد گذاشت و گاهی باعث دوباره کاری شود و نیاز به سخت افزارهای جدید را برای برنامه به وجود آورد. هر تغییر کوچک یا بزرگی در برنامه ممکن است که وابستگی های شناخته شده و شناخته نشده ای در برنامه به وجود بیاورد که همین می تواند باعث به وجود آمدن خطا شود زیرا پیچیدگی ردیابی تغییرات ممکن است بعضی قسمت های برنامه که به علت تغییر باید عوض شود را عوض نکرده باشیم.
  5. فشار زمان: زمانبندی پروژه های نرم افزاری بسیار سخت است و در اغلب اوقات به راحتی نمی توان تخمین زد که چقدر طول می کشد تا پروژه تکمیل شود. وقتی که به زمان سررسید تحویل (deadline) نزدیک می شویم و مخصوصا اگر زمان تحویل کم باشد خطاها به وجود می آیند زیرا که استرس زیاد است و دقت توسعه برنامه کمتر خواهد شد. و همچنین شاید زمان کافی برای تست کامل برنامه نباشد.
  6. انسانهای خودرای و مغرور: مردم دوست دارند که از جملاتی مانند:
  • مشکلی نیست
  • مثل آب خوردن این کار انجام میشه
  • سه سوته این کارو انجام میدم
  • به راحتی می توانم کد قبلی را درست کنم.

اما همه ی این جملات از سر غرور می باشد. بعضی وقت ها بهتر است که از جملات زیر نیز استفاده کنیم:

  • این کار باعث پیچیدگی زیادی می شود و می تواند ما را به اشتباه بیندازد
  • فعلا ایده ای ندارم اگه بتوانم درستش می کنم
  • من تا وقتی که کامل بررسی نکنم نمی توانم برای تحویل آن وقت تعیین کنم

اگر تیم توسعه دهنده به شما می گویند که همه چی حله و اوکیه بدونید که برنامتون به مشکل بر می خورد.

  1. کدی که مستندسازی درستی نداشته باشد: برنامه ای که به درستی مستندسازی نشده است را به سختی می توان نگهداری کرد و تغییرات روی آن بسیار سخت خواهد بود. در بسیاری از سازمان ها مدیران هیچ اجباری برای مستندسازی برنامه ها به برنامه نویسان ندارند و آنها را مجبور نمی کنند که کد تمیز و قابل فهم بنویسند. البته باید گفت که مستندسازی نکردن یکی از سیاست هایی است که باعث امنیت شغلی برنامه نویسان خواهد شد. زیرا فقط خودتا از کدی که نوشته اید سردر می آورید و سازمان به شما احتیاج خواهد داشت. ولی این کار برای سازمان می تواند مشکل آفرین باشد. به عنوان مثال اگر سازمان یک برنامه نویس جدید استخدام کرده باشد و این برنامه نویس بخواهد همکار شما باشد در ابتدا که کد شما را با آن همه پیچیدگی می بیند گیج خواهد شد و زمان زیادی طول خواهد کشید که کد شما را بفهمد و بتواند بر روی آن کار کند. البته اگر خود شما حضور داشته باشید در غیر این صورت شاید نتواند کد شما را بفهمد. برنامه نویس جدید به اندازه شما به کد مسلط نیست و همین می تواند باعث به وجود آمدن خطای برنامه شود.
  2. ابزارهای برنامه نویسی و تولید نرم افزار: ابزارهای دیداری (visual) و کتابخانه های کلاس، کامپایلرها، ابزار های اسکریپت نویسی و .... ممکن است که خود دارای خطا باشند و استفاده از آنان باعث ایجاد خطا در برنامه شود.
  3. استفاده از کدهای منسوخ شده: اگر به مرور زمان کدهای استفاده شده در برنامه آپدیت نشوند ممکن است بعدا این کدهای منسوخ شده باعث تولید خطا در برنامه شود.
  4. استفاده نکردن از تست کننده های ماهر: استفاده از تست کننده های ماهر و اگاه به برنامه بسیار مهم است تا پروژه موفق باشد. ولی استفاده از این تست کننده ها ممکن است که برای همه ی شرکت ها ممکن نباشد. استفاده کردن از تست کننده های نا آگاه ممکن است که باعث ناشناخته ماند برخی خطاهای برنامه شود.
  5. تست نکردن برنامه برای پاسخ به همه ی نیازمندی های کاربران
  6. شروع به کدزنی و تست برنامه بدون این که به صورت کامل و واضح از نیازمندی های برنامه آگاه باشیم
  7. انتشار نسخه های مختلف از برنامه در حالی که هنوز تست برنامه تمام نشده است.

بخش های گفته شده تعدادی از دلایل به وجود آمدن خطا در برنامه بود ولی همه ی آنها نیست. itpro باشید


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات