By Ed Kuzemchak
The Agile Methodology, which was conceived in the early 2000’s, has since achieved broad acceptance in software development and beyond for improving schedule reliability, product quality, and even overall team morale.
Agile brought together a number of previously successful techniques such as Barry Boehm’s Spiral Model1 and Sutherland and Schwaber’s SCRUM Process2 into a overall methodology that has become widely adopted in general purpose software development.
Until recently, the iterative development model championed by Agile was difficult to achieve in embedded systems projects. At the same time, the growth of Internet of Things and mobile devices have applied pressure to embedded designers to build larger software systems on every tighter deadlines.
New tools and techniques allow embedded designers to leverage the benefits of Agile to meet these demands.
In a series of articles, I will discuss how Agile methodology can be integrated into embedded systems and IoT projects.
System Architecture and Rapid, Early Prototyping
In early phases of an embedded systems project, many important architectural decisions are made that will have a lasting effect on the project. Selection of processors, real-time operating systems, and development tools for the project will be made at this time and those decisions will be difficult to change later.
By creating early prototypes and proof-of-concept systems, much of the risk and uncertainty of the project can be resolved before significant effort, time, and expense are invested. An article on how recent advances have enabled early prototyping in embedded systems is forthcoming.
Off the Hardware and Software
Leveraging pre-existing modules, both hardware and software, has allowed desktop and enterprise software developers to deliver more capability on shorter timelines with fewer bugs than ever before. Embedded systems have additional size and power constraints that, in the past, have led to a complete ‘from scratch’ approach to development rather than building from off the shelf components.
More recently, using off-the-shelf hardware and software has become a viable option for embedded systems designers. In an upcoming article, we will discuss the performance, security, and flexibility factors that must be considered when using off-the-shelf hardware and software.
Continuous Integration and Test
Continuous integration and automated testing is the backbone of a successful Agile process. Continuous integration automates the build process and continuous automated testing provides rapid feedback on quality through regression testing.
Automating the build of embedded software is often challenging, and automating a regression test suite that involves embedded hardware can be a sufficiently daunting task that many developers pass on this valuable tool. An upcoming article will describe how embedded build environments can be integrated into popular Continuous Integration systems and how automated testing can include embedded hardware.
Using Agile methodology in embedded system projects can provide value in every stage of the development process.
 Boehm, B. (1988), “A Spiral Model of Software Development and Enhancement,” IEEE Computer 21, 5, 61-72
 Sutherland, Jeff; Schwaber, Ken (1995). Business object design and implementation: OOPSLA ’95 Workshop Proceedings. The University of Michigan. p. 118. ISBN 3-540-76096-2.