Abstract: Two problems are fundamental to the difficulty of developing large scale high confidence software: first, software verification relies on costly and unreliable testing; second, adding new features to the software typically requires the programmers to go through a laborious and error prone process of changing existing code. The Feature Language Extensions (FLX) is a set of programming language constructs designed to overcome these two problems. In this talk, we focus on its solution to the second problem.
When features are implemented by changing the code of other features, the programs of these features entangle in the same reusable program unit of the programming language, making them also difficult to be verified, maintained and reused. Most existing effort to combat program entanglement focuses on software architecture. But if (C1) the features interact, (C2) they are executed by the same process and (C3) they are implemented in an existing programming language that requires the programmer to specify execution flows, program entanglement is inevitable. If the features do not interact, their programs do not have to be entangled. Applications with interacting features are common including those that require exception handling. (C1) and (C2) are often dictated by the applications. Changing (C3) is essential to solve the program entanglement problem.
FLX supports nonprocedural programming: using it, the programmer does not need to specify the execution flow of program units. It enables the programmer to develop interacting features as separate and reusable program modules. The programmer uses FLX to specify nonprocedural program units, organize the program units into reusable features and integrate features into executable feature packages. A feature is developed 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.


Biography: Dr Francis Leung is an IEEE Fellow cited for his contributions to operating systems, protocols, and programming methods supporting the development of distributed systems and multimedia communication applications. He received his Ph.D. in Computer Science from the University of California, Berkeley.
Dr Leung has more than 20 years' experience in the telecommunications industry and in large-scale software development. He managed research and development projects, at Motorola and Bell Laboratories, on cellular infrastructure architecture, interactive video server, electronic switching system software, multimedia communication protocols, ATM technology and application oriented languages. He recently joined the faculty of the computer science department of IIT