A specification is different from an implementation in that there is no need for it to be efficient in the computational sense. Activities for which no concise specification is available are dealt with. In such cases,...
详细信息
A specification is different from an implementation in that there is no need for it to be efficient in the computational sense. Activities for which no concise specification is available are dealt with. In such cases, an attempt must be made to develop a well-organized specification, so that in spite of its size it is still understandable. The simple recursion-equation programming language (NPL) created by Burstall is used as the language in which specifications are expressed, and the influence of its use on the construction of specifications is considered. One particular task is considered, and it is shown how, through using NPL and giving no consideration to efficiency during design, a good formal specification can be produced. The domain of the task is text formatting; attention is limited to the simpler end of the domain. It is concluded that the specification of a simple text formatter which is constructed has the virtues of clarity, comprehensibility, and precision. The success is ascribed to the influences intrinsic in the use of an applicative recursion equation language and to the decision to disregard all consideration of efficiency. In addition, the 2 main extensions from the language NPL to the language HOPE are discussed, along with possibilities for investigation.
Examines software program specification and testing. Procedures underlying software writing and test program; Analysis on examples of software writing and test program; Enumeration of software-writing practices.
Examines software program specification and testing. Procedures underlying software writing and test program; Analysis on examples of software writing and test program; Enumeration of software-writing practices.
Diagrams play a central role in software engineering. They are used for specifying design elements such as requirements, concurrent systems, database models and interactive systems. Families of diagrams form visual la...
详细信息
Diagrams play a central role in software engineering. They are used for specifying design elements such as requirements, concurrent systems, database models and interactive systems. Families of diagrams form visual languages, and creating such diagrams constitutes visual programming. The Visual programmer's WorkBench (VPW) addresses the rapid synthesis of programming environments for the specification, analysis, and execution of visual programs. A language-based environment for a specific visual language is generated in VPW from a specification of the syntactic structure, the abstract structure, the static semantics and the dynamic semantics of the language. VPW is built around a model of distributed processing based on shared distributed memory. This framework is used both in defining the architecture of the environment and for the execution model of visual languages. The Visual programmer's WorkBench has been used to experiment with visual programming environments for several visual languages. This paper describes the design of the Visual programmer's WorkBench and our experience using it to generate a distributed programming environment for a concurrent visual language. [ABSTRACT FROM AUTHOR]
The redefinition of a method in subclasses can completely change the semantics of the superclass method unless there are effective mechanisms that enforce the preservation of behavioral properties. Several approaches ...
详细信息
The redefinition of a method in subclasses can completely change the semantics of the superclass method unless there are effective mechanisms that enforce the preservation of behavioral properties. Several approaches to behavioral subtyping-exact pre-post match, plug-in match, relaxed plug-in match among others-exist that enforce the preservation of behavioral properties. To maintain or weaken pre-conditions and to maintain or enforce post-conditions when redefining methods in extended classes-plug-in match-is the solution that is adopted, by construction, in the Eiffel language, among other assertion languages. This approach forbids the specification of a class of legitimate programs from which we present an example. We claim that relaxed plug-in match should be enforced instead, in order to accommodate these examples. Other approaches exist, as is the case of case analysis in JML and OCL, that allow the specification of those programs, but they do it at the cost of decreasing software extension. We propose a new way of building contracts that identify and express, in a natural and elegant way, the several contributions that method redefinition can bring, and that are expressive enough to specify extensible contracts for the above mentioned class of programs. These contracts ensure, by construction, that redefinition preserves behavioral properties. (C) 2004 Elsevier B.V. All rights reserved.
A term rewriting system (TRS) is a pair (F, R) consisting of a signature F and a set R of rewrite rules. Examples on the modularity of termination in confluent variable-preserving term rewriting systems are presented.
A term rewriting system (TRS) is a pair (F, R) consisting of a signature F and a set R of rewrite rules. Examples on the modularity of termination in confluent variable-preserving term rewriting systems are presented.
We introduce a practical method for abductive analysis of modular logic programs. This is obtained by reversing the deduction process, which is usually applied in static-dataflow analysis of logic programs, on generic...
详细信息
We introduce a practical method for abductive analysis of modular logic programs. This is obtained by reversing the deduction process, which is usually applied in static-dataflow analysis of logic programs, on generic, possibly abstract, domains for analysis. The approach is validated in the framework of abstract interpretation. The abduced information provides an abstract specification for program modules which can be of assistance both in top-down development of programs and in compile-time optimization. To the best of our knowledge this is the first application of abductive reasoning in dataflow analysis of logic programs.
This paper presents a general approach to annotation inference for a given static program checker. The approach reuses the checker as a subroutine. The approach has been used to implement annotation inference systems ...
详细信息
This paper presents a general approach to annotation inference for a given static program checker. The approach reuses the checker as a subroutine. The approach has been used to implement annotation inference systems for two static program checkers, ESC/Java and rccjava. The paper describes the approach formally and shows how it applies to ESC. (C) 2001 Elsevier Science B.V. All rights reserved.
We state Warshall's algorithm in an abstract form and prove its correctness, while postponing the choices of representation. This is achieved by the use of relations and algebraic operations on relations, avoiding...
详细信息
We state Warshall's algorithm in an abstract form and prove its correctness, while postponing the choices of representation. This is achieved by the use of relations and algebraic operations on relations, avoiding the use of vectors, matrix elements and indices. By choosing specific forms for the loop-body we derive Warshall's algorithm, the grid algorithm and generalisations of the latter. The derivation illustrates the point that nontrivial algorithms need not have difficult derivations, provided the right abstractions are chosen and provided the right notation is employed. (C) 1997 Elsevier Science B.V.
Developing concurrent real-time programs is one of computer science\'s greatest challenges. Not only is such software expensive to manufacture, but its role in safety-critical systems demands that it be correct. F...
详细信息
Developing concurrent real-time programs is one of computer science\'s greatest challenges. Not only is such software expensive to manufacture, but its role in safety-critical systems demands that it be correct. Formal methods of program specification and refinement could strengthen the mathematical precision used to develop such software. Nevertheless, formalisms that embrace both real-time and concurrency requirements are only just emerging. The Quartz method treats time and functional behavior with equal importance in the development process. The authors argue that by modeling program development in a unified framework, we can increase our confidence in the correctness of real-time concurrent code.
Although static typing provides undeniable benefits for the development of applications, dynamically typed languages have become increasingly popular for specific scenarios. Since each approach offers different benefi...
详细信息
Although static typing provides undeniable benefits for the development of applications, dynamically typed languages have become increasingly popular for specific scenarios. Since each approach offers different benefits, the StaDyn programming language has been designed to support both dynamic and static typing. This paper describes the minimal core of the StaDyn programming language. Its type system performs type reconstruction over both dynamic and static implicitly typed references. A new interpretation of union and intersection types allows statically gathering the type information of dynamic references, which improves runtime performance and robustness. The evaluation of the generated code has shown how our approach offers an important runtime performance benefit. (C) 2010 Elsevier B.V. All rights reserved.
暂无评论