Advantages of Using an Agile Development Process for Embedded Software

Photo: DISTek Integration

According to Wikipedia, Agile software development is “a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.” While there can be some variability among Agile organizations, there are a few important definitions which generally hold true.  A Potentially Shippable Increment (PSI) is a 2 month period of time in which the team will commit to delivering a set of features to a customer. These features can be new development or improvements to existing functionality.  Sprints are 2 week periods during which the features committed to the PSI will be completed.  Features will be defined so that each feature can be completed within a single sprint.

Prior to widespread adoption of the Agile process, most software was implemented following the waterfall development process, which starts at the top with gathering and writing requirements. Next is the design of the system, during which time the requirements are reviewed and decisions are made regarding how features will be implemented. When the design step is complete, several weeks have passed, and implementation of a feature can begin. Depending on the size of the feature, implementation may take from one to three weeks. After implementation has been completed, verification of the feature begins and can take up to two weeks if issues are found. The final step is maintenance of the feature. During this time there may have been external change requests to feature or system functionality. It may take nearly another four weeks to update requirements, implement the change and verify the new operation. Overall the entire implementation of a feature can take up to three months, more if there are changes in the operation of the feature.

With this in mind Agile is an improvement over the traditional waterfall development process. In an Agile process, a working sub-set of a feature will be delivered in two weeks compared to the months required by the waterfall process. This earlier delivery allows for a customer to evaluate a new feature sooner and provide meaningful feedback earlier to the developer. This, in turn, helps to reduce the likelihood of extending development time due to changes after implementation has been completed. Because Agile uses two week sprints, issues found during testing a sub-set of the feature can be brought to the attention of the developer. This provides faster resolution of issues than waiting until the verification stage of the waterfall process. Another benefit of Agile as that at the end of the PSI there is time set aside to provide a demo of what the team did for the last two months to the customer and all interested stakeholders.