Feasibility Study Cross-language Clone Analysis Team 2.

Slides:



Advertisements
Similar presentations
A P RAGMATIC A PPROACH Brent Bradbury Joshua Bruning.
Advertisements

Software Requirements
File Systems and Databases
Chapter 2: Algorithm Discovery and Design
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Database Design Concepts Info 1408 Lecture 2 An Introduction to Data Storage.
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
Configuration Management
“GENERIC SCRIPT” Everything can be automated, even automation process itself. “GENERIC SCRIPT” Everything can be automated, even automation process itself.
Moving Your Paperwork Online Western Washington University E-Sign Web Forms Copyright Western Washington University, This work is the intellectual.
Marketing CH. 4 Notes.
Chapter 9 – Software Evolution and Maintenance
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Week 1 Lecture MSCD 600 Database Architecture Samuel ConnSamuel Conn, Asst. Professor Suggestions for using the Lecture Slides.
REFACTORING Lecture 4. Definition Refactoring is a process of changing the internal structure of the program, not affecting its external behavior and.
Seattle Area Software Quality Assurance Group Release and Configuration Management, The Acceleration of Change and Its Contribution To Software Quality.
O BJECT O RIENTATION F UNDAMENTALS Prepared by: Gunjan Chhabra.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Algorithms and Programming
CS CS 5150 Software Engineering Lecture 3 Software Processes 2.
Detailed design – class design Domain Modeling SE-2030 Dr. Rob Hasker 1 Based on slides written by Dr. Mark L. Hornick Used with permission.
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
Just as there are many human languages, there are many computer programming languages that can be used to develop software. Some are named after people,
Cross Language Clone Analysis Team 2 October 27, 2010.
Cross Language Clone Analysis Team 2 April 7, 2011.
Cohesion and Coupling CS 4311
Designing classes How to write classes in a way that they are easily understandable, maintainable and reusable 5.0.
Advantage of File-oriented system: it provides useful historical information about how data are managed earlier. File-oriented systems create many problems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development 3.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
The Software Development Process
Cross Language Clone Analysis Team 2 October 13, 2010.
1 CS161 Introduction to Computer Science Topic #9.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Cross Language Clone Analysis Team 2 February 3, 2011.
Cross Language Clone Analysis Team 2 March 3, 2011.
Cross Language Clone Analysis Team 2 November 22, 2010.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
SEG 4110 – Advanced Software Design and Reengineering Topic T Introduction to Refactoring.
Cross Language Clone Analysis Team 2 November 10, 2010.
Cross Language Clone Analysis Team 2. Team Introduction Task Summary Introduction Scope of Work Description of Related Research Identification of User.
 Software Clones:( Definitions from Wikipedia) ◦ Duplicate code: a sequence of source code that occurs more than once, either within a program or across.
Cross Language Clone Analysis Team 2 February 3, 2011.
ANALYSIS PHASE OF BUSINESS SYSTEM DEVELOPMENT METHODOLOGY.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
1 COS 260 DAY 12 Tony Gauvin. 2 Agenda Questions? 5 th Mini quiz –Chapter 5 40 min Assignment 3 Due Assignment 4 will be posted later (next week) –If.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science.
What is this? SE-2030 Dr. Mark L. Hornick 1. Same images with different levels of detail SE-2030 Dr. Mark L. Hornick 2.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
CSCE 240 – Intro to Software Engineering Lecture 3.
1 Design Principles CS461 / ECE422 Spring Overview Simplicity  Less to go wrong  Fewer possible inconsistencies  Easy to understand Restriction.
Software Development Languages and Environments. Computer Languages Just as there are many human languages, there are many computer programming languages.
Software Configuration Management
System.
Software Maintenance
Cross Language Clone Analysis Team 2 November 22, 2010
Phil Tayco Slide version 1.0 Created Nov. 26, 2017
File Systems and Databases
Design and Programming
Individual Research Presentation
ARCH-1: Application Architecture made Simple
Chapter 8 Software Evolution.
Lecture 06:Software Maintenance
ANALYSIS REFACTORING WITH TOOLS
Presentation transcript:

Feasibility Study Cross-language Clone Analysis Team 2

Agenda Our Team Our Task Introduction and Scope of Work Background Description of Related Research Identification of User Benefits Potential Markets for Project Potential Competition Potential Human Factors Potential Project and Development Issues Intellectual Property Risk Analysis Project Scale-Down Factors Conclusion/Next Steps

Our Team Allen Tucker Patricia Bradford Greg Rogers Brian Bentley Ashley Chafin

Our Task Dr. Etzkorn and Dr. Kraft, our customers, have requested a tool that will abstract programs in C++, C#, Java, and (Python or VB) to the Dagstuhl Middle Metamodel, Microsoft CodeDOM or something similar, and detect cross-language clones. Key points: – The user interface is very important. – Easy comparisons of clones are important. – Good visualization of clones if important. – You will pay attention to sub-clones in this analysis. – The emphasis here will be on clone detection for large bodies of code.

Introduction and Scope of Work

Background Software Clones: – Duplicate code: a sequence of source code that occurs more than once, either within a program or across different programs owned or maintained by the same entity. – Clones: sequences of duplicate code. “Clones are segments of code that are similar according to some definition of similarity.” —Ira Baxter, 2002 – Simple example:

Background (cont.) 3 types of Clones – Type 1: an exact copy without modifications (except for whitespace and comments). – Type 2: a syntactically identical copy; only variable, type, or function identifiers have been changed. – Type 3: a copy with further modifications; statements have been changed, added, or removed.

Background (cont.) How clones are created: – Copy and paste programming, in which a section of code is copied "because it works". In most cases this operation involves slight modifications in the cloned code such as renaming variables or inserting/deleting code. – Functionality that is very similar to that in another part of a program is required and a developer independently writes code that is very similar to what exists elsewhere. – Plagiarism, where code is simply copied without permission or attribution.

Background (cont.) Problems associated with duplicate code: – Code bulk affects comprehension: Code duplication frequently creates long, repeated sections of code that differ in only a few lines or characters. The length of such routines can make it difficult to quickly understand them. – Purpose masking: The repetition of largely identical code sections can conceal how they differ from one another, and therefore, what the specific purpose of each code section is. Often, the only difference is in a parameter value. – Update anomalies: Duplicate code contradicts a fundamental principle of database theory that applies here: Avoid redundancy. Non- observance incurs update anomalies, which increase maintenance costs, in that any modification to a redundant piece of code must be made for each duplicate separately. At best, coding and testing time are multiplied by the number of duplications. At worst, some locations may be missed, and for example bugs thought to be fixed may persist in duplicated locations for months or years.

Description of Related Research Detecting clones across multiple programming languages is on the cutting edge of research. A preliminary version of this was done by Dr. Kraft and his students for C# and VB. – They compared the Mono C# parser (written in C#) to the Mono VB parser (written in VB). – Publication: Nicholas A. Kraft, Brandon W. Bonds, Randy K. Smith: Cross-language Clone Detection. SEKE 2008: 54-59

Identification of User Benefits Code implementing a cross-cutting concern is often spread over many different parts of an application. Identifying such code automatically greatly improves both the maintainability and the evolvability of the application. It allows the developer to more easily find the places in the code that must change when the concern changes, and thus makes such changes less time consuming and less prone to errors. It allows a developer to refactor the code, so that it uses modern and more advanced abstraction mechanisms, thereby restoring its modularity.

Potential Markets for Project Who would buy this? Where are they? How many of them are there? Would they buy it or lease it? Etc etc

Potential Competition Who else is out there? Have you looked at their patent applications? Don’t just consider the same technology solution – is anyone doing the same as you using a completely different technology?

Potential Human Factors What are the usability requirements of your product or service? What skills do the operatives require? Can your manual be translated into Japanese/Chinese if required?

Potential Project and Development Issues What is the potential timeline for the project? Are we trying to do something easy or of great difficulty? Do we have the resources for this?

Intellectual Property Have we got patents, can we get them, and what patents do the competition have?

Risk Analysis What are the things that would cause us to stop the project? (Competition from Microsoft? Failed toxicity test?)

Project Scale-Down Factors What are the things that would cause us to scale-down the project? (e.g. Treatment only works with type 1 not type 2 diabetics? Unavailability of key staff?)

Conclusion/Next Steps List some further work you'd like to see carried out on this project before you'd make your final investment decision List the 4-5 things you’d most worry about if it was your own money going into the project!