Category Archives: Software Engineering

Technical documentation

Developers tend to have a very low opinion of technical documentation: it is often wrong, partial, unclear and not worth the trouble of reading. This is, in part, a self-fulfilling prophecy: such low opinions of technical documentation results in them … Continue reading

Posted in Opinions, Quality, Software Engineering | Tagged | Leave a comment

Bayes’ theorem in non-functional requirements analysis — an example

I am not a mathematician, but I do like Bayes’ theorem for non-functional requirements analysis — and I’d like to present an example of its application.1 I was actually going to give a theoretical example of availability requirements, but then … Continue reading

Posted in Anecdotes, Industrial Automation, Quality, Smart Grid, Software Engineering | Tagged , , , | Leave a comment

Bungee coding

For the last few weeks, I’ve been doing what you might call bungee coding: going from high-level to low-level code and back. This week, a whole team is doing it — fun!

Posted in Embedded software development, Software Development, Software Engineering | Comments Off on Bungee coding

Optimization by puzzle

Given a query routine that takes a name and may return several, write a routine that takes a single name and returns a set of names for which each of the following is true: For each name in the set, … Continue reading

Posted in Algorithms, C & C++, C++ for the self-taught, Software Design, Software Development, Software Engineering | 1 Comment

Looking for bugs (in several wrong places)

I recently went on a bug-hunt in a huge system that I knew next to nothing about. The reason I went on this bug-hunt was because, although I didn’t know the system itself, I knew what the system was supposed … Continue reading

Posted in Anecdotes, Software Development, Software Engineering, Software Testing | Tagged | Comments Off on Looking for bugs (in several wrong places)

“A camel is a horse designed by a committee”

I don’t usually use this blog to vent frustration, but I’ve been reading standards lately… There are four versions of the horse: Pony. Horses as the Good Lord intended them. Strong and sturdy, yet soft and cuddly; obedient yet intelligent; … Continue reading

Posted in Software Engineering | Comments Off on “A camel is a horse designed by a committee”

ICS security and regulatory requirements

In North America, ICS security, as regards the electricity grid, is regulated by NERC, which provides and enforces, among other things, the Critical Infrastructure Protection (CIP) standards. In this post, I’ll provide a quick overview of those standards, provisions slightly … Continue reading

Posted in Industrial Automation, Software Engineering | Comments Off on ICS security and regulatory requirements

The Crain-Sistrunk vulnerabilities

In the two previous posts, I’ve shown that industrial control systems — ICSs — are becoming more pervasive, and that they rely on security through obscurity. Now, let’s make the link with current events.

Posted in Industrial Automation, Software Engineering | Comments Off on The Crain-Sistrunk vulnerabilities

The importance of ICS security: ICS communications

For an ICS, having communications abilities generally means implementing some machine-to-machine communications protocol, such as DNP3 or Modbus. These protocols, which allow the device to report data to a “master” device and take their cue from those devices w.r.t. things … Continue reading

Posted in Industrial Automation, Software Engineering | Comments Off on The importance of ICS security: ICS communications

The importance of ICS security: pervasiveness of ICSs

Industrial Control Systems (ICSs) are becoming pervasive throughout all branches of industry and all parts of our infrastructure: they are a part of every part of the electricity grid, from the nuclear power station to your home; they’re found in … Continue reading

Posted in Industrial Automation, Software Engineering | 1 Comment