Кіріспе

ESC/Java (және соңғы уақытта ESC/Java2), "Extended Static Checker for Java" – Java бағдарламаларында компиляция кезінде кездесетін жиі қателерді табуға бағытталған бағдарламалау құралы. ESC/Java-да қолданылатын негізгі тәсіл кеңейтілген статикалық тексеру деп аталады, ол әртүрлі бағдарламалық шектеулердің дұрыстығын статикалық түрде тексеруге арналған әдістердің жиынтығы. Мысалы, бүтін сан айнымалысы нөлден үлкен болуы немесе массив шегінде жатуы мүмкін. Бұл техника ESC/Java (және оның алдындағы ESC/Modula 3) құралында алғаш рет пайда болды және оны типтік тексерудің кеңейтілген түрі деп қарастыруға болады. Кеңейтілген статикалық тексеру әдетте автоматтандырылған теореманы дәлелдеушіні (theorem prover) пайдалануды қамтиды, ал ESC/Java құралында Simplify теореманы дәлелдеушісі қолданылды. ESC/Java толыққанды да, қатесіз де емес. Бұл қасақана жасалған, бағдарламашыға берілетін қателер мен ескертулер санын азайтуға және құралды практикалық тұрғыда тиімді етуге бағытталған. Дегенмен, бұл мынаны білдіреді: біріншіден, ESC/Java кейбір бағдарламаларды қате деп дұрыс емес тұжырымдайды (жалған оң нәтижелер); екіншіден, ол дұрыс емес бағдарламаларды дұрыс деп табады (жалған теріс нәтижелер). Соңғы санатқа модульдік арифметика және/немесе көп жіптілік (multithreading) қателері жатады. ESC/Java бастапқыда Compaq Systems Research Center (SRC) орталығында әзірленген. SRC жобаны 1997 жылы бастады, бұл олардың алғашқы кеңейтілген статикалық тексерушісі ESC/Modula 3 жұмысы 1996 жылы аяқталғаннан кейін болды. 2002 жылы SRC ESC/Java және оған байланысты құралдардың бастапқы кодын жариялады. ESC/Java құралының соңғы нұсқалары Java Модельдеу Тіліне (JML) негізделген. Пайдаланушылар бағдарламаларына арнайы форматталған түсініктемелер немесе прагмалар қосып, тексерудің көлемін және түрлерін басқара алады. Ниймеген университетінің Жүйелер қауіпсіздігі тобы 2004 жылға дейін JML спецификация тілін өңдейтін ESC/Java2 құралының кеңейтілген нұсқасының альфа нұсқасын шығарды. 2004 жылдан 2009 жылға дейін ESC/Java2 әзірлеуімен Дублин университетінің Университет колледжіндегі KindSoftware Research Group айналысты, ол 2009 жылы Копенгагеннің Ақпараттық технологиялар университетіне, ал 2012 жылы Дания Техникалық университетіне көшті. Ұзақ жылдар бойы ESC/Java2 көптеген жаңа мүмкіндіктерге ие болды, соның ішінде бірнеше теореманы дәлелдеушілермен жұмыс істеу және Eclipse ортасымен интеграциялау мүмкіндігі. OpenJML, ESC/Java2 құралының мұрагері, Java 1.8 нұсқасы үшін қолжетімді. Кодты мына мекенжайда табуға болады: https://github.com/OpenJML.