next up previous
Next: 3 Position: Compose software Up: Towards A Model For Previous: 1 Background

2 Problem: Order hampers extensibility

  Current software systems do not allow for easy extension. When definitions of software components (component-definitions) are changed, additionally a lot of using parts in the code (component-uses) have to be modified. This process is cost-intensive: inconsistencies are introduced during the editing, which can be detected only very late in the change process. Instead we would like to have a software extension method which prevents these hidden and almost untrackable errors, and restricts the extension task only to definitions of components.

One of the main problems that hampers software extensibility is that uses of components have a fixed view how to access subcomponents. Often subcomponents can be accessed by ordered enumeration. Such a total ordering implies that component-uses need to be adapted in source if component-definitions are extended. Second, ordering is necessary because subcomponents are anonymous.


Example 1 Pattern matching has also been applied successfully in functional languages and specification languages of compiler generators. However, when specifications become quite huge (in the order of ten-thousands of lines), experience shows[*] that positional pattern matching hampers modular development seriously. When object types in intermediate data structures of compilers are extended by new fields, all pattern matches on the type have to be updated. This is not only annoying, but a severe source of bugs, especially in tools that support wildcard patterns, because with wildcards the number of subpatterns cannot be checked on completeness anymore.

As in CoSy data objects in the repository are composed and aggregated from view specifications, their final layout is only known to the system's compiler and positional pattern matching is not possible. Hence a CoSy tool has to supply pattern match on named subpatterns. Thus the specifications can be extended quite easily: pattern matches on objects only need to be changed, when a new subpattern match is necessary. $\bullet$


next up previous
Next: 3 Position: Compose software Up: Towards A Model For Previous: 1 Background

Uwe Assmann and Rainer Schmidt
Sep. 12 1997