Software development for next generation communication networks
Even casual observes have to notice the dramatic changes in the telecommunications industry that have taken place in the last five years. Giant companies split, merge and are sometimes displaced by newer ones that did not exist a decade ago. The ...
Designing robust Java programs with exceptions
Exception handling mechanisms are intended to help developers build robust systems. Although an exception handling mechanism provides a basis for structuring source code dealing with unusual situations, little information is available to help guide a ...
Experience report: using RESOLVE/C++ for commercial software
Academic research sometimes suffers from the “ivory tower” problem: ideas that sound good in theory do not necessarily work well in practice. An example of research that potentially could impact practice over the next few years is a novel set of ...
The universe model: an approach for improving the modularity and reliability of concurrent programs
We present the universe model, a new approach to concurrency management that isolates concurrency concerns and represents them in the modular interface of a component. This approach improves program comprehension, module composition, and reliability for ...
Automated test oracles for GUIs
Graphical User Interfaces (GUIs) are critical components of today's software. Because GUIs have different characteristics than traditional software, conventional testing techniques do not apply to GUI software. In previous work, we presented an approach ...
Automated systematic testing for constraint-based interactive services
Constraint-based languages can express in a concise way the complex logic of a new generation of interactive services for applications such as banking or stock trading, that must support multiple types of interfaces for accessing the same data. These ...
Compiler and tool support for debugging object protocols
We describe an extension to the Java programming language that supports static conformance checking and dynamic debugging of object “protocols,” i.e., sequencing constraints on the order in which methods may be called. Our Java protocols have a ...
Integrating active information delivery and reuse repository systems
Although software reuse can improve both the quality and productivity of software development, it will not do so until software developers stop believing that it is not worth their effort to find a component matching their current problem. In addition, ...
Implicit context: easing software evolution and reuse
Software systems should consist of simple, conceptually clean software components interacting along narrow, well-defined paths. All too often, this is not reality: complex components end up interacting for reasons unrelated to the functionality they ...
Bugs in the programs
Security on the Internet is receiving increasing attention as more and more organizations are becoming dependent on the network. The use of the Internet for electronic commerce, government operations, research activities, and entertainment has now ...
Accumulative versioning file system Moraine and its application to metrics environment MAME
It is essential to manage versions of software products created during software development. There are various versioning tools actually used in these days, although most of them require the developers to issue management commands for consistent ...
Coven: brewing better collaboration through software configuration management
Our work focuses on building tools to support collaborative software development. We are building a new programming environment with integrated software configuration management which provides a variety of features to help programming teams coordinate ...
Extracting library-based object-oriented applications
In an increasingly popular model of software distribution, software is developed in one computing environment and deployed in other environments by transfer over the internet. Extraction tools perform a static whole-program analysis to determine unused ...
The impact project (panel session): determining the impact of software engineering research upon practice
The purpose of this panel is to introduce the Impact Project to the community, and to engage the community in a broad ranging discussion of the project's goals, approaches, and methods. Some of the project's early findings and directions will be ...
Composing features and resolving interactions
One of the accepted techniques for developing and maintaining feature-rich applications is to treat each feature as a separate concern. However, most features are not separate concerns because they override and extend the same basic service. That is, “...
A compositional approach to statecharts semantics
Statecharts is a visual language for specifying reactive system behavior. The formalism extends traditional finite-state machines with notions of hierarchy and concurrency, and it is used in many popular software design notations. A large part of the ...
Automating first-order relational logic
An automatic analysis method for first-order logic with sets and relations is described. A first-order formula is translated to a quantifier-free boolean formula, which has a model when the original formula has a model within a given scope (that is, ...
On the formalization of architectural types with process algebras
Architectural styles play an important role in software engineering as they convey codified principles and experience which help the construction of software systems with high levels of efficiency and confidence. We address the problem of formalizing ...
COM revisited: tool-assisted modelling of an architectural framework
Designing architectural frameworks without the aid of formal modeling is error prone. But, unless supported by analysis, formal modeling is prone to its own class of errors, in which formal statements fail to match the designer's intent. A fully ...
Classifying properties: an alternative to the safety-liveness classification
Traditionally, verification properties have been classified as safety or liveness properties. While this taxonomy has an attractive simplicity and is useful for identifying the appropriate analysis algorithm for checking a property, determining whether ...
The shape of things to come?
The future of software engineering isn't what it used to be. The nature of the software we write, the reasons we write it and the way we write it and maintain it have changed rapidly and dramatically over the last few years. And software development is ...