The critical role of systems thinking in software development – O’Reilly Media


a software system is little more than a formal mathematical model with incomplete, informally specified inputs, outputs, and side effects, run blindly by machines at incomprehensibly high speeds.

I like his simplification, too many people don’t see software as deterministic. I’ve taken over many embedded software projects, and it is usually very evident if the creator had these principals in mind. Here are some key tells:

  • Input limits checked
  • Single point of function return
  • Modular test scaffolding
  • MInimal or limited inheritance
  • Thread safe
  • Memory controls that catch recursion or overflow

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts