Skip to main content

+1 866 653-6233 LinkedIn Software Expert Witness Directory

About Us Contact Us

Barr Group Software Experts

Barr Group Software Experts

Main navigation

  • Expert Services
    • Consulting Experts in Software and Electronics
    • Expert Reports by Testifying Software Experts
    • Reverse Engineering and Forensic Analysis
    • Software Source Code Review and Analysis
  • Areas of Expertise
    • Left Side
      • Artificial Intelligence
      • Automotive Systems
      • Cloud Computing
      • Computer Security
      • Consumer Electronics
      • Electronic Circuits
      • Enterprise Software
      • Financial Technology
      • Firmware and IoT
    • Right Side
      • Industrial Controls
      • Mechanical Design
      • Medical Devices
      • Military & Aerospace
      • Mobile Devices & Apps
      • Optical Equipment
      • Renewable Energy
      • Signal Processing
      • Telecommunications
  • Matters & Venues
    • Patent Infringement and Invalidity Experts
    • Software Copyright and Trade Secrets Experts
    • Product Liability and Failure Analysis Experts
    • Contract Disputes and Software Project Failures
    • Venues and Clients
  • Directory
  • Case Studies
    • DirecTV Anti-Piracy
    • Samsung Software Copyright
    • Toyota Runaway Cars
  • Resources
    • Expert Witness Blog
    • Source Code Review in Litigation
    • Software Source Code Discovery

security

  1. Home
  2. security

security

How-to articles about the design of secure embedded systems.

Arizona Lottery's Not-So-Random Number Generator

Posted October 12, 2017

Random numbers -- really, truly random numbers -- play a very important role in security.  Unfortunately, they are also common sources of non-random behavior, as in the Arizona Lottery drawing.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Inexpensive Firmware Process Improvements for Small Teams

Posted July 07, 2017

Learn practical and easy-to-apply software process improvements that even the smallest design teams can use to make firmware easier to code, debug and test, with a tools cost of less than $600.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

ESC Boston: Dangerous Flaws in Safety-Critical Device Design

Posted May 10, 2017

On May 3, 2017, Barr Group CTO and software expert Michael Barr delivered this keynote about the safety and security of Internet of Things devices at the Embedded Systems Conference in Boston.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Security and the IoT

Posted October 25, 2016

In a recent DDoS attack, devices such as webcams and DVRs were used to launch an attack on domain service provider, Dyn. The enormity of this event brings to light the importance of securing all devices capable of connecting to the Internet.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Prevent and Detect Stack Overflow

Posted September 07, 2016

The safety and security of every embedded system is dependent upon proper operation of the stack (or stacks, if there are multiple). If a stack overflow occurs, a major or minor malfunction is very likely to follow. Despite this, the stack in the majority of embedded systems is sized based on nothing more than a hunch. As well, run-time stack monitoring is too seldom used.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Protect Non-Volatile Data

Posted May 04, 2016

Unexpected power loss and software bugs can undermine the reliability of non-volatile data. Fortunately, there are various ways to make non-volatile data resilient to such corruption.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Avoid Common Firmware Bugs

Posted May 04, 2016

Understanding software and hardware bugs in other embedded systems can help you identify, diagnose, and fix bugs in your own.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

State Machines for Event-Driven Systems

Posted May 04, 2016

State machines are perhaps the most effective method for developing robust event-driven code for embedded systems.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Bug-Killing Coding Standard Rules for Embedded C

Posted May 04, 2016

A C coding standard can help keep bugs out of embedded software by leveraging common language features and development tools.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

More Bug-Killing Coding Standards for Embedded C

Posted May 04, 2016

This second article on enforceable coding standards for embedded systems adds a set of additional bug-killing rules for using certain C keywords and naming global variables.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

2016 Safety & Security Survey

Posted March 08, 2016

Barr Group's 2016 Embedded Systems Safety & Security Survey had participation from more than 2,500 embedded systems design engineers and revealed a number of interesting trends in the embedded industry.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Prevent Bugs in Embedded Software with TDD

Posted March 01, 2016

It’s a fact: When you create code, you create bugs. Listen in as we present the finer points of Test-Driven Development (TDD) - a game-changing approach to embedded software development that can greatly reduce bugs early in the development process. TDD is not a debugging technique but rather an approach to proactively preventing defects.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Software Reliability and the Internet of Things

Posted January 07, 2016

As Internet connectivity advances, the transportation, automotive, medical device, smart grid and other industry sectors have become more dependent on embedded software. But is software reliable?

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Find and Fix the Most Common Embedded Software Bugs

Posted September 09, 2015

As if debugging traditional PC/server software or even smartphone apps wasn't hard enough, debugging embedded software adds significant challenges.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Secure Consumable Components of Medical Devices and Other Embedded Systems

Posted September 01, 2015

A number of embedded systems, such as medical devices and printers, feature replaceable components designed to be installed new, consumed through one or more cycles of product use, and ultimately disposed.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Handle User Errors

Posted June 01, 2005

With thoughtful design, user interfaces for embedded systems can avoid some user errors altogether and helpfully guide the user through the rest.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Portable Fixed-Width Integers in C

Posted January 01, 2004

For embedded software developers, the most significant improvements to the C programming language made in the ISO C99 standard update are in the new <stdint.h> header file. Learn the typedef names for the new fixed width integer data types, to make hardware interfacing in C easier. 

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Choose a Real-Time Operating System

Posted January 01, 2003

In the market for a real-time operating system (RTOS)? This article provides an overview of RTOSes and how you can select the best one for your project.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Use Lint for Static Code Analysis

Posted May 01, 2002

Language specifications, including those for C and C++, are often loosely written. A static analysis tool called lint can help you find dangerous and non-portable constructs in your code before your compiler turns them into run-time bugs.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Detect Memory Leaks

Posted February 01, 2002

Memory leaks can be particularly risky for long-running embedded systems. Here are some tools to identify, track, and analyze memory leaks in embedded C and C++ programs.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Define Your Own assert() Macro for Embedded Systems

Posted April 01, 2001

Embedded systems programmers often value the assert() macro. This article explores the underlying definition of this handy macro, to show you how to roll your own.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How and When to Use C's assert() Macro

Posted March 01, 2001

The assert() macro is one of those simple tools that would not seem to merit an entire article, but I have come across an alarming number of engineers who have not heard of it or do not use it.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Use Watchdog Timers Properly when Multitasking

Posted November 01, 2000

To keep a watchdog timer from resetting your system, you've got to kick it regularly. But that's not all there is to watchdog science. We will examine the use and testing of a watchdog, as well as the integration of a watchdog into a multitasking environment.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

CRC Series, Part 3: CRC Implementation Code in C/C++

Posted January 01, 2000

CRCs are among the best checksums available to detect and/or correct errors in communications transmissions. This article shows how to implement an efficient CRC in C or C++.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

CRC Series, Part 2: CRC Mathematics and Theory

Posted December 01, 1999

Many common types of data transmission errors cannot be detected by additive checksums. This article describes a stronger type of checksum known as a CRC.

 

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

CRC Series, Part 1: Additive Checksums

Posted November 01, 1999

What if data is lost or corrupted in transit? Communication protocols usually attempt to detect such errors automatically. To do that they use checksums.

 

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Request an Expert

(866) 653-6233

Barr Group logo
Call us

Expert Services

  • Source Code Review Services
  • Expert Witness Directory
  • Reverse Engineering Services
  • Expert Reports & Testimony
  • How-To Technical Articles
  • Engineering Services

Latest Insights

  • Payment Processing and e-Payments Fraud
  • Albert Einstein Expert Witness
  • Medical Device Litigation and FDA 510(k)
  • Personality Traits of the Best Expert Witnesses

Website contents copyright © 2012-2025 by Barr Group. | Barr Group's logo is a U.S.-registered ® trademark.

SITEMAP  |  PRIVACY