Humans tend to make the same mistake again and again. We, software developers, are no different. Hello everyone, in this blog post, I’m going to talk about common concurrency bug patterns. Bug patterns give good insight into developer’s psychology, specifically, the assumptions we make about the programming languages, compilers, 3rd party code, OS scheduler, and hardware architecture.
Category: verification
Static Program Analysis: Motivation and Techniques
Static analysis is a method to extract specific information about the program without actually running it. In this blog post, we will first have a look at different types of information that we can obtain using static analysis. Later, we will have a comprehensive overview of different techniques for static program analysis. Motivation There are broadly two categories of information, based on their usage, that we can extract: Proscriptive information and Descriptive information[1]. Proscriptive information is obtained when we statically analyze the program behavior against a set of prescribed rules. For instance, identification, localization, and explanation of all software anomalies…
Embedded Software Testing, Validation, and Verification
Embedded software, unlike general software, is highly dependent on the hardware they are developed for. Thus it became essential to create a hardware-based or hardware-like environment simultaneously with the software for effective testing. Where simulators and emulators can, up to some extent, provide a hardware-like environment for testing embedded software, they can not always be relied upon while testing for safety-critical applications like flight control system. It is this, high dependency on hardware, which makes testing, verification, and validation of embedded Softwares far more demanding than of general software. Moreover, several safety-critical embedded systems are also strictly real-time, or at…