Statical and Dynamical Software Analysis

Thumbnail Image
Sosnytskyi, Serhii
Glybovets, Mykola
Pechkurova, Olena
Journal Title
Journal ISSN
Volume Title
The development of software built with quality has become an important trend and a natural choice in many organisations. Currently, methods of measurement and assessment of software quality, security, trustworthiness cannot guarantee safe and reliable operations of software systems completely and effectively. In this article statistical and dynamical software analysis methods, main concepts and techniques families are overviewed. The article has an overview of why combination of several analysis techniques is necessary for software quality and examples how static and dynamical analysis may be introduced in a modern agile software development life cycle. As a summary of techniques for software analysis, represented on Table 1, due to the computability barrier, no technique can provide fully automatic, robust, and complete analyses. Testing sacrifices robustness. Assisted proving is not automatic (even if it is often partly automated, the main proof arguments generally need to be human provided). Model-checking approaches can achieve robustness and completeness only with respect to finite models, and they generally give up completeness when considering programs (the incompleteness is often introduced in the modeling stage). Static analysis gives up completeness (though it may be designed to be precise for large classes of interested programs). Last, bug finding is neither robust nor complete. Another important dimension is scalability. In practice, all approaches have limitations regarding scalability, although these limitations vary depending on the intended applications (e.g., input programs, target properties, and algorithms used). Already implemented code could be analysed in a continuous integration environment by a tool like SonarQube. Properly configured metrics and quality gates provide fast and detailed feedback on incremental changes starting from development machine till highload enterprise production environments. Software analysis helps to improve quality and development speed in Agile development life cycle with reasonable cost.
Розроблення програмного забезпечення зі вбудованою якістю стало важливою тенденцією і природним вибором у багатьох організаціях. У наш час методи визначення та оцінки якості, безпеки, надійності програмного забезпечення не можуть гарантувати безпечну й надійну роботу програмних систем повністю і ефективно. У цій статті розглянуто статистичні й динамічні методи аналізу програмного забезпечення, основні поняття і методи сімейства. Досліджено, чому для якості програмного забезпечення необхідне поєднання декількох методів аналізу, і наведено приклади того, як статичний і динамічний аналіз може бути впроваджений у сучасний життєвий цикл розроблення гнучкого програмного забезпечення.
Software Static Analysis, Software Dynamical Analysis, Testing, Quality Assurance, SQALE Mode, Continuous Code Analysis, SonarQube, article, статичний аналіз програмного забезпечення, динамічний аналіз програмного забезпечення, тестування, забезпечення якості, режим SQALE, безперервний аналіз коду, SonarQube
Sosnytskyi S. Statical and Dynamical Software Analysis / S. Sosnytskyi, М. Glybovets, O. Pechkurova // Наукові записки НаУКМА. Комп'ютерні науки. - 2020. - Т. 3. - С. 50-55.