Skip to main content

Software Development

Software development supports the incremental development of features that can be delivered to streams or other stakeholders. Included are design, implementation, unit tests, component tests, and bug fixing. Software development can result in deliverables, e.g., firmware, applications, and tools.

For embedded systems, the software or firmware is dependent on the hardware, and the software and hardware processes need to be tightly integrated.

Process Overview

Principles

  • Design and document the solution parallel with the code. Use design patterns for classes and methods​.
  • Plan for providing secure code.
  • Commit code frequently, preferably daily, to ensure quality and development speed​.
  • Protect the code base with automated unit tests, component tests, static code analysis, and code reviews applied before acceptance​.
  • Ensure consistency and traceability from requirements and architecture to design code and test​.
  • Continuously refactor and refine the design, code, and tests to reduce technical debt​.
  • Provide input to end-user documentation.

Activities

SWDev1

Artifacts

Artifact​Description​RACI​Receiver​Comments
Component CapabilityDescribes what the component is capable to do. Lives with the component lifecycle.(R): Development Team
(A): Product Owner
(C): Architect, Development Team, Ex Component Responsible, Safety Engineer
(I): Cyber Security Engineer
Dev. Team-
Detailed DesignDetails the high-level design and describes the component structure with modules and classes as well as internal/external interfaces.(R): Development Team
(A): Product Owner
(C): Architect, Development Team, Ex Component Responsible, Safety Engineer
(I): Cyber Security Engineer, Quality Control Manager
Dev. TeamFormat can be decided per stream.​
CodeHigh-quality code(R): Development Team
(A): Development Team
(C): -
(I): -
Dev. Team-
Unit testUnit test that ensures the quality of the units/code.​(R): Development Team
(A): Development Team
(C): -
(I): -
Dev. Team-
Unit test resultResult from automated unit tests managed in tools.​(R): Dev Team
(A): Product Owner
(C): -
(I): -
Dev. Team-
Component testComponent test that ensures the quality of the component.​(R): Development Team
(A): Development Team
(C): Cyber Security Engineer
(I): Product Owner
Dev. Team-
Component test resultResult from automated component tests managed in tools.​(R): Dev Team
(A): Product Owner
(C): -
(I): -
Dev. Team-
User DocumentationDrafts of user documentation describing the functionality from a user perspective.(R): Development Team
(A): Product Manager
(C): -
(I): -
Product Manager, Test Team, User-
Note: Cyber Security, Safety, and Ex roles should be considered when applicable.

Dependencies

SWDev2

References

Owner: Software Development Team