Panel: Impact of Environmental Evolution on Requirements Changes

One reason why systems fail to deliver expected services is that, given certain requirements, the rest of the implementation is not faithful to the stated objectives. There are a number of reasons for this, such as weaknesses in the technologies used, lack of expertise among technical and managerial staff, perceived time pressures, market competitiveness, etc. Much is being done in research and practice to attack this problem, even though progress is slow. Unfortunately, even if this problem can be solved unlikely by a long shot we still confront another problem of major proportion. This is due to the changing environment in which the system is being developed or is meant to be used. Specifically, when a system is being developed, even for a short release cycle, the environmental changes affect the survivability of the system. For example, the requirements implemented may no longer be as adequate at system completion as at the start of development. This inadequacy of the requirements manifests itself in a number of symptoms, such as functional deficiency, performance problems, inter-operability problems, usability problems, higher maintenance costs, etc. Such problems can have minor to severe consequences during system usage. Thus, one must not only ensure building a “correct” system given a specification but must also work at identifying at the earliest point in time, perhaps continuously, how the environment has changed and how this change calls for changes in the current requirements and how to incorporate these changes into the system. One must understand this issue in a scientific manner and develop or use principles, methods, techniques and tools to address this issue. This panel will focus on the management of requirements changes due to environmental evolution. In essence, we “are” aware of requirements changes during system development and that of system decay over time, and so this is not a new revelation. In fact, Lehman’s program classification and laws of software evolution [l], for example, are an important contributor to this awareness. Still, on a day-to-day basis, much development is “inward” focused. When it is time to plan a new release, we identify or select new requirements deemed most appropriate for the next release, and these are then implemented. These “reactive” cycles are repeated until the system is eventually decommissioned. Little thought is given to looking “outwards” on to the environment of the system, how it is changing, and how it is affecting the current requirements. Little methodological [2] and technological work has been done to help us cope with such environmental changes in a “proactive” manner so that we can incorporate the implications of such changes in the existing system design for its longevity. The work in the area of user-centred design is a start but it needs to be generalised to all aspects of system requirements and need not be limited only to human-computer interaction.