Slashdot Mirror


When Bugs Aren't Allowed

Coryoth writes "When you're writing software for an air traffic control system, military avionics software, or an authentication system for the NSA, the delivered code can't afford to have bugs. Praxis High Integrity Systems, who were the feature of a recent IEEE article, write exactly that kind of software. In "Correctness by Construction: A Manifesto for High-Integrity Software" developers from Praxis discuss their development method, explaining how they manage such a low defect rate, and how they can still maintain very high developer productivity rates using a more agile development method than the rigid processes usually associated with high-integrity software development."

489 comments

  1. nearly unlimited funding by demonbug · · Score: 5, Funny

    probably helps too :P

    1. Re:nearly unlimited funding by GileadGreene · · Score: 5, Interesting

      And yet the reports I've seen on Praxis claim costs and schedules the same or less than the development of software of similar complexity...

    2. Re:nearly unlimited funding by Anonymous Coward · · Score: 1, Interesting

      Doesn't seem to help Microsoft, despite their bottomless coffers....

    3. Re:nearly unlimited funding by Coryoth · · Score: 4, Insightful

      In fact this is the whole point - Praxis manages to deliver software with several orders of magnitude less bugs than is standard in the software industry, but does so in standard industry time frames with developer productivity (over the lifecycle of the project) on par with most non-critical software houses. Praxis does charge more - about 50% above standard software daily rates - but then when you are getting the results in the same time frame with massively less bugs a paying little extra is worth it... you'll likely save money in the support and maintenance cycle!

      Jedidiah.

    4. Re:nearly unlimited funding by Skuld-Chan · · Score: 1

      Its true - I've been in software quite some time (currently work for a company every man woman and child has heard of). Most bugs are classified on time it requires to fix, risk of fixing the bug (most of the time you want to avoid fixing something only to create two more issues), how critical the issue is and mainly > budget availble to fix bugs.

      At any rate - there's no such thing as bug free software. Never will be. There is such a thing as a product that appears to work without bugs and I think thats what most software companies aim for.

    5. Re:nearly unlimited funding by GileadGreene · · Score: 1

      See also this comment, from further down the page.

    6. Re:nearly unlimited funding by Anonymous Coward · · Score: 0

      As a Government Contract Administrator, I can tell you, our funding is anything but unlimited.

    7. Re:nearly unlimited funding by georgewilliamherbert · · Score: 3, Insightful

      I'm sure one could point to, for example, Fog Creek software as another example of somewhere that does a remarkable job with small teams.

      The key point is this: small teams. It's a lot easier to find the people who can produce 10x better (in terms of rate of writing, clean/bug free code, whichever metrics you care for) when you need to find 3 or 5 or 10 people. You can't staff a whole large application development project with the best gurus: there aren't enough out there in the world.

    8. Re:nearly unlimited funding by wtansill · · Score: 1
      Praxis does charge more - about 50% above standard software daily rates - but then when you are getting the results in the same time frame with massively less bugs a paying little extra is worth it... you'll likely save money in the support and maintenance cycle!
      But are they Sarbanes-Oxley compliant? That's what *I* want to know!
      --
      The contest for ages has been to rescue liberty from the grasp of executive power. -- Daniel Webster
    9. Re:nearly unlimited funding by vwjeff · · Score: 1

      Wow. Quality software. Who would have thought? I hope this trend continues. The software business is still a somewhat young industry. Customers want the latest and greatest but do not consider quality as a selling poing for the most part. More power to Praxis and other firms who truely understand the definition of quality.

    10. Re:nearly unlimited funding by Coryoth · · Score: 4, Informative

      Yes, small teams help, but I think it really is worth taking a look at the tools and methods that Praxis uses because there are some remarkably good ideas in there. Take a look at SPARK Ada - the Wikipedia article has some basic examples, and Praxis provides sample chapters of a book on SPARK for download. Seriously, take a little time out of your day, sit down, and read a little about how they do what they do. There really are good ideas that go well beyond just "small teams" if you want to deliver correctly functioning code.

      Jedidiah.

    11. Re:nearly unlimited funding by SeaFox · · Score: 4, Interesting

      You can't staff a whole large application development project with the best gurus: there aren't enough out there in the world.

      And why aren't there? Geeks lament the fall of IT and Computer Science programs at institutes of higher learning, and wonder why people don't want to go into these fields. If there was demand for programmers of the caliber you mention and companies willing to pay salaries deserving of such abilities there would be more people studying towards such a position.

      But if companies are going to just throw up their hands and say "we can't hire competent people, there aren't enough of them in the world, they only doom themselves to a continued shortfall in talent, and an increase in buggy software.

      Nursing is a profession that is always looking for new people and folks who didn't make it through the four-year grind back when they were young are flocking to it because the jobs are waiting. If companies held their coders to a higher standard, they would trim some of the fat in their projects and have jobs open for people willing to do the work. The result would be more productive teams and better applications, a win-win situation.

    12. Re:nearly unlimited funding by Anonymous Coward · · Score: 0

      Amen Brotha!
      I always wonder just hoooooow SOX compliant SOX is....

    13. Re:nearly unlimited funding by Fulcrum+of+Evil · · Score: 2, Insightful

      But if companies are going to just throw up their hands and say "we can't hire competent people, there aren't enough of them in the world, they only doom themselves to a continued shortfall in talent, and an increase in buggy software.

      What they really meant was "we can't hire competent people at the same prices as Jimmy the mounth-breather." Take that as you will.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    14. Re:nearly unlimited funding by Anonymous Coward · · Score: 0

      Well, the PHB will ask you whether they end up paying their software developers less enough more to come out ahead, and I'm sure they pay their developers very well because they're probably extremely skilled cs/programmer types.

    15. Re:nearly unlimited funding by georgewilliamherbert · · Score: 3, Interesting

      While it's hard to argue with the above logic, such changes don't happen overnight just because a demand increases. When we're talking about properly educating people (and by properly, I mean both intensive CS background in theory and practice, and then practical coding in real world environments in quantity to become a good coder as well), it will take five or more years for a demand spike to produce a supply rise.

      The projects I am involved with today won't wait five years for programmers. This is business fact; if they aren't started now, and completed in an economical timeframe, then companies will go out of business and not be around to hire those better programmers in 5 years.

      If you shift the question around to "should we set project and programmer standards" and "should standards improve and evolve over time", and the statement to "current standards are inadequate and irresponsible" then sure, no disagreement.

      In many cases, development problems are the result of not even following what industry standards and best practices are in place now.

      And one thing I don't want to see is formal programming CS programs which produce CS professors exclusively ... though some of my CS academic aquaintences dislike me saying so, from what I see, few of their graduates go into coding in industry. That's a pretty unfortunate thing for the world. To be ultimately useful, these skills need to become things which take people out of college, into industry, and successfully into challenging industry projects.

      Nontrivial problems to solve. If it was easy, everyone would be doing this stuff right already. That obviously isn't true yet...

    16. Re:nearly unlimited funding by hyc · · Score: 1

      Are there really more application development projects out there than there are code gurus? From a distant perspective, I think not; I think there are only a small number of vertically integrated industries out there and a lot of companies reinventing the wheel in each of those industries. If more software development was done in an open, collaborative fashion, solutions would only have to be written once for each of those target industries, and you'd only need to hire a handful of the sharpest programmers to get them done. The rest of the warm-bodies can go find careers they're actually good at, instead of bringing down the quality level of the software industry overall.

      --
      -- *My* journal is more interesting than *yours*...
    17. Re:nearly unlimited funding by archeopterix · · Score: 1

      Who needs unlimited funding when you have such a sound methodology? :-P

    18. Re:nearly unlimited funding by kassemi · · Score: 2, Insightful

      If there was demand for programmers of the caliber you mention and companies willing to pay salaries deserving of such abilities there would be more people studying towards such a position.

      Although you can teach a body all the skills necessary to program, you still need a certain level of competence that doesn't come from education. I could easily (with time) teach plenty of people I know how to program, but only a relative few will ever be able to actually invent on their own... Invention and innovation both being qualities I require the presence of when dubbing someone a guru.

      On top of that, most of the people who have such intuition and innovative qualities are generally located in a field that doesn't offer them much pay. Mathematics, physics and logic - to name a few - historically don't offer too much in the way of funds. These people love their jobs. It's not about the new car and the trophy wife, it's about discovering a new flag protein or integrating a difficult formula... It would be bad business for a company to pay more... They just don't have too.

      --
      What the hell's a "gewie?"
    19. Re:nearly unlimited funding by freedom_india · · Score: 1

      Amen. That's why charging $220 for toilet seats is "Limited Pricing".

      --
      "Doing what i can, with what i have." ~ Burt Gummer
    20. Re:nearly unlimited funding by kimba · · Score: 4, Funny

      At any rate - there's no such thing as bug free software. Never will be.

      10 PRINK "HELLO WORLD"

      Damn.

    21. Re:nearly unlimited funding by ArseKicker · · Score: 1

      You missed the ;

    22. Re:nearly unlimited funding by Anonymous Coward · · Score: 0

      10 PRINK "HELLO WORLD"

      Funny. But how do you know if implementation of the PRINT keyword has no bugs in it?

      Hey, even microprocessor HAVE bugs.

    23. Re:nearly unlimited funding by Weedlekin · · Score: 0, Redundant

      Or "We can have three guys fresh out of college with really impressive degrees for the same price as this other person who is older, and therefore less likely to know about modern computing topics. We will therefore hire the three college graduates, who will then do three times as much useful work."

      --
      I'm not going to change your sheets again, Mr. Hastings.
    24. Re:nearly unlimited funding by legirons · · Score: 1

      "Geeks wonder why people don't want to go into these fields [of IT and Computer Science]."

      Seeing what IT and computer science enthusiasts have to endure as children at school makes it painfully obvious why there aren't more people wanting to persue that option.

      I'm constantly surprised that "geeks" make it to age 16 (especially in the US) without Columbine-style incidents.

    25. Re:nearly unlimited funding by Kadin2048 · · Score: 1

      He could be writing Applesoft BASIC, that doesn't require semicolons to end the line IIRC.

      Everyone knows when you need a stable platform for your mission-critical application, the Apple IIe is where it's at. (Or is that the ][e?)

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    26. Re:nearly unlimited funding by qwijibo · · Score: 2, Interesting

      In order to get the more talented people, companies need to be willing to pay more. It's a chicken vs the egg problem. They can't get the proof that it's money well spent until after they spend the money, so they don't believe it's possible.

      In large organizations, there are already a lot of mediocre people and policies built to deal with that reality. People who know what they're doing face an uphill battle in getting anything done. There are large beaurocracies in place to tell people what standards they must adhere to, but nobody can explain why. Without knowing why, it's hard for the competant people to come up with solutions that meet the technical needs without violating some weird compliance regulations. Everything comes down to the lowest common denominator in large companies. Small companies can avoid this problem, but only until they reach some critical mass of mediocre people, which is when the downward spiral starts.

    27. Re:nearly unlimited funding by qwijibo · · Score: 1

      So it should be:

      10 PRINK "HE;LLO WORLD"

      Now there's a parsing problem and a data issue. Are you trying to introduce bugs for job security?

    28. Re:nearly unlimited funding by lp-habu · · Score: 4, Insightful
      You can't staff a whole large application development project with the best gurus: there aren't enough out there in the world.

      And why aren't there?

      For the same reason there aren't enough really good NFL quarterbacks for every team to have one, despite the money that is spent in trying to find them.

      People differ in ability in every field; the bell curve is real, and only the people who are at the high end of the curve can be considered one of "the best gurus". They will never constitute a large percentage of the group. Ever. Furthermore, there is usually a huge difference in performance between people who are in the top 10% of their field and those who are in the top 0.1% of their field. Most people would consider those in the top 10% as "the best gurus", but really it's only that tiny segment at the very top who deserve the appelation. Even then, you can expect a marked difference between those in the to 0.1% and those in the top 0.01%. Fact of life, folks.

    29. Re:nearly unlimited funding by drrobin_ · · Score: 2, Insightful

      Almost. What if standard out is a pipe that got closed? What if there's not enough memory to run the basic interpreter? What if it gets a kill signal from the kernel? What if it becomes a zombie process?

      As you can see, even the simple 10 PRINT "HELLO WORLD" isn't bug free. To make bug free software you don't need to catch most errors, you need to catch every possible error.

      --
      to accept the praise of personal wisdom is an affront to the very ideal i hold dear.
    30. Re:nearly unlimited funding by qwijibo · · Score: 1

      They charge $220 for toilet seats because it's plausable that government employees are stupid enough to approve the expense. Of course, the billions of dollars for secret projects come from somewhere. If it were easy to figure out how much they're allegedly overpaying for things all over the budget, it would give everyone a good idea how much is in the black budget, which Does Not Exist(tm).

    31. Re:nearly unlimited funding by Ced_Ex · · Score: 2, Insightful

      Or "We can have three guys fresh out of college with really impressive degrees for the same price as this other person who is older, and therefore less likely to know about modern computing topics. We will therefore hire the three college graduates, who will then do three times as much useful work."

      Or on the other hand, "We could hire three college graduates, who will then do three times as much useful work in three times the amount of time required by the old guy with total experience greater than the three graduates put together!"

      Just because guys get old, doesn't mean they stop learning. Good ones are always updating their skill set.

      --
      Live forever, or die trying.
    32. Re:nearly unlimited funding by lgw · · Score: 1

      Inventing engineers working for big companies do draw big salaries. Not as big as running your own business, but that's fine. The problem is: in the hardware world, it's easy to identify your inventors - just look at their patents. In the software world, patents aren't really a good measure - some people have philosophical objection to them, and others are doing genuinely innovative stuff with no application outside of the closed propriatary system they maintain.

      As the software industry matures, I'm really hoping to see a recognition of this. A software guy should be able to become a corporate Fellow without a long patent trail!

      --
      Socialism: a lie told by totalitarians and believed by fools.
    33. Re:nearly unlimited funding by rahrens · · Score: 1

      I knew a guy that worked on the team that designed that "toilet seat".

      In reality, it was a toilet cover, designed so that when the B1 bomber flew in combat missions in non-standard attitudes (ie., upside down) the contents of the toilet didn't splatter themselves all over the inside of the compartment.

      (It seems that when crews flew these bombers on training missions overnight to other bases, and carried luggage, since there was nowhere else on the bomber to keep it, the luggage went into the toilet compartment, hence broken toilet covers that no longer performed their primary function.)

      Once they ran out of the initial supply of replacement parts, it fell to the contracting people to order new parts. Someone felt that it should be redesigned a bit tougher to stand up to the abuse.

      So they had to redesign the part, test the design to be sure it worked, and go through all the stuff that entails. All that for an order for replacement parts for fewer than 50 aircraft!

      So of course it cost more than a toilet seat at Home Depot.

      But when Senator Proxmire was looking for things to ding the military for, the word toilet seat was better than toilet cover, and a picture in the media of him waving a toilet seat he had a staffer buy from Home Depot (or Hechinger at the time, I think) was worth more than just a thousand words.

      Like the famous $150 hammer.

      THAT one was for F16s, with a requirement for operation in an explosive atmosphere (after all, who wants to blow up a multi-million dollar aircraft with a $10 hammer?) Since platinum can be used as a striker in such places without striking explosive sparks, that was used. Hence the cost.

      But when Proxmire noted that one, he failed to mention the explosive atmosphere requirement, as well as the material.

      Again, the picture of him waving a $10 hammer was worth millions in public relations, wasn't it?

      --
      "Money is truthful. If a man speaks of his honor, make him pay cash." Notebooks of Lazarus Long, Robert A. Heinlein
    34. Re:nearly unlimited funding by Weedlekin · · Score: 1

      "Just because guys get old, doesn't mean they stop learning. Good ones are always updating their skill set."

      That was actually the point of my post, i.e. that management don't think experience is necessarily worth paying for. I am 46 years old in a few weeks, and am constantly investigating new languages, methodologies, and tools, because they fascinate me. And while I know that it takes me longer to learn new things than was the case 20 years ago, I now have a much larger knowledge base to work from, and this allows me to see similarities between the new and old that would not have been anything like as apparent to my younger self. This has often meant that I am the radical proponent of things such as aspect-oriented programming and agile development in the jobs I do, while some (but by no means all) colleagues half my age seem to have no motivation to learn anything beyond what theymp He taught at university.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    35. Re:nearly unlimited funding by GileadGreene · · Score: 2, Insightful
      And one thing I don't want to see is formal programming CS programs which produce CS professors exclusively ... though some of my CS academic aquaintences dislike me saying so, from what I see, few of their graduates go into coding in industry. That's a pretty unfortunate thing for the world. To be ultimately useful, these skills need to become things which take people out of college, into industry, and successfully into challenging industry projects.

      Maybe we could start by not assuming that CS grads should be going into industry. CS programmes should be teaching Computer Science - you know, the stuff that prepares you for a career in research. Industrial coders should be going through a software engineering program, in which they learn how to apply the results of scientific research to practical real world problems.

      Just as with other sciences and engineering disciplines, there will likely be a lot of overlap in subject matter. But the fundamental focus is entirely different: there will be material covered in one programme that isn't covered in another, and the perspective taken on the overlap material will be quite different.

      Sadly, many developers are graduates from CS programmes instead of engineering programmes, and too many of the "software engineering" programmes out there have little resemblance to the engineering training found in other disciplines - which is, IMHO, one of the reasons the world of industrial software development is so screwed up.

    36. Re:nearly unlimited funding by lazybeam · · Score: 1

      IIRC the semicolon means to not put the newline on the end of the print, leaving it off then the newline will be applied.

      --
      --
      no sig for you. come back one year.
    37. Re:nearly unlimited funding by dubl-u · · Score: 1

      What they really meant was "we can't hire competent people at the same prices as Jimmy the mounth-breather." Take that as you will.

      They may also mean, "I am not smart enough to tell the difference between competent people and mouth breathers during interviews."

    38. Re:nearly unlimited funding by ichigo+2.0 · · Score: 1

      Or maybe Commodore 64 BASIC.

    39. Re:nearly unlimited funding by zCyl · · Score: 2, Insightful

      If there was demand for programmers of the caliber you mention and companies willing to pay salaries deserving of such abilities there would be more people studying towards such a position.

      But if companies are going to just throw up their hands and say "we can't hire competent people, there aren't enough of them in the world, they only doom themselves to a continued shortfall in talent, and an increase in buggy software.


      Part of the problem is simply that the higher you draw the threshold, you start to get into areas of natural talent which seem to be more difficult to train. But an even bigger problem is the problem of identifying the people with the highest skills. When you're staring there looking at a resume, the best and brightest with the skills to write the most reliable code don't have resumes that look much different from everyone else's resume. Usually programmers can spot which other programmers have abnormally high skill in this area after working with them, so you can find these people by word of mouth, but this doesn't get automatically translated into resume content which can allow you to pick the correct employee out of the crowd.

      My best advice to anyone reading is, if you think you can code like this, and you want to seek out a high salary job based on your unique skill, then you can try proving your skill by releasing open source code which demonstrates this fact. This could give you a boost, but not always one comprehended by the people responsible for hiring at all locations.

    40. Re:nearly unlimited funding by dFaust · · Score: 1
      Just my two cents... we use FogBugz where I work. I'm the one responsible for that purchasing decision after evaluating various products. It's a good product, the price is right (we wanted to have support, not to mention the open-source products I looked at at the time (this was quite some time ago) weren't up to par. Maybe some are now, feel free to reference them) and it's certainly far better than the issue-tracking methods we had previously.

      I also like alot of the things Joel has to say. However, at no point in time would I term his product "remarkable". Given how much Joel talks about "great software", I'm a bit disappointed by FogBugz. Like I said, it's a good product, but hardly remarkable.

      Again, just my two cents.

    41. Re:nearly unlimited funding by bill_kress · · Score: 3, Insightful

      What a lot of people don't realize is that being a Guru is an art.

      What's the quickest way to paint the roof of the Sistine chapel? Are you going to be able to hire 30 artists with enough talent, or should you stick with the one that is qualified and a couple assistants and just wait a few years?

      Can you train 30 artists to be good enough to do the work? How about 300?

      After a point, being a super-coder is just as much of an art. You won't be able to produce these people, it's kinda in their soul. Great musicians pick up their first instrument and know it's what they are going to do--what they are made for. My guess would be that if you have had access to a computer for over a year and you aren't coding yet, you'll probably never be a really great coder--a real computer artist couldn't have resisted.

      Hmm, maybe a better word that Guru or Architect would be Computer Artist or Code Artist? It should convey the relative rarity much better.

      This should be obvious. Every other art has it's gurus, and they are usually the top 1%, 99% of the others in the field simply will never be able to do what the gurus do, regardless of training or experience. I'll never play the piano like a savant that started at age 3, period.

    42. Re:nearly unlimited funding by ivan256 · · Score: 1

      CS programmes should be teaching Computer Science - you know, the stuff that prepares you for a career in research.

      Apparently you think that no research is done in industry. Do you think all new products are just put together out of off the shelf, or obvious techniques? Perhaps you think all new software products have their roots in academia?

      Sorry, thanks for playing. You've got the difference between scientists and engineers down pretty well, but plenty of research is done in the private sector. Also, there is no reason why a scientist can't also be a good engineer.

      One last thing...

      one of the reasons the world of industrial software development is so screwed up.

      It's not screwed up. You only hear about or notice the bad software. Most industrial software is very high quality. Think of all that software in your car, your home appliances, your electric tooth brush, your television... Even in computing devices. Think about your ethernet switch, your office telephone, your storage array, you name it... You don't realize there is software there because it doesn't get in your way. It just works. The devices that don't end up driven out of the marketplace very quickly. Bad software being considered ubiquitous is a recent phenomenon that arrived with desktop computing.

    43. Re:nearly unlimited funding by Pope · · Score: 1

      Most bring it on themselves. Just because you're interested in computers or science that's no excuse to behave like an asshole to everyone who doesn't share your interests or talk down to them. Society is a two-way street, and far too many geeks don't understand this. If you can't communicate, you're not of much use, are you?

      --
      It doesn't mean much now, it's built for the future.
    44. Re:nearly unlimited funding by GileadGreene · · Score: 1
      Apparently you think that no research is done in industry. Do you think all new products are just put together out of off the shelf, or obvious techniques? Perhaps you think all new software products have their roots in academia?

      Hmmmmm... I don't remember saying anywhere that there was no research in industry. But there is a difference between research, and industrial product development. CS programmes are (or should be) good preparation for research. Engineering programmes are (or should be) good preparation for product development (that being the essential purpose of engineering). That doesn't mean that CS grads shouldn't be employed in industry at all, just that the assumption that they are generally prepared for product development work isn't a good one. I'm sorry if I gave you a different impression with my earlier comments.

      Of course, there is also a necessity for R&D work, which may well include both scientists and engineers. But this is, again, not the same as product development.

      It's not screwed up. You only hear about or notice the bad software. Most industrial software is very high quality.

      Perhaps. But I think it's worth noting that all of the examples you've given are embedded software, which I'll readily admit has much higher quality standards than you're likely to find in many other application domains. It's also the software most likely to be written by people trained as engineers (electrical or computer), rather than CS grads - in other words, people who's training focuses much more on product development and delivery. Which only emphasizes my original point.

      Bad software being considered ubiquitous is a recent phenomenon that arrived with desktop computing.

      Really? Then why are there references to a "software crisis" dating back to the 60's? Consider, for example, these quotes from the 1968 NATO Software Engineering Conference:

      Kolence: The basic problem is that certain classes of systems are placing demands on us which are beyond our capabili- ties and our theories and methods of design and production at this time. There are many areas where there is no such thing as a crisis -- sort routines, payroll applications, for example. It is large systems that are encountering great difficulties. We should not expect the production of such systems to be easy.
      David and Fraser: Particularly alarming is the seemingly unavoidable fallibility of large software, since a malfunction in an advanced hardware-software system can be a matter of life and death.
      Dijkstra: The dissemination of knowledge is of obvious value -- the massive dissemination of error-loaded software is frightening.
      Graham: Today we tend to go on for years, with tremendous investments to find that the system, which was not well understood to start with, does not work as anticipated. We build systems like the Wright brothers built airplanes -- build the whole thing, push it off the cliff, let it crash, and start over again.
      These quotes are (depressingly) still relevant almost 40 years later...
    45. Re:nearly unlimited funding by SeaFox · · Score: 1

      People differ in ability in every field; the bell curve is real, and only the people who are at the high end of the curve can be considered one of "the best gurus". They will never constitute a large percentage of the group. Ever.

      No, but increase the size of the group under the curve and you'll increase the size of the group in the top 10% of it. That's where education comes in. With no real incentive to be part of the group the curve will only represent fewer people as time goes on and you'll see actual evidence to back up the claims of "we need more H-1B visas".

      If there are enough fantastic coders to staff 17 ten-person projects, there are enough fantastic coders to staff one 170-person project. The trick is getting them all working on the same thing, and that's something a large software company can do, if it will go to the trouble of finding them instead of handing jobs out like free hot dogs to anyone who says "yeah, I know C++"

    46. Re:nearly unlimited funding by ivan256 · · Score: 2, Interesting

      That doesn't mean that CS grads shouldn't be employed in industry at all, just that the assumption that they are generally prepared for product development work isn't a good one.

      I don't want to say that you can't be a Computer Scientist without being a good Software Engineer, but I will say that you can't be a Good Computer Scientist without being a good Software Engineer. Every one of the skills a good software engineer needs together forms a subset of the skills required by a good computer scientist. Though perhaps you're confusing Software Engineers with Computer Programmers?

      all of the examples you've given are embedded software [...] It's also the software most likely to be written by people trained as engineers (electrical or computer), rather than CS grads

      How do you figure? As a developer of commercial embedded software, that hasn't been my experience. Teams usually consist of both, but code written by Electrical Engineers, well, let's just say it's notorious.

      Let's cut the bull though. My problem here, and why I engaged in this discussion is your implication that computer scientists make poor software engineers ("Sadly, many developers are graduates from CS programmes instead of engineering programmes"). Above all else, please save your judgement for the quality of particular education programs instead of blanketing an entire field with your views. Many of us went to engineering schools, and got formal engineering training along with our computer science degrees. The real problem is that it's too easy to get a degree and not actually take any benefit from the experience, not that computer scientists create crappy software. That's as silly as saying "Sadly most modern drugs are developed by molecular biologists instead of genetic engineers".

    47. Re:nearly unlimited funding by GileadGreene · · Score: 1
      Every one of the skills a good software engineer needs together forms a subset of the skills required by a good computer scientist.

      I disagree with that assertion. But it may depend heavily on what our respective definitions of "computer scientist" and "software engineer" are.

      How do you figure? As a developer of commercial embedded software, that hasn't been my experience. Teams usually consist of both...

      Which is unusual. Software in many other application domains is developed almost exclusively by CS grads. Hence "embedded software [...] the software most likely to be written by people trained as engineers".

      ...but code written by Electrical Engineers, well, let's just say it's notorious.

      Obviously, I can't speak to your personal experiences. I've seen some absolutely gawd-awful code written by graduates of "good" CS programmes and "good" engineering programmes.

      Above all else, please save your judgement for the quality of particular education programs instead of blanketing an entire field with your views.

      Fair enough. Perhaps I did generalize little much. In my defense, allow me to point out that these are not my views alone. See, for example, this article by Steve McConnell, or this article by David Parnas (I apologize for being unable to find a version available to non-IEEE members). Both of them make the same points about the differences between CS training and SE training that I have been attempting to make. It's not a question of whether or not CS grads can learn to do software engineering (they undoubtedly can, just as physicists can learn to be electrical engineers). It's a question of what the appropriate focus of the undergraduate programme is, and of whether we should assume that a CS programme is the correct preparation for industrial software developers.

    48. Re:nearly unlimited funding by ArseKicker · · Score: 1

      Precisely. This way when the boss walks past you can jump up and scream "YES, that's it - it was so obvious" and make the project work with the slightest of ease. See, you come out looking like a hero.

    49. Re:nearly unlimited funding by Roydd+McWilson · · Score: 1

      the Apple IIe is where it's at. (Or is that the ][e?)

      Neither, it's the Apple //e.

      --
      THE NERD IS THE COMPUTER.
    50. Re:nearly unlimited funding by QuestorTapes · · Score: 1

      > such changes don't happen overnight just because a demand increases.
      > When we're talking about properly educating people (and by properly, I mean
      > both intensive CS background in theory and practice, and then practical
      > coding in real world environments in quantity to become a good coder as
      > well), it will take five or more years for a demand spike to produce a supply
      > rise.

      Possibly longer. After training and experience, there is also "shake-out", where those who just don't have the stuff to be developers end up in areas where they can make a contribution.

      > The projects I am involved with today won't wait five years for
      > programmers. This is business fact; if they aren't started now, and
      > completed in an economical timeframe, then companies will go out of
      > business and not be around to hire those better programmers in 5 years.

      Which illustrates what the management of many firms refuses to accept; that there are two problems, with two solutions. One: fill the gaps now to be competitive, and two: develop the talent for the future, in order to remain competitive.

      It's not just IT; the majority of firms in the US stopped thinking past the next couple of years quite a while ago.

      > And one thing I don't want to see is formal programming CS programs which
      > produce CS professors exclusively ... though some of my CS academic
      > aquaintences dislike me saying so, from what I see, few of their graduates
      > go into coding in industry. That's a pretty unfortunate thing for the
      > world. To be ultimately useful, these skills need to become things which
      > take people out of college, into industry, and successfully into
      > challenging industry projects.

      Absolutely. I've seen a number of situations where an academic writer has decried the failure of industry to implement a solution academics consider solved.

      Unfortunately, the solution is "on display in a cellar, where the lights (and the stairs) have gone, in the bottom of a locked filing cabinet in a disused lavatory..."

      The best academic training is only an exercise in ego stroking unless the people who receive that training get out into the world and change it.

    51. Re:nearly unlimited funding by georgewilliamherbert · · Score: 1

      It's not screwed up. You only hear about or notice the bad software. Most industrial software is very high quality. Think of all that software in your car, your home appliances, your electric tooth brush, your television... Even in computing devices. Think about your ethernet switch, your office telephone, your storage array, you name it... You don't realize there is software there because it doesn't get in your way. It just works. The devices that don't end up driven out of the marketplace very quickly. Bad software being considered ubiquitous is a recent phenomenon that arrived with desktop computing.

      You're using industrial different than I meant; I intended "commercial" as in, real world projects for money, and not academic research exercises.


      However, your point is still not something I agree with. True industrial software for simple applications tends to be reasonably reliable. That's true for any simple applications, as a rule.


      My ethernet switches and storage arrays aren't simple applications. I've been an architect at a VAR for both, and sr engineer at a vendor for storage (long ago). I've bought hundreds of each as a customer. And I have friends who work doing the software for vendors of both.


      Anyone who actually buys serious ethernet switches should be aware of the history of bugs. And storage arrays? Good god, how many firmware revisions have most of the models out there been through... I can't even count, and in some cases the upgrade procedures are terribly dangerous.


      And my office telephone, which used to be a fairly simple digital unit connected to a fairly conventional PBX, is likely to be VOIP soon. With all the bells, whistles, and bugs those are showing in practice...


      Don't tell me these things aren't buggy. That assertion goes beyond ridiculous into baldfaced lie territory, or marketing materials.

    52. Re:nearly unlimited funding by Anonymous Coward · · Score: 0

      Almost. What if standard out is a pipe that got closed? What if there's not enough memory to run the basic interpreter? What if it gets a kill signal from the kernel? What if it becomes a zombie process?

      It's really hard to write code more reliable than the system it runs on. If base system, without any of your code, makes it impossible to meet the spec, you've chosen the wrong base system. (or the spec is unrealistic; does it still have to produce output if the computer explodes?)

      If the Basic interpreter doesn't deal with or allow you to deal with these conditions properly AND the spec requires you to, maybe Basic is the wrong choice.

    53. Re:nearly unlimited funding by Eli+Gottlieb · · Score: 1

      I see a problem with your model: The skill of programmers is distributed by the motivation, practice and experience they put into their craft, not by a random statistically normal function. If people try hard enough they tend to achieve the level of skill that can be called guru.

  2. Speaking of bugs... by zegebbers · · Score: 2, Funny

    You slashdotted stsc.hill.af.mil!

  3. err by Anonymous Coward · · Score: 0

    Get a decent connection, the site is loading fine for me.

    Nice FP attempt, I guess.

  4. No Bugs for NSA? by ChePibe · · Score: 5, Funny

    Uh... it's going to be kind of hard for the NSA to do its job without bugs, isn't it?

    *rimshot*

    1. Re:No Bugs for NSA? by Wilson_6500 · · Score: 1

      Yeah, the kind that get them around legal restraints. I don't want to hear my spy agencies going "oops."

    2. Re:No Bugs for NSA? by GrEp · · Score: 4, Interesting

      Easier actually.

      http://www.rockwellcollins.com/news/page6237.html

      Rockwell collins designed a secure processor for the NSA that PROVABLY can run multiple threads where each thread can get no information about the others. That way they can run processes with different clearance levels on the same CPU.

      Model checking can make you big bucks if you can find the customers to pay for it.

      --

      bash-2.04$
      bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
    3. Re:No Bugs for NSA? by InfiniteWisdom · · Score: 1

      Bugs... things NSA spooks plant to listen in on people who don't want to be listened in on. Pun. A type of joke. Expected response is something along the lines of "hahaha"

    4. Re:No Bugs for NSA? by minialed · · Score: 1
      'The NSA system was successfully adapted by summer interns...'

      The NSA take summer interns? Where can I sign up?

      A.

    5. Re:No Bugs for NSA? by Anonymous Coward · · Score: 0

      Unlikely. IBM has different flavours of hardware assist VM, and you can still use sideband attacks to leak information, on interrupt latency plays - imagine hard CPU loops to morse code your message through. This ignores program path lengths. Presently, buying multiple nodes is cheaper and better. I'd hate to run a processor without interrupts, or interrupts padded with loops to appear consistant. Even if a dedicated crypto setups worked as advertised, all the other parts would have to be as robust, ie processor easy, big, feature laden OS much more difficult.

      As for killing bugs, get some fresh blood to review what you put in production, 6 months later, after giving them access to the defect logs. Amazing how the motivation to fix software post production, goes down the toilet. With hindsight...

    6. Re:No Bugs for NSA? by CastrTroy · · Score: 1

      I know for a fact that CSIS (Canadian Security and Intelligence Service) takes co-op students, which I think are the same as interns. Except i'm not sure if interns get paid, It's my understanding that they don't. Anyway, it's a good way to get some pretty good people. Get them early and indoctrinate them. I think it's harder to get people into working in an environment like that once they had a taste of the free world.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    7. Re:No Bugs for NSA? by hnile_jablko · · Score: 1

      were there a mod for it, i would mod your rimshot up to a *swishhhhhhhhhhhhhhhhhh*.

  5. Whatever by HungWeiLo · · Score: 4, Insightful

    When you're writing software for an air traffic control system, military avionics software, or an authentication system for the NSA, the delivered code can't afford to have bugs

    I've been in this industry for quite some time and let me be the first to say that I wish I could repeat this sentence with a straight face.

    --
    There are a huge number of yeast infections in this county. Probably because we're downriver from the bread factory.
    1. Re:Whatever by Coryoth · · Score: 3, Informative

      I've been in this industry for quite some time and let me be the first to say that I wish I could repeat this sentence with a straight face.

      I was pitching for "how people would like to think things are" rather than how things actually work. In practice Praxis, at least, does deliver such software, and does so with extremely low defect rates. They are proof that it can be done, even if it isn't always how things work now.

      Jedidiah.

    2. Re:Whatever by recharged95 · · Score: 1

      same here. having some exposure in those areas, I can say they do production software as cheaply as possible.

    3. Re:Whatever by slickwillie · · Score: 1
      When you're writing software for an air traffic control system, military avionics software, or an authentication system for the NSA, the delivered code can't afford to have bugs

      So a few bugs in commercial avionics is acceptable?

    4. Re:Whatever by Anonymous Coward · · Score: 0
      So a few bugs in commercial avionics is acceptable?

      Sure, haven't you ever flown on an Airbus?

    5. Re:Whatever by Anonymous Coward · · Score: 0

      Here is a link describing the software design of the "Safeguard" anti-ballistic missile system, which was around in the 60's.

      http://www.paineless.id.au/missiles/Computers.html

    6. Re:Whatever by WhatsAProGingrass · · Score: 1

      I agree. I work on military avionic systems and we have so many "work arounds" due to bugs its not even funny. We have what we call "Known Fails"...what happens when the "Known Fail" Actually is the fail...we will regard it as just a "Known Fail"...This is just one of many many things I come across. We have software problems all the time..Granted, i've never worked on non military grade systems, so I have nothing to compare it with.

      --
      Mark
    7. Re:Whatever by pev · · Score: 1
      I've been in this industry for quite some time and let me be the first to say that I wish I could repeat this sentence with a straight face.


      Why? If you can write a microcontroller app of a couple of hundred lines of assembler it's easier to see that writing bug-free code is achievable. We're just talking about processes to aid scaling this concept up.

      Sure, most software developers have practical considerations that mean you can't adopt this kind of methodology e.g. If you're bidding for a contract then someone who isn't applying such a rigorous methodology is likely to under-rice anyone that is. However, if you're creating a medical device for example, you absolutely have to allocate the time and the budget to do so or it's useless.

      ~Pev

      Disclaimer : I know the author personally and have chatted about this before so I'm not completely impartial!
    8. Re:Whatever by Anonymous Coward · · Score: 0
      So a few bugs in commercial avionics is acceptable?


      Sure, haven't you ever flown on a Boeing?

    9. Re:Whatever by king-manic · · Score: 1

      When you're writing software for an air traffic control system, military avionics software, or an authentication system for the NSA, the delivered code can't afford to have bugs

      So a few bugs in commercial avionics is acceptable?


      Meh, they'll just chalk it up to terrorists and no one will know the difference.

      --
      "There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy."
    10. Re:Whatever by allelopath · · Score: 1

      I used to work in military avionics as well and I couldn't agree with you more.
      I'm not blaming anyone, the software is very complex.
      In particular, a real-time, real-fast enviroment can generate an endless supply of scenarios that simply cannot be anticipated.

    11. Re:Whatever by xtracto · · Score: 2

      Man, do you work at Praxis or something?

      At least stop sucking that big pallus before you talk, so you can be understood.

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
    12. Re:Whatever by Anonymous Coward · · Score: 0

      There is a big difference between "can't afford to have bugs" and "extremely low defect rates." The first is laughable, except for trivial applications, the second is of course possible.

  6. It's not hard to write bugless code... by Krach42 · · Score: 0

    You just have to be l33t enough.

    HAHAHA... yeah right...

    --

    I am unamerican, and proud of it!
    1. Re:It's not hard to write bugless code... by maelstrom · · Score: 1

      Or just have a UID 1000.

      --
      The more you know, the less you understand.
  7. Still can have bugs by Billly+Gates · · Score: 3, Interesting

    The only method I have seen with almost perfect reliability is where the inputs and outputs are overloaded to handle any datatype and can be proven mathamatically not to crash. I guess a CS degree is still usefull.

    The problem is to obtain it you need to write your own libraries and not use ansi or microsoft or any other products as you can not see or trust the source code.

    If you can prove through solid design and input and output types that the program wont lose control then your set. Its buffer overflows and flawed design that has not been tested with every concievable input/output that causes most serious bugs in medical and aerospace applications.

    However in practice this challenge is a little unpractical when deadlines and interopability with closed source software get in the way.

    1. Re:Still can have bugs by Anonymous Coward · · Score: 0

      An English degree would have helped you too.

    2. Re:Still can have bugs by sphealey · · Score: 1
      === If you can prove through solid design and input and output types that the program wont lose control then your set. ===
      Well, if that were the case your program would never crash on input, but it could still take that input data and make an incorrect calculation on it. Add the difference between the airport's height and sea level, for example, rather than subtracting it.

      sPh

    3. Re:Still can have bugs by GileadGreene · · Score: 4, Interesting
      Did you actually bother to RTFA? Oh yeah, this is /. - stupid question. Allow me to suggest that you make an exception, and actually take the time to read TFA in this case. Praxis does not claim no bugs, they claim significantly lower defect rates than development using other methods. Which in turn means much greater confidence that the system will work as desired.

      No one can ever make something that is completely "bug-free" - even in traditional, non-software disciplines. All you can do is make the probability that the system will work as high as possible. Praxis has some techniques that can help developers create software with a much higher probability of working correctly than it would otherwise have. That's a good thing, even if it doesn't result in perfection.

      Its buffer overflows and flawed design that has not been tested with every concievable input/output that causes most serious bugs in medical and aerospace applications.

      It's the fact that Praxis relies on static checking far beyond anything you've ever seen (using a carefully designed subset of Ada that can be statically checked in all sorts of interesting ways) that helps to ameliorate this problem, since the static check is effectively equivalent to an exhaustive input/output test.

    4. Re:Still can have bugs by heavy+snowfall · · Score: 1

      Did you have trouble parsing his output?

    5. Re:Still can have bugs by Coryoth · · Score: 4, Informative

      If you can prove through solid design and input and output types that the program wont lose control then your set. Its buffer overflows and flawed design that has not been tested with every concievable input/output that causes most serious bugs in medical and aerospace applications.

      Praxis uses a subset of Ada together with annotations in a language called SPARK to write most of their software. They also have tools which work with such code to do considerable static checking - much as type checking catches errors, checking the annotations catches many more just as efficiently - and generate proof obligations, which they can then formally prove. That means, for many of their projects, the actaully have formal proofs that buffer overflows cannot and will not occur.

      However in practice this challenge is a little unpractical when deadlines and interopability with closed source software get in the way.

      Again, this is where the tools and methodology matter. Praxis delivers code as fast as traditional development techniques, so deadlines aren't the problem. They can do this by using SPARKAda and the SPARK tools to do exceptionally robust testing on a regular basis for each incremental deliverable. This allows catching bugs much earlier, when they are cheaper and faster to fix.

      The only method I have seen with almost perfect reliability is where the inputs and outputs are overloaded to handle any datatype and can be proven mathamatically not to crash. I guess a CS degree is still usefull.

      It is pretty much this sort of mathematical rigor, injected into the development process as early as possible, that allows Praxis to produce the sort of defect rates that they do. And yes, that does mean that developers at Praxis are probably required to have stronger math and CS backgrounds that elsewhere. Given that, due to their ability to deliver almost bug free software in very reasonable time frames, Praxis charges 50% more than the industry daily rate, yes having a math or CS degree really does count for something - more money for starters.

      Jedidiah.

    6. Re:Still can have bugs by Qzukk · · Score: 1

      tested with every concievable input

      If I had conceived of it, then I would have dealt with it, and it would not have become a bug ;)

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    7. Re:Still can have bugs by samwhite_y · · Score: 1

      I have noticed that nobody really asked. What type of application are they writing? Are they writing anything on the level of complexity of Apache? Firefox? Open Office? Eclipse? It is much easier to write bug free code if the problems you solve have limited scope. The usual problem with solutions of this type is that they solve the problem the user described and not the actually much more complex the problem the user actually needs solved. For example, a user could say I need a way to view marked up text and graphics in a windows application. What he does not know is that he really needs a complex solution like Firefox which supports CSS, javascript, AJAX, plugin architectures and so on. I am always wary when anybody claims that they have found a magic bullet to software development that avoids the actual application of ingenuity and hard thinking. Take the supposed wonderful language of ADA. What databases can it talk to? What type of user interface can you construct? Can it talk HTTP or HTTPS? Can it do SOAP? Can it spawn threads or processes?

    8. Re:Still can have bugs by Coryoth · · Score: 1

      I have noticed that nobody really asked. What type of application are they writing?

      As stated in the article, they are develping things like air traffic control systems, authentication systems to run on smart cards for international credit card companies etc. Their projects run into the hundreds of thousands of lines of code. These are not simple or trivial applications.

      It is much easier to write bug free code if the problems you solve have limited scope. The usual problem with solutions of this type is that they solve the problem the user described and not the actually much more complex the problem the user actually needs solved. For example, a user could say I need a way to view marked up text and graphics in a windows application. What he does not know is that he really needs a complex solution like Firefox which supports CSS, javascript, AJAX, plugin architectures and so on.

      Again, the article does discuss this to some extent, but a major part of their development process is working closely with the customer to manage to develop a clear set of requirements. This can, of course, be a time consuming process, and is naturally going to be ongoing to some extent through the project. The key is to try and get much of it done as early as possible. That involves sitting down with the customer and working out what it actually is they require. So when the user says they "need a way to view marked up text and graphics in a windows application" it behoves the person developing the requirements to ask questions like "Do you need to be able to have interactive views?", "What sorts of interaction do you need, and does it need to conform to a standard? If so, which one?", "Is it acceptable if this aspect of Javascript isn't implemented - that would mean that things like X would be impossible?" and so on. The aim is to build up a set of unambiguous formal requirements. Skipping the phase where you try and work ith the customer to understand in detail what they actually want - well that's always a recipe for disaster. In many ways that's what things like Agile Development are all about. This is similar, but tries to develop a formal specification rather than an incremental prototype.

      Jedidiah.

    9. Re:Still can have bugs by jizmonkey · · Score: 1

      They have never completed a single project that has "run into the hundreds of thousands of lines of code." According to the article the most complex project they've done is the air traffic program CDIS, which has 197 kloc. The smallest is 10 kloc, and there's also one that's 27 kloc and 39 kloc. It's great that they're delivering bug-free executables, and we can all learn from them yadda yadda, but these are tiny projects. CDIS is midsize. The Mastercard program at 100 kloc is barely midsize.

      --
      With great power comes great fan noise.
    10. Re:Still can have bugs by samwhite_y · · Score: 1
      I am going to say something Heretical. I don't really believe that customers know what they want. I believe that a good programming architect is not that interested in the "requirements" he is much more interested in the "problems" the customer is facing and to understand those problems. Many times a good developer has a much better idea of all the true complications posed by solving the actual needs of the customer. If you do not take that approach, then you are almost guaranteed to be surprised by all types of later "complications". The literature is filled with failed projects of this type with programmers and customers pointing fingers at each other to avoid blame.

      To me a good programming requirements document is a description of the customer "issues" that need to be resolved (the so called "business problems") and an analysis of how the programmer proposes to solve them. In my mind there is way too little "analysis" being done in much of programming these days and too much powerpointy type bullet lists of requirements.

    11. Re:Still can have bugs by rufty_tufty · · Score: 1

      Please be careful when you measure productivity and indeed size of project in LOC.

      To me a program is "better" if it can do the required function in fewer LOC, that probably means the program is specified correctly and implemented efficiently.
      People complain about bloat, but then marvel at "heros" who write millions of lines.
      Give me a Guru who can do the same function in 100 lines anyday.

      Disclaimer - I am aware sometimes you trade code size against execution speed, but that's what our friend Knuth is for :-)

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    12. Re:Still can have bugs by GileadGreene · · Score: 1

      I think you'll find that Praxis has a similar attitude. My understanding is that they follow the Jackson approach to understanding requirements: "requirements" represent things the customers wants changed about the world, "specifications" define what the design should do in order to make those changes happen, and the "design" provides a method of doing the things defined in the specification. You might find Jackson's publications on requirements and specification interesting.

    13. Re:Still can have bugs by Anonymous Coward · · Score: 0

      No one can ever make something that is completely "bug-free" - even in traditional, non-software disciplines.

      I beg to differ. In non-software disciplines, you suffer the "perversity of matter". Things will break apart, overheat, rust or degrade. You can design in margins and redundancy, give maintenance guidelines and take things out of service before they get unreliable and there will still be some risk of failure.

      Software is different. It is like math, precisely defined and completely predictable. It doesn't rot or wear, it either works or it doesn't. Once correct, always correct. So if anything can ever be bug free, it is software. A precise design process that constructs all programs coupled with a proof of their correctness, where the proofs are checked by the machine, will procude absolutely bug free software.

      However, a different sort of bugs will remain. You cannot prove what you didn't specify. No problem so far, but people will expect behaviour that actually wasn't specified. Not strictly a bug, but still a misfeature. Then there are problems in human-machine interaction. Humans get confused and do the wrong thing. This is also not a bug, but can still be blamed on the software. Once humans enter the picture, we will never get bug-free software, we'd need bug-free humans to do so. I suspect, the bugs that remain at Praxis are of the latter kind.

    14. Re:Still can have bugs by samwhite_y · · Score: 1

      Well, I read some of the publications and I don't quite see how he agrees with me. In fact, he seems to believe that programmers (do the "abstract" work) and system analysts (do the "people problem" work) properly belong in separate universes and you get into trouble if you overlap the semantic language of the two universes. This type of thinking is so far from the actual problem domain I face, it seems to be in some "virtual" perfect overly simplified programming universe. Usually when it comes to programming, the programming part is relatively trivial, it is the understanding of how a user interacts and perceives the utility of the application which is hard. His papers seem to over emphasize the relatively trivial (the algorithmic implementation) as being equal to the hard (making it do something truly useful).

    15. Re:Still can have bugs by GileadGreene · · Score: 1
      I beg to differ. In non-software disciplines, you suffer the "perversity of matter". Things will break apart, overheat, rust or degrade. You can design in margins and redundancy, give maintenance guidelines and take things out of service before they get unreliable and there will still be some risk of failure.

      And, as others have pointed out, the software you develop most likely depends on other libraries or runtimes (which you may not understand correctly), and runs on hardware that suffers from the "perversity of matter". In both cases, it is highly unlikely that your specification will perfectly capture these issues - the software may be correct with respect to the spec (which is pretty much all we can ever hope for), but not correct with respect to the requirements of the system it is part of.

      Perhaps more importantly, other disciplines are just as susceptible to the specification and design errors that result in bugs in software. I agree that software is in a much better position to produce "bug-free" designs than other disciplines. But the reality is that any complex system is going to have bugs, either due to specification errors, or due to design errors. We can do our utmost to reduce the probability that those errors exist. But guaranteeing that there are no errors is pretty much impossible.

    16. Re:Still can have bugs by EdF · · Score: 1

      "Take the supposed wonderful language of ADA. What databases can it talk to? What type of user interface can you construct? Can it talk HTTP or HTTPS? Can it do SOAP? Can it spawn threads or processes?"

      Some of the Ada bindings available include:

      GNADE (http://gnade.sourceforge.net/ supports ODBC, MySQL 3.X and 4.X, PostgreSQL and SQLite. There are also Ada bindings for Oracle.

      The main cross-platform UI kit is GtkAda (https://libre2.adacore.com/GtkAda/) - it works with the glade GUI builder. There are also some Windows-specific kits, including Claw (http://www.rrsoftware.com/html/prodinf/claw/claw. htm).

      Web programming is supported by Ada Web Server (https://libre2.adacore.com/aws/). It handles SOAP.

      Threads and support for concurrency are part of the language standard. Processes can be spawned via expect-like packages usually available with the compiler.

      See http://www.adapower.com/, http://www.adaworld.com/, http://libre.adacore.com/ and http://www.adaic.com/ for additional resources.

      - Ed

    17. Re:Still can have bugs by samwhite_y · · Score: 1

      That was actually quite a helpful and enlightening response. But I do have to wonder how much of this code "satisfies" the "provably safe" paradigm that was originally mentioned as the reason for chosing ADA. Also, a lot of this code is under the GPL which means any application built on the code has to be GPL. I wonder how restrictive that is for doing commercial code development. However, I was not aware of the intrinsic support for threads and concurrency, that increases my respect for the language.

    18. Re:Still can have bugs by EdF · · Score: 1

      Hi Sam, I pointed out a lot of the GPL stuff since this is /. There are lots of other bindings available, and the references I gave at the bottom of the page will point you to a number of them that are not GPL. AdaCore (the company I work for) also licenses versions of everything on the Libre page with more permissive licenses so that proprietary software can be developed, much as is done for Cygwin, but they're not "free beer". Most of the packages I mentioned do not follow SPARK, but Ada in general does move substantially in the direction of reliable software, and some, like a new version of AUnit that we're about to make available, are certifiable. Glad you found the links interesting. - Ed

  8. Non turing complete programming languages by autopr0n · · Score: 1

    Can be proven safe. I wonder what subset of modern OS design could be done in such programming languages.

    --
    autopr0n is like, down and stuff.
    1. Re:Non turing complete programming languages by Krach42 · · Score: 1

      Well, it couldn't be able to construct the NAND of two elements, as NAND is turing-complete (for arithmetic).

      After that you need control structures. If you were to not allow control structures, I think it would be very hard to make an OS. (Unless it's one of them "Hello World" OSes, that then crash and reboot.)

      I'd say it's impossible to write an OS in a non-turing complete language.

      --

      I am unamerican, and proud of it!
    2. Re:Non turing complete programming languages by Vintermann · · Score: 2, Interesting

      SPARK Ada, which Praxis use, is actually not turing-complete. It's bounded in space: no dynamic data structures, no allocation or deallocation whatsoever - not even implicitly. That's what permits the serious static checking, and makes correctness proofs feasible. Termination proofs can still be a pain, though. AFAIK most SPARK programs are proven to behave correctly only if they do terminate.
      That's not so relevant in real-time systems, though, which is where SPARK really shines. It's quite an achievement by Praxis to construct a language which is amenable to correctness proofs, and still can handle multiple threads just fine. It looks like something Djikstra would have been impressed by.

      To answer one of the followups to this post: Yes, NAND gates may be turing complete, but not unless you have an unbounded supply of them. Otherwise, they can not be equivalient to a turing machine (which has an infinite tape).

      --
      xkcd is not in the sudoers file. This incident will be reported.
    3. Re:Non turing complete programming languages by rufty_tufty · · Score: 1

      All buildable machines are none turing complete
      Some langauges are turing complete, some aren't.
      Turing complete can solve any problem solvable.
      None turing complete may be able to solve your problem depending on your problem. If a language restricts me so I can't solve a problem that includes memory leaks and buffer overflows, that is probably a good thing.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    4. Re:Non turing complete programming languages by Anonymous Coward · · Score: 0

      "Turing complete can solve any problem solvable"
      A Turing complete language can solve any problem solvable by a Turing machine. That, actually, is *not* everything. There are questions that cannot be answered by any Turing-complete language, but which still have an answer. For example, what value is returned by the BusyBeaver function for n greater than 6 or so? The BusyBeaver function is defined as a terminating program which prints the maximal number of 1s on a tape full of 0s, using a Turing machine of n states. The return values of BB for small n are known, but after n=6 or so it grows faster than it is possible to compute on a Turing-complete machine.

      Not that this is very important to the main point, but I thought I'd correct that mistake. This is one reason why it is hoped that quantum computers aren't Turing-complete. If they're not, then it is possible that they can compute things which a classical computer could never compute, even given infinite time. Also, many problems which are proven to be solvable only in exponential time by Turing-complete machines may be solvable in less time in a non-Turing-complete machine. A proof one way or another on quantum computers would be illuminating (and, afaik, the evidence is currently pointing to them not being Turing-complete).

      "If a language restricts me so I can't solve a problem that includes memory leaks and buffer overflows, that is probably a good thing."
      Here's what I really wanted to respond to. If a language restricts you from doing something which the language designers thought was bad, then it almost certainly restricts you from doing other things which the language designers never even considered, and which might be very useful for you to be able to do. The best language allows you to do anything, on the off chance that it will prove useful to you, rather than restricting you and possibly preventing you from doing something that you need to do.

  9. economics by bcrowell · · Score: 4, Insightful

    The authors contend that there are two kinds of barriers to the adoption of best practices... First, there is often a cultural mindset or awareness barrier... Second, where the need for improvement is acknowledged and considered achievable, there are usually practical barriers to overcome such as how to acquire the necessary capability or expertise, and how to introduce the changes necessary to make the improvements.
    No, the reason so much software is buggy is economics. Proprietary software vendors have to compete against other proprietary software vendors. The winners in this Darwinian struggle are the ones who release buggy software, and keep their customers on the upgrade treadmill. Users don't typically make their decisions about what software to buy based on how buggy it is, and often they can't tell how buggy it is, because they can't try it out without buying it. Some small fraction of users may go out of their way to buy less buggy software, but it's more profitable to ignore those customers.

    1. Re:economics by riprjak · · Score: 1

      I contend that the upgrade treadmill with users who accept getting shit upon by their suppliers and smile is a dead end path.
      Most other Industries start in this state (You can have any colour as long as its black), but once something becomes enough of a commodity, inevetably the voice of the customer starts to win out.
      Either they sue you into the stoneage for destroying their billion dollar enterprise with your crap thats not fit for purpose or they begin to understand that defects COST them and purchase from the folks without them.

      Two hundred and fifty years ago, no-one cared if seventeen workers got shredded a day in the cotton `gin, so ole' Eli didnt bother with safety features and, if he had, probably wouldnt have been successful. I imagine even 100 years ago you bought the cheap machine before the one that had extra features to avoid grinding workers into your dogfood (cheap raw materials!). Now days, a manufacturer can demand a massive premium by being significantly and demonstrably safer than the competitor...

      Whilst Human-At-Risk tends to be a bigger motivator than money on an individual scale, I guarantee corporations consider Caiptal-At-Risk a much more critical issue; therefore, once they realise that bugs cost them more than paying for well developed software, they will begin to demand it.

      *THATS* Economics IMHO.

      err!
      jak

    2. Re:economics by alphafoo · · Score: 1

      Yep, good to keep the economics aspect in mind.

      Reminds me of one of Murphy's Laws of Combat:

      "Remember, your weapon was made by the lowest bidder."

    3. Re:economics by ChrisA90278 · · Score: 2, Insightful
      "No, the reason so much software is buggy is economics. Proprietary software vendors have to compete against other proprietary software vendors."

      No, that's not it either. Bugs happen because the people who buy the software do not demand bug free code. I do write software for a living. When the customer demends bug-free software he gets it.

      I've been around the building bussines too. when I see por work there, say badly set tile, I don't blame the tile setter so much as the full ideot who paid the tilesetter after looking at his poor work.

    4. Re:economics by Coryoth · · Score: 1

      Proprietary software vendors have to compete against other proprietary software vendors. The winners in this Darwinian struggle are the ones who release buggy software, and keep their customers on the upgrade treadmill. Users don't typically make their decisions about what software to buy based on how buggy it is, and often they can't tell how buggy it is, because they can't try it out without buying it.

      Unfortunately this is very true. It is, however, slowly beginning to change. In todays highly networked world the tolerance for bugs that cause security breaches is dropping very fast - just witness the current .WMF issues and MS's early patch release in response. As people begin to demand more in terms of security, there will (I hope) be an increasing demand for assurance rather than vague promises. If you have to provide real guarantees on the quality of your software instead of denying all responsibility in EULAs then the sorts of design methods used by Praxis will inevitably become far more widespread.

      Jedidiah.

    5. Re:economics by Anonymous Coward · · Score: 0

      Right, because in the age of specialization you should still be expert enough in everything you purchase that you never have to trust in the competency of another human being. You can instead give a full review of every aspect of the thing you purchased, and if it is in any way not up to par, you will obviously be able to convince the person who did the work to repair it. Despite the fact that the person who did the work has already been set up in this scenario to be free of blame for the poor work. Caveat Emptor? More like buyer be damned if he does damned if he doesn't.

    6. Re:economics by DeveloperAdvantage · · Score: 2, Interesting

      One reason the economics is slanted toward buggy software is due to the legal issues. I have seen very few cases where developers of buggy software actually are held responsible for the mess which they have delivered...actually, I can't think of any off the top of my head (although I am sure they are out there).

      In fact, often it is beneficial to the software provider to provide a product with enough defects so the software provider can get follow-up work or support contracts to fix them.

      Consumers of software services, or even shrink wrapped software, need to start demanding higher quality.

      Read through an end user agreement and you will see who bears the cost of defects.

      --
      FREE - Java, J2EE and Ajax Audiobooks for Software Developers - www.DeveloperAdvantage.com
    7. Re:economics by Weedlekin · · Score: 1

      "When the customer demends bug-free software he gets it."

      I think it more often the case that a customer who demands _and is willing to pay for_ bug-free software gets it. I've come across lots of people who loudly insist on bug-free software until they see how much extra it's going to cost them.

      --
      I'm not going to change your sheets again, Mr. Hastings.
  10. Re:Do you think it would help? by Anonymous Coward · · Score: 0

    It would be stupid for M$ to try to make error proof code, it is only done in cases like this because the result of a bug may mean death

  11. Bugs are fine... by Paladin144 · · Score: 5, Insightful

    Luckily, bugs are just fine if you happen to run a company that builds voting machines, such as Diebold. And if you think that elections aren't in the same category as air traffic control, I suggest you take a tour of Iraq. Elections are very important for your continued existance upon the earth.

    1. Re:Bugs are fine... by GoodbyeBlueSky1 · · Score: 1

      They're not bugs if they're designed to sway an election...

      --
      why? forty-two.
    2. Re:Bugs are fine... by B3ryllium · · Score: 1

      why? forty-two

      I tried that, doesn't work.

    3. Re:Bugs are fine... by Coryoth · · Score: 1

      Luckily, bugs are just fine if you happen to run a company that builds voting machines, such as Diebold. And if you think that elections aren't in the same category as air traffic control, I suggest you take a tour of Iraq. Elections are very important for your continued existance upon the earth.

      Indeed! This is one of the more baffling points to me with regard to electronic voting. We shouldn't just be demanding open source voting software, we should be demanding formally specified voting software with published proofs of various key properties (like, for instance, a proof that the name printed on the paper trail receipt is guaranteed to be the same as name against which the electronic vote is counted). Given the importance of elections, and the fact that, as Praxis demonstrates, such code can be developed relatively efficiently and cheaply, this would seem the least we could ask...

      Jedidiah.

    4. Re:Bugs are fine... by Anonymous Coward · · Score: 0

      That's just democrat whining, would you seriously be harping if a democrat owned company made voting machines? no, you wouldn't. you wouldn't mind that alfonso, his dead mother and father, and his 15 cats all voted.

    5. Re:Bugs are fine... by Anonymous Coward · · Score: 0
      I generally vote democrat, and I sure as hell would mind if there were any kind of corruption involved in voting machines, regardless of who benefitted.

      Wanting a fair election and objecting to voting machines being created by criminally incompetent companies has nothing to do with where one falls on the political spectrum.

      Curiously, why is it that I generally hear the following specious remark from republicans far more than from those of other affiliation: "you wouldn't care about corruption, cheating, dishonesty, etc. if it were your party that were doing it."

    6. Re:Bugs are fine... by Anonymous Coward · · Score: 0

      How do you think Kennedy got elected? Massive fraud in Illinois and Texas with ballot stuffing. Americans rejected Kennedy but his crony machine got him into office.

    7. Re:Bugs are fine... by damian+cosmas · · Score: 1

      Where in Iraq are they using Diebold voting machines? I thought they were on the paper ballot/inked thumb system.

    8. Re:Bugs are fine... by SuperBigGulp · · Score: 0, Flamebait
      why? forty-two.

      I think you mean 43.

      --
      Someday a Slashdot ID of 177180 will mean something.
    9. Re:Bugs are fine... by Anonymous Coward · · Score: 0
      The specifics don't matter. If what you say is true, then it is just as much a crime, regardless of who benefitted and who committed the crime.

      I don't even know why you responded. It has nothing at all to do with my post at all. Does your reading comprehension consist of picking 2 words out of a post and trying to infer the content on the basis of those 2 words and your uncanny psychic ability?

    10. Re:Bugs are fine... by Anonymous Coward · · Score: 0

      The Iraqis voted to be invaded and slaughtered?

      As much as the Kuwaitis did, fuckhead. You're acting as if they were invaded without cause. Get your head out of your ass and try to remember a whole 15 years ago.

    11. Re:Bugs are fine... by Starker_Kull · · Score: 1

      I agree wholeheartedly. Unfortunately, there's no money in it. Apparently, Thomas Edison's first recorded patent in 1868 was for an electronic vote counter, which turned out to be a commercial disaster. Politicians wanted votes to come in slowly, so they could direct their "efforts" at the last second. I've just been reading up on it recently, and apparently (since Edison grew up in poverty) its financial failure made him promise to himself that he would never again invent something that didn't have monetary promise. (Sorry, I can't find a reliable link)

      Sadly, today's pols are not much different. Wasn't it Stalin who said he had no problem with democracy so long as it was he who counted the votes?

    12. Re:Bugs are fine... by toddestan · · Score: 1

      That's just democrat whining, would you seriously be harping if a democrat owned company made voting machines? no, you wouldn't. you wouldn't mind that alfonso, his dead mother and father, and his 15 cats all voted.

      That's a stupid thing to say. I wouldn't mind if the owner of a company that made voting machines was Democrat, Republican, Libertarian, or whatever so long as they were honest. It's the fact that Diebold is run by a bunch of corrupt bastards is what I take issue with. The fact that they are Republican bastards is just a side note.

  12. Paper doesn't mention open source model by gasjews · · Score: 0, Offtopic

    I'm not sure how much credibility can be lent to any kind of study on the software development process that does not include the open source (OSS) model. By its nature, having more eyes look over you work rather than depending on a fixed and closed system of code assurance finds and fixes bugs faster and implement new features. This is why Windows and UNIX are constantly playing catch up to the Linux platform. I remember reading a study on Google's weblog that essentialy endorsed this as a philosophical concept (that applies to much more than just code writing). I don't know who works for the NSA these days, but I would venture to say that the people who work are Google are probably collectively the brightest and wisest folks on the planet.

    Linux, Firefox, and OpenOffice are some of the best software on the planet. I think is a good practical testament to the OSS philosophy.

    This is the reason why I use Linux and demand that everything I purchase, consume, use, or buy uses or depends on a open source model.

    1. Re:Paper doesn't mention open source model by voxel · · Score: 1

      Open source model doesn't work for most (99%?) of military and government applications.

      So, its wise to spend alot of time discussing methods when you can't just "LET THE WORLD SEE".

      Sure the author could throw in a one-liner "Use open source model if you can.", and make you happy, but why bother.

      --
      Modesty is one of life's greatest attributes
    2. Re:Paper doesn't mention open source model by voxel · · Score: 1

      Oh, even better argument... What if you open source your code and no one looks at it... because no one cares.

      Then what?... Yes you do have to learn to write solid code without relying on the rest of the world, it's true.

      --
      Modesty is one of life's greatest attributes
    3. Re:Paper doesn't mention open source model by Anonymous Coward · · Score: 0

      "...but I would venture to say that the people who work are Google are probably collectively the brightest and wisest folks on the planet."

      Sheesh, Google has some neat tools and all but statements like this don't even fall under the definition of fanboy.

    4. Re:Paper doesn't mention open source model by GileadGreene · · Score: 4, Insightful
      Except that the articles in question aren't about finding and removing bugs in already-implemented code, they are about a method that allows one to construct code that doesn't have bugs in the first place.

      Linux, Firefox, and OpenOffice are some of the best software on the planet. I think is a good practical testament to the OSS philosophy.

      And yet they all still suffer from a metric crapload of bugs. Praxis produces software with so few bugs that they are willing to provide a warranty that says they'll fix any bug found within the first 10 years, for free. If their software had the defect rate of Firefox or OpenOffice they'd be bankrupt in short order.

    5. Re:Paper doesn't mention open source model by Anonymous Coward · · Score: 0

      Too bad Linux, Firefox, and OpenOffice don't offer to fix bugs you find in *their* software for free, huh?

      AC

    6. Re:Paper doesn't mention open source model by GileadGreene · · Score: 1

      Yes, yes, open source projects fix bugs for free. The point is that they can afford to do that, because they have so many volunteers to do the bug-fixes. Praxis doesn't have volunteers, so the only way they can afford to do bug-fixes for free is by having a very low number of bugs.

    7. Re:Paper doesn't mention open source model by Anonymous Coward · · Score: 1, Insightful

      Open source model doesn't work for most (99%?) of military and government applications.

      You're wrong. Open source doesn't mean "let the world see". It means "let the people using the code see".

      Military people are particularly fond of open (to them) source (or binary objects so simple that a disassembly is readable), just as they're fond of having complete design specs for their artillery. It doesn't mean they tell "Teh Enemy" the source, just as I am under no obligation to disclose the source of modifications I've made to the linux kernel to anyone other than those I give copies of the modified kernel to.

      Thinking "Open Source" means "openly downloadable by everyone on the planet" is the #2 mistake I see closed source weenies making. (#1 is thinking open source means anyone on the planet can openly UPload to open source CVS repositories. That is such an idiotic notion, I don't know where to begin with them.)

      Anyway the military will completely ignore I"P" laws if it suits them (But hey, I"P" is really bullshit...).

    8. Re:Paper doesn't mention open source model by geekoid · · Score: 1

      " Open source model doesn't work for most (99%?) of military and government applications."

      care to explain what you mean, and why?

      I believe that opening it up can be one step in a process towards 0 bugs.
      Obviously, if no one looks at it you get no benefit. OTOH just a couple of good programmers with an interest can have a very high return.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    9. Re:Paper doesn't mention open source model by geekoid · · Score: 1

      " If their software had the defect rate of Firefox or OpenOffice they'd be bankrupt in short order."

      yes, but you are trying to get orples

      Firefox and openoffice are continous works in progress, as opposed to a project with a firm set of goals.

      I doubt Praxis could make the same offer if customers changes the requirements, and feature list all the time.
      Praxis also has certian requirements about the enviroment in which they work.
      If I took a Solaris 9.0 project, and tried to run it on linux 1.0, I don't think Praxis would be liable for the bugs that would occur.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    10. Re:Paper doesn't mention open source model by Nato_Uno · · Score: 1

      Or, more likely from reading the article, Praxis can have a very low number of bugs by very tightly constraining the work that they're willing to do.

      Anything built using an open model (Linux, Firefox, OpenOffice, etc) is, by definition, open to broad changes in feature sets and functionality. I seriously doubt that Praxis could have developed anything as feature rich as any of those three tools using the same number of man-hours.

      The bug rate is a consequence of the development model. In exchange for a high bug rate you get a high feature return rate. There are always tradeoffs in software development - it's a matter of choosing the right tradeoffs for the situation at hand.

      --

      Have fun,

      Nathan 'Nato' Uno
      http://web.unos.net/
    11. Re:Paper doesn't mention open source model by iggymanz · · Score: 2, Insightful

      You did see the counts of lines of code in Praxis' projects? The header files alone in Linux have more lines of code than all Praxis ever wrote or ever will write.

    12. Re:Paper doesn't mention open source model by mrjb · · Score: 1

      I think Linux, Firefox and Openoffice are great, and having a lot of eyes look upon source code may make all bugs shallow, but it still leaves finding bugs to chance rather than systematically preventing them.

      These people produce code with defect rates better than CMM level 5 (most companies aren't even at CMM level 2). Firefox, OpenOffice and Linux aren't anywhere near zero-defects.

      --
      Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
    13. Re:Paper doesn't mention open source model by stanmann · · Score: 1

      All components of the beaurocracy in government will use Eminent domain to sieze objects of use, and USUALLY will pay, as that is the principle of Eminent domain.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    14. Re:Paper doesn't mention open source model by Weedlekin · · Score: 1

      "Firefox and openoffice are continous works in progress, as opposed to a project with a firm set of goals."

      Each release has a firm set of goals though, so that release could be significantly less buggy than is currently the case.

      "I doubt Praxis could make the same offer if customers changes the requirements, and feature list all the time."

      Neither OO or Firefox have any customers, though: they are free software, and not therefore subject to the financial and competitive pressures that can and do result in buggy commercial projects. Who actually decides what features to add? The development team. Who sets deadlines for implementing these features?The development team. Who decides when they are coded to sufficient quality for public release? The development team. Who therefore is to blame when that code ends up being sub-par? The development team.

      "Praxis also has certian requirements about the enviroment in which they work."

      All software has specific operating environment requirements.

      "If I took a Solaris 9.0 project, and tried to run it on linux 1.0, I don't think Praxis would be liable for the bugs that would occur."

      How is this in any way relevant to the fact that both Firefox and OO are buggy? Such bugs manifest themselves on systems that both claim to support, and are not restricted to people who try and put them on (for example) an XBox-360.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    15. Re:Paper doesn't mention open source model by voxel · · Score: 1

      I don't see how "open source" = Let the people inside the company see. Sounds pretty damn closed to me.

      Have you worked in many companies? Most I have anyone has access to see any code from any project, even Microsoft.

      I also disagree w/ your military argument. Alot of projects require security clearance e.g. @ Lockheed Martin. (Where I have also worked).

      In a regular software company you can see other peoples stuff, but even then if you have nothing to do with a project as in, you are not even a software devleoper, of course they won't let you see. Its a security risk. The more people that have access to something the more it can just get passed around like your bong does.

      Seriously, gov and military projects have security around them, and its tighter than the software development done at K-Mart for a REASON.

      My "opinion" about the whole issue stands.

      --
      Modesty is one of life's greatest attributes
    16. Re:Paper doesn't mention open source model by voxel · · Score: 1

      Quite simple really. The U.S. Gov views it as, "US vs The World". The U.S. Gov doesn't care to share any of our tax-dollars development with "The World". Even if we can get an advantage of more solid code if every missle we made had software on it that was reviewed by arbritrary peers. They don't want every other country in the world using the same software especially if we go to war with them.

      Software + Knowledge = Technology = Power. U.S. Gov doesn't want to share the power.

      If all a missle is, is software...

      Apply this to everything and everything, from a simple router to the space shuttle.

      --
      Modesty is one of life's greatest attributes
  13. Commercial avionics by Anonymous Coward · · Score: 0

    Military avionics is more risk tolerant than commercial avionics.

  14. Here, here... by crimson30 · · Score: 4, Interesting

    When you're writing software for an air traffic control system, military avionics software, or an authentication system for the NSA, the delivered code can't afford to have bugs

    I've been in this industry for quite some time and let me be the first to say that I wish I could repeat this sentence with a straight face.


    That was my first thought, particularly with military avionics. A few years ago they put out a hardware/software update for the ENS system (Enhanced Navigation System) which led to frequent crashing... and it took over a year for them to come out with a message saying that it was a bug and not to waste countless man hours trying to repair it.

    It's sort of a new concept, though, as I'd never really seen such problems with traditional avionics systems (non glass-cockpit stuff). I've always attributed it to people being used to the behavior of MS Windows. And I'm not saying that to start a flamewar. I'm serious. Unreliable avionics systems should be unacceptable, but these days, that doesn't seem to be the case.

    1. Re:Here, here... by Raul654 · · Score: 4, Funny

      Could you clarify here. When talking about bad guidance software for planes, "crashing" is an ambigious term ;)

      --


      To make laws that man cannot, and will not obey, serves to bring all law into contempt.
      --E.C. Stanton
    2. Re:Here, here... by crimson30 · · Score: 1

      Er... obviously, I meant: "Hear, hear...".

    3. Re:Here, here... by drew · · Score: 4, Insightful

      I've always attributed it to people being used to the behavior of MS Windows. And I'm not saying that to start a flamewar. I'm serious. Unreliable avionics systems should be unacceptable, but these days, that doesn't seem to be the case.

      Many years ago, I remember reading a quote from an employee at a major aircraft subcontractor along the lines of "If my company paid as much attention to the quality of our work as Microsoft, airplanes would be falling out of the sky on a weekly basis, and people would accept this as normal." I've heard many people, even programmers, claim that bugfree programs are impossible to write. They are not- they just cost far more in time and money than most companies can afford in this commercial climate. When success depends largely on being first to market and bugs and crashes are accepted as a normal fact of life, then they always will be a normal fact of life.

      Unfortunately, I think the blame lies at least in large part with the consumer. As long as people put up with programming errors in a $500 software suite that they would never accept in an $80 DVD player, we will continue to have these problems. Unfortunately, too many people still consider computers to be too much black magic that is out side of their (or anyone else's) grasp. Most people have little to know knowledge of how their car works under the hood, but they still believe that the engineer who designed it has enough knowledge to do it without making mistakes and expect the manufacturer to pay for those mistakes when they happen. Why should they believe any differently about the people who write the software they use?

      --
      If I don't put anything here, will anyone recognize me anymore?
    4. Re:Here, here... by GlassHeart · · Score: 1
      I've heard many people, even programmers, claim that bugfree programs are impossible to write. They are not- they just cost far more in time and money than most companies can afford in this commercial climate.

      In most cases, even if the additional money isn't the deal-breaker, the additional time would very much be. The war could be over by the time you fix the last bug in your jet fighter's avionics. Now, even though what you say has an element of truth in it, can you actually cite a program over one million lines long that was actually made bug-free? If not, how do you know they can be made bug-free?

    5. Re:Here, here... by Anonymous Coward · · Score: 0

      grammar nazi :) I believe you mean "Hear! Hear!" as one might hear in a Westminster parliament as opposed to identifying the location of an object...

    6. Re:Here, here... by geekoid · · Score: 1

      testing and comtrol of the enviroment is how you ensure they are 'bug' free.

      However, onces something goes outside design parameters, all buts are off. This is also true with the Vehicals themselves. You go beyond 100% of rating, then the manufacture really can't be held liable if the machine falls apart.

      yes, yes, I know about MIL/Specs and that items are desinged with high tolerance. But I hope you see my point.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    7. Re:Here, here... by CastrTroy · · Score: 1

      The problem with off the shelf software in PCs is that there are simply too many variables to ensure everything works perfect 100% of the time. Most people I know that complain about windows crashing have about 250 randomly downloaded programs installed. Either that or bad RAM. How is a computer supposed to cope with Bad RAM, short of remapping it? Also, people don't realize that keeping a computer in good working order takes a lot of work. People take their car in for an oil change every 3000 miles. Why not take your computer in for a checkup every 100 hours? Or even spend the time to run the virus check and understand what it means when you have a virus.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    8. Re:Here, here... by Tim+Browse · · Score: 1
      Reminds me of the story of the fly-by-wire jet fighter that had a slight bug. It all worked fine in the tests, until one day the jet happened to fly south of the equator, whereupon it started flying upside down.

      It sounds apocryphal, but I really want it to be true. :-)

    9. Re:Here, here... by Fulcrum+of+Evil · · Score: 2, Informative

      It sounds apocryphal, but I really want it to be true. :-)

      It really is true, but it happened in a simulator.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    10. Re:Here, here... by Lehk228 · · Score: 1

      the fact that keeping WINDOWS in proper working order is a lot of work is exactly the problem.

      in a properly designed system pebkac related issues should be limited to the home directory.

      --
      Snowden and Manning are heroes.
    11. Re:Here, here... by Starker_Kull · · Score: 1

      Unfortunately, civiliation avionics are not better; the Embraer 145 is equiped with Honeywell units (part of the Primus 1000 package, also in use on several bizjets) for their FMSes that generally get MEL'ed about once per month per plane, for software glitches that freeze up the system. Every update seems to break some other part of the functionality, to the point where there is an unofficial list of functions on the FMS that nobody uses so the boxes don't lock up in flight. You would think dual FMSes would solve the problem, but the glitches tend to take down one after the other, so the redundancy is not very useful. Considering that using dual FMSes on the Embraer is approved as a sole source of navigation, this is pretty disturbing. If it only froze up, that would not be a bad failure mode; it's the ones that miscalculate fuel burn or silently throw the airplane outside of RNP by a factor of 3 with no annuncations (even though one is supposed to show up) that worry me. There has not been a passenger fatality yet on the EMB-145 fleet yet, but the software glitches on a pretty important system ain't helping....

      Anyone else here know about the Tombstone agency? The one that only passes new regs when tombstones pop up? Wish there was a better way than waiting for that...

    12. Re:Here, here... by TheLogster · · Score: 1

      Completely bug free software is impossible to write; because you cannot think of every single thing that will happen to your system. Even if you have both complete control over both hardware and software. As well as the tools used to create the hardware and software.

    13. Re:Here, here... by rufty_tufty · · Score: 2, Insightful

      Actully part of designing a reliable system is coping with faulty hardware! If you're writing software for satellites (for example) you often can't rely on anything working.

      This is completely opposite to the state at the moment, where people assume perfect hardware and buggy software; it should be "hardware that can and does fail" and "software that expects this and deals with it" because software doesn't age or have different faults depending upon which copy it is.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    14. Re:Here, here... by rufty_tufty · · Score: 1

      "Completely bug free software is impossible to write"
      Utter Rubbish!

      Write a piece of software to print hello world to the screen, on your current computer for your current os.
      How can that have bugs in it if I have both complete control over both hardware and software?
      Yes writing bug free gets harder as the system is more complex can become proportonatly more complex, but not impossible.

      Now if you're talking about fault tollerence that's a different kettle of fish! But bug free is possible. Reliability is different to bug free.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    15. Re:Here, here... by gronofer · · Score: 2, Interesting

      For the USA, these days, the war is never over. But a new model of jet fighter is hardly likely to make a big impact agaist drugs, or terror, or whatever it will be next year.

    16. Re:Here, here... by AlecC · · Score: 1

      Unfortunately, I think the blame lies at least in large part with the consumer. As long as people put up with programming errors in a $500 software suite that they would never accept in an $80 DVD player, we will continue to have these problems.

      Another blame is featuritis. In a competitive marketplace, Marketing and hence Management want the now features now. Which means that you tnd to start implementing stuff without doing a full design, and implement enough to get a demo version running quickly, and then are not allowed to go back and rewrite before shipping.

      In many cases, what marketing want is not defined enough to write a specification in Z. "It must be fast and user friendly" is too soft. So you knock something up and say "how about that" - and they ship it. Formal specifications alone would be a big gain.

      --
      Consciousness is an illusion caused by an excess of self consciousness.
    17. Re:Here, here... by Kadin2048 · · Score: 2

      Also, people don't realize that keeping a computer in good working order takes a lot of work.

      Bull. I have a Mac and know a slew of basically unskilled users who also own them, and they work fine without any maintenance at all. Unless you count clicking "Install" on the auto-update utility "a lot of work."

      You change your car's oil because it's a consumable; there's nothing to compare in a computer (well, maybe the bearings in the fans, but those are probably good for several million rotations). A well-designed system shouldn't get slowly "messed up" just as a consequence of normal use and need to be "fixed." There is no reason why you should have to do anything that approaches "computer maintenance" if you are using the system within its design specifications and aren't doing anything that adversely affects it (installing shitty drivers or kernel extensions). There is no reason why you should have to defragment the hard drive, for example.

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    18. Re:Here, here... by CastrTroy · · Score: 1

      The difference is, MAC users won't often install 250 different randomly downloaded applications from no name websites that infect their computer with adware and spyware. This is mostly because they aren't having it shoved down their throats on every website they visit. Windows works pretty good too as long as you don't install tons of crappy software along with it. Also Mac hardware costs more, and therefore we should assume it is higher quality. Therefore there should be less problems with bad RAM, and other hardware problems that cause your computer to crash. With a macintosh, there's a lot less variables in there that will mess around with your software, and how well it will function.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    19. Re:Here, here... by Tim+Browse · · Score: 1
      Ah, that would explain it, because I remember being told about it in an induction course when I started work at Rediffusion Simulation (years ago now).

      Thanks :)

    20. Re:Here, here... by drew · · Score: 1

      I don't know how many lines of code it is, but the last documentation tht I can find of a bug being found in the TeX source is from 1995. So while I don't know of any way to prove that a program is bug free, it is at least possible to make a very complex program sufficiently bug free that no one has found any in over 10 years.

      Of course this illustrates my previous point- no new features have been added to TeX since long before 1995. The only way it has become so bug free is through careful maintenance of a stable code base and (I assume, although I've never looked at the source myself) a solid initial design.

      --
      If I don't put anything here, will anyone recognize me anymore?
    21. Re:Here, here... by GrievousMistake · · Score: 1

      I'm just assuming here, never having owned a mac, but the difference may also be that it doesn't encourage application developers to put stuff willy-nilly in system directories, always assume user is root, and stuff internal windows settings and game options alike into the huge, fat, slimy blob that is the register, where the data will remain eternal unless cleansed by the sacrament of reinstall...
      I'm well past the 'where is the any key' stage, but while I have managed to keep my XP machine operational for years by being highly critical of what is allowed onto my computer, I do have a high application turnover rate, and the fair majority leave cruft where they should never have had access in the first place. Yes, I should be logged in as a restricted user, but as many older applications won't run then, and the ones that will at least need administrator access for the install, it gets too tiresome to follow best practises, and the system detoriates. Point being, crappy software should only be able to destabilise itself, not the entire computing enviroment.

      --
      In a fair world, refrigerators would make electricity.
    22. Re:Here, here... by GlassHeart · · Score: 1
      I don't know how many lines of code it is, but the last documentation tht I can find of a bug being found in the TeX source is from 1995. So while I don't know of any way to prove that a program is bug free, it is at least possible to make a very complex program sufficiently bug free that no one has found any in over 10 years.

      TeX is legendary, but some of your impressions are overly rosy. A bug was fixed in version 3.141592, released in December of 2002. This latest version is 24,970 lines of text, a lot of which are comments. It remains highly useful, but is no longer a "very complex program" by today's standards.

    23. Re:Here, here... by GlassHeart · · Score: 1
      testing and comtrol of the enviroment is how you ensure they are 'bug' free.

      Can't quite tell you who said this first, but testing can only show the presence of bugs, never its absence.

    24. Re:Here, here... by Kadin2048 · · Score: 1

      This is a valid point, but I wouldn't regard the solution to this problem as "maintenance". Rather the solution is repair, followed by user training to correct the problem.

      Of course a contributor to this might be inherent security vunerabilities in Windows that allow the ad/spyware to get there in the first place -- a claim I can't really go one way or the other on, although it certainly seems to be the case.

      Still, if you find yourself having to regularly "maintain" a computer when it's not being used outside of it's intended functions, then it would lead me to conclude several things: 1) you have a crummy OS, 2) you have crummy or unstable software, or 3) you as the user are doing something wrong, or 4) a combination of some or all of the previous options. Fixing those things may be out of your control (as it is in mine, at work) however you shouldn't be lured into thinking that a computer has to or worse yet should be this way. It doesn't and shouldn't. The fact that it is, is something we should fix, not brush under the rug.

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    25. Re:Here, here... by Anonymous Coward · · Score: 0

      I suggest you read about the financial reality of the life threatening shortcuts taken by AIRBUS, UTC, and TTTech in fraudulent violations of FAA and EASA regulations in the development and certification of the Safety Critical Cabin Pressurization and Control System on the AIRBUS A380, the worlds largest passenger aircraft. Even Boeing, who purchased this system from UTC, for the Boeing 787, later forced it to be redesigned to restore safety features because they had determined that the design was not safe! Newspaper and Television Coverage on the scandal. http://www.joe-mangan.com/ with technical details and evidence documents at http://www.eaawatch.net/

    26. Re:Here, here... by toddestan · · Score: 1

      Bull. I have a Mac and know a slew of basically unskilled users who also own them, and they work fine without any maintenance at all. Unless you count clicking "Install" on the auto-update utility "a lot of work."

      Bull. I've seen plenty of badly programed Mac programs crash a lot too, including some of Apple's own. It's just not a PC/Windows thing. And until OSX 10.3, they could take down the OS without too much difficulty too. And of course, the entire Mac OS classic from about System 7 on was so poorly programmed that it made Windows 95 and 98 look stable. And of course, throw a bad stick of ram in a Mac and it will lock up and crash just like any other computer.

    27. Re:Here, here... by Busy · · Score: 2, Funny

      That's the best description of the registry I've ever heard. "The sacrament of reinstall" part reminded me of the little girl in The Exorcist.

      Computer: Warning! Pressing 'Y' will erase all data on the hard drive. Do you wish to continue?

      Me: THE POWER OF CHRIST COMPELS YOU! THE POWER OF CHRIST COMPELS YOU!
      --
      Think of someone with average intelligence. Now think 1/2 the world is dumber than that guy.
    28. Re:Here, here... by TheLogster · · Score: 1

      Wikipedia defines a software bug as ... "A software bug is an error, flaw, mistake, failure, or fault in a computer program that prevents it from working as intended, or produces an incorrect result." (http://en.wikipedia.org/wiki/Software_bug)

      Based on that definition - I still stand by my previous assertation that creating completely bug free software is an impossible task.

      As a developer I do try to think of everyway my software can fail, and put in code to handle those cases and unexpected ones. Even though I do this I can't think of every combination of hardware + software that my program is going to be run on.

    29. Re:Here, here... by rufty_tufty · · Score: 1

      I don't see what that definition changes. (Although citing wikipedia asa a source is a questionable activity).
      I have written error free code, that under its intended operating conditions always gives the correct result.
      I'll grant the only code I am certain of it being error free is relatively simple code (some micro-controller stuff doing some line pulse detection); but bug free code as you define it does exist.
      Scaling it is difficult, but I see no reason why it is impossible (in the dictionary sense of the term)

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
  15. When bugs aren't allowed? by vertinox · · Score: 4, Funny

    Ususually when the software and the phrases "life support" or "nuclear weapons" are together in the same sentence.

    --
    "I am the king of the Romans, and am superior to rules of grammar!"
    -Sigismund, Holy Roman Emperor (1368-1437)
    1. Re:When bugs aren't allowed? by bigtrike · · Score: 1

      In the case of nuclear weapons, all you need to do is make sure your enemy thinks the code is bug free.

    2. Re:When bugs aren't allowed? by Anonymous Coward · · Score: 0

      You forgot "our elected officials" and "accountability in the government", just to be on the accurate side.

      /its ok. modern media washes you of such thing. i forgive you.

    3. Re:When bugs aren't allowed? by logicpaw · · Score: 1
      In the case of nuclear weapons, all you need to do is make sure your enemy thinks the code is bug free.

      Depends on the failure mode. You might not want to reside on the same continent/planet as the device the code controls for the other failure mode caused by some bug.

  16. the old axiom applies by User+956 · · Score: 2, Insightful

    nearly unlimited funding probably helps too

    The old technology axiom applies:

    High Speed, Low Cost, High Quality.

    Pick 2 out of 3.

    --
    The theory of relativity doesn't work right in Arkansas.
    1. Re:the old axiom applies by zobier · · Score: 1

      The old technology axiom applies:

      High Speed, Low Cost, High Quality.

      Pick 2 out of 3.

      I've thought about this though, and you really can't have a Low Cost, High Quality product. The reason for this is that you can't rush Quality (as you stated, 2 out of 3) and Time is Money.

      So here's hoping more people come to appreciate Quality and are willing to spend the Time/Money necessary to achieve it!

      --
      Me lost me cookie at the disco.
    2. Re:the old axiom applies by kahanamoku · · Score: 2, Interesting

      I guess you could always substitute Quality, with Stability / Robustness

      --
      ----- Concentrate on promoting more than demoting.
    3. Re:the old axiom applies by AvitarX · · Score: 1

      Clearly you can't mix time is money with ... 2 out of 3 or it doesn't work.

      The whole point is that time is money and getting something quickly costs more.

      If you use cost as money, and not time, then you can wait to a slow season and get something cheap cheap cheap in most industries.

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    4. Re:the old axiom applies by TapeCutter · · Score: 1

      High quality combined with low cost usually means it runs like molases. It does not mean it is cheap, it's just that high quality + high performance is the most expensive option.

      TFA: I don't really see anything new in the article, it basiclly says quality is a function of the effort spent on planning and verifying that components meet or exceed the design specs, real engineers have been perfecting that method for centuries. Also comparing a few sample projects to the huge number of projects and organisations that have used CMM is kinda pointless, except to say that CMM is not perfect. Me thinks the IEEE wants to muscle in on CMM's established territory.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    5. Re:the old axiom applies by Angostura · · Score: 2, Insightful

      Whoops, well that just about wraps it up for open source then. I've always thought that Linux was the absolute exemplar of slowly developed high quality low cost code. ... Although I suppose The Hurd might be an even better exemplar one day.

    6. Re:the old axiom applies by hb253 · · Score: 1

      Perhaps the parent poster was thinking about the traditional project management triangle of cost, quality, time?

      Variations of any of the three points affect the project outcome.

      Some possibilities:

      • increase time = increased cost and (hopefully) increased quality
      • decrease time = decreased quality and decreased cost
      etc etc.
      --
      Self awareness - try it!
    7. Re:the old axiom applies by dubl-u · · Score: 1

      High Speed, Low Cost, High Quality. Pick 2 out of 3.

      And that's only if you're very lucky. There are a lot of projects that get none of those. Often because they were trying to get 3 out of 3.

    8. Re:the old axiom applies by sbjornda · · Score: 1
      Linux was the absolute exemplar of slowly developed high quality low cost code. ...

      Ummm... you're agreeing with the parent, then. Linux is high quality and low cost, but definitely not developed quickly. You have your two out of three.

      --

      .nosig

  17. Not unlimited funding by david.emery · · Score: 5, Interesting

    The Master Money server done by Praxis was done Fixed Price, and with a warranty that says Praxis would fix any bug discovered over the net 10 years -for free-.

    How many of you would be willing to place that kind of warranty on YOUR CODE?

    dave (who's tried SPARK and liked it a lot, although proofs are much harder than they should be...)

    1. Re:Not unlimited funding by Fnord666 · · Score: 2, Insightful

      I do. Not intentionally, that's just how it usually works out.

      --
      'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
    2. Re:Not unlimited funding by MLopat · · Score: 1

      We do. 100% guarantee on every application that we ship.

    3. Re:Not unlimited funding by Anonymous Coward · · Score: 0

      All you really need is the following:

      10k...
      A tribe of Indians...
      Jack Abramoff as a friend... PRICELESS

      Oh... Wrong Indians.

    4. Re:Not unlimited funding by geekoid · · Score: 1

      If I am allowed to engineer, moduralize, and develop use cases, I would. Everytime.
      I have had very few issues with code I developed from begining to end, based on my time tables.

      OTOH, code where release was more important then accuracy, and I had no say in the matter, then no, I wouldn't do it for free.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    5. Re: Not unlimited funding by Black+Parrot · · Score: 1

      > > The Master Money server done by Praxis was done Fixed Price, and with a warranty that says Praxis would fix any bug discovered over the net 10 years -for free-.

      > How many of you would be willing to place that kind of warranty on YOUR CODE?

      Also, how many of you have ever had a customer who could state their requirements clearly enough to offer that kind of warranty?

      --
      Sheesh, evil *and* a jerk. -- Jade
    6. Re:Not unlimited funding by Anonymous Coward · · Score: 0

      How many of you would be willing to place that kind of warranty on YOUR CODE?
      Knuth does this with Tex. Hell, he pays you if you find a bug...

    7. Re: Not unlimited funding by Coryoth · · Score: 1

      Also, how many of you have ever had a customer who could state their requirements clearly enough to offer that kind of warranty?

      Clearly the sort of assurances that Praxis provides aren't reasonable for every project, but then again not every project really requires that degree of assurance. There are, however, a great many software projects, particularly security or network related ones, that could almost definitely benefit from the sort of approach Praxis takes. Those projects are also, usually, entirely capable of working with the client to develop a clear an unambiguous set of requirements.

      Jedidiah.

    8. Re: Not unlimited funding by TrappedByMyself · · Score: 1

      Also, how many of you have ever had a customer who could state their requirements clearly enough to offer that kind of warranty?

      That's your job. If a customer were able to build a clear set of requirements, then they would likely have the skills to build their own systems.

      --

      Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?
    9. Re:Not unlimited funding by Anonymous Coward · · Score: 1, Funny

      I think the parent was talking to/about non-deities.

    10. Re:Not unlimited funding by lisany · · Score: 1

      How many of you would be willing to place that kind of warranty on YOUR CODE?

      I did.

      Well, it wasn't so bad until the client decided to run the code (which worked locally) on some funky configuration and change spec after it's completed.

    11. Re:Not unlimited funding by syousef · · Score: 1

      No one in their right mind places that kind of warranty on the code they write.

      They might place that warranty on code their underlings write if they're a CEO intending to charge more up front then retire before the company goes down the toilet.

      The nature of software is that you:
      1) Rely on existing libraries and hardware as black boxes
      2) Write to ambiguous specs (if any) under time pressure
      3) It gets used under different circumstances than you expected, probably violating every assumption you had to make.

      I wouldn't even guarantee a single assignment statement for 10 years at no cost. I would guarantee to look at it and fix it at a reasonable price.

      Why do you think when anything is TRUELY important you have 2 or 3 redudant systems. eg. on the space shuttles you have 3 onboard control computers doing the exact same thing - and even then with billions spent 2 still blew up and killed people (not to mention set back the US space program).

      Also my experience has been that companies either overcharge by a factor of 2 when they do fixed price, or they're hoping to win the contract from the competition, then push the price up when the specs change (as it inevitably does).

      This "we promise, trust us" behaviour is not to be encouraged.

      --
      These posts express my own personal views, not those of my employer
    12. Re:Not unlimited funding by Silver+Gryphon · · Score: 1

      The company I work for has products with a bug fix guarantee from inception to sunset, typical product life of 15+ years. All products we develop are guaranteed to work, be flexible with industry changes and otherwise give end users and their managers the ability to get the work done. We're not perfect by any means but when the health care industry changes the rules every week, and with 2,000 businesses wanting custom coding, we do a pretty good job. Some of our software costs over $100k, with a few multi-million $ installs and with annual support contracts (I think typically 8% of software cost). It's a bargain when you consider a 15-year life cycle.

      How do we keep the software guaranteed for 15 years? They use our software as a front-end to our clearinghouse that gets their bills paid for a per-transaction fee. If our software doesn't work, they can't bill, we don't get the fee. That's motivation for us to improve our processes; it's a lot easier to deal with custom coding (revenue) than hearing that half your client base is shut down because you didn't test properly (support costs). With profit sharing, every employee has more motivation to try a little harder. For example, I know that if I improve a typical biller's process from 36 to 30 seconds, they're 20% more productive and that means we get more transaction revenue from that client.

      So the keys I see to a long-term guarantee are: Annual support contract, unlimited bug-fix and industry keep-up guarantee, charge for custom work, and encourage developers to improve quality and app speed. If you're good enough, they'll pay the support contract happily, knowing they're avoiding the greater cost of errors.

    13. Re:Not unlimited funding by RobinH · · Score: 1

      How many of you would be willing to place that kind of warranty on YOUR CODE?

      Well, as long as I get to set the flat fee, then yes, I'd be willing to put that warrantee on my code. But not a guarantee.

      --
      "I have never let my schooling interfere with my education." - Mark Twain
    14. Re:Not unlimited funding by NormalVisual · · Score: 2, Interesting

      1) Rely on existing libraries and hardware as black boxes

      Don't forget tools - I have to do the majority of my work in C++ with Visual Studio, and there has been more than one occasion where I had to look at the generated assembly code to figure out what was going on when VC++ screwed something up ("WTF - where'd that JMP come from?!?"), and then spend a little more time coming up with an alternate way to express the same logic that the compiler wouldn't fuck up. You can mathematically prove the correctness of your code all you want, but if the compiler is not going to faithfully produce machine code that exactly mimics that behavior, you're still going to have issues to deal with even though your logic is impeccable. Being able to truly prove correctness means being able to account for every single machine instruction that will be executed, and every bit of data those instructions operate on. I can't do that with any system in the commercial marketplace right now, so while I perhaps can guarantee *my* code, I can't guarantee bug-free or uninterrupted operation .

      You can't expect to build something solid if your foundation is made of quicksand.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
    15. Re:Not unlimited funding by syousef · · Score: 1

      If your customers are on a paid support contract that does not mean you've given a 100% warranty on a price fixed for developing the software only.

      Note that I said I'd guarantee to look at and fix problems for a reasonable cost. How is this any different to what you're describing?

      --
      These posts express my own personal views, not those of my employer
    16. Re:Not unlimited funding by hyc · · Score: 1

      I do. But then again, I write for OpenLDAP, and most of my code is free already, so this is nothing unusual. There's freeware out there I wrote 20 years ago still being used around the world, and yes, last year I wrote a fix for that for free too. In this case, I think 1 bug in 18 years isn't so bad.

      --
      -- *My* journal is more interesting than *yours*...
    17. Re: Not unlimited funding by Detritus · · Score: 2, Insightful
      That's your job. If a customer were able to build a clear set of requirements, then they would likely have the skills to build their own systems.

      Do I get to strap them down, put bamboo splinters under their fingernails, and inject them with truth serum?

      There isn't much that you can do when the customer is uncooperative and doesn't want to get involved or admit their ignorance.

      --
      Mea navis aericumbens anguillis abundat
    18. Re:Not unlimited funding by Anonymous Coward · · Score: 0
      And your the guy that said 'why patch the windows servers for the WMF exploit, its not as if your going to be browsing the internet with them'

      I wouldn't trust your software as far as I could through it.

      Come back once you've learnt what software programming is reallyabout.

    19. Re: Not unlimited funding by TrappedByMyself · · Score: 1

      There isn't much that you can do when the customer is uncooperative and doesn't want to get involved or admit their ignorance.

      Funny, I bet the customer is thinking the same thing about you. "We hire this person who is supposed to be a software development expert, and we have to spoon feed them everything about they system?"
      Each one of your customers has their own job to do. They have their own deadlines and problems to worry about. More than likely, their job doesn't include holding your hand. Your job is to take whatever scraps they toss you and build a useful system out of it. Surprisingly, if you build something solid that includes what they told you, you'll get much more attention from them. If you sit around and whine that "there isn't much that you can do", you're just building a good set of excuses.

      --

      Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?
    20. Re:Not unlimited funding by MLopat · · Score: 1

      Maintaining your system is important, and that includes applying the latest security patches. However, the software that we typically engineer is not commercial, off-the-shelf, install it everywhere stuff. An important part of developing good software is controlling the environment that it resides on. So I don't allow customers to install their favorite games, email client, web browser, etc. etc. on their production database server... it's just common sense.

    21. Re: Not unlimited funding by dubl-u · · Score: 1

      There isn't much that you can do when the customer is uncooperative and doesn't want to get involved or admit their ignorance.

      I wouldn't go that far.

      Often during a planning session I have trouble getting customers engaged. We'll come up with a stack of index cards, one per feature. I'll say, "Now just put them in order by importance and we'll start working at the top." They will say, "But they're all really important!"

      Here's where the trick comes in. I look through the stack, pull out the most retarded item and say, "Oh, this looks fun to build. We'll have this ready for you next week to show to your bosses." They have a quick vision of showing something useless to the higher-ups, squawk like a rooster and say, "No! No! Do this one first," pulling out something that is actually important.

      Then, a few days later we'll show them the first version. They'll say, "No, that's not what I meant at all! What I really meant is X." Then we're off and running. They're engaged in the process, and we're all talking regularly about what they want.

      The magic comes from tightening the feedback loops as much as possible so that confusion get squashed quickly. Nobody minds 30 seconds of misunderstanding. It's when you stretch that out to six months of development time that people start looking up the definition of justifiable homicide.

    22. Re:Not unlimited funding by sjames · · Score: 1

      How many of you would be willing to place that kind of warranty on YOUR CODE?

      If you're willing to pay the right price and take the delivery time hit, I'm up for it. 10,000 LOC at $500/line = retire well in 10 years. I'm only partially joking. Most customers simply aren't willing to pay what it takes to produce code at that quality. Some of it is a race to the bottom, but some of it is a reasonable business decision. Yes, bugs might cost a company a million a year in lost productivity, but as long as nobody gets hurt, that might be reasonable to accept that if producing (probably) bug-free code tallys to 1.2 million a year (amortized over the design life of the software).

  18. Still can have leaky abstractions. by Anonymous Coward · · Score: 0

    "If you can prove through solid design and input and output types that the program wont lose control then your set. Its buffer overflows and flawed design that has not been tested with every concievable input/output that causes most serious bugs in medical and aerospace applications."

    I've always felt that resiliancy comes from the bottom up, and the reason our code's so brittle, is because the hardware is as well. A leaky abstraction can only be wallpapered over so much before failures start popping up all over the place.

  19. Automatic Verification Systems? by mochan_s · · Score: 1

    Why can't automatic verifications systems be used for this? You start with an input set and define the output set. Run a program verification system to make sure the outputs are in the output set and don't go out of it?

    The inputs or outputs could be infinite but in that case use logical constructs to verify it.

    I'm not a researcher or student of this theory. So, maybe someone can illustrate to me why this wouldn't work or be applied to industry?

    1. Re:Automatic Verification Systems? by cnettel · · Score: 1
      That's what's sometimes done, and it's mentioned in TFA. But, what kind of logical constructs would you use to define the expected output for any input, in a logical manner, instead of just lining them up? Hey, that's the program itself. If you can define exactly what you want in a concise manner, with a way to verify it, then the only remaining problem in the resulting code is performance. (Of course, in practice many of these systems have a realtime requirement to a varying degree.)

      You might be able to simulate the system as a whole and instead define "forbidden" states. You might also be able to test individual parts, where you think the set of inputs/outputs is more limited (unit testing, more or less). You might organize your code in a logical manner, suiting the problem at hand, limiting the number of things that you need to keep in mind while writing code, instead making it the task of the compiler or other tools to check them for you. But what very many bugs boil down to, when not typos (which is surprisingly common) is: "Hey, I didn't think about that ever happening, and that it would have those consequences.".

      "Just" testing might cause you to think, but to think about That Thing That Is The Big Bug is the problem. If it eluded you while writing the code, it might elude you while writing the test.

    2. Re:Automatic Verification Systems? by FriedTurkey · · Score: 1

      That's great if you have a 1 parameter function. Multiple infinity by 100 diffrent variables. I am going to try running the test on my Pentium III. I should have it fully tested when they wake my body up from carbon freezing in 5995.

    3. Re:Automatic Verification Systems? by GileadGreene · · Score: 1

      Uh, did you RTFA(s)? They are using automatic verification - take a look at their SPARK Ada toolkit.

    4. Re:Automatic Verification Systems? by Anonymous Coward · · Score: 0

      When you write a subroutine asking for someone's name, you don't really expect them to enter "", do you? It's not realistic to write a program to test _all_ possible inputs, because of special cases like that.

    5. Re:Automatic Verification Systems? by GileadGreene · · Score: 1
      But, what kind of logical constructs would you use to define the expected output for any input, in a logical manner, instead of just lining them up? Hey, that's the program itself.

      No, that's the specification. The program is the method for performing that actual mapping from input to output. The two are not the same. I can tell you how to recognize a square root when you see one (e.g. sqrt(x) is y such that y*y = x), without actually telling you how to construct a square root (there are, of course, several possible methods for doing so). The former is a specification. The latter is a program.

      But what very many bugs boil down to, when not typos (which is surprisingly common) is: "Hey, I didn't think about that ever happening, and that it would have those consequences."

      Which is why the Praxis approach includes some extremely good requirements elicitation, to understand the problem domain as completely as possible, and rigorous specification using notations that are amenable to formal analysis, so that those "Hey I didn't think of that" situations can be found and fixed, often before a line of code has been written.

    6. Re:Automatic Verification Systems? by Coryoth · · Score: 1

      That's great if you have a 1 parameter function. Multiple infinity by 100 diffrent variables. I am going to try running the test on my Pentium III. I should have it fully tested when they wake my body up from carbon freezing in 5995.

      The key, then, is to actually use some computer science and mathematics and do proofs instead of relying on trying to test all the possible cases. We know that for a right angled triangle the square of the hypotenuse is equal to the sums of the squares of the other two sides. We have not drawn, measured and calculated the results for every possible triangle. Instead we used formal mathematics to prove that this was the case. You can do the same for software - it involves a little more sophistication when writing to code, and proofs are still very hard, but it can be done. This is, in fact, part of what Praxis does - they use a language, SPARKAda, and tools designed around it, to do signficant formal static checking and even proofs of properties of the software.

      Jedidiah.

    7. Re:Automatic Verification Systems? by georgewilliamherbert · · Score: 1
      Actually, yes, checking for stupid boundary conditions on all input is possible and a reasonable thing to ask programmers to do.

      Not commonly done, no. But then, bad input corner condition security holes are pretty common too.

      I don't claim to perfectly code to check all that stuff every time myself, but I do know why you want to do it.

    8. Re:Automatic Verification Systems? by Coryoth · · Score: 1

      But what very many bugs boil down to, when not typos (which is surprisingly common) is: "Hey, I didn't think about that ever happening, and that it would have those consequences.".

      This is why Praxis uses formal specification, which is a method for formally writing down your requirements in a way that tends to make the things you didn't otherwise think about clear. You can find some of my thoughts of formal specification here. Just using something as simple as preconditions and postconditions can help alleviate much of the problem by simply making quite explicit exactly what it is you are expecting, and giving anyone who calls the function a clear indication of exactly what they can safely assume your function will return. It's precisely these sorts of techniques - simple but effective - that can help reduce errors. Take a look at projects developed in Eiffel which has strong Design by Contract syntax providing pre and postconditions and you'll already see a reduction in the rate of bugs. Take the formalism further, as Praxis does using SPARK, and you'll see stunning results.

      Jedidiah.

    9. Re:Automatic Verification Systems? by VENONA · · Score: 1

      If you can't properly sanitize user input please don't write Web applications. And don't forget the environment the software runs in, either. There are other inputs than a human user's.

      --
      What you do with a computer does not constitute the whole of computing.
    10. Re:Automatic Verification Systems? by Anonymous Coward · · Score: 0

      They do for hardware designs. There's a collection of tools by Archer called 0-in that will tell you if your design will enter certain states or not, in adddition to assertions and other design verification methods. Cadance makes(acquired) a tool called Conformal that can prove a Verilog RTL description logically matches a gate level circuit.

    11. Re:Automatic Verification Systems? by NormalVisual · · Score: 1

      Formal specification still isn't a silver bullet. Much of the software I write depends on output from other third-party systems, and that output is often not clearly defined to me, and can occasionally change without me or the customer being advised of it. I don't know what those changes might be, and neither does the customer, so they really aren't able to be spec'd properly. Just the same, if my code doesn't work in a manner that the customer expects it's still considered a bug.

      I give Praxis props for their efforts, and definitely appreciate what they're trying to do and the results they achieve, but in my experience it's uncommon to be able to get sufficient customer cooperation to properly define requirements, and even more uncommon to get the customer to adhere to said requirements over the life of the project. I think every coder on /. would agree that their code would improve by at least an order of magnitude if they could simply get decent specifications and the time to properly code to them. While Praxis offers workable solutions in the engineering domain, most of the problems I encounter are practical issues that come from the business domain.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
    12. Re:Automatic Verification Systems? by Anonymous Coward · · Score: 0

      i'll tell you one reason, people tend to lack vision. they are given a jacked system and just try to survive within the system. they go on autopilot. this is all they know so this is all there is.

      i developed a product note database, complete with text and pdf (pictures, diagrams, notes) notes. the supervisor won't use it. it is, and i quote, "inconvenient."

      i've told his boss this pretty close to ten times now... up until the point he started getting mad at me for mentioning it.

      it is always fun to resolve the errors of his department that are addressed in the database. ;-)

      if only he had read it and given it to his workers to review BEFORE things get jacked.

      but he didn't. and his boss appears to be incapable of mandating the supervisor do anything he doesn't want to do.

      i can complain about a lot more... but this is a good start why private industry often sucks so much.

      the answer... "look mr supervisor, please give a detailed explanation why it is more intelligent to go into a complex build blind than to spend a few seconds per product to type in an assembly number and have access to the documented problems of prior builds. if you can't, then i expect you to do the smart thing, not the other than smart thing. this is important to me and it will be a key point come review time. i want you to be successful, so work with me. we all have to do things we don't want to do - that's called being a professional at work. check back with me in a few days and let me know how it goes."

      then you audit. if it isn't getting done, you repeat the talk, but aren't so nice about it. perhaps include a warning of some sort.

      easy.

      but not for some people... the sales people who market their way into jobs they are ill prepared to handle.

    13. Re:Automatic Verification Systems? by Animats · · Score: 1
      Here's the manual for one. (large PDF) I and some others developed this in 1981-1983. Back then, it took 45 minutes to grind through the verification process for a 500-line program. I used to demo this by showing people a verified program and letting them put in a a bug, then watch the verifier find it.

      Years later, a somewhat similar verifier for Modula III was developed at DEC Western Research Labs, but it died with DEC.

      Microsoft Research is now developing something called Spec#, an extension to C# for formal verification. Much of the effort there focuses on object consistency, and, for the first time, somebody is finally handling the consistency issues associated with object call-out and callback. (This is badly needed in the Microsoft world, where the GUIs call round and round and back in, without proper theory to support that.)

    14. Re:Automatic Verification Systems? by Weedlekin · · Score: 1

      "The key, then, is to actually use some computer science and mathematics and do proofs instead of relying on trying to test all the possible cases."

      Just as those in more traditional manufacturing use statistical sampling for QA instead of testing every single product. Exhaustive testing is reserved for specialist markets which are willing to pay a significant premium to ensure that every single item performs according to a stringent set of specifications "out of the box".

      --
      I'm not going to change your sheets again, Mr. Hastings.
  20. 2 defacto models of software development by MLopat · · Score: 4, Informative

    In the world of software development, there have come to be two defacto models.

    1. Get the software out the door ASAP - quite simply, bang out code as fast as possible that meets a loosely defined specification. Then once the product is adopted, parachute help in like no tomorrow to steadily improve the product.

    2. Engineer the software - not as a simple as it sounds. This requires that a specification be drawn. A plan be prepared. A team of solid engineers formed and lead by a competent manager. Then, throughout the entire development cycle, test and debug code.

    My company does the latter and to do date we have retained 100% of our customers. I'm shocked by the number of developers that approach our company for jobs that don't have the first clue about how to even write a test harness, let alone do any real debugging. Then again, they don't teach much of that stuff in school and it seems that unless your role was specifically in testing at a previous job, that you're not going to have too much experience in that area. Its economics and marketing that put the bugs in software, not computer science.

    1. Re:2 defacto models of software development by Anonymous Coward · · Score: 0

      So what are defect rates for your products, and what is your productivity?

    2. Re:2 defacto models of software development by tjr · · Score: 1

      My role _is_ specifically testing (and documentation), and I have become a major advocate of true software engineering. It does exist, and it's very hard to do, but I believe worth the time if we don't want to keep on having crummy software.

    3. Re:2 defacto models of software development by whereiswaldo · · Score: 1

      What's your position on extreme programming? Sounds like you'd be against it.

    4. Re:2 defacto models of software development by MLopat · · Score: 1

      That's a good question. We've never done an analysis to that level, but if I had to estimate, I'd say that our defect rates would be comparable to the best of that mentioned in the article. All of our software ships with a 100% guarantee on code for the life of the product. Meaning that we will fix, for free, any bug that a customer finds in code. And nobody has ever come back to us with an issue in our code. We've occasionally had to add work arounds to get our software working with a non-standard proprietary application that our customers have later installed on the same system - but in every case it is a result of the other app not using the Win32API correctly.

      Our productivity is descent. I'd say 30 LOC/day would be about right. Then again, we're able to reuse and rework existing code from previous projects... so a definite number would be hard to reach.

    5. Re:2 defacto models of software development by MLopat · · Score: 1

      I totally agree. Testing is a science and an art. It has been extremely undervalues by most of the development community. Most small development houses that I've been ask to consult with have a "tester" that bangs through the interface to find the bugs.

    6. Re:2 defacto models of software development by MLopat · · Score: 1

      I've looked at extreme programming on a few occasions, but there are too many things about it that aren't practical. While it may be customer focused, its important to have someone that understands the customer well enough that you shouldn't have to run to the customer everytime you complete something. Anyone doing that just shows incompetence and annoys the customer. Parts of extreme programming are too reactive as well. For example, one of the principles is to create tests after a bug is found... If the tests created for the units, modules and systems havn't already picked up the bug, fire your tester. And I think the idea of two people work side by side on one piece of code is counter productive for alot of reasons. That's why I encourage peer reveiews where you sit down with a team mate or your manager, and go through the completed code line by line. Extreme programming doesn't emphasise documentation, nor does it stress that you need to work on the hardest code first.

      The principles that I believe in have come from books like Writing Solid Code, Code Complete, Under Pressure and on Time, and my favorite, Debugging Applications for .NET and Windows.

  21. You mean, it's not hard when... by No+Such+Agency · · Score: 2, Insightful

    It's not hard to produce nearly-bugless code when you have both the budget to do proper quality control, and the incentive to do so.

    The reason why Windows is not bugless is that they have the budget to properly debug it... but little incentive to do so before launch. The customers will purchase it anyway and gratefully accept bug fixes after the fact. Airports or the military who bought faulty mission-critical software would not be so forgiving.

    --
    Freedom: "I won't!"
    1. Re:You mean, it's not hard when... by VENONA · · Score: 1

      "The reason why Windows is not bugless is that they have the budget to properly debug it... but little incentive to do so before launch."

      Hell, Microsoft can't seem to get projects launched *anyway*. If they had to deliver 1 defect per 1K SLOC, Win95 wouldn't be out the door yet.

      --
      What you do with a computer does not constitute the whole of computing.
    2. Re:You mean, it's not hard when... by rufty_tufty · · Score: 1

      This is where my experience differs from yours then:
      The systems we tried to get bugless were much more likely to be delivered on time because (I believe) we didn't spend the last 90% of the design time debugging unexpected bugs, instead we followed the project paln and little was unexpected. Project slips we found were therefore quite rare.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
  22. Secure code by Muhammar · · Score: 2, Interesting

    The main obstacle in writing a decent code is usualy the management - their frequent changes of mind (about what they want - which is usualy different from what is helpful to the users) and their "good enough" and "legacy first" attitude. Overreaching ambition is another problem - one needs to limit himself to fewer things to do them well - and the management pressures usualy run in oposite direction. (Salesmanship bullshit never helps, especialy if it starts to influence the direction of your project.)

    --
    I doubt that we will ever figure out - and I suspect that even if we did figure out we couldn't do much about it
    1. Re:Secure code by iamlucky13 · · Score: 1
      Right, but the article addresses this in point 4:
      4.) Saying things only once. For example, by producing a software specification that says what the software will do and a design that says how it will be structured. The design does not repeat any information in the specification, and the two can be produced in parallel.
      The key to this point, obviously, is to know exactly what you want when you start and have a detailed outline of the components that will enable it.
    2. Re:Secure code by Anonymous Coward · · Score: 0

      The key to this point, obviously, is to know exactly what you want when you start and have a detailed outline of the components that will enable it.

      Good fucking luck getting that out of customers. If you want to do business with the general population, you just can't do that. Even if you want to do business with less than 100 customers, you're not going to get everyone to agree to a uniform model.

      Praxis' model is great when have one customer who values low bug (and possibly low performance) software. When you're dealing with the government, awesome, do that. When you're dealing with OTS software that's an entirely different ballgame.

  23. productivity around 30 LOC per day by Anonymous Coward · · Score: 0

    30 LOC - That's 30 lines of code a day. Unlimited budget combined with enough time and resources to do the job right.

    1. Re:productivity around 30 LOC per day by blair1q · · Score: 3, Insightful

      30 LOC is net. You spend the first 45% of a high-reliability project doing the design work, and the last 45% doing the verification. The 10% in the middle is code generation.

      These guys seem to be claiming they can reduce redundancy in the design work, and rework in the verification work. They're doing it by using a design-description method that prevents unambiguity (and therefore using a team that is TRAINED to write unambiguous requirements, so their magic language may not be the key), a coding method that avoids unprovable structure (and probably eliminates a lot of other sorts of flexibility), and a verification method that first validates the design and then verifies the code as it's produced (no new value there as everything has to be touched at least once anyway, and if a big bug turns up that causes a lot of code to be redone you have to redo formal verification on those units again; something that's less likely if formal verification is delayed until full-alpha code is demonstrated, having been informally verified along the way).

      Their claims of massive error reduction are, at best, anecdotal. Let's see them do this after taking over a half-coded project with minimal design requirements, a hard deadline, and a budget that can be cut by governmental forces at will.

    2. Re:productivity around 30 LOC per day by GileadGreene · · Score: 2, Interesting
      Let's see them do this after taking over a half-coded project with minimal design requirements, a hard deadline, and a budget that can be cut by governmental forces at will.

      Which is precisely the kind of project they avoid, because it's a disaster waiting to happen. Praxis caters to customers who want quality, and are willing to do what it takes to get it.

    3. Re:productivity around 30 LOC per day by Coryoth · · Score: 4, Informative

      Their claims of massive error reduction are, at best, anecdotal. Let's see them do this after taking over a half-coded project with minimal design requirements, a hard deadline, and a budget that can be cut by governmental forces at will.

      Their claims of error reduction are based on the development method and a lot of the important stuff happens very early on, taking over a half finished project that failed to follow such a method is of course not going to work. They can't make existing code bug free, but they can write new code that has vastly less errors than most software. As to hard deadlines and budgets - as far as I am aware Praxis already works with deadlines, and apparently their project for Mastercard was done on a fixed flat fee, so working with fixed or limited budgets doesn't appear to be an issue either.

      Jedidiah.

    4. Re:productivity around 30 LOC per day by blair1q · · Score: 1

      Then their ability to produce bug-free code depends, as usual, on control factors, not on real-world engineering.

    5. Re:productivity around 30 LOC per day by Coryoth · · Score: 4, Insightful

      Then their ability to produce bug-free code depends, as usual, on control factors, not on real-world engineering.

      In as much as a civil engineer depends on control factors via refusing customers who demand that the building have 6 stories not 4 just one month before construction is due to finish, yes. Real world engineering makes certain demands of the client. Someone who wants to build a treehouse for their kids doesn't consult an architect and a civil engineer, and civil engineers don't take contracts from people who refuse to set out some limits on what they want built, and what they expect of it.

      Praxis uses solid engineering. Their "Correct by Construction" approach is solidly grounded in axiomatic mathematics and uses similar sorts of formal calculations and logical and mathematical proofs as you might expect to see from civil, electrical, aerospace, or ny other kind of engineers. Take the time to read sample chapters from the SPARK book to get an idea of exactly what they are doing. There is very definitely quite solid engineering going on.

    6. Re:productivity around 30 LOC per day by Anonymous Coward · · Score: 0

      They may have done the project at a loss, either to enter a new market, or for other reasons.

    7. Re:productivity around 30 LOC per day by Mignon · · Score: 2, Funny
      their project for Mastercard was done on a fixed flat fee

      I would have said no payments for the first six months, then 19.7% after that.

    8. Re:productivity around 30 LOC per day by oni · · Score: 1

      Their claims of massive error reduction are, at best, anecdotal. Let's see them do this after taking over a half-coded project with minimal design requirements, a hard deadline, and a budget that can be cut by governmental forces at will.

      uh huh. That's like saying, "sure the Golden Gate Bridge is nice and strong, but let's see them build a bridge across the Straights of Gibraltar using only legos and silly string - oh and let's see them have it finished by close of business today."

      The point is, a REAL engineer wouldn't take that kind of project, because a REAL engineer would understand that it's not reasonable.

      So the question is, why do software engineers accept projects that aren't reasonable? Why do we volunteer for death march projects? How do we change the culture of software so that customers don't feel entitled to demand the impossible, and software companies don't feel compelled to take on the impossible?

      Software development is hard. Believe me, I know. But this culture we have created is just making it harder.

    9. Re:productivity around 30 LOC per day by psmears · · Score: 1

      They're doing it by using a design-description method that prevents unambiguity

      Now that's a method I'd like to see—one which makes it impossible to say anything without a double meaning ;-)

  24. JOVIAL by IEBEYEBALL · · Score: 1

    That's why systems and platforms like these are written in a tried and true language like JOVIAL.

    --
    -- SKYKING, SKYKING, DO NOT ANSWER.
    1. Re:JOVIAL by msobkow · · Score: 1

      Don't you mean "dead" as opposed to "tried and true"? From their products/tools page:

      It is available for use on VAX computers, and both UNIX and MS-DOS based PCs. Each ITS contains a JOVIAL compiler (which can produce code executable on either a VAX, PC, or a MIL-STD-1750A computer), MIL-STD-1750A assembler, linker, and simulator/debugger. Staying current with today's technology, development is complete on a RISC version of the compiler. Other host platforms and target environments are available (e.g., AP-101, Z8002, and M680X0 processors).

      Of course it's hard to get any details, as they don't even have any syntax or library help available unless you want to get the tools from them.

      Besides, wasn't ADA created for exactly these types of detail-spec'd, high-reliability systems? (I haven't done mil-spec since '87-'88, but back then ADA was the big push.)

      --
      I do not fail; I succeed at finding out what does not work.
    2. Re:JOVIAL by Anonymous Coward · · Score: 0

      The SPARK language they mention in the article is a dialect of Ada designed to have even more annotation about what the software is supposed to do.

    3. Re: JOVIAL by Black+Parrot · · Score: 1

      > Besides, wasn't ADA created for exactly these types of detail-spec'd, high-reliability systems?

      Only as a side-effect, I think. Those are desirable properties of any programming language, and a natural fallout of the search/design process that resulted in Ada.

      That process started way back in the 1970's - more than halfway back to the beginning of time, so far as the art of programming is concerned. The US military decided it needed a standard, high-level, cross-platform language, and Ada was the ultimate result.

      In addition to its focus on reliability, it is intended to support real-time embedded systems, which is a very common need in military hardware.

      The Wikipedia article has a good summary of the history and target features.

      --
      Sheesh, evil *and* a jerk. -- Jade
    4. Re:JOVIAL by VENONA · · Score: 1

      Hope the mods give you extra points for the obscure _Alas, Babylon_ sig.

      --
      What you do with a computer does not constitute the whole of computing.
    5. Re:JOVIAL by IEBEYEBALL · · Score: 1

      Exactly. In the same way that some hardware engineers still swear by 8 bit cpu's because they know them inside out (even the BUGS), some software engineers still swear by Jovial because it runs on known hardware (with all its known bugs) and they know the ins and outs of the language because it's been around so long. I can't confirm this but I believe the first operational (and still?) Air Traffic Control system was written completely in Jovial. Can somebody confirm that for me?

      --
      -- SKYKING, SKYKING, DO NOT ANSWER.
  25. seems kinda small by khallow · · Score: 2, Interesting

    I count less than 400k source code lines among their examples ("SLOC"). Collectively, this is at least an order of magnitude (maybe two or more actually, I don't know) shorter than the really big projects out there. So I guess I have two questions. First, is this rate really good given the size of the projects described? And second, for the huge projects, what sort of bug rates are theoretically achievable?

    1. Re:seems kinda small by Coryoth · · Score: 1

      I count less than 400k source code lines among their examples ("SLOC"). Collectively, this is at least an order of magnitude (maybe two or more actually, I don't know) shorter than the really big projects out there. So I guess I have two questions. First, is this rate really good given the size of the projects described? And second, for the huge projects, what sort of bug rates are theoretically achievable?

      I think how well such a method scales to truly huge projects is still up for debate. At the very least, however, you can try and isolate the critical components of a huge project and develop those components in this more rigorous manner, leaving the less critical portions to be developed more traditionally. For example, if you were writing a word processor then you might not bother to use this degree of rigor for the GUI and instead reserve it for the formatting/layout, printing, anf file format/file writing routines, guaranteeing that WYSIWYG, on screen and in print, and ensuring files can't be damaged or corrupted.

      Jedidiah.

    2. Re:seems kinda small by CastrTroy · · Score: 1

      But you don't really have to look at a big piece of software as one giant project. Look at windows vs. Linux. Windows tries to group everything together such that you can't have windows with IE, or media player, or the UI, or a bunch of other components that can't be stripped away from the central part of the OS. Linux on the other hand is very modular, from the kernel right up to the window manager and browser. I think it makes much more sense if you can break up your large project into many smaller projects. The smaller projects can then have a much better chance of having less bugs then if they were tied into everything else.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  26. So... by Coppit · · Score: 3, Insightful
    nearly unlimited funding probably helps too :P
    I guess that's why Microsoft's software is so good.
    1. Re:So... by Anonymous Coward · · Score: 0

      Actually a lot of Microsoft bugs are down to third party applications and external factors, i.e. underrated PSU, overclocked hardware, non WHQL drivers etc.
      Admittedly in the case of pre NT4 OS such faults should not have brought the OS completely to its knees, but modern Win XP BSODs that I've seen tend to involve third party drivers, RAM timing issues or a strained PSU (noted by use of high GPU, hard disk activity).
      Praxis' software maybe be bug proof, but their software will likely to a lesser extent, be exploitable, since such problems that are often permitted part by design (i.e. with MS, the recent WMF bug, ActiveX in IE etc).

  27. Uh by autopr0n · · Score: 3, Funny

    control structures != Turing complete. You can have loops as long as they have constant maximum bounds. Whatever it happens to be that you mean when you say "Nand is Turing complete" it makes no sense when you actually typed it. "turing-complete (for arithmetic)." makes no sense at all. WTF? Someone failed CS 315.

    --
    autopr0n is like, down and stuff.
    1. Re:Uh by Krach42 · · Score: 1

      Whatever it happens to be that you mean when you say "Nand is Turing complete" it makes no sense when you actually typed it.

      I was told that NAND is Turing-complete by someone smarter than I. I realized that NAND itself has no program flow, thus it can't be turing complete all by itself.

      "turing-complete (for arithmetic)." makes no sense at all. WTF?

      This means that it satisfies everything you need for arithmetic. Using this, one can build any mathematical system out of NAND.

      Someone failed CS 315.

      Not all universities have the same CS classes. As such, I never took a CS 315 (my University never offered one) and in any case, I've never failed a CS course. I took one class that I got a D in, which I had to repeat simply for failure to do the homework. The next semester the class had programming assignments, and I aced the course.

      You can have loops as long as they have constant maximum bounds.

      TECHNICALLY, this applies to every computer ever built. But we're not getting that picky. We're assuming that there are no artificial bounds which when allowed to expand to infinity they would then allow for Turing completeness.

      So, just by saying that you're writing a programming language where no individual loop will repeat more than 10 times does not make it Turing-incomplete. Because this artificial boundary could be raised to infinity, and the system would become Turing-complete.

      So either you accept the fact that all modern OSes are written in Turing incomplete languages, or you accept that an artificial boundary cannot be established as the deciding factor of the Turing-incompleteness.

      --

      I am unamerican, and proud of it!
    2. Re:Uh by MasterShake · · Score: 0

      http://en.wikipedia.org/wiki/Turing_complete

      Read the first line, it is a fairly good explaination of turing complete. It is also entirely inconsistent with adding a proviso about anything including arithmetic.

      I would dearly love to see some justification other than "Someone smarter than me once told me".

      --
      Are problems are mostly behind us, now all we have to do is fight the solutions

    3. Re:Uh by Krach42 · · Score: 1

      http://en.wikipedia.org/wiki/Turing_complete

      Read the first line, it is a fairly good explaination of turing complete. It is also entirely inconsistent with adding a proviso about anything including arithmetic.


      Dude, this was the first thing that I opened up when you challenged me. No, there is not a completion of arithmetic required for Turing completeness, but it should be apparent that all arithmetic can be calculated by a Turing-complete machine.

      I would dearly love to see some justification other than "Someone smarter than me once told me".

      I don't have any justification other than this. He told me it were Turing complete, and I found that one could build the entirety of arithmetic based upon only NAND. At the time I was in my first years of CS, and didn't understand what Turing-complete meant. Obviously, when I was typing my original comment it occured to me that NAND alone had no flow control at all, and thus were not Turing complete, which is why I added the element saying within Arithmetic.

      I'm not giving "I heard it from someone smarter than I" as a justification of my proof. I'm giving it as a reason for my misunderstanding.

      You still have not however managed to address my statement that all modern OSes are functionally non-Turing-complete. You simply continue on your argument that I do not understand what I'm talking about, which is not the case. I do understand what I'm talking about, but at the same time I'm attempting to reconcile previously available information that I had trusted with information that now contradicts what I now know and understand.

      Again, I'm not confused about what Turing completeness is, I was confused because someone smarter than I, who I trusted, had labeled "NAND" as Turing-complete to me.

      --

      I am unamerican, and proud of it!
    4. Re:Uh by Fulcrum+of+Evil · · Score: 1

      So either you accept the fact that all modern OSes are written in Turing incomplete languages, or you accept that an artificial boundary cannot be established as the deciding factor of the Turing-incompleteness.

      I would say that all modern computers are Turing incomplete due to limited memory space, but that this makes little difference most of the time.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    5. Re:Uh by Anonymous Coward · · Score: 0

      dorks

    6. Re:Uh by MasterShake · · Score: 0

      Two points, I'm not the original challenger.

      Also, I'm not challenging that all OSes are non-turing complete. First OSes aren't gennerally machines unto themselves nor programming languages, with the possible exception of emacs ;) In reality, nothing is truly turing complete because of the assumption of infinite memory. Even relaxing the definition to include machines with finite memory, I still think that it is improper to try and shoehorn operating systems into this classification scheme, again with the possible exception of emacs.

      On further reflection, it may be that the person you are speaking of refered to NAND as turing complete because, given an infinite number of nand gates wired correctly, you can construct a turing machine. Personally, I find the argument weak, but I can see where he is comming from. I think the better statement, if more pedantic, would be along the lines of "NAND gates are all that is required to build a turing machine"

      Note: I'm not trying to be hostile in posts, please don't interpret it that way.

    7. Re:Uh by matfud · · Score: 1

      I think he means that any and all logic systems can be created from NAND gates and interconnets alone. Similarly, you can do the same with NOR gates. They are called "universal gates". This means that all processors, turing machines inclusive, can be created using just NAND gates and interconnects. You would need an infinite amount of them but who is counting? This also means that all current computer hardware can be constructed using a finite number of nand gates. Since finite is generaly acknowleged to be significantly less then infinite this hints that no current computers are turing complete (due to physical memory limitations alone)

      matfud

    8. Re:Uh by Krach42 · · Score: 1

      Well, you'd need infinite tape to make a real Turing machine anyways... so.

      --

      I am unamerican, and proud of it!
    9. Re:Uh by Krach42 · · Score: 1

      Two points, I'm not the original challenger.

      Ah... explains the confusion. His statement was he wondered if any modern OS could be written in a Turing-incomplete programming language.

      My assertion was that you couldn't allow for NAND, and arbitrarily bound loop constructs, lest the OS would be built in a Turing-complete programming language (or sufficiently complete as to satisfy what is commonly regarded as Turing-complete. Namely, given infinite memory, it would be Turing complete.)

      On further reflection, it may be that the person you are speaking of refered to NAND as turing complete because, given an infinite number of nand gates wired correctly, you can construct a turing machine. Personally, I find the argument weak, but I can see where he is comming from. I think the better statement, if more pedantic, would be along the lines of "NAND gates are all that is required to build a turing machine"

      Yeah, someone else clarrified this issue to me. I agreed and reformulated the statement "NAND is Turing-complete" into something quite similar to your statement here.

      --

      I am unamerican, and proud of it!
    10. Re:Uh by autopr0n · · Score: 1

      Dude, this was the first thing that I opened up when you challenged me. No, there is not a completion of arithmetic required for Turing completeness, but it should be apparent that all arithmetic can be calculated by a Turing-complete machine. I realize no one will read this, but holy crap you're stupid. Yes, turing complete machines can do arithmetic, so can non-turing complete machines, like the computer you're using (limited memory). Or a DFA.

      --
      autopr0n is like, down and stuff.
  28. Microsoft should... by themysteryman73 · · Score: 0

    I think Microsoft should hire some Praxis employees...

  29. Nearly unlimited risk helps too by goombah99 · · Score: 4, Interesting

    unlimited risk can be an incentive too.

    Professor Middlebrook at caltech was an innovator in an unusual field. Sattelite electronics. Since no repairman was coming they wanted robust electronics. He desigined circuits in which any component could fail as an open or a short and it would remain in spec. You know that's a remarkable achievement if you've ever desinged a circuit before. Notably you can't really do this using SPICE. Speice will tell you what comething does but not how to design it. To do that you need a really good sense of approximations of the mathematical formula a circuit represents to see which components are coupled in which terms. And you need one more trick. The ability to put in a new element bridging any two points and quickly see how it affects the cicuit in the presence of feedback. To do that he invented the "extra element theorem" which allows you to compute this in analytic form from just a couple simple calculations. They still don't teach this in stardard courses yet. You can find it in Vorperians text book, but that's it. If you want to learn it you gotta either go to the original research articles from the 70s.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  30. X windows in Ada for ATC by dlleigh · · Score: 4, Funny

    I was at an X windows technical conference many years ago when someone gave a presentation on X with Ada. When the speaker mentioned that it was for an air traffic control application, there was a sharp intake of breath all around the audience, most of whom had flown in for the meeting.

    1. Re:X windows in Ada for ATC by zmower · · Score: 1

      I hope it was the X server that caused that sharp intake. Otherwise I can't imagine what they do if they found out that most planes' control systems are written in Ada.

      --

      Sig pending!
  31. Defects/SLOC by recharged95 · · Score: 1
    maybe not the best metric. Knowing MIL-spec coding standards and federal critical systems standards, having 0 Dfects/SLOC shows that the test plan was completed to 100% satisfaction and that the use cases were "validated" for correctness.

    It still doesn't show anything about the quality of the code. I've been on teams that built great systems (like the ones that supply those great maps in google maps) under mil-spec/SEI standards, but the performance and extensibility of that system really was lacking (and those requirements were in the use cases).

    Still, knowing some of those guys, they do some quality work.

  32. Re:Do you think it would help? by BondGamer · · Score: 1

    So Windows is never used in any life or death situations? That is hard to believe.

  33. PRODUCTIVITY? by Anonymous Coward · · Score: 0

    I stopped reading when I saw that they equate productivity with lines of code per day...

    1. Re:PRODUCTIVITY? by AutopsyReport · · Score: 1
      I stopped reading when I saw that they equate productivity with lines of code per day...

      Why? It is not just a measure of lines of code per day. A measure of lines of code per day implies a heavy addition non-programming work to ensure that each line does not affect the integrity of the software. So it does make sense, unless you forget that the quality of these 'lines of codes' is nowhere near comparable to the code the average Joe writes.

      --

      For he today that sheds his blood with me shall be my brother.

    2. Re:PRODUCTIVITY? by Nato_Uno · · Score: 2, Insightful

      I can't speak for the original poster, but I can't believe that the parent poster and I are the *only* people that believe that LOC is a poor metric.

      Measuring lines of code added per day causes deletions and modifications to be considered *bad*. If I add 10 lines today and those 10 lines allow me to delete 20 lines from last year then I have a net productivity of -10 LOC and I have been unproductive.

      The argument *could* be advanced that if I'd done it right in the first place the original 20 LOC that I'm deleting should have been the 10 LOC I added today so I *should* be penalized for doing poor work last year. I consider this argument to be shortsighted. What if we're interfacing with a new library? Is that a bad thing from a productivity perspective? What if adding a new feature involves rewriting 10 existing lines and interspersing 10 new ones? Is that less productive than tacking on 20 lines today?

      Counting lines added, lines changed, and lines modified as a metric is nearly as bad. The reason these metrics fail, IMHO, is that lines of code have no "average" value. Some lines are more valuable, some are less valuable, some have no meaning in the context of others, some have so much value that they cause others to be obsolete, etc. Grouping them together is like measuring the intelligence of a room of people by adding up the number of people present - meaningless.

      Even your point, that a single line of code implies a specific amount of background work ("heavy addition non-programming work") is fallacious, IMHO. Does each feature have equal merit? Equal difficulty? Does each line of code imply exactly the same (or even *about* the same) amount of "heavy addition non-programming work"?

      This is certainly not true for me - the difficulty of the code I write varies wildly, both within and between applications. I can assure you that I would likely expend much more effort on each line of code for an optimized backend search engine than I would on the CGI for the web interface that drives it. Is it therefore less productive for me to work on the backend because I expend more effort per line of code?

      IMHO, LOC is only useful for publishing statistics, not for measuring meaningful changes in productivity.

      --

      Have fun,

      Nathan 'Nato' Uno
      http://web.unos.net/
    3. Re:PRODUCTIVITY? by Anonymous Coward · · Score: 0

      I think they mean: Count the lines of code at the END of the project. Count the number of days the project took from the day it "started". That's the productivity for the project.

      You can "ballpark" compare two projects this way, if they have roughly the same complexity. There are ways of measuring complexity, too, if you want to make sure the comparison is appropriate.

      It's irrelevant if the developers had some good days or bad days. Or deleted a lot of code along the way. It's only the final result that matters.

    4. Re:PRODUCTIVITY? by Nato_Uno · · Score: 1

      Still irrelevant, IMHO. They don't list a complexity for the project(s) that they're claiming 30 LOC/day for and I can't think of a reasonable way for them to do so.

      If the next project they do ends up at 20 LOC/day is that one less productive? How would anyone know? How would they publish a relative complexity scale to explain the 33% decrease in LOC "productivity"?

      Even if you only look at the final result LOC is a poor metric for the same reason it's a poor metric when measured on a daily basis: lines of code have no intrinsic measurable value. I just don't see that they can be used to measure meaningful changes in productivity.

      --

      Have fun,

      Nathan 'Nato' Uno
      http://web.unos.net/
    5. Re:PRODUCTIVITY? by NormalVisual · · Score: 1

      I can't speak for the original poster, but I can't believe that the parent poster and I are the *only* people that believe that LOC is a poor metric.

      I won't say that it always is, but I think it often is. LOC measurements can't take into consideration situations like those where your productivity as defined by LOC is only 1/3 of your cubicle-mate's, but the code that you spent three times as long on will save 10 other coders from having to write an assload of additional code, simply because you took the time to think things through and came up with a better design. In this situation, how does LOC square with actual productivity? In addition, with fewer LOC you also have probably reduced the potential for failure that all that other code would have introduced.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
  34. What's this I hear? by wetfeetl33t · · Score: 1

    Code without bugs. Well I never...

    --
    Register the editry.
  35. I can get 0 defects per line of code: assert(1); by strook · · Score: 1

    Not that anyone else rtfa, but defects per line of code seems like a bad measurement of how high quality your code is. More lines != more productive.

    Then again I've been suspicious of hyped press releases claiming that the government has super efficient ways to write superior code, ever since that mars orbiter crashed due to mistaken units conversion....

    --

    "TV is great! Every New Year's I make a resolution to watch more TV." - Ann Coulter

  36. They write the right stuff by data64 · · Score: 2, Interesting

    In school, this article was required reading for our class. It addresses the same topic as TFA.

    The essential point being there is a trade-off between quality and quantity and each organization/project needs to decide how far they want to lean in either direction.

    1. Re:They write the right stuff by Coryoth · · Score: 1

      While that's a good an interesting article, I would like to point out that what these articles about Praxis and their methodology are talking about is slightly different. Praxis doesn't have the same rigid process and "big design up front" approach of the shuttle team, nor do they require the sort of expense mentioned. They do, however, have the same professionalism and mathematical rigor in developing their code.

      Jedidiah.

  37. Re:Do you think it would help? by Anonymous Coward · · Score: 0

    Give an example.

  38. Re:Do you think it would help? by Anonymous Coward · · Score: 0

    Only the part about 50% price increase.

  39. Bugs and Beta testing. by iluvcapra · · Score: 4, Insightful

    TFA cites a particular NSA biometric identification program which has "0.00" errors per KSLOC.

    Now, this got me thinking. It is completely possible for a biometric identification program to identify two different individuals as the same person (like identical twins), or for it give a false negative identification (dirt on a lense, etc). Is this a bug? The code is perfect: no memory leaks, the thing never halts or crashes or segfaults, all the functions return what they should given what they are.

    I think the popular definition of "bug" tends to catch too many fish, in that it seems to include all the behaviors a computer has when the user "didn't expect that output," what a more technical person might call a "misfeature." TFA outlines a working pattern to avoid coding errors, not user interface burps -- like for example, giving a yes/no result for a biometric scan, when in fact it's a question of probabilities and the operator might need to know the probabilities. Such omissions (the end user would call this a 'bug'), are solved thru good QA and beta-testing, but TFA makes no mention of either of these things, and seems to think that good coding is the art of making sure you never dereference a pointer after free()'ing it. It does mention formal specification, but that is only half the job, and alot of problems only become clear when you have the running app infront of you.

    Discussion of TFA has its place, but it promises zero-defect programming, which is impossible without working with the users.

    --
    Don't blame me, I voted for Baltar.
    1. Re:Bugs and Beta testing. by Helios1182 · · Score: 2, Informative

      Even Identical twins have different finger prints. They aren't exactly identical, despite sharing the same DNA.

    2. Re:Bugs and Beta testing. by russellh · · Score: 1

      Discussion of TFA has its place, but it promises zero-defect programming, which is impossible without working with the users.

      On one end of the problem scale are the detailed technical questions - does it work, are there memory leaks, etc. But the other end of the scale is the question Is this the right thing? You have to know where you are on that scale when you are thinking about bugs and defects. From a process and programming perspective, clearly it is on the side of the technical details, and not the big questions of scope, purpose, and philosophy.

      --
      must... stay... awake...
    3. Re:Bugs and Beta testing. by Alwin+Henseler · · Score: 1
      I think the popular definition of "bug" tends to catch too many fish, in that it seems to include all the behaviors a computer has when the user "didn't expect that output," what a more technical person might call a "misfeature."

      Personally, I make a distinction between 3 types of bugs:

      1. Hardware failures: unreliable RAM, a CPU executing an instruction different from what its datasheet says, etc. Maybe caused by running things out of spec (badly designed motherboard, overclocking, power brownout), maybe because of hardware design or manufacturing errors.
      2. User error: users doing things specifically forbidden by the manual (although I think software should be very tolerant in this respect), bad user interface design that helps users input the wrong info, logic errors in the design of programs, etc.
      3. Everything in between that can be described as 'pure software': operating systems, common libraries, standard utilities found on those OS'es, etc.

      I don't think it's even possible to ever get rid of the 'user error' type of bug (although well-designed user interfaces may prevent a lot of these). The same goes for hardware errors. Although you can buy systems that are fault-tolerant to a high degree.

      The article is clearly about the 'pure software' type of bug. Personally I think it is very much possible (just hard) to eliminate this 100%. Because software by nature consists of definitions, like in mathematics. 1+1 equals 2 not because of some law of nature, but because mathematics define 1+1 to equal 2. The same goes for programming languages, CPU instruction sets, API's and so on. It's not cooking, but exact science: defined that way.

      If I understand correctly, some 99% of what's generally called a bug is of the 'pure software' kind, which tells me the following: 1) modern hardware is doing just fine, and 2) current software development is in a lousy state. If formal methods and software verification became the norm, we could be left with that 1% hardware errors and users to deal with. A big step up from where we are today, IMHO.
    4. Re:Bugs and Beta testing. by Anonymous Coward · · Score: 0

      Identical twins don't share eye patterns or fingerprints. Both are determined in a fetal state and not based on genetics.

    5. Re:Bugs and Beta testing. by Pollardito · · Score: 2, Funny

      maybe that 0.00 errors is just a result of a more exotic rounding algorithm than was discussed earlier

    6. Re:Bugs and Beta testing. by fossa · · Score: 1

      Question: are they not identical due to external circumstances causing them to grow differently, or due to slight mutations of the DNA, or both? Thanks.

    7. Re:Bugs and Beta testing. by Adam9 · · Score: 2, Informative

      I also thought this was interesting, so I looked it up.

      However, fingerprints are not an entirely genetic characteristic. Scientists love to use this topic as an example of the old "nature vs. nurture" debate. Fingerprinting, along with other physical characteristics, is an example of a phenotype -- meaning that it is determined by the interaction of an indivdual's genes and the developmental environment in the uterus.

      The ultimate shape of fingerprints are believed to be influenced by environmental factors during pregnancy, like nutrition, blood pressure, position in the womb and the growth rate of the fingers at the end of the first trimester. Thus, you will find similar partterns of whorls and ridges in the fingerprints of identical twins. But there will also be differences -- just as there are differences between the fingers on any individual's hands.


      Taken from about.com

    8. Re:Bugs and Beta testing. by Anonymous Coward · · Score: 0
      Very slight differences in the microenviroment of the womb around the developing fingertips cause the differences seen in fingerprints among identical siblings. A pattern of ridges on one's fingertips is advantageous, because it increases friction, aiding grip. However, the specific pattern of ridges does not seem to matter at all, so your body has a genetic program of growth factors and programmed cell death factors that will sculpt the cells on your fingertips, but without any final pattern to achieve.

      It's like a computer algorithm with a random seed involved in the calculation- identical twins have the same algorithm, but the odds they will have the same random seed are negligible- random processes like the chaotic motion of molecules in the amniotic fluid in contact with the developing fingertip are at work here, and affect the differentiation of the cells of the fingertip. There are a number of other areas, like the way the brain is wired (same sort of deal, where molecular differences in enviroment are manifested on a macroscale in the final result) and immune responses where identical twins are more similar to each other than to any other organisms- but not completely identical.

    9. Re:Bugs and Beta testing. by szobatudos · · Score: 0

      Well, a program can be correct against a specification, but who guarantees that the specifications are correct? For a reasonably large, i.e. real-world program even the specifications are overwhelming. With a grain of salt, take this 0% bugs...

    10. Re:Bugs and Beta testing. by Rod+Chapman · · Score: 1

      >TFA cites a particular NSA biometric identification program which has "0.00" errors per KSLOC.

      Results from the NSA project will be reported (for the first time in a public forum)
      at the forthcoming ISSSE 2006 conference in March.

        - Rod Chapman
      (Disclaimer - yes I am one of the authors of the cited paper and one of the designers of SPARK...)

    11. Re:Bugs and Beta testing. by rufty_tufty · · Score: 1

      To expand on 3:
      I see a number of possible flaws:
      1) Specification errors - the spec says to do something (or neglects to say something) that even if implemented correctly will not cause the correct result
      2) Implementation errors - Producing code that does not match the spec.
      3) coding errors - producing code that is just wrong (memory leeks etc).

      Whether these errors come from your design, or interactions with other parts of the system is another question...

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    12. Re:Bugs and Beta testing. by Kadin2048 · · Score: 1

      To me, a "bug" is when a piece of software acts in a way that's contrary to how its specification dictates. Obviously this assumes that you have a well-written and complete specification, but it also involves some common sense. Sometimes the specification might not say something explicitly, and there's a bit of a grey area as to whether a behavior is a bug or not. This is why the software development process contains analysts and testers in addition to developers. Generally when a situation like that comes up, you can go back and have the spec clarified, and then easily see whether it's a bug or not.

      However even in the community-developed free software model, where most pieces of code aren't written to follow any well-definted specifications, you can imagine what the specification for something might be, based on its use, and then compare the behavior to that. This leads to differences of opinion as to whether behaviors in open-source projects are bugs or not, I think, because everyone has a slightly different idea of what the 'specification' would be, if it existed.

      I'm interested to know -- does anyone know if there are any open source development projects with a large community involvement which have anything remotely similar to the commercial software development cycle?

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    13. Re:Bugs and Beta testing. by safXmal · · Score: 2, Insightful

      Quote " 1) Specification errors - the spec says to do something (or neglects to say something) that even if implemented correctly will not cause the correct result"

      A lot of theses errors are becouse software is designed by programmers and not by the users.

      Part of my job is spefifying new functions in the web applications of my company. The normal flow of information is from me as business user to the software designer to the coder and then I have to give my comments on the finished product.

      More often then not,the first round we have to srap the implementation of the new function and start over again. Not because the coder didn't do a good job but because the designer didn't have a clue what my spêcifications meant or how they should be implemented.

      How can I explain to somebody who doesn't know anything about my field of work what I really want. Whenever I speak with him, or her, I catch myself going in "stupid mode". I will try to dumb everything down and leave out the exeptions and finer points as I would with some new trainee.

      The only times we were able to get something working from the first go was when I could speak directly to the coders with the designer acting as a moderator.

      Personally I found it a lot easier to talk to them too. I would just tell them where I wanted things to be and how the program should react and the coders could give me immediate feedback if it was possible or not.

      When I had to talk to the designer I would never know what I would get back - I would tell him something like : "in this table exchange the column shipment number with the column delivery number" and he would come back saying that it was impossible to do so they replaced the delivery number by the transport order number because according to him that would solve my problem - which it didn't.

    14. Re:Bugs and Beta testing. by PortHaven · · Score: 1

      That is not a software bug, but a "usage" bug.

      For example, I can make car that runs perfectly and to spec without failure. But place it in water and it will sink to the bottom. Was it a bad car because it sank? no...it just was a bad boat!

      If you give me the task of writing a pattern recognition software for fingerprints...and I deliver you a program that never crashes due to software error and perfectly identifies 100% of all patterns presented. Then said software is installed on a bank lock mechanism. You can't blame me if your lock was by-passed because the bank robbers cut off the banker's hand in order to by-pass the system. The software did it's job. It was the banker who failed to retain his hand and who is at fault - not the software.

    15. Re:Bugs and Beta testing. by legirons · · Score: 1

      "Even Identical twins have different finger prints. They aren't exactly identical, despite sharing the same DNA"

      That's why we have genetic fingerprinting -- for when you absolutely must convince a jury that two things are related.

    16. Re:Bugs and Beta testing. by Weedlekin · · Score: 1

      "I'm interested to know -- does anyone know if there are any open source development projects with a large community involvement which have anything remotely similar to the commercial software development cycle?"

      Most of the successful ones that deal with projects of any complexity have to be just as effectively managed as their commercial equivalents. The main difference lies in how they motivate their contributors: commercial developers work because they are paid to, and will often put up with being managed by idiots because of this. In the mostly voluntary open source movement however, a "management team" cannot function effectively unless those it is managing acknowledge its authority, and this usually requires both respect for, and faith in those managers and their ability to make decisions that are beneficial to the project as a whole. It is therefore likely that many open source project "managers" are at least as good as the better commercial ones, and superior to the commercial average, which is in my experience dominated by mediocrity.

      NB: I am not, have never been, and do not aspire to be an open source project manager, so my comment is not motivated by a desire for self aggrandisement.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    17. Re:Bugs and Beta testing. by Helios1182 · · Score: 1

      I probably should have explained why, but thanks to Adam9 for doing it. Things like moles and freckles can grow differently on identical twins also. And of course diet and excercise play a huge role on how they end up looing figure-wise.

  40. Re:Do you think it would help? by Coryoth · · Score: 2, Interesting

    If someone sent a copy of this to Micro$oft? Would any of them read or comprehend it? It could make a difference in the version after Vista.

    Oddly enough it would make perfect sense to some people at MS. The Singularity OS project from MS research uses a lot of the same ideas in development methodology and formalism. Whether Singularity will ever make it out of MS research, or simply remain a curious little side project, is of course an interesting and quite open question. Only time will tell.

    For other OSs developed in a similar mold, try Coyotos which, while still getting seriously underway, looks quite promising indeed when it comes to secure and robust OSs.

    Jedidiah.

  41. Microsoft error rates by Anonymous Coward · · Score: 0

    Considering the millions of lines of code in Windows XP, I suspect that Microsoft's error rates are not a whole lot higher (and may even be significantly lower) than their target of 0.1 errors/ KLOC. The situtations aren't entirely comparable, though. Windows is written primarily in C and C++, languages that are not well suited to extensive static modelling and analysis. Also, Windows XP is a third generation product, and has been extensively field tested through previous generations and customer betas, options that are not available to a product that must be almost bug free for the very first release.

    1. Re:Microsoft error rates by BCW2 · · Score: 2, Informative

      "Windows XP is a third generation product"

      You say that like it's a good thing!

      The only way Windows will be fixed is to start with a clean sheet of paper, completely re-write the entire code base. There are errors in XP that were unfixed errors in 98. I've seen 2 errors in XP that were identical to ones in 3.1. That is a lack of attention to detail.

      --
      Professional Politicians are not the solution, they ARE the problem.
    2. Re:Microsoft error rates by RingDev · · Score: 1

      "I've seen 2 errors in XP that were identical to ones in 3.1."

      Shenanigens. Which ones?

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    3. Re:Microsoft error rates by lebski · · Score: 1

      Like the current security bug in image files. Caused by a 'feature' from windows 3.1 To be honest though if you wrote something the size on Windows perfectly it would still seem like it had bugs to a decent portion of users simply by virtue of the number of different system configurations it had to run on. Add to that the fact that humans *always* make mistatkes I would say that for a large software development project it is essentially impossible to be bug free.

    4. Re:Microsoft error rates by BCW2 · · Score: 4, Funny


      If operating systems ran airlines:

      UNIX Airways: Everyone brings one piece of the plane along when they
      come to the airport. They all go out on the runway and put the plane
      together piece by piece, arguing non-stop about what kind of plane they
      are suposed to be building.

      Mac Airlines: All the airline personnel look and act exactly the same.
      Every time you ask questions about details you are gently but firmly told
      that you don't need to know, don't want to know, and everything will be
      done for you without your ever having to know, so just shut up.

      Windows Air: The terminal is pretty and colorful, with friendly stewards,
      easy baggage check and boarding and a smooth take off. After about 10
      minutes in the air the plane explodes with no warning whatsoever.

      Windows NT Air: Just like Windows Air, but costs more, and uses much
      bigger planes, and takes out all other planes in a 40 mile radius when it
      explodes.

      Linux Air: Disgruntled employees of all other OS Airlines, (with UNIX
      geeks who finally figured out what kind of plane they were suposed to be
      building) decide to start their own airline. They build the planes,
      ticket counters, and pave the runways themselves. They charge a small fee
      to cover the cost of printing the ticket, but you can also download the
      ticket and print it yourself. When you board the plane you are given a
      seat, four bolts, a wrench, and a copy of the Seat-HOWTO.html. Once
      settled, the fully adjusable seat is very comfotable, the plane leaves
      and arrives on time without problems, and the in-flight meal is
      wonderful. You try to tell the customers of the other airlines about the
      great trip, but all they can say is, "You had to what with the seat?"

      with apologies to Doc Searls and Linux Journal.

      --
      Professional Politicians are not the solution, they ARE the problem.
    5. Re:Microsoft error rates by andreyw · · Score: 1

      Nevermind that '9x and NT are completely different code bases, but hey, keep talking like you know what you're talking about - after all, this is /.

    6. Re:Microsoft error rates by wiggle.e · · Score: 1

      The only way Windows will be fixed is to start with a clean sheet of paper, completely re-write the entire code base. There are errors in XP that were unfixed errors in 98. I've seen 2 errors in XP that were identical to ones in 3.1. That is a lack of attention to detail.

      Your right about the problem being history but it isn't necessarily a "lack of attention". My understanding is that a fair amount of programs take advantage of bugs. Simply fixing them would cause problems for users. No one likes it when programs stop working after a patch.

    7. Re:Microsoft error rates by JohnnyLocust · · Score: 1

      Nevermind that '9x and NT are completely different code bases, but hey, keep talking like you know what you're talking about - after all, this is /.

      and yet, we still masturbate...

      wait... what was the topic again?

    8. Re:Microsoft error rates by TubeSteak · · Score: 2, Funny

      And where's the description of GNU/Linux Air?

      --
      [Fuck Beta]
      o0t!
    9. Re:Microsoft error rates by mcrbids · · Score: 1

      There are errors in XP that were unfixed errors in 98. I've seen 2 errors in XP that were identical to ones in 3.1. That is a lack of attention to detail.

      You say this like it was a problem. But what were the errors?

      Things like: "boot disk failure" probably wouldn't change much from DOS 1.0 to WinXP....

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    10. Re:Microsoft error rates by AeroIllini · · Score: 1

      An updated version with more operating systems:

      UNIX Airways: everyone brings one piece of the plane along when they come to the airport. They all go out on the runway and put the plane together piece by piece, arguing non-stop about what kind of plane they are supposed to be building.

      Mac Airlines: all the airline personnel look and act exactly the same. Every time you ask questions about details, you are gently but firmly told that you don't need to know, don't want to know, and everything will be done for you without your ever having to know, so just shut up and get on the plane.

      Windows 9x Air: The plane leaks gas, doesn't fly straight, and engines fall off during the flight. To fix problems with the avionics, the pilots just land and take off again. However, each plane has the word "internet" painted crudely on the side, and so every flight is full.

      Windows XP Air: the terminal is pretty and colorful, with friendly stewards, easy baggage check and boarding and a smooth take-off. After about 10 minutes in the air, the plane explodes with no warning whatsoever.

      Windows Vista Air: the executives of Windows Air hold press conferences every three months to talk about their exciting new line of international service, but at every press conference, the list of cities they fly to gets shorter.

      Windows Server Air: just like Windows XP Air, but costs more, uses much bigger planes, and takes out all other aircraft within a 40-mile radius when it explodes.

      Windows Media Center Edition Air: Just like Windows XP air, except you get to watch the first ten minutes of an inflight movie before the plane explodes.

      Linux Air: UNIX Airways employees who finally figure out what kind of plane they are building decide to start their own airline. They build the planes, ticket counters and pave the runways themselves. They charge a small fee to cover the cost of printing the ticket, but you can also download and print the ticket yourself, and otherwise the trip is free. When you board the plane, you are given a seat, four bolts, a wrench and a copy of the Seat-HOWTO.html. If anyone has trouble installing their seat, the other passengers are very happy to help out. Once settled, the fully adjustable seat is very comfortable, the plane leaves and arrives on time without a problem and the in-flight meal is wonderful. You try to tell customers of the other airlines about the great trip, but all they can say is, "You had to do WHAT with the seat?!''

      GNU/Linux Air: Captain Stallman refuses to take off because of a panel on the flight deck that is not made out of a transparent material.

      Server Linux Air: cargo only, but fast, reliable, and economical, if you can find a pilot who is also a mechanic.

      Desktop Linux Air: just like Linux Air, except the flight never leaves because the pilots continually argue over whether the plane should be painted red or blue.

      Debian Linux Air: just like Linux Air with pre-installed seats and a self-repairing plane, but their terminal is small and no one can find it.

      Gentoo Linux Air: apon arriving at the airport, the stewardess hands you the plans to build an F-22 Raptor.

      MacOSX Airlines: employees of Mac Airlines bought planes from Linux Air, and then designed their own style of very comfortable seats and a great terminal. The flight is incredibly smooth and comfortable with great service, you arrive ahead of schedule, and there is a live band on every flight. Tickets are incredibly expensive and you are only allowed to bring baggage if you use suitcases built by MacOSX Airlines.

      Again, apologies to Doc Searls and Linux Journal.

      --
      For security, the MD5 hash of this message and sig is 09f911029d74e35bd84156c5635688c0.
  42. Complexity of testing by tedgyz · · Score: 1

    Who was it that said a test system can never be perfect because it must be at least as complex, or more complex than the system being tested?

    --
    "No matter where you go, there you are." -- Buckaroo Banzai
  43. Re:Do you think it would help? by BCW2 · · Score: 1

    Not by anyone intelligent. Anyone that uses a M$ product in a mission critical area is courting catastrophe.

    --
    Professional Politicians are not the solution, they ARE the problem.
  44. Re:I can get 0 defects per line of code: assert(1) by geekoid · · Score: 1

    in practicallity, it does.
    You ned to keep the lines of code measurment in contexts with other issues. Like design, and all the other usual suspects. But that applies to ANY metric you use.

    Also, this may help Perl programmers to write script that only does ONE thing per line!

    also, just:

      assert(1);

    won't compile.
    Of course you, like many ignorant /.ers, break it down to an unrealistic and non-practical point. Making your arguement little more then shaky ramblings.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  45. Yeah, right... by Anonymous Coward · · Score: 0
    Praxis manages to deliver software with several orders of magnitude less bugs than is standard in the software industry

    Or so they say. I've spent many years in this industry too. Even the best teams I worked with had lots of bugs - lots! Every project has defects - every one. Government contractors sell billable hours - not software. Praxis has marketing good enough to sell their billable hours for more than the competition. Good job!

  46. The right programming language helps hugely by brucehoult · · Score: 5, Interesting

    The site is slashdotted at the moment, so I can't read the article.

    A good example of people writing complex but bug-free software under time pressure is the annual ICFP Programming Contest. This contest runs over three days, the tasks are complex enough that you usually need to write 2000 - 3000 lines of code to tackle them, and the very first thing the judges do is to throw corner-cases at the programs in an effort to find bugs. Any incorrect result or crash and you're out of the contest instantly. After that, the winner is generally the highest-performing of the correct programs.

    Each year, up to 90% of the entries are eliminated in the first round due to bugs, usually including almost all the programs written in C and C++ and Java. Ocassionally, a C++ program will get through and may do well -- even win, as in 2003 when you didn't actually submit your program but ran it yourself (so it never saw data you didn't have a chance to fix it for). But most of the prize getters year after year seem to use one of three not-yet-mainstream languages:

    - Dylan
    - Haskell
    - OCaml

    You can argue about why, and about which of these three is the best, or which of them is more usable by mortals (I pick Dylan), but all of them are very expressive languages with uncluttered code (compared to C++ or Java), completely type-safe, produce fast compiled code, and use garbage collection.

    1. Re:The right programming language helps hugely by Coryoth · · Score: 4, Informative

      Praxis uses SPARK Ada, which is a subset of the Ada programming language and annotations that provide for extended static checking, and theorem proving. You can find more about SPARK at the Praxis website, or the Wikipedia article isn't too bad. It's a very nice language, and has fantastic tool support.

      If you find that interesting, but Ada isn't to your taste, you can try JML for Java which provides similar (but lacking quite the same robustness and tool support) annotations. JML lets you automatically generate JUnit tests based on your annotations, and with ESC/Java2 allows for extended static checking.

      If, as you appear, you are more of a fan of functional languages then I'd suggest you check out Extended ML and HasCASL which provide similar sorts of formal specification capabilities for ML and Haskell. Tool support for these is still a little limited, but they are both quite powerful and provide very expressive specification syntax.

      Jedidiah.

    2. Re:The right programming language helps hugely by patio11 · · Score: 3, Informative
      I've participated in the ICFP before (one-man team on Java, program died in the first round, so there are my cards on the table), but one of the reasons the International Conference on Functional Programming Contest is consistently won by Functional Programmers is that it appeals heavily towards them both in terms of getting the word out to people and in terms of task selection. Type safety, fast compiled code, garbage collection -- all of these were all but irrelevant to the last two years' tasks. The main stumbling block both years had been writing parsers. FP is great for both tasks, thats why they teach you Scheme for your compiler design course in college and unless the language stokes your fire you'll never, ever use it again. This does not imply that its the tool for every possible job, and the various languages have features which make them better for a variety of tasks.

      Yesterday, I had to do an analysis for someone on whether eliminating the electoral college would hurt states with a low turnout or not. The data is online in a nice plain text table, and the calculations are dirt-simple and take under a second in whatever language you want. Gawk all the way, got the project done in half an hour, if I had used C or Java I'd probably have spent triple the time for the same results. Several months ago I had to do image processing with a GUI wrapped around it -- C for the number crunching, .NET something or other for the GUI. A year ago I had to write a distributed application to do some crazy intense number crunching -- wrote the number crunching loop in C*, wrote the network code and interface in Java.

      * Credit where credit is due: I borrowed 99.95% of it from GPLed code designed to do the same task on a single machine.

    3. Re:The right programming language helps hugely by Abuzar · · Score: 0
      Dude, I think you're WRONG! 'cause the other day I was chillin' with me old buddy Smith, and you know we was talkin'bout Perl and shit:

      "...some believed that we lacked the programming language to describe your perfect world, but I believe that as a species human beings define their reality through misery and suffering..."

      So there you have it! Suffer and be miserable 8-)
    4. Re:The right programming language helps hugely by brucehoult · · Score: 4, Interesting

      I've participated in the ICFP before (one-man team on Java, program died in the first round, so there are my cards on the table),

      My cards on the table are that I've entered each of the last six years with 3 - 5 person teams using Dylan, collecting 2nd place twice and Judge's Prize twice.

      but one of the reasons the International Conference on Functional Programming Contest is consistently won by Functional Programmers is that it appeals heavily towards them both in terms of getting the word out to people and in terms of task selection.

      Getting the word out doesn't seem to be the problem. Last year for example there were 161 first-round entries. Only 38 entries -- 24% of the total -- were in one of the languages I mentioned as being consistently sucessful: 1 in Dylan, 16 in Haskell and 21 in OCaml.

      I also disagree about task selection. C and C++ and Java are every bit as suited to the sort of tasks in the ICFP contest as they are to the things they are normally used for. What they are not suited to is doing them in a short period of time, in an exploratory programming manner, and without bugs.

      Type safety, fast compiled code, garbage collection -- all of these were all but irrelevant to the last two years' tasks. The main stumbling block both years had been writing parsers.

      Parsers aren't the problem. C has had parser generators for thirty years and besides the messages to be parsed were totally trivial. Dylan doesn't yet have any good tools for writing parsers, but it doesn't matter because we were able in the first eight hours of the contest to hand write a complete and correctly functioning (but stupid) program using nothing more complex than regular expressions, leaving the remaining 64 hours to think of something clever to do. Anyone using Perl or Python or Ruby probably finished the infrastructure even quicker than we did.

    5. Re:The right programming language helps hugely by Clover_Kicker · · Score: 2, Funny

      > Gawk all the way, got the project done in half an hour, if I
      > had used C or Java I'd probably have spent triple the time for
      > the same results.

      Heh, that was probably a 1-liner in APL.

      Of course APL programs longer than 1 line are usually unmaintainable, but no language is perfect...

    6. Re:The right programming language helps hugely by Doctor+Faustus · · Score: 3, Interesting

      all of them are very expressive languages with uncluttered code (compared to C++ or Java), completely type-safe, produce fast compiled code, and use garbage collection.
      More to the point, they're all basically functional, and Haskell is a pure functional language.

      I think we're going to see functional languages get a lot more popular soon because they're better for concurrent programming, and we're about to see a lot more multi-processor PCs.

    7. Re:The right programming language helps hugely by tylersimon · · Score: 1

      I used to work for Praxis and worked on the air traffic control project mentioned. Although Praxis uses Z, ADA and SPARC now when this project was done it was written in ..... C using VDM for it's design. The right language does help but it is not essential. I left just as ADA\SPARC was getting going after spending 6 months writing a Z specification - believe me this is a hard way to develop software but it does pay you back. Simon

    8. Re:The right programming language helps hugely by jemfinch · · Score: 1
      but all of them are very expressive languages with uncluttered code (compared to C++ or Java), completely type-safe,

      Surely you're aware that Dylan is dynamically typed, and thus only "type-safe" in a way that's practically useless for the avoidance of bugs at runtime...

      Jeremy
  47. Well Duh! by tedgyz · · Score: 1

    Thanks for stating the obvious. Any Software Engineer with half a soul has the same guidelines.

    My motto is: "If you strive for perfection, then the end result will always be better than settling for mediocrity."

    --
    "No matter where you go, there you are." -- Buckaroo Banzai
    1. Re:Well Duh! by blincoln · · Score: 2, Insightful

      My motto is: "If you strive for perfection, then the end result will always be better than settling for mediocrity."

      That's pretty much what I was thinking - that this company's results are not especially due to their methods, but due to hiring highly-skilled developers who know what they're doing and care about doing it right.

      Half of the "enterprise" applications I've worked with were built on a foundation of absolute shit - too many elements of their core design were based on flawed thinking. No amount of money and time would have let their developers make them work properly.

      My current opinion is that that kind of software is made by people who capitalize on the bureaucracy of corporations. I don't control what product is purchased here, so the salespeople for OverhypedFlashInThePanSoft only have to make a businessperson - rather than an engineer - think that their software is what they need to buy.

      --
      "...always new atoms but always doing the same dance, remembering what the dance was yesterday." -Richard Feynman
    2. Re:Well Duh! by tedgyz · · Score: 1

      So you've used IBM Websphere? :-)

      --
      "No matter where you go, there you are." -- Buckaroo Banzai
    3. Re:Well Duh! by blincoln · · Score: 1

      Please, stop shattering my illusions. Right now, to me Microsoft is the pinnacle of reliable software and support, and IBM is sort of a legend, waiting in the far corners of the Earth to provide to me software that genuinely works when my need is greatest.

      --
      "...always new atoms but always doing the same dance, remembering what the dance was yesterday." -Richard Feynman
  48. My Bogosity meter is wiggling by azuredragon23 · · Score: 4, Informative

    I have some beef to pick with the article: 1. It alleges that CMM5 organizations have about 1 defect/KLOC. Having worked and knowing such organizations, I can anecdotally confirm numbers like these are fiction. CMM5 certification has more to do with greasing palms rather than any absolute defect measurement. 2. A defect rate of 0.04bugs/KLOC is not zero bugs/KLOC. The difference is infinite in magnitude if that single bug is -- kills the user. 3. Low defect rates are more often a product of poor testing, not superior development.

    1. Re:My Bogosity meter is wiggling by Billosaur · · Score: 1
      A defect rate of 0.04bugs/KLOC is not zero bugs/KLOC. The difference is infinite in magnitude if that single bug is -- kills the user.

      A variation on Law of Large Numbers would seem to apply. As the number of lines of code increases, the probability that you will encounter a bug increases proportionately. The ideal would be to build programs with as little code as possible, to keep the defect rate low. But of course, even one bug in a billion lines of code is no good, if, as stated above, that bug leads to a catastrophic result (nuclear war, stock market crash, Bill Gates making more money, etc.).

      --
      GetOuttaMySpace - The Anti-Social Network
  49. What language? by ibjhb · · Score: 1

    FTA: "For example, C, C++, Structured Query Language (SQL), Ada '83 and Ada '95 have been used. However, such languages are intrinsically unsuitable for deep static analysis and are only ever used for the non-critical parts of the implementation."
    What language do they use?

    1. Re:What language? by RingDev · · Score: 1

      Ada is used in a lot of guidence systems and extensively in the Military. My MOS school (4067 Computer Programmer for the Marine Corps in 1997) was focused on Ada.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    2. Re:What language? by iggymanz · · Score: 1

      They use SPARK, which is a subset of ADA and will compile on any ADA compiler

    3. Re:What language? by Anonymous Coward · · Score: 0

      Not just military apps now though - lots of "mission critical" (and that includes "business critical") s/w is written using Ada (not ADA - it's a name not an acronym). E.g. the transmit side of some satellite TV stations are written in Ada as the programmes (and adverts) have to be shown. Set top boxes in the users homes can be written in Java as if they go wrong only 1 household is affected and the user can reset it easily enough. Lots of Swiss banks use Ada too. Check out http://www.adacore.com/aa_about.php

    4. Re:What language? by RingDev · · Score: 1

      I remember one of the first time I went to grab a copy of Ad-Aware (the great anti-spyware app) and wound up with a copy of Ada-ware (an extension package for Ada 95).

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    5. Re:What language? by ibjhb · · Score: 1

      Thanks.

  50. Re:I can get 0 defects per line of code: assert(1) by thesnarky1 · · Score: 1

    Hey, good point... bring out a case where HUMAN error caused something to go boom. I think if you read the article, you'll see they mean software only, human error is still up to the error between the chair and keyboard.

  51. If it could be fixed, it would have been..... by ShyGuy91284 · · Score: 1

    The truth of the matter is, no matter how hard we try, very few people were actually "meant" to code. People don't think like machines. And the few that do are probably working for companies that do high-integrity software that human lives depend on (and Google of course). I think very few people can write complicated bug-free code, and most of the ones that "do" get lucky and get their bugs caught during testing (and don't create more bugs fixing it). Companies are in a hurry. They don't like to devote too much time to QA. Since bugs are an inevitable part of complicated software, it's the companies decision as to how many estimated unknown bugs is considered "stable enough for release". Be it a text interface or some amazing simulation VR system, the more user interactivity and freedom they are given, the harder it will be to create bug-free software. When talking with non-technical folks when they bitch about their computer freaking out, I just tell them "It's easy to make something do what you want it to do. Making it not do what you don't want it to do is a lot more complex". I think the key to minimizing bugs other then proper testing is dividing the program up into as many reasonable simple parts as possible (Yes, I'm a fan of OOP) with strict guidelines for interaction outside of the class/method, and have the overall interactions of each class evaluated by a reasonable number of people so possible problems can be spotted. And I am done ranting.

    --
    In undeveloped countries, the consumer controls the market. In capitalist America, the market controls you.
    1. Re:If it could be fixed, it would have been..... by itior · · Score: 1

      The truth of the matter is, no matter how hard we try, very few people were actually "meant" to code.

      That's like saying there are only very few of us who were "meant" to serve my burgers. In a majority of cases, most people can be quite passable at any task, especially if it is mental as opposed to physical, in general it just takes the time and effort to acquire the appropriate skills. What's with the elitist attitude amongst CS folk?

  52. summary by penguin-collective · · Score: 1

    Summary of the article: "We're great. Trust us. Hire us. Pay us lots of money--it may look expensive, but we promise it will be cheaper in the long run. Really."

  53. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  54. Paper doesn't mention the irrelevancy of OSS model by Anonymous Coward · · Score: 2, Insightful

    "Yes, yes, open source projects fix bugs for free. The point is that they can afford to do that, because they have so many volunteers to do the bug-fixes."

    The Praxis approach starts with the mindset that bugs are bad and shouldn't leave the room. Open-source has much looser requirements. Bugs can be released with the attitude that "a thousand eyes" will catch the mistake. Also unmentioned by OSS advocates is the problems caused during the duration of the bug being unfixed, till those eyes catch it (which isn't guarenteed). Also OSS isn't guarenteed (read the disclaimer, and remember the "/." story awhile back about programmers being held liable for problems with their code. Read the responses) while Praxis is. And last Praxis plays in a field that OSS doesn't. (mission/life critical)

  55. Accepted by HighSchoolDropout · · Score: 0

    Personally I think that we just accept bugs nowadays , I use some very buggy software when laying out PCBs and have had to find several 'work arounds' to get the finished project. I mean who complains about the amount of updates you need for Windows , you just accept that if your computer crashes you re-boot , CTRL-ALT-DEL gets used often when it just hangs. I think that if we keep on accept it that software will have bugs it will only get worse.

    --
    I say we take off and Nuke the site from Orbit, It's the only way to be sure.
  56. Re:Do you think it would help? by sexyrexy · · Score: 1

    Same with Linux, or any other system not developed under stringent requirements.

    --

    Rex is 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
  57. Re:Do you think it would help? by thesnarky1 · · Score: 2, Interesting

    Actually, there was a case (in 2000, I believe) where a destroyer (the ship, not robot) was running a version of windows, got a divide by zero error, and the ship's systems all crashed. It was dead in the water for a few hours.

    Yes, found a wiki:

    In September 21, 1997 while on maneuvers off the coast of Cape Charles, Virginia, a crew member entered a zero into a database field causing a divide by zero error in the ships Remote Data Base Manager which brought down all the machines on the network, causing the ships propulsion system to fail. Anthony DiGiorgio, a civilian contractor with a 26-year history of working on Navy control systems, reported in 1998 that the Yorktown had to be towed back to Norfolk, Virginia naval base. Ron Redman, a deputy technical director with the Aegis Program Executive Office, backed this claim up, suggesting that such system failures had required Yorktown to be towed back to port several times.

    Note, it was running Windows NT 4.0. So yes, in military warships we even us Windows. I also believe that Britain's newest destroyer runs on a version, but I forget which, as I read it a while back.

  58. An interseting point that few managers understand by MerlynEmrys67 · · Score: 4, Interesting
    Was working for a small startup with a bigtime CEO. One of his interseting points was, the most successful software companies in the world has yet to release a product anywhere close to "On Time". I can give you a train wreck litany of software companies that released products "On Time" that were so bug ridden people swore they would never buy another product from the company, and replace the product with a comptetitors.

    The end result - In a year, no one will remember that you were 6 months late - make a buggy release and in a year EVERYONE will remember the buggy release.

    Why I always have time to do it over, and never the time to do it right in the first place

    --
    I have mod points and I am not afraid to use them
  59. Those aren't bugs... by Urusai · · Score: 1

    ...they're undocumented features.

    I could design and implement a bulletproof voting box over a couple of weeks for probably around $10,000 tops, dropping that to $2000 or so in volume production with a healthy profit included. Diebold seems to have problems with this simple task. They also make ATMs, and I bet the banks don't put up with that kind of shit. The only reasonable explanation is intentional malfeasance.

  60. You just compared M$ error rates to *their* target by Anonymous Coward · · Score: 0

    BFD.

    How does that compare to the rest of the world?

  61. Requirements... don't we all wish by RingDev · · Score: 1

    3 days ago I was given insufficient documentation and no testing information for a new invoice process. I told my Project Manager that the specs were not sufficient, I was told to "Do what you can". Over the last 3 days I have wasted a few hours waiting for people to get out of meetings so I could ask them piddly questions about the new process, double tracking over code as new requirements were "discovered", and dealing with a 3rd party database that isn't designed to handle what the users think they want.

    Today I sent 2 sample invoices up the the leasing department. They didn't understand why certain items where showing up twice (due to multiple transactions for an asset on an invoice), so they sent down two test cases. I ran both test cases and they both failed to pass the original (vague) business rules I was given.

    End result, I wasted 3 days developing an Invioce no one can use because no one could be bothered to come up with a requirements doc.

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    1. Re:Requirements... don't we all wish by Coryoth · · Score: 2, Interesting

      It's very true that developing quality code is something that requires both parties commitment. If someone is unwilling to work with the developers to help them clearly define the requirements then yes, quality code is going to be all but impossible, and in that case it isn't the developer's fault. As others have pointed out, a large part of the reason so much code is so bad is simply because the clients fail to demand a higher standard. As long as customer expectations are low, or they are unwilling to actually commit to getting good results, there will remain issues.

      Jedidiah.

  62. Probably using Agile or XP... by Anonymous Coward · · Score: 0

    That shit really works good.

    1. Re:Probably using Agile or XP... by CRCulver · · Score: 0, Flamebait

      Having read Beck and Fowler's Planning Extreme Programming I get the impression that the XP model is less about bug-free code and more about driving your coders to suicide by showing them how annoying a cubicle-mate "partner programmer" can be. How employee nervous breakdown equates to profit, well, I still don't know, but a lot of companies sure seem to like the model.

    2. Re:Probably using Agile or XP... by Anonymous Coward · · Score: 0
  63. You forgot 1.5 - "Go Agile" by bADlOGIN · · Score: 1

    Most customers are business people. Most business people are idiots. Therefore: most customers are idiots. Given that fact, the only thing that can save you from spending months cranking out a specification/contract that will never be fully read, or pounding out garbage that's a nightmare to maintain is to go Agile. I favor XP, but anything where the process includes delivering the most important features using Test Driven Development, small iterations, acceptance tests, etc. will work. Besides, by the time you get something working in front of them, they'll "reprioritize" to the newest Shiny-Thing and you'll be glad not to have produced the 1/2 ream of dead tree UML (that was out of date on day two of "coding"), or the rat's nest in your source tree (mostly written by the guy who quit two monts ago after his wife divorced him for never being home).

    --
    *** Sigs are a stupid waste of bandwidth.
  64. Another approach is more viable in practice by cjonslashdot · · Score: 1

    This is very interesting and encouraging work. One possible difficulty I would like to point to is that their approach requires specialized skills that most developers do not have. Also, as pointed out by one comment here on Slashdot, one often has to access third party libraries that are not fully reliable. Finally, in a business environment, one will have difficulty selling a highly academic methodology that requires a radically different skill set (e.g., formal analysis, predicate calculus, etc.) than what is available. Their work may be very effective in high-assurance settings that can be very careful about assembling the right team and defining the right process. I can see it being used in military and avionics applications, as they say. For business application environments, it is probably more practical to take a "best practices" approach, and tackle the problem from a methodological perspective, by adding assurance steps to existing maintstream methodologies, rather than by requiring an enrirely different approach for writing requirements. I have just written a book about this by the way. See "High-Assurance Design" on Amazon, or look for the article by myself and Scott Ambler which should be out soon. - Cliff

  65. UML by peterfa · · Score: 1

    Wouldn't UML help with engineering? It's designed of this purpose. You can UML anything, and reports have it that UML makes it easier to find bugs, and make deadlines.

    1. Re:UML by Coryoth · · Score: 1

      Wouldn't UML help with engineering? It's designed of this purpose. You can UML anything, and reports have it that UML makes it easier to find bugs, and make deadlines.

      Praxis tends to use a more rigorous and exacting modelling/specification language called Z. It's a formalised mathematical specification language that allows for exceptionally precise documentation of formal requirements. When translating the specification into code Praxis uses SPARK a programming language specifically designed to allow the incorporation of formal specification into the code, and with a very powerful set of tools for static analysis of the code and specification.

      Jedidiah.

    2. Re:UML by peterfa · · Score: 1

      I should learn Z then. It wouldn't hurt to know two modeling languages.

    3. Re:UML by TrappedByMyself · · Score: 1

      Wouldn't UML help with engineering? It's designed of this purpose. You can UML anything, and reports have it that UML makes it easier to find bugs, and make deadlines.

      UML is best for high level views of structure and example threads of execution. Not really good for representing algorithms. UML can help you find flaws in your high level architecture, but would be useless in tracking down those little implementation bugs.

      IMHO, UML is best used for communication and tossing around requirements. It's also good tool for seeing the relationships and dependencies of the parts of the system. However, if it's used too deeply, it just becomes another burden. If you try to do too much, it becomes unweildy, and takes away time that could be better spent elsewhere (like detailed documentation in source code). I've seen systems with binders full of UML that don't match what the code is doing.

      --

      Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?
  66. Re:Flamebait this! by RingDev · · Score: 2, Insightful

    You are completely missing the point of CbyC development. One of the fundamentals is that these apps are RESISTANT TO CHANGE. So yes, MS could make a much more solid OS, IF you ran their, and only their proprietary hardware (as Apple used to/still does), only used the pre-installed applications in the exact manor they were designed to be used, and never drempt of changing anything.

    When you are talking about an air traffic control system, you can set a very specific set of requirements. The Air Traffic Control system will never have to open an Excel worksheet, or run Quake 4, or be compatible with hundreds of other vendors tools. The Air Traffic Control system will never have to deal with someone swaping graphics cards and updating drivers. It doesn't have to worry about spyware and root kits. It doesn't have to worry about internet access.

    If you want to rag on MS, go for it, but don't think CbyC is the answer. It would only result in an OS that you wouldn't want to use. (As a consumer it would be worthless, but it could be great for imbedded systems)

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  67. Re:Do you think it would help? by Nato_Uno · · Score: 2, Informative

    Not anyone like, say, the US Navy, for example:

    http://wired-vig.wired.com/news/technology/0,1282, 13758,00.html

    Or air traffic controllers:

    http://www.techworld.com/opsys/news/index.cfm?News ID=2275

    Or nuclear power plants:

    http://www.securityfocus.com/news/6767

    Regardless of how you rate the intelligence of the parties involved in these little incidents I think you'll find that Windows is very often deployed in mission critical areas.

    And yes, often with catastrophic consequences. >)

    --

    Have fun,

    Nathan 'Nato' Uno
    http://web.unos.net/
  68. Bugs ARE Allowed by VJTod · · Score: 1

    Bugs are allowed, but software "should" be tested and patched before release.

  69. Their defect rate is nothing special by YU+Nicks+NE+Way · · Score: 1

    1 bug per 10K lines of code is pretty good, but by no means remarkable. The teams which actually write avionics software for jets routinely reach levels of no more than 3 defects per 1M lines of code.

    1. Re:Their defect rate is nothing special by david.emery · · Score: 1

      Your source for this statement, please? I don't know of any commercial avionics code that approaches this size, and I'd be surprised to hear how F-22 reached this level of productivity.

              dave

  70. Coyotos by MrDomino · · Score: 1

    The Coyotos project attempts to implement a full OS that can be mathematically proven safe and secure. It's actually quite a fascinating project; reading the mailing lists and watching BitC and Coyotos develop feels a bit like what it must've felt like to watch UNIX and C grow up in the 70s.

  71. perception sells, and failure is seldom mentioned by misanthrope101 · · Score: 2, Insightful
    More likely they're selling, along with their software, peace of mind. Software designed/implemented by humans will have bugs, though there are methods for minimizing them. Managers of critical systems no doubt love to project the image to the public that there aren't bugs in their system, but the probability of that being true is miniscule. But people like to hear it, and so managers and marketers keep speaking the language.

    It's like all the suits who love to say "failure is not an option," but then we see the occasional failure, but people still say "failure is not an option" because it's the attitude they're trying to convey, not the reality. The right attitude will bring about the right reality, or so management would have you believe.

  72. No bugs in air traffic control software? by Anonymous Coward · · Score: 0

    I knew a guy who worked for Nav Canada, the company that does the computer systems for air traffic control in Canada. He was responsible for part of the system covering the arctic. He said one time that for a certain day of they year he had considered programming in a "glitch" moving through that air space. But decided against it. Wise choice. Would have been pretty funny though, as long as no one got killed over it.

    --Julian

  73. Re:Do you think it would help? by BCW2 · · Score: 1

    Re-read the article you linked to on the Navy. The Aegis software is from Lockheed Martin, not M$. The Navy is more than capable of screwing up and making itself look worse in a half-assed cover-up, but they don't use M$ products for system controls.

    If you want a better comparison, go to the bank. Windows everywhere in the floor, except at the teller stations. Unix or RPG are there with all the servers on Unix or AIX. M$ is fine for typing letters, but never for actually handling accounts or real money.

    --
    Professional Politicians are not the solution, they ARE the problem.
  74. maybe in another lifetime by icepick72 · · Score: 1

    I RTFA to the point where they started putting restrictions on languages of choice and then I stopped. I don't disagree. I just realize the article applies less to my work than I thought. My software doesn't need that level of perfection early in the process. However as per usual, some good stuff to take away from the article at a general level and apply to work. Of course the general stuff we've all heard before. It's just applying it that's the hard part at times!

    1. Re:maybe in another lifetime by Coryoth · · Score: 1

      I RTFA to the point where they started putting restrictions on languages of choice and then I stopped. I don't disagree. I just realize the article applies less to my work than I thought.

      Well there are options you can take that aren't the whole hog of SPARK Ada with it's restrictions and formality. If you just want to make things clearer and get some of the benefits then for Java there's JML which provides similar annotation syntax to SPARK and comes with some freely available tools to convert annotations into JUnit tests, runtime assertions, and include them in JavaDoc documentation. There's also ESC/Java2 which provides extended static checking based on JML annotations.

      If you are using C# then there's Spec# which, again, provides similar annotation and basic tool support to C#, kindly provided by Microsoft. If you're using C++ mostly there's C2, or if you don't want payware then you could look into D which provides Design by Contract - it is a language shift, but not too huge a one. Then there's always Eiffel.

      If you are more of functional programmer then there's Extended ML or HasCASL which both seek to being some of the benefits of algebraic specification to functional languages (in this case Standard ML and Haskell).

      So all up you aren't as pinned to a language as it might first appear - depending on how important correctness is there are a variety of options in a wide variety of languages.

      Jedidiah.

  75. MOD UP!! by duffahtolla · · Score: 1
    You are very informative!! I've always had a soft spot for Ada.

    Just to add to mix, the specification "z notation" mentioned in the article can be found here

  76. Praxis? by voice_of_all_reason · · Score: 1

    Hey, I'm just saying... if Star Trek has done just about every planet in the known sky and the one you picked blew up spectacularly in a feature film... that might not be a good omen.

  77. Arctic airspace on Dec 24th... by Anonymous Coward · · Score: 0

    Yeah, it is Santa... or a Russian ICBM?

  78. No Source of Pride by TheBillGates · · Score: 1

    Mmost programmers don't have any source of pride to recheck their work. They just write the crap and assume it will work. A long time back I needed to write a machine language checkerboard memory test for a Honeywell H316 minicomputer. I revised the program several times after inspecting my code and managed to get it to run perfect the first time in only 23 lines of code. Check your code many times and your software won't have problems.

  79. Re:Do you think it would help? by Nato_Uno · · Score: 1

    The *software* might be from Lockheed Martin, but the Navy deployed it, including the Microsoft components delivered by Lockheed Martin, in a production environment. The Navy deployed it, the Navy's ship stopped working (which I think is part of the definition of "system controls" - controls which determine whether or not the ship is working). No sense in blaming Lockheed Martin for that one...

    And if you think Windows isn't used in banking ATMs, which handle both accounts and "real" money, perhaps you should consult with Google:

    http://www.universal.com.sa/english/products-optev a-general-features.htm

    http://msnbc.msn.com/id/3675891/

    (and there are many others...)

    --

    Have fun,

    Nathan 'Nato' Uno
    http://web.unos.net/
  80. Re:I can get 0 defects per line of code: assert(1) by lisany · · Score: 1

    I'll see your compiler error and raise you a thousand pointless #defines!

  81. Re:Do you think it would help? by Nato_Uno · · Score: 1

    I will give you that the article isn't clear that Lockheed Martin's Aegis system deploys Microsoft components. However, I used to work for Lockheed Martin, specifically *on* the Aegis system components, and I probably shouldn't comment further.

    So instead I offer this link to the US Navy deploying Microsoft for critical control systems:

    http://www.wired.com/news/technology/0,1282,13987, 00.html

    Trust me, they do it.

    --

    Have fun,

    Nathan 'Nato' Uno
    http://web.unos.net/
  82. Wait, Didn't praxis blow up? by briancnorton · · Score: 1

    Not a single trek joke yet, the geek level is really dropping around here!

    --

    People who think they know everything really piss off those of us that actually do.

    1. Re:Wait, Didn't praxis blow up? by kenstcyr · · Score: 1

      We were waiting for you, man, and you let us down.

      --
      "That machine has got to be destroyed...."
  83. Re:Do you think it would help? by Anonymous Coward · · Score: 0

    Can it really use its phased array to overload inbound missile electronics?

  84. The "Geeks" are running the Asylum. by Anonymous Coward · · Score: 0

    "No, the reason so much software is buggy is economics. "

    Nope, according to Alan Cooper of "The Inmates are running the Asylum" fame. It's the "geeks" (Homo Logicus). Chapter seven covers this group.

  85. Can I get free advertising too? Assplode networks! by Anonymous Coward · · Score: 0

    I am the CEO of Assplode networks....we make your networks Assplode! To achieve our higher than industry results we only hire the most experienced goatse.cx assploder's! Please post our a link to our "brown paper" citing how we were able to make even the most trivial networks Assplode!

  86. Obvious reference? by volve · · Score: 1

    Am I the only one amused by Praxis exploding due to unsafe practices?

    /chuckles to self

    -volve

  87. Code For Lawyers by c0d3r · · Score: 1

    One time I was developing a system used by attorneys to manage revenue contracts for a major networking company. They would threaten to terminate my contract if there was a single bug or say something like "I don't think he's taking his job seriously". My manager described the legal team as "unforgiving".

    -c0d3r-

    1. Re:Code For Lawyers by RealityMogul · · Score: 1

      They're not bugs, they're loopholes

  88. I second the motion! by Jetson · · Score: 4, Interesting
    I've been in this industry for quite some time and let me be the first to say that I wish I could repeat this sentence with a straight face.

    I've been a controller for 13 years and have worked in the automation end of things for almost 4 years now. There is NO SUCH THING as bug-free Air Traffic Control software. The best we can hope for is heterogenous redundancy and non-simultaneous failures. Some engineers seriously think they could replace all those controllers with an intelligent algorhythm. What really scares me is that the more they try, the less engaged the people become and the harder it is for them to fall back to manual procedures when the worst happens.

    Everyone used to laugh at how Windows NT could only run for 34 days before it needed a reboot. Some of our systems can't run HALF that long without needing a server switch-over or complete cold-start.

    1. Re:I second the motion! by njyoder · · Score: 1

      Why would air traffic control systems require such frequent reboots? Why can't they rely on existing OSS operating systems which do have very good uptimes? What is the air traffic software doing that's crashing the system?

  89. There's another factor though by Sycraft-fu · · Score: 2, Insightful

    That's how much of the system you control. By system I mean the entire channel, including the hardware, software, input, etc. It's much easier to engineer low defect software when you control all of that. For example if you are developing something that runs only on one particular version of one kind of embedded device, and can only have input given to it in a certian way, and you can gaurentee that it is the only thing running at a given time, and so on.

    Much harder if you are making something that has to run on a massive set of arbitrary hardware that can have any number of other, quite possibly buggy, apps running and that can recieve all kinds of bad input through all kinds of different channels.

    That's part of the problem I see is that people look at systems that are engineered and controlled by one company, and then think that software that runs on comoddity hardware should be as reliable as something where everything is carefully controlled.

  90. Please somebody.......... by wilec · · Score: 1

    think of the bugs!!! Seriously where would most of us geek types be without the bugs. What would you blame the missed deadline on then, huh?

  91. I have to wonder.... by 2Bits · · Score: 4, Insightful

    So, if this toolset and methodology are so good, I have to wonder why it does not get more widespread use? According to their info, it is developed in the 70's and 80's, so that's not new. And why are softwares so buggy and have such a lousy reputation anyway? Not to start a flamewar, but let's just list a few possible "reaons" here:

    1. Why aren't schools teaching this methodoly thoroughly? Why aren't this toolset and programming language taught in school by default? I learned a bit of Ada at school, but that's only part of a comparison between programming language design. So, are schools to be blamed? Or those profs don't know better? Why aren't proper engineering methodologies emphasized?

    2. Someone developed a nice methodology, with a nice toolset and programming language, and got greedy and made it too expensive to acquire. Other tools are good enough, and the resulting softwares are acceptable to the market, so, this nice thing never got widespread use.

    3. Programmers are asked to do the impossible. We (I include myself here) had to work with customers who don't know what they want, only give very fuzzy requirements (Praxis's customers, from their list, are different kind of animals, and they probably know better than most of the customers we had to work with), and even if we lay out the whole detailed plan in front of them, they still don't know what they want. They will agree to the plan, sign and approve it, and until you have completed the whole system according to the plan, they would ask to redo the whole thing. If a customer dares to ask a civil engineer to add 2 more stories between the 3rd and 4th floor after the custom-built building is finished, guess what would the civil engineer say? Programmers are asked to do this all the time (I know I have been asked to), so are customers to blame? You can't get the system done properly if requirements are shifting all the time.

    4. Programmers are a bunch of bozos who know shit about proper engineering. Yeah, I can take the blame, I've been programming for over a decade, and I know how programmers work: methodologies are for pimps! If a bridge engineer can't tell or prove how much load the bridge can take, I'm sure people would tell him/her that s/he has no business in building bridge.

    5. Customers of packaged softwares would buy a buggy software to save one buck anyway, why would vendors put extra efforts and costs to make it better? Look at the market, a lot of good softwares didn't survive, and sometimes, the worst of the line prospoered (no naming here!). So people get what they asked for.

    6. Customers (even custom-built projects customers) are a bunch of cheap folks, they would go to the least priced, no matter what. Praxis's customers are willing to pay 50% more for quality work, how many of your customers are willing to? We are willing to fix our bugs, free of charge, for the first 10 years too, if our customers are willing to pay 50% than the market rate for quality work. But so far, I've never met one such customer yet. Granted, I don't work in the defense industry. So, don't blame us for lousy work, if customers try to squeeze out every single buck out of it. And in China (and some other countries too), you have to pay a huge amount for kickback too, sometimes, as high as 80% of the project's budget.

    7. Software vendors are a bunch of greedy bastards, they put buggy softwares on the market, without having to accept any responsibility (just read your EULA!). Industry problem or government problem? Not enough regulations (for safety, for useability, etc)? Other industries seem to do ok, e.g. medical, civil, .... so, are software vendors a bunch of irresponsible kids that need constant monitoring?

    8. The indsutry is developing too fast, people are chasing the coolest, hippiest, most buzzword-sounding technologies. No one gives a shit about "real engineering". And there are simply too much to learn too, in how many industries can you say people are required to master that much technologi

    1. Re:I have to wonder.... by Coryoth · · Score: 3, Informative

      Thanks for a thoughtful post.

      And why are softwares so buggy and have such a lousy reputation anyway? Not to start a flamewar, but let's just list a few possible "reaons" here:

      I think, to be honest, that it is a combination of a number of the factors you mention.

      Why aren't schools teaching this methodoly thoroughly? Why aren't this toolset and programming language taught in school by default?

      To do proper formal specification, one of the key parts of Praxis' Correct by Construction approach, does require a decent solid mathematical background. I think a lot of CS departments, facing students who want vocational training, struggle to demand the sort of mathematical requirements that are needed. As to SPARK - it is something that Praxis developed themselves, and it is proprietary (the toolset at least, the annotation language is well documented). You can pick up a book and learn the language, but the tools cost money if you want to use them commercially. On the other hand, the base specification language Praxis uses, Z, is entirely open, and there are a variety of freely available tools for it. There are also other specification langauges (I quite like CASL which has a number of useful extensions) that have freely available tools associated with them. There's also JML and ESC/Java2 which are freely available and seek to provide the same sort of functionality or Java that SPARK adds to Ada. There are places that teach JML, but they are still few and far between.

      Programmers are asked to do the impossible.

      I think this is a big part of it in some ways. Partly this is because, for a large number of software projects, the degree of exactness and quality just isn't required. I don't need a professional architect to help me build a doghouse in my backyard (though I'd certainly want one if I was building a skyscraper), and I don't need assurances of bug free software for a simple web front-end to a database. At the same time programmers are often unwilling to let customers know exactly what the limits are when developing software. To quote you: "If a customer dares to ask a civil engineer to add 2 more stories between the 3rd and 4th floor after the custom-built building is finished, guess what would the civil engineer say?"; if software engineers aren't prepared to stand up for quality and tell customers that somethings can't be done without sacrificing the quality of the product the problem will remain. In part I think this is due to the fact that software development is a young industry, and programmers are still of the mentality that they need to do everything they possibly can to please a customer. Partly it's because software projects are diverse (as are building projects!) and sometimes it's okay to make late changes; sometimes it's how things ought to be done - the key is to identify exactly what sort of project it is as early as you can. Are you building a treehouse for your kids, which doesn't require exactness and benefits from incremental design and feedback, or are you building a 4 story building where quality is important, and late changes will jepordise that?

      Programmers are a bunch of bozos who know shit about proper engineering.

      Sadly this is partly the case. There are an awful lot of cowboys out there when it comes to software engineering. There are, of course, a lot of fantastic programmers as well who are otherwise beset by some of the other points mentioned. There is, however, a remarkable degree of tolerance for cowboys, sloppiness and lack of quality in software engineering that you don't see in other engineering disciplines. Partly I thin

    2. Re:I have to wonder.... by dbIII · · Score: 1
      1. Why aren't schools teaching this methodoly thoroughly?
      Schools are trendy. When I was studying the CS department mocked the engineers who were using fortran instead of the worderous languages of pascal and modula-2 that would apparently change the world - and they were extremely reluctant to teach anyone C (a dead langauge) or C++ (dread innovation by heretics!). For some reason I still find the fortran useful on occasion and haven't seen any modula-2 about.

      These days they are probably all teaching people C#.

    3. Re:I have to wonder.... by Jerry+Coffin · · Score: 1
      ...And why are softwares so buggy and have such a lousy reputation anyway? Not to start a flamewar, but let's just list a few possible "reaons" here:
      You've forgotten a big one -- maybe even the single biggest one. Most of these high-reliability systems are built as exactly that: a complete, basically closed system.

      By contrast, most "normal" software is written as a single component in a much larger system. The developer can (and nearly needs to) maintain a few different systems with different hardware, software, etc., but in the end, he can't even hope to test his program on all the different combinations of hardware and software (e.g. drivers) that the users will have on their machines -- not to mention what they'll be using five years from now!

      --
      The universe is a figment of its own imagination.
    4. Re:I have to wonder.... by Mutatis+Mutandis · · Score: 1

      1. Why aren't schools teaching this methodoly thoroughly?

      From what I have seen -- as an outsider -- of programming education, it was so heavily theoretical that students simply didn't have the opportunity to generate many bugs, and therefore teachers were not confronted by them. Teaching was untainted by the practicalities and problems of real programming, so "obviously" there was no need to discuss methods to deal with them.

      2. Someone developed a nice methodology, with a nice toolset and programming language, and got greedy and made it too expensive to acquire.

      Perhaps, but formal, mathematical tools do not appeal to many people. Perhaps you would hope programmers to be different, but they are not; such formal rigour is congenial only to a minority. Most people prefer their logic to be fuzzier, more "humanities" and less "hard science". And QA departments, who love formal rigour, tend to focus exclusively on the user interfaces, not the internals of software, and to be fairly clueless anyway.

      3. Programmers are asked to do the impossible. We (I include myself here) had to work with customers who don't know what they want, only give very fuzzy requirements (Praxis's customers, from their list, are different kind of animals, and they probably know better than most of the customers we had to work with), and even if we lay out the whole detailed plan in front of them, they still don't know what they want.

      That is why I always have been of the opinion that is essential for the software team to co-develop the process, and not merely be the receivers of a set of requirements. Of course, that requires a substantial effort from both sides, and early involvement. It is usually difficult to achieve.

      6. Customers (even custom-built projects customers) are a bunch of cheap folks, they would go to the least priced, no matter what. Praxis's customers are willing to pay 50% more for quality work, how many of your customers are willing to?

      Well, this is probably not going to acceptable for a new version of Tetris, but it is different for air traffic control, or clinical diagnostic systems, or stock exchange software systems, ... There are a lot of applications that really require high-reliability software.

      Speaking as a customer, the real problem, IMHO, is that customers have no way to measure the quality of a software development team. Is the more expensive offer really better, or is it just more expensive? Even customers who are aware of reliability issues, usually cannot judge whether the use of tool X will really produce better software. And in fact the promise of the use of tool X by itself does not guarantuee better software -- the programmers might be sloppy nevertheless. So customers rely on word-of-mouth, gut feeling, and perhaps a basic grasp of what is considered fashionable methodology. They may do an audit, which will tell them mainly whether the paperwork is in good order.

      If Praxis is able to charge 50% more and still find customers, that doesn't mean that they are 50% better, nor that the customers of Praxis understand software development methodologies. It only means that the reputation of Praxis is such that customers are willing to pay for the brand. Very much in the same way customers are willing to pay more for Mercedes, without knowing anything about automotive engineering.

    5. Re:I have to wonder.... by hritcu · · Score: 1

      3. Programmers are asked to do the impossible. [...] If a customer dares to ask a civil engineer to add 2 more stories between the 3rd and 4th floor after the custom-built building is finished, guess what would the civil engineer say? Programmers are asked to do this all the time (I know I have been asked to), so are customers to blame? You can't get the system done properly if requirements are shifting all the time.
      Extreme Programming and other agile methods were designed with exactly these changing requirements in mind. What stops your company from using them ?

      --
      If you don't fail at least 90 percent of the time, you're not aiming high enough. (Alan Kay)
    6. Re:I have to wonder.... by dfj225 · · Score: 1

      I think you hit the nail on the head when you (and many other posters) said that programmers are asked to do the impossible. Now, I haven't been in the industry long, but I can see how shifting requirements would have a huge effect on the outcome of the project. One thing that stood out about Praxis was that they seemed to demand a lot from their customers when it came down to creating specifications. After all, how can one develop software to solve a problem that is not defined? Perhaps if this approach to software was more frequent in software industry, we would see better results.

      --
      SIGFAULT
  92. Not a planet by Anonymous Coward · · Score: 0

    The Praxis that blew up in Star Trek VI was a Klingon moon.

    Even though I haven't seen the movie in 10 years, I still remember that. Sad, huh?

  93. Nearly unlimited risk helps too-Theorem. by Anonymous Coward · · Score: 4, Informative

    "If you want to learn it you gotta either go to the original research articles from the 70s."

    http://www.edn.com/archives/1995/080395/16df4.htm

    "The extra element theorem is used for analog circuitry. The gist of it is that you remove the reactive elements ( or dependant sources ) from a circuit and then put them back in through a process of correction factors."

    [n-extra element theorem]
    http://ece-www.colorado.edu/~ecen5807/course_mater ial/nEET.pdf

    [Middlebrook's extra element theorem]
    http://ece-www.colorado.edu/~ecen5807/course_mater ial/slidesAppC.pdf

    1. Re:Nearly unlimited risk helps too-Theorem. by goombah99 · · Score: 1

      You can see how this helps design circuits for shorts and opens. Start with a basic functional circuit that meets spec. The Extra element lets you put shorts across every element quicky to see what happens. and it lets you add in any element so see what it does as an open circuit. You can then see which terms in the analytic expression would damp any bad effects and add elements to move the damping within the required spec. Repeat until this process till you find a stable solution that can tolerate a short or open.

      --
      Some drink at the fountain of knowledge. Others just gargle.
  94. Rules of thumb by jd · · Score: 3, Insightful
    1. Doubling the number of coders will double the number of bugs and double the total time
    2. Doubling the budget will double the number of coders
    3. Extendable projects will, deadlines kill
    4. There is no such thing as a potential bug
    5. "Good" methods are cheap for customers, sloppy methods are profitable for companies.


    In the end, software companies are in it for the profits. They have no lemon laws to respect, they have no trades description act to obey, no ombudsmen to answer to, no consumer rights groups to speak of, no Government-imposed standards certification and virtually no significant competition. Customers are often infinitely patient and completely ignorant of what they should be getting - the machines are like Gods and the software salesmen are their High Priests. To question is to be smote.


    Were standards to be mandated - perhaps formal methods for design, OR quality certification of the end result, you would see no real impact on net software costs. Starting costs would go up, but long-term costs would go down.


    Nor would you see any serious impact on variety - if anything, there is a greater range of car manufacturer and design today than there was in the 50s and 60s when cars had the unnerving habit of exploding for no apparent reason.


    What you'd see is a decline in stupid bugs, a decline in bloat, an increase in modularity, possibly a reduction in latency and a move from upgrades to fix things that SHOULD have worked in the first place to enhancing things that can be relied upon to CONTINUE working fter the patches.


    Money would not be made by selling the same product with a different set of defects to the same market, money would be made by always going beyond last year's horizons. The same way most manufacturers, from cars to camping gear to remote control aircraft to air conditioning units to microwave ovens to home stereo manufacturers have all been doing - very successfully - for a very long time.


    The IT industry isn't going to change in the foreseeable future, the only way we'll see change in our lifetimes is if it is imposed on the Pointy Haired Bosses. We could easily see 99.9% reliable software, with no additional cost, in our homes in a year, with the lack of constant fixes actually saving money. And that's why it won't happen. Not because the IT corporations are mean, thuggish and ogreish - they are, it just isn't way it won't happen.


    It won't happen because they're geared both towards the profit motive and towards the outdated notion that the market is tiny. (That last part was true - in the 1950s, when entire countries might have three or four computers in total, operating in two, maybe three different capacities. You can understand a desire to go after the after-sales service, when there simply isn't anything else left to do.)


    Today, Microsoft's Windows resides on 98% of the desktop computers, but because of the support system needed to run the damn things, 98% of the world's population didn't have significant access to one. Ok, putrid green is a lousy colour, but the idea of clockwork near-indestructible laptops that - in theory - could be built to weigh 5 lbs or less and run high-end, intensive applications is beginning to filter through to the brain-dead we call politicians.


    You think someone in the middle of Ethiopia who is fluent only in their native tounge is going to want to pay for telephone technical support from someone in India, in order to figure out why their machine keeps locking up?


    When computing is truly available to the masses (ie: when even a long-forgotten South American tribe can reasonably gain access to one), the ONLY way it can be remotely practical is if said South American can look forward to a reliable, usable, practical experience where all usage can be inferred from first principles, and where NO software service calls are required to get things to work, ONLY required to get more things for working with.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:Rules of thumb by DeathToBill · · Score: 0, Offtopic

      You mean smitten, not smote. One is the past participle, to other is the past tense.

      --
      Slashdot - News for Nerds, Stuff that Matters, in ISO-8859-1 Has just realised that beta makes this signature redundant
    2. Re:Rules of thumb by Darkman,+Walkin+Dude · · Score: 1

      Doubling the number of coders will double the number of bugs and double the total time

      I recall back in school, we were in English class, and one of our assignments was to write an essay on a particular topic. I wrote a mighty big long dissertation, much to the head shaking disapproval of my classmates, who held that the more you wrote, the more mistakes you would make. Made like 2 errors in 20 pages.

      Learn to code better.

    3. Re:Rules of thumb by telecsan · · Score: 1

      I wrote a mighty big long dissertation, much to the head shaking disapproval of my classmates, who held that the more you wrote, the more mistakes you would make. Made like 2 errors in 20 pages.

      That example has nothing to do with your point. Had you only written 10 pages, you may well have had only one error. Besides, the GP was stating that if you doubled the number of coders, it would double the bugs. Have one of your classmates help you write that dissertation, and I'll be impressed if you come out with fewer than 4 (i.e. twice the number of) errors.

    4. Re:Rules of thumb by Godeke · · Score: 1

      "Big long"? I can only assume that error rate has increased as of late. (I will leave the comma addiction and "sentence" three alone for now.)

      --
      Sig under construction since 1998.
    5. Re:Rules of thumb by DennisInDallas · · Score: 1

      Dang! do you work here too?

      We seem to operate on a business model of delivering the crappiest solution possible in the shortest amount of time and then making the profit from the phone support, which is again the cheapest choice at every descision point.

      I think this is a mutation of the PERL model of giving away the interpreter and selling the manual

    6. Re:Rules of thumb by DennisInDallas · · Score: 1

      when I was a lad I was smitten by the girl next door. I tried to entice her into smiting my buttocks while wearing...

      well, maybe that should be the end of that story

    7. Re:Rules of thumb by Darkman,+Walkin+Dude · · Score: 1

      This is slashdot... when in Rome...

  95. Links to Wikipedia articles by Anonymous Coward · · Score: 0

    Dylan Programming Language
    Haskell Programming Language
    OCaml Programming Language

    /stupid slashcode wouldn't let me post them without the " Programming Language" part

  96. Re:Flamebait this! by Hosiah · · Score: 1
    You are completely missing the point

    Nevertheless, regardless, and bethatasitmay, I was siding with the person who expressed the opinion which got modded flamebait. Um, yes, bork bork, I know that an air-traffic-control system would make a poor desktop OS, along with other mission-critical applications such as power-plant-control systems at the plant I used to work at. But, yeah, surely *any* programmer making a desktop OS would at least have a thing or two to learn from the mere *reading* of the specifications from such projects, and perhaps it might even inspire them to make their desktop a more hardy place, maybe even through porting an idea inspired by the mission-critical system, leading to some of that innovation we're all hoping for (even us non-Winodws-users) in Vista.

    Why do posts that start with "You're missing the point!!!" always start out in left field and head for the parking lot?

  97. IEFBR14 is the perfect example of your point by Beryllium+Sphere(tm) · · Score: 4, Interesting

    http://en.wikipedia.org/wiki/IEFBR14

    IEFBR14 is sort of an executable version of /dev/null. It returns immediately when called. It had four or five bug reports filed against it.

    IBM could of course write a defect-free return statement. All the bugs were requirements drift that Praxis could not have prevented.

    1. Re:IEFBR14 is the perfect example of your point by cmdrbuzz · · Score: 1

      Actually IEFBR14 is probably more like /bin/true, as it always returns 0 in R15, which on MVS is successful completion (compared to VMS where 1 is successful completion.
      IEFBR14 is used mainly in JCL so allocate and delete datasets (files) without having to actually put any data in them.

  98. Re:Do you think it would help? by BCW2 · · Score: 1

    This was done as a test of a cheap autopilot. It would never be used in anything but a test. The Captains career is over if his ship collides with anything. He wants an alert human helmsman.

    USN Sub sailor 1976 - 1980

    --
    Professional Politicians are not the solution, they ARE the problem.
  99. Related reference page about tests by under_score · · Score: 2, Insightful

    The qualities of an ideal test is a framework similar to ACID for databases and INVEST for user stories. It describes six verifiable qualities that a test should have. On a related note, this article doesn't make me really that excited. I've been using test driven development with JUnit and NUnit to deliver tens of thousands of lines of code into production with similar defect rates (about two defects found over the course of several years of code being in production). I maintained good productivity rates, delivered code into QA with no defects found, into pre-production with no defects found and finally into production where defects were found only after a great deal of time in operation. The code was not simple either: it was asynchronous, guaranteed delivery, multi-threaded messaging code for enterprise systems. Developers who don't do TDD should be paid about 1/4 as much as developers who do, IMNSHO.

    1. Re:Related reference page about tests by OneSmartFellow · · Score: 1
      You are either exaggerating or simply lying. It is an axiom of software development that the more lines of [meaningful] code, the greater the number of bugs.

      I would be astounded if you were able to achieve an error rate of 1 bug per 1000 lines of code delivered to QA.

      Of course, if you are doing the QA before QA do QA, that's a different story.

      Besides, tens of thousands of lines of quality code sounds like about two months work. What were you doing the rest of the time, testing ?

  100. Fools! I'll Destroy them ALL! by JohnnyLocust · · Score: 1

    Bwah-hah-hah-ha-ha!

  101. Re:Do you think it would help? by BCW2 · · Score: 1

    The sentance you refer to compared M$ 3year cycle with crash problems to the Navy's 5 year cycle with more testing, which is when this happened. The Lockheed Martin software was in the test phase, not deployed operationaly.

    --
    Professional Politicians are not the solution, they ARE the problem.
  102. UML-GME by Anonymous Coward · · Score: 0

    For you I'd recommend GME (read the tutorials first) and finish up with Martin Fowler's Language Workbenches

  103. Automatic generation of code? by meburke · · Score: 3, Interesting

    This article couldn't have been more coincidental to my current project: I've been re-reading James Martin's books, "Application Development without Programmers" and "System Design from Provably Correct Constructs", with the goal of selecting a method to program mechanical devices.

    Martin's thesis, and remember this was back in the 70's and early 80's, was that the program should be generated from a specification of WHAT the program was to do, rather than trying to translate faulty specifications into code telling the computer HOW to do it. (Trust me, that poor sentence does not come close to describing the clarity of purpose in Martin's books.) Martin proposes that a specification language can be rigid enough to generate provably correct programs by combining a few provably correct structures into provably correct libraries from which to derive provably correct systems.

    The definition of the time, HOS (for Higher-Order Software) was actually used by a company called HOS, Inc.(!), and apparently worked pretty well. Many of the constructive ideas were included in OOP and UML, but ideally, if I understand the concept properly, it would be equivalent to generating software mostly from Use-Case analysis. There are similar approaches in MDD and MDA methodologies. I wonder what ever became of the HOS,Inc. and the HOS methods? It looks like they had a handle on round-trip software engineering in the 80's.

    OK, why would this be a good thing? Well, for one thing, computational/programmable devices are prolifierating at a tremendous rate, and while we can engineer a new device in 3 to 6 months, the programs for the device take 18 months to 3 years (if they are finished at all). Hardware development has greatly outpaced software development, by some estimations a 100x diference in capacity...yet they are built on the same fundamental logic!

    The best argument, IMO, is that since larger systems are logarithmically more complex, and since it is impossible to completely test even intermediately complex systems, it will require provably correct modules or objects to produce dependable systems. If the code is generated from provably correct components, then the system only has to be tested for correct outputs.

    Furthermore, code generated from provably correct components can allow machinery and devices to adapt in a provably correct way by rigorously specifying the outputs and changes to the outputs.

    Praxis is on a roll. The methodology employed is probably more important than the genius of the programmers. It should get better,though. The most mediocre Engineer today can produce better devices than the brilliant Engineers of 30 years ago using tested off-the-shelf components. IMO, this the direction programming should be taking.

    --
    "The mind works quicker than you think!"
    1. Re:Automatic generation of code? by blackcoot · · Score: 1

      systems like these are great when you're engineering things which have known functionality and behave in known ways. so if you've got the business rules you want to implement or the (known correct) control systems, etc. then you're golden. the problem is when you don't know those things (e.g: when you're in the research domain rather than the development domain).

    2. Re:Automatic generation of code? by meburke · · Score: 1

      Excellent point! I agree with you on two counts:

      1. ideally, a programmer involved in program development should be breaking new ground, because once a problem has been solved it shouldn't have to be solved again. It should be a matter of picking from the available solutions.

      2. and you made an important distinction between research and production. IMO, the usefulness of the whole idea applies more to production programming.

      --
      "The mind works quicker than you think!"
  104. How it's REALLY done by kuzb · · Score: 1

    In reality, my system is a hell of a lot more effective. Show the bugs a picture of the SPARK product manager and bugs are so utterly freaked out, that they run for the hills rather than residing in the code.

    --
    BeauHD. Worst editor since kdawson.
  105. Wow by dghcasp · · Score: 2, Funny
    This was done ~ 30 years ago, yet my entire string of xmas lights still goes out if one bulb fails.

    But seriously, that's cool. Any 'net resources on this for us software types who'd like to think we can solder two wires together without burning down the house?

    1. Re:Wow by Lehk228 · · Score: 1

      you must have shitty lights, around here everyone has the "don't die all at once" lights

      --
      Snowden and Manning are heroes.
    2. Re:Wow by Kadin2048 · · Score: 1

      Believe it or not, if you go to Wal-Mart and get the really crummy mini light sets, they're wired so that a bulb dying knocks out about half the string of lights. The better GE and Westinghouse sets don't seem to do this. But get desparate one year for an extra string of lights and get a shitty one, and you'll be regretting it for years.

      You know, sometimes I just feel cheated. It's 2006 -- we were supposed to have flying cars and people living on the moons of Jupiter, and instead we're still dealing with christmas lights wired in series.

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
  106. It says no bugs... by nxtr · · Score: 1

    They're allowed to have one!

  107. kudos to slashdot by RussP · · Score: 1

    Congratulations to slashdot for actually addressing the issue of safety-critical software. Folks, this is a completely different world than, say, the world of games or google searches -- where 80% of the output is *expected* to be crap. And the right language for the job is Ada.

    --
    I watch Brit Hume on Fox News
  108. Touring complete Nand? by erice · · Score: 1

    I was told that NAND is Turing-complete by someone smarter than I. I realized that NAND itself has no program flow, thus it can't be turing complete all by itself.

    It is possible to build any logic circuit using nothing but NAND gates. That includes processors and even entire computers.

    It is also true that area and speed are generally interchangeable in logic design. One can do some rather amazing tasks with really small circuits so long as your are not in any hurry to see the results.

    However, I submit that the smallest "touring complete" processor is at least 3 NAND gates.
    2 nand gates = 1 SR flop, the smallest storage element buildable from NAND
    1 nand for computation.

    With only 1 bit, it's well short of the infinite storage requirement. But then, all constructable devices fail that one.

    1. Re:Touring complete Nand? by Krach42 · · Score: 1

      I believe this proves the point that a turing-complete system can be built entirely from NAND.

      Thanks.

      Again... someone much smarter than me has now resolved and proved the "NAND is Turing-complete" or more accurately "With NAND alone, one can build a Turing-complete machine".

      --

      I am unamerican, and proud of it!
  109. What about the operating system? by kaos_ · · Score: 1

    Doesn't the underlying operating also play a big part in the reliability of the software? Even if your code is correct, can you say the same for what you run the code on, or what you compiled/interpreted it with? Then there is the hardware.

    It reminds me of many medical devices that have software running on Windows internally. I remember having LASIK done and the device looked like it was run by a PC with a Windows app. I did not turn out blind.

  110. Scaling the projects... by dghcasp · · Score: 1
    TFA gives examples of five successful projects (figure 2) with very low defect counts.

    Since they also give SLOC and whole-lifecycle-SLOC/day metrics, we can calculate the "sizes" of the projects...

    CDIS: 42.5 person years
    SHOLIS: 10.5 person years
    MULTOS CA: 9.8 person years
    A: 9.7 person years
    NSA: 8.6 person months

    So we're not talking about "tiny" projects here...

  111. Define bugless by Anonymous Coward · · Score: 0

    I've hear stories about other mission critical software that keeps failing but speaking from experience the mission critical military air traffic controle system I managed was in no way bug free on the software side.

  112. Elections are the problem .. voters too ignorant by Anonymous Coward · · Score: 0

    The most important decisions in a society are made now in what are essentially advertising wars (campaigns). The most difficult issues become 10 second soundbites. We need to get rid of elections above a regional level. Seriously. People don't know enough to even understand the issues, let alone choose solutions.

  113. Why don't we learn this in school by RibRdb · · Score: 2, Interesting

    As a computer science student, I would like to know why we aren't taught this in school. My professors have told me that software verification is a nearly impossible task which is too complicated for any real system, but this article claims otherwise. Why aren't we being taught that we should be responsible for writing reliable code and how to do it? Why haven't I heard of Z or other methods for writing provable specifications? My professors can't even write a decent specifcation. And supposedly this is one of the best Computer Science programs in the US. If students aren't even taught that it is possible to write near bug free software, it's no wonder that software is so unreliable.

    1. Re:Why don't we learn this in school by Savant-Ben · · Score: 1

      Hmm,

      I don't know about the US, but here in the UK when I did CS (Durham Uni 2000-2003), we did Z, Set Theory, Formal Specifications, as well as looking at "testable languages" such as Haskell and the such.

      The stuff is out there.

    2. Re:Why don't we learn this in school by Sigma+7 · · Score: 1
      As a computer science student, I would like to know why we aren't taught this in school. My professors have told me that software verification is a nearly impossible task which is too complicated for any real system,


      Your professors are either incompetant or outright lying. Software verification is performed by creating a list of potential input ranges (a combination of border cases and a random internal check), and making sure that the system works.

      This testing can be done in two ways - white box testing which determines if individual algorithms function correctly, and black box testing which determines if the system itself works.

      Saying that testing is a nearly impossible task is no different than saying that negative numbers do not exist (as what most elementry school teachers say). My suggestion is to find better teachers - although it is a little late once you've entered college/university since you are already locked in to completing your diploma/degree.

      One last thing - there is a reason MSVC, BorlandC, and GCC have an associated debugger. It's to make it much easier to isolate problems that are caused during the test.

      Why aren't we being taught that we should be responsible for writing reliable code and how to do it? Why haven't I heard of Z or other methods for writing provable specifications? My professors can't even write a decent specifcation. And supposedly this is one of the best Computer Science programs in the US.


      The "best" program gives the "in-demand" skills - Rapid Application Development with no intent on making programs correct. Most people want to be taught what they want to hear: that writing programs is easy. When they hear that, they turn around and recommend that course.

      In practice, you need to learn the required skills - programming, developing specification, debugging, and plenty of other stuff that isn't fun. A large chunk of people quit that program, saying that it is too hard (the same people who say math is too hard.)

  114. They left the UBL bug in the system by Anonymous Coward · · Score: 0

    >When you're writing software for an air traffic control system, military avionics software,
    >or an authentication system for the NSA, the delivered code can't afford to have bugs

    Considering the exploits of sheik Osama bin Laden, the firm certainly didn't do its job very well.
    or maybe
    Fighting bugs is futile, as humans remain the weakest part of the system. Western people lack strong morals, become lazy because of their advanced environment and they are easily corrupted by money. Computers cannot stop the decline of the west, but rather cause it by furthering decadence and atheism!

  115. software flaws are profitables Re:economics by La+Gris · · Score: 1

    Every industry have interests in valuing byproducts.

    In software industry, bugs are a byproduct and, there are ways to sell them as features.

    There are compagnies to sell trashcans so trashes dont invade your house. You can produce gaz out of shit.

    There are compagnies to sell enough memory, hand hard disk space so you have place to put leaks and fragmentations. You can even buy virus and spam cleaners.

    Economically: Wastes have values and you can make money out of it by recycling. No matter if these are hardware or software wastes.

    --
    Léa Gris
  116. But what does the customer need? by mcrbids · · Score: 3, Insightful

    Screw funding. It's irrelevant.

    Screw specifications. Nobody has them anyways.

    Give me a clear, predefined spec, and I'll meet it. I'll guarantee bug fixes,too.

    But that's not how software evolves.

    Despite careful attention, despite voluminous meetings, emails, and specifications, I never get a clear idea what the client needs me to develop until AFTER a prototype has been built.

    In fact, I'd wage that there's a quasi-quantum principle at work: You can either work towards the customer's actual needs, or the predefined, agreed upon specification/costs/specifications. Answering either means ignoring the other.

    Consider this the Heisenberg Uncertainty principle. The software is half-dead, half-alive. Either it meets the needs of the customer (and associated scope creep, bugs, ets) or the originally defined specification. Releasing the software defines whether the cat is dead or alive.

    It seems that:

    1) People will commit, in aggressive fashion, that they need something until they get it, at which point, they'll angrily point out all the flaws in it.

    2) People don't actually know what they need until they see that what they have isn't it.

    3) When you take anything produced because of (1), and then compare that to the feedback produced by (2), you end up with cases where the code is producing a result unexpected in the original design.

    These are called bugs.

    4) The only intelligent way to proceed with (1) and (2) is to consider software an iterative process, where (1) and (2) combine with (3) and lots of debugging to result in a usable product.

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
  117. Correctness-centric development with Java by kiniry · · Score: 1
    If any of you are interested in using the practices that Praxis preaches but you are working in Java, I suggest researching the Java Modeling Language (JML).

    JML is a formal specification language for writing contracts for your Java programs. (It has nothing to do with UML or XML, other than sharing two letters.)

    There are a number of quality research tools that understand JML including a compiler (jmlc), a documentation generator (jmldoc), a unit test generator (jmlunit), and an extended static checker (ESC/Java2), a kind of automated theorem prover, like FindBugs on steroids).

    These tools and technology let you do design by contract and contract-based unit testing in Java 1.4 and are used by many universities and companies to help them build quality software. See the ESC/Java2 FAQ for more information.

    Disclaimer: I am part of the research community that develops JML and the co-author and maintainer of ESC/Java2.

    Joe

    --
    Joseph R. Kiniry
    http://kind.ucd.ie/~kiniry/
    Lecturer
    UCD School of Computer Science and Informatics
  118. The secret by Aphoric · · Score: 1

    Their secret is slave labor

    --
    People sleep peaceably in their beds at night only because rough men stand ready to do violence on their behalf.
    1. Re:The secret by RevDobbs · · Score: 1

      Oompa Loompas are not slaves.

  119. Not Good Enough by MOBE2001 · · Score: 1

    The reality about Correctness by Construction is that bugs do make it to the final product and the more complex the application the more bugs there is. In safety-critical applications, highly reliable software is simply not good enough, only because a single bug can be catastrophic. What is needed is 100% defect-free code, guaranteed. In other words, unless the program is guaranteed bug-free, it must not be deployed. Doubt = failure. The only way to achieve 100% reliability in software regardless of the complexity is to abandon the algorithmic model of software construction and to adopt a non-algorithmic, synchronous model.

    1. Re:Not Good Enough by Doug+Jensen · · Score: 1

      The term "safety critical" literally refers to the safety of human lives and property. But it is commonly used in a figurative sense to mean the very special case of software that is subject to certification such as DO-178B etc. The state of the art in certifiably correct software is that it is possible only for extremely constrained, static, small scale systems. Military combat management systems are obviously safety critical in the literal sense, and many if not most of them pose greater risks to human lives and property than do safety critical systems in the figurative sense, such as digital avionics flight control systems. But military combat platform, combat management, and battle management software systems are intrinsically dynamic and large scale -- e.g., O(10^6) or more lines of code. I don't know of any such system that could be constructed using synchronous techniques -- in the sense I assume you intend, meaning Kopetz's time-triggered or the French school (Esterel et al.) of thinking. Those make presumptions that cannot be satisfied in the real world of highly dynamic and uncertain systems.

      --
      Doug Jensen
    2. Re:Not Good Enough by MOBE2001 · · Score: 1

      I don't know of any such system that could be constructed using synchronous techniques -- in the sense I assume you intend, meaning Kopetz's time-triggered or the French school (Esterel et al.) of thinking. Those make presumptions that cannot be satisfied in the real world of highly dynamic and uncertain systems.

      What presumptions are you referring to? Note that the most complex and reliable system in existence is the universe itself and it is inherently synchronous. The human brain is also a non-algorithmic synchronous system in the sense that neurons react immediately to incoming stimuli. Yet, in spite of its complexity, the brain's software is extremely reliable. Same goes for electronic circuits. Hardware systems (e.g., a computer) are extremely dynamic in the sense that they have quasi-infinite states. Yet this complexity is not detrimental to their reliability. Why? I argue that it is because they are synchronous.

      The reason that synchronous systems like computer hardware are reliable is because data/event dependencies are automatically and implicitly resolved. This is not the case for algorithmic software. The problem is proportional to complexity. Fortunately for the computer industry, all the nice things that are implict in hardware logic can also be implicit and automatic in sofware logic, given the right software construction model. It's time for a change.

  120. Re:Do you think it would help? by 91degrees · · Score: 1

    Yikes! How did a divide by zero error do all that? Surely the application should have just crashed, leaving everything else running. Even if it did die entirely, why couldn't they simply reboot?

  121. Praxis made me the geek I am by nicolaiplum · · Score: 3, Interesting

    At the age of 17 I spent a week in the Praxis offices on "Work Experience" (Americans may think of this as a very short internship), to find out what developing software would be like as a career. This was a major formative event of my life: I thought that developing software sounded good, I really liked using Real Computers (multiuser, multiprocessing systems with powerful operating software, like VMS and SunOS), and the people impressed me greatly. It definitely set me on the path to the career in systems development and administration that I have today.
    The person who made the biggest impression on me was the sysadmin. He got his own office-cube instead of having to share, he wore much more casual clothes and had a lot more hair and beard than most of the staff, he got to have big toys (several workstations, a LaserJet IIIsi big enough for an entire office that seemed to be his alone, etc) and he didn't seem to get much hassle from anyone else. This was obviously the job for me.
    The sysadmin was obviously rather a BOFH. When I was sat at the UNIX workstation for the first time, and had poked around with basic file-handling commands, I asked "What's the text editor on this system?". He answered "emacs - e m a c s - here's a manual" and picked about 300 sheets of paper off the Laserjet and handed it to me.
    I got to play with UNIX (SunOS), VMS, Oracle development environments. I still have the Emacs manual printout somewhere at home - it served me well when I went to University where printing anything out was charged by the sheet!
    I'm very glad they're still around.

    --
    "For a successful technology, reality must take precedence over public relations, for Nature cannot be fooled"
  122. Re:Flamebait this! by RingDev · · Score: 1

    "OS would at least have a thing or two to learn from the mere *reading* of the specifications from such projects"

    In the same way that an air frame mechanic might gleam some knowledge from watching "The Great Biker Build Off" on the Discovery channel.

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  123. Fractional errors? by juggledean · · Score: 1

    TFA cites a particular NSA biometric identification program which has "0.00" errors per KSLOC

    And what would 0.34 errors look like?

    or perhaps they had less than 5 errors in a thousand LOC.

  124. Waterfall? by ferespo · · Score: 1

    From the IEEE article:

    "The process is time-consuming. For the Mondex project, spec-writing took nearly a year, or about 25 percent of the entire development process. That was a long time to go without producing anything that looks like a payoff, concedes Andrew Calvert, Mondex's information technology liaison for the project. "Senior management would say: 'We are 20 percent into the project and we're getting nothing. Why aren't we seeing code? Why aren't we seeing implementation?' " he recalls. "I had to explain that we were investing much more than usual in the initial analysis, and that we wouldn't see anything until 50 percent of the way through." For comparison, in most projects, programmers start writing code before the quarter-way mark."

    Isn't suposed that one has to give something working to the user and then correct any mistakes made?

  125. Anyone old enought to remember AD/Cycle? by ModelerRick · · Score: 2, Insightful
    I've been re-reading James Martin's books, "Application Development without Programmers" and "System Design from Provably Correct Constructs", with the goal of selecting a method to program mechanical devices.

    Martin's thesis, and remember this was back in the 70's and early 80's, was that the program should be generated from a specification of WHAT the program was to do, rather than trying to translate faulty specifications into code telling the computer HOW to do it. (Trust me, that poor sentence does not come close to describing the clarity of purpose in Martin's books.) Martin proposes that a specification language can be rigid enough to generate provably correct programs by combining a few provably correct structures into provably correct libraries from which to derive provably correct systems.

    IBM had a major intiative back in the mid-1980s called AD/Cycle which was tied to SAA (System Application Architecture) which was based on these and similar ideas prevalent back then. This is the old "holy grail" and an attempt to fix the waterfall methods of development, which had actually been since the early 1950s with mixed success in delivering software on-time and in-budget.

    AD/Cycle involved not only IBM but a number of "AD/Cycle partner" companies like Bachman, and KnowledgeWare. KnowlegeWare's CEO was the former scrambling NFL quarterback Fran Tarkenton. A google of "fran tarkenton knowledgeware" will turn up references to Jim Martin, as well as some interesting things about how the company ended up.

    An incredible amount of development money went down the rat-hole chasing the AD/Cycle dream.

    The problem turns out to be the difficulty, if not impossibility, of creating rigorous specifications which produce useful results in the face of problems which aren't very well understood at the outset. The less the requirement is for a "black box" with well-defined inputs and outputs the more this is likely to be the case.

    Many problems turn out to be wicked that there is a feedback loop between the implementation and the requirements. A classic book from the era was Wicked Problems, Righteous Solutions (http://www.amazon.com/gp/product/013590126X/102-5 477977-4320940?v=glance&n=283155) Which might be considered one of the old testament texts pointing to today's "agile development" movement.

    A non-software example of a wicked problem is city planning in which implementing changes in the road network, housing developments, shopping center location etc. all change the requirements for the same aspects.

    Many wicked problems come from "requirements" which often do (or should or must) come from users. Often, the real requirements aren't known until an implementation is given to the users, who then might say, "yup, you implemented exactly what I asked for, but now that I see it, here's what I really want." Or, "Now that we've added this other thing (application, system, business division) why, doesn't this (work more like/interface with/replace/...) that."

    Faced with this, a methodology based on "correct" construction from "rigourous" specifications simply moves the problem to debugging the requirements.

    Until we do away with the need to change/adapt systems to changing/evolving requirements, which would likely involve eliminating users, this approach will have limited applicability, and will need to stand beside other more widely used incremental development models.

    1. Re:Anyone old enought to remember AD/Cycle? by meburke · · Score: 1

      I forgot about the AD/Cycle stuff. Thank you for reminding me.

      I knew Fran Tarkenton, briefly, in the 70's when I lived in Minneapolis. He's always been one of my favorite sports stars. I also have friends who worked for Knowlegeware in Atlanta. It's amazing to me what can happen to a good idea that gets executed poorly. Fran was also involved in Real Estate. I remember him saying specifically that it was important to think ahead, that he wouldn't be a football player forever.

      Your definition of "wicked requirements" seems to be related to a form of System Dynamics. (Thank you for the book pointer. I'll read it.)

      I agree with your statement: "...a methodology based on "correct" construction from "rigourous" specifications simply moves the problem to debugging the requirements." IMO, this is where the debugging process belongs. To me, it's like quality control: The further upstream you detect quality exceptions, the less useless work you have to do. I've been using decision tables since the 60's, and I personally think that the "Business Rules" concept is long overdue. I suspect that an automated development process will show up more quickly in well-defined subdomain like accounting a long time before it shows up in robotics or Economics.

      --
      "The mind works quicker than you think!"
  126. What!? No Bugs? by Anonymous Coward · · Score: 0

    Why would you "upgrade?"

    Bugs for Bucks, an industry standard.

  127. Most companies don't want quaity software by jc42 · · Score: 1

    The article comments:

    These six principles are not in themselves difficult to apply, and may even appear obvious. However, in the authors' experience, many software development projects fail to deliver against many, if any, of these principles.

    I'd argue that this is true, and the main reason that so many software products are so buggy is that most companies reward their developers for making buggy software, and punish them for making quality software.

    The latter point is easy to show. I've worked on any number of products where I produced something fairly quickly that worked, and nobody could find any bugs. How was I rewarded? In nearly every case, I was laid off. I'd done the job that I was hired for, they didn't have another project that "matched my talents", and the software was so well documented that if any bugs did appear, others could fix them. So why should they continue to pay me to be nonproductive?

    The lesson to developers is obvious: If you want to keep working here, you'll have to make sure that there is still work for you to do. This is not difficult. We all know the results.

    It's especially easy to do when you look at the illogical demands that most companies put on programmers. I've been denied all sorts of information about the workings of the tools that I'm required to use, on the grounds that what I'm asking about is proprietary. So I have tools whose behavior isn't fully knowable, and I spend a lot of time looking at output and asking "What could that thing be doing to give such bizarre results?"

    Of course, the funniest part of the article was the first principle, of "using a sound, formal notation for all deliverables". In most companies, this means a PowerPoint file.

    My general conclusion is that lots of people say that they want quality software, but they intentionally prevent developers from producing it, and they punish developers who do so despite all the barriers. The result shouldn't be at all surprising.

    --
    Those who do study history are doomed to stand helplessly by while everyone else repeats it.
  128. Bug Bounties by Isao · · Score: 1
    In response to the other demi-god comment, qmail offers a reward if bugs are found ($500US?).

    Of course, there are arguments that this does not constitute security. I think the concept of free fixes for bugs found by customers works a little better - it keeps all the stakeholders in the loop.

  129. Try the EULA by abb3w · · Score: 1
    Unfortunately, I think the blame lies at least in large part with the consumer.

    I think the "exclusion of warranty" terms that are common to most EULA's may be more at the heart. The typical consumer who has a problem will eventually run into this, and be forced to spend an insane amount on legal fees to get the EULA invalidated as unconscionable, or (more likely) give up in disgust.

    Perhaps there would be an impact from a federal law stating that software makers whose license terms are found unconscionable in court must notify all registered users of the software of that ruling....

    --
    //Information does not want to be free; it wants to breed.
  130. The world can't afford bug free software by sjames · · Score: 1

    I'm not knocking the article or shops that follow those practices, since there are life critical applications where it is well justified (such as the ones discussed in the article). However, some here seem to be missing a few points when it comes to the desirability of these techniques for less critical software.

    It's worth noting that the article starts out stating that the techniques involved allow production of up to 30 LOC/day. Thirty lines per day! Linux would have required over 493,000 man YEARS (at a reasonable guess +- 100,000 or so) to be where it is today at that rate. Assuming (very) generously that 2000 people could work on it full time without additional slowdowns for management overhead, that would have it ready to go somewhere around 2238 AD

    It's simply not reasonable to compare engineering practices where life and limb is at stake to software practices where no such risk exists. It seems inevitable that software development is compared to the efforts to design a highrise or a bridge. What do you bet those cheap consumer devices that use a wall wart (so they don't have to be UL listed) have a higher defect rate?

    That's not by any means meant to suggest that no attention should be paid to quality or that some shops don't pay nearly enough to it now. However, it is a very good reason we do NOT want everyone to be CMM5 or equivilant. If they were, we would literally grow old and die waiting for the software we want/need.

    I suspect that to achieve less buggy software in a timeframe we can live in and for a cost we can afford will involve advances in modularity and reusability rather than high end development techniques. It will also require a legal and economic structure that don't require so much re-invention of the wheel.

  131. If You're Interested in the Z Notation by SwashbucklingCowboy · · Score: 1

    mentioned in the article, you can download the reference manual from here

  132. Right here... by ChePibe · · Score: 1

    Check it out: http://www.nsa.gov/careers/students.cfm

    I did an internship with State last summer and it was an amazing experience. I'm not sure I'll end up working for the government (given the rising price of living in the DC area and the lower salaries, it's looking less and less likely), but it was a very valuable professional experience in any case.

    Check out the State student programs at careers.state.gov, and go for OVERSEAS internships - when you're based overseas as an intern, they give you many more responsibilities and depend a great deal on what you can do. It's a great way to get noticed and, whatever I end up doing, looks great on a resumé.

  133. Re:The secret - the plan by DennisInDallas · · Score: 1

    I know! let's sell a $200 PC to people that live in a country where the average annual income is about $13.50 on credit, then we have a large supply of workers. It may not quite be slavery, but it surely smacks of indentured servitude.

    We can probably get start up capital by calling ourselves a non-profit and asking for donations to help the third worlders that we are fixing to exploit.

    The only question is, once we have all these new PC owners on the hook what are we gonna pay them to do, code .net apps? write scam emails? blog?

  134. Now let's generalize it, shall we? by triskaidekaphile · · Score: 1

    "Quality" as ambiguous. What I consider "quality" is different from what you consider "quality".

    It's not just three, either; it is ALL of the non-functional requirements. At most two of them can be fully optimized in any engineererd system. In practice, the design of a system will be governed by the relative priorities of the non-functional requirements.

    The set of non-functional requirements is very large, but you should recognize some of these:

    • Cost
    • Schedule
    • Documentation
    • Internationalization/Localization
    • Fault Tolerance
    • Maintainability
    • Scalability
    • Expandability
    • Extensibility
    • Durability
    • Availability
    • Manageability
    • Recoverability

    Mental exercise: Choose any two from the above list, then explore how choosing any other item from the list would require a compromise to either of the first two chosen.

    So, what "ability"s do you want to have today? ;)

    --
    @HbFyo0$k8 tH!$
  135. Easy solution by Sloppy · · Score: 1

    For the production build, just change that one line to

    #undef BUGS
    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  136. Just In: Oracle is Unbreakable! by Anonymous Coward · · Score: 0

    What a crock. A few people looked a Larry's Database and found huge
    security holes and broken crap all over the place.

    This so called "no bugs" code is open to inspection by outsiders, right?
    Open to outsiders testing the NSA authentication? We can try the air controller
    stuff out? Feh, this is such a silver bullet hype it should NEVER be an
    article unless it is some analysis of a PR bullshit campaign.

  137. Z?, I prefer use cases by ferespo · · Score: 1

    I don't know how could you use Z to validate a specification with your final users unless they have a CS degree.

    Use cases are semi-formal as Alistair Cockburn puts it. And that's a real advantage.

    A combination of use cases, mock interfaces, prototyping and interpreting user requeriments (based on one's experience) are my best tools.

  138. Bugs cause catastrophic Failure of ERJ-170 Avionic by Anonymous Coward · · Score: 0

    Decisions to cut corners on development and test costs exists in safety critical avionics systems on commerical aircraft. Both the FAA and EASA trusted Honeywell that the systems complied with Level A Hazard requirements of tolerating 1 failure in 10-9 operating hours, or 1 failure in 1 billion operating hours. This dangerous systems failure occured in the first 4 months of commerical revenue service! The blind trust in Honeywell resulted in a "rubber stamp" approval by FAA and EASA to allow operators of the aircraft to fly with the backup secondary navigation system disabled. Had this failure occured with the secondary navigation disabled, while flying in IFR, the results would have been catastrophic! Quote from the FAA AD Order: We are issuing this AD to prevent temporary or possible sustained loss of all modular avionics units (MAU), which triggers a cascade of failures in systems dependent on MAUs functionalities. Such failures could reduce the flightcrew's situational awareness and increase workload and consequently reduce the ability of the flightcrew to maintain the safe flight and landing of the airplane. prohibit dispatch of any flight with the integrated electronic standby system (IESS) inoperative, even though it is allowed by the current version of the Master Minimum Equipment List; and performing a test to determine proper operation of the network interface card (NIC) communications and repairing if necessary. This AD also requires installing a certain software version of the PRIMUS EPIC system http://www.airweb.faa.gov/Regulatory_and_Guidance_ Library/rgAD.nsf/0/a26cc12a9c5c33e686256f7a0054419 d?OpenDocument

  139. What's a bug? by 2e · · Score: 0

    I am a team leader in software development for Microsoft and would someone PLEASE tell me what a "bug" is?
    And why you guys think they're such a BIG DEAL?!?
    Sheesh!
    Are they anything like the "features" we include in every piece of software we ship?

  140. open source usually offers free fixes by toby · · Score: 1
    How many of you would be willing to place that kind of warranty on YOUR CODE?

    Well, since my code is mostly GPL, it does not have a binding warranty. But my policy (as with many other open source producers) is to fix bugs at no cost to the user; so in effect, open source software typically makes the same promise. There are probably many reasons why this is so, not least of which is simple pride in workmanship and desire to maintain a reputation.

    --
    you had me at #!
  141. And for the rest of us.... by m_barnard · · Score: 1
    Hi all . . .

    Likely 80% of the value of the Praxis method can be achieved without statistically provable languages.

    Industry standard UML meets most of the requirements for sound formal notation.

    Tooling for UML provides substantial validation of deliverables.

    Iterative methods, RUP being my preference, meet the requirement for carrying out and validating the deliverables of small steps. (Note that CMMI still focusses on repeating the process, not validating the deliverables as the requirement.)

    Any well structured method with low redundancy meets the requirement to say things only once. Most methods aren't well structured. RUP is pretty good, and can be made solid in this respect with a little attention.

    From reasonably well done UML, test cases can be derived systematically that provide substantial coverage. Architects and designers can still create unthinkably complex solutions, but nothing in the article Praxis writes indicates that they have solved that problem in a technical way, but rather in a procedural way. Arguably, the Simplicity rule of XP comes closest to this Praxis practice, but I prefer the second half of the rule (don't add functionality before it is scheduled) to the first (do the simplest thing that could possibly work).

    Any decent iterative method deals with the hard things first. RUP explicitly does in the Elaboration phase, for example, while XP has the less well articulated architectural spike and spike processes.

    Having run XP and RUP projects and coached organizations around North America on the effective use of RUP, I can say that high developer productivity with low defects is eminently achievable, although not quite to the standard that Praxis achieves. A friend and CTO runs a variant of RUP for his shop and it's rare that defects are found by customers.

    Cheers,

    Mike Barnard

  142. Re:PRODUCTIVITY? --- Ok what then by Ada_Rules · · Score: 1

    The reason it is used in the article though is that in the problem space where SPARK is most likely to be used, LOC/Day is still the most common method used to measure productivity (even for product that are developed with different approaches) It is full of problems, but I honestly have not seen a "better" approach that really worked. Function points were big for a while but counting them is more difficult (though honestly probably not more difficult then when the LOC/day crowd starts getting into the Equivilent LOC/Day math used when modifying an existing product). Several people on the thread have scoffed at LOC/day for productivity...I have not really seen anyone else present a viable alternative. The other thing to keep in mind is that there are other measures in place as well on most jobs like this such as defect density, rework, etc. All of these metrics have their problems to but in the end, when you are going to spend millions of dollars writing software, the pointy hair bosses (rightly so) do not want some guy just saying something like "Well, I think it will cost 1.5 million dollars because I submitted an ask slashdot question and that was the average response"....Whether or not such an approach would end up with a better estimate of productivity and final cost is left as an excercise for the reader.

    --
    --- Liberty in our Lifetime
  143. Re: Very true by aeoneal · · Score: 1

    I was given a project manager role at Nortel in 2000, and tried to implement some of this. It was virtually impossible; people did not want to (a) change their existing habits or (b) admit their were improvements to be made. While initially management and some on the team liked the ideas, implementing them was virtually impossible. Those who had to address the actual issues simply refused to do what was necessary. They said "yes" in meetings and went right back to the old work.

    As a project manager over people in multiple departments and multiple locations, with hiring control over none, I was helpless without the support of executive mgmt, and they of course told me implementing the changes in question was my job. Which it was, but without power, a title is worthless.

    Very, very vexing.

  144. Re: Very true - oops! by aeoneal · · Score: 1

    Of course, my inability to spell simple words
    in the above post undermines it somewhat ;-)

  145. Decent Essays... by oldCoder · · Score: 1

    Why is it that software engineers have to write so many dang essays? Maybe if we were as terse and un-expressive as the civil engineers our programs would work better. You ever see a few dozen essays on civil engineering in the bookstore?

    --

    I18N == Intergalacticization
  146. Take it with a Grain of Salt by oldCoder · · Score: 1
    I am a little suspicious of their calculation of errors per kloc. This means they are calculating the number of errors per thousand lines of source code. With this metric, you can halve the error rate by doubling the number of source lines.

    Indeed, their technique seems to rely a lot on the sort of "Executable Comments" that act like assertions and other semantic statements. It could throw off their statistics.

    --

    I18N == Intergalacticization
  147. Using right sofware tools helps too... by Anonymous Coward · · Score: 0

    Synchronous and deterministic languages such as SCADE permit to drastically reduce the number of bugs. As a former C/C++/java developer, I can tell you these tools are really ideal to develop safety critical sofware. And the code generator is DO-178B qualifiable up to level A, one of the most stringent certifications for embedded software in for civilian avionics, thus allowing you to certify the SCADE language and forget about low level testing on the generated C code. This tool is massively deployed at Airbus (A340 and A380). It is used for many other planes/helicopters