Static program analysis

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.[1][2]

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.

Rationale

The sophistication of the analysis performed by tools varies from those that only consider the behaviour of individual statements and declarations,[3] to those that include the complete source code of a program in their analysis. The uses of the information obtained from the analysis vary from highlighting possible coding errors (e.g., the lint tool) to formal methods that mathematically prove properties about a given program (e.g., its behaviour matches that of its specification).

Software metrics and reverse engineering can be described as forms of static analysis. Deriving software metrics and static analysis are increasingly deployed together, especially in creation of embedded systems, by defining so-called software quality objectives.[4]

A growing commercial use of static analysis is in the verification of properties of software used in safety-critical computer systems and locating potentially vulnerable code.[5] For example, the following industries have identified the use of static code analysis as a means of improving the quality of increasingly sophisticated and complex software:

  1. Medical software: The US Food and Drug Administration (FDA) has identified the use of static analysis for medical devices.[6]
  2. Nuclear software: In the UK the Office for Nuclear Regulation (ONR) recommends the use of static analysis on reactor protection systems.[7]
  3. Aviation software (in combination with dynamic analysis).[8]
  4. Automotive & Machines (functional safety features form an integral part of each automotive product development phase, ISO 26262, section 8).

A study in 2012 by VDC Research reported that 28.7% of the embedded software engineers surveyed use static analysis tools and 39.7% expect to use them within 2 years.[9] A study from 2010 found that 60% of the interviewed developers in European research projects made at least use of their basic IDE built-in static analyzers. However, only about 10% employed an additional other (and perhaps more advanced) analysis tool.[10]

In the application security industry the name static application security testing (SAST) is also used. SAST is an important part of Security Development Lifecycles (SDLs) such as the SDL defined by Microsoft[11] and a common practice in software companies.[12]

Tool types

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.[13]

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.

Formal methods

Formal methods is the term applied to the analysis of software (and computer hardware) whose results are obtained purely through the use of rigorous mathematical methods. The mathematical techniques used include denotational semantics, axiomatic semantics, operational semantics, and abstract interpretation.

By a straightforward reduction to the halting problem, it is possible to prove that (for any Turing complete language), finding all possible run-time errors in an arbitrary program (or more generally any kind of violation of a specification on the final result of a program) is undecidable: there is no mechanical method that can always answer truthfully whether an arbitrary program may or may not exhibit runtime errors. This result dates from the works of Church, Gödel and Turing in the 1930s (see: Halting problem and Rice's theorem). As with many undecidable questions, one can still attempt to give useful approximate solutions.

Some of the implementation techniques of formal static analysis include:[14]

  • Abstract interpretation, to model the effect that every statement has on the state of an abstract machine (i.e., it 'executes' the software based on the mathematical properties of each statement and declaration). This abstract machine over-approximates the behaviours of the system: the abstract system is thus made simpler to analyze, at the expense of incompleteness (not every property true of the original system is true of the abstract system). If properly done, though, abstract interpretation is sound (every property true of the abstract system can be mapped to a true property of the original system).[15]
  • Data-flow analysis, a lattice-based technique for gathering information about the possible set of values;
  • Hoare logic, a formal system with a set of logical rules for reasoning rigorously about the correctness of computer programs. There is tool support for some programming languages (e.g., the SPARK programming language (a subset of Ada) and the Java Modeling Language—JML—using ESC/Java and ESC/Java2, Frama-C WP (weakest precondition) plugin for the C language extended with ACSL (ANSI/ISO C Specification Language) ).
  • Model checking, considers systems that have finite state or may be reduced to finite state by abstraction;
  • Symbolic execution, as used to derive mathematical expressions representing the value of mutated variables at particular points in the code.

Data-driven static analysis

Data-driven static analysis leverages extensive codebases to infer coding rules and improve the accuracy of the analysis.[16][17] For instance, one can use all Java open-source packages available on GitHub to learn good analysis strategies. The rule inference can use machine learning techniques.[18] It is also possible to learn from a large amount of past fixes and warnings.[16]

Remediation

Static analyzers produce warnings. For certain types of warnings, it is possible to design and implement automated remediation techniques. For example, Logozzo and Ball have proposed automated remediations for C# cccheck.[19]

See also

References

  1. ^ Wichmann, B. A.; Canning, A. A.; Clutterbuck, D. L.; Winsbarrow, L. A.; Ward, N. J.; Marsh, D. W. R. (Mar 1995). "Industrial Perspective on Static Analysis" (PDF). Software Engineering Journal. 10 (2): 69–75. doi:10.1049/sej.1995.0010. Archived from the original (PDF) on 2011-09-27.
  2. ^ Egele, Manuel; Scholte, Theodoor; Kirda, Engin; Kruegel, Christopher (2008-03-05). "A survey on automated dynamic malware-analysis techniques and tools". ACM Computing Surveys. 44 (2): 6:1–6:42. doi:10.1145/2089125.2089126. ISSN 0360-0300. S2CID 1863333.
  3. ^ Khatiwada, Saket; Tushev, Miroslav; Mahmoud, Anas (2018-01-01). "Just enough semantics: An information theoretic approach for IR-based software bug localization". Information and Software Technology. 93: 45–57. doi:10.1016/j.infsof.2017.08.012.
  4. ^ "Software Quality Objectives for Source Code" Archived 2015-06-04 at the Wayback Machine (PDF). Proceedings: Embedded Real Time Software and Systems 2010 Conference, ERTS2010.org, Toulouse, France: Patrick Briand, Martin Brochet, Thierry Cambois, Emmanuel Coutenceau, Olivier Guetta, Daniel Mainberte, Frederic Mondot, Patrick Munier, Loic Noury, Philippe Spozio, Frederic Retailleau.
  5. ^ Improving Software Security with Precise Static and Runtime Analysis Archived 2011-06-05 at the Wayback Machine (PDF), Benjamin Livshits, section 7.3 "Static Techniques for Security". Stanford doctoral thesis, 2006.
  6. ^ FDA (2010-09-08). "Infusion Pump Software Safety Research at FDA". Food and Drug Administration. Archived from the original on 2010-09-01. Retrieved 2010-09-09.
  7. ^ Computer based safety systems - technical guidance for assessing software aspects of digital computer based protection systems, "Computer based safety systems" (PDF). Archived from the original (PDF) on January 4, 2013. Retrieved May 15, 2013.
  8. ^ Position Paper CAST-9. Considerations for Evaluating Safety Engineering Approaches to Software Assurance Archived 2013-10-06 at the Wayback Machine // FAA, Certification Authorities Software Team (CAST), January, 2002: "Verification. A combination of both static and dynamic analyses should be specified by the applicant/developer and applied to the software."
  9. ^ VDC Research (2012-02-01). "Automated Defect Prevention for Embedded Software Quality". VDC Research. Archived from the original on 2012-04-11. Retrieved 2012-04-10.
  10. ^ Prause, Christian R., René Reiners, and Silviya Dencheva. "Empirical study of tool support in highly distributed research projects." Global Software Engineering (ICGSE), 2010 5th IEEE International Conference on. IEEE, 2010 https://ieeexplore.ieee.org/Xplore/login.jsp?url=%2Fielx5%2F5581168%2F5581493%2F05581551.pdf&authDecision=-203
  11. ^ M. Howard and S. Lipner. The Security Development Lifecycle: SDL: A Process for Developing Demonstrably More Secure Software. Microsoft Press, 2006. ISBN 978-0735622142
  12. ^ Achim D. Brucker and Uwe Sodan. Deploying Static Application Security Testing on a Large Scale Archived 2014-10-21 at the Wayback Machine. In GI Sicherheit 2014. Lecture Notes in Informatics, 228, pages 91-101, GI, 2014.
  13. ^ "OMG Whitepaper | CISQ - Consortium for Information & Software Quality" (PDF). Archived (PDF) from the original on 2013-12-28. Retrieved 2013-10-18.
  14. ^ Vijay D’Silva; et al. (2008). "A Survey of Automated Techniques for Formal Software Verification" (PDF). Transactions On CAD. Archived (PDF) from the original on 2016-03-04. Retrieved 2015-05-11.
  15. ^ Jones, Paul (2010-02-09). "A Formal Methods-based verification approach to medical device software analysis". Embedded Systems Design. Archived from the original on July 10, 2011. Retrieved 2010-09-09.
  16. ^ a b "Learning from other's mistakes: Data-driven code analysis". www.slideshare.net. 13 April 2015.
  17. ^ Söderberg, Emma; Church, Luke; Höst, Martin (2021-06-21). "Open Data-driven Usability Improvements of Static Code Analysis and its Challenges". Evaluation and Assessment in Software Engineering. EASE '21. New York, NY, USA: Association for Computing Machinery. pp. 272–277. doi:10.1145/3463274.3463808. ISBN 978-1-4503-9053-8.
  18. ^ Oh, Hakjoo; Yang, Hongseok; Yi, Kwangkeun (2015). "Learning a strategy for adapting a program analysis via bayesian optimisation". Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications - OOPSLA 2015. pp. 572–588. doi:10.1145/2814270.2814309. ISBN 9781450336895. S2CID 13940725.
  19. ^ Logozzo, Francesco; Ball, Thomas (2012-11-15). "Modular and verified automatic program repair". ACM SIGPLAN Notices. 47 (10): 133–146. doi:10.1145/2398857.2384626. ISSN 0362-1340.

Further reading

Read other articles:

Artikel ini membutuhkan rujukan tambahan agar kualitasnya dapat dipastikan. Mohon bantu kami mengembangkan artikel ini dengan cara menambahkan rujukan ke sumber tepercaya. Pernyataan tak bersumber bisa saja dipertentangkan dan dihapus.Cari sumber: Katō Kiyomasa – berita · surat kabar · buku · cendekiawan · JSTOR (July 2007) Ini adalah nama Jepang, nama keluarganya adalah Katō. Katō Kiyomasa加藤 清正Potret Katō KiyomasaDaimyō KumamotoMasa jabat...

American college football season 1981 Wisconsin Badgers footballGarden State Bowl, L 21–28 vs. TennesseeConferenceBig Ten ConferenceRecord7–5 (6–3 Big Ten)Head coachDave McClain (4th season)Offensive coordinatorBill Dudley (2nd as OC; 4th overall season)Offensive schemeTriple optionDefensive coordinatorJim Hilles (4th season)Base defense3–4MVPDave LevenickCaptains Dave Levenick Dave Mohapp Larry Spurlin Home stadiumCamp Randall StadiumSeasons͛...

  هذه المقالة عن مصطلح سياسي. لمعانٍ أخرى، طالع تمرد (توضيح). جزء من سلسلة عنالثورات أنواع ملونة اشتراكية ديموقراطية سلمية دائمة سياسية اجتماعية موجة الطرق مقاطعة عصيان مدني حرب أهلية صراع الطبقات الاجتماعية انقلاب مظاهرات حرب عصابات عصيان مسلح مقاومة سلمية احتجاج تمر

Carlos Lopes Carlos Lopes (Canchungo, 1960) is een Guinee-Bissaus ambtenaar. Biografie Lopes studeerde ontwikkelingsstudies aan de universiteit van Genève tussen 1978 en 1984. Vervolgens doctoreerde hij in de geschiedenis aan de Sorbonne.[1] In 1988 start hij als ontwikkelingseconoom voor het ontwikkelingsprogramma van de VN. Tussen 2005 en 2012 was hij adviseur van de VN-secretarissen-generaal Kofi Annan en Ban Ki-Moon.[2] Van 2012 tot 2018 is Lopes directeur van de Economis...

Catarina, a Grande por Alexander Roslin. A Era do Iluminismo Russo foi um período de tempo no século XVIII durante o qual o governo começou a apoiar ativamente a proliferação das artes e das ciências. Foi nesta época que surgiram as primeiras universidades, bibliotecas, teatros e museus públicos, bem como uma imprensa relativamente livre. Tal como outros déspotas iluministas, a imperatriz Catarina, a Grande, teve um papel essencial no apoio das artes, ciências e da educação. O Ilu...

English painter Thomas Cooper Gotch, self-portrait The Child Enthroned, 1894 My Crown and Sceptre, 1892 (the sitter appears to be Phyllis, his daughter). This was his first work in his new style: two years later, he would rework it into the more powerful The Child Enthroned, his master work Thomas Cooper Gotch or T. C. Gotch (1854–1931) was an English painter and book illustrator loosely associated with the Pre-Raphaelite movement; he was the brother of John Alfred Gotch, the architect.[...

Untuk kegunaan lain, lihat Aliansi Progresif (disambiguasi). Progressive AllianceTanggal pendirian14–15 Desember 2012 (konferensi pertama)22 Mei 2013 (pembentukan)TujuanJaringan global partai politik dan organisasi sosial-demokratikKantor pusatBerlin, JermanWilayah layanan Seluruh duniaBadan utamaKonferensi Progressive AllianceSitus webprogressive-alliance.info/en/ Demokrasi sosial Perkembangan Humanisme Masa Pencerahan Revolusi Prancis Sosialisme utopis Revolusi 1848 Marxisme Ortodoks Revi...

Романчук Анатолій Михайлович  Капітан Загальна інформаціяНародження 17 січня 1981(1981-01-17)Дунаївці, Хмельницька областьСмерть 27 липня 2014(2014-07-27) (33 роки)Сніжне, Донецька областьAlma Mater Військовий інститут ракетних військ та артилерії (СумДУ)Військова службаРоки служби 1999-201...

Place in White Carniola, SloveniaStari Trg ob KolpiStari Trg ob KolpiLocation in SloveniaCoordinates: 45°29′38.74″N 15°4′37.67″E / 45.4940944°N 15.0771306°E / 45.4940944; 15.0771306Country SloveniaTraditional regionWhite CarniolaStatistical regionSoutheast SloveniaMunicipalityČrnomeljArea • Total0.49 km2 (0.19 sq mi)Elevation376.3 m (1,234.6 ft)Population (2020) • Total86 • Density180/km2 (4...

American basketball player Brandon IngramIngram with the New Orleans Pelicans in 2020No. 14 – New Orleans PelicansPositionSmall forward / power forwardLeagueNBAPersonal informationBorn (1997-09-02) September 2, 1997 (age 26)Kinston, North Carolina, U.S.Listed height6 ft 8 in (2.03 m)Listed weight196 lb (89 kg)Career informationHigh schoolKinston(Kinston, North Carolina)CollegeDuke (2015–2016)NBA draft2016: 1st round, 2nd overall pickSelected by the Lo...

Final da Copa Libertadores da América de 2016 Evento Copa Libertadores da América de 2016 Independiente del Valle Atlético Nacional FEF FCF 1 2 Jogo de ida Independiente del Valle Atlético Nacional 1 1 Data 20 de julho de 2016 Local Estádio Olímpico Atahualpa, Quito Árbitro PAR Enrique Cáceres Jogo de volta Atlético Nacional Independiente del Valle 1 0 Data 27 de julho de 2016 Local Estádio Atanasio Girardot, Medellín Árbitro ARG Néstor Pitana ← Anterior Próxima → 2015 2017 ...

Geologic formation in Wyoming, United States Willwood FormationStratigraphic range: Thanetian-Ypresian (Clarkforkian-Bridgerian)~56–48 Ma PreꞒ Ꞓ O S D C P T J K Pg N TypeGeological formationSub-unitsGray Bull beds, Sand Coulee beds, Sand Creek Facies, Wa-1 ZoneLithologyPrimaryMudstone, shaleOtherSandstone, conglomerateLocationCoordinates44°30′N 108°00′W / 44.5°N 108.0°W / 44.5; -108.0Approximate paleocoordinates49°12′N 90°48′W / ...

Syrian actress (born 1966) This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (January 2017) Fatima Saadفاطمة سعدBorn (1966-01-15) January 15, 1966 (age 57)Damascus, SyriaOccupation(s)Actress, voice actressYears active1988–present Fatima Saad (Arabic: فاطمة سعد, born January 15, 1966) is a Syrian actress. She works in Venus Centre as a dub actress.[1]...

Cet article présente la liste alphabétique des divinités de Dragon Ball. Sommaire : Haut - A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A Anges Cosplay de Marcarita (à gauche) à la 28e édition de la Manga Barcelona (en), en 2022. Les Anges apparaissent pour la première fois dans le film Dragon Ball Z: Battle of Gods. Ce sont les assistants, ainsi que les mentors et maîtres en art martiaux des dieux de la destruction. Ils sont également encore plus puissants que ces d...

Public university in Bankura, West Bengal, India Bankura UniversityMottoउत्तिष्ठत जाग्रत (Sanskrit) uttiṣṭhata jāgrata (ISO)Motto in EnglishArise, awakeTypePublic State UniversityEstablished2014; 9 years ago (2014)AccreditationNAACAcademic affiliationUGCAIUBCIEndowment₹4.5825 crore (US$570,000) (2021–22 est.)[1]ChancellorGovernor of West BengalVice-ChancellorGoutam Buddha SuralAcademic staff60[2]Students1,180&#...

See also: mitral regurgitation and tricuspid insufficiency Medical conditionAortic regurgitationOther namesAortic insufficiencyIllustration of aortic regurgitationSpecialtyCardiology SymptomsDyspnea on exertion, Orthopnea[1]CausesAortic root dilation[1]Diagnostic methodTransthoracic echocardiography[2]TreatmentVasodilators(depends on the individuals condition, maybe surgery Aortic valve replacement)[1][3] Aortic regurgitation (AR), also known as ao...

Rovescala Osnovni podaci Država  Italija Regija Lombardija Provincija Pavia Stanovništvo Stanovništvo (2011) 852 Geografija Koordinate 45°00′25″N 9°20′45″E / 45.00696°N 9.34586°E / 45.00696; 9.34586 Nadmorska visina 270 m RovescalaRovescala (Italije) Rovescala je naselje u Italiji u provinciji Pavia, u regiji Lombardija. Prema proceni iz 2011. u naselju je živelo 852 stanovnika.[1][2] Naselje se nalazi na nadmorskoj visini od 270 m...

Municipality in Quebec, CanadaLambtonMunicipalityMotto(s): Le jour viendra (French)The day will comeLocation within Le Granit RCMLambtonLocation in southern QuebecCoordinates: 45°50′N 71°05′W / 45.83°N 71.08°W / 45.83; -71.08[1]Country CanadaProvince QuebecRegionEstrieRCMLe GranitConstitutedDecember 23, 1976Government[2] • MayorGhislain Bolduc • Federal ridingMégantic—L'Érable • Prov. ridin...

Untuk kegunaan lain, lihat Gebang (disambiguasi). Gebang Pohon gebang yang telah tua Unthuk Batur, Prembun, Tambak, Banyumas Klasifikasi ilmiah Kerajaan: Plantae (tanpa takson): Angiospermae (tanpa takson): Monokotil Ordo: Arecales Famili: Arecaceae Genus: CoryphaL. Spesies: C. utan Nama binomial Corypha utanLamk. Spesies Corypha lecomtei Corypha microclada Corypha taliera Corypha umbraculifera Corypha utan Sinonim Corypha elata Roxb.C. gebanga Bl. Gebang adalah nama sejenis palma tinggi...

Dancing with the StarsGenreReality competitionBerdasarkanStrictly Come DancingSutradaraAlex RudzinskiPresenterTom BergeronLisa Canning (2005)Samantha Harris (2006–09)Drew Lachey (2007)Brooke Burke-Charvet (2010–)JuriCarrie Ann InabaLen GoodmanBruno TonioliNaratorAlan DedicoatNegara asalUnited StatesBahasa asliEnglishJmlh. musim17Jmlh. episode320 (per 26 November, 2013)ProduksiProduser eksekutifAshley Edens-ShafferConrad GreenJoe SungkurDurasi40–80 menitRumah produksiBBC Worldwide Produ...