21 August 2024 by Phillip Johnston • Last updated 15 October 2024Experienced developers come to recognize that it’s harder to read code than it is to write it. Embedded software can be particularly difficult to understand. Not only are there the usual difficulties of reading code, but the added complications of processor and device behavior, timing, interrupts, etc. Even worse, these details are often intermixed within the code base, with high-level application code interacting directly with processor special function registers. Developing an understanding depends on holding in mind arbitrary interface and implementation details at multiple conceptual levels. The way you …
Continue reading “Code Structure Affects Understandability and Maintainability”
20 August 2024 by Phillip JohnstonMany focus on Reusability through the lens of being able to use the same code for different projects. Using previously developed components with minimal rework is especially desirable given the increasing pressure on software teams to produce software faster. Aspencore’s 2023 Embedded Market Survey shows that this type of reuse happens, with 89% of respondents saying their systems reused code from a previous project. Another, often overlooked, benefit of reusability is that it helps reduce maintenance costs for an organization. Since maintenance inevitably dominates the product lifecycle, reducing the associated costs can have a significant …
Continue reading “Reuse Improves Maintainability”
12 December 2023 by Phillip Johnston Even with the best documentation, those who originally created the product are usually better at fixing/modifying it than their replacements. This is because they hold context and design paradigms within their head that may not have been documented or effectively communicated with others. However, there are limitations: People forget, which means that an original creator may be no better than one of their successors after time has elapsed. Fundamental concepts and design goals change over time and/or may have been invalidated by successors, rendering their knowledge useless. As the original development team cycles off, …
Continue reading “Original Creators Are Better at Maintaining a System Than Their Replacements”
12 December 2023 by Phillip Johnston All software will age, and all systems that last long enough become legacy systems. But even knowing this, we don’t tend to emphasize maintenance when teaching new developers. So much of the material is focused on creating new programs. But this misses the fact that most of the work we do is maintaining – fixing and extending – existing programs. In fact, maintaining existing software will often be the first thing that a new programmer does, with developing new software from scratch coming later. We need to teach developers the necessary software maintenance skills, …
Continue reading “We Don’t Do a Good Job of Teaching Software Maintenance”