STATEMATE: A Working Environment for the Development of Complex Reactive Systems
IEEE Transactions on Software Engineering
Reactive C: an extension of C to program reactive systems
Software—Practice & Experience
An introduction to LOTOS: learning by examples
Computer Networks and ISDN Systems - Formal description technique (FDT) languages for protocols
The ESTEREL synchronous programming language: design, semantics, implementation
Science of Computer Programming
The mythical man-month (anniversary ed.)
The mythical man-month (anniversary ed.)
Lessons from using basic LOTOS
ICSE '94 Proceedings of the 16th international conference on Software engineering
Modeling reactive systems in Java
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Distributed Feature Composition: A Virtual Architecture for Telecommunications Services
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
A study on exception detection and handling using aspect-oriented programming
Proceedings of the 22nd international conference on Software engineering
Using SPIN for feature interaction analysis—a case study
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
Aspect-oriented programming: Introduction
Communications of the ACM
Using multidimensional separation of concerns to (re)shape evolving software
Communications of the ACM
Composing crosscutting concerns using composition filters
Communications of the ACM
Feature integration using a feature construct
Science of Computer Programming
Symbolic Model Checking
The Java Programming Language
Applying Enterprise Javabeans: Component-Based Development for the J2ee Platform
Applying Enterprise Javabeans: Component-Based Development for the J2ee Platform
JAsCo: an aspect-oriented approach tailored for component based software development
Proceedings of the 2nd international conference on Aspect-oriented software development
Back to the future: a retroactive study of aspect evolution in operating system code
Proceedings of the 2nd international conference on Aspect-oriented software development
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
A LOTOS-Based Development Strategy
FORTE '89 Proceedings of the IFIP TC/WG6.1 Second International Conference on Formal Description Techniques for Distributed Systems and Communication Protocols
Proceedings of the 25th International Conference on Software Engineering
Detecting Feature Interactions in Telecommunication Services with a SAT Solver
PRDC '02 Proceedings of the 2002 Pacific Rim International Symposium on Dependable Computing
Feature interaction in policies
Computer Networks: The International Journal of Computer and Telecommunications Networking - Special issue: Directions in feature interaction research
From statecharts to ESP: programming with events, states and predicates for embedded systems
Proceedings of the 5th ACM international conference on Embedded software
Adding open modules to AspectJ
Proceedings of the 5th international conference on Aspect-oriented software development
Composing design patterns: a scalability study of aspect-oriented programming
Proceedings of the 5th international conference on Aspect-oriented software development
Computer
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Compatibility issues between services supporting networked appliances
IEEE Communications Magazine
The real costs of aspect-oriented programming
IEEE Software
Hi-index | 0.00 |
One of the most difficult tasks in software development is that the programmer must implement a feature going through a laborious and error prone process of modifying the programs of other features. The programs of the different features entangle in the same reusable program units of the programming language, making them also difficult to be verified, maintained and reused. We show that if (C1) the features interact, (C2) they are executed by the same process and (C3) they are implemented in a programming language that requires the programmer to specify execution flows, program entanglement is inevitable and the problem cannot be solved by software design alone. Applications with interacting features are common including those that require exception handling. The feature language extensions (FLX) is a set of programming language constructs designed to enable the programmer to develop interacting features as separate and reusable program modules even though the features interact. The programmer uses FLX to specify non-procedural program units, organize the program units into reusable features and integrate features into executable feature packages. He develops a feature based on a model instead of the code of other features. FLX supports an automatic procedure to detect the interaction condition among features; the programmer then resolve the interaction in a feature package without changing feature code. FLX features and feature packages are reusable; the programmer may package different combinations of them and resolve their interactions differently to meet different user needs. An FLX to Java compiler has been implemented; our experience of using it has been very positive.