Designing Embedded Communications Software

This chapter introduces some of the steps used by development teams for building communications software. It builds on the details of the previous chapters to outline the various steps during the design and development. The issues addressed include the stages of development, build versus buy, and using a simulated environment as well as an OS Abstraction Layer. Tools of the trade like development environments and test equipment will also be covered.
This section outlines the typical steps followed in the design and development of software for communications devices. Individual document titles and formats may vary from company to company according to the software development methodology, but the concepts are the same.
Product development starts from two documents which are provided typically by the marketing and product management teams. These are the market requirements document (MRD) and the product requirements document (PRD). The market requirements document covers the target market, customer requirements, competitive analysis, revenue potential, product fit within company strategy, and so on. The product requirements document is derived from the market requirements document and details the features, feasibility studies, engineering tradeoffs, usability criteria, performance requirements, development and delivery schedules, and roadmap or projected life cycle. Some companies combine these into a single document.
The product requirements document forms a framework for the engineering team, which uses it as input to the high-level engineering design (HLD). The high-level engineering design details specific tasks and modules in the system at an architectural level, including functionality and interfaces.