METHODS FOR IMPROVING SOFTWARE CORRECTNESS AND SECURITY: MODERN COMPILER FUNCTIONALITY AND OTHER APPROACHES

Authors

Keywords:

information technology, data modeling, software correctness, quality assurance, reliability of software systems, parameters, complex systems, partial functions, exhaustiveness checking, edge case handling

Abstract

In the context of the rapid adoption of digital technologies, software plays a crucial role in the functioning of critically important domains – ranging from financial and medical systems to infrastructure solutions, security tools, and industrial automation. Accordingly, the demands on the quality, reliability, and security of software systems continue to grow. One of the key factors shaping these characteristics is software correctness, defined as the compliance of a program’s behavior with its formal or informal specification in all permissible situations.Ensuring correctness is a complex task that requires both deep understanding of the application domain and careful technical modeling. Common sources of deviations include logical, structural, or conceptual errors, which may destabilize system operation, lead to data loss or corruption, and in some cases – introduce serious security vulnerabilities.Given these risks, tools for early detection and prevention of defects become particularly significant. Among them, modern compilers stand out for their expanded functionality, which goes beyond traditional syntactic analysis. They are now capable of performing advanced semantic checks – including completeness of condition handling, validity of parameter values, index correctness, and more. Static code analysis tools also play an essential role, allowing assessment of program behavior without actual execution.Despite the availability of such powerful tools, current engineering practice often prioritizes rapid product deployment. As a result, correctness concerns are frequently sidelined – especially in startup environments or under agile methodologies. However, in high-risk sectors such as healthcare, energy, or security, even minor behavioral deviations can have catastrophic consequences.This article presents an analysis of both classical and contemporary publications devoted to improving software quality. Some of them offer structured methods for ensuring correctness, while others propose conceptual approaches to designing software that minimizes the likelihood of errors. Particular attention is paid to mechanisms for correctness verification at the compilation stage.

References

Adkins H., Beyer B., Blankinship P., Lewandowski P., Oprea A., Stubblefield A. Building secure and reliable systems: best practices for designing, implementing, and maintaining systems. 1st ed. Sebastopol : O’Reilly Media, 2020. 555 p.

Booch G. Object-Oriented Analysis and Design with Applications. 3rd ed. Boston : Addison-Wesley Professional, 2007. 720 p

Brooks F. The mythical man-month: essays on software engineering. Anniversary ed. Boston : Addison-Wesley Professional, 1995. 336 p.

Evans E. Domain-driven design: tackling complexity in the heart of software. 1st ed. Boston : Addison-Wesley Professional, 2003. 560 p.

Forsgren N., Humble J., Kim G. Accelerate: the science of lean software and DevOps: building and scaling high performing technology organizations. Illustrated ed. Portland : IT Revolution, 2018. 288 p.

Galef J. The Scout Mindset: Why Some People See Things Clearly and Others Don’t. New York : Portfolio / Penguin, 2021. 288 p.

Gamma E., Helm R., Johnson R., Vlissides J. Design patterns: elements of reusable object-oriented software. 1st ed. Boston : Addison-Wesley Professional, 1994. 416 p.

Herbert K., Plante D. Refining Existing Types in Scala With Refined. https://www.baeldung.com/scala/refined-types

Hunt A., Thomas D. The pragmatic programmer: from journeyman to master. Boston : Addison-Wesley Professional, 1999. 352 p.

Martin R. Clean code: a handbook of agile software craftsmanship. 1st ed. Boston : Pearson, 2008. 464 p.

Martin R. Functional design: principles, patterns, and practices. 1st ed. Boston : Addison-Wesley Professional, 2023. 384 p.

Ousterhout J. A philosophy of software design. 1st ed. Stanford : Yaknyam Press, 2018. 190 p.

Pilquist M., Chiusano P., Bjarnasson R. Functional programming in Scala. 2nd ed. Shelter Island : Manning, 2023. 488 p.

Winitzki S. The Science of Functional Programming. Part I. Raleigh : Lulu Press, 2021. 280 p.

Winters T., Manshreck T., Wright H. Software engineering at Google: lessons learned from programming over time. 1st ed. Sebastopol : O’Reilly Media, 2020. 599 p.

Рихальський О. Ю. Методи підвищення коректності програмного забезпечення: сучасний функціонал компіляторів та інші підходи // VII Всеукраїнська науково-технічна конференція «Комп’ютерні технології: інновації, проблеми, рішення», 02–03 грудня 2024 р. Житомир, Україна.

Рихальський О. Ю. Підвищення коректності програмного забезпечення методом звуження областей визначення // Всеукраїнська науково-технічна інтернет-конференція «Автоматизація, комп’ютерні та біомедичні технології», 26 березня 2025 р. Дніпро, Україна.

Рихальський О. Ю. Шляхи підвищення кіберстійкості програмного забезпечення: сучасні мови програмування та супутні методології // ХІ Міжнародна науково-практична конференція «Актуальні питання забезпечення кібербезпеки та захисту інформації», 24 квітня 2025 р. Київ, Україна.

Published

2025-05-29

How to Cite

Рихальський, О. Ю. (2025). METHODS FOR IMPROVING SOFTWARE CORRECTNESS AND SECURITY: MODERN COMPILER FUNCTIONALITY AND OTHER APPROACHES. Таuridа Scientific Herald. Series: Technical Sciences, (2), 155-170. Retrieved from http://journals.ksauniv.ks.ua/index.php/tech/article/view/881

Issue

Section

COMPUTER SCIENCE AND INFORMATION TECHNOLOGY