In an embedded system there are typically four main ways to architect the code: Simple loop, foreground-background, cyclic executive, and RTOS. In this article I will look at how to create a simple main loop with a time-consistent execution period, similar to what a cyclic executive does.
Archive for the 'Software Engineering' Category
Tags: development, programming, Software, software engineering
Software matters because without it a computer-controlled instrument, device, or system is just a collection of plastic, metal, and silicon. It does nothing.
Without software an interferometer is just a bunch of mirrors and lenses. Without software a CCD or CMOS image sensor is just a slab of inert silicon. Without software a deep space probe is a piece of very expensive metal sculpture. Without software data collection and analysis becomes an exercise in jotting numbers in a notebook, pushing a slide rule to get approximate numerical results, and dealing with errors. Lots of errors.
Good software is not trivial, nor is it easy. It is not the simple exercises encountered in undergraduate courses, nor is it the hacked logic and unreadable gibberish generated by overcaffeinated graduate students late at night. Good software is the result of applied discipline, resulting in the creation of an abstract logical construct that is coherent, readable, elegant, and reusable. Good software is beautiful.
Tags: Management, programming
I don’t know what it is about programming and software engineering, but these two fields seem to attract a significant number of people with some serious personality issues.
One of the types I’ve encountered on a regular basis is what I call the APAP, or Arrogant Passive-Agressive Programmer. These are the people who will go in and rewrite existing code just to show off how clever they think they are, but can’t be bothered to document what they did or why. Heaven forbid that they should go and actually talk to the original author of the code before making changes to it. Another variation on this is the person who won’t talk directly to the person originally responsible for the design or the initial code, but instead go to the group manager, or someone not even directly associated, and discuss issues and changes with them instead.
Continue reading ‘Dealing With Arrogant Passive-Agressive Programmers’
Tags: development, software engineering
This is a slightly altered version of the summary of a report I wrote for a company that attempted to explain to them why they should have a software engineer (a real one) on their staff, and why it would help their bottom line.
Reviewing and working with most legacy software typically leads to an observation that is hard to avoid: Software engineering is arguably the most important aspect of any software implementation activity.