பேராலயமும் சந்தையும் 6. எத்தனை பேர் கவனம் வைத்தால் சிக்கலை அடக்கியாள முடியும்

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

மூல-விழிப்புணர்வு இல்லாத (non–source-aware) பயனர்கள் வழுவை மீள்உருவாக்கும் செயல்படிகளைத் தருவதில்லை

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

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

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

மூல-நிரல் அளவில் வழு நிலைகளின் கோடி காட்டும் குணாதிசயத்தை வைத்தே புரிந்துகொள்ள இயலும்

பெரும்பாலான வழுக்கள், பெரும்பாலான நேரங்களில், மூல-நிரல் அளவில் அவற்றின் வழு நிலைகளின் ஓரளவு கோடி காட்டும் குணாதிசயத்தைக் கொடுத்தாலும் எளிதில் புரிந்துகொள்ள இயலும். உங்கள் பீட்டா-சோதனையாளர்களில் யாரேனும் ஒருவர், “இன்ன வரியில் எல்லைப் பிரச்சினை (boundary problem) உள்ளது” அல்லது “அ, ஆ மற்றும் இ நிபந்தனைகளின் கீழ், இந்த மாறி (variable) மீளமைகிறது” எனச் சுட்டிக்காட்டினால், பிரச்சினை தரும் நிரலை ஒருமுறைப் பார்ப்பதே அனேகமாகப் போதும். பிரச்சினையின் சரியான பயன்முறையைக் கண்டறிந்து ஒரு தீர்வை உருவாக்க இயலும்.

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

நிரலாளர் நேரத்தைப் பாதுகாக்கும் மற்றொரு சிறப்பியல்பு வழக்கமாகத் திறந்த மூல திட்டங்களிலுள்ள தொடர்பு அமைப்பு (communication structure) ஆகும். மேலே நான் “முக்கிய நிரலாளர்” என்று சொன்னேன். இது திட்ட மையத்திற்கும் (பொதுவாக ஒற்றை மைய நிரலாளர்தான் இருப்பார், மூன்று வரை இருக்கக்கூடும்) மற்றும் பீட்டா-சோதனையாளர்கள் மற்றும் பங்களிப்பாளர்களின் திட்ட வெளிவட்டம் (பெரும்பாலும் நூற்றுக்கணக்கான எண்ணிக்கையில் இருக்கலாம்) ஆகியவற்றுக்கும் இடையேயான வேறுபாட்டைக் காட்டுகிறது.

மென்பொருள் திட்டம் தாமதமாகிறதே என்று கூடுதல் நிரலாளர்களைச் சேர்த்தால் அது மேலும் தாமதமாகும்

ஃப்ரெட் புரூக்ஸ் எழுதிய ஒரு நபரின் ஒரு மாத வேலை என்ற கட்டுக்கதை

பாரம்பரிய மென்பொருள்-வளர்ச்சி அமைப்பு எதிர்கொள்ளும் அடிப்படைப் பிரச்சனை புரூக்ஸின் விதி: “மென்பொருள் திட்டம் தாமதமாகிறதே என்று கூடுதல் நிரலாளர்களைச் சேர்த்தால் அத்திட்டம் மேலும் தாமதமாகும்.” பொதுவாக ஒரு திட்டத்தின் சிக்கல்கள் மற்றும் தகவல்தொடர்பு பிரச்சினைகள் நிரலாளர்களின் எண்ணிக்கையின் வர்க்கத்தில் (square of the number of developers) அதிகரிக்கும் என்று புரூக்ஸின் விதி கணித்துள்ளது. ஆனால் செய்யும் வேலையோ நேர்கோட்டில் மட்டுமே உயரும்.

வெவ்வேறு நபர்களால் எழுதப்பட்ட நிரலுக்கு இடையே உள்ள இடைமுகங்களில் வழுக்கள் அதிகமாகக் காணப்படுகின்றன என்ற அனுபவத்தின் அடிப்படையில் புரூக்ஸின் விதி நிறுவப்பட்டது. மேலும் ஒரு திட்டத்தில் தகவல்தொடர்புகள்/ஒருங்கிணைத்தல் ஆகிய மேற்செலவுகள் நிரலாளர்களுக்கிடையிலான இடைமுகங்களின் எண்ணிக்கையுடன் உயரும். எனவே, நிரலாளர்களுக்கிடையிலான தகவல்தொடர்பு பாதைகளின் எண்ணிக்கையில் சிக்கல்கள் அதிகரிக்கின்றன. இது நிரலாளர்களின் எண்ணிக்கையின் வர்க்கமாக அளவிடப்படுகிறது (இன்னும் துல்லியமாக, N*(N – 1)/2 சூத்திரத்தின்படி N என்பது நிரலாளர்களின் எண்ணிக்கை). எடுத்துக்காட்டு: 50 நிரலாளர்களுக்கு 50 × (50 – 1)/2 = 1,225 தகவல் தொடர்பு அலைத்தடங்கள் (channels of communication) தேவைப்படும்.

புரூக்ஸின் விதி பகுப்பாய்வு (மேலும் வளர்ச்சிக் குழுக்களில் அதிக எண்ணிக்கையில் நிரலாளர்களைச் சேர்ப்பது பற்றிய பயம்) ஒரு மறைவான தற்கோளை (hidden assumption) சார்ந்துள்ளது. அது திட்டத்தின் தகவல்தொடர்பு அமைப்புபடி எல்லோரும் மற்ற எல்லோருடனும் பேசுவார்கள் என்பதுதான். ஆனால் திறந்தமூல திட்டங்களில், திட்ட வெளிவட்டப் பங்களிப்பாளர்கள் பிரிக்கக்கூடிய இணையான துணைப் பணிகளில் (separable parallel subtasks) செயல்படுகிறார்கள். மற்றும் ஒருவருக்கொருவர் மிகக் குறைவாகவே தொடர்பு கொள்கிறார்கள். நிரல் மாற்றங்கள் மற்றும் வழு அறிக்கைகள் முக்கிய குழுவிற்குள் மட்டுமே கையாளப்படுகின்றன. மேலும் அச்சிறிய முக்கிய குழுவிற்குள் மட்டுமே நாம் முழு புரூக்ஸின் விதிக்கான மேற்செலவு செய்கிறோம்.

மூல-நிரல்-நிலையில் வழு அறிக்கை செயல்திறன் மிகுந்ததாக இருப்பதற்குப் பல காரணங்கள் உள்ளன

மூல-நிரல்-நிலையில் வழு அறிக்கை மிகவும் திறமையானதாக இருப்பதற்கு இன்னும் பல காரணங்கள் உள்ளன. பயனரின் பயன்பாட்டு முறை மற்றும் சூழலின் விவரங்களைப் பொறுத்து, ஒரு வழுவானது பல சாத்தியமான அறிகுறிகளைக் கொண்டிருக்கலாம் என்ற உண்மையை அவை மையமாகக் கொண்டுள்ளன. இத்தகைய பிழைகள் மிகவும் சிக்கலான மற்றும் நுட்பமான வழுக்கள் (இயங்குநிலை-நினைவகம்-மேலாண்மை (dynamic-memory-management) வழுக்கள் அல்லது நிர்ணயமற்ற நிறுத்த வாய்ப்பு (nondeterministic interrupt-window)) போன்றவை. இவற்றைத் தேவைக்கேற்ப மறுஉருவாக்கம் செய்வதும் அல்லது நிலையான பகுப்பாய்வு (static analysis) மூலம் கண்டறிவதும் கடினம். இவைதான் மென்பொருளில் நீண்ட கால பிரச்சினைகளை உருவாக்குகின்றன.

இதுபோன்ற பல-அறிகுறி வழுவின் தற்காலிக மூல-நிரல்-நிலை குணாதிசயத்தை சோதனையாளர் (எ.கா. “லைன் 1250 க்கு அருகில் சமிக்ஞை கையாளுதலில் ஒரு சாளரம் இருக்கலாம் போல் தோன்றுகிறது” அல்லது “அந்த இடையகத்தை (buffer) எங்கே சுழியமாக்குகிறீர்கள்?”) நிரலாளருக்குத் தெரிவிக்கலாம். நிரலில் சதா மூழ்கியிருக்கும் நிரலாளருக்கு பல்வேறு அறிகுறிகளுக்கான முக்கியமான துப்பு இதன்மூலம் கிடைக்கலாம். இது போன்ற சமயங்களில், எந்த வழுவின் காரணமாக வெளியில் தெரியும் பிரச்சினை ஏற்பட்டது என்பதை அறிவது கடினமாக இருக்கலாம். ஆனால் அடிக்கடி வெளியிடும் போது, அதை அறிவது தேவையற்றது. மற்ற கூட்டுப்பணியாளர்கள் தங்கள் வழு சரி செய்யப்பட்டதா இல்லையா என்பதை விரைவாகக் கண்டறியும் வாய்ப்பு உள்ளது. பல சந்தர்ப்பங்களில், மூல-நிலை வழு அறிக்கைகள் மூலம் எந்தக் குறிப்பிட்ட வழுத்திருத்தத்தில் என்று தெரியாமலே சில பிரச்சினைகள் தீர்ந்துவிடும்.

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

எளிமையான மற்றும் எளிதில் மீள்உருவாக்கக்கூடிய வழுக்களுக்கு, முக்கியத்துவம் “சீரற்றது (random)” என்பதை விட “அரை (semi)” யில் இருக்கும். வழுத்திருத்த திறன் மற்றும் நிரல் கட்டமைப்பு ஆகியவற்றுடன் நெருக்கம் மிகவும் முக்கியமானது. ஆனால் சிக்கலான வழுக்களுக்கு, முக்கியத்துவம் “சீரற்றது” என்பதில் இருக்கும். இச்சூழ்நிலையில், பலர் தடயங்களைப் பின்தொடர்வது ஒரு சிலர் மட்டுமே தடயங்களைப் பின்தொடர்வதை விட மிகவும் பயனுள்ளதாக இருக்கும். அந்த சிலருக்கு சராசரி திறன் நிலை அதிகம் இருந்தாலும் கூட.

தடயப் பாதைகளைப் (trace paths) பின்தொடரப் பலர் இணையாக முயற்சி செய்வதால் வழு நீக்கல் எளிதாகிறது

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

மூலநூல்: The Cathedral and the Bazaar by Eric S. Raymond – version 3.0
தமிழாக்கம்: இரா. அசோகன் ashokramach@gmail.com

நன்றி

  1. The Mythical Man-Month – Wikipedia

இத்தொடரில் அடுத்த கட்டுரை: ரோஜா எப்போது ரோஜா அல்ல?

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

.

%d bloggers like this: