Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Space Shuttle Software: Not For Hacks

Posted by timothy on Fri May 19, 2000 04:42 AM
from the nothing-too-much dept.
Jeff Evarts writes: " This article in Fast Company talks about the process the Shuttle Group uses to make software. At first it seems too predictable: a very cool project but no hacks, no pizza-and-coke all-nighters, etc. Then, however, it goes on to talk about why: They have an informed customer, they talk to that customer until they have a very clear idea of what is wanted, they have a budget focused on prevention, and they focus on fixing the process and not blaming the individual."

As someone who's done more than his share of late-nighters, it was an interesting view into the mission-critical environment. Maybe there are a few software firms out there that would rather spend some of their money on better processes rather than technical support engineers. Maybe a little more market research and a little less marketing, too. A good read."

These guys are "pretty thorough" the way Vlad the Impaler was "a little unbalanced." Still, you have to wonder how they can claim single-digit errors among thousands of lines of code, but I guess the proof is in the rocket-powered pudding. And lucky for them, their target platform was recently upgraded.

This discussion has been archived. No new comments can be posted.
Space Shuttle Software: Not For hacks | Log In/Create an Account | Top | 178 comments (Spill at 50!) | Index Only | Search Discussion
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1) | 2 | 3
  • Who wrote the Mars landing software? by ahg (Score:2) Friday May 19 2000, @12:44AM
  • Re:Processes in software engeneering. by DavidpFitz (Score:1) Friday May 19 2000, @12:48AM
  • Re:Seems almost like ISO... by Coz (Score:1) Friday May 19 2000, @04:59PM
  • Structural problems with the software industry by WebSerf (Score:1) Friday May 19 2000, @05:00PM
  • Suits? by Dreamweaver (Score:1) Friday May 19 2000, @05:14AM
  • Reliability and Tough Professionals by Sara Chan (Score:1) Friday May 19 2000, @05:17AM
  • Re:What's fun in software development? by aiken_d (Score:1) Friday May 19 2000, @05:11PM
  • Re:Spacecraft Design by Coz (Score:1) Friday May 19 2000, @05:21PM
  • CMM Level 5 does not come from hacking by Yousef (Score:1) Friday May 19 2000, @05:32AM
  • Re:Again, I don't understand by pyrrho (Score:1) Friday May 19 2000, @08:43PM
  • Re:Haven't we seen this before? by Seneca (Score:1) Saturday May 20 2000, @06:03AM
  • Re:Who are the kernel QA gurus? by Timberwoof (Score:1) Saturday May 20 2000, @11:17AM
  • Re:Seems almost like ISO... by Mr. Slippery (Score:2) Friday May 19 2000, @05:43AM
  • The value of an exacting process... by petark (Score:2) Friday May 19 2000, @12:48AM
  • and how slowly they are being developed? I don't mean that it's a bad thing -- it's good that Shuttle program allows them to do it at reasonable pace and with reasonable requirements, but if everyone else wasn't under constant pressure, and if everyone's else software wasn't a victim of feature bloat, dealing with poorly documented and even worse implemented protocols, and never-ending stream of bullshit coming from the management, everyone else would write robust software, too. Well, not really everyone -- some "programmers" wouldn't be able to do anything because they have no skill, no education or are plain dumb, but reasonably geeky and educated programmer can pull something like that in ideal conditions -- and those guys _are_ working in ideal conditions.

  • Re:Again, I don't understand by nikko (Score:2) Friday May 19 2000, @12:54AM
  • Re:Flight Software by Sunracer (Score:1) Friday May 19 2000, @12:56AM
  • by Glimmer_Man (126147) on Friday May 19 2000, @12:57AM (#1061983)
    I worked on some mission-critical/life-critical stuff about 2 years ago. It was aircraft related, and since it was basically carrying the data which made the plane fly it was critical by any definition. The processes we followed was absolutely document driven. User specs were examined, questions asked and the user asked to add definition and clarification for several iterations of the document. Then the software requirements etcetcetc were followed, ech document with quite a bit of iteration. Eventually we found that typically documentation and design would take 50% of the project. Testing would take about 30 to 35%, and the actual implementation hardly took any time at all. Now in the commercial world, I find that the process is VASTLY different. Implementation has started shortly after user specs have hit the desk, before design or documentation has begun. As a result, the system we currently have is very patchy in places. Its mission is a lot less critical, but the bugs slow us down tremendously. The bugs are due to the process. The process is requirements driven, not documentation driven. But it seems that the current system I'm working on has about the same complexity as that I used to work on. Only even though we are supposed to be pushing it all out the door faster, the bugs are slowing us to the point where we have approximately the same rate of progress as the mission-critical project!! Lesson: If you do it by the documentation, you will push it out faster and cleaner (and more bugfree!!!)
  • If I had there budget... by myxlplix (Score:2) Friday May 19 2000, @01:01AM
  • Re:Flight Software by kzinti (Score:2) Friday May 19 2000, @01:02AM
  • Re:I can understand why they want no hacks by eddy the lip (Score:1) Friday May 19 2000, @01:03AM
  • Italics by PhilHibbs (Score:2) Friday May 19 2000, @01:05AM
  • Re:how the best are made... by Timberwoof (Score:1) Saturday May 20 2000, @11:31AM
  • Re:Interesting stuff by Speed Racer (Score:1) Saturday May 20 2000, @01:03PM
  • Re:Processes in software engeneering. by Marketolog (Score:1) Sunday May 21 2000, @05:07AM
  • Re:Suits? by brix (Score:1) Friday May 19 2000, @05:54AM
  • Re:The importance of documentation by TomV (Score:1) Sunday May 21 2000, @10:10PM
  • Re:Formal Methods are the key. by El Cabri (Score:1) Friday May 19 2000, @05:54AM
  • Re:The joy of PLCs by ballestra (Score:1) Monday May 22 2000, @06:13AM
  • How many of us wish by alarmo (Score:2) Friday May 19 2000, @06:02AM
  • Re:What's fun in software development? by mge (Score:1) Monday May 22 2000, @04:49PM
  • Re:Somewhat bogus article by frogjump (Score:1) Friday May 26 2000, @10:49AM
  • ... you have more than enough to do it well.

    The problem with this arguement is that while many companies think that they can't afford to do it, what they really can't do is afford NOT to do it. Software is becoming more complex - it's the nature of the beast. For the most part, design is not; we are all still using procedures that were brought into being in 'dawn of computer age', with the exception of higher order languages and more focus on OO.

    You are correct in that it may be expensive, THE FIRST TIME. This is called a 'learning curve' and the cost is amortized over the number of times you use this technique. You may also say that the process itself is expensive but that is incorrect, or at least only partially correct. The process allows errors to be caught EARLY, which reduces cost. Please don't tell me that you believe a code-compile-fix routing can catch these sorts of errors as early as a well thought out design.

    Also, rigourous design allows for flexibility - this may sound contradictory but consider the use of design patterns. They are NOT things that can just be thrown into the code ad hoc; they require thought and intelligence. A good upfront design means the ability to use these tools. Consequently, use of these design patterns allows for a certain level of flexibility in statisfying the lower to medium level nasty customer requests, and certainly helps on the more egregious ones. Does a code now, look later approach allow this? (if you think so, I have this bridge I'd like to sell you ...)

    In short, yes, using these techniques is expensive. But they also produce code that cuts development time (i.e., no stuck in debug/extra request phase for 2 years) and once people get used to the process, the extra cost/load is minimal.

  • Haven't we seen this before? by sjpadbury (Score:1) Thursday May 18 2000, @11:53PM
  • Their code is good because... by Anonymous Coward (Score:2) Friday May 19 2000, @06:07AM
  • Flight software crashes by eagl (Score:1) Friday May 26 2000, @07:04PM
  • Again, I don't understand by Anonymous Coward (Score:1) Thursday May 18 2000, @11:55PM
  • Re:Flight Software by Maurice (Score:1) Friday May 19 2000, @06:18AM
  • Maybe they can fix 2.3's VM by Anonymous Coward (Score:1) Thursday May 18 2000, @11:57PM
  • Re:"No Pizza" is good by megamanic (Score:2) Friday May 19 2000, @06:32AM
  • by BigStink (99218) on Friday May 19 2000, @12:00AM (#1062006)
    It's not just space shuttle code that needs extreme reliabilty. The embedded systems in civilian aircraft are not interrupt-driven because of the reliabilty issues associated with interrupt-driven code - interrupts make the software to hard to debug thoroughly (becuase there are so many combiniations and timings of input signals to test), make faults difficult to replicate and have the potential to go wrong on a spurious set of input signals. This sort of problem doesn't really matter too much in a home or corporate computing environment, but it would be a major disaster if a plane carrying a few hundred people were to crash into a city with a population of a few million, just because of a software error. These things need 100.00 per cent reliability, so obviously software hacks are frowned upon.
  • how the best are made... by darial (Score:1) Friday May 19 2000, @06:32AM
  • Re:Flight Software by acre (Score:1) Friday May 19 2000, @06:37AM
  • But consider what "a crash" means ... by Seth Finkelstein (Score:1) Friday May 19 2000, @12:03AM
  • Hey! Isn't this the way that profs say to program? by peengers (Score:1) Friday May 19 2000, @01:09AM
  • hehe... by Raymond Luxury Yacht (Score:1) Friday May 19 2000, @01:09AM
  • Re:Who wrote the Mars landing software? by Ig0r (Score:1) Friday May 19 2000, @01:12AM
  • Re:Processes in software engeneering. by -brazil- (Score:1) Friday May 19 2000, @01:17AM
  • by TomV (138637) on Friday May 19 2000, @01:25AM (#1062014)
    I worked on some mission-critical/life-critical stuff about 2 years ago. It was aircraft related, [...] The processes we followed was absolutely document driven.

    Likewise, i worked for a while on the signalling system for the Jubilee Line Extension for the London Underground.

    Totally documentation driven. First there was the CRS (Customer Requirements Spec). - this then transformed via an SRS (Systems Requirement Spec.) into the FRS (Functional...) and the NFRS (Non-functional...). From these we had Software Design specs, Module Design Specs, Object Design Specs, Boundary Layer Design specs. in all there were around 4000 specification documents for the project, often at issue numbers well into the teens.

    What really made the difference though, was not so much the existence of documentation, as the absolute insistence on traceability - every memeber function of every class in the whole system could be traced back to the Customer Requirement Spec, and every Requirement could be traced to its implementation. This meant - no chrome: everything in the spec was p[rovided, and nothing was provided that wasn't in the spec.

    Also worth noting that: the whole thing was in ADA95. The compiler was very carefully chosen. Coding standards were tight, and tightly enforced - function point analysis was king - anything with more that 7 function points was OUT, simple as that. Every change to anything, however small, required an inspection meeting before and after implementation, with specialits from every part of the system which could be impacted, plus one of the two people with a general overview. Then there were the two independent test teams and the validation team.

    Ye Gods it got tedious, no denying that. But in a situation where lives depended on good software...

    Now I probably apply only a tiny fraction of what I learned, but when I decide to ignore part of the methodology, at least I know I'm ignoring it. And I'm aware of what I'm missing.

    In short - learn about the safety-critical approach. Ditch most of it as excess baggage by all means - it's often simply not justifiable. But be aware of the choices you're making.

    TomV

  • Re:ohh if only... by -brazil- (Score:1) Friday May 19 2000, @01:27AM
  • I bet they also have enough time and enough $$$ by Lazy Jones (Score:1) Friday May 19 2000, @01:42AM
  • Re:An alternative strategy by sysadmn (Score:1) Friday May 19 2000, @06:39AM
  • Re:Interesting stuff by aclaudet (Score:1) Friday May 19 2000, @06:42AM
  • Re:Here's the difference by CaseyB (Score:2) Friday May 19 2000, @06:43AM
  • by severian (95505) on Friday May 19 2000, @06:57AM (#1062020)
    One of the assertions that seems to keep coming up is that higher quality code (i.e. more stable, predictable, etc.) always means more expense or time to create. That's not necessarily true. To take an example from the car industry: in the 60's/70's American car makers made cars by building them on the assembly line, and then having "quality inspectors" at the end of the line who would check for defective parts which would then get fixed. Using this model, it was always assumed that achieving higher quality naturally meant higher costs (you would have to spend more to hire more inspectors, and you'd have to replace more parts), and longer time (adding new checkpoints in the line would increase the time to manufacture a car).

    But then the Japanese came along with a radical new idea: if there are defective parts coming down the line, then we should figure out why they were created defectively in the first place and fix that. Then the number of defective parts at the end of the line would be less, thus you would need *fewer* inspectors and *less* time at the end of the assembly line. (Ironically, this principle came from an American named Edward Deming; unfortunately American companies were too successful during his lifetime for them to take him seriously :-) So the Japanese were able to build cheaper cars quicker than the Americans while actually having higher quality.

    I think that's very analogous to the current argument. Under the current system of coding, you basically hack together something that sorta works, and then use sophisticated debuggers/development tools to figure out which parts are buggy. Using that system, it's true that higher quality requires more cost and time.

    But I think the point of this article is that that is the wrong way to approach programming. First, figure out why defective code gets written in the first place (be it poor client specifications, poor management, poor documentation, whatever) and then fix those processes, and you'll turn out quality code without having to spend any more time or money!

    As a practical example, I first learned C under a CompSci Ph.D. who was a quality fanatic. In order to teach me to code properly, he would give me projects and then not allow me to use a debugger. Nothing at all. Zilch. Nada. The only thing I was allowed was to place print statements within my program wherever I wanted to see what was going on. As a result, I spend *a lot* of my time planning my code out, and reviewing it over and over again before even compiling it, because I knew that if there were bugs in it, I couldn't just fire up a debugger and take a look.

    And secondly, if there were bugs, I couldn't just trace through the entire program or create a watch list of every variable. I had to study the bug and understand it, look at the code and figure out where the bug most likely was, and then use selective print statements to look at the most suspicious stuff. That way, when I encountered bugs, I'd be forced to actually understand what the bug was and then analyze my code to figure out where that error most likely was.

    If this sounds like a programming class from hell, believe me, it was incredible! I couldn't believe how much of my code worked the first time it compiled. And when there were bugs, I actually fixed the underlying flaw in the logic rather than just applying a temporary patch. What's more, since the rest of my program was well planned and documented, there were no "hidden" effects: if I found a bug, I knew exactly which parts of the program it affected, and perhaps more importantly, *how* it affected those parts. Thus they were very easy to fix.

    Believe it or not, it took me less time to program this way than using debuggers, and the resulting code was much more stable and understood.

    If you look at commercial software these days, it's not uncommon for the debugging period to take longer than the actual coding. In other words, there are more quality inspectors than there are assembly workers, and the time the code spends in inspection stations is longer than it spends being produced. It's tough to say that this is the "efficient" method of programming...

    If you want to see where this is heading, just turn once again to the car industry: once American companies got their asses kicked by the Japanese, they adopted their techniques, and Surprise! Cars now come out of their factories with higher quality, in less time, and at less cost (adjusted for inflation and new features :-). Who would've believed it? :-)

  • Re:"No Pizza" is good by Spoing (Score:2) Friday May 19 2000, @07:01AM
  • AI used in combat systems by Dr Dick (Score:1) Friday May 19 2000, @07:04AM
  • Cluen't by dmiller (Score:1) Friday May 19 2000, @07:06AM
  • Hit the nail on the head by Delphis (Score:1) Friday May 19 2000, @07:07AM
  • Several of my teachers work for NASA by Dungeon Dweller (Score:1) Friday May 19 2000, @01:42AM
  • SEI Web Site by north.coaster (Score:1) Friday May 19 2000, @01:43AM
  • knocking thhose who rewrite their code. by BoLean (Score:2) Friday May 19 2000, @01:44AM
  • "No Pizza" is good (Score:3)

    by cshotton (46965) on Friday May 19 2000, @01:49AM (#1062028) Homepage
    ...no pizza-and-coke all-nighters...

    That's because pizza-and-coke all-nighters are a direct byproduct of poor planning, either by the engineer implementing the code, the architect creating the design (if there even is such a person) or the person making the engineer's schedule. And the result is usually hastily written, incompletely tested software that is typical of most product offerings for use on the desktop.

    The process of authoring mission critical, man rated software is so far removed from the ad hoc, informal, duct-tape-it-together approach that most programmers use that no direct comparison can be made. I've seen both ends of the software development spectrum and they each have their uses. You can't launch a shuttle with a bunch of last minute kernel patches and some stuff that was written the night before the launch date. But you can't compete in the commercial software marketplace with code that takes 2 or 3 years to specify, design, implement, test, and integrate, either.

    Stand in awe of the people who have the skill and discipline to write software of this quality. Learn what you can from their process and try and use the lessons they've learned. Their stuff doesn't break, because when it does, people die. If O/S developers had that same attitude about their code, we'd never see blue screens of death, kernel panics, or any of the other flakiness we tolerate on our desktop machines.

  • Re:THAT is how to write code by VSc (Score:1) Friday May 19 2000, @01:53AM
  • Re:An alternative strategy by BlaisePascal (Score:2) Friday May 19 2000, @01:54AM
  • Re:Formal Methods are the key. by StormyMonday (Score:1) Friday May 19 2000, @01:56AM
  • Re:Haven't we seen this before? by MikeApp (Score:1) Friday May 19 2000, @01:58AM
  • Re:Processes in software engeneering. by Doctor_D (Score:2) Friday May 19 2000, @01:59AM
  • Re:Formal Methods are the key. by pnkfelix (Score:1) Friday May 19 2000, @02:00AM
  • by Animats (122034) on Friday May 19 2000, @07:16AM (#1062035) Homepage
    That article has been around for a while. It paints an excessively rosy picture of the Space Shuttle flight control software.

    Here's NASA's own history [nasa.gov] on bugs in that software:

    • So, despite the well-planned and well-manned verification effort, software bugs exist. Part of the reason is the complexity of the real-time system, and part is because, as one IBM manager said, "we didn't do it up front enough," the "it" being thinking through the program logic and verification schemes. Aware that effort expended at the early part of a project on quality would be much cheaper and simpler than trying to put quality in toward the end, IBM and NASA tried to do much more at the beginning of the Shuttle software development than in any previous effort, but it still was not enough to ensure perfection.
    Read the NASA history. They had a 200-page known-bug list in 1983, although they did fix most of them during the long downtime after the Challenger explosion.

    The Shuttle's user interface is awful. The thing has hex keyboards!. Some astronaut comments include

    • "What we have in the Shuttle is a disaster. We are not making computers do what we want" -- John Young, Chief Astronaut, 1980s
    • "We end up working for the computer, rather than the computer working for us." -- Frank Hughes, NASA flight trainer
    • "crew interfaces...more confusing and complex than I thought they would be" -- John Aaron, NASA interface designer
    • "(the) 13,000 keystrokes used in a week-long lunar mission are matched by a Shuttle crew in a 58-hour flight" -- NASA history

    This project should not be held up as a great example of software engineering. Even NASA doesn't think it is.

  • Re:I bet they also have enough time and enough $$$ by Delphis (Score:1) Friday May 19 2000, @07:35AM
  • Re:Can you imagine just how simple those things ar by Gallowglass (Score:1) Friday May 19 2000, @07:35AM
  • Re:THAT is how to write code by drudd (Score:2) Friday May 19 2000, @07:51AM
  • Re:Higher Quality != Higher Cost/Time! by otis wildflower (Score:2) Friday May 19 2000, @08:15AM
  • Re:Flight Software by danale (Score:1) Friday May 19 2000, @08:16AM
  • Re:ohh if only... by guran (Score:2) Friday May 19 2000, @02:04AM
  • Re:I can understand why they want no hacks by proj_2501 (Score:1) Friday May 19 2000, @02:07AM
  • Re:Processes in software engeneering. by cutevoice (Score:1) Friday May 19 2000, @02:09AM
  • Re:Processes in software engeneering. by Paul Wright (Score:1) Friday May 19 2000, @02:10AM
  • Re:This is what fault-tolerant systems are for by Paul Townend (Score:1) Friday May 19 2000, @03:00AM
  • 1 Bug? by Lozzer (Score:1) Friday May 19 2000, @02:13AM
  • Re:Redundant - kinda by Anonymous Coward (Score:1) Friday May 19 2000, @02:14AM
  • Re:Interesting stuff by SlydeRule (Score:1) Friday May 19 2000, @03:02AM
  • Re:Flight Software by kzinti (Score:1) Friday May 19 2000, @02:21AM
  • Not Exactly by nathanm (Score:1) Friday May 19 2000, @03:04AM
  • Who are the kernel QA gurus? by hubie (Score:1) Friday May 19 2000, @02:22AM
  • Re:Not Exactly by luckykaa (Score:1) Friday May 19 2000, @03:10AM
  • The SEI CMM is the real deal ! by gelfling (Score:1) Friday May 19 2000, @03:11AM
  • I want my SPECS, dammit! by Anonymous Coward (Score:1) Friday May 19 2000, @03:12AM
  • Here's the difference by CaseyB (Score:2) Friday May 19 2000, @03:14AM
  • Ariane 5 by SlydeRule (Score:1) Friday May 19 2000, @03:15AM
  • Re:Safety is cool... by Alan Shutko (Score:2) Friday May 19 2000, @03:16AM
  • Re:Interesting stuff by cheezehead (Score:1) Friday May 19 2000, @08:30AM
  • 3rd Job = 1st Experience with Software Engineering by weston (Score:2) Friday May 19 2000, @08:54AM
  • Failure Criticality by CorporateProgrammerD (Score:1) Friday May 19 2000, @09:02AM
  • Re:"No Pizza" is good by jlowery (Score:1) Friday May 19 2000, @09:18AM
  • Re:Flight Software by kzinti (Score:1) Friday May 19 2000, @09:26AM
  • Re:Its ONE way to write code by dimator (Score:1) Friday May 19 2000, @09:27AM
  • 99.9 percent by hughesma (Score:1) Friday May 19 2000, @09:30AM
  • Interesting stuff by Straker Skunk (Score:2) Friday May 19 2000, @02:24AM
  • Re:Can you imagine just how simple those things ar by FarHat (Score:1) Friday May 19 2000, @02:26AM
  • Re:Not just space shuttles. by wass (Score:1) Friday May 19 2000, @02:26AM
  • Re:Flight Software (Score:3)

    by kzinti (9651) on Friday May 19 2000, @02:27AM (#1062068) Homepage Journal
    Want to know what a Shuttle GPC looks like? Check out [nasa.gov]
    http://www.ksc.nasa.gov/mirrors/images/images/pa o/STS39/10064134.htm.

    --Jim
  • by altman (2944) on Friday May 19 2000, @02:27AM (#1062069) Homepage
    The problem is, in the commerical world the product is driven by tight deadlines and getting the product out before you get eaten alive by your competitors (who are also doing the same thing).

    If your company took the time to write very stable, near-bug-free code, they'd take so long doing it they'd go out of business - their competitor would get the business with a flakey but shipping product and by the time you turned up with your perfect product, everyone would be locked into their stuff (and most likely would have been using it for a couple of years).

    Noone wants to write buggy code, we all try to do our best; logical & clear design, defensive programming & good documentation give a good base. Peer review and experience (been there, don't want to do that again) help a lot too. Just writing the comments first (saying what you're *going* to do before doing it) helps.

    Another problem is that writing bug free apps on (say) windows is almost pointless as the app will still fall over when some bit of buggy OS/windows API code falls over. Things have to be stable and bug-free from the hardware upwards to give an impression of stability to the user - the problem is, the average user can't tell the difference (and couldn't give a toss) whether the app or the os fell over, it's just "my WP crashed and I lost my work".

    Welcome to the real world. Software can be flakey because it was written to be useful before the hardware went out of date - not exactly a problem with the shuttle. You can spend ages hand-crafting efficient code to be overtaken by crap code on a faster CPU. Blame the chip companies for moving so quickly :)

    Hugo
  • Spacecraft Design by Catmeat (Score:1) Friday May 19 2000, @02:29AM
  • Re:Flight Software by michael.creasy (Score:1) Friday May 19 2000, @02:34AM
  • Its ONE way to write code by BigTom (Score:1) Friday May 19 2000, @03:17AM
  • Re:Interesting stuff by KannibalKing (Score:2) Friday May 19 2000, @03:20AM
  • Refactoring, Extreme programming, and other books. by lonely (Score:1) Friday May 19 2000, @02:38AM
  • Sounds like the companies I've worked for... by Nuncio (Score:1) Friday May 19 2000, @02:41AM
  • Re:Flight Software by jammz (Score:2) Friday May 19 2000, @03:29AM
  • Re:Not Exactly by Wyatt Earp (Score:2) Friday May 19 2000, @03:30AM
  • Re:If I had there budget... by HiQ (Score:1) Friday May 19 2000, @02:43AM
  • by cheeto (128748) on Friday May 19 2000, @03:31AM (#1062079) Homepage

    I work in the Flight Software (FSW) Verification group in Houston.

    The shuttle FSW code is written in something called HAL/S. This stands for High-level Assembly Language / Shuttle. The language was designed to read like mathematics is written. Superscripts like vector bars are actually displayed on the line above, subscripts like indices are displayed on the line below. Vectors and matrices can be operated on naturally, without looping.

    We are the only ones with a compiler, because we wrote it ourselves.

    Here's a sample:

    EXAMPLE:

    PROGRAM;

    DECLARE A(12) SCALAR;

    DECLAREB ARRAY(12) INTEGER INITIAL(0);

    DECLARE SCALE ARRAY(3) CONSTANT(0.013, 0.026,0.013);

    DECLARE BIAS SCALAR INITIAL(57.296);

    DO FOR TEMPORARY I = 0 TO 9 BY 3;

    DO FOR TEMPORARY J = 1 TO 3;

    A =B SCALE + BIAS;
    I+J I+J J

    END;

    END;

    CLOSE EXAMPLE;

    I couldn't get the subscripts to line up, but you get the idea.

  • Re:Here's the difference by segmond (Score:1) Friday May 19 2000, @03:34AM
  • Re:THAT is how to write code by segmond (Score:1) Friday May 19 2000, @03:39AM
  • Re:Spacecraft Design by snub (Score:2) Friday May 19 2000, @03:40AM
  • Re:Interesting stuff by Detritus (Score:2) Friday May 19 2000, @03:42AM
  • Re:"No Pizza" is good by segmond (Score:1) Friday May 19 2000, @03:45AM
  • Redundant - kinda by Finni (Score:1) Friday May 19 2000, @12:06AM
  • Processes in software engeneering. by Marketolog (Score:2) Friday May 19 2000, @12:06AM
  • Bill Pate, who's worked on the space flight software over the last 22 years, says the group understands the stakes: "If the software isn't perfect, some of the people we go to meetings with might die."

    I can see many Dilbert-fans wondering if that is a bug or a feature.

  • by linuxonceleron (87032) on Friday May 19 2000, @12:10AM (#1062088) Homepage
    System Requirements:

    1 Space Shuttle Endeavor
    1 Launch Pad
    1 Houston Mission Control Station
    4 Astronauts

  • An alternative strategy by luckykaa (Score:1) Friday May 19 2000, @12:11AM
  • ohh if only... by Linus H. (Score:2) Friday May 19 2000, @12:12AM
  • Process must suit the project by VonKruel (Score:1) Friday May 19 2000, @09:48AM
  • it is not list of requirements... by silpol (Score:1) Friday May 19 2000, @12:13AM
  • Re:Not Exactly by nathanm (Score:1) Friday May 19 2000, @09:54AM
  • Bug free?? by jonathanclark (Score:2) Friday May 19 2000, @10:00AM
  • by Ikari Gendou (93109) on Friday May 19 2000, @12:14AM (#1062095)
    So people don't see lines like this in the code:

    #Shuttle Waste Dump
    #
    #I dunno WHY this works, but it does!
  • Re:Seems almost like ISO... by VonKruel (Score:1) Friday May 19 2000, @10:02AM
  • Re:Interesting stuff by HP LoveJet (Score:1) Friday May 19 2000, @11:40AM
  • Re:The importance of documentation by seniorcrown (Score:1) Friday May 19 2000, @11:55AM
  • Re:I bet they also have enough time and enough $$$ by megamanic (Score:1) Friday May 19 2000, @02:45AM
  • by Harald74 (40901) on Friday May 19 2000, @02:46AM (#1062100) Homepage Journal

    I can almost hear the moans from the pizza-and-coke crowd whem they read this: "Where's the fun? Where's the creativity?". But they're under the mistaken assumption that putting lines of code into the editor is the only fun thing about developing software.

    IMHO, software development is full of fun activities. What about analysis and design? In my experience, that's where the creativity really comes into play. Just talking to the customer, understanding the problem and making a working design is really difficult, and hence rewarding when you pull it off.

    And what about the process itself? Software development is a young dicipline, where individuals and small groups really can make an impact. Nobody really knows how to make good software. Maybe you'll be the one to find out? As the man says, in the shuttle software group, people use their creativity on improving the process.

    And last, but not least, I bet those guys have a really good feeling when they talk to the customer after delivery. Not like some people I know, who just hide. ;)

    If you can't see the fun of these other activities, maybe you shouldn't be working in this field...

  • Re:Safety is cool... by jhines (Score:1) Friday May 19 2000, @02:48AM
  • This is what fault-tolerant systems are for by Paul Townend (Score:2) Friday May 19 2000, @02:48AM
  • Re:Interesting stuff by harmonica (Score:2) Friday May 19 2000, @02:50AM
  • Re:Interesting stuff by harmonica (Score:1) Friday May 19 2000, @02:51AM
  • by jilles (20976) on Friday May 19 2000, @03:45AM (#1062105) Homepage
    Lets see,
    - half a million LOC (that's small)
    - under development for 20 years
    - new requirements are avoided at all cost

    So it is a small, long lived project with nearly unlimited budget. No wonder they can afford to have such a process in place. But now realistically, how long does it take to set up such a project from scratch. How about having a customer who does not know what he wants. How about deadlines of less than 10 years from now.

    I honestly believe that this way of delivering software is optimal for nothing else but long lived, multi billion dollar projects. In any other case you'll end up with something that is delivered years to late, indeed matches the requirements of 10 years ago and is close to useless.

    Unfortunately many software companies are in a situation where they can't afford to wait for perfect software. Take mobile phones as an example. Typically these things become obsolete within half a year after introduction. The software process is what determines time to market. Speed is everything. If you can deliver the software one month earlier, you can sell the phone one month longer.

    Of course testing, requirementspecs and software designs are usefull for any project but it's usually not feasible to do it properly.
  • Re: Amateurs built the Ark... by beamin (Score:1) Friday May 19 2000, @02:52AM
  • just like where I work by MooseMunch (Score:1) Friday May 19 2000, @03:49AM
  • Challenger Investigation by Ken Hall (Score:1) Friday May 19 2000, @03:52AM
  • Re:Flight Software by FarHat (Score:1) Friday May 19 2000, @02:56AM
  • Re:Processes in software engeneering. by john_many_jars (Score:2) Friday May 19 2000, @02:58AM
  • Re:The value of an exacting process... by Detritus (Score:2) Friday May 19 2000, @04:05AM
  • The joy of PLCs by ballestra (Score:1) Friday May 19 2000, @04:05AM
  • Re:An alternative strategy by cburley (Score:2) Friday May 19 2000, @04:10AM
  • everything revolves around the 'process'. The result is determined by the process.
    The problem is that often the process becomes primary, and the reasons behind it get lost.

    I'm working on a large NASA project now. I have determined that the purpose of this project is not to produce a working software system, but rather to produce a wall full of loose-leaf binders of incomprehensible documentation that no one will ever refer to again.

    The process says we must have code reviews - great! But instead of being an analysis of the logic of my code, it turns into a check against the local code formatting standards - "You can't declare two variables with one declaration, use int a; int b; instead of int a,b;" (yes, that's an actual standard around here) instead of "Hey, if foo is true and bar is negative, you're going to dereference a garbage pointer here!"

    The forms are observed, but the meaning is forgotten, like Christians going to church on Sunday then cutting people off and flipping them the bird on the drive home.

    "Process" won't save us. Which doesn't mean that a certain amount of it can't help, but there is no silver bullet. [virtualschool.edu]

  • Re:An alternative strategy by BigStink (Score:2) Friday May 19 2000, @12:15AM
  • Flight Software (Score:5)

    by kzinti (9651) on Friday May 19 2000, @12:16AM (#1062116) Homepage Journal
    I happen to work just down the hall from the guys who maintain and upgrade the shuttle Flight Software (FSW), and I can tell you they have a rigorous design, inspection, and test sequence that they go through before they fly new or modified code. The story around here (which I have no reason to doubt) is that the FSW team was one of the first SEI level-5 certified shops in the nation.

    I can also tell you that NASA avoids having to make unnecessary changes to the FSW. For example, the new "glass cockpit" recently discussed here on Slashdot: when these upgrades were designed, they chose to design the interface to the new display modules to exactly mimic the interface to the old intruments. In other words, they are true plug-and-play replacements; one significant reason for this was so the flight software didn't have to be modified.

    Likewise, people often ask why the shuttle continues to use such antiquated General Purpose Computers: slow, 16-bit machines designed back in the seventies. There are many reasons, but a big reason is that new hardware would almost certainly require massive changes to the flight software. And rewriting and recertifying all that software would be a huge task. The current FSW works reliably; if it ain't broke...

    Huzzah! As I type, we just launched Atlantis. Go, baby, go!

    --Jim
  • Re:ohh if only... by Emil Brink (Score:2) Friday May 19 2000, @12:16AM
  • Formal Methods are the key. by Anonymous Coward (Score:2) Friday May 19 2000, @12:18AM
  • Seems almost like ISO... by vchoy (Score:2) Friday May 19 2000, @12:18AM
  • If you read past this... by pwhysall (Score:2) Friday May 19 2000, @12:22AM
  • by dnnrly (120163) on Friday May 19 2000, @12:22AM (#1062121)
    Some of my most succesful programs (read, they actually worked or there abouts) came about because I was in a funny mood and decided to actually plan it out. From what I hear about in the real world, some (but by all means not all or even most) programmers look down on clients just because they don't know much about programming. They assume that just because they have a certain expertise over others that they somehow know more than them in general.
    The good thing about the way software is written here is that the requirements are written down and sorted out before they even do the planning. How many prgrammers, groups, firms etc. can say that. I will admit, though, that a major problem is changing requirements. Something that just happen in the same way for NASA. It might just be better if people decided to wait a bit before jumping in to the programming. They'll save themselves more time and money in the long run.
  • Re:Bug free?? by zantispam (Score:1) Friday May 19 2000, @11:57AM
  • Re:Processes in software engeneering. by JTB (Score:1) Friday May 19 2000, @12:20PM
  • Re:Formal Methods are the key. by gargle (Score:2) Friday May 19 2000, @12:50PM
  • Re:Again, I don't understand by homer_ca (Score:1) Friday May 19 2000, @12:50PM
  • by El Cabri (13930) on Friday May 19 2000, @04:28AM (#1062126) Journal
    After the Ariane 5 maiden flight failure in '96, the software was tested by an academic lab in France with heavily mathematical formal methods. The arithmetic exception that caused the $1b explosion was proved to be possible, along with several other 'dangerous' operations. Formal methods are now taken much more seriously and the incident is invariably told as an incentive to students in majors that relate to the mathematical aspects of programming.

    Another formal system originated in France is the Methode B, that consists in progressively refining logical statements that apply to the desired behaviour of your program (like assert() you put before and after the body of a function) into the implementation of the behaviour :

    http://estas1.inrets.fr:8001/ESTAS/BUG/WWW/BUGho me/

    An academic formal methods team that checks the Ariane 5 software:

    http://pauillac.inria.fr/para/eng.htm

    http://pauillac.inria.fr/para/eng.htm
  • Re:This is what fault-tolerant systems are for by Harald74 (Score:1) Friday May 19 2000, @04:29AM
  • Re:Formal Methods are the key. by 97jaz (Score:1) Friday May 19 2000, @01:42PM
  • Re:Not Exactly by Ellen Forradalom (Score:1) Friday May 19 2000, @04:36AM
  • Re:Who wrote the Mars landing software? by sigwinch (Score:1) Friday May 19 2000, @03:05PM
  • Re:Somewhat bogus article by Stu Charlton (Score:1) Friday May 19 2000, @03:09PM
  • Re:Haven't we seen this before? by SEWilco (Score:1) Friday May 19 2000, @04:37AM
  • Author missed the point. by magic (Score:1) Friday May 19 2000, @04:54AM
  • Re:What's fun in software development? by Adam Selene (Score:1) Friday May 19 2000, @03:11PM
  • Re:Seems almost like ISO... by vchoy (Score:1) Friday May 19 2000, @05:00AM
  • Re:Seems almost like ISO... by vchoy (Score:1) Friday May 19 2000, @03:55PM
  • Re:The importance of documentation by Thorgal (Score:1) Friday May 19 2000, @05:06AM
  • Ummmm... no? by -ryan (Score:1) Friday May 19 2000, @05:07AM
  • Re:Here's the difference by BigRedZX (Score:1) Friday May 19 2000, @05:10AM
  • Re:An alternative strategy by Anonymous Coward (Score:1) Friday May 19 2000, @12:29AM
  • Safety is cool... (Score:4)

    by MosesJones (55544) on Friday May 19 2000, @12:34AM (#1062141) Homepage

    I never quite understand why it is an act of macho bravado to work all night and live off pizza. It indicates two things 1) A badly run project and 2) poor maintainability in the code.

    In one of my previous incarnations I worked on display systems for Air Traffic Control, where the quality level was also very high, where the performance requirements were exacting and the specifications precise.

    Some would think that this means simple and boring... Of course not. Having to display a track from reception at the Radar to the display in 1/10th of a second isn't easy by any stretch of the imagination, and to do it so it works 100% of the time means you have to understand the problem properly rather than coding and patching.

    If only more projects worked like that then there would be a lot less bugs in the world.
  • Re:THAT is how to write code by ahg (Score:2) Friday May 19 2000, @12:37AM
  • Re:Flight Software by maetrix (Score:2) Friday May 19 2000, @12:38AM
(1) | 2 | 3