AD HOC VS. PLANNED SOFTWARE MAINTENANCE
|
|
- Cecily Underwood
- 6 years ago
- Views:
Transcription
1 AD HOC VS. PLANNED SOFTWARE MAINTENANCE INTRODUCTION Warren Harrison Portland State University Portland, OR In a series of papers, Belady and Lehman [Belady & Lehman, 1976] pioneered the study of the evolution of software. They observed that over time, programs exhibit increasing entropy. As a program evolves, its structure degrades and its size increases, resulting in increased complexity. The increase in program entropy as it evolves makes program maintenance increasingly more difficult, and will ultimately result in the program dying and being replaced by another program, or the program undergoing a major and expensive overhaul. When making a modification to a piece of production software, a maintenance programmer must give some thought to the impact their changes will have on the entropy of the module. AD HOC PATCHES AND PLANNED, STRUCTURE PRESERVING MODIFICATIONS When changing a piece of code, a programmer may apply a "patch" that effects the desired change in program behavior, or alternatively restructure (perhaps even rewrite) the module in order to preserve the structure and maintainability of the code. For instance, consider the somewhat contrived and simplified example in Figure 1. A programmer writes a program to count logical source statements in C, based on a simple count of semi-colons. char line_char; // a character from the program int in_code=0; // 0 if not in..., >0 otherwise int lss=0; // count of logical source statements if(line_char== ) in_code++; if(line_char== ) in_code--; if((in_code > 0)&&(line_char== ; )) lss++;
2 Figure 1. However, shortly after putting the program into production, the programmer discovers that strings and character constants can include semi-colons and/or brackets. Obviously, the "logical source statement count" produced by this program is inaccurate. At this point, the programmer may choose to consider this as a "special case" and "patch" the code to address the issue of strings and character constants through a use (for example) of a series of flags to indicate if we are indeed inside a string or character constant when a semi-colon or bracket is encountered, as shown in Figure 2. char line_char; // a character from the program int in_code=0; // >0 if in..., 0 otherwise int in_string=0;// >0 if in string, 0 otherwise int in_char=0; // >0 if in char const, 0 otherwise int lss=0; // count of logical source statements if((line_char== " )&&(in_char==0)) if(in_string==0) in_string++; else in_string--; if((line_char== \ )&&(in_string==0)) if(in_char==0) in_char++; else in_char--; if((in_string==0)&&(in_char==0)) if(line_char== ) in_code++; if(line_char== ) in_code--; if((in_code > 0)&&(in_string==0)&&(in_char==0)) if(line_char== ; ) lss++; Figure 2. Alternatively, the programmer could have instead chosen to revise the design to accommodate this situation in a more general manner, by introducing a function that returns the "next" executable token as shown in Figure 3. void token(char&); // retrieve "next executable token" char token[token_len]; // a character from the program int lss=0; // count of logical source statements get_token(token);
3 if(strcmp(token,";")==0) lss++; get_token(token); Figure 3. We can see that the ad hoc patch illustrated in Figure 2 can be made quite easily by simply adding a couple of Boolean variables and a test or two inside the code. The update can be made literally within a matter of minutes, and after a modest amount of testing to verify that the new version can indeed accommodate strings containing semi-colons and brackets, the user will be able to use the new version, probably within the same day. On the other hand, the planned, structure-preserving modification illustrated in Figure 3 will likely take some additional time to implement and retest, since it radically modifies the overall approach to the problem, from a character-by-character scan to a token-by-token. Obviously, the ad hoc approach solves the problem at hand, but should additional "special cases" come up, the superiority of the planned, structure preserving solution can be easily seen. Undoubtedly, an ad hoc patch can be done more quickly and with less effort than a planned, structure preserving change. However, while a single "patch" may not significantly impact future modifications, after a series of patches, the code may very well become unmaintainable. For instance, in Figure 4, the programmer is now responding to the fact that comments can also contain semi-colons and brackets. char line_char; // a character from the program char last_char; // previous character from program int in_code=0; // >0 if in..., 0 otherwise int in_string=0;// >0 if in string, 0 otherwise int in_char=0; // >0 if in char const, 0 otherwise int in_comment=0;// >0 if in comment, 0 otherwise int lss=0; // count of logical source statements if((line_char== / )&&(last_char== / )) in_comment++; if(line_char== \n ) in_comment=0; if((line_char== " )&&(in_char==0)&&(in_comment==0)) if(in_string==0) in_string++; else in_string--; if((line_char== \ )&&(in_string==0)&&(in_comment==0)) if(in_char==0) in_char++; else in_char--; if((in_string==0)&&(in_char==0)&&(in_comment==0)) if(line_char== ) in_code++; if(line_char== ) in_code--; if((in_code>0)&&(in_string==0)&& (in_char==0)&&(in_comment==0))
4 if(line_char== ; ) lss++; last_char=line_char; Figure 4. The planned, structure preserving modification could be easily updated to also accommodate comments by simply redefining the meaning of an "executable token" within the get_token function, without even touching the program s main function. The subsequent differences in maintainability of the two approaches becomes more and more obvious as additional "special cases" are identified. Of course, we have tried to illustrate the "spirit" of an ad hoc vs. planned, structure preserving change as opposed to presenting a rigorous, objective definition. Currently we know of no clear, objective test to distinguish between the two. CHOOSING AN APPROACH TO MODIFYING SOFTWARE Since every hour spent working on a given maintenance request means that there is one less hour available to accommodate other maintenance requests the programmer needs to balance the effort expended in a modification with the preservation of structure and maintainability. A programmer may be subject to a "Type I Error", in which the decision is made to perform a planned, structure preserving change when in fact an ad hoc patch can be comfortably accommodated, and a "Type II Error" in which an ad hoc patch is applied when a planned, structure preserving change should have been performed instead. The programmer must consider two aspects of the problem. First, if a module will not be modified again (or at least, not modified again in the near future), then a degradation in the structure of the module is unimportant. On the other hand, if a module will be modified again in the future, then significant degradation in the structure of the module may indeed cause problems. Secondly, if a patch is applied to a heretofore well-structured module, then even if it does not preserve the structuredness of the module, it is unlikely to make the module unmaintainable. However, if a patch is made on top of a series of prior patches, the maintainability of the module may be seriously damaged. Therefore, in order to support the maintenance programmer s decision problem, we need to be able to make two projections: (1) is this module likely to undergo further modification in the future? and (2) will the proposed modification render the module unmaintainable in the future? Studies have shown that in a typical maintenance scenario, only a small percentage of the modules in a system are actually modified. For example, Harrison and Cook, [Harrison & Cook, 1990] found that in the embedded flight control software of the AV-8 Attack Fighter/Bomber out of 217 modules, only 102 modules were changed between a major four year release cycle (115 maintenance requests), with an average of 72 lines of code (standard deviation of 153) changed per module. However, what was even more interesting was that of the 102 modules changed, twelve accounted for 60% of the maintenance activity, with the remaining 90 changed modules accounting for only 40% of the activity (and of course 115 modules receiving no maintenance activity at all). It would appear that efforts put into preserving
5 the maintainability of every module might very well be mis-directed, since many modules will either not be modified, or if modified, changed only slightly. Of course, even if we are able to project that a given module is likely to be modified in the near future, we need to formulate a decision rule for when a proposed ad hoc patch will adversely impact maintainability. CHANGE-PRONE MODULES We consider a module "change-prone" if it is likely to be modified in the near future. There are two basic approaches to identifying a change-prone module. First, the analytic approach can be used to determine if the module contains commonly modified functions. For instance, in the case of an income tax program, tax laws are expected to change on an annual basis, while the user interface, file access routines, etc. can be expected to remain constant. Clearly modules containing tax law implementations can be expected to be highly change-prone. This approach depends heavily on the maintainers semantic knowledge of the application area and overall software design. A second approach to identifying change-prone modules is "historical". Modules which undergo frequent modification - especially corrective maintenance - are likely to experience future maintenance activities as well. By keeping track of how often a module undergoes maintenance, we may very well be able to predict the likelihood of future maintenance activities. Unlike the analytic approach, identifying change prone modules in this manner is only a matter of collecting and analyzing the data. Little if any knowledge of the application area and/or design are necessary. Interestingly enough, static code characteristics, such as various metric values appear to have very little relationship with the likelihood of a module being maintained in the future (though there may be a relationship with how difficult maintenance, if there is any, will be to perform). Identifying change-prone modules through an analysis of historical data would appear to be a ripe field for empirical investigation. In short, can we predict future maintenance activities for a given module, as a function of past maintenance activities? IMPACTS OF AD HOC PATCHES ON MAINTAINABILITY This is a question which has been around for some time. Typically, it is couched in terms of the maintainability of two different programs. In our case, the two programs in question are the modified versions of the code resulting from the ad hoc patch and the planned, structure preserving modification (or at least projections as to what these modifications would look like). This problem has been well-studied, and to date no definitive results have been obtained. However, this is still an important question and one which may perhaps yield to more careful and extensive empirical studies. COST SAVINGS FROM AN AD HOC PATCH This discussion has revolved around an assumption that an ad hoc patch can be performed more cheaply than a planned, structure preserving modification. In fact, we don t know for certain if such a situation exists. It might very well be that ad hoc patches will usually require additional patches to work correctly, and that a planned, structure preserving modification will in fact be less expensive to apply in most cases.
6 SUMMARY Determining what approach to take in making modifications to production code is a problem faced by maintenance programmers on a daily basis. Ad hoc patches can be made to an application, or special care can be taken in ensuring the structure and maintainability of the code is preserved. We assume that one approach is more expensive (at least in the short run) and the other. Under what circumstances are ad hoc patches justified? What about the more expensive planned, structure preserving changes? We have posed three general questions relating to this problem which can be addressed through the use of empirical studies. First, can we predict the change-proneness of a module based on its prior change history; second, can we assess the relative degradation of maintainability imposed by an ad hoc patch and finally, is our assumption that ad hoc patches are less expensive than planned, structure preserving modification correct? It is easy to imagine an empirical study or sets of studies that could be used to answer these questions. REFERENCES Belady, L.A. and M.M. Lehman, "A model of large program development", IBM Systems Journal, 15, 3 (1976), pp Harrison, W. and C. Cook, "Insights on Improving the Maintenance Process Through Software Measurement", Proceedings of the 1990 IEEE Conference on Software Maintenance (November 1990, San Diego CA).
Random projection for non-gaussian mixture models
Random projection for non-gaussian mixture models Győző Gidófalvi Department of Computer Science and Engineering University of California, San Diego La Jolla, CA 92037 gyozo@cs.ucsd.edu Abstract Recently,
More informationTraining & Documentation. Different Users. Types of training. Reading: Chapter 10. User training (what the system does)
Training & Documentation Reading: Chapter 10 Different Users Types of training User training (what the system does) Operator training (how the system works) Special training needs: new users vs. brush-up
More informationCSC 408F/CSC2105F Lecture Notes
CSC 408F/CSC2105F Lecture Notes These lecture notes are provided for the personal use of students taking CSC 408H/CSC 2105H in the Fall term 2004/2005 at the University of Toronto. Copying for purposes
More informationA Model of Large Software Development
A Model of Large Software Development L.A Belady and M.M Lehman 1976 IBM OS/360 Seminal empirical study paper in software evolution What was it like in 1976? computers were huge computers were slow no
More informationAchieving 24-bit Resolution with TASCAM s New-Generation DTRS Format Recorders / Reproducers
Achieving 24-bit Resolution with TASCAM s New-Generation DTRS Format Recorders / Reproducers Introduction. The DTRS 16-bit format was originally seen by many people as an interim technology to bridge the
More informationAn Object Oriented Runtime Complexity Metric based on Iterative Decision Points
An Object Oriented Runtime Complexity Metric based on Iterative Amr F. Desouky 1, Letha H. Etzkorn 2 1 Computer Science Department, University of Alabama in Huntsville, Huntsville, AL, USA 2 Computer Science
More informationLecture Notes on Contracts
Lecture Notes on Contracts 15-122: Principles of Imperative Computation Frank Pfenning Lecture 2 August 30, 2012 1 Introduction For an overview the course goals and the mechanics and schedule of the course,
More informationUnit 6 Chapter 15 EXAMPLES OF COMPLEXITY CALCULATION
DESIGN AND ANALYSIS OF ALGORITHMS Unit 6 Chapter 15 EXAMPLES OF COMPLEXITY CALCULATION http://milanvachhani.blogspot.in EXAMPLES FROM THE SORTING WORLD Sorting provides a good set of examples for analyzing
More informationSoftware Evolution: An Empirical Study of Mozilla Firefox
Software Evolution: An Empirical Study of Mozilla Firefox Anita Ganpati Dr. Arvind Kalia Dr. Hardeep Singh Computer Science Dept. Computer Science Dept. Computer Sci. & Engg. Dept. Himachal Pradesh University,
More informationTHE CONTRAST ASSESS COST ADVANTAGE
WHITEPAPER THE CONTRAST ASSESS COST ADVANTAGE APPLICATION SECURITY TESTING COSTS COMPARED WELCOME TO THE ERA OF SELF-PROTECTING SOFTWARE CONTRASTSECURITY.COM EXECUTIVE SUMMARY Applications account for
More informationRecognizing hand-drawn images using shape context
Recognizing hand-drawn images using shape context Gyozo Gidofalvi Department of Computer Science and Engineering University of California, San Diego La Jolla, CA 92037 gyozo@cs.ucsd.edu Abstract The objective
More informationChapter X Security Performance Metrics
Chapter X Security Performance Metrics Page 1 of 10 Chapter X Security Performance Metrics Background For many years now, NERC and the electricity industry have taken actions to address cyber and physical
More informationPoint-to-Point Synchronisation on Shared Memory Architectures
Point-to-Point Synchronisation on Shared Memory Architectures J. Mark Bull and Carwyn Ball EPCC, The King s Buildings, The University of Edinburgh, Mayfield Road, Edinburgh EH9 3JZ, Scotland, U.K. email:
More informationSOFTWARE MAINTENANCE: A
SOFTWARE MAINTENANCE: A TUTORIAL BY KEITH H. BENNETT 2008.10.13 소프트웨어 200310612 조보경 Software Engineering Field Main problem of software engineering Scale and Complexity of the software Goal of software
More informationLecture Notes on Static Semantics
Lecture Notes on Static Semantics 15-411: Compiler Design Frank Pfenning Lecture 12 October 8, 2015 1 Introduction After lexing and parsing, a compiler will usually apply elaboration to translate the parse
More informationChapter X Security Performance Metrics
Chapter X Security Performance Metrics Page 1 of 9 Chapter X Security Performance Metrics Background For the past two years, the State of Reliability report has included a chapter for security performance
More informationThe goal of this project is to enhance the identification of code duplication which can result in high cost reductions for a minimal price.
Code Duplication New Proposal Dolores Zage, Wayne Zage Ball State University June 1, 2017 July 31, 2018 Long Term Goals The goal of this project is to enhance the identification of code duplication which
More informationParts of the SUM: a case study of usability benchmarking using the SUM Metric
Parts of the SUM: a case study of usability benchmarking using the SUM Metric Erin Bradner User Research Manager Autodesk Inc. One Market St San Francisco, CA USA erin.bradner@autodesk.com Melissa Dawe
More information2. BOOLEAN ALGEBRA 2.1 INTRODUCTION
2. BOOLEAN ALGEBRA 2.1 INTRODUCTION In the previous chapter, we introduced binary numbers and binary arithmetic. As you saw in binary arithmetic and in the handling of floating-point numbers, there is
More informationLESSON 13: LANGUAGE TRANSLATION
LESSON 13: LANGUAGE TRANSLATION Objective Interpreters and Compilers. Language Translation Phases. Interpreters and Compilers A COMPILER is a program that translates a complete source program into machine
More informationSchool of Computer Science CPS109 Course Notes 5 Alexander Ferworn Updated Fall 15
Table of Contents 1 INTRODUCTION... 1 2 IF... 1 2.1 BOOLEAN EXPRESSIONS... 3 2.2 BLOCKS... 3 2.3 IF-ELSE... 4 2.4 NESTING... 5 3 SWITCH (SOMETIMES KNOWN AS CASE )... 6 3.1 A BIT ABOUT BREAK... 7 4 CONDITIONAL
More informationResponse-Time Technology
Packeteer Technical White Paper Series Response-Time Technology May 2002 Packeteer, Inc. 10495 N. De Anza Blvd. Cupertino, CA 95014 408.873.4400 info@packeteer.com www.packeteer.com Company and product
More informationSoftware Evolution. Dr. James A. Bednar. With material from
Software Evolution Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar With material from Massimo Felici, Conrad Hughes, and Perdita Stevens SAPM Spring 2012: Evolution 1 Software
More informationCITS5501 Software Testing and Quality Assurance Formal methods
CITS5501 Software Testing and Quality Assurance Formal methods Unit coordinator: Arran Stewart May 1, 2018 1 / 49 Sources Pressman, R., Software Engineering: A Practitioner s Approach, McGraw-Hill, 2005
More informationChallenge Problem 5 - The Solution Dynamic Characteristics of a Truss Structure
Challenge Problem 5 - The Solution Dynamic Characteristics of a Truss Structure In the final year of his engineering degree course a student was introduced to finite element analysis and conducted an assessment
More informationThe Forensic Chain-of-Evidence Model: Improving the Process of Evidence Collection in Incident Handling Procedures
The Forensic Chain-of-Evidence Model: Improving the Process of Evidence Collection in Incident Handling Procedures Atif Ahmad Department of Information Systems, University of Melbourne, Parkville, VIC
More informationLecture 1 Contracts : Principles of Imperative Computation (Fall 2018) Frank Pfenning
Lecture 1 Contracts 15-122: Principles of Imperative Computation (Fall 2018) Frank Pfenning In these notes we review contracts, which we use to collectively denote function contracts, loop invariants,
More informationAutomatic Identification of Important Clones for Refactoring and Tracking
Automatic Identification of Important Clones for Refactoring and Tracking Manishankar Mondal Chanchal K. Roy Kevin A. Schneider Department of Computer Science, University of Saskatchewan, Canada {mshankar.mondal,
More informationA Practical Guide to Cost-Effective Disaster Recovery Planning
White Paper PlateSpin A Practical Guide to Cost-Effective Disaster Recovery Planning Organizations across the globe are finding disaster recovery increasingly important for a number of reasons. With the
More informationSoftware Quality. Chapter What is Quality?
Chapter 1 Software Quality 1.1 What is Quality? The purpose of software quality analysis, or software quality engineering, is to produce acceptable products at acceptable cost, where cost includes calendar
More informationAnalyzing Systems. Steven M. Bellovin November 26,
Analyzing Systems When presented with a system, how do you know it s secure? Often, you re called upon to analyze a system you didn t design application architects and programmers build it; security people
More informationQUIZ. What is wrong with this code that uses default arguments?
QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code
More informationMaintainability and Agile development. Author: Mika Mäntylä
Maintainability and Agile development Author: Mika Mäntylä ISO 9126 Software Quality Characteristics Are the required functions available in the software? How easy is it to
More informationSQL Tuning Reading Recent Data Fast
SQL Tuning Reading Recent Data Fast Dan Tow singingsql.com Introduction Time is the key to SQL tuning, in two respects: Query execution time is the key measure of a tuned query, the only measure that matters
More informationFlash Drive Emulation
Flash Drive Emulation Eric Aderhold & Blayne Field aderhold@cs.wisc.edu & bfield@cs.wisc.edu Computer Sciences Department University of Wisconsin, Madison Abstract Flash drives are becoming increasingly
More informationProgramming the Semantic Web
Programming the Semantic Web Steffen Staab, Stefan Scheglmann, Martin Leinberger, Thomas Gottron Institute for Web Science and Technologies, University of Koblenz-Landau, Germany Abstract. The Semantic
More informationThis module presents the star schema, an alternative to 3NF schemas intended for analytical databases.
Topic 3.3: Star Schema Design This module presents the star schema, an alternative to 3NF schemas intended for analytical databases. Star Schema Overview The star schema is a simple database architecture
More informationHandling Missing Values via Decomposition of the Conditioned Set
Handling Missing Values via Decomposition of the Conditioned Set Mei-Ling Shyu, Indika Priyantha Kuruppu-Appuhamilage Department of Electrical and Computer Engineering, University of Miami Coral Gables,
More informationModule 16. Software Reuse. Version 2 CSE IIT, Kharagpur
Module 16 Software Reuse Lesson 39 Basic Ideas on Software Reuse Specific Instructional Objectives At the end of this lesson the student would be able to: Explain the advantages of software reuse. Identify
More informationLambda Correctness and Usability Issues
Doc No: WG21 N3424 =.16 12-0114 Date: 2012-09-23 Reply to: Herb Sutter (hsutter@microsoft.com) Subgroup: EWG Evolution Lambda Correctness and Usability Issues Herb Sutter Lambda functions are a hit they
More informationRefactoring Practice: How it is and How it Should be Supported
Refactoring Practice: How it is and How it Should be Supported Zhenchang Xing and EleniStroulia Presented by: Sultan Almaghthawi 1 Outline Main Idea Related Works/Literature Alignment Overview of the Case
More informationLecture 1 Contracts. 1 A Mysterious Program : Principles of Imperative Computation (Spring 2018) Frank Pfenning
Lecture 1 Contracts 15-122: Principles of Imperative Computation (Spring 2018) Frank Pfenning In these notes we review contracts, which we use to collectively denote function contracts, loop invariants,
More informationThe Cabling Partnership
The author Mike Gilmore, Senior Partner of The Cabling Partnership, is involved at the highest level in UK and European cabling standardisation. Mike is Chairman of the BSI Premises Cabling Experts Panels
More informationCORPORATE PERFORMANCE IMPROVEMENT DOES CLOUD MEAN THE PRIVATE DATA CENTER IS DEAD?
CORPORATE PERFORMANCE IMPROVEMENT DOES CLOUD MEAN THE PRIVATE DATA CENTER IS DEAD? DOES CLOUD MEAN THE PRIVATE DATA CENTER IS DEAD? MASS MIGRATION: SHOULD ALL COMPANIES MOVE TO THE CLOUD? Achieving digital
More informationEnsuring Business Resilience Jim Neumann, Vice President of Marketing, Power Analytics Corp.
Ensuring Business Resilience Jim Neumann, Vice President of Marketing, Power Analytics Corp. In today s digital economy, the importance of taking a bottom-line view of your organization s electrical power
More informationTable of contents. Introduction...1. Simulated keyboards...3. Theoretical analysis of original keyboard...3. Creating optimal keyboards...
Table of contents Page Introduction...1 Simulated keyboards...3 Theoretical analysis of original keyboard...3 Creating optimal keyboards...4 Empirical analysis...6 Learning effects...8 Conclusions...10
More informationConquering Rogue Application Behavior in a Terminal Server Environment
White Paper Conquering Rogue Application Behavior in a Terminal Server Environment Using Application Shaping to ensure reliable, consistent performance and application response times for improved end-user
More informationGuide. A small business guide to data storage and backup
Guide A small business guide to data storage and backup 0345 600 3936 www.sfbcornwall.co.uk Contents Introduction... 3 Why is data storage and backup important?... 4 Benefits of cloud storage technology...
More informationMetaheuristic Optimization with Evolver, Genocop and OptQuest
Metaheuristic Optimization with Evolver, Genocop and OptQuest MANUEL LAGUNA Graduate School of Business Administration University of Colorado, Boulder, CO 80309-0419 Manuel.Laguna@Colorado.EDU Last revision:
More informationWHAT HAPPENS IF WE SWITCH THE DEFAULT LANGUAGE OF A WEBSITE?
WHAT HAPPENS IF WE SWITCH THE DEFAULT LANGUAGE OF A WEBSITE? Te Taka Keegan, Sally Jo Cunningham Computer Science Department, University of Waikato,Hamilton, New Zealand Email: tetaka@cs.waikato.ac.nz,
More informationAll Paging Schemes Depend on Locality. VM Page Replacement. Paging. Demand Paging
3/14/2001 1 All Paging Schemes Depend on Locality VM Page Replacement Emin Gun Sirer Processes tend to reference pages in localized patterns Temporal locality» locations referenced recently likely to be
More informationTutorial 1 Answers. Question 1
Tutorial 1 Answers Question 1 Complexity Software in it what is has to do, is often essentially complex. We can think of software which is accidentally complex such as a large scale e-commerce system (simple
More informationPROCESSES AND THREADS THREADING MODELS. CS124 Operating Systems Winter , Lecture 8
PROCESSES AND THREADS THREADING MODELS CS124 Operating Systems Winter 2016-2017, Lecture 8 2 Processes and Threads As previously described, processes have one sequential thread of execution Increasingly,
More informationLesson 6A Loops. By John B. Owen All rights reserved 2011, revised 2014
Lesson 6A Loops By John B. Owen All rights reserved 2011, revised 2014 Topic List Objectives Loop structure 4 parts Three loop styles Example of a while loop Example of a do while loop Comparison while
More informationSoftware Maintainability Ontology in Open Source Software. Celia Chen ARR 2018, USC
Software Maintainability Ontology in Open Source Software Celia Chen qianqiac@usc.edu ARR 2018, USC How do others measure software maintainability? Most popular methods: Automated analysis of the code
More informationUPA 2004 Presentation Page 1
UPA 2004 Presentation Page 1 Thomas S. Tullis and Jacqueline N. Stetson Human Interface Design Department, Fidelity Center for Applied Technology Fidelity Investments 82 Devonshire St., V4A Boston, MA
More information2 The IBM Data Governance Unified Process
2 The IBM Data Governance Unified Process The benefits of a commitment to a comprehensive enterprise Data Governance initiative are many and varied, and so are the challenges to achieving strong Data Governance.
More informationBits, Words, and Integers
Computer Science 52 Bits, Words, and Integers Spring Semester, 2017 In this document, we look at how bits are organized into meaningful data. In particular, we will see the details of how integers are
More informationChapter 17. Iteration The while Statement
203 Chapter 17 Iteration Iteration repeats the execution of a sequence of code. Iteration is useful for solving many programming problems. Interation and conditional execution form the basis for algorithm
More informationAMD EPYC PRESENTS OPPORTUNITY TO SAVE ON SOFTWARE LICENSING COSTS
AMD EPYC PRESENTS OPPORTUNITY TO SAVE ON SOFTWARE LICENSING COSTS BUSINESS SELECTION OF PROCESSOR SHOULD FACTOR IN SOFTWARE COSTS EXECUTIVE SUMMARY Software licensing models for many server applications
More informationCS112 Lecture: Defining Instantiable Classes
CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:
More informationBinghamton University. CS-211 Fall Syntax. What the Compiler needs to understand your program
Syntax What the Compiler needs to understand your program 1 Pre-Processing Any line that starts with # is a pre-processor directive Pre-processor consumes that entire line Possibly replacing it with other
More informationExamining the Authority and Ranking Effects as the result list depth used in data fusion is varied
Information Processing and Management 43 (2007) 1044 1058 www.elsevier.com/locate/infoproman Examining the Authority and Ranking Effects as the result list depth used in data fusion is varied Anselm Spoerri
More informationKanban Size and its Effect on JIT Production Systems
Kanban Size and its Effect on JIT Production Systems Ing. Olga MAŘÍKOVÁ 1. INTRODUCTION Integrated planning, formation, carrying out and controlling of tangible and with them connected information flows
More informationLecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD
Cairo University Faculty of Computers and Information CS251 Software Engineering Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD http://www.acadox.com/join/75udwt Outline Definition of Software
More informationSoftware Design Fundamentals. CSCE Lecture 11-09/27/2016
Software Design Fundamentals CSCE 740 - Lecture 11-09/27/2016 Today s Goals Define design Introduce the design process Overview of design criteria What results in a good design? Gregory Gay CSCE 740 -
More informationA Practical Approach to Balancing Application Performance and Instrumentation Information Using Symantec i 3 for J2EE
WHITE PAPER: APPLICATION CUSTOMIZE PERFORMANCE MANAGEMENT Confidence in a connected world. A Practical Approach to Balancing Application Performance and Instrumentation Information Using Symantec i 3 for
More informationHard Disk Storage Deflation Is There a Floor?
Hard Disk Storage Deflation Is There a Floor? SCEA National Conference 2008 June 2008 Laura Friese David Wiley Allison Converse Alisha Soles Christopher Thomas Hard Disk Deflation Background Storage Systems
More informationOptimal Detector Locations for OD Matrix Estimation
Optimal Detector Locations for OD Matrix Estimation Ying Liu 1, Xiaorong Lai, Gang-len Chang 3 Abstract This paper has investigated critical issues associated with Optimal Detector Locations for OD matrix
More informationPractical Fast Searching in Strings
SOFTWARE-PRACTICE AND EXPERIENCE, VOL. 10, 501-506 (1980) Practical Fast Searching in Strings R. NIGEL HORSPOOL School of Computer Science, McGill University, 805 Sherbrooke Street West, Montreal, Quebec
More informationA Strategic Approach to Web Application Security
A STRATEGIC APPROACH TO WEB APP SECURITY WHITE PAPER A Strategic Approach to Web Application Security Extending security across the entire software development lifecycle The problem: websites are the new
More informationVerification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process
Verification and Validation Assuring that a software system meets a user s needs Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapters 19,20 Slide 1
More informationA Mission Critical Protection Investment That Pays You Back
A Mission Critical Protection Investment That Pays You Back By Wade Ettleman and Earl Philmon June 2012 Page 1 of 8 www.cellwatch.com A Mission Critical Protection Investment That Pays You Back Reliable
More informationCOPYRIGHTED MATERIAL. Introduction. Chapter 1
Chapter 1 Introduction Performance Analysis, Queuing Theory, Large Deviations. Performance analysis of communication networks is the branch of applied probability that deals with the evaluation of the
More informationDHCP Capacity and Performance Guidelines
This appendix contains the following sections: Introduction, on page Local Cluster DHCP Considerations, on page Regional Cluster DHCP Considerations, on page 6 Introduction This document provides capacity
More informationArchitectures in Context
Architectures in Context Software Architecture Lecture 2 Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Learning Objectives Understand architecture in its relation
More informationLecture 6 & 7. Empirical Studies of Software Evolution: Code Decay. EE382V Software Evolution: Spring 2009, Instructor Miryung Kim
Lecture 6 & 7 Empirical Studies of Software Evolution: Code Decay Announcement Your proposals have been graded. Literature Survey & Tool Evaluation: Each in the range of 1-4 Project Proposal: Each in the
More informationPreprocessor Directives
C++ By 6 EXAMPLE Preprocessor Directives As you might recall from Chapter 2, What Is a Program?, the C++ compiler routes your programs through a preprocessor before it compiles them. The preprocessor can
More informationCSI5387: Data Mining Project
CSI5387: Data Mining Project Terri Oda April 14, 2008 1 Introduction Web pages have become more like applications that documents. Not only do they provide dynamic content, they also allow users to play
More informationTimestamps and authentication protocols
Timestamps and authentication protocols Chris J. Mitchell Technical Report RHUL MA 2005 3 25 February 2005 Royal Holloway University of London Department of Mathematics Royal Holloway, University of London
More informationIn examining performance Interested in several things Exact times if computable Bounded times if exact not computable Can be measured
System Performance Analysis Introduction Performance Means many things to many people Important in any design Critical in real time systems 1 ns can mean the difference between system Doing job expected
More informationSTEVEN R. BAGLEY THE ASSEMBLER
STEVEN R. BAGLEY THE ASSEMBLER INTRODUCTION Looking at how to build a computer from scratch Started with the NAND gate and worked up Until we can build a CPU Reached the divide between hardware and software
More informationPromoting Component Reuse by Separating Transmission Policy from Implementation
Promoting Component Reuse by Separating Transmission Policy from Implementation Scott M. Walker scott@dcs.st-and.ac.uk Graham N. C. Kirby graham@dcs.st-and.ac.uk Alan Dearle al@dcs.st-and.ac.uk Stuart
More information5 The Control Structure Diagram (CSD)
5 The Control Structure Diagram (CSD) The Control Structure Diagram (CSD) is an algorithmic level diagram intended to improve the comprehensibility of source code by clearly depicting control constructs,
More information3. Simple Types, Variables, and Constants
3. Simple Types, Variables, and Constants This section of the lectures will look at simple containers in which you can storing single values in the programming language C++. You might find it interesting
More informationWELCOME! Lecture 3 Thommy Perlinger
Quantitative Methods II WELCOME! Lecture 3 Thommy Perlinger Program Lecture 3 Cleaning and transforming data Graphical examination of the data Missing Values Graphical examination of the data It is important
More informationTHE CYBERSECURITY LITERACY CONFIDENCE GAP
CONFIDENCE: SECURED WHITE PAPER THE CYBERSECURITY LITERACY CONFIDENCE GAP ADVANCED THREAT PROTECTION, SECURITY AND COMPLIANCE Despite the fact that most organizations are more aware of cybersecurity risks
More informationBasic Concepts of Reliability
Basic Concepts of Reliability Reliability is a broad concept. It is applied whenever we expect something to behave in a certain way. Reliability is one of the metrics that are used to measure quality.
More informationStudy of Procedure Signature Evolution Software Engineering Project Preetha Ramachandran
Study of Procedure Signature Evolution Software Engineering Project Preetha Ramachandran preetha@soe.ucsc.edu 1.0 Introduction Software evolution is a continuous process. New features are frequently added,
More informationLecture 10: Introduction to Correctness
Lecture 10: Introduction to Correctness Aims: To look at the different types of errors that programs can contain; To look at how we might detect each of these errors; To look at the difficulty of detecting
More informationClient Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module
Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as
More informationTHE ADHERENCE OF OPEN SOURCE JAVA PROGRAMMERS TO STANDARD CODING PRACTICES
THE ADHERENCE OF OPEN SOURCE JAVA PROGRAMMERS TO STANDARD CODING PRACTICES Mahmoud O. Elish Department of Computer Science George Mason University Fairfax VA 223-44 USA melish@gmu.edu ABSTRACT The use
More informationCpk: What is its Capability? By: Rick Haynes, Master Black Belt Smarter Solutions, Inc.
C: What is its Capability? By: Rick Haynes, Master Black Belt Smarter Solutions, Inc. C is one of many capability metrics that are available. When capability metrics are used, organizations typically provide
More informationVIDEO SEARCHING AND BROWSING USING VIEWFINDER
VIDEO SEARCHING AND BROWSING USING VIEWFINDER By Dan E. Albertson Dr. Javed Mostafa John Fieber Ph. D. Student Associate Professor Ph. D. Candidate Information Science Information Science Information Science
More informationIntroduction to Software Testing
Introduction to Software Testing Software Testing This paper provides an introduction to software testing. It serves as a tutorial for developers who are new to formal testing of software, and as a reminder
More informationFree-Free, Fixed or Other Test Boundary Conditions for the Best Modal Test?
Free-Free, Fixed or Other Test Boundary Conditions for the Best Modal Test? S. Perinpanayagam and D. J. Ewins Vibration Engineering Centre Mechanical Engineering Department Imperial College of Science,
More information4 th Annual Security Survey: IT Executives and Network Administrators
4 th Annual Security Survey: IT Executives and Network Administrators Commissioned study conducted by October 10, 2008 About VanDyke Software VanDyke Software (www.vandykesoftware.com) is a privately held
More informationRapid Bottleneck Identification A Better Way to do Load Testing. An Oracle White Paper June 2008
Rapid Bottleneck Identification A Better Way to do Load Testing An Oracle White Paper June 2008 Rapid Bottleneck Identification A Better Way to do Load Testing. RBI combines a comprehensive understanding
More informationDemand fetching is commonly employed to bring the data
Proceedings of 2nd Annual Conference on Theoretical and Applied Computer Science, November 2010, Stillwater, OK 14 Markov Prediction Scheme for Cache Prefetching Pranav Pathak, Mehedi Sarwar, Sohum Sohoni
More informationCSCI S-Q Lecture #12 7/29/98 Data Structures and I/O
CSCI S-Q Lecture #12 7/29/98 Data Structures and I/O Introduction The WRITE and READ ADT Operations Case Studies: Arrays Strings Binary Trees Binary Search Trees Unordered Search Trees Page 1 Introduction
More information