Marcus Engineering has developed successful embedded-control software for a variety of applications for nearly a decade. Marcus Engineering employs a software development process illustrated by the following diagram:
Requirements
Every project Marcus Engineering undertakes starts with the drafting of a System Requirements Specification, which is reviewed with the customer and updated until a satisfactory requirement set is completed and approved. The objective is for all requirements to be consistent, complete, realizable, and verifiable.
Specifications
If the project is for more than software, e.g., an electronics design that incorporates an embedded processor, the software requirements are derived from the system requirements and a Software Requirements Specification (SRS) is prepared. Depending on the complexity of the system, an Interface Requirement Specification (IRS) may also be prepared. Coincident with the SRS, a Software Test Plan is prepared for future use.
Design
The SRS (and IRS) informs and governs the next phase, which is the development of a software architecture and a design of the modules and units. The design is reviewed for adequacy and technical feasibility and compliance to the requirements set before the coding effort begins.
Test
The unit and module coding phase includes test of individual code units (functions) and peer review for defect capture and adherence to Marcus Engineering coding standards. As code modules are finished, they are integrated and tested until the entire finished software system is ready for requirements verification test. At each point in the testing phases, failures or adverse observations will drive defect reports which may involve reconsidering design aspects or requirements.
Automation
Frequently Marcus Engineering incorporates automated regression testing using automatic build and test tools such as Jenkins. Though not always appropriate, such efforts can enhance reliability of code changes and test coverage.