ABSTRACT

In a typical software development organization, there are multiple projects under development at any point. There are typically many elements of functionality that are common to many or all of these software systems. Further, many common operations can be shared across a wide family of products. It is clear, for example, that a large number of services provided to a telephone subscriber by a particular model of telephone switch will be the same across most of the telephone switch product line. The customer will, in fact, never even know what type of switch is handling his or her call. Operationally, all the systems are essentially the same for the entire customer base. In this case, the operational specifications for all of the switches have a very large common core of operations and very similar operational models. It is also quite likely that the functional relationship among the various telephone switches also involves substantial communality in the set of functionalities. There are, for example, a rather limited number of ways to poll the set of inactive subscriber lines for new activity.