A Formal Framework for Requirements Evolution Consiglio Nazionale delle Ricerche Bando n. 203.01.72 Codice n. 03.01.04 Massimo Felici LFCS, School of Informatics, The University of Edinburgh JCMB, The Kings Buildings, Mayfield Road Edinburgh EH9 3JZ, United Kingdom tel. +44-131-6505899 fax. +44-131-6677209 [email protected] February 2003 Abstract This report investigates Requirements Evolution for computer-based systems. Although practitioners and researchers recognise the problem, there has been little research effort in investigating models of Requirements Evolution. This is due to lack of long term evolutionary data and models to analyse them. This report takes into account Requirements Evolution for computer-based systems and investigates models that may enhance our understanding about Requirements Evolution. The collection of identified models provides a basis for a Formal Framework for Requirements Evolution. This report and the work it describes were partially funded by a grant of the Italian National Research Council (CNR), Bando n. 203.01.72, Codice n. 03.01.04, Research Program: A Formal Framework for Requirements Evolution. 1 Acknowledgements I would like to thank Stuart Anderson for his supervision on my work. Moreover I would like to thank the industrial partner that provided the case study. Due to the confidentiality agreement with the industrial partners I can not provide any further information about the case study. Despite this the work still remains valuable and the results are clearly expressed. This work has been conducted within the UK EPSRC (Engineering and Physical Sciences Research Council) DIRC project1 , Interdisciplinary Research Collaboration in Dependabiliy of Computer-based Systems, grant GR/N13999. Finally I would like to thank all the DIRC people and colleagues, who collaborated and provided valuable input in related discussions. This report and the work it describes were partially funded by a grant of the Italian National Research Council (CNR), Bando n. 203.01.72, Codice n. 03.01.04, Research Program: A Formal Framework for Requirements Evolution. Related Publications Parts of this work have been published in the following papers: [22] Massimo Felici, “Taxonomy of Evolution and Dependability”. To appear in Proceedings of the Second International Workshop on Unanticipated Software Evolution, USE 2003, April, 2003, Warsaw, Poland. [4] Stuart Anderson, Massimo Felici, “Quantitative Aspects of Requirements Evolution”. In Proceedings of the 26th Annual International Computer Software and Application Conference, COMPSAC 2002, Oxford, England, IEEE Computer Society, 2002, pp. 27-32. 1 http://www.dirc.org.uk/ c Massimo Felici, 2003 2 [3] Stuart Anderson, Massimo Felici, “Requirements Evolution: From Process to Product Oriented Management”. In Proceedings of the 3rd International Conference on Product Focused Software Profess Improvement, Profes 2001, Kaiserslautern, Germany, September 10-13, 2001, LNCS 2188, c Springer-Verlag 2001, pp. 27-41. [1] Stuart Anderson, Massimo Felici, “Controlling Requirements Evolution: An Avionics Case Study”. In F. Koornneef, M. van der Meulen (Eds.), Computer Safety, Reliability and Security, 19th International Conference, SAFECOMP 2000, Rotterdam, The Netherlands, October 2000, Proceedc ings, LNCS 1943, Springer-Verlag 2000, pp. 361-370. c Massimo Felici, 2003 Contents 1 Introduction 1.1 8 Report Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Related Work 2.1 11 Literature Rationale . . . . . . . . . . . . . . . . . . . . . . . . . 3 An Avionics Case Study 3.1 3.2 3.3 10 13 16 Description of the Case Study . . . . . . . . . . . . . . . . . . . . 16 3.1.1 System Requirements . . . . . . . . . . . . . . . . . . . . 17 3.1.2 Development Process . . . . . . . . . . . . . . . . . . . . . 18 Empirical Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 Requirements Evolution . . . . . . . . . . . . . . . . . . . 22 3.2.2 A Taxonomy of Requirements Evolution . . . . . . . . . . 24 3.2.3 Requirements Maturity Index . . . . . . . . . . . . . . . . 25 3.2.4 Ageing Requirements Maturity . . . . . . . . . . . . . . . 27 3.2.5 Ageing Requirements Evolution: Empirical Evidence . . . 28 3.2.6 Functional Requirements Evolution. . . . . . . . . . . . . 32 3.2.7 Requirements Dependencies . . . . . . . . . . . . . . . . . 37 3.2.8 Visualizing Requirements Evolution . . . . . . . . . . . . 39 Lessons Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3 CONTENTS 4 3.3.1 Requirements Evolution in Practice . . . . . . . . . . . . 43 3.3.2 Requirements Evolution Features . . . . . . . . . . . . . . 44 4 Modelling Requirements Evolution 48 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2 Modelling Requirements Evolution . . . . . . . . . . . . . . . . . 50 4.2.1 Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2.2 Evolutionary Relationships . . . . . . . . . . . . . . . . . 53 4.2.3 Requirements Process . . . . . . . . . . . . . . . . . . . . 56 4.3 Scenarios of Use . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.4 Conclusions and Further Work . . . . . . . . . . . . . . . . . . . 61 5 Taxonomy of Evolution and Dependability 62 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.2 Taxonomy of Evolution . . . . . . . . . . . . . . . . . . . . . . . 64 5.2.1 Software Evolution . . . . . . . . . . . . . . . . . . . . . . 65 5.2.2 Architecture (Design) Evolution . . . . . . . . . . . . . . 68 5.2.3 Requirements Evolution . . . . . . . . . . . . . . . . . . . 69 5.2.4 Computer-based System Evolution . . . . . . . . . . . . . 71 5.2.5 Organization Evolution . . . . . . . . . . . . . . . . . . . 73 5.3 On the Dependability of Evolution . . . . . . . . . . . . . . . . . 73 5.4 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6 Conclusions and Future Work 6.1 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c Massimo Felici, 2003 78 79 List of Tables 3.1 Types of changes identified by inspection of the history of changes. 25 3.2 Requirements dependencies matrix. . . . . . . . . . . . . . . . . . 38 5.1 Dependability perspectives of Evolution. . . . . . . . . . . . . . . 76 5 List of Figures 3.1 The safety-critical software development life cycle of the case study. 19 3.2 Development activities and deliverables. . . . . . . . . . . . . . . 21 3.3 Number of requirements changes per software release. . . . . . . 23 3.4 Total number of requirements per software release. . . . . . . . . 24 3.5 Requirements Maturity Index for each software release. . . . . . 26 3.6 Simulation of the requirements evolution metrics on a sample scenario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7 Average number of requirements changes. . . . . . . . . . . . . . 30 3.8 Requirements Stability Index for each function at the 22nd release of the requirements specification. . . . . . . . . . . . . . . . . . . 3.9 31 Historical Requirements Maturity Index for the entire set of requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.10 Requirements evolution from a functional viewpoint. Distribution of requirements changes over software releases for each function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.11 Cumulative number of requirements changes for each function . . 34 3.12 Cumulative number of requirements changes against the number of requirements for each function. . . . . . . . . . . . . . . . . . . 35 3.13 Classified requirements evolution. . . . . . . . . . . . . . . . . . . 36 6 LIST OF FIGURES 7 3.14 Scatter plot of number of requirements versus number of changes for each software function. . . . . . . . . . . . . . . . . . . . . . . 37 3.15 Histograms of the size of the sets of requirements changes allocated to a single software release. . . . . . . . . . . . . . . . . . . 38 3.16 Graphical work flow representation of the basic operations to changes requirements. . . . . . . . . . . . . . . . . . . . . . . . . 41 3.17 Graphical work flow representation of requirement evolution for F1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.1 Entity Relationship model for Requirements. . . . . . . . . . . . 51 4.2 Different types of relations between entities. . . . . . . . . . . . . 53 4.3 An ideal requirement process. . . . . . . . . . . . . . . . . . . . . 56 4.4 Evolutionary Classification. . . . . . . . . . . . . . . . . . . . . . 58 4.5 Process Calibration. . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.6 Requirements Featuring. . . . . . . . . . . . . . . . . . . . . . . . 59 5.1 Evolutionary space. . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.2 The SHEL model. . . . . . . . . . . . . . . . . . . . . . . . . . . 72 c Massimo Felici, 2003 Chapter 1 Introduction This report considers software requirements evolution within industrial production environments. Any production environment consists of diverse stakeholders interacting through processes focused on particular aspects of software production (e.g., management, designing, testing, etc.). Thus, software is the result of cooperating processes in which human beings are the main actors [42, 87]. Effective cooperation requires stakeholders to understand their different viewpoints on the processes [44, 52, 65, 84, 86, 91]. Stakeholder interactions, cooperations and negotiations result in shifts in the grounds for agreement. These shifts drive requirements evolution. This work takes Requirements Evolution as an unavoidable feature of software production. Classically, Requirements Evolution is seen as an error in the engineering process. By contrast, this report considers Requirements Evolution as an essential feature of good design processes. Stakeholders interact as participants in the processes of a software development environment. These interactions result in changes in stakeholder knowledge. These changes are captured and disseminated over the project as Requirements Evolution [33, 69]. Requirements Evolution triggers a sequence of 8 9 events, which allows changes to propagate throughout the development process. In any development process the definition of requirements is the first phase and it is always crucial for the success of the project (e.g., in terms of cost, timing, customer satisfaction, etc.). As a software project progresses requirements changes become increasingly expensive and risky [9, 10, 11]. Each requirements change affects the success of the project as well as system characteristics (e.g., dependability, safety, reliability, usability, etc.) that are crucial for the system functionalities (e.g., Air Traffic Control, Electronic Engine Control, Medical Systems, Smart Card Systems, etc.). These issues motivate an increasing interest in requirements engineering [8, 18, 83]. The deeper the understanding of stakeholder interaction, the better the control of Requirements Evolution. The problem is how to match business processes, development processes and product features in order to enhance our ability in understanding and controlling Requirements Evolution by monitoring stakeholder interactions through requirements. This work aims to enhance our ability to understand and to control the evolving nature of requirements. In contrast to the process-centred approach taken in current requirements engineering practice [85, 77, 94], we take a product-centred approach. Process issues are captured in the product as it is developed. Our approach originates in the empirical investigation of industrial case studies of evolving products and their requirements [1, 2, 24, 25]. These case studies aim to develop a detailed account of the cooperative processes adopted by stakeholders. The underlying hypothesis of this report is that stakeholder interaction in cooperative processes is a powerful driver of Requirements Evolution. c Massimo Felici, 2003 1.1. REPORT OUTLINE 1.1 10 Report Outline This report is structured as follows. Chapter 2 reviews related work in requirements engineering. The review points out a rationale for a framework that supports the analysis, control, and monitor of Requirements Evolution. Related research and the existence of few empirical studies motivated the investigation of the case study in Chapter 3. The literature rationale has been furthermore taken into account in order to devise the framework outlined in Chapter 4. Chapter 3 shows an empirical investigation of an avionics safety-critical case study drew from industry. The empirical analysis points out evolutionary aspects of requirements as well as practical issues. The case study furthermore stresses the need to enhance our understanding about requirements evolution. Chapter 4 introduces a framework for modelling Requirements Evolution. The framework emphasises three main evolutionary aspects: Data Model, Evolutionary Relationships and Requirements Process. Scenarios of uses show how the modelling framework may be used in practice. Chapter 5 provides a detailed account of evolution of computer-based systems. A taxonomy of evolution emphasises the different evolutionary aspects and their influence on dependability of computer-based systems. Finally chapter 6 draws the conclusions of this work. c Massimo Felici, 2003 Chapter 2 Related Work Current practice in requirements engineering [77, 80, 85, 94] identifies a set of methodologies, tools, processes that aim to specify software (system) requirements. Two big research and practice areas can be identified within requirements engineering, namely, specification and verification1. The former aims to improve our ability in specifying requirements. The latter aims to improve our ability in verifying requirements characteristics (e.g., correctness, completeness, etc.). Everything concerning requirements evolution is usually covered under another area, namely, requirements management. The name itself emphasises process oriented approaches. There has been little attention from the product point of view to devise approaches supporting Requirements Evolution. Most of the work in requirements management focuses on process aspects. Recent research [32, 33, 69, 88] in requirements engineering points out the evolving nature of requirements. The PROTEUS project [33, 69] takes into account requirements evolution from a business viewpoint identifying the origins of changing requirements into stakeholders and business environment. Any specific environ1 Other research areas in requirements engineering are elicitation and analysis, but here we are not referring to these areas. 11 12 ment producing software is characterised by changing requirements, therefore any attempt of stopping changes [32], hence requirements evolution, will fail triggering process and software degradations. The understanding of requirements evolution may be improved by empirical investigations [1, 2, 32, 88] of industrial case studies, which analyse how requirements evolve in practice. Evolution should be considered differently than reuse. Requirements reuse should take into account a trade off between process and product viewpoint [47, 48]. Even the solution of reusing requirements has to be carefully adapted to specific software contexts [47, 48]. The COHERENCE [87] and REAIMS [86, 91] projects encourage the application of hybrid approaches early in the development process even before the specification of requirements. In particular, the integration of different viewpoints seems an effective way of merging different perspectives related to different stakeholders and engineering processes [84, 86, 87]. It comes out that even with hybrid approaches focusing on the process, requirements evolution still remains one of the critical point throughout the software life cycle. The evolving behaviour is not bounded at the requirements level. The FEAST project [53] has empirically identified a set of laws for software evolution. But the relation between requirements evolution and software evolution [6, 53, 43] needs further clarification. Further investigations of this relationship will improve our ability to assess the impact of requirements changes. Moreover, the widely held view that traceability [19, 20, 41, 70] resolves requirements evolution turns out to be insufficient. Requirements traceability [41] has been recognised to be an important aspect to deal with evolution. Traceability represents not only an additional information to be collected (and maintained), but also a strategic policy involving an entire software organisation [70]. Traceability maintenance relies on strict processes and tools, which allow to identify c Massimo Felici, 2003 2.1. LITERATURE RATIONALE 13 relationships between the software organisation and the software product [41]. The combination of traceability with other relationships is needed to enhance our ability in specifying and maintaining requirements. Requirements and Software Evolution has also been considered from a theoretical point of view in [61, 96], but there has been little attention to integrate theoretical work with product-line features. Many recent research projects [16, 17, 63, 73, 74, 75] have progressed the state of the art in Requirements Engineering and the understanding of evolutionary behaviours in the software life cycle. But the current practice in industry requires additional research actions. Past projects point out the need to shift to hybrid process-product oriented methodologies, which shall be defined according the needs identified according to massive empirical investigations of real case studies. 2.1 Literature Rationale This section reviews related literature in requirements engineering providing a rationale for the proposed framework for modelling requirements evolution. The literature review points out issues or practical challenges that may be supported by modelling and analysing requirements evolution. The review in this section does not pretend to be an exhaustive account of research and current practice in requirements engineering. The review focuses on those aspects related to requirements evolution. Hooks and Farry [36] emphasise the need of measuring Requirements Quality. Their initial point is that measuring is the foundation for improvement. They point out that most of the time this view is not recognised by managers, who belive that measuring requirements is costly (in terms of resources) and time consuming. Other managers believe that they can not measure rec Massimo Felici, 2003 2.1. LITERATURE RATIONALE 14 quirements until the project is finished. The main motivation of measuring requirements is to identify opportunity for improvement. They suggest to measure the quality of requirements on data drawn from Change Requests (CRs) and Discrepancy Reports (DRs). These are mainly different names for stimulus for changes into requirements. They emphasise the need of adopting simple measures of requirements statistics derived from the analysis of requirements counting, trends, percentages, as well as classifications. These metrics represent a basis for Changes Analysis. Moreover, they represent a means for comparing projects. A systematic account of measures of requirements provides input to making changes in an Organisation’s Requirements Definition Process. Many issues in driving changes into a requirements definition process are related to the lack in requirements culture within the organisation, lack of empirical evidences, as well as difficulties in converging on a stable set of requirements. A shift into the requirements definition process needs to be supported by engineering tools and analysis models. Wiegers [94] emphases the importance of measuring and classifying requirements changes in order to achieve process improvements. He stresses the role of Requirements Management within process related models (e.g., CMM [66]). Weinberg [92] stresses how the Assumption of Fixed Requirements is a weak point in most of the work in Software Engineering. This mainly invalidates many work based on the implied position, that is, “This is how we would design and build software (if we had unchanging requirements)”. Weinberg’s point is supported by previous studies pointing out that the majority of serious quality problems were related to Requirements. This point has been also recognised by Boehm [9] and has driven the definition of iterative development processes (e.g., The Spiral Model). Weinberg’s process view stresses the existence of Twin Processes. That is, the underlying idea is that there exist two processes: one c Massimo Felici, 2003 2.1. LITERATURE RATIONALE 15 to develop a requirements product; one to develop a software product. The two processes need to be mutually controlled. The basis for mutually controlling the two processes should be driven by empirical evidence. Moreover, the empirical information drawn from mutually controlling two processes should provide a basis for changing the requirements process. Sommerville and Sawyer [85] identify guidelines for Requirements Management. Among the main guidelines for requirements management there are three related activities: Define Change Management Policies; Identify Global System Requirements; Identify Volatile Requirements. The definition of change management policies is really important in order to have a formal mechanism to deal with changes into requirements. Change management policies need to be supported by empirical analyses. The volume of information related to requirements evolution represent a major issues in any change management policy. A systematic methodology to analyse requirements evolution helps to keep track of changes within the process and to assess their impact. Moreover, the analysis of requirements should be addressed to “Identify Global System Requirements” and to “Identify Volatile Requirements”. The former are very expensive to change (e.g., architecture changes) and may involve different stakeholders. The latter may help to design the system so that volatile requirements are isolated from the rest of the system. Having these information may help to plan for changes into requirements and to manage requirements evolution as well. Other Requirements Engineering literature (e.g., [51, 77]) stresses the need to deal with Requirements Evolution. But they also emphasise how even simple instruments like maintaining history of changes may become easily impractical. After a while, the list of change is so huge that it is difficult to realise what is going on without a systematic method to shape angles for analysing evolutionary information. c Massimo Felici, 2003 Chapter 3 An Avionics Case Study This chapter describes the investigation of an avionics safety-critical industrial case study with respect to requirements evolution. The investigation of an industrial case study aims to acquire input from practice in requirements engineering. This should provide a more realist account of requirements evolution. A case study furthermore provides different viewpoints related to the specific domain. This is useful in order to identify domain sensitive information with respect to requirements evolution. 3.1 Description of the Case Study The case study consists of software that satisfies the most stringent level of the standard DO178B [78]. Two main business stakeholders cooperate in the definition of the system requirements. The customer, who provides the general system requirements, and the supplier, who produces the software. The following paragraphs describe features of the case study that are relevant to requirements evolution. 16 3.1. DESCRIPTION OF THE CASE STUDY 3.1.1 17 System Requirements The investigation of the case study takes into account the system software requirements. They have been drawn from the general system requirements provided by the customer. The definition of the software requirements involves both the customer and the supplier in elicitation, specification and negotiation. The supplier is responsible for producing the system software and its compliance with the specified software requirements. The system software requirements fall down in two main categories: Safety Requirements; Functional and Operational Requirements. Safety Requirements. A system safety assessment analyses the system architecture to identify and classify the failure conditions. Safety related requirements are then identified and flowed down to the software and hardware requirements. The allocation of requirements to software or hardware can be unclear at some stage of the development. Thus there are cases in which the allocation is delayed until further information is available correctly to allocate requirements. Functional and Operational Requirements. The customer provides the system requirements that contain information needed to describe the functional and operational software requirements. These include timing and memory constraints and accuracy requirements where applicable. Requirements also contain details of inputs and outputs the software has to handle with special emphasis to those using non-standard data formats. As for the safety requirements if the allocation of requirements to software and hardware is unclear any decision is delayed until further notice. c Massimo Felici, 2003 3.1. DESCRIPTION OF THE CASE STUDY 3.1.2 18 Development Process The software development process of the case study is an instance of the V-model that emphasises relations between the design and coding phases with that of (integration as well as system) testing, verification and validation. The V-mode implies that if problems arise during verification and validation, they are reported and eventually fixed by refinements and corrections in the requirements and design as well as in the implementation. Then the verification and validation phases are repeated again to reassess the software system. The software development process points out the iterative nature of designing and implementing the system. Software Development Process. Figure 3.1 shows the development life cycle of the case study. The bulk of the software development task can be split into two broad areas, that of software design and code and the other of verification. Issues and modifications identified during subsequents development phases (e.g., design, coding and verification) give rise to feedback loops in the life cycle. Reported issues fall down in two main chategories, depending on whether or not they affect the requirments or just the design and implementation of the system. Figure 3.1 shows them as two different error busses, namely, Software Error Bus and Requirements Error Bus. Notice that as software development progresses from requirements to design and code, problems require items further back in the chain to be modified. The size and scope of these changes will be different for each modification and for each project, thus only general guidelines have been defined by the supplier. For example, while coding a part of the software detailed design a problem may be found with the design or an easier implementation may be constructed which requires the original design to be modified. Also modifications, which are due to problems, hardware changes or c Massimo Felici, 2003 3.1. DESCRIPTION OF THE CASE STUDY 19 Software Error Bus Requirements Elicitation System Process Software Design Coding Testing Review Requirements Error Bus Figure 3.1: The safety-critical software development life cycle of the case study. even stakeholders, may be introduced from the requirements at any stage of the software project. As design progresses the partition of software requirements causes an expansion of information through subsequent activities (e.g., testing) and deliverables (e.g., code) that reflect the resulting fragmentation. For example, the coding phase consists of a collection of interrelated implementing phases. The boundaries between these phases may overlap due to unclear process definitions or implementation’s dependencies. Thus, as the code consists of many items it may be possible to begin the integration of some of them before the code for the rest is completed. This is often the case, even on small simple projects. Then it is very difficult to determine the end point of a process and to fix the point in which a project transition occurs from one phase to another. Thus, elements within each phase may be in different progress stages. There is a strict c Massimo Felici, 2003 3.1. DESCRIPTION OF THE CASE STUDY 20 policy for configuration management, which also requires to maintain traceability on the project to ensure that the final code is complete and consistent with its higher level requirements, and the verification has been performed on the correct standard of the final code. Software verification consists of two main elements testing and review analysis. Specific documents produced at the beginning of the project detail the verification activities by identifying the level of verification required at each phase of the software development. Changes affecting certified software require to repeat the entire software verification and the entire software development life cycle in case of modified requirements. The extent to which all the phases comply with the required changes depend on the time elapsed since certification. During the period between flight trials and certification, project documents are consistent with the implemented software and reviews need to comply with occurring changes depending on the size of the modifications. Requirements Documentation. Figure 3.2 shows a representation of the phases of the development process and its deliverables (i.e., system requirements, software functional requirements, etc.). The System Requirements consist of the requirements identified for the whole systems without distinguishing between software and hardware requirements. The System Process translates the System Requirements in the Software Functional Requirements. The Software Functional Requirements consist of a set of documents specifying the requirements for each software function identified for the system. These software functions will then be designed,implemented and integrated by further activities in the development process. Anomalies (e.g., faults, failures, misbehaviours, etc.) encountered during the development are reported by a Fault Report. A Fault report consists of a document reporting all the information useful to the development team in c Massimo Felici, 2003 3.1. DESCRIPTION OF THE CASE STUDY 21 Figure 3.2: Development activities and deliverables. order to assess the possible faults. When a fault has been recognised actions are taken to fix it and the needed changes are allocated to a specific software release. The scope of these actions ranges from requirements to software code. Thus continuous feedback is provided by fault reports. Notice that certification requires that all the changes are traced. Product Line Aspects and Standards. Hardware dependent software re- quirements arise not directly from the system requirements, but from the implementation of those system requirements. This is normally due to the way that the hardware has been designed to meet its requirements as well as an indirect result of safety related requirements. The hardware dependent software requirements characterise the specific product-line in terms of hardware constraints and c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 22 safety requirements. A certification plan for software is the primary means used by the designed authorities to assess whether the software development process proposed is commensurate with the software level proposed. The plan of the case study complies with the specific guidelines in the standard DO-178B [78]. 3.2 Empirical Analysis The case study consists of software for an avionics system. There are 22 successive releases of the software requirements specification each corresponding to a software release. The empirical investigation of the avionics case study consists of analyses of data repositories of requirements evolution. The aim is to identify requirements properties that may enhance our understanding of requirements evolution [1, 2]. The investigation moves from a general viewpoint towards a product-oriented viewpoint. The lack of previous analyses about requirements evolution requires an incremental approach in order to effectively investigate the case study. The step-by-step approach furthermore allows to refine the analysis into subsequent investigations. 3.2.1 Requirements Evolution The initial empirical investigation of the avionics case study consists of analyses of data repositories of requirements evolution [1, 2, 3]. The aim is to identify requirements properties that may enhance our ability in understanding Requirements Evolution. Figure 3.3 shows the total number of requirements changes, i.e., added, deleted and modified requirements, over the 22 software releases1 . 1 There is a correspondence one-to-one between the versions of the requirements specification and the software releases c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 23 Figure 3.3: Number of requirements changes per software release. The trend of requirements changes does not give enough information about evolutionary features, but it emphasises Requirements Evolution. The analysis of requirements evolution points out that requirements changes are not uniformly spread out over the three basic changes (i.e., added, deleted and modified requirements), in fact the total number of requirements constantly increases over the software releases. Figure 3.4 shows the increasing number of requirements forming the specification of the avionics system. The increasing trend is due to the fact that requirements become clearer to the stakeholders, who split complex requirements into smaller and more precisely stated requirements. Another reason is that new requirements arise during the progress of the project, because there are requirements that can not be defined at the beginning due to lack of information and requirements dependencies. Finally, design, implementation and testing activities provide additional feedback to the requirements. Thus there is a predominace of added requirements. c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 24 Figure 3.4: Total number of requirements per software release. 3.2.2 A Taxonomy of Requirements Evolution The inspection of the history of changes points out the specific changes occurring into requirements. Table 3.1 shows a taxonomy of Requirements Evolution in the case study. Changes affect requirements attributes like variables, functionality, explanation, traceability and dependency. These attributes can be collected and represented by requirements templates (e.g., [77]). These attributes are usually embedded within paragraphs specifying requirements. A structured way of representing, collecting and organising requirements attributes may be useful to identify information for controlling and monitoring requirements evolution. The taxonomy of Requirements Evolution may help to identify requirements issues. For instance, if changes overlap two categories, the affected requirements may need to be refined in order to fit in one category. This may identify different evolving paths, e.g., splitting requirements in smaller and more detailed requirements or clarify (i.e., modify) their specifications. This is the case when there are requirements that overlap software and hardware. The decision whether c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 25 to allocate requirements to software or hardware may be delayed till there is a clear understanding of the system. Hence a taxonomy of Requirements Evolution may classify not only an industrial context, but it can be used as a tool during design to identify requirements issues. Table 3.1: Types of changes identified by inspection of the history of changes. Type of Change Add, Delete and Modify requirements Explanation Rewording Traceability Non-compliance Partial compliance Hardware modification Range modification Add, Delete, Rename parameters/variables 3.2.3 Description Requirements are changed due to the specification process maturity and knowledge. The paragraphs that refer to a specific requirement are changed for clarity. The requirements itself does not change, but it is rephrased for clarity. The traceability links to other deliverables are changed. A requirement that is not applicable for a new software package. This is the case when the requirements specification is based on that one of a previous project. A requirement that is applicable partially for a new software package. This is the case when the requirements specification is based on that one of a previous project. Several changes are due to hardware modifications. This type of change applies usually to hardware dependent software requirements. The range of the variables within the scope of a specific requirements is modified. The variables/parameters to which a specific requirement refers can change. Requirements Maturity Index Metrics [26] may be used to quantify some properties monitoring requirements evolution. The standard IEEE 982 [37, 38] suggests a Software Maturity Index to quantify the readiness of a software product. The Software Maturity Index can be used for software requirements, hence a Requirements Maturity Index (RM I) to quantify the readiness of requirements. Equation 3.1 defines the c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 26 RMI2 . RM I = RT − R C . RT (3.1) Figure 3.5 shows the RM I calculated for each software release with respect to the total number of requirements (RT ) and the total number of changes (RC ). The RM I results to be sensitive to the requirements changes occuring release after release, but it does not take into account historical information about changes. Thus whenever there is a substantial number of changes (this may be the case of a new release) the RM I reflects the introduction of changes without capturing information related to the number of releases and the average number of changes introduced over previous releases. The RM I therefore captures stepwise (release after release) changes, hence it is too sensitive to changes introduced into a single release overdegradating its assessment about the readeness of requirements. R equirem ents M aturity Index (R M I) 1,00 RMI 0,95 0,90 0,85 0,80 0 5 10 15 20 S oftw are R eleases Figure 3.5: Requirements Maturity Index for each software release. 2 R is the total number of software requirements in the current release; R T C is the number of software requirements in the current release that are added, deleted or modified from the previous one. c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 3.2.4 27 Ageing Requirements Maturity The empirical analysis of the case study points out that requirements changes are not uniformally distributed over the software releases. There is moreover a different distribution for each function. The behavioural analysis of the RM I on the dataset points out that the RM I is not sensitive to the history of changes. This is because the RM I is defined for two subsequent releases, that is, the RM I does not take into account historical information. For instance, information like how long some changes have been introduced, how many releases there were without changes, etcetera. We propose to refine the RM I by taking into account historical evolutionary information and not just the requirements changes occurred in the next subsequent release. The simplest historical information consists of the Cumulative Number of Requirements Changes (CRC ) and the Average Number of Requirements Changes (ARC ), Eq. 3.2, over the software releases. ARC = CRC . n (3.2) Based on the above information we propose two refinements of the RM I. The first refinement is named Requirements Stability Index (RSI) , Eq. 3.3. Differently from the RM I the RSI takes into account the cumulative number of requirements changes, CRC . Hence RSI is sensitive not just to the total number of requirements, RT , but also to the cumulative number of changes, CRC . The RSI can be also negative in cases where there have been more changes than the total number of requirements, RT . The maximum value of SRI is 1 in the case when there have not been changes since the initial release (this is quite unlikely in practice). RSI = c Massimo Felici, 2003 RT − CRC . RT (3.3) 3.2. EMPIRICAL ANALYSIS 28 The second refinement is named Historical Requirements Maturity Index (HRM I), Eq. 3.4. It is defined on the total number of requirements and the average distribution of requirements changes over the software releases (ARC ). This allows to take into account the age of changes. HRM I = RT − ARC . RT (3.4) The intuition behind the two refinements is that if some changes are introduced into requirements, these changes affect the stability of the requirements. The maturity of the requirements depends on how long some changes have been introduced. That is, if there are not further changes the maturity gradually increases with the delivery of subsequent releases. Figure 3.6 shows the simulation of the above metrics on a sample case. The top, middle and bottom picture of Fig. 3.6 respectively show the requirements changes, the total number of requirements and the comparison of the RM I, RSI and HRM I. The comparison of the three indexes, i.e., RM I, RSI and HRM I, shows clearly the different behaviour with respect to the sample scenario. The HRM I is less sensitive and more stable than the RM I, which is more sensitive to the number of changes occurring release after release. 3.2.5 Ageing Requirements Evolution: Empirical Evidence This section assesses on the case study the proposed quantitative models of Requirements Evolution. Figure 3.7 shows the average number of changes over the software releases. The picture shows clearly an increasing trend. This is particular for the analysed case study, but there could be different distribution according to the specific system, the adopted design process and the system life c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 29 70 60 50 40 30 0 2 6 4 8 10 12 14 16 18 20 x Legend Requirements Changes 900 800 700 600 500 0 2 6 4 8 10 12 14 16 18 20 x Legend Total Number of Requirements 1 0.95 0.9 y 0.85 0.8 0.75 0.7 0 2 4 6 8 10 x Legend 12 14 16 18 20 Requirements Maturity Index (RMI) Requirements Stability Index (RSI) Historical Requirements Maturity Index (HRMI) Figure 3.6: Simulation of the requirements evolution metrics on a sample scenario. cycle. As we would expect the RSI has a decreasing trend. Whereas it is more interesting to analyse the RSI at the last release (i.e., the 22nd release) of the c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 30 Figure 3.7: Average number of requirements changes. case study. Figure 3.8 shows that the RSI captures the stability of each function. Those functions with negative RSI are the most unstable in the system. The RSI can be easily applied to any dataset, because it takes into account not just the number of changes but also the dimension of the dataset considered. Hence the RSI estimates how stable is a set of requirements. Figure 3.9 shows the HRM I for the entire set of requirements. The HRM I smoothly follows the iterations of the development life cycle. That is,decreasing trends are associated to the introduction of major changes (establishing a new major release), which trigger a stabilisation process into subsequent releases during which the HRM I increases again. HRM I is less sensitive that RM I to changes over single releases, but it smoothly captures the requirements process and its stabilization. c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 31 Figure 3.8: Requirements Stability Index for each function at the 22nd release of the requirements specification. Figure 3.9: Historical Requirements Maturity Index for the entire set of requirements. In conclusion this section assesses the proposed metrics, RSI and HRM I. The analysis supports the intuition behind the two metrics. That is, RSI evaluates the overall stability of a set of requirements and HRM I evaluates the c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 32 requirements maturity with respect to the requirements evolution process. This points out that the distribution of the requirements changes is an importan driver for the RSI and the HRM I. This final result relates the Requirements Evolution process to the development process and provides an attribute to control the maturity of requirements. Different distributions imply different trends of RSI and HRM I. 3.2.6 Functional Requirements Evolution. Evolutionary Analysis Viewpoint. Simple trends of requirements evolution provide little information. Previous experience points out that the analysis of requirements evolution from a functional viewpoint can point out further information [4]. For instance, it can identify the stable or changeable parts of requirements. Figure 3.10 shows an example of different functional requirements (i.e., F1-F8) forming the requirements specification of a system3 . The different trends point out how the stability of functional requirements may change over the software life cycle. In other words, stable requirements may become changeable and vice versa. This kind of information can be useful for future similar projects. This can be the case for software product-lines characterised by similar related projects differing in specific variability aspects [12]. Moreover, the analysis of requirements from a functional viewpoint can be useful to identify dependencies between requirements [3]. Dependencies may be used to effectively assess the impact of changes into requirements and to plan evolution. To provide a more detailed analysis our focus moves from the total number of requirements changes to the number of requirements changes in each function that forms the software functional requirements. The software functional 3 The picture in the top-left corner of Fig. 3.10 shows the total number of changes for the whole requirements specification. c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 33 Figure 3.10: Requirements evolution from a functional viewpoint. Distribution of requirements changes over software releases for each function. requirements fall into 8 functions for which separate documents are maintained. Figure 3.11 shows the trend of the cumulative number of requirements changes for each function. Figure 3.11 points out that the likelihood that changes can occur into specific functions is not constant over the software releases. An outcome of this functional analysis is that the function F1 is not likely to change, therefore it could be considered a stable part of the system. This aspect becomes interesting, because the specific function describes the hardware architecture of the system onto which the software architecture is mapped. It seems furthermore that functions that are likely to change during early software releases change less during later releases, and vice versa. This aspect helps to relate requirements changes with the software life cycle. The different occurrences of requirements changes throughout the life cycle points out some dependencies among functional requirements. Understanding these dependencies may c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 34 improve the requirements process. Figure 3.11: Cumulative number of requirements changes for each function Figure 3.12 shows the scatter plot of number of cumulative requirements changes against the size of each fucntion (at the 22nd release) in terms of number of requirements. Figure 3.12 sows that there exist a linear relationship between the number of changes occuring into a requirements specification and its size. But there exist outliers such as, e.g., F2, F5 and F8.Figure 3.12 moreover points out the intuitive interpretation that the functions above the diagonal dividing the plan are more unstable (in terms of requirements changes) than that ones under the diagonal. In particular F1 turns to be a stable part of the system. This is interesting, because the specific function describes the hardware architecture of the system onto which the software architecture is mapped. c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 35 Figure 3.12: Cumulative number of requirements changes against the number of requirements for each function. The analysis then investigates whether there are differencies among fanctions according to the distribution of changes over the software releases. Figure 3.10 shows the different distribution of requirements changes4 for all functions. This representation of requirements changes points out how different can be the distrubution for each function. The different distributions point out some interesting intuitive properties. Firstly the likelihood that changes can occur into specific functions is not constant over the software releases. Finally it seems that functions that are likely to change during early software releases change less during later releases, and vice versa. This aspect helps to relate requirements changes to the software life cycle. The different occurrences of requirements changes throughout the life cycle points out some dependencies among functional requirements. Understanding these dependencies may improve the requirements process by effective changes allocation and impact analysis. 4 Requirements changes are expressed in percetage of the total number of changes occured in the corresponding release c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 36 Product Perspectives into Requirements Evolution. Empirical results point out that requirements evolution may be further understood if analysed from a combination of a product viewpoint together with a process viewpoint. Figure 3.13, for instance, shows a requirements evolution into which changes fall down into two major categories: changes that have the authority to modify delivered software; changes that are unauthorised to modify delivered software. The latter consists of changes that affect associated functionalities, but only documentation, traceability or non delivered code. Implementation may trigger this type of change that usually adapts the documentation to the delivered code. Figure 3.13: Classified requirements evolution. The proportion between the number of requirements and the number of changes occurring into requirements specifications provides an intuitive notion of stability. Figure 3.14 shows a scatter plot of requirements size (in terms of number of requirements) versus requirements evolution (in terms of number of requirements changes). Intuitively, the functions below the mid line (i.e., c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 37 number of requirements equalise number of changes) are more stable than the functions above the line. Figure 3.14: Scatter plot of number of requirements versus number of changes for each software function. It is furthermore interesting to look at the size of the sets of requirements changes allocated for each software releases. Figure 3.15 shows the histograms respectively for the set of changes affecting and non affecting delivered code. The histograms provide information about the probability of the number of changes occurring (or allocated) to a single release. 3.2.7 Requirements Dependencies The analysis of requirements evolution per software function points out some dependencies between functions. We have evaluated the dependencies between software functions by the number of common fault reports arose during the software life cycle. The dependencies between two functions have been quantified by the number of fault reports overlapping requirements changes. The underlying hypothesis implies that if two functions are modified due to the same fault c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 38 b. Changes not having permission to change delivered code. a. Changes having permission to change delivered code. Figure 3.15: Histograms of the size of the sets of requirements changes allocated to a single software release. report, then there are some dependencies between them. Table 3.2 shows the dependencies matrix that has been obtained according the above assumption. Table 3.2: Requirements dependencies matrix. F1 F1 F2 2 F3 F4 3 F5 1 F6 F7 F8 1 F2 3 1 4 4 F3 1 2 3 F4 6 1 1 5 F5 1 1 9 F6 1 2 F7 F8 We take the number of fault reports in common between two functions as Dependency Index between the corresponding requirements. For example, the Dependency Index between the functions F4 and F8 is 5, which means that c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 39 there have been 5 fault reports in common between F4 and F8. The blank entries in Tab. 3.2 mean that there are not common fault reports between the corresponding crossing functions. The requirements dependencies matrix, Tab. 3.2, gives a practical tool to assess to which extent software functional requirements depend each other. Moreover it identifies those particular fault reports that trigger changes into different functions. Thus an analysis of such identified fault reports may give important information about requirements. In order to provide feedback into the software organisation the matrix may be analysed to assess the ability of the organisation in identifying software functional requirements for a system or a series of systems for a particular product-line. A tool as the dependencies matrix supports software product-line engineering [93]. Future refinements over product-line projects may identify an effective set of modular system functions such that to reduce disturbing dependencies (e.g., Dependency Index equals to 1). Moreover the Dependency Index may be used to refine impact changes estimates based on traceability. 3.2.8 Visualizing Requirements Evolution The initial investigation provides input to model Requirements Evolution. This section introduces our empirical model of Requirements Evolution and its process. Requirements Evolution is modelled according to three different aspects aiming to classify, structure and quantify evolutionary features. The backward reconstruction of the history of changes identify a structured work flow of Requirements Evolution. This structure introduces a graphical model that has been identified by reasoning on data repository of the case study and by inspecting the requirements documents and their respective history of changes. The inspections of the requirements documents and history of changes aimed to reconstruct how the documents have been modified through c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 40 the software life cycle by requirements changes. The graphical model shows a representation of Requirements Evolution in terms of requirements changes (i.e., added, deleted and modified requirements) together with a software life cycle perspective. Using a graphical representation is effective at presenting the overall picture of Requirements Evolution. The diagrammatic representation has furthermore a more intuitive structure than any text-based representation and this structure can be used to reflect how requirements are engineered through the entire life cycle. Finally the graphical representation may allow to easily identify similarities over functions and product lines. Requirements Evolution can be expressed in terms of changes allocated to requirements releases. Before representing Requirements Evolution in terms of changes, we need to define how requirements are represented. They are organised in a document or a collection of documents (one per each function) in which all requirements are uniquely identified by a numeric id. Thus a requirements document can be considered as a collection of sets of uniquely identified requirements. Among the set of requirements there is a partial order defined by the numeric id. There are three basic operations to change requirements. Figure 3.16 shows a graphical work flow representation of the three operations, which are define in what follows. Add: Add[n] introduces a subset of n new contiguous requirements ordered according to their index into the current requirements document. Delete: Del[n] deletes a subset of n contiguous requirements from the current requirements document. Modify: M od[n] modifies a subset of n contiguous requirements into the current requirements document. Here n represents the size of the subset changed, whereas the specific changed requirements are identified by the pointed subset in the middle of the three. The c Massimo Felici, 2003 3.2. EMPIRICAL ANALYSIS 41 subset of m modified requirements is not identified by the graphical representation because the Mod operation does not actually change the structure of the requirements document. Notice that even if the graphical representation in Fig. 3.16 is not formal, it implies some syntax and semantic, which are expressed by the different shapes of the trees, the different edges and the order of the leafs (i.e., subsets of requirements). Figure 3.16: Graphical work flow representation of the basic operations to changes requirements. At this stage the graphical model aims just to intuitively capture the Requirements Evolution Process and its complexity. Figure 3.17 shows the representation of the work flow evolution for the function F1. The shape (even without detailed information) of the requirement evolution captures the complexity of the Requirements Evolution process. The order of the operations is c Massimo Felici, 2003 3.3. LESSONS LEARNED 42 left to right, hence the most left node is the initial set of requirements. The initial set of requirements is then modified by a sequence of basic operations (i.e., Add, Del, Mod). Requirements changes are allocated over different software releases. The graphical representation of requirement evolution for the other functions in the case study is more complex that that one, emphasising how the structured work flow can easily capture the Requirements Evolution process. It captures how requirements are changed throughout the software life cycle. Figure 3.17: Graphical work flow representation of requirement evolution for F1. 3.3 Lessons Learned The case study provides us with an experience in investigating requirements evolution in industrial contexts. On the one hand we faced the practical problem of collecting evolutionary information. On the other hand we analysed the evolutionary features of requirements. These two main points re discussed in c Massimo Felici, 2003 3.3. LESSONS LEARNED 43 what follows. 3.3.1 Requirements Evolution in Practice We faced some practical issues in the investigation of the case study. The issues are not specific to the case study. Similar issues may arise in other case studies and in different industrial contexts. The investigation relies on the case study’s activities related to the management of requirements changes. The main issues are discussed as follows. Data Collection. Building a data repository of evolutionary data is a difficult task. There are three main critical aspects that affect evolutionary data collections. From the process viewpoint, the collection of data should be an activity well integrated into the development process. otherwise it will just increase the workload throughout the development process. A non-well integrated data collection will result not just in increased workload, but it will frustrate people who are supposed to provide information. Moreover, a non-well-integrated data collection will be dropped under the pressure of forthcoming deadlines. This will result in a non-updated data repository, which will be reconstructed late in the development process. Thus the feedback that evolutionary information may have provided was unavailable when needed. Data Organization. The organization of evolutionary data is another aspect concerning an effective collection of evolutionary data. That is, the way data are organised affects our ability to effectivelly analyse and identify evolutionary features. Moreover, it will require further effort in order to understand any emergent information. c Massimo Felici, 2003 3.3. LESSONS LEARNED 44 Data Goals. Data collection should be organised having specific goals. Before collecting any data we should answer few questions: Why are data collected? Is any data analysis foreseen? What are the expected outcomes? Who will review/read/use any (emergent) information? Answering these questions will help in order to organise an effective data repository. For instance, if your intention is to collect requirements changes by a simple history of changes in order to show certification authorities that you have been keeping tracks of requirements changes, you should expect any feedback into the development process in order to improve your changes management activities. This is because a simple history of changes may be suitable to show evidence of your data collection activities, but it is not effective in order to provide feedback in the development process by identifying evolutionary relationships. Enhanced Visibility. The above issues related to requirements evolution affect project visibility. Little coordination between different organizational layers may reduce the overall visibility within the project. Furthermore this will reduce our ability to assess the impact of changes (or to perform any sensitivity analysis). We need to tackle the above issues in order to enhance our evolutionary visibility and to identify a trade-off between process and product managements. The former is useful to standardise computer-based systems development, but it may reduce product visibility. The latter aims to enhance product features into development processes, but it may reduce process repeatability across different computer-based systems. 3.3.2 Requirements Evolution Features This section summarises the outcomes of the empirical analysis of the case study with respect to requirements evolution. The featured of requirements evolution are strictly related to the specific case study. On the other hand c Massimo Felici, 2003 3.3. LESSONS LEARNED 45 it is possible to identify similar features in other case studies across different industrial contexts. The generality of the empirical investigation allows easily to replicate the analysis. The main requirements evolution features are discussed as follows. Quantitative Requirements Evolution. The quantification of requirements evolution requires a well-defined standard policy to classifying requirements changes. The simplest types classify requirements changes according to the performed operations in the requirements specification documents. For instance, add, delete and modify requirements are tree simple types of changes, which respectively identify the activities of adding new requirements into the requirements specification, deleting requirements from the requirements specification and modifying requirements in the requirements specification. The classification of type of change should be supported by traceability information, which link requests of changes with the requirements changes. The combination of type of changes together with traceability information allow to quantify the evolution of requirements specification. The combination of traceability and type of change may easily quantify the impact of changes. Although this assessment is quite important, it lacks information about the criticality of changes and history of changes. Further refinements of the impact of changes should take into account historical evolutionary information and requirements criticality. Taxonomy of Requirements Evolution. The analysis of the history of changes points out a taxonomy of requirements changes. It is possible to classify requirements changes. The resulting taxonomy may characterise not only the specific case study, but also the specific industrial context. From the process viewpoint, a taxonomy may support the introduction of standard practice across development environments. One of the main practical issues in keeping c Massimo Felici, 2003 3.3. LESSONS LEARNED 46 tracks of changes is to uniformly identify them. Thus a taxonomy will help to reduce the biases between different persons with different level of experiences and different expertise. Hence the construction of taxonomy of requirements evolution supports the process of monitoring requirements evolution towards the standardisation of the work practice. (Ageing) Requirements Maturity. Any simple account of the maturity of requirements may be misleading. Our experience shows that any estimation (e.g., by the Requirements Maturity Index) of the requirements maturity shold be carefully evaluated case by case. Any quantitative mesure of the requirements maturity should be interpreted against the requirements management process (e.g., priorization of requirements changes, certification constraints) and decision policy (e.g., allocation of requirements changes) in the specific case. On the other hand the concept of “maturity” can be misleading and misunderstanding for requirements. Future research should further investigate how to distinguish berween different interpretations of requirements maturities. Further investifagions shuld address the link bitween stability, volatility and maturity. This is because requirements volatility may be prefered than requirements stability some times. Another aspect is that Requirements Maturity should take into account is the age of requirements. The elapsed time since requirements were introduced (or modified) may be an important factor to refine any assessment of the maturity of requirements. This kind of refinement allows better to link requirements with the management process and more in general with the system life cycle. Functional Requirements Evolution. The empirical investigation of the case study points out that it is possible to identify change-prone requirents from a functional viewpoint. The analysis emphasises the distribution of requirements c Massimo Felici, 2003 3.3. LESSONS LEARNED 47 changes over the different function requirements and and over the entire life cycle. Changes differently occur into functional requirements. A fanctional viewpoint then identifies the stable and the volatile parts of the requirements. This kind of information may be useful in order to identify reusable requirements (e.g., stable requirements of the system architecture) as well as to devise product lines ranging around variability points. The functional viewpoint of requirements points out dependencies among functional requirements. The analysis of functional dependencies may be useful in order to refine the assessment of the impact of changes. On the other hand requirements dependencies may be further refined throughout subsequent releases or similar projects. Visualising Requirements Evolution. The case study points out our limited ability to visualise evolutionary requirements as well as requirements evolution. Our preliminary attempt of visualising requirements evolution stresses that any visual representation should take into account evolutionary process features (e.g., releases, life cycle perspectives, etc.) as well as product features (e.g., type of requirements changes). Any visual representation of requirements evolution should furthermore capture process complexity and similarity. That is, a requirement is that a visual representation should enhance our ability to assess the complexity of any evolutionary process and to compare different evolutionary processes. These features may allow to identify new insights in requirements evolution. c Massimo Felici, 2003 Chapter 4 Modelling Requirements Evolution Requirements evolution of computer-based system has been little investigated and still remains challenging for research and practice in requirements engineering. This is mainly due to the lack of methodologies and tools supporting the analysis of requirements evolution. On the other hand the analysis and collection of evolutionary data covering (short as well as long) life cycles of computer-based systems are difficult tasks within evolving industrial settings. This chapter introduces a framework for modelling evolutionary information about requirements. The framework has been drawn from previous industrial collaborations. Scenarios of use describe how the framework may be used in practice to further understand and support requirements evolution. 48 4.1. INTRODUCTION 4.1 49 Introduction Requirements evolution is an inevitable aspect of computer-based systems. Requirements evolve due to stakeholders as well as technical feedback (e.g., feedback from testing). Despite the recognised phenomenon requirements evolution has been little investigated. This is partially due to the lack of methodologies and tools to acquire further understanding about requirements evolution. Thus understanding requirements evolution becomes an expensive process that most of the times industry can not afford due to lack of resources (in terms of man-power). In spite of lack of methodologies and tools, previous investigations [1, 2, 3, 4, 33, 69, 88] of requirements evolution have been successfully conducted. Hence the provision of methodologies and tools for requirements evolution may identify new insights in requirements engineering. This chapter introduces a framework for modelling evolutionary information about requirements. The framework is three-fold: • a data model for requirements • a classification scheme to identify evolutionary relationships about requirements • a general requirements process. The framework combines a product view of requirements together with a process view. This paper explains the devised framework, which has been drawn and motivated by previous industrial collaborations. The review of related literature and the description of scenarios of use identify how the framework may help in practice. c Massimo Felici, 2003 4.2. MODELLING REQUIREMENTS EVOLUTION 4.2 50 Modelling Requirements Evolution This section introduces requirements related models motivated by the empirical rationale of the previous section. The models take into account three main viewpoints. The first one provides a data model for requirements. The second one emphasises relationships related to the evolution of requirements. The third one points out a process related model providing live cycle perspectives to the other two models. 4.2.1 Data Model Figure 4.1 shows a data model for requirements. The data model aims to clarify some features that may characterise requirements evolution. Moreover, it is useful to organise data collection. The data model is not so different from other data models that can be drawn from Requirements Management Tools (e.g., Telelogic DOORS and Rational RequisitePro). But differently, it stresses the classification of requirements evolution in terms of changes and taxonomy. This section describes the main entities and relationships into the data model. Requirements Change (RC). Requirements Change consists of the requests of changes that have arisen in the project. The requests of changes will usually be assessed and approved for implementation. Thus the entire set of request of change can be refined into three subsets: • the subset of request of changes, rc, approved for implementation into further releases • the subset of request of changes, rr, rejected • the subset of request of changes, rv, that are still pending and that may be eventually allocated to further releases (or rejected). c Massimo Felici, 2003 4.2. MODELLING REQUIREMENTS EVOLUTION 51 Figure 4.1: Entity Relationship model for Requirements. Requirements changes can be classified according the operations (i.e., Type of Change: Added, Deleted or Modified) that change the requirements document and the classification of changes (i.e., Taxonomy of Change). Type of Change represents the type of operation that a requirements change implements. The three basic types are: Add, Delete and Modify. Taxonomy of Change classifies the requests of changes according to context oriented type of change. The previous section gives an example of Taxonomy of Change. Changes Rationale. The rationale for changes represents the justification of requests of changes. That is, changes rationale gives rise to requests of changes. In mature environment, where there is a specified process managing changes, a changes rationale may consist of a structured document reporting anomalies or c Massimo Felici, 2003 4.2. MODELLING REQUIREMENTS EVOLUTION 52 requests drawn from stakeholders. History of Change. The History of Change consists of all changes approved for implementation in subsequent releases of the Requirements Specification. Requirements Specification. The specification consists of all active requirements. Requirements. Requirements consist of all requirements identified for the ongoing system. These requirements then may be allocated (activated) into a Requirements Specification. Some requirements may be withdrawn by deleting them from a Requirements specification. Requirements become active when they are added to a Requirements Specification. Other requirements identified for the system may stay dormant until they are approved for inclusion into a Requirements Specification. Requirements Attributes identify specific items that can be specified for each requirement (e.g., variables, functionality, explanation, traceability and dependency). Requirements Viewpoints specify angles from which to analyse requirements and their evolution (e.g. [69, 85]. Type of Requirement classifies requirements according to specific features (e.g., stable or changeable [69]). Figure 4.2 shows the different types of relations between data entities [51]. For instance, in Fig. 4.1, the History of Change has one or more Requirements Specification. Each Requirements Specification has zero or one History of Change. The most general relationship is that one many-to-many that exists between Changes Rationale and Requirements Changes as well as between Requirements Specification and Requirements. c Massimo Felici, 2003 4.2. MODELLING REQUIREMENTS EVOLUTION 53 Figure 4.2: Different types of relations between entities. 4.2.2 Evolutionary Relationships The data model, Fig. 4.1, identifies the direct binary relationships between the different entities into the model. The model provides a framework to identify further relationships. This section introduces a scheme to identify further relationships across the data model. The aim is to classify relationships in order to define a framework for the analysis of evolutionary features of requirements. The framework supports a systematic analysis of requirements evolution. That is, the framework provides a way to monitor and understand evolutionary features of requirements. The relationships are classified according to their arity and type of involved items. c Massimo Felici, 2003 4.2. MODELLING REQUIREMENTS EVOLUTION 54 Binary Relationship. The binary relationships aim to understand how different items into the data model relate to each other. There are three main types of relationships. Size - Type. The classification of measurable features according to types can provide further information to understand requirements and requirements processes. For instance, Fig. 3.13 gives an example of this type of relationship. The number of requirements changes (i.e., Size) are classified according to the type of change (i.e., Type). In the specific example, requirements changes are classified in two major types: changes that have permission to modify delivered code; and changes that do not have permission to modify delivered code. The latter are changes that usually modify documentations, traceability information and non delivered code. Figure 3.13 points out that this second type of requirements change may be triggered by implementation feedback. That is, after the code is delivered the documentation is updated to comply with the actual implementation. Size - Size. This type of analysis aims to identify relationships between different measures (of size) for the same entity. For instance, Fig. 3.14 analyses the relationship between the number of requirements (i.e., Size) forming a functional specification and the number of requirements changes (i.e., Size) occurred into the same functional specification. Figure 3.14 points out that in general there is a linear relationship between the number of requirements and the number of requirements changes occurring. Moreover, it points out outliers that may represent specific cases or “issues”. The specific relationship also identifies an intuitive notion of Requirements Stability, that is, functional specifications below the midline are stable and the ones above the midline are unstable or changeable. The continuous monitoring of this relationship during the entire life cycle may identify the c Massimo Felici, 2003 4.2. MODELLING REQUIREMENTS EVOLUTION 55 progress for each functional specification. This will help to see patterns for functional specifications evolving from a stable status to an unstable one and how quickly release after release a functional specification may become unstable. Type - Type. This kind of relationship may be seen as a combination of two Size-Type relationships. For instance, the classification of requirements changes according to a Taxonomy of change may give further information if combined with a classification of changes occurring into delivered code. That is, types of requirements changes mat be related to types of software changes. This information may be useful to filter particular types of requirements changes in order to reduce corresponding types of changes into software. 3-arity Relationship. The analysis of three different related items may point out 3-arity Relationships. For instance, Fig. 3.15 show the histograms of the size of sets of changes allocated to a single release and classified according to the types of requirements highlighted in Fig. 3.13. The histograms allow to derive the distributions (or probability) of the size of set of requirements changes. This information may be used for future prediction assuming the observed distribution (e.g., Gaussian). Figure 3.15 provides an example of how 3-arity relationship obtained analysing evolutionary features drawn from the analysis of items into the data model, Fig. 4.1. 4-arity Relationship. The need for 4-arity relationships is questionable. The systematic analysis of simple relationships may point out how to combine them in order to obtain the most complex ones. The underlying idea is to devise a constructive framework of relationships. This may enhance our ability to analyse requirements evolution. c Massimo Felici, 2003 4.2. MODELLING REQUIREMENTS EVOLUTION 4.2.3 56 Requirements Process This section stresses a life cycle perspective. The emphasis is on the continuous monitoring of the information drawn from the modelling introduced in the previous sections. Figure 4.3 shows an ideal requirements process. A sequence of processes, P0 , P1 , . . ., (representing iterations of phases of any development process, e.g., [45]) modifies the Requirements Specification, RSi , by injecting set of changes rci selected from the set of proposed changes RCi−1 . ... ? P2 6 ... RSn - ? P1 6 P0 RS1 rc 2 rc 1 - RS1 rv rv 2 1 - - RC1 RC2 ... RCn Figure 4.3: An ideal requirement process. It is easy to represent Requirements Specification and Requirements Change as sets. Hence, the following definitions apply. Definition 1 The size of set of requirements changes is monotonically increasing, that is, RC1 ⊆ RC2 ⊆ . . . ⊆ RCn = [ rv i . i Definition 2 The changes allocated to subsequent requirements specifications is a subset of the proposed requirements changes, that is, [ i c Massimo Felici, 2003 rci ⊆ [ i rv i 4.3. SCENARIOS OF USE 57 Definition 3 The set of stable requirements is the intersection of the subsequent requirements specifications, that is, Stable Requirements = \ RS i i The above definitions and the ideal requirements process aim to identify specific milestones during the requirements process in which to assess the relationships identified in the previous sections. The underlying idea is to provide a description of the requirements process that may allow reasoning on specific properties (e.g., identifying stable requirements). The specification of the requirements process is really simple at this stage. Future work aims to devise a richer description of the requirements process than that one this section introduces. 4.3 Scenarios of Use This section describes scenarios of use for the modelling introduced in the previous section. The scenarios are drawn from industrial collaborations and experience. The framework can be used in three different ways: Evolutionary Classification, Process Calibration and Requirements Featuring. Evolutionary Classification. Figure 4.4 shows the information flow that combines the knowledge acquired by collecting evolutionary information about requirements together with the process information in order to identify evolutionary features of requirements. Process Calibration. Figure 4.5 shows the information flow that combines the knowledge acquired collecting evolutionary information about requirements together with the characterisation of requirements evolution in order to calibrate the requirements process. c Massimo Felici, 2003 4.3. SCENARIOS OF USE 58 Figure 4.4: Evolutionary Classification. Figure 4.5: Process Calibration. Requirements Featuring. Figure 4.6 shows the information flow that combines the characterisation of requirements evolution together with the process information in order to analyse and characterise evolving requirements. The remaining of this section explains the three scenarios by means of examples drew from industry. Subsequent Releases. The first scenario, Fig. 4.4, applies to those cases in which a product is developed over subsequent releases. Practice shows that this is always the case. The evolutionary information collected in previous projects c Massimo Felici, 2003 4.3. SCENARIOS OF USE 59 Figure 4.6: Requirements Featuring. together with a selected requirements process (distributing changes over subsequent releases) may provide a prediction of the expected evolutionary relationships in ongoing similar projects. That is, previous experience may be useful for future projects developing a similar system (e.g., for the same customer). The evolutionary prediction may allow to effectively improve the requirements process in order to reduce rework and the risk of faults introduction. Moreover, having information like “Requirements Dependencies” will allow to better plan subsequent development phases, e.g., coding and testing. Evolutionary information will furthermore be useful to meet stringent certification constraints requiring changes management. Product Line Establishment. Evolutionary information may be useful in establishing a new product line. For instance, let us assume that there is a company producing similar systems (e.g., smart card systems) having to some extent different functionalities. In order to reduce the production cost of each system it may be useful to establish a product line. The new product line will cover a set of similar systems having a common core set of requirements (e.g., architecture requirements) and differencing each other by other requirements (e.g., interface requirements). In order to establish the requirements for the new c Massimo Felici, 2003 4.3. SCENARIOS OF USE 60 product line it is necessary to know some information about the nature of the requirements themselves. Information about the stability of the requirements may help to identify the core set of requirements characterising the new product line. Whereas the changeable requirements will identify variability requirements of the new product line. Hence, requirements for a specific system of the product line will be derived by merging the core requirements of the product line together with requirements specifying the variability ones. Furthermore, evolutionary information together with requirements classifications may help to identify (or calibrate) a requirements process for the new product line (Fig. 4.5). Functional Portfolio. Companies producing related (or similar) systems may want to improve their requirements process by reusing requirements in order to reduce the effort needed in specifying them. Moreover, system requirements often represent the knowledge acquired by many years of experience in producing system within specific industrial contexts (e.g., avionics, automotive, telecommunication, etc). Classifying requirements according to evolutionary information (and the requirements process), Fig. 4.6, may be a corporate strategy to systematically reuse this knowledge into future projects. The knowledge acquired by classifying requirements and monitoring the classification itself may help to maximise requirements reuse. For instance, evolutionary information about requirements may help to clarify and/or identify situation in which, e.g., a new customer has new requirements (i.e., new for the organisation); a new customer has old requirements (i.e., already implemented in previous projects); an old customer has old requirements; or and old customer has new requirements. Being able to identify these cases is important to improve requirement reuse. Moreover, this information may be used to refine feasibility estimation at the beginning of new projects. c Massimo Felici, 2003 4.4. CONCLUSIONS AND FURTHER WORK 4.4 61 Conclusions and Further Work This chapter introduces a framework for modelling evolutionary information about requirements. The framework supports the understanding of requirements evolution for computer-based systems. Scenarios drew from industry help to understand how it may be used in practice. The empirical rationale for the framework and the description of the framework can be already beneficial to conduct related investigations within industrial contexts. Further work aims to: refine the framework by selecting specific metrics to estimate evolutionary features of requirements [4]; enrich the process specification for the framework in order to allow reasoning on evolutionary features of requirements; devise a tool implementing the framework; conduct validation experiments within industrial case studies; build a repository of examples for the framework. c Massimo Felici, 2003 Chapter 5 Taxonomy of Evolution and Dependability Evolution is one of the major issues affecting system dependability as well as engineering activities and environments. The most common understanding considers evolution as a phenomenon that needs to be avoided. By contrast this report takes into account evolution as a necessary feature of computer-based systems. This chapter reviews a taxonomy of evolution identifying a conceptual framework to analyse evolutionary phenomena of computer-based systems as well as models of evolutions and their limits. The taxonomy of evolution points out different dependability aspects of computer-based systems. In conclusion, this chapter provides a conceptual framework to analyse evolution and its influence on the dependability of computer-based systems. 62 5.1. INTRODUCTION 5.1 63 Introduction Computer-based systems are evolving citizens of the modern electronic mediated society. They are continuously (re)designed and (re)deployed in order to capture environmental evolution. Development life cycles in software system engineering recognise the need to capture evolution by iterative processes. Evolution of computer-based systems is a twofold concept. On the one hand evolution is an inevitable and a needed aspect of computer-based systems. On the other hand the degradation of the dependability of computer-based systems may be due to evolution and it may cause, in the worst case, catastrophic failures [56, 67, 89]. The relationship between Evolution and Dependability is still vaguely understood. This is because evolution and dependability are both complex concepts. There could be many different definitions of evolution that apply to computerbased systems. Evolution can occur from the early stages of a system (e.g., requirements evolution) to its deployment, use and decommission (e.g., corrective or perfective maintenance). The existence of different (definitions of) evolutions is often misunderstanding and it gives rise to practical issues as well. Dependability is defined as that property of a computer system such that reliance can justifiably be placed on the service it delivers [49, 50]. With respect to the dependability of computer-based systems evolution may be a means to increase it. On the other hand evolution is also a major source of undependability for computer-based systems. This chapter takes account of the evolution of computer-based systems. Section 2 reviews a taxonomy of evolution identifying a conceptual framework to analyse different evolutionary phenomena of computer-based systems. Section 3 points out how the evolutionary phenomena differently relate to the dependability of computer-based systems. In conclusion, this chapter provides a conceptual framework to analyse evolution and its influence on the dependability c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 64 of computer-based systems. 5.2 Taxonomy of Evolution This section reviews a taxonomy of evolution of computer-based systems. Figure 5.1 shows the evolutionary space drew by the taxonomy. Figure 5.1: Evolutionary space. The two dimensions of the evolutionary space are: from Evolution in Design to Evolution in Use - stressing the life cycle perspective (or, temporal dimension), i.e., evolution can occur during different phases of a system life cycle, since design until deployment, use and further on. from Hard Evolution to Soft Evolution - stressing where in the system evolution c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 65 takes place (or, physical dimension). A point within the evolutionary space represents a tradeoff among different evolutionary phenomena. The main evolutionary phenomena forming the evolutionary space are: Software Evolution takes account of evolution from a product viewpoint. Architecture (Design) Evolution describes how evolution is perceived at the design level. Requirements Evolution represents an intermediate viewpoint. Requirements are used as a means of interaction between stakeholders, thus requirements represent a natural place where to capture information about the evolution of computer-based systems. Computer-based System Evolution takes into account a systemic viewpoint that emphasises human factors with respect to evolution. Organization Evolution emphasises the interaction between the computer-based system and the surrounding environment. Notice that the evolutionary phenomena may overlap one another. Thus they need to be instantiated case by case. These five different evolutionary phenomena have some similarities with other reference models (e.g., [31, 68]) that categorise and structure engineering aspects of computer-based systems. The remains of this section describe the different phenomena forming the taxonomy of evolution. 5.2.1 Software Evolution The problem of software evolution has been extensively investigated by Lehman et al [54, 55]. The investigation of software evolution as a natural phenomenon c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 66 has lead to the identification of the E-type programs (i.e., software systems). According to the Lehman’s laws of software evolution, E-type programs continuously evolve in order to be satisfactory (for users) and (need) to accommodate environmental changes. E-type programs have an increasing complexity if maintenance is not performed. They represent multi-level, multi-loop, multi-agent feedback systems. In spite of the progress in software engineering managing evolution is still challenging [53]. Software evolution (and in general evolution) is often considered just a management issue [92] having little emphasis on software evolutionary features. Recent research in Object-Oriented software [28] stresses that a product viewpoint may enhance our understanding of software evolution. Three main patterns of evolutions have been identified: Software Tectonics emphasises that software systems need to accommodate arising changes. It will involve not just fixing bugs, but also fixing flaws introduced early in the design. Hence software has to be implemented in order to support evolution, otherwise software changes will just increase software complexity and destroy fundamental software structures. Moreover, software systems should be adaptable to requirements changes by a series of small and controlled steps in order to avoid software degradation. Flexible Foundations catalogues the need to construct systems out of stuff that can evolve along with them. That is, the basics (e.g., tools, languages, frameworks, etc.) of each system should be able to evolve themselves in order to support the software system evolution as a whole. Notice that the Flexible Foundations pattern focuses on the system’s infrastructure (or architecture) and not on the specific implementation code. Metamorphosis shows how equipping systems with mechanisms that allow them to dynamically manipulate their environments can help them better to integrate in these environments in order to fulfil evolving requirements. c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 67 There exist different mechanisms supporting the Metamorphosis pattern. For instance, extendible systems allow users to add new features. Differently mutable systems allow users to change their existing features. Software Metrics may capture evolutionary properties of software and relate them to software quality [26, 37, 38, 40, 79]. Metrics quantify how software has been modified, e.g., in terms of Lines Of Code (LOC). Specific metrics assess software reliability and probabilistic models, namely Reliability Growth Models, predict the evolution of software reliability [60]. With respect to evolution Software Reliability Growth Models present some applicability limits [23, 59]. The basic assumptions (e.g., features of the models inadequately fit real conditions in software development processes. In spite of the limits of quantitative approaches recent research [5, 15, 30, 43] in empirical Software Engineering has emphasised how the use of specific quantitative models may estimate evolutionary software features. Antoniol at al. in [5] propose a quantitative model in order to estimate the size of changes for evolving Object-Oriented systems. The model has been assessed and evaluated on a case study. Coleman et al. in [15] use software metrics to evaluate the maintainability of 11 industrial software systems. Their experience points out that even simple models may support the decision making process at different stages of the software life cycle. Graves et al. in [30] devise different statistical models to evaluate the likelihood of faults introduced into modules based on the history of changes. The results emphasise the relationship between software changes and faults. Moreover, they evaluate the proposed models in order to assess their performance and accuracy. Kemerer and Slaughter in [43] propose an empirical approach to studying software evolution. They furthermore emphasise how it is difficult to conduct empirical analyses on software evolution due to the lack of evolutionary data. c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 5.2.2 68 Architecture (Design) Evolution At the design level, the role of the system architecture may be unclear with respect to evolution. Architecture evolution is risky if it is not controlled around specific variation points that may characterise product lines [12], even if the evolutionary process and the architecture are well defined and understood [46, 82]. The architectures of product lines [12, 93] represent the extent to which system families can capture future needs. Our ability to predict evolution is therefore crucial in the definition of product lines. The architecture should implement the most suitable trade off between generality and specificity. Although the architecture is so important, its evolution may be misleading. There exist in general two (three) types of evolutions: the architecture evolves or its components evolve (everything evolves). Despite what people may think about the architecture’s evolution, empirical results [1] show that the architecture is a stable part of those systems that have stringent safety and security requirements (constraints). Related research in requirements engineering [69] supports these empirical results by emphasising that stable requirements have origin in the business core. The more constrained is the business, the more evident is the relation between the architecture’s stability and the business core. Further progress [62] on the evolution of Object-Oriented architectures supports these results by stating that: “...A software architecture is a collection of elements that share the same likelihood of change. Each category contains software elements that exhibit shared stability characteristics. ...A software architecture always contains a core layer that represents the hardest layer of change. It Identifies those features that cannot be changed without rebuilding the entire software system.” c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 5.2.3 69 Requirements Evolution Requirements evolution has been mainly considered a management problem, rather than a feature of computer-based systems. Requirements Engineering literature has little emphasis on software evolutionary features [36, 77, 85, 94]. Despite this empirical analyses of industrial case studies point out that it is impossible to frozen requirements, but it is possible to analyse the extent to which requirements evolve in order to identify the stable ones and the most likely to change [1, 2, 3, 35, 36, 69, 88]. Since its recognition Requirements Engineering has received an increasing interest within Software Engineering and has acquired a multiperspective role towards model-based software engineering [90]. There exist structures that support the construction of models towards Requirements Evolution. Types of Requirements allow to classify the origins of stable and changing requirements and to identify a conceptual framework for changing requirements [69]. The Proteus Project [69] suggests three main strategies dealing with requirements changes. The proposed strategies are reducing changes, facilitating incorporation of changes and identifying needs for changes as early as possible. These strategies make use of enabling technologies like predictive analysis of changes, traceability of requirements, formal framework for representing and reasoning about changes, and prototyping. Guidelines and checklists support the strategies dealing with requirements changes. Dependencies between Requirements [3] may be redefined across subsequent releases in order to minimise them and effectively to assess the impact of changes. c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 70 Types of Changes,e.g., adding, deleting and modifying requirements, define how changes alter requirements specifications. It is possible to quantify requirements evolution by counting occurring (types of) changes. Requirements specification templates (e.g., [39, 76, 77]) may identify other (types of) attributes that are worthwhile monitoring in order to understand requirements evolution. further refinements of documents as well as analyses. Requirements Traceability [19, 20, 41, 70] provides further information to analyse requirements evolution, but it is insufficient. Requirements traceability is an important aspect to deal with evolution [7, 41]. Traceability represents not only an additional information to be collected (and maintained), but also a strategic policy involving an entire software organisation [70]. Traceability maintenance consists of strict processes and tools, which allow to identify relationships between the software organisation and the software product [41]. We can then enhance our ability to specify and to represent requirements evolution by combining traceability with other evolutionary information. We can then represent requirements evolution in terms of the above structures. The combination of structured requirements evolution together with formal requirements specifications [69, 29, 96] may be useful in order to support formal as well as quantitative reasoning on requirements evolution. The integration of formal requirements specifications with empirical information is still challenging in requirements engineering. There are still few quantitative approaches that successfully capture requirements evolution [1, 4, 37, 38, 81]. The lack of practical experience in monitoring long term information and the lack of evolutionary data often limit our ability in monitoring and understanding evolution as well as to estimate the cost of changes [9, 10, 11]. c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 5.2.4 71 Computer-based System Evolution The term “computer-based system” emphasises the human aspects within sociotechnical systems. Computer systems (consisting of hardware and software) do not exist in isolation. They are part of the information society. On the other hand, an holistic view of computer-based systems may identify and better understand the drivers for evolution. For instance, figure 5.2 shows the SHEL model [21], which defines any productive process as performed by a combination of Hardware (e.g., any material tool used in the process execution), Software (e.g., procedures, rules, practices, etc.) and Liveware (e.g., end-users, managers, etc.) resources embedded in a given Environment (e.g., socio-cultural, political, etc.). Thus, any process requires some knowledge that is distributed among the system resources. Hence a productive process may be regarded as an instantiation of the SHEL model for a specific process execution. An holistic view, like that of the SHEL model, emphasises how drivers for software evolution may reside outside software artefacts. On the other hand evolution across resources may allow new artefacts to emerge as resulting behaviour of the evolved systems. The link between technical evolution and socio evolution of computer-based systems has not yet been fully registered. It still remains vaguely understood and challenging for research and practice [14]. There is not any model that fully specifies the evolution of socio-technical systems. To some extent we can represent the evolution of socio-technical systems by collections of models, which do not complement each other in most of the cases. Few models arose in order better to understand human factors with respect to computer-based system evolution. For instance, Social Learning [95] explains how human beings perceive machines in order to acquire computational artefacts and accomplish specific tasks. Social Learning consists of two main processes: Innofusion is a practical activity of learning by trying [27] that allows to cus- c Massimo Felici, 2003 5.2. TAXONOMY OF EVOLUTION 72 Figure 5.2: The SHEL model. tomise the computational artefacts (behind a computer-based systems) to meet social needs. The underlying hypothesis is that workers, individually as well as collectively, develop more efficient ways of employing machinery through their experience from usage. This kind of learning curve effect is well-known. Though often taken to be limited to the initial introduction of new equipment, it is now recognised that learning by doing may improve the efficiency of production over a very long period of time. Domestication addresses the creative role of the user in integrating new artefacts within their everyday activities and meanings. Domestication, where people learn by situated activity, is a practical activity of learning by interacting. This activity stresses the complex interaction between technology supply and use by applying evolutionary metaphors of the generation of variation and selection of artefacts. Distributed Cognition [64] recognises the complex settings of socio-technical c Massimo Felici, 2003 5.3. ON THE DEPENDABILITY OF EVOLUTION 73 systems and analyses how humans work, operate and create external and internal artefacts. This approach re-elaborates the long lasting thesis that human cognition is mediated by artefacts (e.g., rules, tools, representations, etc.) that are both internal and external to the mind. The central tenet of the Distributed Cognition approach is that knowledge is distributed across people and artefacts; cognition is not a property of individuals but rather a property of a system of individuals and artefacts carrying out some activity. According to these theoretical assumptions, human activities and artefacts are the two inseparable sides of the same phenomenon: human cognition. The above models are quite useful in order holistically to analyse the evolution of computer-based systems. But they still need to be fully integrated with classical engineering methodologies (e.g., those reviewed in the previous subsections). 5.2.5 Organization Evolution The previous sections point out the strong connection between technical and social aspects of computer-based systems (or socio-technical systems). The evolution of socio-technical systems influences the organizational context as well. Thus system evolution implies an organization co-evolution, and vice versa. The mechanisms driving organization evolution characterise the new electronic mediated society [13, 14, 57]. The link between socio-technical evolution and organization evolution has not been yet fully registered. It is still challenging for future research and practice. 5.3 On the Dependability of Evolution Dependability models capture evolution in different ways. For instance, fault tolerance models [50, 71] rely on failure distributions (e.g., Mean Time Between c Massimo Felici, 2003 5.3. ON THE DEPENDABILITY OF EVOLUTION 74 Failures) for computer-based systems. Monitoring this type of measure allows to characterise the evolution of system properties (e.g., Reliability, Availability, etc.). Probabilistic models [60] may predict how dependability measures evolve according to the estimations of attributes and the assumptions about the operational profile of the system. By contrast other models link dependability features with system structures and development processes (e.g., [58, 59]). This allows us to link failure profiles with design attributes (e.g., diversity) and system structures (e.g., redundancy). Structured models (e.g., FMEA, HAZOP, FTA) assess the hazard related to system failures and their risk [89]. These models extend the Domino model, which assumes that an accident is the final result of a chain of events in a particular context [34]. Similarly the Cheese model consists of different safety layers having evolving undependability holes. Hence system failures completely arise and become catastrophically unrecoverable when they propagate throughout all the safety layers in place [72]. Despite of these models capture a dynamic view of system failures, they do not capture evolution. The evolutionary phenomena presented in the previous section differently contribute to dependability. Table 5.1 summarises the different dependability evolutionary perspectives. The taxonomy of evolution points out that each methodology has different assumptions about the evolution of computer-based systems. This may trigger practical issues related to evolution: Inconsistency: The basic assumptions of all adopted models (in order to characterise system dependability) may be inconsistent all together. Coverage: The entire spectrum of models may be insufficient to cover all evolutionary aspects of system dependability. Relational: The different evolutionary phenomena relate to each other. It is difficult to understand the different relationships between the evolutionary c Massimo Felici, 2003 5.4. CONCLUSIONS 75 phenomena. Emergent: New (or unexpected) system features may emerge from the different evolutionary phenomena. The relationships between the evolutionary phenomena may identify a framework for analysing the evolution of computer-based systems. If the coordination between evolutionary phenomena is too weak, dependability may deteriorate. On the other hand evolutionary phenomena introduce diversity and may prevent system failures. Table 5.1 proposes some engineering hints in order to construct an evolutionary framework. The resulting framework may classify evolution for computer-based systems. The framework may furthermore provide evidence of the relationships between the different evolutionary phenomena and relate them to dependability. Notice that it is difficult to capture and analyse evolutionary data, because they are usually incomplete, distributed, unrelated and vaguely understood. The resulting evolutionary framework may support the empirical process as well. A taxonomy of evolution is then a starting point to understand how computer-based systems evolve. 5.4 Conclusions Software evolution represents just one aspect of the evolution of computer-based systems. This paper describes a taxonomy of evolution: Software Evolution, Architecture (Design) Evolution, Requirements Evolution, Computer-based System Evolution, Organization Evolution. It provides a holistic viewpoint in order to analyse and to understand the evolution of computer-based systems. The taxonomy points out the different aspects and drivers for the evolution of computerbased systems. The review of different models and methodologies that take into account the evolution of computer-based systems is useful to further under- c Massimo Felici, 2003 5.4. CONCLUSIONS 76 Table 5.1: Dependability perspectives of Evolution. Evolution Software Evolution Architecture (Design) Evolution Requirements Evolution Computerbased System Evolution Organization Evolution Dependability Perspective Software evolution can affect dependability attributes (e.g., Reliability). Nevertheless software evolution can improve dependability attributes by faults removal and maintenance to satisfy new arising requirements. Architecture evolution is usually an expensive phenomenon. It does not affect directly dependability, but there is high risk if the evolution process is unclear and little understood. Architecture evolution may be needed to support specific system properties (e.g., redundancy, performance, etc.). Requirements evolution does not directly affect dependability, but non-effective management of the requirement process may allow undesired changes to fall down into the product affecting its dependability. On the other hand requirements evolution may enhance system dependability across subsequent releases. System evolution may give rise to undependability. This is due to incomplete evolution of system resources. Evolution of some resources (e.g., software) should be taken into account by the other resources (e.g., liveware and hardware) in order to register a new configuration for the system. Hence the interactions among resources serve to effectively deploy a new system configuration. On the other hand human can react and learn how to deal with undependable situations, but continuous changes in the system configuration may give rise to little understanding about the system. Hence the human-computer interaction may become quite undependable as well. Organization evolution should reflect system evolution. Little coordination between system evolution and organization evolution may give rise to undependability. Engineering Hint Monitor software complexity; Identify the changeprone parts of the software; Carefully manage basic software structures; Monitor dependability metrics. Assess the stability of the software architecture; Understand the relationship between the architecture and the business core; Analyse any (proposed or implemented) architecture change. Classify requirements according to their stability/volatility; Classify requirements changes; Monitor requirements evolution. Acquire a systemic view (i.e., Hardware, Software, Liveware and Environment); Monitor the interactions between resources; Understand evolutionary dependencies; Monitor and analyse the (human) activities supported by the system. Understand environmental constraints; Understand the business culture; Identify obstacles to changes. stand and stress the relationship between system evolution and dependability. The different assumptions about the evolution of computer-based systems may c Massimo Felici, 2003 5.4. CONCLUSIONS 77 trigger practical issues affecting system dependability: Inconsistency: The basic assumptions of all adopted models (in order to characterise system dependability) may be inconsistent all together. Coverage: The entire spectrum of models may be insufficient to cover all evolutionary aspects of system dependability. Relational: The different evolutionary phenomena relate to each other. It is difficult to understand the different relationships between the evolutionary phenomena. Emergent: New (or unexpected) system features may emerge from the different evolutionary phenomena. The dependability analysis with respect to evolution identifies a framework. The engineering hints related to each evolutionary phenomenon may serve as basics in order empirically to acquire a taxonomy of evolution. The idea of the taxonomy of evolution has originated from previous experiences and collaborations. Future work aims to acquire practical experiences by using the the framework in industrial case studies. In conclusion, the taxonomy of evolution represents a starting point to analyse evolving computer-based systems. It draws a framework in order to further understand how computer-based systems evolve. It provides a holistic viewpoint that suggests future directions for research and practice on computer-based system evolution. c Massimo Felici, 2003 Chapter 6 Conclusions and Future Work This report enhance our understanding about requirements evolution for computerbased systems. The results drew by this work are three-fold. Empirical Results. The work shows the empirical investigation of requirements evolution. The empirical results enhance our understanding of requirements evolution. They support our basic hypothesis that requirements evolution may be considered a feature of computer-based systems. This encourages further empirical studies in order to acquire experiences within different industrial contexts. Modelling Basics. The different ways of representing and modelling requirements evolution identify a framework for modelling requirements evolution. The framework is still in a pre-mature stage, but it identifies different milestones towards enhanced requirements evolution. 78 6.1. FUTURE WORK Requirements Evolution Practice. 79 Although the outcomes of this work have been little validated by industrial use, they stress how it is important to take into account requirements evolution in practice. This should encourage practitioners in establishing pilot projects in order to investigate requirements evolution within specific industrial contexts. The empirical results clearly show that the work is worthwhile. 6.1 Future Work Each chapter of this report identifies research and practical issues related to requirements evolution. There is still a lot of work that needs to be done towards requirements evolution. We encourage to undertake future work that may be inspired by this report. Among many potential research and practice directions we would like to emphasise two of them. Firstly, Modelling requirements evolution will support the entire system life cycle. It shall furthermore help to acquire new insights that may further enhance our understanding of requirements evolution and completely change the way we design computer-based systems. Secondly, tools support is a means (probably the only one) in order to transfer knowledge into practice. Tools supporting the requirements phases still lack of functionalities enhancing our ability to analyse evolutionary features. The provision of tool supported evolutionary analysis will help practitioners to adopt requirements evolution concepts. Furthermore, usage of requirements evolution tools/models will drive future research in requirements evolution. c Massimo Felici, 2003 Bibliography [1] Stuart Anderson and Massimo Felici. Controlling requirements evolution: An avionics case study. In Proceedings of SAFECOMP 2000, 19th International Conference on Computer Safety, Reliability and Security, LNCS 1943, pages 361–370, Rotterdam, The Netherlands, October 2000. SpringerVerlag. [2] Stuart Anderson and Massimo Felici. Requirements changes risk/cost analyses: An avionics case study. In M.P. Cottam, D.W. Harvey, R.P. Pape, and J. Tait, editors, Foresight and Precaution, Proceedings of ESREL 2000, SARS and SRA-EUROPE Annual Conference, volume 2, pages 921–925, Edinburgh, Scotland, United Kingdom, May 2000. [3] Stuart Anderson and Massimo Felici. Requirements evolution: From process to product oriented management. In Proceedings of Profes 2001, 3rd International Conference on Product Focused Software Process Improvement, LNCS 2188, pages 27–41, Kaiserslautern, Germany, September 2001. Springer-Verlag. [4] Stuart Anderson and Massimo Felici. Quantitative aspects of requirements evolution. In Proceedings of the 26th Annual International Computer Software and Application Conference, COMPSAC 2002, pages 27–32, Oxford, England, 2002. IEEE Computer Society. 80 BIBLIOGRAPHY 81 [5] G. Antoniol, G. Canfora, and A. De Lucia. Estimating the size of changes for evolving object oriented systems: A case study. In Proccedings of the Sixth International Symposium on Software Metrics, METRICS ’99, pages 250–259, Boca Raton, Florida, November 1999. IEEE COmputer Society. [6] Lowell Jay Arthur. Rapid Evolutionary Development: Requirements, Prototyping & Software Creation. John Wiley & Sons, 1992. [7] K. Suzanne Barber et al. Requirements evolution and reuse using the systems engineering process activities (sepa). Australian Journal of Information Systems (AJIS), 7:75–97, 1999. Special Issue on Requirements Engineering. [8] Daniel M. Berry and Brian Lawrence. Requirements engineering. IEEE Software, pages 26–29, March 1998. [9] Barry W. Boehm. Software Engineering Economics. Prentice-Hall, 1981. [10] Barry W. Boehm. Software engineering economics. IEEE Transaction on Software Engineering, 10(1):4–21, January 1984. [11] Barry W. Boehm et al. Software Cost Estimation with COCOMO II. Prentice-Hall, 2000. [12] Jan Bosch. Design and Use of Software Architectures: Adopting and Evolving a Product-Line Approach. Addison-Wesley, 2000. [13] David Bustard, Peter Kawalek, and Mark Norris, editors. Systems Modeling for Business Process Improvement. Artech House, 2000. [14] Elayne Coakes, Dianne Willis, and Raymond Lloyd-Jones, editors. The New SocioTech: Graffiti on the Long Wall. CSCW. Springer, 2000. c Massimo Felici, 2003 BIBLIOGRAPHY 82 [15] Don Coleman, Dan Ash, Bruce Lowther, and Paul Oman. Using metrics to evaluate software system maintainability. IEEE Computer, 27(8):44–49, August 1994. [16] CREWS Project. Cooperative Requirements Engineering With Scenarios. http://sunsite.informatik.rwth-aachen.de/CREWS/. [17] CSEG. Computing Cooperative Systems Department, Engineering Lancaster Group, University, http://www.comp.lancs.ac.uk/computing/research/cseg/. [18] Alan M. Davis and Pei Hsia. Giving voice to requirements engineering. IEEE Software, pages 12–16, March 1994. [19] Giorgio De Michelis et al. A three-faceted view of information systems. Communications of the ACM, 41(12):64–70, December 1998. [20] Ralf Dömges and Klaus Pohl. Adapting traceability environments to project-specific needs. Communications of the ACM, 41(12):54–62, December 1998. [21] E. Edwards. Man and machine: Systems for safety. In Proceedings of British Airline Pilots Associations Technical Symposium, pages 21–36, London, 1972. British Airline Pilots Associations. [22] Massimo Felici. Taxonomy of evolution and dependability. In Proceedings of the Second International Workshop on Unanticipated Software Evolution, USE 2003, page to appear, Warsaw, Poland, April 2003. [23] Massimo Felici, Alberto Pasquini, and Mark-Alexander Sujan. Applicability limits of software reliability growth models. In MMR’2000, Deuxième Conférence Internationale sur les Méthodes Mathématiques en Fiabilité: c Massimo Felici, 2003 BIBLIOGRAPHY 83 Méthodologie, Pratique et Inférence, volume 1, pages 397–400, Bordeaux, France, July 2000. [24] Massimo Felici, Mark-Alexander Sujan, and Maria Wimmer. Integra- tion of functional congnitive and quality requirements: A railways case study. In Katrina Maxwell, Rob Kusters, Erik van Veenendaal, and Adrian Cowderoy, editors, Project Control: The Human Factor. Proceedings of ESCOM-SCOPE 2000, pages 395–403, Munich, Germany, April 2000. [25] Massimo Felici, Mark-Alexander Sujan, and Maria Wimmer. Integration of functional congnitive and quality requirements. A railways case study. Information and Software Technology, 42(14):993–1000, November 2000. [26] Norman E. Fenton and Shari Lawrence Pfleeger. Software Metrics: A Rigorous and Practical Approach. International Thomson Computer Press, second edition, 1996. [27] James Fleck. Learning by trying: the implementation of configurational technology. Research Policy, 23:637–652, 1994. [28] Brian Foote and Joseph Yoder. Evolution, architecture, and metamorphosis. In John M. Vlissides, James O. Coplien, and Norman L. Kerth, editors, Pattern Languages of Program Design 2, chapter 13. Addison-Wesley, 1996. [29] Aditya K. Ghose. Managing requirements evolution: Formal support for functional and non-functional requirements. In Proceedings of the In- ternational Workshop on Principles of Software Evolution, pages 77–84, Fukuoka, Japan, 1999. [30] Todd. L. Graves, Alan F. Karr, J. S. Marron, and Harvey Siy. Predicting fault incident using software change history. IEEE Transactions on Software Engineering, 26(7):653–661, July 2000. c Massimo Felici, 2003 BIBLIOGRAPHY 84 [31] Carl A. Gunter, Elsa L. Gunter, Michael Jackson, and Pamela Zave. A reference model for requirements and specifications. IEEE Software, pages 37–43, May/June 2000. [32] Theodore F. Hammer, Leonore L. Huffman, and Linda H. Rosenberg. Doing requirements right the first time. CROSSTALK The Journal of Defense Software Engineering, pages 20–25, December 1998. [33] S.D.P. Harker, K.D. Eason, and J.E. Dobson. The change and evolution of requirements as a challenge to the practice of software engineering. In Proceedings of the IEEE International Symposium on Requirements Engineering, pages 266–272, San Diego, California, USA, January 1993. IEEE Computer Society Press. [34] Herbert William Heinrich. Industrial accident prevention: a scientific approach. McGraw-Hill, 3rd edition, 1950. [35] Hubert F. Hofmann and Franz Lehner. Requirements engineering as a success factor in software projects. IEEE Software, pages 58–66, July/August 2001. [36] Ivy F. Hooks and Kristin A. Farry. Customer-Centered Products: Creating Successful Products Through Smart Requirements Management. Amacom, 2001. [37] IEEE. IEEE Std 982.1 - IEEE Standard Dictionary of Measures to Produce Reliable Software, 1988. [38] IEEE. IEEE Std 982.2 - IEEE Guide for the Use of IEEE Standard Dictionary of Measures to Produce Reliable Software, 1988. [39] IEEE. IEEE Std 830 - IEEE Recommended Practice for Software Requirements Specifications, 1993. c Massimo Felici, 2003 BIBLIOGRAPHY 85 [40] ISO/IEC. ISO/IEC 9126 - Information Technology - Software quality characteristics and metrics. [41] Matthias Jarke. Requirements tracing. Communications of the ACM, 41(12):32–36, December 1998. [42] Matthias Jarke et al. Theories underlying requirements engineering: An overview of nature at genesis. In Proceedings of the IEEE International Symposium on Requirements Engineering, pages 19–31, San Diego, California, USA, January 1993. IEEE Computer Society Press. [43] Chris F. Kemerer and Sandra Slaughter. An empirical approach to studying software evolution. IEEE Transactions on Software Engineering, 25(4):493– 509, July/August 1999. [44] Gerald Kotonya and Ian Sommerville. Requirements engineering with viewpoints. Software Engineering Journal, 11:5–18, January 1996. [45] Philippe Kruchten. The Rational Unified Process: An Introduction. Addison-Wesley, second edition, 2000. [46] Juha Kuusela. Architectural evolution. In Patrick Donohoe, editor, Software Architecture, TC2 First Working IFIP Conference on Software Architecture (WICSA1), pages 471–478, San Antonio, Texas, USA, 1999. IFIP, Kluwer Academic Publishers. [47] W. Lam. Achieving requirements reuse: A domain-specific approach from avionics. The Journal of Systems and Software, 38(3):197–209, September 1997. [48] W. Lam, J.A. McDermid, and A.J. Vickers. Ten steps towards systematic requirements reuse. In Proceedings of the Third IEEE International Sym- c Massimo Felici, 2003 BIBLIOGRAPHY 86 posium on Requirements Engineering, pages 6–15, Annapolis, Maryland, USA, January 1997. IEEE Computer Society Press. [49] Jean-Claude Laprie. Dependable computing: Concepts, limits, challenges. In FTCS-25, the 25th IEEE International Symposium on Fault-Tolerant Computing - Special Issue, pages 42–54, Pasadena, California, USA, June 1995. [50] Jean-Claude Laprie et al. Dependability handbook. Technical Report LAAS Report no 98-346, LIS LAAS-CNRS, August 1998. [51] Soren Lauesen. Software Requirements: Styles and Techniques. AddisonWesley, 2002. [52] Mingjune Lee and Barry W. Boehm. The winwin requirements negotiation system: A model-driven approach. Technical Report USC-CSE-96-502, University of Southern California, 1996. [53] M.M. Lehman. Software’s future: Managing evolution. IEEE Software, pages 40–44, Jan-Feb 1998. [54] M.M. Lehman and L.A. Belady. Program Evolution: Processes of Software Change, volume 27 of A.P.I.C. Studies in Data Processing. Academic Press, 1985. [55] M.M. Lehman, D.E. Perry, and J.F. Ramil. On evidence supporting the feast hypothesis and the laws of software evolution. In Proceedings of Metrics ‘98, Bethesda, Maryland, November 1998. [56] Nancy G. Leveson. SAFEWARE: System Safety and Computers. AddisonWesley, 1995. [57] Frederick Levine, Christopher Locke, David Searls, and David Weinberger. The Cluetrain Manifesto: The end of business as usual. ft.com, 2000. c Massimo Felici, 2003 BIBLIOGRAPHY 87 [58] Bev Littlewood, Peter Popov, and Lorenzo Strigini. Modelling software design diversity: a review. ACM Computing Surveys, 33(2):177–208, 2001. [59] Bev Littlewood and Lorenzo Strigini. Software reliability and dependability: a roadmap. In A. Finkelstein, editor, The Future of Software Engineering, pages 177–188. ACM Press, Limerick, June 2000. [60] Michael R. Lyu, editor. Handbook of Sofwtare Reliability Engineering. IEEE Computer Society Press, 1996. [61] Saeko Matsuura, Hironobu Kuruma, and Shinichi Honiden. Eva: A flexible programming method for evolving systems. IEEE Transactions on Software Engineering, 23(5):296–313, May 1997. [62] Tom Mens and Galan Hassan Galan. 4th workshop on object-oriented architectural evolution. In A. Frohner, editor, Proceedings of the ECOOP 2001 Workshops, LNCS 2323, pages 150–164. Springer-Verlag, 2002. [63] NATURE ing Project. Requirements Novel Approaches Engineering. to Theories Underly- http://www-i5.informatik.rwth- aachen.de/PROJEKTE/NATURE/nature.html. [64] Donal A. Norman. The Invisible Computer. The MIT Press Cambridge, Massachusetts, 1998. [65] Bashar Nuseibeh, Jeff Kramer, and Anthony Finkelstein. A framework for expressing the relationships between multiple views in requirements specification. IEEE Transactions on Software Engineering, 20(10):760–773, October 1994. [66] Mark C. Paulk et al. Key practices of the capability maturity model, version 1.1. Technical Report CMU/SEI-93-025, Software Engineering Institute, Carnegie Mellon University, February 1993. c Massimo Felici, 2003 BIBLIOGRAPHY 88 [67] Charles Perrow. Normal Accidents: Living with High-Risk Technologies. Princeton University Press, 1999. [68] Dewayne E. Perry. Dimensions of software evolution. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press, 1994. [69] PROTEUS Project. Meeting the challenge of changing requirements. Deliverable 1.3, Centre for Software Reliability, University of Newcastle upon Tyne, June 1996. [70] Balasubramaniam Ramesh. Factors influencing requirements traceability practice. Communications of the ACM, 41(12):37–44, December 1998. [71] Brian Randel. Facing up to faults. Computer Journal, 43(2):95–106, 2000. [72] James Reason. Managing the Risks of Organizational Accidents. Ashgate Publishing Limited, 1997. [73] RENOIR national Project. Requirements cooperating Research Engineering groups a Network network of Of Inter- excellence. http://www.cs.ucl.ac.uk/research/renoir/. [74] REVERE Project. REVerse Engineering of REquirements to support business process change, Computing Department, Lancaster University, UK. http://www.comp.lancs.ac.uk/computing/research/cseg/projects/revere/. [75] RISE. Research Institute in Software Evolution, Computer Science, University of Durham, UK. http://www.dur.ac.uk/CSM/. [76] James Robertson and Suzanne Robertson. Volere: Requirements specification template. Technical Report Edition 6.1, Atlantic Systems Guild, 2000. c Massimo Felici, 2003 BIBLIOGRAPHY 89 [77] Suzanne Robertson and James Robertson. Mastering the Requirements Process. Addison-Wesley, 1999. [78] RTCA. DO-178B Software Considerations in Airborne Systems and Equipment Certification, 1992. [79] W. J. Salamon and D. R. Wallace. Quality characteristics and metrics for reusable software. Technical Report NISTIR 5459, NIST, 1994. [80] Pete Sawyer, Ian Sommerville, and Stephen Viller. Capturing the benefits of requirements engineering. IEEE Software, pages 78–85, March/April 1999. [81] Norman F. Schneidewind. Measuring and evaluating maintenance process using reliability, risk, and test metrics. IEEE Transactions on Software Engineering, 25(6):769–781, November/December 1999. [82] Lui Sha, Ragunathan Rajkumar, and Michael Gagliardi. A software architecture for dependable and evolvable industrial computing systems. Technical Report CMU/SEI-95-TR-005, CMU/SEI, July 1995. [83] J. Siddiqi and M.C. Shekaran. Requirements engineering: The emerging wisdom. IEEE Software, pages 15–19, March 1996. [84] Ian Sommerville, Gerald Kotonya, Steve Viller, and Pete Sawyer. Process viewpoints. Technical Report CSEG/1/1995, Lancaster University, 1995. [85] Ian Sommerville and Pete Sawyer. Requirements Engineering: A Good Practice Guide. John Wiley & Sons, 1997. [86] Ian Sommerville and Pete Sawyer. Viewpoints: principles, problems and a practical approach to requirments engineering. Annals of Software Engineering, pages 101–130, 1997. c Massimo Felici, 2003 BIBLIOGRAPHY 90 [87] Ian Sommerville, Pete Sawyer, and Stephen Viller. Viewpoints for requirements elicitation: a practical approach. In Proceedings of the IEEE International Conference on Requirements Engineering, Colorado Springs, Colorado, April 1998. [88] George Stark, Al Skillicorn, and Ryan Ameele. An examination of the effects of requirements changes on software releases. CROSSTALK The Journal of Defence Software Engineering, pages 11–16, December 1998. [89] Neil Storey. Safety-Critical Computer Systems. Addison-Wesley, 1996. [90] Axel van Lamsweerde. Requirements engineering in the year 00: A research perspective. In Proceedings of the 2000 International Conference on Software Engineering (ICSE’2000), pages 5–19, Limerick, Ireland, June 2000. [91] Stephen Viller and Ian Sommerville. Social analysis in the requirements engineering process: from ethnography to method. Technical Report CSEG/14/1998, Lancaster University, 1998. [92] Gerald M. Weinberg. Quality Software Management. Volume 4: Anticipating Change. Dorset House, 1997. [93] David M. Weiss and Chi Tau Robert Lai. Software Product-Line Engineering: A Family-Based Software Development Process. Addison-Wesley, 1999. [94] Karl Eugene Wiegers. Software Requirements. Microsoft Press, 1999. [95] Robin Williams, Roger Slack, and James Stewart. Social learning in multimedia. Final report, EC targeted socio-economic research, project: 4141 PL 951003, Research Centre for Social Sciences, The University of Edinburgh, January 2000. c Massimo Felici, 2003 BIBLIOGRAPHY 91 [96] Didar Zowghi and Ray Offen. A logical framework for modeling and reasoning about the evolution of requirements. In Proceedings of the Third IEEE International Symposium on Requirements Engineering, pages 247– 257, Annapolis, Maryland, USA, January 1997. IEEE Computer Society Press. c Massimo Felici, 2003
© Copyright 2026 Paperzz