A Method of Detecting Code Cloning in Open Source Software
|
|
- Elijah Bernard Lamb
- 5 years ago
- Views:
Transcription
1 A Method of Detecting Code Cloning in Open Source Software Z. Wei 1 and D. Deugo 2 1 The School of Computer Science, Carleton University, Ottawa, Ontario, Canada 2 The School of Computer Science, Carleton University, Ottawa, Ontario, Canada Abstract - In this paper, we discuss an approach to detect code copying in open source software. This approach generates a small fingerprint that includes the main features of the class files contained in a Java Archive (Jar) file. By comparing the intrinsic and extrinsic features of the class files, the approach can find the cloned code in anonymous Jar files. This approach provides a tool to detect cloned code correctly and effectively Keywords: Open Source Software, Code Cloning, Intrinsic Features, Extrinsic Features 1 INTRODUCTION Open source software (OSS) has become critical for most organizations, as there are many advantages of using it [1]: such as high-quality software, lower software costs, numerous technical support and accountability, active communities, and less dependence on vendors. OSS has impact on more than developers and IT-managers but also potentially for all the people throughout the value chain of an organization including suppliers, customers, and partners. Today, more and more OSS is developed and adopted in commercial products. Although organizations have already obtained benefits from OSS, they have to take a critical consideration of OSS and face some questions raised by using it. For example, OSS uses licenses to protect itself and its developers. However, many of these licenses are different and mutually incompatible. Before using OSS, organizations must survey the licenses of the software and obey them to develop their commercial products. However, code of unknown origin is encountered occasionally in development and its pedigree must be made clear. This action is related to the legality and success of software products. 1.1 Problem In this paper, we look at detecting software clones that are written in the Java programming language. We use the known software code to compare with the software that is copied from an anonymous source. After comparing, we can determine whether an organization is copying another s code illegally. There are many existing clone detection methods, such as string matching. But sometimes those methods don t work when the original source code is not available. To avoid this disadvantage, our method focuses on accessible attributes of class files and calculates the similarity of their attributes. 1.2 Motivation The Open Source community attracts very bright, very motivated developers, who although are frequently unpaid and lack disciplined [2]. For many developers, peer review and acclaim is important. They prefer to build software with clean design, reliability and maintainability that is admired by their peers. They develop software to contribute the open source community and get benefits from others contribution. But there are some phenomena, to which we have to pay attention, destroying the balance of the open source community. Some organizations or individuals copy intellectual property, and just make it their own by modifying the code with out any legal right to do so. This behavior shows a complete lack of respect for other developers work and creates an attack on the ecosystem of the community. We must take action to prevent these unethical behaviors and protect authors rights and the community. This is our main motivation for detecting cloned code in OSS. The problems of exploiting OSS to improve one s own product and avoiding infringing others intellectual property are concerned by commercial software developers and project managers. Some issues [3] are related to this consideration: Some commercial software suppliers have been sued by open source advocates for downloading the open source while ignoring the license obligations. Customers want to know the details of the software that are provided by IT companies. Software engineers use some open source in their programs but they do not declare them. Some OSS licenses may influence the intellectual property of software products which include the corresponding open source code. Based on those issues, organizations must take measures to protect against these legal risks of open source. They should periodically conduct a complete audit of their source code, making sure developers and managers know exactly what open source is inside and what the license obligations of that open source are. But the price of the service supported by a professional audit firm is high, and sometime there is no access to the original source code [8]. We devote our focus to audit open source software with low cost. 1.3 Goals There are many available applications detecting code cloning with simple string-matching [10]. We pay more attention to the specific attributes of a class, such as parameters of methods and return value. We take those features from a Jar file to create a unique footprint and then calculate the similarity between the known Jar s fingerprint and an unknown Jar file. The application outputs the result to display a match percentage between the two Jars.
2 1.4 Objectives Several clone detection techniques have been described and implemented [8] [9] [10]. But most of those techniques require the original source code and require much memory. Our objective is to make a small fingerprint using the particular features of the compiled classes in a Jar file and not all the source code. Our approach does not rely upon the original source code because it does not tend to be available in the Jar files. We mainly pick up basic features from the Jar files. Although we utilize less information that describes the features of the code, it does not mean low accuracy. Following Walenstein [4], clone detection adequacy depends on applications and purposes. Intellectual property thieves may modify the name and order of methods but rarely features of the class. Class files contain distinguished features that are the key points to comparing two files. Comparing these features is the core idea of our approach. 1.5 Outline In section 2, we will discuss relevant background work. In section 3 we concentrate on our design, algorithm and what decisions we made. In the section 4 and section 5, we compare several groups of files, present results, draw our conclusions and look at future work. 2 BACKGROUND Much research in the field of clone code detection has been done. Most of it has a high degree of accuracy. However some disadvantages exist in that software, e.g. time-consuming, memory-waste, and especially requiring the source files. Cate Huston [10] uses winnowing to fingerprint Jar files and some potentially interesting information (e.g. filenames, size of the Jar file, the number of entities, and the Jar name) of the Jars to detect significant similarities of those Jars. From the conclusion of that paper we can learn that those potentially interesting information are less consistent. This demonstrates what can be changed in the software clone and the key point of comparison is the features or contents of methods. Some researchers have paid attention to the situation that there is no source code available but compiled code. Carson Browns and David Barrera [8] use the modification of n-gram method to generate the fingerprint of the compiled Java program. They make much improvement including detection speed, small fingerprint and good accuracy. Patrice Arruda et al [9] use graph to describe the dependency of classes and calculate the similarity with matrix. Their approach focuses on the relationship between classes. We follow this research. We also take Jar files as input, and generate the fingerprint of the Class files that are Java s compiled files. The difference between our approaches and [8] is that we do not consider all the byte code of methods in Class files but just the features of Class files, e.g. the number and type of the input parameters of methods, the type of the return value of methods and the like. These features are termed as intrinsic features in our approach. Although software clones can include many modifications, such as renaming classes, variables and methods, adding some inessential code lines, and changing the path of files, the main function of the method will not be changed. In our approach, the relationship between the classes is considered as the extrinsic features. The idea of extracting extrinsic features of a class in our approach is enlightened by [9]. 3 APPROACH 3.1 Design Considering that Java Jar files mainly comprise class files, our approach analyses the class files and uses features of class files to describe fingerprints of Jar files. We divide the features of class files into two groups: intrinsic features and extrinsic features. Intrinsic features of a class file include the description of its methods. The number and types of input parameters and the type that the method returns compose the basic features of a method in a class. The extrinsic features are composed of the relationships of classes, for example super classes, interfaces, and inner classes of a class. These features can indicate the purpose of the class file so that the approach can distinguish the behavior of cloning. Employing these intrinsic and extrinsic features we discover the cloning code. 3.2 Rules Generally, Jar files are kinds of Zip files. Thus before extracting features from class files, we need to decompress the Jar file using the Java Class Foundation Library API [5], java.util.jar, to finish this job. We use the JarResource class which is from a Java World article [6] to obtain the byte codes of all classes in a Jar file. The org.netbeans.modules.classfile API [7] can transform the byte codes of a class to an object in memory. Therefore our algorithm can manipulate class files to get all the features of methods in a class file. To clarify our rules of calculation, we assume that is an original Jar file which is used to generate a fingerprint and is an anonymous Jar file which is possible the cloning Jar file. denotes a Class file that belongs to. denotes a Class file that belongs to. denotes a method that belongs to. denotes a method that belongs to. In our algorithm, we use eight basic rules to demonstrate how to calculate the similarity of two Jar files. Based on the similarity, the cloning Jar file can be detected correctly. The similarity of two methods is calculated by Rule 1: Rule 1: If two methods have same number of parameters, same type of parameters and the same type of return value, then the similarity of two methods similarity is 0. is 1; otherwise, the If the similarity of two methods is obtained, the similarity of intrinsic features of two classes can be analyzed by Rule 2: Rule 2: the similarity of classes S in class = n k =1 S method n
3 is the number of methods in a class. The similarity of extrinsic features of two classes can be calculated by Rule 3 to Rule 6: Rule 3: the similarity Rule 4: the similarity classes are same; otherwise is 0. Rule 5: the similarity is 1 if the types of super is 1 if the number of interfaces is same and the types of interface are same; otherwise is 0. Rule 6: the similarity is 1 if the number of inner classes is same and the types of inner classes are same; otherwise is 0. The similarity of two classes is calculated by combining and as Rule 7: Rule 7: S class = 0.6S in class + 0.4S ex class The weight of is set to sixty percentage points because our approach mainly focuses on methods in a class. The similarity of two Jar files is calculated by the Rule 8: Rule 8: is the number of classes in the original Jar file, indicates the maximum of similarity between and, is the number of classes in the anonymous Jar file. 3.3 Algorithm Our approach compares the original Jar file and the anonymous Jar file with two components. The first component is Fingerprint Generator that manages to generate a fingerprint from the original Jar file. Figure 1 describes the main steps of generating fingerprint. The Fingerprint Generator visits every class in the original Jar file, obtains the intrinsic features and extrinsic features of a class and finally produces the fingerprint of the Jar file. The second component is Fingerprint Detector that computes the similarity of two Jar files through eight rules mentioned. Figure 2 describes the main steps of generating the similarity. 3.4 Decisions Made Our approach only focuses on class files in a Jar file because class files are the core of a Jar file. The similarity between two methods is simply calculated by Rule 1 and expressed by 1 or 0. There is no value of similarity between 0 and 1. As a prototype of first implementation, we intuitively keep the algorithms simple. Although this calculation losses some accuracy, the intention can be described clearly and results are reasonably. We also only consider the basic types of Java such as int, short, long, byte, float, double, string, char and boolean, and the original objects of Java such as Integer. Except these primary types, other self-defined types are uniformly defined as Object type. Through these simple categories of types of parameter, our approach can cover most cases when comparing two methods. In the course of implementing the algorithm, some classes in the different Jar files are very similar but the similarity calculated by our algorithm is not high. However, some classes are different but the similarity is high. Through analyzing the source code artificially, we find that these classes have several methods that have no parameters and no return value. This circumstance will influence the result of comparison. Assuming that there are three classes A, B and C, Class A has 6 methods (X1, X2, X3, X4, X5, X6) among which there are two methods (X5 and X6) have no parameters and no return value. Class B has 4 methods (Y1, Y2, Y3, Y4). Class C has 4 methods (Z1, Z2, Z3, Z4) among which there are two methods (Z3 and Z4) have no parameters and no return value. Assuming X1, X2, X3 are equal to Y1, Y2, Y3, respectively, so the similarity of Class A and B is 0.5. Assuming X1, X2 are equal to Z1, Z2, respectively, the similarity of Class A and C is 0.67 because Class C has two methods Z3 and Z4 which have no parameters and no return values, and Class A also has X5 and X6 which have no parameters and no return values. Even if Z3, Z4 and X5, X6 are entirely different, the similarity is high based on rules. Actually, Class A is more similar to Class B than Class C. Thus methods of no parameters and return value have negative effect in our algorithm. In most classes, methods of no parameter and return value tend to be less important. Considering this situation, we decided to remove methods that have no parameters and return value when calculating the similarity of methods. 4 RESULTS To examine the correctness and effectiveness of our approach, eight selected Jar files are used as the testing set. The environment of testing and the performance are described first. Then the testing results and analysis are discussed. 4.1 Performance The implementation runs on a laptop. Its technical parameters are shown as below: Processor: Pentium(R) Dual-Core CPU 2.30GHz Memory: 4.00 GB System Type: 64-bit Operating System The size of Jar files ranges from 1Kb to 2.7Mb. There are four Jar files that come from Eclipse IDE [11] plugins, two files from our own implementations, and two files from Spring Framework [12]. The worst case is the largest pair of Jar file. Our approach spends seconds for comparison. Although the algorithm runs slowly, the results were good.
4 Figure 1. Fingerprint Generator Figure 2. Fingerprint Detector
5 4.2 Testing Results In the set of testing Jars, we first choose the simplest Jar file, test.jar, which contains one class including three simple methods, to compare with this Jar itself. The result is very good as is the execution time. Next, when comparing two entirely different Jar files (test.jar and com.zxwei.comp5900.jar), the result computed by our approach is correct. The first two Jar files are devised to test our basic idea. The Jar files, org.eclipse.help.ui_3.2.0.v jar and org.eclipse.help.ui_3.5.0.v , were obtained from Eclipse plugins folder under Eclipse IDE. They have similar functions, but they are different versions. The similarity of org.eclipse.help.ui_3.2.0.v jar to itself is first calculated and then the similarity to org.eclipse.help.ui_3.5.0.v is done. The result shows that the former s similarity is higher than the latter s. This data is reasonable because the difference between two versions is larger than one version itself. Working with the different versions of Jar files of JUnit [13], we discover that their similarity is low because JUnit version 4 has many modifications of structures and functions compared with JUnit version 3.8. JUnit version 4 introduces the annotation function to facilitate programming test units. Our approach exploits the number of classes in the first Jar file. Although the similarity is different, the time consumed by calculation is almost equal. Finally, we compare two larger Jar files, one from Spring Framework which is 2645KB and another from Spring Framework 2.5 which is 2773KB. The result reveals that the similarity of these two Jar files is 89.07% and the calculation execution time is s. This indicates the higher version of the Spring Frame has some modification but the main part is similar to the old one. Table 1 lists the all our results of our testing set. Through the testing, our approach shows the good performance on both correctness and efficiency. 5 CONCLUSION Our approach of detecting code cloning in open source software focuses on class files in Jar files. We believe that utilizing the intrinsic and extrinsic features of classes can effectively seek out code cloning and our approach is immune to simple refactoring. Although our approach has slow execution speed, the result were correct and accurate. 5.1 Review goal and contributions Our algorithm and implementation fulfill the objective of detecting code cloning and provide a tool to help companies or institutions, who want to use open source software, to detect the existence of copied code in their software or software they use, thus avoiding lawsuits from distributed or using code with license incompatibilities. 5.2 Future work Our approach has three main aspects for improvement. In the calculation of the similarity of two methods, we can set different weight to the number of parameters, types of parameters and types of return value instead of a Boolean value (0 or 1). We believe this improvement can further increase the accuracy of our algorithms. In the aspect of extrinsic features, attributes of a class and references of other objects in a class are both important properties of a class. Adding these features into the calculation of extrinsic features can promote the accuracy of calculating the similarity of two classes. In the aspect of intrinsic features, considering structures of if-else and while clauses can strengthen detailed description of a method, thereby increasing the accuracy of the algorithm. 6 REFERENCES [1] Jason Williams, Peter Clegg, Emmett Dulaney. Expanding Choice: Moving to Linux and Open Source with Novell Open Enterprise Server. Sams, Mar 7, [2] Nic Peeling, Julian Satchell. Analysis of the Impact of Open Source Software. QinetiQ, [3] Manage The License Obligations and Risks That Come With Developing Commercial Software While Embedding Open Source Inside. Accessed December 4, [4] A. Walenstein, Nitin Jyoti, Junwei Li, Yun Yang, and Arun Lakhotia. Problems creating task-relevant clone detection reference data. In Proceedings of the Working Conference on Reverse Engineering (WCRE 03). IEEE Computer Society Press (2003): [5] Java Platform API Specification Accessed December 4, [6] Arthur Choi, Java Tip 49: How to extract Java resources from JAR and zip archives, JavaWorld.com, January 3rd, 1998, Accessed December 4, [7] org.netbeans.modules.classfile, Accessed December 4, [8] Carson Brown, David Barrera, Dwight Deugo: FiGD: An Open Source Intellectual Property Violation Detector. SEKE (2009): , [9] Patrice Arruda, Pierre Chamoun, Dwight Deugo: A Framework for Detecting Code Piracy Using Class Structure, The 22nd International Conference on Software Engineering and Knowledge Engineering (SEKE 2010), Knowledge Systems Institute Graduate School, , [10] Cate Huston, Fingerprinting Jar Files Using Winnowing, %20using%20winnowing.pdf. Accessed December 4, [11] Eclipse IDE, December 4, [12] Spring Framework, Accessed December 4, 2010.
6 TABLE I. [13] JUnit, Accessed December 4, TESTING RESULTS Fingerprint Generated From Anonymous Java Jar File Certainty Time (s) test.jar test.jar 100% test.jar com.zxwei.comp5900.jar 0% org.eclipse.help.ui_3.2.0.v20060 org.eclipse.help.ui_3.2.0.v % Jar Jar org.eclipse.help.ui_3.2.0.v20060 org.eclipse.help.ui_3.5.0.v % Jar Jar junit-3.8.jar junit-3.8.jar 98.0% 1.01 junit-3.8.jar junit-4.1.jar % junit-4.1.jar junit-4.1.jar % spring jar spring-2.5.jar 89.07%
Creating a Lattix Dependency Model The Process
Creating a Lattix Dependency Model The Process Whitepaper January 2005 Copyright 2005-7 Lattix, Inc. All rights reserved The Lattix Dependency Model The Lattix LDM solution employs a unique and powerful
More informationCPE 101. Overview. Programming vs. Cooking. Key Definitions/Concepts B-1
CPE 101 Lecture 2: Problems, Algorithms, and Programs (Slides adapted from a UW course, copyrighted and used by permission) Overview High-level survey Problems, algorithms, and programs Problem solving
More informationDid the availability of refactoring functionality of IDEs result in refactorings being performed more frequently?
Page 1 / 1 Did the availability of refactoring functionality of IDEs result in refactorings being performed more frequently? Abstract...1 1 Introduction...1 2 Implementation...2 3 Questionnaire...2 3.1
More informationGraphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub
Lebanese University Faculty of Science Computer Science BS Degree Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub 2 Crash Course in JAVA Classes A Java
More informationWhat s NetBeans? Like Eclipse:
What s NetBeans? Like Eclipse: It is a free software / open source platform-independent software framework for delivering what the project calls "richclient applications" It is an Integrated Development
More informationType Checking and Type Equality
Type Checking and Type Equality Type systems are the biggest point of variation across programming languages. Even languages that look similar are often greatly different when it comes to their type systems.
More informationWhistleblower Submission Form
Whistleblower Submission Form FORM C Complete this form IF you are a lawyer a whistleblower (or a group of whistleblowers) who wish to be anonymous. If you are a individual whistleblower, please complete
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 informationExploring Dynamic Compilation Facility in Java
Exploring Dynamic Compilation Facility in Java Dingwei He and Kasi Periyasamy Computer Science Department University of Wisconsin-La Crosse La Crosse, WI 54601 kasi@cs.uwlax.edu Abstract Traditional programming
More informationNational Open Source Strategy
National Open Source Strategy Ministry of Communications & Information Technology - Egypt June 2014 Outline Background Vision & Mission Preliminary Targets Strategic Objectives Enablers Ministry of Communications
More informationEXAM PREPARATION GUIDE
When Recognition Matters EXAM PREPARATION GUIDE PECB Certified ISO/IEC 20000 Lead Auditor www.pecb.com The objective of the Certified ISO/IEC 20000 Lead Auditor examination is to ensure that the candidate
More informationIntroduction to Eclipse
Introduction to Eclipse Ed Gehringer Using (with permission) slides developed by Dwight Deugo (dwight@espirity.com) Nesa Matic (nesa@espirity.com( nesa@espirity.com) Sreekanth Konireddygari (IBM Corp.)
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 04: Exception Handling MOUNA KACEM mouna@cs.wisc.edu Spring 2018 Creating Classes 2 Introduction Exception Handling Common Exceptions Exceptions with Methods Assertions
More informationWA1278 Introduction to Java Using Eclipse
Lincoln Land Community College Capital City Training Center 130 West Mason Springfield, IL 62702 217-782-7436 www.llcc.edu/cctc WA1278 Introduction to Java Using Eclipse This course introduces the Java
More informationCOMP 250 Winter 2011 Reading: Java background January 5, 2011
Almost all of you have taken COMP 202 or equivalent, so I am assuming that you are familiar with the basic techniques and definitions of Java covered in that course. Those of you who have not taken a COMP
More informationSoftware Testing part II (white box) Lecturer: Giuseppe Santucci
Software Testing part II (white box) Lecturer: Giuseppe Santucci 4. White box testing White-box (or Glass-box) testing: general characteristics Statement coverage Decision coverage Condition coverage Decision
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 informationSymbol Tables. ASU Textbook Chapter 7.6, 6.5 and 6.3. Tsan-sheng Hsu.
Symbol Tables ASU Textbook Chapter 7.6, 6.5 and 6.3 Tsan-sheng Hsu tshsu@iis.sinica.edu.tw http://www.iis.sinica.edu.tw/~tshsu 1 Definitions Symbol table: A data structure used by a compiler to keep track
More informationReducing The De-linearization of Data Placement to Improve Deduplication Performance
Reducing The De-linearization of Data Placement to Improve Deduplication Performance Yujuan Tan 1, Zhichao Yan 2, Dan Feng 2, E. H.-M. Sha 1,3 1 School of Computer Science & Technology, Chongqing University
More informationData Types, Variables and Arrays. OOC 4 th Sem, B Div Prof. Mouna M. Naravani
Data Types, Variables and Arrays OOC 4 th Sem, B Div 2016-17 Prof. Mouna M. Naravani Identifiers in Java Identifiers are the names of variables, methods, classes, packages and interfaces. Identifiers must
More informationCMPSCI 187 / Spring 2015 Hangman
CMPSCI 187 / Spring 2015 Hangman Due on February 12, 2015, 8:30 a.m. Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 CMPSCI 187 / Spring 2015 Hangman Contents Overview
More informationEXAM PREPARATION GUIDE
When Recognition Matters EXAM PREPARATION GUIDE PECB Certified ISO 22000 Lead Auditor www.pecb.com The objective of the Certified ISO 22000 Lead Auditor examination is to ensure that the candidate has
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
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 informationOPEN SOURCE SECURITY ANALYSIS The State of Open Source Security in Commercial Applications
OPEN SOURCE SECURITY ANALYSIS The State of Open Source Security in Commercial Applications By Mike Pittenger, Vice President, Security Strategy Black Duck s On-Demand business conducts audits of customers
More informationAn analysis of object-based intelligent image
An analysis of object-based intelligent image processing and retrieval system Abstract-In order to improve the process of analysis and retrieval of images, it is necessary to examine the execution of such
More informationArchitectural Documentation 1
Architectural Documentation Architectural Documentation 1 The Purpose of Architectural Documentation The documentation shall give the reader good understanding of the application's architecture and design.
More informationSelenium Testing Course Content
Selenium Testing Course Content Introduction What is automation testing? What is the use of automation testing? What we need to Automate? What is Selenium? Advantages of Selenium What is the difference
More informationOPERATING SYSTEMS. Prescribed Text Book. Operating System Principles, Seventh Edition. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne
OPERATING SYSTEMS Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne 1 DEADLOCKS In a multi programming environment, several processes
More informationJava Archives Search Engine Using Byte Code as Information Source
Java Archives Search Engine Using Byte Code as Information Source Oscar Karnalim School of Electrical Engineering and Informatics Bandung Institute of Technology Bandung, Indonesia 23512012@std.stei.itb.ac.id
More informationCompaq Interview Questions And Answers
Part A: Q1. What are the difference between java and C++? Java adopts byte code whereas C++ does not C++ supports destructor whereas java does not support. Multiple inheritance possible in C++ but not
More informationDrawing Bipartite Graphs as Anchored Maps
Drawing Bipartite Graphs as Anchored Maps Kazuo Misue Graduate School of Systems and Information Engineering University of Tsukuba 1-1-1 Tennoudai, Tsukuba, 305-8573 Japan misue@cs.tsukuba.ac.jp Abstract
More informationThe role of semantic analysis in a compiler
Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationEXAM PREPARATION GUIDE
When Recognition Matters EXAM PREPARATION GUIDE PECB Certified ISO 9001 Lead Auditor www.pecb.com The objective of the PECB Certified ISO 9001 Lead Auditor examination is to ensure that the candidate possesses
More informationThe PCAT Programming Language Reference Manual
The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language
More informationAppendix: Generic PbO programming language extension
Holger H. Hoos: Programming by Optimization Appendix: Generic PbO programming language extension As explained in the main text, we propose three fundamental mechanisms to be covered by a generic PbO programming
More informationChapter 8 & Chapter 9 Main Memory & Virtual Memory
Chapter 8 & Chapter 9 Main Memory & Virtual Memory 1. Various ways of organizing memory hardware. 2. Memory-management techniques: 1. Paging 2. Segmentation. Introduction Memory consists of a large array
More informationA Minimum Cost Handover Algorithm for Mobile Satellite Networks
Chinese Journal of Aeronautics 21(2008) 269-274 Chinese Journal of Aeronautics www.elsevier.com/locate/cja A Minimum Cost Handover Algorithm for Mobile Satellite Networks Zhang Tao*, Zhang Jun School of
More informationCPS122 Lecture: From Python to Java last revised January 4, Objectives:
Objectives: CPS122 Lecture: From Python to Java last revised January 4, 2017 1. To introduce the notion of a compiled language 2. To introduce the notions of data type and a statically typed language 3.
More informationSymbol Tables Symbol Table: In computer science, a symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is
More informationPrimitive Types. Four integer types: Two floating-point types: One character type: One boolean type: byte short int (most common) long
Primitive Types Four integer types: byte short int (most common) long Two floating-point types: float double (most common) One character type: char One boolean type: boolean 1 2 Primitive Types, cont.
More informationFrequently Asked Questions about SAS Environment Manager on SAS 9.4
ABSTRACT Paper SAS0575-2017 Frequently Asked Questions about SAS Environment Manager on SAS 9.4 Zhiyong Li, SAS Institute Inc. SAS Environment Manager is the predominant tool for managing your SAS environment.
More informationProgramming in C++ 5. Integral data types
Programming in C++ 5. Integral data types! Introduction! Type int! Integer multiplication & division! Increment & decrement operators! Associativity & precedence of operators! Some common operators! Long
More informationCMPSCI 187 / Spring 2015 Implementing Sets Using Linked Lists
CMPSCI 187 / Spring 2015 Implementing Sets Using Linked Lists Due on Tuesday February 24, 2015, 8:30 a.m. Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 CMPSCI
More informationSEEK: Scalable Extraction of Enterprise Knowledge
SEEK: Scalable Extraction of Enterprise Knowledge Joachim Hammer Dept. of CISE University of Florida 26-Feb-2002 1 Project Overview Faculty Joachim Hammer Mark Schmalz Computer Science Students Sangeetha
More informationLists. Michael P. Fourman. February 2, 2010
Lists Michael P. Fourman February 2, 2010 1 Introduction The list is a fundamental datatype in most functional languages. ML is no exception; list is a built-in ML type constructor. However, to introduce
More informationSTQA Mini Project No. 1
STQA Mini Project No. 1 R (2) C (4) V (2) T (2) Total (10) Dated Sign 1.1 Title Mini-Project 1: Create a small application by selecting relevant system environment/ platform and programming languages.
More informationA B2B Search Engine. Abstract. Motivation. Challenges. Technical Report
Technical Report A B2B Search Engine Abstract In this report, we describe a business-to-business search engine that allows searching for potential customers with highly-specific queries. Currently over
More informationTHOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS
THOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS LOGISTICS HW5 due today Project presentation on 12/6 Review for final on 12/6 2 EXAMPLE: NPM https://twitter.com/garybernhardt/status/1067111872225136640
More informationAdaptive Spatiotemporal Node Selection in Dynamic Networks
Adaptive Spatiotemporal Node Selection in Dynamic Networks Pradip Hari, John B. P. McCabe, Jonathan Banafato, Marcus Henry, Ulrich Kremer, Dept. of Computer Science, Rutgers University Kevin Ko, Emmanouil
More informationGeneral Objective:To understand the basic memory management of operating system. Specific Objectives: At the end of the unit you should be able to:
F2007/Unit6/1 UNIT 6 OBJECTIVES General Objective:To understand the basic memory management of operating system Specific Objectives: At the end of the unit you should be able to: define the memory management
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 04: Exception Handling MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Creating Classes 2 Introduction Exception Handling Common Exceptions Exceptions with Methods Assertions and
More informationA Weight Based Attack on the CIKS-1 Block Cipher
A Weight Based Attack on the CIKS-1 Block Cipher Brian J. Kidney, Howard M. Heys, Theodore S. Norvell Electrical and Computer Engineering Memorial University of Newfoundland {bkidney, howard, theo}@engr.mun.ca
More informationLab 2: Object-Oriented Design 12:00 PM, Jan 31, 2018
CS18 Integrated Introduction to Computer Science Fisler, Nelson Contents Lab 2: Object-Oriented Design 12:00 PM, Jan 31, 2018 1 Terminology 1 2 Class Hierarchy Diagrams 2 2.1 An Example: Animals...................................
More informationTechnology for Merchandise Planning and Control
Contents: Technology for Merchandise Planning and Control Module Seven: Enhancing Charts Using What if Analysis REFERENCE/PAGES Enhancing Charts... Unit J 1 XL2007 Customizing a Data Series... Excel 226,
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 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 informationUsing Dependency Graphs to Detect Open Source Intellectual Property Violation
1 Using Dependency Graphs to Detect Open Source Intellectual Property Violation Gail Carmichael - gbanaszk@connect.carleton.ca and Siamak Sharif - SiamakSharif@hotmail.com Abstract Clone detection is important
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 information1 Preface and overview Functional enhancements Improvements, enhancements and cancellation System support...
Contents Contents 1 Preface and overview... 3 2 Functional enhancements... 6 2.1 "Amazonification" of the application... 6 2.2 Complete integration of Apache Solr... 7 2.2.1 Powerful full text search...
More informationIBM Enterprise Records Performance Best Practices
IBM Enterprise Records Performance Best Practices Page 1 of 47 TABLE OF CONTENTS 1 INTRODUCTION... 4 1.1 TERMS... 4 1.2 REQUIRED CONCEPTS... 4 2 FILE PLAN MODELING FOR PERFORMANCE... 5 2.1 RETENTION MODEL...
More informationChapter. Focus of the Course. Object-Oriented Software Development. program design, implementation, and testing
Introduction 1 Chapter 5 TH EDITION Lewis & Loftus java Software Solutions Foundations of Program Design 2007 Pearson Addison-Wesley. All rights reserved Focus of the Course Object-Oriented Software Development
More informationcode pattern analysis of object-oriented programming languages
code pattern analysis of object-oriented programming languages by Xubo Miao A thesis submitted to the School of Computing in conformity with the requirements for the degree of Master of Science Queen s
More informationQuestions. 6. Suppose we were to define a hash code on strings s by:
Questions 1. Suppose you are given a list of n elements. A brute force method to find duplicates could use two (nested) loops. The outer loop iterates over position i the list, and the inner loop iterates
More informationThis slide is relevant to providing either a single three hour training session or explaining how a series of shorter sessions focused on per chapter
Welcome to the OpenChain Curriculum Slides. These slides can be used to help train internal teams about FOSS compliance issues and to conform with the OpenChain Specification. You can deliver these slides
More informationLPI Approved Training Partner (LPI ATP) Program Agreement
The following agreement is herewith concluded between: - hereinafter Partner - and Open Source Certification GmbH, LPI Central Europe, Karthäuserstraße 8, 34117 Kassel, Germany, (hereafter, LPI CE ) Preamble
More informationThis course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units.
This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units. Introduction Overview Advancements in technology are
More informationHow are Developers Treating License Inconsistency Issues? A Case Study on License Inconsistency Evolution in FOSS Projects
How are Developers Treating License Inconsistency Issues? A Case Study on License Inconsistency Evolution in FOSS Projects Yuhao Wu 1(B), Yuki Manabe 2, Daniel M. German 3, and Katsuro Inoue 1 1 Graduate
More informationThe type of all data used in a C++ program must be specified
The type of all data used in a C++ program must be specified A data type is a description of the data being represented That is, a set of possible values and a set of operations on those values There are
More informationPosition Sort. Anuj Kumar Developer PINGA Solution Pvt. Ltd. Noida, India ABSTRACT. Keywords 1. INTRODUCTION 2. METHODS AND MATERIALS
Position Sort International Journal of Computer Applications (0975 8887) Anuj Kumar Developer PINGA Solution Pvt. Ltd. Noida, India Mamta Former IT Faculty Ghaziabad, India ABSTRACT Computer science has
More informationImplementation of Customized FindBugs Detectors
Implementation of Customized FindBugs Detectors Jerry Zhang Department of Computer Science University of British Columbia jezhang@cs.ubc.ca ABSTRACT There are a lot of static code analysis tools to automatically
More informationVARIABLES AND TYPES CITS1001
VARIABLES AND TYPES CITS1001 Scope of this lecture Types in Java the eight primitive types the unlimited number of object types Values and References The Golden Rule Primitive types Every piece of data
More informationInformation Security Management Criteria for Our Business Partners
Information Security Management Criteria for Our Business Partners Ver. 2.1 April 1, 2016 Global Procurement Company Information Security Enhancement Department Panasonic Corporation 1 Table of Contents
More informationCLEARING THE PATH: PREVENTING THE BLOCKS TO CYBERSECURITY IN BUSINESS
CLEARING THE PATH: PREVENTING THE BLOCKS TO CYBERSECURITY IN BUSINESS Introduction The world of cybersecurity is changing. As all aspects of our lives become increasingly connected, businesses have made
More informationTacked Link List - An Improved Linked List for Advance Resource Reservation
Tacked Link List - An Improved Linked List for Advance Resource Reservation Li-Bing Wu, Jing Fan, Lei Nie, Bing-Yi Liu To cite this version: Li-Bing Wu, Jing Fan, Lei Nie, Bing-Yi Liu. Tacked Link List
More informationWHITE PAPER: ENTERPRISE AVAILABILITY. Introduction to Adaptive Instrumentation with Symantec Indepth for J2EE Application Performance Management
WHITE PAPER: ENTERPRISE AVAILABILITY Introduction to Adaptive Instrumentation with Symantec Indepth for J2EE Application Performance Management White Paper: Enterprise Availability Introduction to Adaptive
More information2. The object-oriented paradigm
2. The object-oriented paradigm Plan for this section: Look at things we have to be able to do with a programming language Look at Java and how it is done there Note: I will make a lot of use of the fact
More informationBlogging and Project Management Survey: Preliminary Findings
Blogging and Project Management Survey: Preliminary Findings Dennis D. McDonald, Ph.D. Email: ddmcd@yahoo.com Web: http://www.ddmcd.com December 7, 2007 Contents copyright 2007 by Dennis D. McDonald Background
More informationARCHIVE ESSENTIALS
EMAIL ARCHIVE ESSENTIALS KEY CONSIDERATIONS WHEN MOVING TO OFFICE 365 DISCUSSION PAPER PREFACE The last few years have seen significant changes in the way that organisations conduct business. There has
More informationManaging Learning Objects in Large Scale Courseware Authoring Studio 1
Managing Learning Objects in Large Scale Courseware Authoring Studio 1 Ivo Marinchev, Ivo Hristov Institute of Information Technologies Bulgarian Academy of Sciences, Acad. G. Bonchev Str. Block 29A, Sofia
More informationCSE115 / CSE503 Introduction to Computer Science I. Dr. Carl Alphonce 343 Davis Hall Office hours:
CSE115 / CSE503 Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall alphonce@buffalo.edu Office hours: Thursday 12:00 PM 2:00 PM Friday 8:30 AM 10:30 AM OR request appointment via e-mail
More information5/3/2006. Today! HelloWorld in BlueJ. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont.
Today! Build HelloWorld yourself in BlueJ and Eclipse. Look at all the Java keywords. Primitive Types. HelloWorld in BlueJ 1. Find BlueJ in the start menu, but start the Select VM program instead (you
More information1.1 Jadex - Engineering Goal-Oriented Agents
1.1 Jadex - Engineering Goal-Oriented Agents In previous sections of the book agents have been considered as software artifacts that differ from objects mainly in their capability to autonomously execute
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 informationReport on Registrar Whois Data Reminder Policy Survey
Report on Registrar Whois Data Reminder Policy Survey Executive Summary ICANN adopted the Whois Data Reminder Policy (WDRP) on 27 March 2003. The purpose of the WDRP is to encourage registrants to review
More informationASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists
ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists COMP-202B, Winter 2009, All Sections Due: Tuesday, April 14, 2009 (23:55) You MUST do this assignment individually and, unless otherwise
More informationWHITE PAPER Application Performance Management. The Case for Adaptive Instrumentation in J2EE Environments
WHITE PAPER Application Performance Management The Case for Adaptive Instrumentation in J2EE Environments Why Adaptive Instrumentation?... 3 Discovering Performance Problems... 3 The adaptive approach...
More informationOperating Instructions. VEGA DataViewer. Software for archive, administration and display of DTM data. Document ID: 51547
Operating Instructions Software for archive, administration and display of DTM data VEGA DataViewer Document ID: 51547 Contents Contents 1 About this document... 3 1.1 Function... 3 1.2 Target group...
More informationBuild Your Zero Trust Security Strategy With Microsegmentation
Why Digital Businesses Need A Granular Network Segmentation Approach GET STARTED Overview The idea of a secure network perimeter is dead. As companies rapidly scale their digital capabilities to deliver
More informationOntology based Model and Procedure Creation for Topic Analysis in Chinese Language
Ontology based Model and Procedure Creation for Topic Analysis in Chinese Language Dong Han and Kilian Stoffel Information Management Institute, University of Neuchâtel Pierre-à-Mazel 7, CH-2000 Neuchâtel,
More informationDATA PROTECTION POLICY THE HOLST GROUP
DATA PROTECTION POLICY THE HOLST GROUP INTRODUCTION The purpose of this document is to provide a concise policy regarding the data protection obligations of The Holst Group. The Holst Group is a data controller
More information- Table of Contents -
- Table of Contents - 1 INTRODUCTION... 1 1.1 OBJECTIVES OF THIS GUIDE... 1 1.2 ORGANIZATION OF THIS GUIDE... 2 1.3 COMMON CRITERIA STANDARDS DOCUMENTS... 3 1.4 TERMS AND DEFINITIONS... 5 2 BASIC KNOWLEDGE
More informationControl Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003
Control Flow COMS W1007 Introduction to Computer Science Christopher Conway 3 June 2003 Overflow from Last Time: Why Types? Assembly code is typeless. You can take any 32 bits in memory, say this is an
More informationMODELLING COMPOSITIONS OF MODULAR EMBEDDED SOFTWARE PRODUCT LINES
MODELLING COMPOSITIONS OF MODULAR EMBEDDED SOFTWARE PRODUCT LINES Wolfgang Friess AUDI AG wolfgang.friess@audi.de Julio Sincero University Erlangen-Nuernberg sincero@informatik.uni-erlangen.de Wolfgang
More informationEC312 Chapter 5: Intro to Pointers
Objectives: EC312 Chapter 5: Intro to Pointers (a) Explain the operation of the address operator. (b) Given the source code of a C program which uses pointers, and the output of the debugger, locate the
More informationLecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan
Lecture 08-1 Programming in C++ PART 1 By Assistant Professor Dr. Ali Kattan 1 The Conditional Operator The conditional operator is similar to the if..else statement but has a shorter format. This is useful
More informationChapter 12. File Management
Operating System Chapter 12. File Management Lynn Choi School of Electrical Engineering Files In most applications, files are key elements For most systems except some real-time systems, files are used
More informationThe SPL Programming Language Reference Manual
The SPL Programming Language Reference Manual Leonidas Fegaras University of Texas at Arlington Arlington, TX 76019 fegaras@cse.uta.edu February 27, 2018 1 Introduction The SPL language is a Small Programming
More informationA Distributed Media Service System Based on Globus Data-Management Technologies1
A Distributed Media Service System Based on Globus Data-Management Technologies1 Xiang Yu, Shoubao Yang, and Yu Hong Dept. of Computer Science, University of Science and Technology of China, Hefei 230026,
More informationThe Open Group SOA Ontology Technical Standard. Clive Hatton
The Open Group SOA Ontology Technical Standard Clive Hatton The Open Group Releases SOA Ontology Standard To Increase SOA Adoption and Success Rates Ontology Fosters Common Understanding of SOA Concepts
More information