A study of the impact of C++ on software maintenance

Size: px
Start display at page:

Download "A study of the impact of C++ on software maintenance"

Transcription

1 A study of the impact of C++ on software maintenance Dennis Mancl AT&T Bell Laboratories Warren, NJ William Havanas AT&T Bell Laboratories Columbus, OH Abstract This is a case study of the impact of the C++ programming language and object oriented design on the maintenance phase of a software development project. The results show increased software reuse and reduced complexity of software changes in the parts of the project that use object oriented design. 1. Introduction The goal of this study is to show the maintenance phase impact of designing a software system using object oriented design and coding the system in C++. This system, henceforth called CXR, is a system that is written part in C and part in C++, so it offers an cxcellent opportunity to compare the maintainability of software written in the two languages. Actually, most of the comparisons that are made in this paper compare subsystems that have been written in different styles rather than in different languages - this study is an attempt to evaluate the differences between object oriented programming and conventional structured programming. The results of this study should help projects that are in the early phases of design, who need to understand how much C++ s data abstraction and object oriented programming capabilities will affect their overall systems cost. The measurements in this paper identify some of the places where object oriented programming had a significant impact on increasing productivity and reducing complexity in the maintenance phase of the CXR project. The productivity of the CXR programmers was increased because they were able to reuse a large amount of existing code. The complexity in making changes to CXR s object oriented parts was lower - new features were added to CXR with fewer changes to existing function interfaces, for example. The measurements in this paper will attempt to quantify the amount of software reuse and the level of complexity of software changes. 2. Some information about CXR CXR is a medium-sized software system that supports some of the operation of telephone company central office equipment. It currently consists of about onehalf C code and one-half C++ code, plus some shell scripts, form definition files, help files, and other miscellaneous code. CXR uses C++ in different ways in different segments of the system. In some parts of the system, the C++ compiler is used to provide argument type checking for code written in C. In other parts, C++ is used to build data abstractions. A data abstraction is a collection of data structure definitions and a set of subroutines that implement a well-defined interface to the data structures. In some CXR code, C++ is used to implement an object oriented design. In an object oriented design, data abstractions are built in a hierarchy. New classes are built from existing general classes instead of being built completely from scratch. CXR is a typical small development project - a group of development programmers wrote the first version of the system some time ago. A team of programmers has been responsible since then for maintenance of the system. This team fixes bugs found in the field, develops new code for adapting to changes in the systems with which CXR communicates, and builds new features needed by customers. Maintenance is not a completely accurate term for the activities of the current CXR team, unless the term is redefined to mean a broader set of activities. In fact, most software engineering texts give a broader definition of maintenance that includes more than just bug fixes. Lientz and Swanson give three major categories of maintenance activities: corrective maintenance adaptive maintenance, and perfective maintenance/ ]. In their study, they estimate that maintenance activities, on the average, are 21% corrective, 25% adaptive, 50% perfective, and 4% other activity. (The numbers for CXR, based on number of lines of code modified for each MR class, are roughly the same: 30% corrective, 13% adaptive, and 57% CH2921-5/90/0000/0063$01.OO IEEE 63

2 perfective.) The perfective and adaptive activities, the development of new features or the elaboration of existing features, are a place where object oriented design has a positive impact. 3. Class census of CXR CXR was developed in a combination of languages (C and C++) using a combination of programming paradigms (conventional structured design, abstract data types, and object oriented design). As the system has evolved, an increasing amount of the CXR code is in C++ class definitions. The following tables summarize this growth in the use of C++ s major mechanism for structuring data and functions: version file count source (.h;.c) lines (ncsl) CXRl 348(148;200) CXR2 599(247;352) CXR3 599(247;352) CXR4 830(332;498) CXR5 867(347;520) lines of class code TABLE 1. CXR files and classes summary version number of number of classes derived classes CXRl CxR cxr cxr cxr TABLE 2. CXR derived classes summary I version % class code lines of code I per class CxRl cxr cxr cxr TABLE 3. CXR class code summary The ratio of derived classes to the total number of classes is changing slowly - it is close to 1:3 for all of the releases in the table. The percentage of class code in CXR is steadily increasing. Many new features in CXR have been added by building new classes - some of them are classes derived from existing classes. Some parts of CXR have been redesigned to use C++ better. These redesigned subsystems define more data abstractions and use more of the standard C++ libraries. 4. CXR software reuse In the past two years, between CXR3 and CXR5, the amount of C++ class reuse savings has doubled. This level of reuse has allowed the functionality of the CXR system to be greatly increased with only a modest increase in the number of lines of code. The total size of CXR during this time only increased by 40% (see Table l), but without the extra reuse, CXR s size would have increased 93% (see Tables 3 and 4). CXR has obtained reuse benefits from the use of C++ in three different ways. First, CXR has used many of the standard C++ libraries throughout the system. Character strings are stored and manipulated with the String library, associative tables use the Map library, and linked lists use the List library[*]. These libraries have been very useful, saving a considerable amount of development work. For the purposes of this study - in order to focus on the reuse benefits of C++ based on code that the CXR project wrote themselves - only the reuse savings from CXR s own classes will be counted. Second, the CXR team has developed many of their own general-purpose and special-purpose C++ class libraries. The use of these classes by multiple programmers on the project has avoided the development of duplicate functionality in different parts of the system - similar code developed by different developers because of poor communication and documentation. The table below summarizes the reuse savings from CXR-developed class libraries. Reuse is counted in terms of reused lines of code - any class that is used in more than one subsystem of CXR is counted here as being reused. version total reused reuse code class code savings (CXRdeveloped) CXR % CXR % I CXR % TABLE 4. CXR regular class reuse Third, CXR contains an increasing number of derived classes - classes that are built from other classes using inheritance. Table 1 shows that the number of derived classes has been increasing over time. A simple measure of the amount of inheritance reuse is a count of the total number of lines of code in the classes that a derived class inherits from. The following table summarizes this inheritance reuse measurement for three different releases of CXR. 64

3 ~ in version total reused reuse code class code savings (inheritance) CXR % CXR % CXR % TABLE 5. CXR inheritance reuse What is the impact of reuse on the development of CxR5? Suppose that CXR5 had been developed with no further exploitation of regular class reuse or inheritance reuse. The total size of CXR5 would be increased by = if there were no additional use of regular class reuse, and the total size would be increased by = if there were no additional use of inheritance reuse. As a result, CXR5 would have been lines instead of lines - or a 93% increase over CXR3 instead of a 40% increase. 5. CXRMRdata This study continues with some information about the differences in the cost of maintenance caused by different programming paradigms. To get information about these differences, it is necessary to look at the parts of the CXR system that have been changed. All changes in CXR are made through Modification Requests (hereafter referred to as MRs). The CXR project has been recording all modification requests and has been logging all source code changes since January The following data was collected from inspecting CXR MRs. For each MR, the subsystem or subsystems affected by the MR was determined. Each MR has been classified as an accommodation because of external change, a bug fix, or an MR that introduces new features to a subsystem. These MR classes correspond to the adaptive, corrective, and perfective maintenance activities cited in section 2. In addition, each MR is checked to determine if any interfaces are changed. The interface is said to be changed if there is any change to either internal or external interfaces including global variables, changes in function arguments, either type or number, and changes in return values. If there is a change in an interface, the programmer usually has to do more work performing the change the programmer has to be careful to check every module or subsystem that may depend on that interface. A high ratio of MRs that cause interface changes is an indication that the structure of the system does not provide adequate data hiding. The complete data is in an internal memo131. The table below is a summary of information about the CXR MRs. Each MR is associated with a CXR process. There are 58 processes in CXR. Each process is assigned to a category: OOP (object oriented programming), - ADT (abstract data type), or - structure (conventional structured programming). All processes written entirely in C are assigned to the structure category. Processes written in C++ are assigned to the OOP category if they use inheritance to define new classes, the ADT category if they use C++ classes without inheritance, and the structure category if they use C++ without defining new classes. The miscellaneous category contains the MRs that fit into none of the other categories - MRs that affect database scripts, screen form descriptions, and other data files. 22.5% ADT 58.8% misc 1.9% total % I TABLE 6. MR analysis summary OOP - object oriented programming ADT - abstract data types structure - standard C type structured programming misc - other files including several specialized CXR script languages The MRs can also be divided into three classes based on their root cause: - MRs that are accommodations because of external change (13.8% of the total MRs) - MRs that are related to bug fixes (65.6%), and - MRs that introduce new features (20.6%). The following table shows the proportion of MRs that change the interface: 65

4 Proportion of MRs that change the interface - OOP modules Proportion of MRs that change the interface - structured modules i 25% I TABLE 7. MR breakdown by class and by interface changes 6. Comparison of interface changes Why is this data interesting? Interface changes are responsible for very complex software modifications, while the changes required when no interface change takes place are often localized to a single subsystem or module. An interface change might be only partially performed - this can cause subtle problems, for instance, when a function is called with the wrong number or types of arguments. Reducing interface changes saves modification and testing effort. The data in the previous section show that in the OOP modules there is a significant reduction in the number of MRs that cause interface changes. The following are the proportion of MRs that changed interfaces in the OOP and structured programming categories. MRs with interface change in OOP modules: 22.5% MRs with interface change in structured programming modules: 37.7% The z test is used to compare the proportion of logic fixes. The z test value for this data is 3.80, which corresponds to a 99.99% significance level. There are significant differences in the proportion of changed interfaces caused by accommodations and by bug fixes, but there is a striking difference in the proportion of changed interfaces in the set of MRs that introduce new features. In the OOP modules, only 40.9% of the new feature MRs produced an interface change. On the other hand, in the structured programming modules, 73.8% of the new feature MRs had an interface change. Using the z test to compare these proportions, the z test value for this data is 3.40, which corresponds to a 99.97% significance level. The greatest impact of object oriented programming on reducing the amount of interface change is in the development of new features, which usually accounts for about one-half of the work in the maintenance phase. No comparison can be made for the abstract data types sections of CXR because there is not enough MR data to make a statistical comparison. 7. Another type of MR comparison Another set of estimates of the amount of work per MR is based on measuring the size and distribution of the changed code. This section will look at the differences in the number of lines changed, the number of files changed, and the number of contiguous code blocks changed per MR. For the CXR system overall, this data is inconclusive - with apparently contradictory results generated by each of these approaches. This section presents a description of the measurement method, the actual data with some qualitative analysis, and finally some statistical analysis of this data. The first way to measure the amount of work involved in resolving an MR is to count the number of source lines changed for the MR. This measurement puts the most emphasis on long or complex code that is added - this occurs most often when new features are added to a system. A second way to measure the amount of work involved in resolving an MR is to count the number of files modified for the MR. Counting the number of files changed is an easy measurement to perform, since the names of the modified files are stored in the MR database. It gives an indication about how much work was done in reserving the source files for update, and it gives a naive estimate of the amount of work in crosschecking the changes in a collection of files. This model assumes that simple changes modify only one source file and complex changes modify many source files. A third way to measure work is to count the number of contiguous blocks of code that are changed. This is a compromise measurement. Adding a new function counts as one block changed, just the same as a single line logic fix. But for many software fixes, it is much easier to add a small block of code in one place than to add an equivalent number of lines scattered throughout a file. Small scattered changes are dominant in the 66

5 Average lines per file 191 I 302 Average number of lines modified per MR n OoP 8.6 structure OOP ADT structure TABLE 8. Average source lines per file by category The following table shows that the number of source lines modified per MR is lower for OOP modules. The number of source lines modified is significantly lower for the accommodations to change MRs. The number of MRs in each category is lower in this table than in Table 5, because this table only includes MRs that caused changes to C or C++ source files. MRs that only changed database scripts, screen form descriptions, and other data files are not being considered here. In the following tables, a stands for accommodations to external change, b stands for bug fixes, and f for new features. Average number of lines modified per MR OOP structure 224 I I TABLE 9. Summary of source lines modified per IvfR Not surprisingly, bug fixes cause relatively small changes and new features made changes that were somewhat larger. The main difference between the OOP MRs and the structure MRs in this table is found in the accommodations to change column - the structure MRs resulted in many more lines changed. The accommodations MRs in the object oriented parts of the system are more like bug fixes, and they are more like new features in the structured programming part of the system. The following table contains the data for the second measure described above: the count of the number of files modified per MR. I TABLE 10. Summary of files modified per MR The number of files per MR is considerably greater for the OOP modules. This data suggests that the average OOP MR requires more work than the average structure MR, which contradicts the previous measurement of the number of lines modified per MR. Actually, two major factors are at work here. First, the number of lines per file is significantly smaller in the CXR OOP code than in the rest of CXR. Second, object oriented programming in C++ makes heavier use of header files than ordinary structured programming. This causes frequent changes to the header file that defines the structure of a class (especially when there is an interface change) as well as the source file that defines the class s functions. (In fact, there were 1.2 header files modified per OOP MR and only 0.37 header files modified per structure MR.) The table that follows shows that the number of files modified per MR is much higher for the MRs where the interface was changed. 1 category 1 interface changed? of process OOP structure Yes no 2.33 files/mr 1.31 files/mr TABLE 11. Files modified per MR based on interface change The third metric discussed above looks at the number of contiguous code blocks changed. This measure may also clarify the apparent discrepancy between the first two measurements. The rationale for this metric is that it is usually easier to change a small block of contiguous lines than to change an equal number of lines that are scattered throughout a program. The table below summarizes the number of code blocks modified per IvfR for the different MR types. The number of code blocks modified can be found by counting the number of modification commands output by the diff program. I 61

6 category of process OOP class of MR a b f total blocks/mr 1 structure I I 18.2 blocks/mr I TABLE 12. Summary of code blocks modified per MR For this measure, there is no overall difference between OOP and structure MRs. There are two major statistical results in this data. First, analyzing the differences in total lines per MR and blocks per MR, there is a significant difference in the number of lines per MR between the OOP MRs and structure MRs (z = 1.77, so the difference is significant at the 96% confidence level), but no significant difference between the number of blocks modified per MR (z = 0.105), and a significant increase in files per MR for the OOP MRs (2 = 2.94). Fewer lines per change in the OOP modules reflect the benefits of software reuse. The increase in the number of files changed per MR for OOP modules seems to be due to a change in file structure - the similarity in the number of blocks changed per MR indicates that the use of object oriented programming has not caused an increase in number of small changes throughout the system. Second, the difference in the accommodations to change MRs is very striking. As expected, the number of source lines changed for new feature MRs is significantly greater than that for bug fix MRs (z = 3.37 for OOP new feature versus OOP bug fix; z = 3.78 for structure new feature versus structure bug fix - both are at the 99.9+% confidence level). But the average number of source lines modified for OOP accommodations MRs is not significantly different from that for OOP bug fixes ( z = 0.472). On the other hand, the average number of source lines modified for structure accommodations MRs is significantly greater than that for structure bug fixes (2 = 2.34, which corresponds to a 99% confidence level). These two results show some of the benefits of the object oriented paradigm. The first result, a decrease in the number of lines modified per MR with no change in the number of blocks modified per MR, shows that data abstraction is at work. The data abstractions in the C++ classes raise the level of the language used in the code. One class member function call often can replace several lines of regular C code. The second result demonstrates that the OOP code is more flexible - the complexity of the average adaptive change is not significantly different from the complexity of the average corrective change. 8. Redesign of the CXR dbload processes As part of the effort to compare structured design methods with object oriented design methods, the CXR team redesigned one of the most troublesome subsystems in CXR - the dbload processes. There are currently eight different dbload processes in CXR. These processes are used to populate CXR s databases from information collected from different computer systems. CXR communicates with several different kinds of systems and there are several different data types in CXR s user databases. 9. Current implementation of the dbload processes The first generic of CXR had only one dbload process. Each new dbload process was created by cloning - making a copy of an existing dbload process and making it work for the new computer system. This method is an efficient way to develop the code for new dbload processes, but it causes problems later for fixing bugs. The dbload processes represent only about 6.8% of the total code in CXR (about 9000 lines of code), but these processes have accounted for 12% of the total CXR bug fixes. The z test can be used to test the significance of the variation of the proportion of bug fixes in the dbload processes from the proportion of total code that comprises the dbload processes. The z value is 4.50, so the variation is significant at the 99.99% level. In conclusion, the current CXR dbload processes are trouble. They have caused problems for the CXR developers because their structure is inflexible and error-prone. 10. New design for dbload process The new design for the CXR dbload processes has an object oriented structure. This structure was chosen for two reasons: - The parts of the code in the existing dbload processes that are exactly the same in several different processes can be factored out. This will decrease the size of the code and will reduce the amount of effort in fixing bugs in the dbload processes. - New computer system types and new data types will be added in the near future. In an object oriented structure, adding these new types will be much easier. The new design will have only one dbload process. The deferred binding of member functions will permit one dbload process to do the job of all eight dbload processes in the old design. Inheritance is used to specify the portions of the dbload process that can change for communicating with different computer systems. 11. Estimated code reduction in the new design The current dbload processes currently total 9000 source lines. The total code for the new design has been estimated at about 3500 source lines. The smaller size of this process, together with its improved 68

7 structure, will greatly reduce the maintenance problems for this area of the CXR system. The CXR team is planning to implement this design, so there will be verification of these claims in the near future. They also plan to support two new computer system types soon, so the extendibility of this design will be tested - it should only be necessary to write two new classes with no changes required to the main part of the dbload process. 12. Conclusions The object oriented parts of the CXR system have produced several maintenance benefits. - Software reuse has doubled (from lines to lines reused) as more of the system is built in an object oriented way. CXR is using more classes, and more of those classes are derived from existing classes. CXR has achieved about 34% reuse savings from writing and using its own class libraries, and it gets about 19% reuse savings in developing classes just by using inheritance rather than building each new class from scratch. New features are added to the object oriented sections with less effort and with fewer interface changes within the system. New features in the object oriented sections of CXR change the interface of functions only 41% of the time, while new features added to the structured design parts of CXR change the interface 74% of the time. Interface changes cause the development and testing of these changes to be more difficult. New feature development is a significant part of the maintenance process, usually about one-half of maintenance activity. - Accommodations to external change in CXR s object oriented modules cause significantly fewer source lines to be modified than for similar changes in CXR s structured design modules. In CXR s object oriented modules, accommodations to external change affect the same number of source lines as bug fixes, on the average. On the other hand, the external accommodations MRs in the structured design sections have caused significantly more source lines to be changed. The number of files modified per MR is greater over all of the object oriented sections of CXR than for the structured programming sections, but the number of code blocks changed is about constant. - Redesign of selected subsystems using the object oriented paradigm are expected to save in maintenance effort. Redesign and reimplementation of CXR s dbload process is expected to decrease the size of the subsystem (estimated reduction = 60%) and will provide an organized method to follow for extending the system to communicate with new systems. The CXR team looks forward to the benefits of these maintenance savings for years to come. REFERENCES 1. B. Lientz and E. Swanson, Software Maintenance Management, Addison-Wesley, C++ Libraries, Manuals and Tutorials, Release 2, Software Systems Department (59112), AT&T Bell Laboratories, Liberty Corner, NJ, William Havanas, CXR mr list, internal memorandum. 69

Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code (contd)

Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code (contd) Feasibility of Testing to Code (contd) Feasibility of Testing to Code (contd) An incorrect code fragment for determining if three integers are equal, together with two test cases Flowchart has over 10

More information

Introduction to Software Engineering

Introduction to Software Engineering Introduction to Software Engineering Gérald Monard Ecole GDR CORREL - April 16, 2013 www.monard.info Bibliography Software Engineering, 9th ed. (I. Sommerville, 2010, Pearson) Conduite de projets informatiques,

More information

Why is Inheritance Important?

Why is Inheritance Important? Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 A Controlled Experiment on Inheritance Depth as a Cost Factor in Maintenance Walter F. Tichy University of Karlsruhe Why is Inheritance Important?

More information

Session 4b: Review of Program Quality

Session 4b: Review of Program Quality Session 4b: Review of Program Quality What makes one program "better" than another? COMP 170 -- Fall, 2013 Mr. Weisert What is a good program? Suppose we give the same assignment to two programmers (or

More information

4.2 Variations on a Scheme -- Lazy Evaluation

4.2 Variations on a Scheme -- Lazy Evaluation [Go to first, previous, next page; contents; index] 4.2 Variations on a Scheme -- Lazy Evaluation Now that we have an evaluator expressed as a Lisp program, we can experiment with alternative choices in

More information

Analysis of the Test Driven Development by Example

Analysis of the Test Driven Development by Example Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 /

More information

In his paper of 1972, Parnas proposed the following problem [42]:

In his paper of 1972, Parnas proposed the following problem [42]: another part of its interface. (In fact, Unix pipe and filter systems do this, the file system playing the role of the repository and initialization switches playing the role of control.) Another example

More information

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia Object Oriented Programming in Java Jaanus Pöial, PhD Tallinn, Estonia Motivation for Object Oriented Programming Decrease complexity (use layers of abstraction, interfaces, modularity,...) Reuse existing

More information

Robust Memory Management Schemes

Robust Memory Management Schemes Robust Memory Management Schemes Prepared by : Fadi Sbahi & Ali Bsoul Supervised By: Dr. Lo ai Tawalbeh Jordan University of Science and Technology Robust Memory Management Schemes Introduction. Memory

More information

Part 7 - Object Oriented Concepts Classes, Objects, Properties and Methods

Part 7 - Object Oriented Concepts Classes, Objects, Properties and Methods Part 7 - Object Oriented Concepts Classes, Objects, Properties and Methods Object Orientated Paradigm... 2 Abstract Data Types (ADT) & Encapsulation... 3 Encapsulation... 5 Classes and Objects... 6 Methods

More information

MISRA-C Compliance Matrix _ Using PC Lint

MISRA-C Compliance Matrix _ Using PC Lint MISRA-C Compliance Matrix _ Using PC Lint by Chris Hills Revision 0.2 15 April 2002 Part of the QuEST series:- QA4 chris@phaedsys.org quest.phaedsys.org quest.phaedsys.org page 2 of 26 15/04/2002 MISRA-C

More information

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do? Topics 1) What is trying to do? Manifesto & XP Chapter 3.1-3.3 2) How to choose plan-driven vs? 3) What practices go into (XP) development? 4) How to write tests while writing new code? CMPT 276 Dr. B.

More information

Cocoa Design Patterns. Erik M. Buck October 17, 2009

Cocoa Design Patterns. Erik M. Buck October 17, 2009 Cocoa Design Patterns Erik M. Buck October 17, 2009 Topics n What is a design pattern? n Why Focus on design patterns? n What is the Model View Controller design pattern? n Using MVC n When wouldn t you

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Lecture Notes on Programming Languages

Lecture Notes on Programming Languages Lecture Notes on Programming Languages 85 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered

More information

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS Design evaluation is most critical activity during software development process. Design heuristics are proposed as a more accessible and informal means

More information

Cypress Adopts Questa Formal Apps to Create Pristine IP

Cypress Adopts Questa Formal Apps to Create Pristine IP Cypress Adopts Questa Formal Apps to Create Pristine IP DAVID CRUTCHFIELD, SENIOR PRINCIPLE CAD ENGINEER, CYPRESS SEMICONDUCTOR Because it is time consuming and difficult to exhaustively verify our IP

More information

THE ADHERENCE OF OPEN SOURCE JAVA PROGRAMMERS TO STANDARD CODING PRACTICES

THE 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 information

3.8 Separate Compilation

3.8 Separate Compilation 3 Names, Scopes, and Bindings 3.8 Separate Compilation Probably the most straightfward mechanisms f separate compilation can be found in module-based languages such as Modula-2, Modula-3, and Ada, which

More information

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering Slide 1.1 CHAPTER 1 Slide 1.2 Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill, 2011 THE SCOPE OF SOFTWARE ENGINEERING Stephen R. Schach Outline Slide 1.3 Outline (contd)

More information

Unit 1 : Principles of object oriented programming

Unit 1 : Principles of object oriented programming Unit 1 : Principles of object oriented programming Difference Between Procedure Oriented Programming (POP) & Object Oriented Programming (OOP) Divided Into Importance Procedure Oriented Programming In

More information

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering Object-Oriented and Classical Software Engineering Slide 1.1 Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach srs@vuse.vanderbilt.edu CHAPTER 1 Slide 1.2 THE SCOPE OF SOFTWARE ENGINEERING 1 Outline

More information

Grade Weights. Language Design and Overview of COOL. CS143 Lecture 2. Programming Language Economics 101. Lecture Outline

Grade Weights. Language Design and Overview of COOL. CS143 Lecture 2. Programming Language Economics 101. Lecture Outline Grade Weights Language Design and Overview of COOL CS143 Lecture 2 Project 0% I, II 10% each III, IV 1% each Midterm 1% Final 2% Written Assignments 10% 2.% each Prof. Aiken CS 143 Lecture 2 1 Prof. Aiken

More information

Operating Systems. Memory Management. Lecture 9 Michael O Boyle

Operating Systems. Memory Management. Lecture 9 Michael O Boyle Operating Systems Memory Management Lecture 9 Michael O Boyle 1 Memory Management Background Logical/Virtual Address Space vs Physical Address Space Swapping Contiguous Memory Allocation Segmentation Goals

More information

Lecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction

Lecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction Lecture 13: Object orientation Object oriented programming Introduction, types of OO languages Key concepts: Encapsulation, Inheritance, Dynamic binding & polymorphism Other design issues Smalltalk OO

More information

Hands on Assignment 1

Hands on Assignment 1 Hands on Assignment 1 CSci 2021-10, Fall 2018. Released Sept 10, 2018. Due Sept 24, 2018 at 11:55 PM Introduction Your task for this assignment is to build a command-line spell-checking program. You may

More information

Forth Meets Smalltalk. A Presentation to SVFIG October 23, 2010 by Douglas B. Hoffman

Forth Meets Smalltalk. A Presentation to SVFIG October 23, 2010 by Douglas B. Hoffman Forth Meets Smalltalk A Presentation to SVFIG October 23, 2010 by Douglas B. Hoffman 1 CONTENTS WHY FMS? NEON HERITAGE SMALLTALK HERITAGE TERMINOLOGY EXAMPLE FMS SYNTAX ACCESSING OVERRIDDEN METHODS THE

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

Code Harvesting with Zeligsoft CX

Code Harvesting with Zeligsoft CX Code Harvesting with Zeligsoft CX Zeligsoft November 2008 Code Harvesting with Zeligsoft CX Code harvesting with component modeling increases software reuse and improves developer efficiency for embedded

More information

CSCE 156 Computer Science II

CSCE 156 Computer Science II CSCE 156 Computer Science II Lab 11 - Linked Lists Dr. Chris Bourke Prior to Lab 1. Review this laboratory handout prior to lab. 2. Read the following wiki entry on linked lists: http://en.wikipedia.org/wiki/linked_list

More information

Sample Exam. Advanced Test Automation - Engineer

Sample Exam. Advanced Test Automation - Engineer Sample Exam Advanced Test Automation - Engineer Questions ASTQB Created - 2018 American Software Testing Qualifications Board Copyright Notice This document may be copied in its entirety, or extracts made,

More information

Integration and Testing. Uses slides from Lethbridge & Laganiere, 2001

Integration and Testing. Uses slides from Lethbridge & Laganiere, 2001 Integration and Testing Uses slides from Lethbridge & Laganiere, 2001 Testing phases: V model Requirements Acceptance Testing Specifications System Testing Design Integration Testing Detailed Design Unit

More information

Contents. Management issues. Technical issues. Mark Fewster.

Contents. Management issues. Technical issues. Mark Fewster. 1 Experience Driven Test Automation Mark Fewster mark@grove.co.uk www.grove.co.uk Contents Management issues management support setting appropriate goals success on a large scale Technical issues testware

More information

SOFTWARE LIFE-CYCLE MODELS 2.1

SOFTWARE LIFE-CYCLE MODELS 2.1 SOFTWARE LIFE-CYCLE MODELS 2.1 Outline Software development in theory and practice Software life-cycle models Comparison of life-cycle models 2.2 Software Development in Theory Ideally, software is developed

More information

Statistical Testing of Software Based on a Usage Model

Statistical Testing of Software Based on a Usage Model SOFTWARE PRACTICE AND EXPERIENCE, VOL. 25(1), 97 108 (JANUARY 1995) Statistical Testing of Software Based on a Usage Model gwendolyn h. walton, j. h. poore and carmen j. trammell Department of Computer

More information

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis UNIT I INTRODUCTION OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis Design Implementation Testing Maintenance

More information

An Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes

An Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes An Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes FPGA designs are becoming too large to verify by visually checking waveforms, as the functionality

More information

Hashing. Hashing Procedures

Hashing. Hashing Procedures Hashing Hashing Procedures Let us denote the set of all possible key values (i.e., the universe of keys) used in a dictionary application by U. Suppose an application requires a dictionary in which elements

More information

Spotfire and Tableau Positioning. Summary

Spotfire and Tableau Positioning. Summary Licensed for distribution Summary So how do the products compare? In a nutshell Spotfire is the more sophisticated and better performing visual analytics platform, and this would be true of comparisons

More information

Programmazione. Prof. Marco Bertini

Programmazione. Prof. Marco Bertini Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Introduction Why OO Development? Improved structure of software easier to: Understand Maintain Enhance Reusable

More information

Design Metrics for Object-Oriented Software Systems

Design Metrics for Object-Oriented Software Systems ECOOP 95 Quantitative Methods Workshop Aarhus, August 995 Design Metrics for Object-Oriented Software Systems PORTUGAL Design Metrics for Object-Oriented Software Systems Page 2 PRESENTATION OUTLINE This

More information

Domain Mapping for Product-line Requirements

Domain Mapping for Product-line Requirements Computer Science Technical Reports Computer Science 2004 Domain Mapping for Product-line Requirements Kendra Schmid Iowa State University Follow this and additional works at: http://lib.dr.iastate.edu/cs_techreports

More information

MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015

MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015 CS161, Lecture 2 MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015 1 Introduction Today, we will introduce a fundamental algorithm design paradigm, Divide-And-Conquer,

More information

Object Oriented Programming

Object Oriented Programming Binnur Kurt kurt@ce.itu.edu.tr Istanbul Technical University Computer Engineering Department 1 Version 0.1.2 About the Lecturer BSc İTÜ, Computer Engineering Department, 1995 MSc İTÜ, Computer Engineering

More information

Good Technology State of BYOD Report

Good Technology State of BYOD Report Good Technology State of BYOD Report New data finds Finance and Healthcare industries dominate BYOD picture and that users are willing to pay device and service plan costs if they can use their own devices

More information

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic WG14 N1161 Rationale for TR 24732 Extension to the programming language C Decimal Floating-Point Arithmetic Contents 1 Introduction... 1 1.1 Background... 1 1.2 The Arithmetic Model... 3 1.3 The Encodings...

More information

Advanced Object-Oriented Programming Introduction to OOP and Java

Advanced Object-Oriented Programming Introduction to OOP and Java Advanced Object-Oriented Programming Introduction to OOP and Java Dr. Kulwadee Somboonviwat International College, KMITL kskulwad@kmitl.ac.th Course Objectives Solidify object-oriented programming skills

More information

CSE 100 Advanced Data Structures

CSE 100 Advanced Data Structures CSE 100 Advanced Data Structures Overview of course requirements Outline of CSE 100 topics Review of trees Helpful hints for team programming Information about computer accounts Page 1 of 25 CSE 100 web

More information

Integrating Domain Specific Modeling into the Production Method of a Software Product Line

Integrating Domain Specific Modeling into the Production Method of a Software Product Line Integrating Domain Specific Modeling into the Production Method of a Software Product Line Gary J. Chastek Software Engineering Institute John D. McGregor Clemson University Introduction This paper describes

More information

Implementation and Integration

Implementation and Integration Implementation and Implementations and integration are two different phases performed in sequence Problems with this approach To test a module independently, Development and SQA members need Stubs for

More information

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Objective PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Explain what is meant by compiler. Explain how the compiler works. Describe various analysis of the source program. Describe the

More information

Implementing a Statically Adaptive Software RAID System

Implementing a Statically Adaptive Software RAID System Implementing a Statically Adaptive Software RAID System Matt McCormick mattmcc@cs.wisc.edu Master s Project Report Computer Sciences Department University of Wisconsin Madison Abstract Current RAID systems

More information

CS261: A Second Course in Algorithms Lecture #16: The Traveling Salesman Problem

CS261: A Second Course in Algorithms Lecture #16: The Traveling Salesman Problem CS61: A Second Course in Algorithms Lecture #16: The Traveling Salesman Problem Tim Roughgarden February 5, 016 1 The Traveling Salesman Problem (TSP) In this lecture we study a famous computational problem,

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized

More information

Maintenance Phase. Maintenance Type

Maintenance Phase. Maintenance Type Maintenance Phase Any change to any component of the product after it has passed the acceptance test Requirements Specification Design Implementation Documentation Manuals 1 Maintenance Type Corrective

More information

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module

Client 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 information

Day 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University

Day 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University Day 3 COMP 1006/1406A Summer 2016 M. Jason Hinek Carleton University today s agenda assignments 1 was due before class 2 is posted (be sure to read early!) a quick look back testing test cases for arrays

More information

Improving Internet Connectivity in Rural West Virginia

Improving Internet Connectivity in Rural West Virginia Team Four-year Transforms 2/16/2017 SYST 699 Spring 2017 Improving Internet Connectivity in Rural West Virginia Contents Contents 1 Introduction 2 Background Information 2 Existing Services and Coverage

More information

Application Protocol Breakdown

Application Protocol Breakdown Snort 2.0: Protocol Flow Analyzer Authors: Daniel Roelker Sourcefire Inc. Marc Norton Sourcefire Inc. Abstract The Snort 2.0 Protocol Flow Analyzer

More information

The Impact of Parallel Loop Scheduling Strategies on Prefetching in a Shared-Memory Multiprocessor

The Impact of Parallel Loop Scheduling Strategies on Prefetching in a Shared-Memory Multiprocessor IEEE Transactions on Parallel and Distributed Systems, Vol. 5, No. 6, June 1994, pp. 573-584.. The Impact of Parallel Loop Scheduling Strategies on Prefetching in a Shared-Memory Multiprocessor David J.

More information

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science) Lecture 09 Ada to Software Engineering Mr. Mubashir Ali Lecturer (Dept. of dr.mubashirali1@gmail.com 1 Summary of Previous Lecture 1. ALGOL 68 2. COBOL 60 3. PL/1 4. BASIC 5. Early Dynamic Languages 6.

More information

Why do we have to know all that? The stored program concept (the procedural paradigm) Memory

Why do we have to know all that? The stored program concept (the procedural paradigm) Memory Session 1b: Background & Preliminaries What is computer programming? The stored-program concept. The procedural paradigm. What is a programming language? The object-oriented paradigm C#: ancestors & origins

More information

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language Categories of languages that support OOP: 1. OOP support is added to an existing language - C++ (also supports procedural and dataoriented programming) - Ada 95 (also supports procedural and dataoriented

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

Low-Power Technology for Image-Processing LSIs

Low-Power Technology for Image-Processing LSIs Low- Technology for Image-Processing LSIs Yoshimi Asada The conventional LSI design assumed power would be supplied uniformly to all parts of an LSI. For a design with multiple supply voltages and a power

More information

Reengineering II. Transforming the System

Reengineering II. Transforming the System Reengineering II Transforming the System Recap: Reverse Engineering We have a detailed impression of the current state We identified the important parts We identified reengineering opportunities We have

More information

Open2Test Test Automation Framework for Selenium Web Driver - Introduction

Open2Test Test Automation Framework for Selenium Web Driver - Introduction for Selenium Web Driver - Version 1.0 April 2013 DISCLAIMER Verbatim copying and distribution of this entire article is permitted worldwide, without royalty, in any medium, provided this notice is preserved.

More information

Achieving Architectural Design Concepts with Remote Method Invocations

Achieving Architectural Design Concepts with Remote Method Invocations Achieving Architectural Design Concepts with Remote Method Invocations L.ilteri ÖNEY E1305937 Computer Engineering Department - METU Dr.Semih ÇETN ABSTRACT Motivation to write this article is based on

More information

Data Abstraction. Hwansoo Han

Data Abstraction. Hwansoo Han Data Abstraction Hwansoo Han Data Abstraction Data abstraction s roots can be found in Simula67 An abstract data type (ADT) is defined In terms of the operations that it supports (i.e., that can be performed

More information

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized around the notion of procedures Procedural abstraction

More information

Lecture Notes on Garbage Collection

Lecture Notes on Garbage Collection Lecture Notes on Garbage Collection 15-411: Compiler Design Frank Pfenning Lecture 21 November 4, 2014 These brief notes only contain a short overview, a few pointers to the literature with detailed descriptions,

More information

The term "physical drive" refers to a single hard disk module. Figure 1. Physical Drive

The term physical drive refers to a single hard disk module. Figure 1. Physical Drive HP NetRAID Tutorial RAID Overview HP NetRAID Series adapters let you link multiple hard disk drives together and write data across them as if they were one large drive. With the HP NetRAID Series adapter,

More information

Chapter 3:: Names, Scopes, and Bindings (cont.)

Chapter 3:: Names, Scopes, and Bindings (cont.) Chapter 3:: Names, Scopes, and Bindings (cont.) Programming Language Pragmatics Michael L. Scott Review What is a regular expression? What is a context-free grammar? What is BNF? What is a derivation?

More information

PERL Scripting - Course Contents

PERL Scripting - Course Contents PERL Scripting - Course Contents Day - 1 Introduction to PERL Comments Reading from Standard Input Writing to Standard Output Scalar Variables Numbers and Strings Use of Single Quotes and Double Quotes

More information

Lesson 10B Class Design. By John B. Owen All rights reserved 2011, revised 2014

Lesson 10B Class Design. By John B. Owen All rights reserved 2011, revised 2014 Lesson 10B Class Design By John B. Owen All rights reserved 2011, revised 2014 Table of Contents Objectives Encapsulation Inheritance and Composition is a vs has a Polymorphism Information Hiding Public

More information

Chapter 3:: Names, Scopes, and Bindings (cont.)

Chapter 3:: Names, Scopes, and Bindings (cont.) Chapter 3:: Names, Scopes, and Bindings (cont.) Programming Language Pragmatics Michael L. Scott Review What is a regular expression? What is a context-free grammar? What is BNF? What is a derivation?

More information

Metrics and OO. SE 3S03 - Tutorial 12. Alicia Marinache. Week of Apr 04, Department of Computer Science McMaster University

Metrics and OO. SE 3S03 - Tutorial 12. Alicia Marinache. Week of Apr 04, Department of Computer Science McMaster University and OO OO and OO SE 3S03 - Tutorial 12 Department of Computer Science McMaster University Complexity Lorenz CK Week of Apr 04, 2016 Acknowledgments: The material of these slides is based on [1] (chapter

More information

CHAPTER 6 MODIFIED FUZZY TECHNIQUES BASED IMAGE SEGMENTATION

CHAPTER 6 MODIFIED FUZZY TECHNIQUES BASED IMAGE SEGMENTATION CHAPTER 6 MODIFIED FUZZY TECHNIQUES BASED IMAGE SEGMENTATION 6.1 INTRODUCTION Fuzzy logic based computational techniques are becoming increasingly important in the medical image analysis arena. The significant

More information

FIGURE 3. Two-Level Internet Address Structure. FIGURE 4. Principle Classful IP Address Formats

FIGURE 3. Two-Level Internet Address Structure. FIGURE 4. Principle Classful IP Address Formats Classful IP Addressing When IP was first standardized in September 1981, the specification required that each system attached to an IP-based Internet be assigned a unique, 32-bit Internet address value.

More information

Macro Architecture in Pictures Mark Tabladillo PhD, marktab Consulting, Atlanta, GA Associate Faculty, University of Phoenix

Macro Architecture in Pictures Mark Tabladillo PhD, marktab Consulting, Atlanta, GA Associate Faculty, University of Phoenix Paper PS16_05 Macro Architecture in Pictures Mark Tabladillo PhD, marktab Consulting, Atlanta, GA Associate Faculty, University of Phoenix ABSTRACT The qualities which SAS macros share with object-oriented

More information

UNIT II Requirements Analysis and Specification & Software Design

UNIT II Requirements Analysis and Specification & Software Design UNIT II Requirements Analysis and Specification & Software Design Requirements Analysis and Specification Many projects fail: because they start implementing the system: without determining whether they

More information

EUROPEAN LABORATORY FOR PARTICLE PHYSICS LABORATOIRE EUROPEEN POUR LA PHYSIQUE DES PARTICULES

EUROPEAN LABORATORY FOR PARTICLE PHYSICS LABORATOIRE EUROPEEN POUR LA PHYSIQUE DES PARTICULES EUROPEAN LABORATORY FOR PARTICLE PHYSICS LABORATOIRE EUROPEEN POUR LA PHYSIQUE DES PARTICULES CERN-ST-99-015 February, 1999 COMPUTERIZED ASSET MANAGEMENT AND MAINTENANCE SYSTEMS IN ST E. Sánchez-Corral

More information

Automatic Format Generation Techniques For Network Data Acquisition Systems

Automatic Format Generation Techniques For Network Data Acquisition Systems Automatic Format Generation Techniques For Network Data Acquisition Systems Benjamin Kupferschmidt Technical Manager - TTCWare Teletronics Technology Corporation Eric Pesciotta Director of Systems Software

More information

Lecture 10: Introduction to Correctness

Lecture 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 information

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018 News in RSA-RTE 10.2 updated for sprint 2018.18 Mattias Mohlin, May 2018 Overview Now based on Eclipse Oxygen.3 (4.7.3) Contains everything from RSARTE 10.1 and also additional features and bug fixes See

More information

Sample Exam. Advanced Test Automation Engineer

Sample Exam. Advanced Test Automation Engineer Sample Exam Advanced Test Automation Engineer Answer Table ASTQB Created - 08 American Stware Testing Qualifications Board Copyright Notice This document may be copied in its entirety, or extracts made,

More information

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance Contents Topic 04 - Inheritance I. Classes, Superclasses, and Subclasses - Inheritance Hierarchies Controlling Access to Members (public, no modifier, private, protected) Calling constructors of superclass

More information

Program Correctness and Efficiency. Chapter 2

Program Correctness and Efficiency. Chapter 2 Program Correctness and Efficiency Chapter 2 Chapter Objectives To understand the differences between the three categories of program errors To understand the effect of an uncaught exception and why you

More information

OBJECT-ORIENTED MODELING AND DESIGN. Introduction

OBJECT-ORIENTED MODELING AND DESIGN. Introduction OBJECT-ORIENTED MODELING AND DESIGN Introduction Contents: Introduction. Course Relevance Learning Outcomes Overview of the syllabus Introduction to Object Orientation Introduction Object Oriented Approach

More information

For example, let's say that we have the following functional specification:

For example, let's say that we have the following functional specification: FRAME IT: THE NUTS AND BOLTS OF RAD Marty Brown, CommScope, Inc., Claremont, NC INTRODUCTION The road to finishing a quality application does not have to be a long and confusing one. With the advent of

More information

1 Introduction. 2 Web Architecture

1 Introduction. 2 Web Architecture 1 Introduction This document serves two purposes. The first section provides a high level overview of how the different pieces of technology in web applications relate to each other, and how they relate

More information

Managing Concurrent Software Releases in Management and Test

Managing Concurrent Software Releases in Management and Test Software Management 2001 San Diego, CA, USA February 12-16, 2001 Managing Concurrent Software Releases in Management and Test David A. Shinberg Government Communications Laboratory Lucent Technologies

More information

Write perfect C code to solve the three problems below.

Write perfect C code to solve the three problems below. Fall 2017 CSCI 4963/6963 Week 12 David Goldschmidt goldschmidt@gmail.com Office: Amos Eaton 115 Office hours: Mon/Thu 1:00-1:50PM; Wed 1:00-2:50PM Write perfect C code to solve the three problems below.

More information

Software Architectures. Lecture 6 (part 1)

Software Architectures. Lecture 6 (part 1) Software Architectures Lecture 6 (part 1) 2 Roadmap of the course What is software architecture? Designing Software Architecture Requirements: quality attributes or qualities How to achieve requirements

More information

Programming. Languages & Frameworks. Hans-Petter Halvorsen, M.Sc. O. Widder. (2013). geek&poke. Available:

Programming. Languages & Frameworks. Hans-Petter Halvorsen, M.Sc. O. Widder. (2013). geek&poke. Available: Programming O. Widder. (2013). geek&poke. Available: http://geek-and-poke.com Languages & Frameworks Hans-Petter Halvorsen, M.Sc. Implementation Planning Maintenance Testing Implementation The Software

More information

Advanced FPGA Design Methodologies with Xilinx Vivado

Advanced FPGA Design Methodologies with Xilinx Vivado Advanced FPGA Design Methodologies with Xilinx Vivado Alexander Jäger Computer Architecture Group Heidelberg University, Germany Abstract With shrinking feature sizes in the ASIC manufacturing technology,

More information

Reduced Instruction Set Computers

Reduced Instruction Set Computers Reduced Instruction Set Computers The acronym RISC stands for Reduced Instruction Set Computer. RISC represents a design philosophy for the ISA (Instruction Set Architecture) and the CPU microarchitecture

More information

Patterns in Software Engineering

Patterns in Software Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 10 Refactoring Patterns Part 1 1 Refactoring: Definition Refactoring: A change made to the internal structure of software to make it easier

More information

ARCHITECTURE MIGRATION USING DSM IN A LARGE-SCALE SOFTWARE PROJECT

ARCHITECTURE MIGRATION USING DSM IN A LARGE-SCALE SOFTWARE PROJECT 14 TH INTERNATIONAL DEPENDENCY AND STRUCTURE MODELING CONFERENCE, DSM 12 KYOTO, JAPAN, SEPTEMBER 13 14, 2012 ARCHITECTURE MIGRATION USING DSM IN A LARGE-SCALE SOFTWARE PROJECT Takashi Maki Corporate Technology

More information

Optimizing Dynamic Memory Management

Optimizing Dynamic Memory Management Optimizing Dynamic Memory Management 1 Goals of this Lecture Help you learn about: Details of K&R heap mgr Heap mgr optimizations related to Assignment #5 Faster free() via doubly-linked list, redundant

More information