Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Goodbye To Faulty Software?

Goodbye To Faulty Software?

Scheduled Pinned Locked Moved The Lounge
comtestingquestion
12 Posts 12 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Graham Bradshaw

    Mark Nischalke wrote:

    Sounds like TDD to me

    Sounds like another formal specification language to me. A bit like Z[^].

    S Offline
    S Offline
    Simon P Stevens
    wrote on last edited by
    #3

    Yeah, doesn't seem like they are saying anything new. Makes me think of Spark[^].

    Simon

    1 Reply Last reply
    0
    • N Not Active

      http://www.sciencedaily.com/releases/2008/07/080716154355.htm[^] "The key lies in an esoteric reformulation of mathematics called ‘type theory’ based on the notion of computation. In this approach, the specification for a computational task is stated as a mathematical theorem. The program that performs the computation is equivalent to the proof of the theorem. By proving the theorem the program is guaranteed to be correct." Sounds like TDD to me, just with math terms. Write the test then write the code to pass the test.


      only two letters away from being an asset

      E Offline
      E Offline
      Ennis Ray Lynch Jr
      wrote on last edited by
      #4

      But then some architect would write a framework that removes all types because it is more enterprisey.

      Need a C# Consultant? I'm available.
      Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway

      1 Reply Last reply
      0
      • N Not Active

        http://www.sciencedaily.com/releases/2008/07/080716154355.htm[^] "The key lies in an esoteric reformulation of mathematics called ‘type theory’ based on the notion of computation. In this approach, the specification for a computational task is stated as a mathematical theorem. The program that performs the computation is equivalent to the proof of the theorem. By proving the theorem the program is guaranteed to be correct." Sounds like TDD to me, just with math terms. Write the test then write the code to pass the test.


        only two letters away from being an asset

        M Offline
        M Offline
        Mike Dimmick
        wrote on last edited by
        #5

        We know how to write proofs for software. That's not the problem. The problem is that it costs way too much, in both money and time, to do it for any but the most safety-critical software. We also know how to perform enough inspection and testing to catch very large proportions of errors. Again, it's cost-prohibitive. The fact is, our customers don't want to pay for fault-free software. Or, we haven't explained to them just how much it will cost and allowed them to choose the value of this parameter. Proof isn't really compatible with evolutionary development as you really have to have a thorough design to attempt to prove. By the way, your compiler already does some type-theory proving - well, unless you're using a weakly-typed language (like VB with Option Strict off). Most of us don't use a very strong language like Ada because again, defining your own integer types and converting between them as required is time-consuming and hence costly. C++ and C# are strongly-typed for custom types, but there's no concept of different types of integer. I suppose you could design some structures with overloaded operators (e.g. Velocity, Distance, Time: summing any quantity would give the same type, multiplying Velocity and Time gives Distance, etc) but you still have to have access to the raw value to interoperate with any other code. I'd like to see anyone prove a user interface. You're so dependent on your host platform working correctly, which of course you don't have a proof for.

        DoEvents: Generating unexpected recursion since 1991

        1 Reply Last reply
        0
        • G Graham Bradshaw

          Mark Nischalke wrote:

          Sounds like TDD to me

          Sounds like another formal specification language to me. A bit like Z[^].

          P Offline
          P Offline
          phannon86
          wrote on last edited by
          #6

          I dreaded that module at uni, was hoping I'd never hear of it again, bleh X|

          He who makes a beast out of himself gets rid of the pain of being a man

          1 Reply Last reply
          0
          • N Not Active

            http://www.sciencedaily.com/releases/2008/07/080716154355.htm[^] "The key lies in an esoteric reformulation of mathematics called ‘type theory’ based on the notion of computation. In this approach, the specification for a computational task is stated as a mathematical theorem. The program that performs the computation is equivalent to the proof of the theorem. By proving the theorem the program is guaranteed to be correct." Sounds like TDD to me, just with math terms. Write the test then write the code to pass the test.


            only two letters away from being an asset

            N Offline
            N Offline
            Nitron
            wrote on last edited by
            #7

            Like many of the comments thus far, this is only applicable to safety-critical software that can be formally specified. The problem with 'software' in general is that most of it cannot be formally defined, or, if it were, the errors would still be there -- just abstracted to the formal spec. Also mentioned prevoiously -- try to formally prove a UI design. In my opinion, there is no single software development strategy that applies to all software. For example, the waterfall method requires the specification, design, implementation, all be done completely and correctly (or at least in sequence). This is a greatly inefficient way to develop software that has loosely-stated requirements (and you're never going to get the requirements right anyway)... Agile works only if there is a rapid prototyping framework in place. If you can't quickly build and release components to a target in an embedded environment, this approach becomes ineffective (not to mention the potential CM issues that will arise from any project of more than trivial scope). TDD? Same fate as Agile. So in essence the crux of the problem (i.e. why 'software' hasn't been pinned down like other engineering disciplines) is that the term "software" is all-encompassing and no single method is good for all applications. Don't get me wrong, technologies like Formal Methods has its place, but the idea here is that there is no 'silver bullet' or single process. It comes down to properly scoping a project, selecting the tools and techniques that best suit the project, and establishing adequatre process control such that the effort can be managed -- the continuous balance of cost, schedule, and risk.

            ~Nitron.


            ññòòïðïð**B A
            start
            **

            K 1 Reply Last reply
            0
            • N Not Active

              http://www.sciencedaily.com/releases/2008/07/080716154355.htm[^] "The key lies in an esoteric reformulation of mathematics called ‘type theory’ based on the notion of computation. In this approach, the specification for a computational task is stated as a mathematical theorem. The program that performs the computation is equivalent to the proof of the theorem. By proving the theorem the program is guaranteed to be correct." Sounds like TDD to me, just with math terms. Write the test then write the code to pass the test.


              only two letters away from being an asset

              H Offline
              H Offline
              hairy_hats
              wrote on last edited by
              #8

              I thought this was going to be about MS dropping support for VB. *sigh*.

              1 Reply Last reply
              0
              • N Nitron

                Like many of the comments thus far, this is only applicable to safety-critical software that can be formally specified. The problem with 'software' in general is that most of it cannot be formally defined, or, if it were, the errors would still be there -- just abstracted to the formal spec. Also mentioned prevoiously -- try to formally prove a UI design. In my opinion, there is no single software development strategy that applies to all software. For example, the waterfall method requires the specification, design, implementation, all be done completely and correctly (or at least in sequence). This is a greatly inefficient way to develop software that has loosely-stated requirements (and you're never going to get the requirements right anyway)... Agile works only if there is a rapid prototyping framework in place. If you can't quickly build and release components to a target in an embedded environment, this approach becomes ineffective (not to mention the potential CM issues that will arise from any project of more than trivial scope). TDD? Same fate as Agile. So in essence the crux of the problem (i.e. why 'software' hasn't been pinned down like other engineering disciplines) is that the term "software" is all-encompassing and no single method is good for all applications. Don't get me wrong, technologies like Formal Methods has its place, but the idea here is that there is no 'silver bullet' or single process. It comes down to properly scoping a project, selecting the tools and techniques that best suit the project, and establishing adequatre process control such that the effort can be managed -- the continuous balance of cost, schedule, and risk.

                ~Nitron.


                ññòòïðïð**B A
                start
                **

                K Offline
                K Offline
                Kevin McFarlane
                wrote on last edited by
                #9

                Also we overestimate how precise engineering is. I used to work in the oil and gas industry. There are still lots of mistakes but "reliability" is achieved by redundancy.

                Kevin

                1 Reply Last reply
                0
                • N Not Active

                  http://www.sciencedaily.com/releases/2008/07/080716154355.htm[^] "The key lies in an esoteric reformulation of mathematics called ‘type theory’ based on the notion of computation. In this approach, the specification for a computational task is stated as a mathematical theorem. The program that performs the computation is equivalent to the proof of the theorem. By proving the theorem the program is guaranteed to be correct." Sounds like TDD to me, just with math terms. Write the test then write the code to pass the test.


                  only two letters away from being an asset

                  S Offline
                  S Offline
                  Stuart Dootson
                  wrote on last edited by
                  #10

                  The core part of Scade[^] is written like that - except it uses ML as the implementation language, as it has an almost one-to-one mapping with the specification language. Oh - and don't forget the many, many pages of specification :~. As Mike said we already know how to do this (see CICS[^] - a classic poster boy for formal specification) - it's just that for most systems, the cost completely outweighs the benefit in terms of residual defects. You're probably better off using a language with a higher level of abstraction (Ruby, Python?) so you write less code, on the basis that the less code you write, the less likelihood there is of introducing errors!

                  1 Reply Last reply
                  0
                  • N Not Active

                    http://www.sciencedaily.com/releases/2008/07/080716154355.htm[^] "The key lies in an esoteric reformulation of mathematics called ‘type theory’ based on the notion of computation. In this approach, the specification for a computational task is stated as a mathematical theorem. The program that performs the computation is equivalent to the proof of the theorem. By proving the theorem the program is guaranteed to be correct." Sounds like TDD to me, just with math terms. Write the test then write the code to pass the test.


                    only two letters away from being an asset

                    J Offline
                    J Offline
                    Joe Woodbury
                    wrote on last edited by
                    #11

                    This sounds like utter BS to me (it's more likely a way for idiot clever college professors to get grants.)

                    Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke

                    1 Reply Last reply
                    0
                    • N Not Active

                      http://www.sciencedaily.com/releases/2008/07/080716154355.htm[^] "The key lies in an esoteric reformulation of mathematics called ‘type theory’ based on the notion of computation. In this approach, the specification for a computational task is stated as a mathematical theorem. The program that performs the computation is equivalent to the proof of the theorem. By proving the theorem the program is guaranteed to be correct." Sounds like TDD to me, just with math terms. Write the test then write the code to pass the test.


                      only two letters away from being an asset

                      R Offline
                      R Offline
                      Roger Wright
                      wrote on last edited by
                      #12

                      :-D

                      "A Journey of a Thousand Rest Stops Begins with a Single Movement"

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups