It is commonly thought that a developer needs to understand the language that they program in, the microcontroller and toolchain they develop with but this is a narrow focus of just the implementation phase of a project. In order to truly implement embedded software properly, an entire understanding of the software design cycle is required and not just an understanding of a single phase.
The software design cycle generically consists of five primary phases which are
1) Requirements gathering and definition
2) Architecture definition and software
3) Software construction
4) Software Testing
5) Software Maintenance
Each of these phases is just as important to the design cycle as any other. A misunderstanding or a mistake can be not only costly but time consuming to resolve. There are a couple of resources that developers may find extremely useful in gaining insight into the software design cycle.
The first, is the IEEE Computer Societies Software Engineering Body of Knowledge version 3.0. The SWEBOK as it is commonly known is comprised of over 15 knowledge areas that includes the software design cycle. Each phase is broken down and discussed in detail providing a developer with the entire picture! The best part is that it is free! It can be downloaded by filling out the form on the IEEE website located at the link below:
A second resource that I presented back in February 2014 is a short course entitled “Mastering the Embedded Software Design Cycle” and sponsored by Digikey at Designnews.com. The course consisted of five 30 minute sessions that covered the major principles of the software design cycle. Once again this is a completely free resource! The course is still available at the links below but you may need to register/login at Design News to access it:
Session 1 – Introduction to the Embedded Software Design Cycle
Session 2 – Software Design Principles
Session 3 – Implementation Strategies
Session 4 – Testing Your Way to Success
Session 5 – The Wonderful World of Software Maintenance
Finally there is a short article on EDN that provides a general overview of the design cycle that coincides with the Design News course. The link to the article is below:
Whether you typically only implement software or only design it (only test it?), it is a good idea to periodically review and refresh yourself on the entire software design cycle. Each phase is intricately related and to save yourself, future self or fellow co-worker a headache, it is critical to keep all the phases in mind as your work through the software design process.