Search:

PmWiki

pmwiki.org

edit SideBar

Main / Do-178

Vance Hilderman: Coding is the easy part. It's hammering nails - anyone can do it.

Introduction

Design Assurance Levels are A through E. Inspections happen at different points of development.

DO-178 is not a standard, not a guideline, not a recipe book. It has considerations, not requirements. Instead, it asks "Do you have a good process, and do you follow it?"

https://en.wikipedia.org/wiki/DO-178B

The certification process needs to be planned in advance, because DERs may want to be on site for part of the process. At times, this can make for scheduling difficulties because you often must share the DERs with other entities and if a pre-planned date is missed it can set you back months waiting to get the DER on site again.

The DER has a lot of say in how much oversight is required for your test processes if much of the work is outsourced. If the test procedure work is seen to be not very thorough, he could ask for 100% oversight. Ideally you'd want to be closer to 20% oversight.

Running code coverage, test procedures, and system tests are "run for score" when the results are to be recorded and submitted for approval. The SW QA rep will want to observe when these tests are kicked off because he'll have to sign off as a witness. It is often possible to get credit for such tests, find a change is needed, but still retain credit for the testing of code that is proven to be unrelated to the change.

What is dead code?

It is in the binary, but never executed. Code that's not in the binary is called ignored.

Basic Tenets

Every line of code must have a reason to exists and map to a requirement.

SW QA is the most important job on the project.

The 6 inputs into code review are:

  • SW reqs
  • req trace matrix
  • coding standards
  • design
  • code
  • checklist

A system is "certified" while a module is "certifiable".

Once approved, don't improve!

Finding bugs, conducting reviews is done by the engineering group, not QA.

Planning docs address what/when/who (not much how):

  • PSAC
  • SQAP
  • SCMP
  • SWDP
  • SWVP

Verification refers to reviews + test + analysis.

30 year rule - how long programs should be able to run.

SW is only as good as the requirements fed into it. Most SW errors are due to poorly specified requirements. A good requirement can be sent to Hawaii and Siberia and the same design comes back.

Examples

Boot ROM code: if included with CPU, pass | if loaded by the BSP, must be certified.

  • Level A: engine controls, flight controls, PFD
  • Level B: FMS, radios, nav system
  • Level C: back up display, back up comm
  • Level D: maintenance, monitoring systems
  • Level E: galley

Models

specification model = WHAT (high level), design model = HOW (low level)

The SM traces to system level or high level SW requirements, has no data structure, no control/data flow, no architecture. The DM traces to SW requirements. All models have bi-directional traceability.

Verification = reviews, test, analysis (only if it can't be covered with reviews and test)

Am I happy with how it will come back if I don't refine it further? If so, that's a low-level requirement.

Cost of fixing a defect is 7 times the cost of preventing it.

How many reviewers? If more than one, divide responsibilities.

Read 8110.49 - the Rosetta Stone for aviation

As a general rule, modelling tools do NOT require qual.

C++ used to be a no-no, but it's becoming more common. Must only use a subset!!

Standard libraries? Throw them out so you don't have to vet them.

Beware of malloc - do not use at run time!!! Maybe init.

Big Vulnerabilities

  • inheritance
  • overloading
  • exception management (define when and how carefully)
  • dynamic memory (use pools)

Cost vs. Quality

There are various ladders on the curve as you strive for perfection. Left to right:

  • plan
  • requirements
  • reviews
  • unit testing
  • functional testing
  • robustness testing
  • others

Other DOs

DO-331 and -332 cover verification: reviews, test, analysis

330-333 are technical supplements to 178.

  • 330 = tool qual
  • 331 = mode based dev and verification
  • 332 = OOT
  • 333 = formal methods

For software, remember that coupling is bad and cohesion is good.

FPGAs fall under "complex electronics HW" and usually certified under 254.


Page last modified on July 22, 2020, at 01:12 PM