Runtime verification
રનટાઇમ ચકાસણી એ એક કમ્પ્યુટિંગ સિસ્ટમ વિશ્લેષણ અને અમલીકરણ અભિગમ છે જે ચાલતી સિસ્ટમમાંથી માહિતી કાઢવા પર આધારિત છે અને તેનો ઉપયોગ ચોક્કસ ગુણધર્મોને સંતોષતા અથવા ઉલ્લંઘન કરતા અવલોકન કરેલ વર્તણૂકોને શોધવા અને સંભવતઃ પ્રતિક્રિયા આપવા માટે કરે છે. કેટલાક ખૂબ જ ચોક્કસ ગુણધર્મો, જેમ કે ડેટરસ અને ડેડલોક ફ્રીડમ, સામાન્ય રીતે તમામ સિસ્ટમો દ્વારા સંતુષ્ટ થવા ઇચ્છતા હોય છે અને એલ્ગોરિધમિક રીતે શ્રેષ્ઠ રીતે લાગુ કરી શકાય છે. અન્ય ગુણધર્મોને ઔપચારિક સ્પષ્ટીકરણો તરીકે વધુ સરળતાથી કબજે કરી શકાય છે. રનટાઇમ ચકાસણી સ્પષ્ટીકરણો સામાન્ય રીતે ટ્રેસ પ્રેડિકેટ ઔપચારિકતાઓમાં વ્યક્ત કરવામાં આવે છે, જેમ કે મર્યાદિત સ્થિતિ મશીનો, નિયમિત અભિવ્યક્તિઓ, સંદર્ભ-મુક્ત પેટર્ન, રેખીય અસ્થાયી તર્કશાસ્ત્ર, વગેરે, અથવા આના વિસ્તરણ. આ સામાન્ય પરીક્ષણ કરતાં ઓછા કામચલાઉ અભિગમ માટે પરવાનગી આપે છે. જો કે, એક્ઝિક્યુટિવ સિસ્ટમની દેખરેખ માટેની કોઈપણ પદ્ધતિને રનટાઇમ ચકાસણી ગણવામાં આવે છે, જેમાં ટેસ્ટ ઓરેકલ અને સંદર્ભ અમલીકરણ સામે ચકાસણીનો સમાવેશ થાય છે. જ્યારે ઔપચારિક જરૂરિયાતોની વિશિષ્ટતાઓ પૂરી પાડવામાં આવે છે, ત્યારે મોનિટરનું સંશ્લેષણ કરવામાં આવે છે અને ઇન્સ્ટ્રુમેન્ટેશન દ્વારા સિસ્ટમમાં દાખલ કરવામાં આવે છે. રનટાઇમ ચકાસણીનો ઉપયોગ ઘણા હેતુઓ માટે થઈ શકે છે, જેમ કે સુરક્ષા અથવા સલામતી નીતિની દેખરેખ, ડિબગીંગ, પરીક્ષણ, ચકાસણી, માન્યતા, પ્રોફાઇલિંગ, ખામી સંરક્ષણ, વર્તનમાં ફેરફાર (દા. ત., પુનઃપ્રાપ્તિ), વગેરે. રનટાઇમ વેરિફિકેશન પરંપરાગત ઔપચારિક ચકાસણી તકનીકોની જટિલતાને ટાળે છે, જેમ કે મોડેલ ચેકિંગ અને થિયોરમ પ્રૂવિંગ, માત્ર એક અથવા થોડા એક્ઝેક્યુશન ટ્રેસનું વિશ્લેષણ કરીને અને વાસ્તવિક સિસ્ટમ સાથે સીધા કામ કરીને, આમ પ્રમાણમાં સારી રીતે સ્કેલિંગ કરે છે અને પરિણામોમાં વધુ વિશ્વાસ આપે છે વિશ્લેષણ (કારણ કે તે ઓછા કવરેજના ભોગે સિસ્ટમને ઔપચારિક રીતે મોડેલિંગ કરવાના કંટાળાજનક અને ભૂલ-સંભવિત પગલાને ટાળે છે). વધુમાં, તેની પ્રતિબિંબીત ક્ષમતાઓ દ્વારા રનટાઇમ ચકાસણીને લક્ષ્ય પ્રણાલીનો અભિન્ન ભાગ બનાવી શકાય છે, જમાવટ દરમિયાન તેના અમલીકરણનું નિરીક્ષણ અને માર્ગદર્શન કરી શકાય છે. એક્ઝિક્યુટિવ સિસ્ટમ્સ અથવા પ્રોગ્રામ્સ સામે ઔપચારિક અથવા અનૌપચારિક રીતે નિર્દિષ્ટ ગુણધર્મોની તપાસ કરવી એ એક જૂનો વિષય છે (નોંધપાત્ર ઉદાહરણો સોફ્ટવેરમાં ડાયનેમિક ટાઇપિંગ, અથવા નિષ્ફળ-સલામત ઉપકરણો અથવા હાર્ડવેરમાં વોચડોગ ટાઈમર છે), જેમના ચોક્કસ મૂળને ઓળખવા મુશ્કેલ છે. ઔપચારિક ચકાસણી અને પરીક્ષણ વચ્ચેની સીમા પર સમસ્યાઓનું સમાધાન કરવાના હેતુથી 2001 ની વર્કશોપના નામ તરીકે પરિભાષા રનટાઇમ ચકાસણી ઔપચારિક રીતે રજૂ કરવામાં આવી હતી. મોટા કોડ બેઝ માટે, જાતે પરીક્ષણના કિસ્સાઓ લખવામાં ખૂબ જ સમય લાગે છે. વધુમાં, વિકાસ દરમિયાન બધી ભૂલો શોધી શકાતી નથી. અવકાશયાન, રોવર્સ અને એવિયોનિક્સ ટેકનોલોજીમાં ઉચ્ચ સલામતી ધોરણોને સંગ્રહિત કરવા માટે ક્લાઉસ હેવેલન્ડ અને ગ્રિગોર રોસુ દ્વારા નાસા એમ્સ રિસર્ચ સેન્ટર ખાતે સ્વચાલિત ચકાસણીમાં પ્રારંભિક યોગદાન આપવામાં આવ્યું હતું. તેઓએ ટેમ્પોરલ લોજિકમાં સ્પષ્ટીકરણોને ચકાસવા અને સિંગલ એક્ઝેક્યુશન પાથનું વિશ્લેષણ કરીને જાવા પ્રોગ્રામ્સમાં રેસની પરિસ્થિતિઓ અને ડેડલોક્સને શોધવા માટે એક સાધનની દરખાસ્ત કરી. હાલમાં, રનટાઇમ ચકાસણી તકનીકો ઘણીવાર વિવિધ વૈકલ્પિક નામો સાથે રજૂ કરવામાં આવે છે, જેમ કે રનટાઇમ મોનિટરિંગ, રનટાઇમ ચેકિંગ, રનટાઇમ રિફ્લેક્શન, રનટાઇમ એનાલિસિસ, ડાયનેમિક એનાલિસિસ, રનટાઇમ/ડાયનેમિક સિમ્બોલિક એનાલિસિસ, ટ્રેસ એનાલિસિસ, લોગ ફાઇલ એનાલિસિસ, વગેરે. રનટાઇમ ચકાસણી અન્ય સુસ્થાપિત ક્ષેત્રો સાથે ગાઢ રીતે સંબંધિત છે, જેમ કે પરીક્ષણ (ખાસ કરીને મોડેલ-આધારિત પરીક્ષણ) જ્યારે જમાવટ પહેલાં ઉપયોગમાં લેવાય છે અને જમાવટ દરમિયાન ઉપયોગમાં લેવાતી વખતે ખામી-સહિષ્ણુ પ્રણાલીઓ. રનટાઇમ ચકાસણીના વ્યાપક ક્ષેત્રમાં, કોઈ પણ વ્યક્તિ ઘણી શ્રેણીઓને અલગ કરી શકે છે, જેમ કેઃ "સ્પષ્ટીકરણ-ઓછું" મોનિટરિંગ જે અણુતા જેવા મોટે ભાગે સમવર્તી-સંબંધિત ગુણધર્મોના નિશ્ચિત સમૂહને લક્ષ્ય બનાવે છે. આ ક્ષેત્રમાં અગ્રણી કાર્ય સેવેજ એટ અલ દ્વારા કરવામાં આવ્યું છે. ટેમ્પોરલ લોજિક સ્પષ્ટીકરણોના સંદર્ભમાં ઇરેઝર અલ્ગોરિધમ મોનિટરિંગ સાથે; આ દિશામાં પ્રારંભિક યોગદાન લી, કન્નન અને તેમના સહયોગીઓ અને હેવેલન્ડ અને રોસુ દ્વારા કરવામાં આવ્યું છે. મૂળભૂત અભિગમો રનટાઇમ ચકાસણી પદ્ધતિઓના વ્યાપક ક્ષેત્રને ત્રણ પરિમાણો દ્વારા વર્ગીકૃત કરી શકાય છેઃ સિસ્ટમની દેખરેખ અમલ દરમિયાન (ઓનલાઇન) અથવા અમલ પછી કરી શકાય છે. લોગ વિશ્લેષણના સ્વરૂપમાં (ઓફલાઇન). ચકાસણી કોડ સિસ્ટમમાં સંકલિત કરવામાં આવે છે (જેમ કે પાસા-લક્ષી પ્રોગ્રામિંગમાં કરવામાં આવે છે) અથવા બાહ્ય અસ્તિત્વ તરીકે પ્રદાન કરવામાં આવે છે. મોનિટર ઇચ્છિત સ્પષ્ટીકરણના ઉલ્લંઘન અથવા માન્યતાની જાણ કરી શકે છે. તેમ છતાં, રનટાઇમ ચકાસણીમાં મૂળભૂત પ્રક્રિયા સમાન રહે છેઃ મોનિટર અમુક ઔપચારિક સ્પષ્ટીકરણમાંથી બનાવવામાં આવે છે. આ પ્રક્રિયા સામાન્ય રીતે આપમેળે કરી શકાય છે જો ઔપચારિક ભાષાના સૂત્રો માટે સમકક્ષ ઓટોમેટા હોય જેમાં મિલકત નિર્દિષ્ટ કરવામાં આવે છે. નિયમિત અભિવ્યક્તિને રૂપાંતરિત કરવા માટે, મર્યાદિત-સ્થિતિ મશીનનો ઉપયોગ કરી શકાય છે; રેખીય ટેમ્પોરલ તર્કમાં એક ગુણધર્મને બુચી ઓટોમેટનમાં રૂપાંતરિત કરી શકાય છે (બુચી ઓટોમેટન માટે રેખીય ટેમ્પોરલ તર્ક પણ જુઓ). સિસ્ટમ મોનિટરને તેની અમલની સ્થિતિ સંબંધિત ઇવેન્ટ્સ મોકલવા માટે સાધન છે. સિસ્ટમ ચલાવવામાં આવે છે અને મોનિટર દ્વારા ચકાસવામાં આવે છે. મોનિટર પ્રાપ્ત ઇવેન્ટ ટ્રેસની ચકાસણી કરે છે અને નિર્ણય આપે છે કે શું સ્પષ્ટીકરણ સંતુષ્ટ છે કે નહીં. વધુમાં, મોનિટર કદાચ ખોટી વર્તણૂકને સુધારવા માટે સિસ્ટમને પ્રતિસાદ મોકલે છે. ઓફલાઇન મોનિટરિંગનો ઉપયોગ કરતી વખતે કારણની સિસ્ટમ કોઈ પ્રતિસાદ પ્રાપ્ત કરી શકતી નથી, કારણ કે ચકાસણી પછીના સમયે કરવામાં આવે છે. ઉદાહરણો નીચે આપેલા ઉદાહરણોમાં કેટલાક સરળ ગુણધર્મોની ચર્ચા કરવામાં આવી છે, જે આ લેખનના સમય (એપ્રિલ 2011) સુધીમાં કેટલાક રનટાઇમ ચકાસણી જૂથો દ્વારા કદાચ નાના ફેરફારો સાથે ધ્યાનમાં લેવામાં આવ્યા છે. તેમને વધુ રસપ્રદ બનાવવા માટે, નીચેની દરેક મિલકત એક અલગ સ્પષ્ટીકરણ ઔપચારિકતાનો ઉપયોગ કરે છે અને તે બધા પેરામેટ્રિક છે. પેરામેટ્રિક ગુણધર્મો એ પેરામેટ્રિક ઘટનાઓ સાથે રચાયેલા નિશાન વિશેના ગુણધર્મો છે, જે ઘટનાઓ છે જે ડેટાને પરિમાણો સાથે જોડે છે. અહીં પેરામેટ્રિક ગુણધર્મનું સ્વરૂપ હોય છે, જ્યાં સામાન્ય (બિન-પ્રમાણિત) પેરામેટ્રિક ઘટનાઓનો ઉલ્લેખ કરતી કેટલીક યોગ્ય ઔપચારિકતાઓમાં સ્પષ્ટીકરણ હોય છે. આવા પેરામેટ્રિક ગુણધર્મો માટેનો અંતઃપ્રેરણા એ છે કે દ્વારા વ્યક્ત કરાયેલ ગુણધર્મ અવલોકન કરેલ ટ્રેસમાં (પેરામેટ્રિક ઘટનાઓ દ્વારા) મળેલા તમામ પરિમાણો માટે હોવો આવશ્યક છે. નીચેનામાંથી કોઈ પણ ઉદાહરણો કોઈ ચોક્કસ રનટાઇમ ચકાસણી પ્રણાલી માટે વિશિષ્ટ નથી, જો કે પરિમાણો માટે સમર્થન દેખીતી રીતે જરૂરી છે. નીચેના ઉદાહરણોમાં જાવા વાક્યરચના ધારવામાં આવે છે, આમ "= =" એ તાર્કિક સમાનતા છે, જ્યારે "=" એ સોંપણી છે. કેટલીક પદ્ધતિઓ (દા. ત., અનસેફએનમએક્સામ્પલમાં અપડેટ ()) ડમી પદ્ધતિઓ છે, જે જાવા APIનો ભાગ નથી, જેનો ઉપયોગ સ્પષ્ટતા માટે થાય છે. હેસનેક્સ્ટ જાવા ઇટરેટર ઈન્ટરફેસ માટે જરૂરી છે કે હેસનેક્સ્ટ () પદ્ધતિને કોલ કરવામાં આવે અને આગામી () પદ્ધતિને કોલ કરવામાં આવે તે પહેલાં સાચું પરત કરવામાં આવે. જો આવું થતું નથી, તો તે ખૂબ જ શક્ય છે કે વપરાશકર્તા સંગ્રહના "અંતમાં" પુનરાવર્તન કરશે. જમણી બાજુની આકૃતિ મર્યાદિત સ્થિતિ મશીન દર્શાવે છે જે રનટાઇમ ચકાસણી સાથે આ ગુણધર્મને તપાસવા અને લાગુ કરવા માટે સંભવિત મોનિટરને વ્યાખ્યાયિત કરે છે. અજ્ઞાત સ્થિતિમાંથી, આગલી () પદ્ધતિ પર કૉલ કરવો હંમેશા ભૂલ છે કારણ કે આવી કામગીરી અસુરક્ષિત હોઈ શકે છે. જો હેઝ નેક્સ્ટ () કોલ કરવામાં આવે અને સાચું પરત આવે, તો નેક્સ્ટ () પર કૉલ કરવો સલામત છે, જેથી મોનિટર વધુ સ્થિતિમાં પ્રવેશ કરે. જો, તેમ છતાં, હેઝ નેક્સ્ટ () પદ્ધતિ ખોટી પરત કરે છે, તો ત્યાં કોઈ વધુ ઘટકો નથી, અને મોનિટર નોન સ્થિતિમાં પ્રવેશ કરે છે. વધુ અને કોઈ નહીં રાજ્યોમાં, હેઝનેક્સ્ટ () પદ્ધતિ પર કૉલ કરવાથી કોઈ નવી માહિતી મળતી નથી. વધુ સ્થિતિમાંથી આગામી () પદ્ધતિ પર કૉલ કરવો સલામત છે, પરંતુ જો વધુ ઘટકો અસ્તિત્વમાં હોય તો તે અજ્ઞાત બની જાય છે, તેથી મોનિટર પ્રારંભિક અજ્ઞાત સ્થિતિમાં ફરીથી પ્રવેશ કરે છે. છેવટે, 'કંઈ નહીં' સ્થિતિમાંથી આગામી () પદ્ધતિને કૉલ કરવાથી ભૂલ સ્થિતિ દાખલ થાય છે. પેરામેટ્રિક પાસ્ટ ટાઇમ રેખીય ટેમ્પોરલ લોજિકનો ઉપયોગ કરીને આ ગુણધર્મની રજૂઆત નીચે મુજબ છે. આ સૂત્ર કહે છે કે આગલી () પદ્ધતિ પર કોઈપણ કૉલ તરત જ કૉલ ટુ હેઝ નેક્સ્ટ () પદ્ધતિથી આગળ હોવો જોઈએ જે સાચું પરત કરે છે. અહીંનો ગુણધર્મ Iterator i માં પેરામેટ્રિક છે. વૈચારિક રીતે, આનો અર્થ એ છે કે પરીક્ષણ કાર્યક્રમમાં દરેક સંભવિત ઇટરેટર માટે મોનિટરની એક નકલ હશે, જો કે રનટાઇમ ચકાસણી પ્રણાલીઓને તેમના પેરામેટ્રિક મોનિટરને આ રીતે અમલમાં મૂકવાની જરૂર નથી. જ્યારે સૂત્રનું ઉલ્લંઘન કરવામાં આવે ત્યારે આ ગુણધર્મ માટેનું મોનિટર હેન્ડલરને ટ્રિગર કરવા માટે સેટ કરવામાં આવશે (સમાનરૂપે જ્યારે મર્યાદિત સ્થિતિ મશીન ભૂલની સ્થિતિમાં પ્રવેશ કરે છે), જે ત્યારે થશે જ્યારે પ્રથમ કૉલ કર્યા વિના આગામી () ને આગામી () હોય, અથવા જ્યારે આગામી () ને આગામી () પહેલાં કૉલ કરવામાં આવે, પરંતુ ખોટા પરત કરવામાં આવે. અનસેફએનમ જાવામાં વેક્ટર વર્ગ તેના ઘટકો પર પુનરાવર્તન કરવા માટે બે માધ્યમો ધરાવે છે. અગાઉના ઉદાહરણમાં બતાવ્યા પ્રમાણે કોઈ વ્યક્તિ Iterator ઈન્ટરફેસનો ઉપયોગ કરી શકે છે, અથવા કોઈ વ્યક્તિ એન્યુમરેશન ઈન્ટરફેસનો ઉપયોગ કરી શકે છે. ઇટરેટર ઇન્ટરફેસ માટે દૂર કરવાની પદ્ધતિનો ઉમેરો કરવા ઉપરાંત, મુખ્ય તફાવત એ છે કે ઇટરેટર "ફેલ ફાસ્ટ" છે જ્યારે ગણના નથી. આનો અર્થ એ છે કે જ્યારે કોઈ Iterator નો ઉપયોગ કરીને વેક્ટર પર પુનરાવર્તન કરી રહ્યું હોય ત્યારે જો કોઈ વેક્ટરમાં ફેરફાર કરે છે (Iterator દૂર કરવાની પદ્ધતિનો ઉપયોગ કરવા સિવાય), તો સમવર્તી ફેરફાર અપવાદ ફેંકવામાં આવે છે. જો કે, ગણતરીનો ઉપયોગ કરતી વખતે ઉલ્લેખ કર્યો છે તેમ આ કેસ નથી. આનું પરિણામ પ્રોગ્રામમાંથી બિન-નિર્ધારિત પરિણામોમાં પરિણમી શકે છે કારણ કે ગણતરીના દ્રષ્ટિકોણથી વેક્ટર અસંગત સ્થિતિમાં રહે છે. વારસાગત કાર્યક્રમો માટે કે જે હજુ પણ ગણના ઈન્ટરફેસનો ઉપયોગ કરે છે, જ્યારે તેમના અંતર્ગત વેક્ટરમાં ફેરફાર કરવામાં આવે ત્યારે ગણતરીઓનો ઉપયોગ થતો નથી તે લાગુ કરવાની ઇચ્છા રાખી શકાય છે. આ વર્તણૂકને લાગુ કરવા માટે નીચેની પેરામેટ્રિક નિયમિત પેટર્નનો ઉપયોગ કરી શકાય છેઃ (e = v.elements ()) (e.nextElement ()) * v.update () e.nextElement () આ પેટર્ન એન્યુમરેશન અને વેક્ટર બંનેમાં પેરામેટ્રિક છે. સાહજિક રીતે, અને ઉપરની રનટાઇમ ચકાસણી પ્રણાલીઓએ તેમના પેરામેટ્રિક મોનિટરને આ રીતે અમલમાં મૂકવાની જરૂર નથી, આ ગુણધર્મ માટે પેરામેટ્રિક મોનિટરને વેક્ટર અને ગણતરીની દરેક સંભવિત જોડી માટે બિન-પેરામેટ્રિક મોનિટર ઉદાહરણ બનાવવા અને તેનું ધ્યાન રાખવા તરીકે વિચારી શકાય છે. કેટલીક ઘટનાઓ એક જ સમયે અનેક મોનિટર સાથે સંબંધિત હોઈ શકે છે, જેમ કે v.update (), તેથી રનટાઇમ ચકાસણી પ્રણાલીએ (ફરીથી કલ્પનાત્મક રીતે) તેમને તમામ રસ ધરાવતા મોનિટરને મોકલવી આવશ્યક છે. અહીં ગુણધર્મ સ્પષ્ટ કરવામાં આવ્યો છે જેથી તે કાર્યક્રમની ખરાબ વર્તણૂકો દર્શાવે. આ ગુણધર્મ, પછી, પેટર્નની મેળ માટે નિરીક્ષણ કરવું આવશ્યક છે. જમણી બાજુની આકૃતિ જાવા કોડ દર્શાવે છે જે આ પેટર્ન સાથે મેળ ખાય છે, આમ મિલકતનું ઉલ્લંઘન કરે છે. વેક્ટર, v, ગણતરી પછી અપડેટ કરવામાં આવે છે, e, બનાવવામાં આવે છે, અને પછી e નો ઉપયોગ થાય છે. સેફલોક અગાઉના બે ઉદાહરણો મર્યાદિત સ્થિતિ ગુણધર્મો દર્શાવે છે, પરંતુ રનટાઇમ ચકાસણીમાં ઉપયોગમાં લેવાતા ગુણધર્મો વધુ જટિલ હોઈ શકે છે. સેફલોક પ્રોપર્ટી એ નીતિ લાગુ કરે છે કે આપેલ પદ્ધતિ કૉલમાં (પુનરાવર્તક) લોક વર્ગના સંપાદન અને પ્રકાશનની સંખ્યા મેળ ખાય છે. આ, અલબત્ત, જે પદ્ધતિઓ તેમને પ્રાપ્ત કરે છે તેના સિવાય અન્ય પદ્ધતિઓમાં તાળાઓને મુક્ત કરવાની મંજૂરી આપતું નથી, પરંતુ પરીક્ષણ કરાયેલ પ્રણાલીને હાંસલ કરવા માટે આ સંભવતઃ એક ઇચ્છનીય લક્ષ્ય છે. નીચે પેરામેટ્રિક સંદર્ભ-મુક્ત પેટર્નનો ઉપયોગ કરીને આ પ્રોપર્ટીનું સ્પષ્ટીકરણ છેઃ થ્રેડ t, લોક l: S → ε | S પ્રારંભ (t) S અંત (t) | S l.acquire (t) S l.release (t) આ પેટર્ન દરેક થ્રેડ અને લોક (ખાલી ક્રમ છે) માટે નેસ્ટેડ પ્રારંભ/અંત અને સંપાદન/પ્રકાશન જોડીઓના સંતુલિત ક્રમને સ્પષ્ટ કરે છે. અહીં પ્રારંભ અને અંત કાર્યક્રમની દરેક પદ્ધતિની શરૂઆત અને અંતનો સંદર્ભ આપે છે (પોતાને પ્રાપ્ત કરવા અને મુક્ત કરવાના કૉલ્સ સિવાય). તેઓ થ્રેડમાં પેરામેટ્રિક છે કારણ કે પદ્ધતિઓની શરૂઆત અને અંતને જો અને માત્ર ત્યારે જ સાંકળવા જરૂરી છે જો તે એક જ થ્રેડ સાથે સંબંધિત હોય. આ જ કારણસર થ્રેડમાં એક્વાઇર અને રિલીઝ ઇવેન્ટ્સ પણ પેરામેટ્રિક છે. વધુમાં, તેઓ લોકમાં પેરામેટ્રિક છે કારણ કે આપણે એક લોકના પ્રકાશનને બીજાના સંપાદન સાથે સાંકળવા માંગતા નથી. આત્યંતિક રીતે, શક્ય છે કે થ્રેડ અને લોકના દરેક સંભવિત સંયોજન માટે મિલકતનો એક દાખલો હશે, એટલે કે, સંદર્ભ-મુક્ત પદચ્છેદન પદ્ધતિની એક નકલ; આ ફરીથી, સહજ ભાવે થાય છે, કારણ કે રનટાઇમ ચકાસણી પ્રણાલીઓ સમાન કાર્યક્ષમતાને અલગ રીતે અમલમાં મૂકી શકે છે. ઉદાહરણ તરીકે, જો સિસ્ટમમાં થ્રેડ્સ હોય, અને તાળાઓ સાથે અને, તો પછી જોડીઓ માટે ગુણધર્મના ઉદાહરણો જાળવવા શક્ય છે <,>, <,>, <,>, <,>, <,>, <,>, <,>, અને <,>. પેટર્ન સાથે મેળ ખાતી નિષ્ફળતાઓ માટે આ ગુણધર્મનું નિરીક્ષણ કરવું જોઈએ કારણ કે પેટર્ન યોગ્ય વર્તનને નિર્દિષ્ટ કરે છે. જમણી બાજુની આકૃતિ એક નિશાન દર્શાવે છે જે આ મિલકતના બે ઉલ્લંઘનનું કારણ બને છે. આકૃતિમાં નીચેનાં પગલાં પદ્ધતિની શરૂઆત દર્શાવે છે, જ્યારે ઉપરનાં પગલાં અંત દર્શાવે છે. આકૃતિમાં ગ્રે તીર એ જ લોકના આપેલ એક્વાઇર્સ અને રીલીઝ વચ્ચેનું મેળ દર્શાવે છે. સરળતા માટે, ટ્રેસ માત્ર એક થ્રેડ અને એક લોક દર્શાવે છે. સંશોધન પડકારો અને કાર્યક્રમો મોટા ભાગના રનટાઇમ ચકાસણી સંશોધન નીચે સૂચિબદ્ધ એક અથવા વધુ વિષયોને સંબોધિત કરે છે. રનટાઇમ ઓવરહેડ ઘટાડવું એક્ઝિક્યુટિવ સિસ્ટમના નિરીક્ષણમાં સામાન્ય રીતે કેટલાક રનટાઇમ ઓવરહેડનો સમાવેશ થાય છે (હાર્ડવેર મોનિટર અપવાદ બની શકે છે). રનટાઇમ વેરિફિકેશન ટૂલ્સના ઓવરહેડને શક્ય તેટલું ઘટાડવું મહત્વપૂર્ણ છે, ખાસ કરીને જ્યારે જનરેટેડ મોનિટર સિસ્ટમ સાથે તૈનાત કરવામાં આવે છે. રનટાઇમ ઓવરહેડ ઘટાડવાની તકનીકોમાં નીચેનાનો સમાવેશ થાય છેઃ સુધારેલ સાધનસામગ્રી. એક્ઝિક્યુટિવ સિસ્ટમમાંથી ઇવેન્ટ્સને બહાર કાઢવી અને તેને મોનિટર પર મોકલવી જો નિષ્કપટ રીતે કરવામાં આવે તો મોટા રનટાઇમ ઓવરહેડ પેદા કરી શકે છે. કોઈપણ રનટાઇમ ચકાસણી સાધન માટે સારું સિસ્ટમ ઇન્સ્ટ્રુમેન્ટેશન મહત્વપૂર્ણ છે, સિવાય કે સાધન સ્પષ્ટપણે હાલના એક્ઝેક્યુશન લોગને લક્ષ્ય બનાવે. વર્તમાન ઉપયોગમાં ઘણા ઇન્સ્ટ્રુમેન્ટેશન અભિગમો છે, દરેક તેના ફાયદા અને ગેરફાયદા સાથે, કસ્ટમ અથવા મેન્યુઅલ ઇન્સ્ટ્રુમેન્ટેશનથી લઈને વિશિષ્ટ પુસ્તકાલયો સુધી, પાસા-લક્ષી ભાષાઓમાં સંકલન કરવા, વર્ચ્યુઅલ મશીનને વધારવા, હાર્ડવેર સપોર્ટ પર નિર્માણ કરવા. સ્થિર વિશ્લેષણ સાથે સંયોજન. સ્થિર અને ગતિશીલ વિશ્લેષણોનું એક સામાન્ય સંયોજન, ખાસ કરીને કમ્પાઇલર્સમાં જોવા મળે છે, તે તમામ આવશ્યકતાઓનું નિરીક્ષણ કરવાનું છે જે સ્થિર રીતે વિસર્જિત કરી શકાતી નથી. ડ્યુઅલ અને આખરે સમકક્ષ અભિગમ રનટાઇમ ચકાસણીમાં ધોરણ બની જાય છે, એટલે કે અન્યથા સંપૂર્ણ દેખરેખની માત્રાને ઘટાડવા માટે સ્થિર વિશ્લેષણનો ઉપયોગ કરવો. સ્થિર વિશ્લેષણ દેખરેખ રાખવા માટે મિલકત પર અને દેખરેખ રાખવા માટે સિસ્ટમ પર બંને કરી શકાય છે. દેખરેખ રાખવા માટેની મિલકતનું સ્થિર વિશ્લેષણ એ જાહેર કરી શકે છે કે અમુક ઘટનાઓનું નિરીક્ષણ કરવું બિનજરૂરી છે, ચોક્કસ મોનિટરની રચનામાં વિલંબ થઈ શકે છે, અને અમુક વર્તમાન મોનિટર ક્યારેય ટ્રિગર નહીં કરે અને તેથી કચરો એકત્રિત થઈ શકે છે. મોનિટર કરવા માટે સિસ્ટમનું સ્થિર વિશ્લેષણ એવા કોડને શોધી શકે છે જે મોનિટરને ક્યારેય પ્રભાવિત કરી શકતા નથી. ઉદાહરણ તરીકે, ઉપરની હેસનેક્સ્ટ પ્રોપર્ટીને મોનિટર કરતી વખતે, કોડના ઇન્સ્ટ્રુમેન્ટ ભાગોની જરૂર નથી જ્યાં દરેક કોલ i.next () તરત જ કોઈ પણ પાથ પર કોલ i.hasnext () દ્વારા આગળ આવે છે જે સાચું (કંટ્રોલ-ફ્લો ગ્રાફ પર દૃશ્યમાન) વળતર આપે છે. કાર્યક્ષમ મોનિટર જનરેશન અને મેનેજમેન્ટ. ઉપરના ઉદાહરણો જેવા પેરામેટ્રિક ગુણધર્મોનું નિરીક્ષણ કરતી વખતે, મોનિટરિંગ સિસ્ટમને દરેક પેરામીટર ઉદાહરણના સંદર્ભમાં મોનિટર્ડ પ્રોપર્ટીના સ્થિતિનું ધ્યાન રાખવાની જરૂર છે. આવા ઉદાહરણોની સંખ્યા સૈદ્ધાંતિક રીતે અમર્યાદિત છે અને વ્યવહારમાં પ્રચંડ હોય છે. એક મહત્વપૂર્ણ સંશોધન પડકાર એ છે કે અવલોકન કરેલી ઘટનાઓને ચોક્કસપણે તે કિસ્સાઓમાં કેવી રીતે અસરકારક રીતે મોકલવી કે જેની તેમને જરૂર છે. સંબંધિત પડકાર એ છે કે આવા ઉદાહરણોની સંખ્યાને કેવી રીતે ઓછી રાખવી (જેથી મોકલવાનું ઝડપી બને), અથવા બીજા શબ્દોમાં કહીએ તો, શક્ય તેટલા લાંબા સમય સુધી બિનજરૂરી ઉદાહરણો બનાવવાનું કેવી રીતે ટાળવું અને, દ્વિસંગી રીતે, પહેલેથી જ બનાવેલા ઉદાહરણો બિનજરૂરી બને તેટલી વહેલી તકે કેવી રીતે દૂર કરવા. છેવટે, પેરામેટ્રિક મોનિટરિંગ અલ્ગોરિધમ્સ સામાન્ય રીતે નોન-પેરામેટ્રિક મોનિટર બનાવવા માટે સમાન અલ્ગોરિધમ્સને સામાન્ય બનાવે છે. આમ, પેદા થયેલ બિન-પેરામેટ્રિક મોનિટરની ગુણવત્તા પરિણામી પેરામેટ્રિક મોનિટરની ગુણવત્તા નક્કી કરે છે. જો કે, અન્ય ચકાસણી અભિગમો (દા. ત., મોડેલ ચેકિંગ) થી વિપરીત, રનટાઇમ ચકાસણીમાં સ્થિતિઓની સંખ્યા અથવા જનરેટેડ મોનિટરનું કદ ઓછું મહત્વનું છે; હકીકતમાં, કેટલાક મોનિટરમાં અનંત સંખ્યાબંધ સ્થિતિઓ હોઈ શકે છે, જેમ કે ઉપરની સેફલોક પ્રોપર્ટી માટે, જો કે કોઈપણ સમયે માત્ર મર્યાદિત સંખ્યામાં સ્થિતિઓ આવી હોઈ શકે છે. જ્યારે મોનિટર એક્ઝિક્યુટિવ સિસ્ટમમાંથી ઇવેન્ટ મેળવે છે ત્યારે તે રાજ્યમાંથી તેની આગામી સ્થિતિમાં કેટલી અસરકારક રીતે સંક્રમણ કરે છે તે મહત્વનું છે. તમામ ઔપચારિક અભિગમોમાં એક મુખ્ય વ્યવહારુ અવરોધ એ છે કે તેમના વપરાશકર્તાઓ સ્પષ્ટીકરણો વાંચવા અથવા લખવા માટે અનિચ્છા ધરાવે છે, અથવા જાણતા નથી અને શીખવા માંગતા નથી. કેટલાક કિસ્સાઓમાં સ્પષ્ટીકરણો ગર્ભિત હોય છે, જેમ કે ડેડલોક અને ડેટા-રેસ માટે, પરંતુ મોટાભાગના કિસ્સાઓમાં તેમને ઉત્પન્ન કરવાની જરૂર હોય છે. વધારાની અસુવિધા, ખાસ કરીને રનટાઇમ ચકાસણીના સંદર્ભમાં, એ છે કે ઘણી હાલની સ્પષ્ટીકરણ ભાષાઓ ઇચ્છિત ગુણધર્મોને પકડવા માટે પૂરતી અભિવ્યક્ત નથી. વધુ સારી ઔપચારિકતાઓ. રનટાઇમ ચકાસણી સમુદાયમાં નોંધપાત્ર પ્રમાણમાં કામ સ્પષ્ટીકરણ ઔપચારિકતાઓની રચનામાં મૂકવામાં આવ્યું છે જે પરંપરાગત સ્પષ્ટીકરણ ઔપચારિકતાઓ કરતાં વધુ સારી રીતે રનટાઇમ ચકાસણી માટે ઇચ્છિત એપ્લિકેશન ડોમેન્સમાં બંધબેસે છે. આમાંના કેટલાકમાં પરંપરાગત ઔપચારિકતાઓમાં સહેજ અથવા કોઈ વાક્યરચના ફેરફારો નથી, પરંતુ માત્ર તેમના શબ્દાર્થમાં ફેરફારો (દા. ત., મર્યાદિત ટ્રેસ વિરુદ્ધ અનંત ટ્રેસ શબ્દાર્થ, વગેરે) નો સમાવેશ થાય છે. અને તેમના અમલીકરણ માટે (બુચી ઓટોમેટા, વગેરેને બદલે ઑપ્ટિમાઇઝ કરેલ મર્યાદિત રાજ્ય મશીનો). અન્ય લોકો હાલની ઔપચારિકતાઓને એવી સુવિધાઓ સાથે વિસ્તરે છે જે રનટાઇમ ચકાસણી માટે અનુકૂળ હોય પરંતુ અન્ય ચકાસણી અભિગમો માટે સરળતાથી ન પણ હોઈ શકે, જેમ કે પરિમાણો ઉમેરવા, જેમ કે ઉપરના ઉદાહરણોમાં જોવા મળે છે. છેવટે, સ્પષ્ટીકરણની ઔપચારિકતાઓ છે જે ખાસ કરીને રનટાઇમ ચકાસણી માટે તૈયાર કરવામાં આવી છે, જે આ ડોમેન માટે તેમનું શ્રેષ્ઠ હાંસલ કરવાનો પ્રયાસ કરે છે અને અન્ય એપ્લિકેશન ડોમેન્સ વિશે બહુ ઓછી કાળજી રાખે છે. રનટાઇમ ચકાસણી માટે સાર્વત્રિક રીતે વધુ સારી અથવા ડોમેન-ખાસ કરીને વધુ સારી સ્પષ્ટીકરણ ઔપચારિકતાઓની રચના કરવી એ તેના મુખ્ય સંશોધન પડકારોમાંનો એક છે અને તે ચાલુ રહેશે. માત્રાત્મક ગુણધર્મો. અન્ય ચકાસણી અભિગમોની તુલનામાં, રનટાઇમ ચકાસણી સિસ્ટમ સ્ટેટ વેરિયેબલ્સના નક્કર મૂલ્યો પર કામ કરવા માટે સક્ષમ છે, જે પ્રોગ્રામના અમલીકરણ વિશે આંકડાકીય માહિતી એકત્રિત કરવાનું શક્ય બનાવે છે અને જટિલ માત્રાત્મક ગુણધર્મોનું મૂલ્યાંકન કરવા માટે આ માહિતીનો ઉપયોગ કરે છે. વધુ અભિવ્યક્ત મિલકત ભાષાઓ જરૂરી છે જે આપણને આ ક્ષમતાનો સંપૂર્ણ ઉપયોગ કરવાની મંજૂરી આપશે. વધુ સારા ઇન્ટરફેસ. બિન-નિષ્ણાતો માટે મિલકતની વિશિષ્ટતાઓ વાંચવી અને લખવી સરળ નથી. નિષ્ણાતો પણ ઘણીવાર થોડી મિનિટો માટે પ્રમાણમાં નાના અસ્થાયી તર્ક સૂત્રોને જુએ છે (ખાસ કરીને જ્યારે તેઓ "ટિલ" ઓપરેટરોને નેસ્ટ કરે છે). એક મહત્વપૂર્ણ સંશોધન ક્ષેત્ર વિવિધ સ્પષ્ટીકરણ ઔપચારિકતાઓ માટે શક્તિશાળી વપરાશકર્તા ઇન્ટરફેસો વિકસાવવાનું છે જે વપરાશકર્તાઓને વધુ સરળતાથી સમજવા, લખવા અને કદાચ ગુણધર્મોની કલ્પના પણ કરી શકે છે. ખાણકામની વિશિષ્ટતાઓ. વપરાશકર્તાઓને સ્પષ્ટીકરણો ઉત્પન્ન કરવામાં મદદ કરવા માટે ગમે તે ટૂલ સપોર્ટ ઉપલબ્ધ હોય, તેઓ લગભગ હંમેશા કોઈ પણ સ્પષ્ટીકરણો લખવા માટે વધુ ખુશ થશે, ખાસ કરીને જ્યારે તેઓ તુચ્છ હોય. સદનસીબે, ત્યાં ઘણા બધા કાર્યક્રમો છે જે ક્રિયાઓ/ઘટનાઓનો યોગ્ય ઉપયોગ કરે છે જેના વિશે કોઈ વ્યક્તિ ગુણધર્મો મેળવવા માંગે છે. જો એમ હોય તો, તે કલ્પના કરી શકાય છે કે કોઈ વ્યક્તિ તેમની પાસેથી ઇચ્છિત ગુણધર્મો શીખીને તે સાચા કાર્યક્રમોનો ઉપયોગ કરવા માંગે છે. જો આપમેળે ખોદકામ કરાયેલ સ્પષ્ટીકરણોની એકંદર ગુણવત્તા મેન્યુઅલી ઉત્પાદિત સ્પષ્ટીકરણો કરતા ઓછી હોવાની અપેક્ષા હોય, તો પણ તે પછીના માટે પ્રારંભિક બિંદુ તરીકે અથવા ખાસ કરીને ભૂલો શોધવાના હેતુથી સ્વચાલિત રનટાઇમ ચકાસણી સાધનોના આધાર તરીકે કામ કરી શકે છે (જ્યાં નબળું સ્પષ્ટીકરણો ખોટા હકારાત્મક અથવા નકારાત્મકમાં ફેરવાય છે, જે ઘણીવાર પરીક્ષણ દરમિયાન સ્વીકાર્ય હોય છે). એક્ઝેક્યુશન મોડેલ્સ અને આગાહીયુક્ત વિશ્લેષણ ભૂલો શોધવા માટે રનટાઇમ ચકાસણીકર્તાની ક્ષમતા એક્ઝેક્યુશન ટ્રેસનું વિશ્લેષણ કરવાની તેની ક્ષમતા પર સખત રીતે આધાર રાખે છે. જ્યારે મોનિટર સિસ્ટમ સાથે તૈનાત કરવામાં આવે છે, ત્યારે ઇન્સ્ટ્રુમેન્ટેશન સામાન્ય રીતે ન્યૂનતમ હોય છે અને રનટાઇમ ઓવરહેડ ઓછો રાખવા માટે એક્ઝેક્યુશન ટ્રેસ શક્ય તેટલા સરળ હોય છે. જ્યારે પરીક્ષણ માટે રનટાઇમ ચકાસણીનો ઉપયોગ કરવામાં આવે છે, ત્યારે કોઈ વધુ વ્યાપક સાધનો પરવડી શકે છે જે મહત્વપૂર્ણ સિસ્ટમ માહિતી સાથે ઇવેન્ટ્સને વધારે છે જેનો ઉપયોગ મોનિટર દ્વારા એક્ઝિક્યુટિવ સિસ્ટમના વધુ શુદ્ધ મોડેલ્સના નિર્માણ અને વિશ્લેષણ માટે કરી શકાય છે. ઉદાહરણ તરીકે, વેક્ટર ઘડિયાળની માહિતી સાથે અને માહિતી અને નિયંત્રણ પ્રવાહની માહિતી સાથે ઘટનાઓને વધારવાથી મોનિટરને ચાલતી પ્રણાલીનું કારણભૂત મોડેલ બનાવવાની મંજૂરી મળે છે જેમાં અવલોકન કરેલ અમલ માત્ર એક સંભવિત ઉદાહરણ હતું. મોડેલ સાથે સુસંગત હોય તેવી ઘટનાઓનું અન્ય કોઈપણ ક્રમચય એ સિસ્ટમનો શક્ય અમલ છે, જે એક અલગ થ્રેડ ઇન્ટરલીવિંગ હેઠળ થઈ શકે છે. આવા અનુમાનિત અમલમાં મિલકતના ઉલ્લંઘનને શોધી કાઢવાથી (તેમની દેખરેખ રાખીને) મોનિટર એવી ભૂલોની આગાહી કરે છે જે અવલોકન કરેલા અમલમાં ન થઈ હોય, પરંતુ તે જ સિસ્ટમના અન્ય અમલમાં થઈ શકે છે. એક મહત્વપૂર્ણ સંશોધન પડકાર એ છે કે અમલના નિશાનમાંથી મોડેલો કાઢવા જેમાં શક્ય તેટલા અન્ય અમલના નિશાનનો સમાવેશ થાય છે. વર્તણૂકમાં ફેરફાર પરીક્ષણ અથવા સંપૂર્ણ ચકાસણીથી વિપરીત, રનટાઇમ ચકાસણી સિસ્ટમને પુનઃરૂપરેખાંકન, માઇક્રો-રીસેટ દ્વારા અથવા કેટલીકવાર ટ્યુનિંગ અથવા સ્ટીયરિંગ તરીકે ઓળખાતી વધુ સારી હસ્તક્ષેપ પદ્ધતિઓ દ્વારા શોધાયેલ ઉલ્લંઘનોમાંથી પુનઃપ્રાપ્ત કરવાની મંજૂરી આપવાનું વચન ધરાવે છે. રનટાઇમ ચકાસણીના સખત માળખામાં આ તકનીકોનો અમલ વધારાના પડકારોને જન્મ આપે છે. ક્રિયાઓનું સ્પષ્ટીકરણ. વપરાશકર્તાને અપ્રસ્તુત અમલીકરણ વિગતો જાણવાની જરૂર ન હોય તેવી અમૂર્ત પર્યાપ્ત ફેશનમાં કરવા માટેના ફેરફારને સ્પષ્ટ કરવાની જરૂર છે. વધુમાં, સિસ્ટમની અખંડિતતા જાળવવા માટે આવા ફેરફાર ક્યારે થઈ શકે તે સ્પષ્ટ કરવાની જરૂર છે. હસ્તક્ષેપની અસરો વિશે તર્ક કરવો. એ જાણવું અગત્યનું છે કે હસ્તક્ષેપથી પરિસ્થિતિ સુધરે છે, અથવા ઓછામાં ઓછું પરિસ્થિતિ વધુ ખરાબ થતી નથી. ક્રિયા ઇન્ટરફેસો. મોનિટરિંગ માટેના ઇન્સ્ટ્રુમેન્ટેશનની જેમ, આપણે સિસ્ટમને એક્શન ઇન્વોકેશન પ્રાપ્ત કરવા માટે સક્ષમ કરવાની જરૂર છે. આમંત્રણ પદ્ધતિઓ આવશ્યકપણે પ્રણાલીના અમલીકરણની વિગતો પર આધારિત હશે. જો કે, સ્પષ્ટીકરણ સ્તર પર, આપણે વપરાશકર્તાને કઈ શરતો હેઠળ કઈ ક્રિયાઓ લાગુ કરવી જોઈએ તે સ્પષ્ટ કરીને સિસ્ટમને પ્રતિસાદ પ્રદાન કરવાની ઘોષણાત્મક રીત પ્રદાન કરવાની જરૂર છે. રનટાઇમ વેરિફિકેશનમાં સંબંધિત કાર્ય એસ્પેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ સંશોધકોએ પ્રોગ્રામ ઇન્સ્ટ્રુમેન્ટેશનને મોડ્યુલર રીતે વ્યાખ્યાયિત કરવા માટેની તકનીક તરીકે એસ્પેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગનો ઉપયોગ કરવાની સંભાવનાને માન્યતા આપી. એસ્પેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ (એઓપી) સામાન્ય રીતે ક્રોસ કટિંગની ચિંતાઓના મોડ્યુલરાઇઝેશનને પ્રોત્સાહન આપે છે. રનટાઇમ ચકાસણી સ્વાભાવિક રીતે આવી જ એક ચિંતા છે અને તેથી એઓપીના અમુક ગુણધર્મોથી લાભ મેળવી શકે છે. એસ્પેક્ટ-ઓરિએન્ટેડ મોનિટર વ્યાખ્યાઓ મોટે ભાગે ઘોષણાત્મક હોય છે, અને તેથી અનિવાર્ય પ્રોગ્રામિંગ ભાષામાં લખાયેલા પ્રોગ્રામ પરિવર્તન દ્વારા વ્યક્ત કરાયેલા ઇન્સ્ટ્રુમેન્ટેશન કરતાં તર્ક કરવાનું સરળ હોય છે. વધુમાં, સ્થિર વિશ્લેષણ પ્રોગ્રામ ઇન્સ્ટ્રુમેન્ટેશનના અન્ય સ્વરૂપો કરતાં વધુ સરળતાથી દેખરેખ પાસાઓ વિશે તર્ક કરી શકે છે, કારણ કે તમામ ઇન્સ્ટ્રુમેન્ટેશન એક જ પાસામાં સમાયેલ છે. ઘણા વર્તમાન રનટાઇમ ચકાસણી સાધનો તેથી સ્પષ્ટીકરણ કમ્પાઇલર્સના સ્વરૂપમાં બનાવવામાં આવ્યા છે, જે ઇનપુટ તરીકે અભિવ્યક્ત ઉચ્ચ-સ્તરના સ્પષ્ટીકરણને લે છે અને કેટલાક પાસા-લક્ષી પ્રોગ્રામિંગ ભાષા (જેમ કે એસ્પેક્ટજે) માં લખેલા આઉટપુટ કોડ તરીકે ઉત્પન્ન કરે છે. ઔપચારિક ચકાસણી સાથે જોડાણ રનટાઇમ ચકાસણી, જો સચોટ પુનઃપ્રાપ્તિ કોડ સાથે સંયોજનમાં ઉપયોગમાં લેવાય છે, તો પ્રોગ્રામ ચકાસણી માટે અમૂલ્ય માળખું પ્રદાન કરી શકે છે, જે પછીની જટિલતાને નોંધપાત્ર રીતે ઘટાડી શકે છે. ઉદાહરણ તરીકે, ઔપચારિક રીતે હીપ-સૉર્ટ અલ્ગોરિધમનોની ચકાસણી કરવી ખૂબ જ પડકારજનક છે. તેને ચકાસવા માટેની એક ઓછી પડકારજનક તકનીક એ છે કે તેના આઉટપુટને સૉર્ટ કરવા માટે મોનિટર કરવું (એક રેખીય જટિલતા મોનિટર) અને, જો સૉર્ટ ન કરવામાં આવે, તો પછી તેને કેટલીક સરળતાથી ચકાસી શકાય તેવી પ્રક્રિયાનો ઉપયોગ કરીને સૉર્ટ કરો, જેમ કે નિવેશ સૉર્ટ. પરિણામી સૉર્ટિંગ પ્રોગ્રામ હવે વધુ સરળતાથી ચકાસી શકાય તેવો છે, હીપ-સૉર્ટમાંથી માત્ર એક જ વસ્તુ જરૂરી છે કે તે મલ્ટિસેટ તરીકે ગણવામાં આવતા મૂળ તત્વોનો નાશ કરતું નથી, જે સાબિત કરવું ખૂબ સરળ છે. બીજી દિશાથી જોતાં, ઔપચારિક ચકાસણીને બદલે સ્થિર વિશ્લેષણ માટે ઉપર સૂચવ્યા મુજબ, રનટાઇમ ચકાસણીના ઓવરહેડને ઘટાડવા માટે ઔપચારિક ચકાસણીનો ઉપયોગ કરી શકાય છે. ખરેખર, કોઈ પણ વ્યક્તિ સંપૂર્ણ રનટાઇમ ચકાસાયેલ, પરંતુ કદાચ ધીમા પ્રોગ્રામથી શરૂઆત કરી શકે છે. પછી મોનિટરને ડિસ્ચાર્જ કરવા માટે ઔપચારિક ચકાસણી (અથવા સ્થિર વિશ્લેષણ) નો ઉપયોગ કરી શકાય છે, તે જ રીતે કમ્પાઇલર પ્રકાર શુદ્ધતા અથવા મેમરી સલામતીના રનટાઇમ તપાસને ડિસ્ચાર્જ કરવા માટે સ્થિર વિશ્લેષણનો ઉપયોગ કરે છે. કવરેજમાં વધારો વધુ પરંપરાગત ચકાસણી અભિગમોની તુલનામાં, રનટાઇમ ચકાસણીનો તાત્કાલિક ગેરલાભ તેની ઓછી કવરેજ છે. જ્યારે રનટાઇમ મોનિટર સિસ્ટમ સાથે ગોઠવવામાં આવે ત્યારે આ સમસ્યા નથી (જ્યારે પ્રોપર્ટીનું ઉલ્લંઘન થાય ત્યારે ચલાવવા માટે યોગ્ય પુનઃપ્રાપ્તિ કોડ સાથે), પરંતુ જ્યારે સિસ્ટમમાં ભૂલો શોધવા માટે તેનો ઉપયોગ કરવામાં આવે ત્યારે તે રનટાઇમ ચકાસણીની અસરકારકતાને મર્યાદિત કરી શકે છે. ભૂલ શોધવાના હેતુઓ માટે રનટાઇમ ચકાસણીનું કવરેજ વધારવા માટેની તકનીકોમાં નીચેનાનો સમાવેશ થાય છેઃ ઇનપુટ જનરેશન. તે જાણીતું છે કે ઇનપુટ્સનો સારો સમૂહ પેદા કરે છે (પ્રોગ્રામ ઇનપુટ ચલ મૂલ્યો, સિસ્ટમ કૉલ મૂલ્યો, થ્રેડ સમયપત્રક, વગેરે). તે પરીક્ષણની અસરકારકતામાં ઘણો વધારો કરી શકે છે. તે ભૂલ શોધવા માટે ઉપયોગમાં લેવાતી રનટાઇમ ચકાસણી માટે પણ સાચું છે, પરંતુ ઇનપુટ જનરેશન પ્રક્રિયાને ચલાવવા માટે પ્રોગ્રામ કોડનો ઉપયોગ કરવા ઉપરાંત, રનટાઇમ ચકાસણીમાં જ્યારે ઉપલબ્ધ હોય ત્યારે મિલકતની વિશિષ્ટતાઓનો પણ ઉપયોગ કરી શકાય છે, અને ઇચ્છિત વર્તણૂકોને પ્રેરિત કરવા માટે દેખરેખ તકનીકોનો પણ ઉપયોગ કરી શકે છે. રનટાઇમ ચકાસણીનો આ ઉપયોગ તેને મોડેલ-આધારિત પરીક્ષણ સાથે નજીકથી સંબંધિત બનાવે છે, જો કે રનટાઇમ ચકાસણી સ્પષ્ટીકરણો સામાન્ય રીતે સામાન્ય હેતુ માટે હોય છે, જરૂરી નથી કે પરીક્ષણના કારણોસર તૈયાર કરવામાં આવે. ઉદાહરણ તરીકે, ધ્યાનમાં લો કે કોઈ વ્યક્તિ ઉપરના સામાન્ય હેતુના અનસેફએનમ ગુણધર્મને ચકાસવા માંગે છે. માત્ર સિસ્ટમ એક્ઝેક્યુશનને નિષ્ક્રિય રીતે અવલોકન કરવા માટે ઉપરોક્ત મોનિટર જનરેટ કરવાને બદલે, કોઈ એક સ્માર્ટ મોનિટર જનરેટ કરી શકે છે જે બીજી e.nextElement () ઇવેન્ટ જનરેટ કરવાનો પ્રયાસ કરી રહેલા થ્રેડને ફ્રીઝ કરે છે (તે જનરેટ કરે તે પહેલાં), અન્ય થ્રેડોને એવી આશામાં એક્ઝેક્યુટ કરવા દે છે કે તેમાંથી એક v.update () ઇવેન્ટ જનરેટ કરી શકે છે, જે કિસ્સામાં ભૂલ મળી આવી છે. ગતિશીલ પ્રતીકાત્મક અમલ. સાંકેતિક અમલમાં કાર્યક્રમો પ્રતીકાત્મક રીતે ચલાવવામાં આવે છે અને તેનું નિરીક્ષણ કરવામાં આવે છે, એટલે કે, નક્કર ઇનપુટ્સ વિના. સિસ્ટમનો એક પ્રતીકાત્મક અમલ કોંક્રિટ ઇનપુટ્સના મોટા સમૂહને આવરી શકે છે. ઓફ-ધ-શેલ્ફ અવરોધ ઉકેલવા અથવા સંતોષકારક તપાસ તકનીકોનો ઉપયોગ ઘણીવાર પ્રતીકાત્મક અમલ કરવા અથવા તેમની જગ્યાને વ્યવસ્થિત રીતે અન્વેષણ કરવા માટે થાય છે. જ્યારે અંતર્ગત સંતોષ તપાસકર્તાઓ પસંદગીના મુદ્દાને સંભાળી શકતા નથી, ત્યારે તે મુદ્દાને પસાર કરવા માટે નક્કર ઇનપુટ પેદા કરી શકાય છે; નક્કર અને પ્રતીકાત્મક અમલના આ સંયોજનને કોન્કોલિક એક્ઝેક્યુશન તરીકે પણ ઓળખવામાં આવે છે. ડાયનેમિક પ્રોગ્રામ એનાલિસિસ પ્રોફાઇલિંગ (કમ્પ્યુટર પ્રોગ્રામિંગ) રનટાઇમ એરર ડિટેક્શન રનટાઇમ એપ્લિકેશન સેલ્ફ-પ્રોટેક્શન (આરએએસપી) સંદર્ભો ઔપચારિક પદ્ધતિઓ કમ્પ્યુટર વિજ્ઞાનમાં તર્ક