Designing Embedded Communications Software