Software Technology & Engineering


Update content

Title Software Technology & Engineering
Period 01 / 2007 - unknown
Status Completed
Research number OND1293786
Data Supplier Website IPA


With the increasing size of software systems it becomes mandatory to control the construction process. Increased control is desirable in order to satisfy requirements regarding delivery time, costs, reliability, safety, maintainability, and the like. However, the requirements for software systems are in a continuous flux and it is at the same time essential that the construction process has an evolutionary character. We distinguish three strands of research within IPA: Component and coordination architectures. It is a good idea to base the construction process on a flexible architecture and to build or buy the parts of a system as separate components. Where possible, components are automatically generated. Prototyping, simulation and animation, can give early insights in the behavior of the system under construction. Version and configuration management support the (possibly distributed) construction process. Methods and tools for testing and performance analysis enable the analysis of the functional behavior and the efficiency of the system. This approach is compatible with current trends in research to remove the strict boundaries between operating systems, data bases and networks in order to promote flexibility and reuse. This trend towards evolving dynamic systems results in collections of stand-alone components with clearly described functionality and small interfaces (objects in the sense of object- oriented programming) that can be combined into larger systems in a simple and flexible way. Using this approach, one can first create a simple prototype of a system and gradually replace simple components by more sophisticated ones. This topic is related to Service-oriented Architectures (SOA) and Service-oriented Computing (SoC). Compilers and program generation. The classical example of the automatic generation of executable programs is compiler construction: starting with a formal language definition (consisting of a lexical and context-free syntax, context conditions, and dynamic semantics) and a formal definition of the architecture of the target machine it is possible to generate optimizing compilers. More and more advanced analysis of the formal descriptions is applied (using, for instance, abstract interpretation) to achieve efficient implementations. The ultimate goal is to generate from formal descriptions executable programs that are as fast as handwritten ones. A first illustration of program generation is generating support for so-called domain-specific languages. This concerns languages in a broad variety of application areas (for instance, user-interfaces, definition of financial products, description of production processes or safety requirements) that already contain domain-specific concepts and therefore simplify the development of new applications in that domain. This is strongly related with various approaches to Model-driven Architecture (MDA). This research will typically be carried out with partners from the software industry, major financial institutions, and government. Maintenance and renovation. Directly related to constructing new software systems is the maintenance and renovation of old systems. Given the tremendous economic importance of this topic, many aspects of software analysis and software transformation need to be studied in the context of software renovation. Typical topics are program and system understanding, cluster and concept analysis, object and aspect identification, software metrics, grammarware engineering, information extraction, information visualization, automatic transformation, and renovation factories. The driving force behind software renovation is the strong need to maintain and renovate parts of the software volcano. This implies that software renovation research has to be carried out in close cooperation with industrial partners that can contribute problems that have to be solved. Typical partners come from the software industry, embedded systems, manufacturing, financial institutions and government. Fortunately, we can be confident that progress in areas like compiler and programming language technology and in formal method, will continue to offer the relevant tools. At the same time, the analysis of legacy systems provides the empirical foundation for programming language research. It uncovers the effects, both positive and negative, of years of intensive use of a programming language in the real world. Software renovation research also reveals new challenging problems. Techniques for analysis or code generation that were satisfactory from the perspective of a traditional compiler may no longer be satisfactory from the perspective of interactive program understanding. The gigantic scale of renovation projects presents implementation problems (and opportunities) that may inspire research for many years to come. The biggest challenge is to try to bridge the gap between research aimed at building new software and research aimed at maintaining or renovating old software. It is likely that an integrated approach to both is the best way to proceed. This implies introducing maintenance and renovation considerations much earlier in the software construction process than is usual today. This also implies designing new languages and programming environments that are more amenable to maintenance and renovation.

Related organisations

Related people


D16100 Computer systems, architectures, networks
D16200 Software, algorithms, control systems

Go to page top
Go back to contents
Go back to site navigation