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