Results 1 -
9 of
9
Jass -- Java with Assertions
, 2001
"... Design by Contract, proposed by Meyer for the programming language Eiffel, is a technique that allows run-time checks of specification violation and their treatment during program execution. Jass, Java with assertions, is a Design by Contract extension for Java allowing to annotate Java programs w ..."
Abstract
-
Cited by 78 (4 self)
- Add to MetaCart
Design by Contract, proposed by Meyer for the programming language Eiffel, is a technique that allows run-time checks of specification violation and their treatment during program execution. Jass, Java with assertions, is a Design by Contract extension for Java allowing to annotate Java programs with specifications in the form of assertions. The Jass tool is a pre-compiler that translates annotated into pure Java programs in which compliance with the specification is dynamically tested. Besides the
A comprehensive approach for the development of modular software architecture description languages
- ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY
, 2005
"... Research over the past decade has revealed that modeling software architecture at the level of components and connectors is useful in a growing variety of contexts. This has led to the development of a plethora of notations for representing software architectures, each focusing on different aspects ..."
Abstract
-
Cited by 37 (4 self)
- Add to MetaCart
Research over the past decade has revealed that modeling software architecture at the level of components and connectors is useful in a growing variety of contexts. This has led to the development of a plethora of notations for representing software architectures, each focusing on different aspects of the systems being modeled. In general, these notations have been developed without regard to reuse or extension. This makes the effort in adapting an existing notation to a new purpose commensurate with developing a new notation from scratch. To address this problem, we have developed an approach that allows for the rapid construction of new architecture description languages (ADLs). Our approach is unique because it encapsulates ADL features in modules that are composed to form ADLs. We achieve this by leveraging the extension mechanisms provided by XML and XML schemas. We have defined a set of generic, reusable ADL modules called xADL 2.0, useful as an ADL by itself, but also extensible to support new applications and domains. To support this extensibility, we have developed a set of reflective syntax-based tools that adapt to language changes automatically, as well as several semantically-aware tools that provide support for advanced features of xADL 2.0. We demonstrate the effectiveness, scalability, and flexibility of our approach through a diverse set of experiences. First, our approach has been applied in industrial contexts,
Test Oracles
, 2001
"... All software testing methods depend on the availability of an oracle, that is, some method for checking whether the system under test has behaved correctly on a particular execution. An ideal oracle would provide an unerring pass/fail judgment for any possible program execution, judged against a ..."
Abstract
-
Cited by 27 (0 self)
- Add to MetaCart
All software testing methods depend on the availability of an oracle, that is, some method for checking whether the system under test has behaved correctly on a particular execution. An ideal oracle would provide an unerring pass/fail judgment for any possible program execution, judged against a natural specification of intended behavior. Practical approaches must make compromises to balance trade-offs and provide useful capabilities. This report surveys proposed approaches to the oracle problem that are general in the sense that they require neither pre-computed input/output pairs nor a previous version of the system under test. The survey is not encyclopedic, but discusses representative examples of the main approaches and tactics for solving common problems. Partially supported by the Italian National Research Council (CNR). This work has also been supported by the Defense Advanced Research Projects Agency and Rome Laboratory, Air Force Materiel Command, USAF, under agreement number F30602-97-2-0034. The U.S. Government is authorized to reproduce and distribute reprints for Governmental purposes notwithstanding any copyright annotation thereon. The views and conclusions contained herein are those of the authors and should not be interpreted as necessarily representing the official policies or endorsements, either expressed or implied, of the Defense Advanced Research Projects Agency, Rome Laboratory, or the U.S. Government. 1 Contents 1
Constraining the Structure and Style of Object-Oriented Programs
, 1993
"... Object-oriented languages fail to provide software developers with a way to say many of the things about their systems that they need to be able to say. To address this need, we have designed and implemented a language for use with C++ that allows software developers to express a wide variety of ..."
Abstract
-
Cited by 24 (5 self)
- Add to MetaCart
Object-oriented languages fail to provide software developers with a way to say many of the things about their systems that they need to be able to say. To address this need, we have designed and implemented a language for use with C++ that allows software developers to express a wide variety of constraints on the designs and implementations of the systems they build. Our language is specifically designed for use with C++, but the issues it addresses are applicable to other object-oriented languages, and the fundamental software architecture used to implement our system could be applied without modification to similar constraint languages for other object-oriented programming languages.
Using Annotated C++
- IN PROCEEDINGS OF C++ AT WORK - '90
, 1990
"... A++ (‘‘Annotated C++’’) is both a formalism and a proposed CASE tool for annotating C++ code with object-oriented specifications, assertions, and related semantic information. Annotations provide programmers with a useful means for approaching class design, exceptions, correctness, standardization, ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
A++ (‘‘Annotated C++’’) is both a formalism and a proposed CASE tool for annotating C++ code with object-oriented specifications, assertions, and related semantic information. Annotations provide programmers with a useful means for approaching class design, exceptions, correctness, standardization, software reusability and related issues in software engineering with C++. This paper shows how A++ provides arbitrarily fine granularity to the C++ type system, how it automates and streamlines exception testing, how it can aid in standardization of software components, and how it can safely remove redundant exception tests.
Worst-case timing analysis of exception handling in Ada
- in Ada. Ada: Towards Maturity
, 1993
"... . This paper describes a method for analysing the timing properties of exception handling in Ada. The paper first describes how exceptions are implemented and considers the use of exceptions in the SPARK, Safe/Ada and ANNA subsets. A static analysis technique for reasoning about exception propagatio ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
. This paper describes a method for analysing the timing properties of exception handling in Ada. The paper first describes how exceptions are implemented and considers the use of exceptions in the SPARK, Safe/Ada and ANNA subsets. A static analysis technique for reasoning about exception propagation is then presented. We argue that this technique, along with a suitable subset and detailed knowledge of exception implementation can be used to develop an accurate worst-case timing analysis system. The method is illustrated with an example. Finally, our conclusions and plans for further work are presented. 1. Introduction Hard real-time systems are characterised by their need to meet stringent timing requirements. The application of static analysis techniques to determine the worst-case execution time of program fragments has therefore become an important topic. Knowledge of worst-case execution times is essential if schedulability analysis is to be used to guarantee an application's tim...
The Role of Reuse in Introducing Software Engineering Principles in a Computer Science Second Course
, 1993
"... and Generic Data Types Week 3-4 Key example: Sets 5. Stacks: Design, Specification, and Implementation Week 4-6 Specification of unbounded stacks An introduction to design issues in specification Defensive and non-defensive specifications Primary and secondary stack operations Guidelines Pro ..."
Abstract
- Add to MetaCart
and Generic Data Types Week 3-4 Key example: Sets 5. Stacks: Design, Specification, and Implementation Week 4-6 Specification of unbounded stacks An introduction to design issues in specification Defensive and non-defensive specifications Primary and secondary stack operations Guidelines Problem solving using stacks Specification of bounded stacks An implementation of bounded stacks 6. An introduction to certification of correctness of implementations Week 7 Key example: Certification of bounded stacks 7. An introduction to efficiency analysis of implementations Week 7-8 Key example: An analysis of a bounded stack implementation 8. Queues Week 8 16 Specification of unbounded and bounded queues Secondary queue operations Problem solving using queues An implementation of bounded queues 9. Lists Week 9 Specification of lists Secondary list operations Problem solving using lists List-based layered implementations of unbounded stacks and queues 10. Pointers as an implementation mechanism for unbounded ADT'sWeek 10-11 An introduction to access types and variables An implementation of lists using pointers Direct implementation of unbounded stacks and queues *11. Recursion as a problem solving vehicle Week 11-12 Examples Implementation of Stack, Queue, and List secondary operations 12. Trees Week 12-13 Specification Tree traversals An implementation of trees using pointers 13. Searching Week 14 Specification Multiple implementation techniques Linear and ordered linear search Binary search trees Searching using hash tables 14. Sorting Week 15 Specification Multiple implementation techniques Bubble Sort, Merge Sort, and Quick Sort 15. Course summary Week 15 *Note: Parts or all of chapters 1 (context setting), 2 and 3 (specificatio...

