Archive for the 'Uncategorized' Category

11
Feb
09

DO-178B Objective A-1#2

DO-178B Table A-1 objective #2 requires that transition criteria, relationships, and sequencing is defined for the various processes. Simply put, you need to think about not only each of the individual processes (writing requirements, implementing code, verifying, performing CM, etc) but how they relate to each other.

To some extent this is a no-brainer: first you write requirements, then you write code, then you verify, then you CM the whole thing at release time. To some extent these tasks will probably overlap: you’ll probably start coding before all the requirements are written, and you’ll probably start verifying before you’re completely done coding. The important thing with objective #2 is that you define when these processes will happen, with respect to each other.

This is also as good a place as any to start with the reminder that these tasks should be performed roughly in order. You don’t want to be coding the whole application first, then backward-engineering the requirements to match what you coded. It’s just not good practice, and it’ll lead to headaches in the end. The best projects I’ve ever worked on in my avionics career have been the ones where requirements and design were rigorously documented prior to coding. It makes the coding task easy and definable, and it leaves you with a easily-certifiable product when you get done.

Let’s end this with an analogy. I think of process as something akin to the protected areas of my favorite Unix box. In normal user mode, I can’t make changes to those areas or settings, nor should I. At times, though, it becomes necessary to make changes. At those times I make judicious use of the sudo command and perform the changes that I need. Then I go back to working in user mode, and back to working under the rules and permissions that I’ve set up.

Processes work the same way. Yes, there are ways you can go and change them, and times when it is appropriate to do so. But other than those times, work in user mode and follow the processes.

10
Feb
09

DO-178B Objective A-1#1

The first objective in table A-1 requires that software development processes and activities are defined. This objective applies to all software levels (A – D), and generally compliance is found in a Plan for Software Aspects of Certification (PSAC), a Software Development Plan (SDP), a Software Verification Plan (SVP), a Software Configuration Management Plan (SCMP) and a Software Quality Assurance Plan (SQAP).

While the PSAC usually stands alone as a document, the other plans are, in my experience, usually grouped together in some combination; typically SDP and SVP get released in the same document. As with most of the DO-178B artifacts, where you put the data isn’t quite as critical as just that it all exists somewhere.

Interestingly enough, for Level D software, the plans must be defined though the objective that the plans comply with DO-178B doesn’t apply. Which, in short, means that for Level D, you must have and follow some sort of plan, even if it isn’t compliant to DO-178B.

Hey, nobody said it had to make perfect sense, did they?

19
Jan
09

How close to formal release do you fix problem reports?

This is a familiar question that comes up at the end of software release cycles. Software development has been completed. Verification is concluding. The last few tests are being run and a problem shows up. What do you do now?

If it’s a serious functional problem, the answer is obvious: you fix it (and hope that it’s not so serious that it affects your delivery date). But what if it’s a minor failure? Still an error, to be sure, but one that is unlikely to show up in any normal use case?

There is a point at which it becomes counter-productive to continue making changes to the software. If the fix for the bug is isolated and easily identified, sure, fix it. But if there is some uncertainty about the fix, or if there is concern that the fix will impact other functional areas in the software, then it is reasonable to leave it alone. The risk of causing other problems in the software with hasty last-minute fixes becomes greater than the risk of leaving the known problem in place.

Be sure to document the problem with a problem report so that it can be fixed for the next release. And be sure to document the problem report, along with the rationale for why it’s safe to leave in the build, and put that documentation in the Software Accomplishment Summary.

Sometimes it’s just safer to leave the bug there.




About SCSW

Safety Critical Software is a blog focusing on the development and verification of avionic and other safety critical software. More -->

credits

Header photo by Naddsy via Flickr.

Follow

Get every new post delivered to your Inbox.