Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік бағдарламаларды орындамай талдау
Analysis of computer programs without executing them
Компьютерлік ғылымда статикалық бағдарлама талдауы (статикалық талдау немесе статикалық симуляция деп те аталады) – компьютерлік бағдарламаларды орындамай жүзеге асырылатын талдау, ал динамикалық бағдарлама талдауы интеграцияланған ортада бағдарламалардың орындалуы кезінде жүргізіледі. Бұл термин көбінесе автоматтандырылған құралмен жүргізілетін талдауға қолданылады, ал адамдар жүргізетін талдау әдетте «бағдарламаны түсіну», бағдарламаны зерделеу немесе кодты қарау деп аталады. Соңғы жағдайда бағдарламалық жасақтаманы тексеру және бағдарламалық жасақтаманы шолу әдістері де қолданылады. Көптеген жағдайларда талдау бағдарламаның бастапқы кодының бір нұсқасында, ал кейбір жағдайларда оның объектілік кодының бір түрінде жүргізіледі.
In computer science, static program analysis (also known as static analysis or static simulation) is the analysis of computer programs performed without executing them, in contrast with dynamic program analysis, which is performed on programs during their execution in the integrated environment. The term is usually applied to analysis performed by an automated tool, with human analysis typically being called "program understanding", program comprehension, or code review. In the last of these, software inspection and software walkthroughs are also used. In most cases the analysis is performed on some version of a program's source code, and, in other cases, on some form of its object code.
Құрал түрлері
OMG (Object Management Group) бағдарламалық қамтамасыз ету сапасын өлшеу және бағалау үшін қажетті бағдарламалық қамтамасыз етуді талдау түрлері туралы зерттеу жариялады. "CISQ ұсыныстарына сәйкес берік, қауіпсіз, тиімді және оңай өзгертілетін IT жүйелерін қалай жеткізуге болады" атты осы құжатта бағдарламалық қамтамасыз етуді талдаудың үш деңгейі сипатталған. Бірлік деңгейіндегі талдау, ол белгілі бір бағдарлама немесе кіші бағдарламаның ішінде, сол бағдарламаның контекстімен байланыспай жүргізіледі. Технологиялық деңгейдегі талдау, ол жалпы бағдарламаның тұтастай және семантикалық көрінісін алу үшін бірлік бағдарламалардың арасындағы өзара әрекеттестікті ескереді, осылайша мәселелерді табу және анық жалған оң нәтижелерден аулақ болу үшін. Жүйелік деңгейдегі талдау, ол бірлік бағдарламалардың өзара әрекеттесуін ескереді, бірақ бір ғана нақты технологиямен немесе бағдарламалау тілімен шектелмейді. Бағдарламалық талдаудың тағы бір деңгейін анықтауға болады. Миссиялық/бизнес деңгейіндегі талдау, ол бағдарламалық жүйеде оның кәсіпорын немесе миссиялық/бизнес деңгейіндегі қызметтері шеңберінде жұмыс істеуі үшін іске асырылатын бизнес терминдері, ережелер және процестерді ескереді. Бұл элементтер бір ғана нақты технологиямен немесе бағдарламалау тілімен шектелмей жүзеге асырылады және көп жағдайда бірнеше тілде таратылады, бірақ жүйелік түсінуді қамтамасыз ету үшін статикалық түрде алынып, талданады.
The OMG (Object Management Group) published a study regarding the types of software analysis required for software quality measurement and assessment. This document on "How to Deliver Resilient, Secure, Efficient, and Easily Changed IT Systems in Line with CISQ Recommendations" describes three levels of software analysis. Unit Level Analysis that takes place within a specific program or subroutine, without connecting to the context of that program. Technology Level Analysis that takes into account interactions between unit programs to get a more holistic and semantic view of the overall program in order to find issues and avoid obvious false positives. System Level Analysis that takes into account the interactions between unit programs, but without being limited to one specific technology or programming language. A further level of software analysis can be defined. Mission/Business Level Analysis that takes into account the business/mission layer terms, rules and processes that are implemented within the software system for its operation as part of enterprise or program/mission layer activities. These elements are implemented without being limited to one specific technology or programming language and in many cases are distributed across multiple languages, but are statically extracted and analyzed for system understanding for mission assurance.
Деректерге негізделген статикалық талдау
Деректерге негізделген статикалық талдау кодтау ережелерін шығару үшін үлкен көлемде кодты пайдаланады. Мысалы, GitHub-тағы барлық Java ашық бастапқы кодты пакеттерін жақсы талдау стратегиясын үйрену үшін қолдануға болады. Ережелерді шығару үшін машиналық оқыту техникаларын пайдалану мүмкін. Сонымен қатар, көптеген бұрынғы түзетулер мен ескертулерден де үйренуге болады.
Data driven static analysis uses large amounts of code to infer coding rules. For instance, one can use all Java open source packages on GitHub to learn a good analysis strategy. The rule inference can use machine learning techniques. It is also possible to learn from a large amount of past fixes and warnings.