Software maintenance. Software Maintenance. Fundamental problems. Maintenance activities. Lehman/Belady model of evolution. Topics



Similar documents
KSE Comp. support for the writing process 2 1

Quotes from Object-Oriented Software Construction

Chapter 9 Software Evolution

Software Engineering. So(ware Evolu1on

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

How to realize software evolution of existing BOSS via ZTE SEEM

Test Automation Architectures: Planning for Test Automation

Software Engineering 9.1. Quality Control

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Functional Decomposition Top-Down Development

Software Life Cycle Processes

Chap 1. Introduction to Software Architecture

Answers to Review Questions

Learner and Information Characteristics in the Design of Powerful Learning Environments

Process Models and Metrics

Planning a Successful Visual Basic 6.0 to.net Migration: 8 Proven Tips

Business Intelligence Not a simple software development project

Fourth generation techniques (4GT)

A MODEL OF HUMAN COGNITIVE BEHAVIOR IN WRITING CODE FOR COMPUTER PROGRAMS

Basic Trends of Modern Software Development

To introduce software process models To describe three generic process models and when they may be used

Applying 4+1 View Architecture with UML 2. White Paper

Integrating Quality Assurance into the GIS Project Life Cycle

Fundamentals of Measurements

Karunya University Dept. of Information Technology

Software Engineering. What is a system?

Program Understanding in Software Engineering

Developing SOA solutions using IBM SOA Foundation

Human Dimension in Cyber Operations Research and Development Priorities

Software Maintenance. Software Maintenance. (Chapter 14) Relative distribution of software/ hardware costs. Point to ponder #1

Software Testing. Quality & Testing. Software Testing

9 Research Questions Resolved

Writing in the Computer Science Major

What does the number m in y = mx + b measure? To find out, suppose (x 1, y 1 ) and (x 2, y 2 ) are two points on the graph of y = mx + b.

Process-Driven SOA Development

An Open Framework for Reverse Engineering Graph Data Visualization. Alexandru C. Telea Eindhoven University of Technology The Netherlands.

Integrating Cognitive Models Based on Different Computational Methods

Real Time Programming: Concepts

CSC408H Lecture Notes

Quality Assurance - Karthik

Simulating the Structural Evolution of Software

Computer Network. Interconnected collection of autonomous computers that are able to exchange information

DESCRIPTIVE STATISTICS & DATA PRESENTATION*

Vector storage and access; algorithms in GIS. This is lecture 6

Software Quality Factors OOA, OOD, and OOP Object-oriented techniques enhance key external and internal software quality factors, e.g., 1. External (v

Semantic Analysis: Types and Type Checking

Software Design Principles and Guidelines

Extend the value of your core business systems.

Data Analysis 1. SET08104 Database Systems. Napier University

Program Visualization for Programming Education Case of Jeliot 3

S. Muthusundari. Research Scholar, Dept of CSE, Sathyabama University Chennai, India Dr. R. M.

8th IEEE/IFIP Network Operations and Management Symposium. A Case Driven Methodology for Applying the MNM Service Model

E10: Controlled Experiments

Data, Measurements, Features

Chapter 10 Practical Database Design Methodology and Use of UML Diagrams

Personal Software Process (PSP)

Software Metrics. Lord Kelvin, a physicist. George Miller, a psychologist

COGNITIVE PSYCHOLOGY

APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION

Teaching Methodology for 3D Animation

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Object-Oriented and Classical Software Engineering

FPGA Prototyping Primer

Automated Receiving. Saving Money at the Dock Door. Page 8

Unit 2.1. Data Analysis 1 - V Data Analysis 1. Dr Gordon Russell, Napier University

Market Research. Market Research: Part II: How To Get Started With Market Research For Your Organization. What is Market Research?

Cognitive Domain (Bloom)

Behavior Rating Inventory of Executive Function - Adult Version BRIEF-A. Interpretive Report. Developed by

Component visualization methods for large legacy software in C/C++

Software Development Life Cycle (SDLC)

Umbrella: A New Component-Based Software Development Model

Service-Oriented Architecture and its Implications for Software Life Cycle Activities

GQM + Strategies in a Nutshell

A/B TESTING. Comparing Data. October 25, 2007 Version 4.0

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Chapter 7: Memory. Memory

CHAPTER 1 INTRODUCTION

IAI : Expert Systems

A Capability Maturity Model (CMM)

A Path from Windows Desktop to HTML5

The Concern-Oriented Software Architecture Analysis Method

Agile Manufacturing for ALUMINIUM SMELTERS

Some programming experience in a high-level structured programming language is recommended.

Business Process Management A Balance Between Process Efficiency & Business Agility

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Cognitive and Organizational Challenges of Big Data in Cyber Defense

Python Programming: An Introduction to Computer Science

Service Level Agreements based on Business Process Modeling

Behavior Rating Inventory of Executive Function BRIEF. Interpretive Report. Developed by. Peter K. Isquith, PhD, Gerard A. Gioia, PhD, and PAR Staff

Columbia River Project Water Use Plan. Monitoring Program Terms of Reference

Managing Variability in Software Architectures 1 Felix Bachmann*

Priori ty

Transcription:

Software maintenance Software Maintenance Key problems/issues Historical models and data Program Defined in IEEE Standard 1219 as: The modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment. Related term: Software evolution Maintenance activities Fundamental problems Four distinct categories: Adaptive: accommodates changes in the software environment Perfective: incorporates new user requirements Corrective: fixes errors Preventive: aims to prevent future problems Studies of prevalence: Around 75% of maintenance is adaptive or perfective; 21% corrective [Lientz and Swanson] Incorporation of new requirements is a core problem for software maintenance If changes can be anticipated at design time, they can be built in by some form of parameterization Fundamental problem: Many modifications involve changes the original designers could not even conceive of Maintenance important to understand because: It consumes a large portion of overall lifecycle costs Inability to change software quickly and reliably means business opportunities are lost Concerns have led to new and competing lifecycle models Topics Lehman/Belady model of evolution Empirical model of dynamic evolution of software products [Lehman and Belady] Three laws of software evolution dynamics Maintenance of legacy systems Program Classic empirical study of the evolution of a real software system over many releases System: OS/360 Releases: over 20 Metrics: # of modules added (per release) # of modules handled (per release) others 1

Laws of evolution dynamics # of modules by release (OS/360) 1. Law of Continuing Change: A system that is used undergoes continuing change until it is judged more cost effective to freeze and recreate it 2. Law of Increasing Entropy: The entropy of a system (its unstructuredness) increases with time, unless specific work is executed to maintain or reduce it 3. Law of statistically smooth growth. Growth trend measures of global system attributes may appear to be stochastic locally in time and space, but, statistically, they are cyclically self regulating, with well-defined long-range trends Number of modules Release Other consequences of model Analyses indicate a cyclical pattern of growth Modules handled per release fluctuates by release within a 400-module window This pattern is invariant under changes to languages, programming staff, machines, etc Possible to budget in time to restructure code (i.e., preventive maintenance) to reduce the rate of growth of complexity; however rate will always be positive Issues with legacy systems Legacy systems Defn: System of value that is being maintained by staff that were not part of its original development Typically: Large (MLOC), complex, old (> 10 years) Critical corporate assets E.g., telecom switching systems, banking systems, defense systems Highly reliable Legacy systems (continued) Maintenance consumes up to 90% of company s IT budget Running on legacy platforms, and/or written in legacy languages Poorly documented: documentation out of date too much documentation original source may not even be available 2

Coping with legacy systems No obvious solution to problem: Too large to rewrite from scratch Can t shift staff resources w/o risking critical losses Approaches to date: Legacy-platform simulators on new platforms Port compilers for legacy languages to new platforms Reverse engineering Program Program Greatest part of maintenance process devoted to understanding the system being maintained 47% - 62% I.e., reading documentation, scanning code, trying to understand the changes to be made Idea: To improve software development, one must improve maintenance process; to improve maintenance, one must improve program Gaps complicating prog comp Problem in application domain vs solution in a programming language Concrete world of programs/machines vs abstract world of high-level design descriptions Coherent, highly structured description of original system vs actual system, whose structure may have disintegrated over time Hierarchical nature of programs vs. associational nature of human cognition Bottom-up analysis of the source code vs. top-down synthesis of an application description Application domain vs program Program = solution to problem in some application domain However, program may contain no hints about the particular problem it solves Hints found in comments, variable names These are informal and nearly always out of date Consequently, most automatic tools work with only program text Concrete programs; abstract descriptions Programs incredibly detailed: Not every detail is relevant to a particular need, but how can you tell which ones are relevant? Abstraction is the process of sifting away the unimportant details; however abstraction is not linear! Many lines of program code result from the interleaving of multiple purposes or program plans 3

Hierarchical programs; associative cognition Programs are highly structured syntactically Human cognition is associative: Raw data are perceived Patterns in data are detected Abstractions are constructed that relate them Understanding controlled by setting up and verifying expectations that follow from these associative suggestions and abstractions Program is understood to extent that reader can build up correct chunks from the details in the code Program analysis; model synthesis Process of analyzing a program proceeds bottom-up Process of synthesizing a model of program behavior proceeds top-down from an expectation of the program s behavior Problem: Bottom-up analysis and top-down synthesis must be synchronized Humans in the loop Experiments in software psychology (Schneiderman) Program currently a highly manual task Software psychology attempts to describe human limitations in interacting with computers Program studied via experiments involving memorization/reconstruction of programs Utility of comments not substantiated Shown to impede understanding of small programs Interrupt flow of code; value does not compensate Incorrect or out of date Larger programs not studied Same is true for indentation Mnemonic variable names contribute to : IF carry semantic (rather than syntactic) meaning Reduces reader s short-term memory load Mnemonics likely have different meanings to different readers: Would be useful if reader could easily and systematically rename identifiers to reflect understanding relative to a given task Models of program Brooks model of Two major models: Top-down approach, due to Ruven Brooks Bottom-up approach, due to Elliot Soloway Knowledge of these models can help one manage one s own tasks Can also serve as the basis for support tools Key ideas: Programming process is construction of mappings from a task domain through one or more intermediates into the programming domain Comprehension is process of reconstructing these mappings Reconstruction process is expectation-driven Hypotheses formed to connect domains Reconstruction driven by creation, confirmation, and refinement of these hypotheses 4

Brooks model (continued) Beacons Understander begins with initial hypothesis: global, abstract description of what understander thinks the program does even before looking at a single line of code often based on the name or description of program Initial hypothesis then refined into a cascade of sub-hypotheses, which are explored depth first Eventually sub-hypothesis is sufficiently refined that it can be confirmed by looking at code Defn: Program details that confirm (or lend credence to) an hypothesis Example: sort hypothesis confirmed by finding a pair of loops whose body contains a comparison and exchange between elements Beacons are first link between hypotheses and program text Existence verified experimentally Experts more efficient at locating beacons than are novices Abilities of understander Soloway model of Knowledge about the various domains affects understanding at all levels Task-domain knowledge affects quality of primary and subsidiary hypotheses Programming-domain knowledge affects lowerlevel bindings and beacon location process Key idea: To understand a program is to uncover the intention behind the code Goals denote intentions Plans denote techniques for realizing intentions Plans work as rewrite rules, which convert goals into subgoals and finally into code Comprehension involves recognizing plans in code, then abstracting them to subgoals and eventually higher-level goals Soloway model continued Supporting program Existence of plans in programs confirmed experimentally Delocalized plans: Plans that manifest as non-contiguous source code, which may even cross module boundaries Key source of complexity in program Interleaving problem Plan calculus: A model of plan composition Automated cliché recognition Build a knowledge base of common programming patterns (i.e., cliches) e.g., pattern of loops and conditionals to perform binary search Uncover cliches in existing code to support bottom-up Interleaving detection Identify instances of optimizations that capitalize on some form of resource sharing Automatically undo the optimizations to simplify 5

Designing for Reify and maintain representations of intentions rather than just results of refining intentions (code) Knuth s literate programming Intentional programming Automated refinement of programs from specifications Specifications often separate concerns better than code So have tools synthesize program code from specs Aspect-oriented programming Domain analysis Domain: problem area, such as weather modeling, accounting, report writing, etc. Typically many application programs exist to solve problems in a single domain Domain analysis: Engineering approach to codifying domain knowledge Looks at wealth of programs in same domain Teases out and then explicitly documents useful domain abstractions Yields domain books 6