Software Evolution

ion is a bounding process. It determines the operational range of E-type systems. The bounds required for such systems are, generally, imprecise, even unclear and subject to change. Some of the boundaries will be well defined by prior practice or related experience, for example. Others are adopted on the basis of compromise or recognised constraints. Still others will be uncertain, undecidable or verging on the inconsistent. This situation may be explicitly acknowledged or remain unrecognised until exposed by chance or during system operation. Since applications and the domains to which they apply and in which they operate are dynamic, always changing, and E-type system (in particular) must be continually reviewed and, where necessary, changed to ensure continuing validity of execution results in all situations that may legitimately arise. In the context of evolution, fuzziness of bounds arises from several sources. The first relates to the, in general, unlimited, number of potential application properties from which those to be implemented and supported must be selected. The detail of system functional and nonfunctional properties and system behaviour also cannot be uniquely determined. A limited set must be selected for implementation on the basis of the current state of knowledge and understanding, experience, managerial and legal directives and so on. Precise bounds of the operational domains are, in general, equally undetermined. The uncertainty is overcome by provisionally selecting boundaries within which the system is to operate to provide satisfactory solutions at some level of precision and reliability, in some defined time frame, at acceptable cost. Inevitably however, once a system is operational, the need or desire to change or extend the area of validity, whether of domains or of behaviours, will inevitably arise. Without such changes, exclusions will become performance inhibitors, irritants and sources of system failure. In summary, the potential set of properties and capabilities to be included in a system is, in general, unbounded and not uniquely selectable. Even a set that appears reasonably complete may well exceed what can be accommodated within the resources and time allocated for system implementation. As implemented, system boundaries will be arbitrary, largely determined by many individual and group decision makers. Inevitably, the system will need to be continually evolved by modifying or extending domains it defines, and explicitly or implicitly assumes, so as to satisfy changing constraints, newly emerging needs or changed environmental circumstances. But, unlike those of the domain, once developed and installed, system boundaries become solid, increasingly difficult and costly to change, interpret and respect, fault prone, slow to modify. A user requiring a facility not provided by the system may, in the first instance, use stand-alone software to satisfy individual or local needs. This may be followed by direct coupling of such software tightly to the system for greater convenience in cooperative execution. But problems such as additional execution overhead, time delays, performance and reliability penalties and sources of error will emerge, however the desired or required function is invoked and the results of execution passed to the main system. Omissions become onerous; a source of performance inhibitors and user dissatisfaction. A request for system extension will eventually follow. The history of automatic computation is rich with examples of functions first developed and exploited as stand-alone application software, migrating inwards to become, at least conceptually, part of an operating or run time system and ultimately integrated into Software Evolution 21 some larger application system or, at the other extreme, into hardware (chips). This is exemplified by the history of language and graphics support. The evolving computing system is an expanding universe with an inward drift of function from the domains to the core of the system. The drift is driven by feedback about the effectiveness, strengths, weaknesses, precision, convenience and potential of the system as recognised during its use and the application of results. 1.6.7 The Consequence: Continual System Evolution Properties such as those mentioned make implementation and use of an E-type system a learning experience. Its evolution is driven, in part, by the ongoing experiences of those that interact with or use the results of execution directly or indirectly, of those who observe, experience or are affected by its use as well as those who develop or maintain it. The system must reflect any and all properties and behaviours of the application being implemented or supported, the domains in which the application is being executed, pursued and supported, and everything that affects the results of execution. It must be a model-like reflection8 of the application and its many operational domains. However as repeatedly observed, the latter are unbounded in the number of their properties. They, therefore, cannot be known entirely by humans during the conscious and unconscious abstraction and reification decisions that occur from conception onwards. The learning resulting from development, use and evolution plays a decisive role in the changes that must be implemented throughout its lifetime in the nature and pattern of its inevitable evolution. Evolution of E-type applications, systems, software and usage practices is clearly intrinsic to computer usage. Serious software suppliers and users experience the phenomenon as a continuing need to acquire successive versions, releases and upgrades of used software to ensure that the system maintains its validity, applicability, viability and value in an ever-changing world. Development and adaptation of such systems cannot be covered by an exhaustive and complete theory if only because of human involvement in the applications, the partially arbitrary nature of procedures in business, manufacturing, government, the service sector and so on, and the potential unboundedness of the domain boundaries (Turski 1981). Inherently, therefore, the software evolution process is, at least to some extent, ad hoc.

[1]  Meir M. Lehman,et al.  Feedback, evolution and software technology , 1996, Proceedings 10th International Software Process Workshop.

[2]  Annie I. Antón,et al.  Functional paleontology: system evolution as the user sees it , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[3]  Dewayne E. Perry Policy and Product-Directed Process Instantiation , 1990, 'Support for the Software Process'.,Proceedings of the 6th International Software Process Workshop.

[4]  W. W. Royce,et al.  Managing the development of large software systems , 1970 .

[5]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[6]  Meir M. Lehman,et al.  Software engineering, the software process and their support , 1991, Softw. Eng. J..

[7]  Stuart E. Madnick,et al.  Software Project Dynamics: An Integrated Approach , 1991 .

[8]  William E. Riddle Proceedings of the 9th international conference on Software Engineering , 1987 .

[9]  Giancarlo Succi,et al.  Preliminary Results from an Empirical Study on the Growth of Open Source and Commercial Software Products , 2001 .

[10]  Meir M. Lehman,et al.  Behavioural modelling of long-lived evolution processes - some issues and an example , 2002, J. Softw. Maintenance Res. Pract..

[11]  Meir M. Lehman,et al.  Towards a theory of software evolution - and its practical impact , 2000, Proceedings International Symposium on Principles of Software Evolution.

[12]  Brian Randell,et al.  Iterative multi-level modelling. A methodology for computer system design , 1968, IFIP Congress.

[13]  Markus Pizka,et al.  The contribution of free software to software evolution , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[14]  Chris F. Kemerer,et al.  An Empirical Approach to Studying Software Evolution , 1999, IEEE Trans. Software Eng..

[15]  M. M. Lehman,et al.  Another look at software design methodology , 1984, SOEN.

[16]  Meir M. Lehman,et al.  Background and Approach to Development of a Theory of Software Evolution , 2006 .

[17]  Meir M. Lehman Programs, Cities, Students— Limits to Growth? , 1978 .

[18]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[19]  J. Forrester Industrial Dynamics , 1997 .

[20]  Nazim H. Madhavji,et al.  The impact of environmental evolution on requirements changes , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[21]  Luqi Software evolution through rapid prototyping , 1989, Computer.

[22]  Edsger W. Dijkstra,et al.  A constructive approach to the problem of program correctness , 1968 .

[23]  Rachel Harrison,et al.  Evolution in software systems: foundations of the SPE classification scheme , 2006, J. Softw. Maintenance Res. Pract..

[24]  Jack C. Wileden,et al.  Foundations for the Arcadia environment architecture , 1989, SDE 3.

[25]  Roland T. Mittermeir,et al.  Facets of Software Evolution , 2006 .

[26]  Khaled El Emam,et al.  Spice: The Theory and Practice of Software Process Improvement and Capability Determination , 1997 .

[27]  Meir M. Lehman Process models, process programs, programming support , 1987, ICSE '87.

[28]  Maurice V. Wilkes,et al.  The preparation of programs for an electronic digital computer , 1958 .

[29]  Maurizio Morisio,et al.  The evolution of source folder structure in actively evolved open source systems , 2004, 10th International Symposium on Software Metrics, 2004. Proceedings..

[30]  Meir M. Lehman,et al.  An Introduction to growth dynamics , 1972, Statistical Computer Performance Evaluation.

[31]  M TurskiWładysław,et al.  Reference Model for Smooth Growth of Software Systems , 1996 .

[32]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[33]  Wladyslaw M. Turski Essay on Software Engineering at the Turn of Century , 2000, FASE.

[34]  Meir M. Lehman,et al.  Program evolution and its impact on software engineering , 1976, ICSE '76.

[35]  Meir M. Lehman Uncertainty in computer application and its control through the engineering of software , 1989, J. Softw. Maintenance Res. Pract..

[36]  Watts S. Humphrey,et al.  Managing the software process , 1989, The SEI series in software engineering.

[37]  Meir M. Lehman,et al.  Rules and Tools for Software Evolution Planning and Management , 2001, Ann. Softw. Eng..

[38]  Chong Hok Yuen A phenomenology of program maintenance and evolution , 1981 .

[39]  Meir M. Lehman Feedback in the software evolution process , 1996, Inf. Softw. Technol..

[40]  Mark C. Paulk,et al.  Capability Maturity Model for Software, Version 1.1 , 1993 .

[41]  Watts S. Humphrey,et al.  Introduction to the Personal Software Process , 1996 .

[42]  Keith H. Bennett,et al.  A Staged Model for the Software Life Cycle , 2000, Computer.

[43]  Dewayne E. Perry,et al.  Metrics and laws of software evolution-the nineties view , 1997, Proceedings Fourth International Software Metrics Symposium.

[44]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

[45]  Carolyn B. Seaman,et al.  Practical Software Maintenance , 2000, J. Softw. Maintenance Res. Pract..

[46]  David Gries Programming Methodology: A Collection of Articles by Members of IFIP WG 2.3 , 1978 .

[47]  Keith H. Bennett,et al.  Software maintenance and evolution: a roadmap , 2000, ICSE '00.

[48]  Will Venters,et al.  Software engineering: theory and practice , 2006 .

[49]  C. Tully Proceedings of the 4th international software process workshop on Representing and enacting the software process , 1988 .

[50]  Meir M. Lehman,et al.  Software evolution in the age of component-based software engineering , 2000, IEE Proc. Softw..

[51]  Michael W. Godfrey,et al.  Evolution in open source software: a case study , 2000, Proceedings 2000 International Conference on Software Maintenance.

[52]  Mark C. Paulk,et al.  Software Process Assessment , 2001 .

[53]  Brian Randell,et al.  Software engineering : report on a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7th to 11th October 1968 , 1969 .

[54]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[55]  Edsger W. Dijkstra,et al.  The humble programmer , 1972, CACM.