மென்பொருள் வழு

மென்பொருள் வழு (Software bug) என்பது மென்பொருள் நிரலில் ஏற்படும் பிழைகளைக் குறிக்கும். இப்பிழையை கணினி நிரலில் ஏற்பட்ட தவறு, குறைபாடு என்றும் சொல்வார்கள். இப்பிழை (வழு) காரணமாக கணினி கட்டகம் (system) எதிர்பாராத விளைவுகளைக் கொடுக்கும். பெரும்பாலான வழுக்கள் கணினி வடிவமைப்பிலோ அல்லது மூலநிரலிலோ மனிதர்கள் செய்யும் தவறுகளால் ஏற்படுபவை. ஒரு நிரலில் ஏராளமான வழுக்கள் இருக்கலாம் அதனால் நிரலின் (மென்பொருளின்) செயல்பாடு கடுமையாக பாதிக்கப்படலாம். இவ்வகையான நிரல்கள் வழு நிறைந்தவை (buggy) என அழைக்கப்படுகின்றன.

வழுக்கள் பல்வேறு தவறான பின்விளைவுகளை ஏற்படு்த்தக்கூடும், அதனால் மென்பொருளை பயன்படுத்தும் பயனர் பல்வேறு குறைபாடுகளை சந்திக்க நேரலாம். சில வழுக்கள் மென்பொருளின் செயல்பாட்டை மட்டும் பாதிக்கும், சில வெகு காலத்திற்கு கண்டுபிடிக்கப்படாமலேயே இருக்கும். சில கடுமையான வழுக்கள் மென்பொருளை வேலை செய்யாமல் தடுக்கும் அல்லது தீயநோக்குடைய பயனர்கள் கணினியின் அணுகுக் கட்டுப்பாட்டை மீறி அனுமதிபெறாத சிறப்புரிமை பெற வழி ஏற்படுத்தும். இத்தகைய செயல்பாட்டை நச்சுநிரல்கள் அனுகூலமாகப் பயன்படுத்திக் கொள்ளலாம்.

சொற் பிறப்பியல் 
1843ல் அகுசுட்டா அடா பைரான் என்பவர் சார்லசு பாப்பேஜ் என்பவரின் பகுப்பாய்வு பொறிக்கு நிரல் அட்டைகளை உருவாக்கும் போது மென்பொருள் தவறுகளை கொண்டிருக்கும் என்ற கருத்தாக்கத்தை தெரிவித்தார். அகுசுட்டா அடா பைரான் உலகின் முதல் கணினி நிரலாளர் என்று கருதப்படுகிறார்.

வழு என்பது ஆங்கிலத்தில் பக் (bug) என அழைக்கப்படுகிறது. கணினி மற்றும் கணினி மென்பொருள் உருவாவதற்கு முன்பிருந்தே பொறியியல் சமூகம் விளக்க முடியாத தவறுகளை (வழுக்களை) குறிக்க பக் என்ற சொல்லை பயன்படுத்தியது. இயந்திர பொறியியலில் பிழையாய் செயல்படும் வன்பொருட்களை குறிக்கவே முதலில் இச்சொல் பயன்படுத்தப்பட்டது. 1878ல் தாமசு ஆல்வா எடிசன் தன் கூட்டாளிகளுக்கு எழுதிய கடிதத்தில் இச்சொல்லை பயன்படுத்தினார்.

பேஃவ்வல் என்பது இயந்திரத்தில் விளையாடப்பட்ட முதல் பின்பால் ஆட்டம் ஆகும். பேஃவ்வல் ஆட்டம் வழுக்கள் அற்றது என 1931ல் விளம்பரப்படுத்தப்பட்டது . இரண்டாம் உலகப்போரின் போது இராணுவ பொருட்களில் ஏதாவது சிக்கல் ஏற்பட்டால் அது வழு (பக்) எனக் குறிக்கப்பட்டது .

வழு ஏற்படாமல் தடுக்கும் முறை 

கணினித்துறையானது நிரலாளர்கள் அறியாமல் வழுக்களை தங்கள் நிரல்களில் எழுதுவதை தடுப்பதற்காக பல்வேறு முயற்சிகளை மேற்கொண்டுள்ளது.

நிரலாக்க பாணி 
நிரலாளர்கள் செய்யக்கூடிய தட்டச்சுப்பிழைகளை கணினித்தொகுப்பி(ஆங்கிலம்:Compiler) கண்டுபிடித்தாலும் வழுக்கள் நிரலாளர்கள் ஏரணத்தில்(ஆங்கிலம்:Logic) செய்தபிழைகளால் உண்டாகலாம். இவை கணினித்தொகுப்பியால் கண்டுபிடிக்கப்படாமல் போகும். இதைத் தடுக்க பல்வேறு புதிய வடிவமைப்புகளை நிரலாக்க பாணியிலும் தற்காப்பு நிரலாக்கத்திலும் உருவாக்கியுள்ளார்கள். இவை நிரல்களில் குறைந்த வழுக்கள் அல்லது வழுக்களை எளிதாக கண்டறிய உதவுகிறது. சில நிரலாக்க மொழிகளில் தட்டச்சுப்பிழைகள் குறிப்பாக குறியீடுகள் அல்லது கணித செயலிகள் (ஆங்கிலம்:Mathematical Operators) ஏரண பிழைகளை உருவாக்கும். இந்தவகை தட்டச்சுப்பிழைகளை கணினித்தொகுப்பி வேறு பொருள் கொண்டு ஏற்றுக்கொண்டாலும் அவை நிரலாளர்கள் நினைத்த பொருள் அல்லாதவையாதலால் வழுக்கள் உண்டாகும்.

நிரலாக்க உத்தி 
எழுதப்பட்ட நிரலை கணினியில் ஒட விட்டு பார்க்கும் போது அதில் வழுக்கள் இருந்தால் ஒழுங்கற்ற தன்மையுடன் நிறைய அக தரவுகளை (internal data) உருவாக்கும். அதனால் நிரல்கள் அக தரவுகளை சரிபார்க்கும் வகையில் எழுதப்படுகின்றன. அக தரவுகளில் ஒழுங்கற்ற தன்மையை சந்தித்தால் உடனடியாக அந்த நிரல் ஓட்டம் நின்றுவிடும், நிரலாளர்கள் வழுவை கண்டு  சரி செய்து விடுவார்கள்.

நிரலாக்க ஒழுங்குமுறை 
பல திட்டங்கள் நிரலாளர்களின் செயல்திறனை மேலாண்மை விதத்தில் உள்ளன. இதனால் சில வழுக்களே நிரல்களில் உண்டாகும், இவை மென்பொருள் பொறியியலின் கீழ் வரும்.

நிரல்மொழி உதவி 
நிரலாக்கமொழிகள் நிரலாளர்கள் வழுக்கள் உண்டாக்குவதை தடுக்க பெயர் இடும் முறை, நிரல் கூறு போன்ற பல்வேறு சிறப்பியல்புகளை கொண்டுள்ளன. தவறாக எழுதும் சில நிரல் தொடர்களின் தொடர்நிரலிகள்(syntax) சரியாக இருந்தாலும் அந்த தவறுகள் நிரலாளர்கள் பயன்படுத்தும் சில வகையான தடை சோதனைகளில் சிக்கிவிடும்.

நிரற்றொடர் பகுப்பாய்வு 
நிரற்றொடர் பகுப்பாய்வு கருவிகள் நிரலாளர்கள் தங்கள் நிரலை கணினித்தொகுப்பி அல்லாமல் வேறு வகையிலும் சோதித்து பார்க்க உதவுகிறது. பொதுவாக நிரலாளர்கள் தங்கள் நிரல்களில் விவரக்கூற்று(specification) அடிப்படையில் உள்ள வலுக்களை கண்டறிந்தாலும் அவை எளிதில் தீர்க்க முடியாதவை. இக்கருவிகள் நிரல் எழுதுவோராலேயே பெரும்பாலான தவறுகள்\வழுக்கள் ஒரே மாதிரி ஏற்படுகின்றன என்பதனை அடிப்படையாக கொண்டு தயாரிக்கப்படுபவை.

வழுநீக்கல் 

கணினி நிரலில் உள்ள வழுக்களை கண்டறிவதும் தீர்ப்பதுமே (வழுநீக்கல்) நிரல் எழுதுவதை விட அதிக நேரம் ஆகும் செயலாகும். சிக்கலான நிரல்கள் எழுதும் போது வழுக்கள் ஏற்படுவது தவிர்க்கமுடியாதது, சிக்கலான நிரலின் சில வழுக்களை சரி செய்வதும் கடினமான செயலாகும். மூலநிரலில் உள்ள வழுக்களை கண்டறிவது சற்று அரிதான செயலாகும், கண்டறிந்தபின் அதை சரிசெய்வது ஒப்பீட்டளவில் கண்டறிவதை விட எளியதாகும். வழுநீக்கி என்ற மென்பொருள் வழுநீக்கலுக்கு உதவுகிறது, இது நிரலின் ஒவ்வொரு வரியாக செயல்பட்டு வழுக்களை கண்டறிய உதவும். குறி கோப்புகளில்(log file) உள்ள தகவல்களை கொண்டும் வழு எங்கு ஏற்படுகிறது என அறியலாம். வழுநீக்கிகளை பயன்படுத்தினாலும் வழுக்களை கண்டறிவது எளிய செயல் அல்ல. ஏனெனில் நிரலின் ஒரு பகுப்பில்(section) உள்ள வழுவானது இப்பகுப்புக்கு தொடர்பே இல்லாத மற்றொரு பகுப்பு செயல்படுவதை பாதிக்கும். இவ்வகையான வழுக்கள் கண்டுபிடிப்பதற்கு கடினமானவை.

வழு மேலாண்மை 
மென்பொருளானது சில வழுக்களுடன் பொதுப்பயன்பாட்டுக்கு வெளியிடப்படுவது வழக்கமானதே. இவை மென்பொருளின் முதன்மை செயல்பாட்டை பாதிக்காவண்ணம் உள்ள வழுக்கள். மோசமான, உடனடி தீர்வு தேவைப்படும் வழுக்களுடன் மென்பொருள் வெளிவராது. மென்பொருளானது பல்வேறு வகையான வழுக்களை கொண்டிருக்கலாம் அவை மென்பொருள் சோதனையின் போது கண்டுபிடிக்கபடாமல் இருக்கும். இவ்வகையான வழுக்கள் பயனர்களுக்கு தொந்தரவு தராதவை. பயனர்கள் சில வழுக்களை விரும்பாவிட்டால் உடனடியாக புதிய பதிப்பு அந்த வழுக்கள் இல்லாமல் வெளியிடப்படுவதும் வழக்கம். மேலும் மென்பொருளின் முதன்மை பயன்பாட்டுக்கு சிக்கல் விளைவிக்காத மென்பொருள் சோதனையின் போது கண்டுபிடிக்கப்பட்ட வழுக்கள் நிரலாளர்களுக்கு தெரியும். அதில் பெரும்பாலானவற்றை அடுத்த பதிப்பின் போது சரிசெய்துவிடுவார்கள். மென்பொருளை வெளியிடும் போதே பதிப்பு குறிப்பு ஒன்றையும் வெளியிடுவார்கள், இதில் எந்த வழுக்கள் உள்ளன என்றும், அதற்கு மாற்றுவழி இருந்தால் அதையும் குறிப்பிடுவார்கள்.

வழுக்களை சரிசெய்யாமல் இருப்பதற்கு பல காரணங்கள் உள்ளன.
நிரலாளர்களுக்கு போதிய நேரமின்மை
நெருக்கடி இல்லாத வழுக்களை சரிசெய்வது பொருளாதார அளவில் பயன்னற்றதாக இருக்கலாம்.
வழுவானது வெளியிடப்படாத புதிய பதிப்பில் சரிசெய்யப்படலாம்
வழுவை சரிசெய்தால் அது புதிய வழுக்களை உருவாக்கலாம்.
அது வழுவாக இல்லாமல் இருக்கலாம். பயனருக்கு ஏற்பட்ட புரிதலில் காரணமாக அந்த வழு பதியப்பட்டிருக்கலாம்.
வழுவை சரிசெய்ய நிரலில் மாற்றம் செய்வது பெரியளவிலோ அல்லது வெளியீட்டை காலந்தாழ்த்துவதாகவோ இருக்கலாம்.

மேற்கோள்கள் 

கணினி அறிவியல்
மென்பொருள் சோதனை