Tuesday, January 25, 2022

Development phases of aerospace flight software

When developing embedded software for a complex system, it is not advisable to do the development primarily on target hardware because a test that might take a single developer 5 minutes on a PC might take 4 people half a day on target hardware. We are talking about 100x of efficiency difference. To minimize time spent on target hardware, the following six phases of aerospace flight software development might help:

This approach converts the typical time - effort curve A to a more manageable B:
Phase 1: Test application logic of each software configuration item separately on non real time commercial PCs  (communication is only via ethernet). To do this you have to have abstraction layers for hardware, OS, time synchronization and non-ethernet interfaces. Examples of application logic: Checking flight envelope, reading DTED files, calculating checksum, converting IMU mathematical model outputs to specific IMU brand interface, estimating position. Tests should be automated and run every night. Automated tests immensely reduce the stress of refactoring and experimentation because if you have "good enough" test coverage, any problem will be discovered at most a day later.

Phase 2: Use commercial PCs with real time OS, integrate software components with each other (still only ethernet communication) and verify that software interfaces and state transitions that depend on timing work as expected. Again, use automated nightly tests.

Phase 3: Now that you have high confidence in software due to thousands of tests having passed during the previous phases, begin deploying software on electronics hardware and test. At this stage, you should mainly focus on verifying that software is working in the constrained environment of target hardware (small heap, stack, disk, RAM, processing power etc.) and that non-ethernet interfaces are ok. If there are problems in application logic, go back to Phase 1/2 development environment for debugging.

Phase 4: Deploy all software to hardware and test.

Phase 5: Add other electro-mechanical systems (sensors, actuators) and test on the ground.

Phase 6: Do full system flight test.

No comments:

Post a Comment