3 Elements to Successful Embedded Software Development
The embedded software triad consists of three elements: architecture, processes, and implementation. To be successful, an embedded software team must not just master these elements but also balance them. Too much focus on one area will disrupt the development cycle and lead to late deliveries, going over budget, and even buggy, low-quality software.
1 – Focusing on Architecture and Implementation
Teams that are focused on architecture and implementation are more likely to deliver lower quality software and late. In the diagram above, this condition is denoted by the numeral 1. The software team in this case neglects development processes which creates inconsistent deliveries. The cause for the inconsistency is the lack of well-defined processes that are followed repeatability. Without those processes, these teams will also likely struggle with quality issues that could cause project delays and cause them to go over budget.
2 – Focusing on Processes and Implementation
The second overlap area is for teams that overfocus on processes and implementation. These teams tend to understand the importance of processes, but they overlook how important the software architecture is. These teams design their system on the fly without any roadmap or blueprint for what it is they are building. While the team’s software quality and consistency may be good, they will often still deliver late because they constantly must rework their system with every new feature and requirement. I often refer to these teams as lost or meandering because they don’t have the big picture to work from. The software they write doesn’t scale well.
3 – Focusing on Architecture and Processes
The third area is where a team focuses on their software architecture and their processes with little thought given to implementation. These teams are focused more on the theory of embedded software development than on actually getting a product to market. They tend to also be teams that are perfectionists. These teams will never complete their software. They either lack the implementation skills or bog themselves down so many processes that they run out of money or customers before the project is ever completed.
4 – Balancing the Embedded Triad
The final and fourth area is for successful teams. Successful teams and developers will balance all three elements. They will have a software architecture that guides their implementation efforts. They will have the right number of processes to ensure quality software and consistency. They will have implementation skills that allow them to implement the architecture and leverage their processes to test and verify the implementation.