My original postulate, which I have been pursuing as a scientist all my life, is that one uses the criteria of correctness as a means of converging on a decent programming language design one which doesn’t set traps for its users, and ones in which the different components of the program correspond clearly to different components of its specification, so you can reason compositionally about it. [...] The tools, including the compiler, have to be based on some theory of what it means to write a correct program.
The essence of a software entity is a construct of interlocking concepts: […] I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.fred brooks
You become a serious programmer by going through a stage where you are fully aware of the degree to which you know the specification, meaning both the explicit and the tacit specification of your language and of your problem. "Hey, it works most of the time" is the very antithesis of a serious programmer, and certain languages can only support code like that.erik naggum
I have come to believe that large print, thick and heavy paper, and wide margins and oversize leading is indicative of the expected intelligence of the reader. … Compare children's books and books on Web Duhsign or other X-in-21-days books. If the reading level of a specification is below college level, chances are the people behind it are morons and the result morose.erik naggum
Everyone wants rather to be pleasing to women and that desire is not altogether, though it is very largely, a manifestation of vanity. But one cannot aim to be pleasing to women any more than one can aim to have taste, or beauty of expression, or happiness; for these things are not specific aims which one may learn to attain; they are descriptions of the adequacy of one's living. To try to be happy is to try to build a machine with no other specification than that it shall run noiselessly.j. robert oppenheimer
A conceptual model is a representation of the system expertise using this formalism. An internal model is derived from the conceptual model and from a specification of the system transactions and the performance constraints.
Today some evidence arises that UML will more and more be used not as a specification language but as a high level programming language. This has some advantages, as if the concepts of UML are executable, they can immediately be animated and tested, or the generated code even be used as implementation. Thus UML probably will have an implementation-oriented semantics describing this animation.
Executable UML is at the next higher layer of abstraction, abstracting away both specific programming languages and decisions about the organization of the software so that a specification built in Executable UML can be deployed in various software environments without change.
Even perfect program verification can only establish that a program meets its specification. […] Much of the essence of building a program is in fact the debugging of the specification.