Qualitative Simulation of Software Evolution Processes WESS'02 Eighth Workshop on Empirical Studies of Software Maintenance, Montreal, 2 nd Oct 2002 Neil Smith Juan F. Ramil Computing Department Faculty of Maths and Computing The Open University Walton Hall, Milton Keynes MK7 6AA, U.K. http://mcs.open.ac.uk/ns938 http://mcs.open.ac.uk/jfr46 n.smith@open.ac.uk j.f.ramil@open.ac.uk Introduction Lehman's studies identified the software evolution phenomenon and led to a set of statements termed laws of software evolution [Leh85,Som92,Mdh02]. The term laws was used to highlight that they reflect forces largely independent of the technology used and outside the immediate control of the those implementing the evolution of a system. Over the years the laws have been the basis of a number of process models [Rio77,Leh02a]. The purpose of these models ranges from manpower allocation, such as in [Rio77,Leh02a], to testing the empirical support for the laws, as suggested in [Ram02]. The building of a simulation model from the laws [Rio77, Leh02a] involves refinement of an informal statement into a precisely defined, executable, model. The model builder must determine or assume rigorous relationships. Since the laws only express relationships informally, one needs to consult sources other than the laws (such as local process knowledge) or introduce assumptions to achieve a formal executable model. Moreover, the validation of the quantitative model will require the existence of data at the required level of detail/accuracy. If the focus is on long-term evolution, spanning several years or decades, the availability of precise quantitative behavioural detail cannot be taken for granted. In this regard, the empirical study of long- lived applications bears some resemblance to palaeontology [Ant01]. Qualitative simulation [Kui95] is one of a series of techniques that have been develop in order to enable behavioural modelling at a higher level of abstraction than that of quantitative simulation [For61,Kel99]. In this paper we report initial results of the use of qualitative simulation to execute a simple model derived from a sub-set of the laws. Some preliminary conclusions are derived. We argue that qualitative simulation can be a useful technique for performing empirical studies of the software process and building process simulation models. Qualitative simulation has started to be applied to development projects [Sua02]. We believe that this paper reflects the first use of the technique in the context of long term evolution processes. Qualitative simulation Qualitative reasoning (QR) is motivated by the need to exploit imprecise a priori knowledge about the domain being modelled. QR is useful when relationships that govern behaviour are imprecise, fragmented and incomplete. This is the case in many medical, biological, and design situations and similarly applies to modelling the software evolution process. QR models reflect the real world at an abstract level and require many fewer assumptions during model building than with conventional techniques. Qualitative simulation [Kui95] is one qualitative reasoning technique. Instead of modelling a system as a set of ordinary differential equations (ODEs), the system is represented as a set of qualitative differential equations (QDEs). Each QDE represents a large set of possible ODEs as each M + function represents the set of all monotonically increasing functions. In order to introduce the basics of qualitative simulation we present a simple simulation model of a bathtub. For instance, consider the bathtub model shown in figure 1. Its behaviour, in terms of the flow of water into and out of the bathtub, can be represented as by the ODEs in figure 2a. However, before a tool such as an ODE solver can be used to find the behaviour, the ODEs must be instantiated with particular values for each of the parameters and functions. In contrast, the QDEs in figure 2b can be used as-is by a qualitative simulation engine such as QSIM [Kui95].