What are the contributions of NASA in the advancement of software engineering? What are the relevant standards that they have to comply with? I'm interested in avionics basically, but I don't find any current information about NASA's contributions in software engineering... can any one help me to do so?
-
3$\begingroup$ This is an extremely broad question, but space shuttle flight software development was famously rigorous. You can read a popular article about it here: fastcompany.com/28121/they-write-right-stuff or search NTRS and klabs.org for more technical papers. $\endgroup$– Organic MarbleApr 27, 2019 at 13:36
-
3$\begingroup$ You might find this interesting: cs.umd.edu/~basili/publications/proceedings/P94.pdf $\endgroup$– Bob JacobsenApr 27, 2019 at 15:23
3 Answers
NASA was (and still is) a leading organization in the field of software engineering, even before the term "software engineering" existed. The kinds of software programs developed for NASA range from one-off scripts / spreadsheets meant to yield a rough approximation to a specific engineering question to programs / scripts / spreadsheets that contain sensitive but unclassified information (e.g., Social Security numbers) to flight software for vehicles that will carry humans into space.
NASA recognizes that the level of rigor and the level of data protection varies widely across the software developed for it. Some software such as a spreadsheet intended to yield a rough estimate of the delta V needed to get to Mars needs very little rigor or protection. The intent is a rough approximation, and there is no sensitive but unclassified data to protect. On the flip side, the flight software that controls a vehicle that carries humans into space and that captures astronaut health data needs both extreme rigor and extreme data protection.
To this end, NASA has several guidelines and requirements regarding how a person or organization must craft software. Software of the highest criticality needs to follow the rather onerous rules for class A software as levied in NASA Procedural Requirements 7150.2. Strictly speaking, all software written for NASA has to follow the rules levied in that document. Not so strictly speaking, notes written in crayon on a bar napkin whilst at a late Friday afternoon get-together at an offsite location (e.g. a non-NASA facility that serves intoxicating beverages) might well suffice regarding the previously mentioned rough spreadsheet.
Your question is very broad, since software is so important to everything NASA does. But I will try to answer to the best of my abilities.
NASA has a rich history of advancing the state of software engineering. In fact, as Martin Schroder noted, Margaret Hamilton, a legendary Apollo program flight software engineer, coined the term "software engineer". NASA has paved the way in writing efficient, reliable, and well-tested code. Take a look at this paper, "Design, Development, Integration: SpaceShuttle PrimaryFlightSoftware System". In it, a rigorous testing and development process is detailed for the space shuttle flight software. Throughout the years software engineers at NASA have developed increasingly reliable techniques for flight software development and IV&V testing. Here is a great paper providing an overview of the MER flight software.
I think above all, NASA's greatest contributions to the field of software engineering has been the amount of quality open-source software they have released. By simply going through code.nasa.gov, you get everything from the Trick simulation environment, to the astrobee software which is flying on the ISS right now. Here is the astrobee software publication. A personal favorite of mine is the release of the Core Flight System (CFS) that aims to create a common framework for spacecraft flight software. With it they created a community of flight software engineers to help advance the state-of-the-art in flight software.
-
1$\begingroup$ thanks this seems to be very helpful for me. $\endgroup$ Apr 30, 2019 at 14:13
-
$\begingroup$ Happy to help. Feel free to ask me more questions. $\endgroup$– esduranApr 30, 2019 at 14:59
Margaret Hamilton, the woman who coined the term software engineering, did so while being Director of the Software Engineering Division of the MIT Instrumentation Laboratory, which developed on-board flight software for the Apollo space program.
-
2$\begingroup$ How could she have coined the term while being Director of the term? $\endgroup$– user20636Apr 28, 2019 at 18:28
-
$\begingroup$ @JCRM I'm speculating, but it's not unusual for someone tasked with creating a new department to have a hand in choosing the department's name. $\endgroup$ Apr 28, 2019 at 20:30
-
$\begingroup$ @JCRM Read the linked article. :-) $\endgroup$ Apr 28, 2019 at 20:42
-
$\begingroup$ I've read it. Nothing to suggest she coined the term while being the Director -- only that she coined the term while working at MIT, and that she [amongst other roles] was Director of Software Engineering at MIT. Also There is a [dubious] tag on her coming up with the term. $\endgroup$– user20636Apr 28, 2019 at 21:42