presentation 7
DESCRIPTION
Presentation 7. Cross Language Clone Analysis Team 2 November 22, 2010. Agenda. Feasibility Study Release Plan Architecture Parsing CodeDOM Clone Analysis Testing Demonstration Team Collaboration Path Forward. Our Team. Allen Tucker Patricia Bradford Greg Rodgers Brian Bentley - PowerPoint PPT PresentationTRANSCRIPT
Presentation 7Cross Language Clone Analysis
Team 2November 22, 2010
• Feasibility Study• Release Plan• Architecture• Parsing• CodeDOM• Clone Analysis• Testing• Demonstration• Team Collaboration• Path Forward
Agenda
2
Allen Tucker Patricia Bradford Greg Rodgers Brian Bentley Ashley Chafin
Our Team
3
Feasibility StudyOur evaluation of the project to determine the difficulty in carrying out the task.
4
Our Customers: Dr. Etzkorn and Dr. Kraft Customer Request:
◦ 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.
Areas to Note: ◦ the user interface◦ easy comparisons of clones◦ visualization of clones◦ sub-clones◦ clone detection for large bodies of code
Task Summary
5
Per our task, in order to find clones across different programming languages, we will have to first convert the code from each language over to a language independent object model.
Some Language Independent Object Models:◦ Dagstuhl Middle Metamodel (DMM)◦ Microsoft CodeDOM
Both of these models provide a language independent object model for representing the structure of source code.
Task Summary (cont.)
6
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
Related Research
7
Three Step Process• Step 1 Code Translation
• Step 2 Clone Detection
• Step 3 Visualization
Task Understanding
Source Files
TranslatorCommon
Model
Common Model
InspectorDetected Clones
Detected Clones
UIClone
Visualization
8
Step 1: Code Translation◦ C#, C++, Java, VB (or Python)◦ CodeDOM
Step 2: Clone Detection◦ Leverage current clone detection techniques and
research
Step 3: Clone Visualization◦ Need for an intuitive user interface
Task Understanding (cont.)
9
Clone Detection as a Product
Commercial Product
What are the benefits of Software Clone Detection?
Main Goal: Decrease Coding Errors (bugs)
10
Benefits Fact: Modularity is a key characteristic in
today’s software world
Why? Allows us to divide software into a decomposed separation of concerns◦ Attributes to maintainability, reusability, testability
and reliability
Clone Detection allows us to detect common software spread across large bodies of code◦ Identify code that is subject to further modularity
11
Benefits (cont) But not all code can be cleanly decomposed
Crosscutting Concerns◦ Responsible for tangling and scattering (code
duplication) an implementation
Logging◦ Scattered across Unrelated Functions
How do you Manage large areas of (usually) Duplicated Crosscuts?◦ Errors, Changes
12
Benefits (cont) Aspect Oriented Programming
◦ Modularize Crosscuts using Advice and Join Points◦ Example: Spring Framework
Identifying Aspects (crosscuts)◦ Time Consuming task
Use Clone Detection to Identify Aspects◦ Define Rule
13
Benefits (cont) Summarize
What?◦ Detect code that is a candidate for modularity◦ Identify Crosscuts in modules
Am I a candidate for ASP?
How?◦ Continuous Integration
Generate Reports every time new code is added
14
Features Clone Detection Software Suite
◦ Identifies◦ Tracks◦ Manages Software Clones
Multi-language support◦ C++◦ C#◦ Java
15
Features (cont)
Provides complete code coverage
Multi-Application Support◦ Stand-alone◦ Plug-in based (Eclipse)◦ Backend service (Ant task)
16
Features (cont) Extendible
◦ Built on a Plug-in Framework◦ Add new languages
Easy to Navigate between Clones
Persists Clones for easy Retrieval
17
Designing to meet user needs
◦ User center approach Need for an intuitive user interface Clone Visualization techniques
Human Factors
18
Intellectual PropertyThe University of Alabama in Huntsville would own and manage any and all intellectual property associated with the research and developmental artifacts of this project.
19
Project and Development Issues Fast, Good, and
Cheap…choose two.◦ Fast…time required
to deliver products◦ Good…quality of
product◦ Cheap…cost of
designing and building
20
Complexity of problem proves more difficult than initial estimates.
Technology to be applied is neither well-established or has yet to be developed.
Unable to complete defined project scope within schedule.
Volatile user requirements leading to redefinition of project objectives.
Risk Analysis
21
Our initial approach…maximize existing open sourced developed items in order to reduce project timeline.
◦ Instability in harvested projects.
◦ Lack of support…documentation, forums, etc.
◦ Disjoint projects code bases.
◦ Non-existing code bases to harvest from.
Project Scale-Down Factors
22
Release PlanRelease Plan and User Stories
23
User Story Approach User Stories Applied…Mike Cohn suggested
formal approach◦ As a (role) I want (something) so that (benefit).
Quality Attributes◦ Independent◦ Negotiable◦ Valuable to user or customers◦ Estimatable◦ Small◦ Testable
24
Came out with original Release Plan on 9/15/20
Due to customer wants/needs, we had to re-tool our user stories.
Dr. Etzkorn’s main concerns: Load source code and translate to a language
independent model Analyze the translated source code for clones
◦ Results from meeting: Created two new user stories (see next two slides) These two user stories have been pushed to the front
of our card stack
Re-tooled User Stories
25
Analysis
Story ID Story Title Priority (1 - 10) Estimate (Days) Score17 Source Code Load & Translate 1 14 1418 Source Code Analyze 1 14 14
2 Code Clone Highlights 1 14 1413 Auto-Navigate 2 7 14
3 Visual Reports 1 21 2114 Clone Density Graph 1 21 21
1 Project Management 10 5 509 Source Code Association 11 5 555 Analysis Options 3 20 608 Clone Categorization 5 14 704 False Positive Identification 7 14 98
10 Project Language Auto-Detection 8 14 1127 Development Environment Integration 4 30 120
12 Project History 6 21 12611 Detection Updates 9 21 18915 Interactive Help 10 21 210
6 Build Environment Integration 10 30 300286
Note: Task 9 should be skipped….customer indicated that this feature brough no value to the project.
26
CS 666 Studio I User Stories
Phase I
Summary ~ 68 remaining development days
Focus on top 3 user stories
Focus on Translation and Analysis
28
Story ID:
Priority:
Estimate:
017
1
14 Days
29
As an analyst I want the to load and translate my source code projects so I can analyze the source for clones.
Source Code Load & Translate
Story ID:
Priority:
Estimate:
018
1
14 Days
30
As an analyst I want the to analyze my source code projects so I can see the clones.
Source Code Analyze
Story ID:
Priority:
Estimate:
002
1
14 Days
31
As a analyst I want the capability to have the source code associated with clones highlighted within source files so that they are easy to identify.
Code Clone Highlights
CS 668 Software Studio II
Phase II
Summary ~ 80 development days
Focus on next 5 user stories
Focus on analysis capabilities
33
Story ID:
Priority:
Estimate:
013
2
7 Days
34
As a developer I want the capability to auto-browse to the code segment associated with a clone so I do not have to manually search for it.
Auto-Navigate
Story ID:
Priority:
Estimate:
003
1
21 Days
35
As a analyst I want the capability to generate reports on clones within projects in a number of formats (e.g. html, cvs, etc.) so that I can include them in presentations.
Visual Reports
Story ID:
Priority:
Estimate:
014
1
21 Days
36
As an analyst I want the capability to have a projects clone density reported in a graph form so I can visually see the distribution of detected clones within a project.
Clone Density Graph
Story ID:
Priority:
Estimate:
001
10
5 Days
37
As a analyst I want the capability to load and manage multiple projects within the application so that I can perform analysis on them at various times without having to reload them.
Project Management
Story ID:
Priority:
Estimate:
005
3
20 Days
38
As a analyst I want the capability to view summary analysis data (e.g. clones per file, package, projects, etc.) so that I can identify the distribution of clones within a project.
Analysis Options
Follow-On WorkFuture Capabilities
Story ID:
Priority:
Estimate:
010
8
14 Days
40
As an analyst I want the capability to have the language of a source code project auto-detected so I do not have to define it.
Project Language Auto-Detection
Story ID:
Priority:
Estimate:
008
5
14 Days
41
As an analyst I want the capability to have the detected clones categorized by a number of criteria (e.g. type, priority, etc.) so that work prioritization can be established.
Clone Categorization
Story ID:
Priority:
Estimate:
004
7
14 Days
42
As a analyst I want the capability to label a prospective clone as a false positive so that it will be ignored in analysis and reports.
False Positive Identification
Story ID:
Priority:
Estimate:
007
4
30 Days
43
As a developer I want the capability to integrate the clone detection tool directly into my development environment (e.g. eclipse, netbeans, visual studio, etc.) so that I have a single application with all development tools integrated.
Development Environment Integration
Story ID:
Priority:
Estimate:
012
6
21 Days
44
As an analyst I want the capability to see project change history (e.g. initial project, xx clones found, clone id yyy removed, project updated, xx new clones found, etc.) so I can assess the impact of code changes within a project.
Project History
Story ID:
Priority:
Estimate:
011
9
21 Days
45
As an analyst I want the capability to update a projects associated source code and the tool to detect these changes and offer a detection re-do so I can make corrections to clones and see resolutions in action.
Detection Updates
Story ID:
Priority:
Estimate:
015
10
21 Days
46
As a general user I want an interactive help system with context sensitive search so I can learn the system with ease.
Interactive Help
Story ID:
Priority:
Estimate:
006
10
30 Days
47
As a configuration manager I want the capability to integrate clone detection into an automated build environment (e.g. ant, nmake, msbuild, etc.) so that I can view reports on a code projects as they are built.
Build Environment Integration
Dropped User StoriesCut By Customer
Story ID:
Priority:
Estimate:
009
11
5 Days
49
As an analyst I want the capability to retain or not to retain the associated source code with a project so I can reduce my project size footprint.
Source Code Association
Customer priority of 11 (Normal range is 1 – 10)…indicated would cut from scope.
Current TasksRequirements & Models
50
Requirements modeling for the first user story “Source Code Load & Translate”:◦ Load & parse C#, Java, C++ source code.◦ Translate the parsed C#, Java, C++ source code
to CodeDOM.◦ Associate the CodeDOM to the original source
code. Requirements modeling for the second user
story “Source Code Analyze”:◦ Analyze CodeDom for clones.
Current Tasks’ Requirements
51
UML Model – Load & Parse
52
UML Model – Translate
53
UML Model – Associate
54
UML Model – Analyze
55
ArchitectureDesign and Architecture
56
Key Architecture Points Multilanguage support
Configurable for different platforms◦ Stand-along application◦ plug-in◦ backend service
Extendable
57
Architecture
C# Service
Java Service
C++ Service
ApplicationUser Interface
Code Model
Clone Detection Algorithms
Core
API
Language Support (Interface)
58
Service
EclipsePlug-in
Etc…
WebInterface
Core Unit Code Model
◦ Stores the code in common format Application Programming Interface
◦ Used to embed clone detection in applications Language Service Interface
◦ Communication layer between the core and the specific language services
Code ModelClone Detection
Algorithms
Core
API
Language Service Interface
59
Visual Studio Solution
60
Core
61
Core - API
62
Language Service
63
Language Service
64
Language Service
65
App Configuration
66
CRC CardsClass Responsibility Collaboration Cards
67
Java Parser
Parse Java source code LALRParser (Gold Parser)
Construct Java token tree
Java Parser CRC
68
Parser
Parse C# source code LALRParser (Gold Parser)
Construct C# token tree
C# Parser CRC
69
LanguageService
Defines standard interface for all language providers.
ILanguageService
Language ServiceCRC
70
JavaService
Reads Java source code Java Parser
Understands Java grammar production rules
CloneDetection
Construct CodeDOM compilation unit
JavaCodeProvider
ILanguageService
Java Service CRC
71
CsService
Reads C# source code C# Parser
Understands C# grammar production rules
CloneDetection
Construct CodeDOM compilation unit
CsCodeProvider
ILanguageService
Cs Service CRC
72
CloneDection
Loads and manages languages services.
ILanguageService
Controls parsing
Establishes CodeDOM compilation units to source code file associations
Compares code segments CodeDomComparer
Provides bookkeeping for code segments
CodeDomSummary
CloneDetectionCRC
73
FileSetNode
Manages file set tree information for a CloneProject
FileSetNodeCRC
74
ProjectNode
Manages project tree information for a CloneProject
ProjectNodeCRC
75
SourceFileNode
Manages source file tree information for a CloneProject
SourceFileNodeCRC
76
EnabledValueConverter
Manages enabled state for visual components bound to an object
EnabledValueConverterCRC
77
VisibilityValueConverter
Manages visibility state for visual components bound to an object
VisibilityValueConverterCRC
78
CloneProject
Manages project information PresentationModel
Knows the file sets associated with a project
ILanguageService
Knows the files associated with each file set
Knows the name of the project
Can add a file
Can remove a file
CloneProjectCRC
79
ProjectIO
Save a CloneProject CloneProject
Open a CloneProject
ProjectIOCRC
80
RecentProjectList
Manages a list of recently viewed projects
CloneProject
RecentProjectListCRC
81
ProjectView
Visual display of project tree CloneProject
PresentationModel
ProjectNode
FileSetNode
SourceFileNode
ILanguageService
ProjectViewCRC
82
App
Startup class
Manage visual theme
AppCRC
83
MainFrame
Manage application frame PresentationModel
Manage user input – Save CloneProject
Manage user input – Open ProjectView
Manage user input – Close
Manage user input – Exit
Manage user input – Add File Set
Manage user input – Create New
MainFrameCRC
84
PresentationModel
Manage current project state ICloneDetection
Current Project CloneProject
Clone Detection
Currently Selected File
PresentationModelCRC
85
ParsingOur struggles and our successes.
86
We explored and conducted spikes on CSParser and CS CodeDOM Parser.◦ They both had advantages and disadvantage.◦ We came to the conclusion that neither of them
were going to fit our needs. We explored and conducted a spike on
GOLD Parser.◦ We ultimately chose the GOLD Parser because it
best fit our needs. This gave us a way to manage multiple language
grammars with one engine.
Parsing Struggles & Successes
87
C# Spike
88
Spike Objectives:◦ Associated risks/shortfalls◦ Project feasibility◦ Familiarization
CSParser◦ a utility which parses the C# source code and
creates a CodeDOM tree of the code◦ Open source◦ Supports most language features◦ Error handling for features not supported
C# Spike Review
89
C# Spike: CSParser Output
90
Spike Conclusion:◦ Some limitations, but has work around◦ Wrapper code needed
Moving on from Spike:◦ This past iteration, we downloaded CSParser and
familiarized ourselves with it more.◦ Due to several programs having the same name,
we came across CS CodeDOM Parser, as well.
C# Spike Review (cont)
91
The good & the bad for both… CS Parser:
◦ Good parser - Parsed a lot of C# language features
◦ No GUI - It is all command line◦ Came with a large number of test cases◦ Does not use CodeDOM
CS CodeDOM Parser:◦ General parsing◦ GUI◦ Uses CodeDOM
CS Parser & CS CodeDOM Parser
92
Since both programs have good and bad features, our plan is to combine them.
CSParser + CS CodeDOM Parser Planned combined features:
◦ Good parsing◦ GUI◦ CodeDOM◦ Test cases
C# Plan
93
GOLD Parsing SystemSpike
94
Topics To Discuss What is it? How does it work? What can we use it for? How can we extend it?
95
What Is GOLD? GOLD is a free parsing system that you can
use to develop your own programming languages, scripting languages and interpreters. It strives to be a development tool that can be used with numerous programming languages and on multiple platforms. – www.devincook.com/goldparser
96
How It Works (Block Structure)
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
97
How It Works (Components)
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
Three Major Components1. Builder – Reads a source
grammar to construct a Compiled Grammar Table
2. Compiled Grammar Table – Stores LALR and DFA parse tables
3. Engine – Performs actual parsing
98
How It Works (Process)
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
Step 1• Write the grammar for the
language being implemented. (GOLD-Meta Language)• Rules: Backus-Naur Form• Terminals: Regular Expressions• Character sets: Set Notation
99
How It Works (Process)
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
Step 2• Analyze Grammar• Construct LALR and DFA parse
tables which are saved in a Compiled Grammar Table file.
100
How It Works (Process)
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
Step 3• Analyze source text with parser
engine and construct parse tree• Engine can be implemented in
any number of programming languages
101
Usage within CloneDigger
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
CodeDOM Conversion• Need to write routine to move
data from Parsed Tree to CodeDOM• Parsed data trees from parser
are stored in consistent data structure, but are based on rules defined within grammars
CodeDOM Conversi
on
AST
102
Task Understanding Three Step Process• Step 1 Code Translation
• Step 2 Clone Detection
• Step 3 Visualization
Source Files
TranslatorCommon
Model
Common Model
InspectorDetected Clones
Detected Clones
UIClone
Visualization
103
Extension and Enhancements
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
Enhance Grammars• Update Java• Update C#• Define C++
• Share among other classmates with similar interest
• Share with greater community
104
Grammars What is a grammar?
◦ A set of rules of a specific kind, for forming strings in a formal language. The rules describe how to form strings from the language's alphabet that are valid according to the language's syntax. A grammar does not describe the meaning of the strings or what can be done with them in whatever context —only their form.
105
Gold Parser Grammars Gold Parser uses context-free grammars
that can be used to do Lookahead Left-to-Right (LALR) parsing.
LALR compliant grammars that we already have:◦ C#◦ Java◦ Visual Basic .Net
106
Grammar Example
107
C++ Grammar Issue Currently no LALR compliant C++ grammar
exists due to the overall complexity.
Other C++ parsers exist, but give an output format different than the other languages we already have grammars for using Gold Parser.
We are still searching for C++ parsing solutions.
108
We plan to use GOLD Parsing System. Tasks we have to complete:
◦ Update JAVA grammer◦ Update C# grammer◦ Research “Define C++ grammer”◦ Create a CodeDOM conversion to move data from
Parsed Tree to CodeDOM
GOLD Parser Conclusion
109
GOLD Parsing SystemGOLD Parsing Populating CodeDOM
110
Topics To Discuss What we are doing? Compiled Grammar Table Bookkeeping Testing
111
How It Works (Block Structure)
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
112
How It Works (Process)
Grammar Builder
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
Typical output from engine: a long nested tree
113
Usage within CloneDigger
Compiled Grammar
Table (*.cgt)
Engine
Source Code
Parsed
Data
CodeDOM Conversion• Need to write routine to move
data from Parsed Tree to CodeDOM• Parsed data trees from parser
are stored in consistent data structure, but are based on rules defined within grammars
CodeDOM Conversi
on
AST
114
Grammar UpdatesGOLD Parser Grammar Updates
115
Grammar Updates Currently the grammars we have for the
Gold parser are out dated.
Current Gold Grammars◦ C# version 2.0◦ Java version 1.4
Current available software versions◦ C# version 4.0◦ Java version 6
116
Grammars for C# and Java are very complex and require a lot of work to build.
Antler and Gold Parser grammars use completely different syntax.
Positive note: Other development not halted by use of older grammars.
Grammar Update Issues
117
Our BookkeepingBookkeeping for parsing the multiple grammars
118
For Java, there is…◦ 359 production rules◦ 249 distinctive symbols (terminal & non-terminal)
For C#, there is…◦ 415 production rules◦ 279 distinctive symbols (terminal & non-terminal)
Compiled Grammar Table
119
Production Rule Dependancies
120
Since there are so many production rules, we came up with the following bookkeeping:
A spreadsheet of the compiled grammar table (for each language) with each production rule indexed.◦ This spreadsheet covers:
various aspects of language what we have/have not handled from the parser what we have/have not implemented into CodeDOM percentage complete
Our Grammar Bookkeeping
121
Our Grammar Bookkeeping
122
Parsing Handlers’ Status:◦ C# = 100% complete◦ Java = 100% complete
Parsing & CodeDOM Status
123
CodeDOMLanguage Independent Object Model
124
CodeDOM Document Object Model for Source Code
API - [System.CodeDom]
Only supports certain aspects of the language since it’s language agnostic◦ Good Enough
What Does it Do?◦ Programmatically Constructs Code
What Doesn’t it Do?◦ Does NOT parse
125
CodeDOM Example CodeCompileUnit
◦ CodeNameSpace Imports Types
Members Event Field Method
Statements Expression
Property
126
Clone AnaysisClones & Dr. Kraft’s Tool
127
Software Clones: (Definitions from Wikipedia)
◦ 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
Software Clones
128
3 Types of Clones (Definition of Similarity):◦ 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, reordered,
added, or removed
Clones Types
129
Copy and Paste Programming◦ Ctrl-C, Ctrl-V Virus
Multiple Developers◦ Similar Functionality, Similar Code
Plagiarism◦ Code Theft
How Clones are Created
130
Multi-Language Clone Detection◦ Cutting Edge of Research
Preliminary Research◦ Dr. Kraft and Students at UAB
C# and VB. Publication
Nicholas A. Kraft, Brandon W. Bonds, Randy K. Smith: Cross-language Clone Detection. SEKE 2008: 54-59
◦ Utilizes Mono Parsers C# VB
Clone Research
131
Performs Comparisons of Code Files
For each File, a CodeDOM tree is tokenized
Uses Levenshtein Distance Calculation◦ Minimum number of edits needed to transform one
sequence into the other
Distances Calculated◦ Distance determines Probability of a Clone
Dr. Kraft Clone Analysis
132
Dr. Kraft Application
133
Limitations Only does file-to-file comparisons
◦ Does not detect clones in same source file
Can only detect Type 1 and some Type 2 clones
Not very efficient (brute force)
134
Add Support for Same File Clone Detection
Add Support for Type 3 Clone Detection◦ Requires more Research
Provide a more efficient clone analysis algorithm
Enhancements
135
TestingWhite Box & Black Box Testing
136
White Box Testing: ◦ Unit Testing
Black Box Testing:◦ Production Rule Testing
Allows us to test the robustness of our engine because we can force rule production errors.
Regression Testing Automated
◦ Functional Testing
Testing Our Project
137
Unit Testing
138
Production Rule Test Input File Example
139
Functional Tests
140
MetricsProject Metrics
141
As of Nov 8, 2010 SLOC:
◦ CS666_Client = 553 lines◦ CS666_Core = 114 lines◦ CS666_CppParser = 117 lines◦ CS666_CsParser = 1678 lines◦ CS666_JavaParser = 3350 lines◦ CS666_LanguageSupport = 48 lines◦ CS666_UnitTests = 3384 lines
Total = 9244 lines (including unit tests)
SLOC For Our Project
142
DemonstrationDemonstration of our progress.
143
Demonstration These are the things we would like to show
you today:◦ GUI work◦ Project setup
Save project Load project
◦ Loading of source code◦ Parsing of source code◦ Translation of source code
144
Team CollaborationTeam 2 & Team 3
145
Team Collaboration Due to Team 3’s team size, we have taken
responsibility of gathering & sharing grammars.
Team 3 has the responsibility of the C++ Parsing.
Both Teams will…◦ Use the same grammars & engines
We will both have limitations based on this. Ex: JAVA grammar is based off 1.4 -> we are limited to
using JAVA 1.4
◦ Test the same grammars & engines We will have two test beds.
146
Team Collaboration Method of collaboration:
◦ Google code project site: http://code.google.com/p/uah-studio-2010-2011/ Team 4 team members have access to this site.
◦ Meetings◦ Email
What does our google code project contain?◦ Source control for grammers & engines◦ Bugs/Issues
Team 4 will have ability to document new bugs.◦ Documents/Artifacts
147
Team Collaboration Both teams met Monday (11-8-10) after
class and performed the required Pair Programming.
Current Status:◦ Team 2
All project source code has been made available.
We are researching and working to update the Java and C# grammars.
◦ Team 3 Team 3 is working on C++ parsing.
Looking into other parser, ELSA.
148
Path ForwardCurrent Status & Path Forward for Next Semester
149
Iteration 1: Parsing -> 85%◦ Completed parsing for Java & C#◦ No parsing for C++
But we have a foundation and design to start from. Iteration 2: Translation to CodeDOM -> 60%
◦ We have the foundation and design completed.◦ Now, it is a matter of turning the crank for the
languages. Iteration 3: Clone Analysis -> 30%
◦ Ported majority of Dr. Kraft’s student project code.◦ Started focusing on the GUI
Where we stand…
150
Task Understanding Three Step Process• Step 1 Code Translation
• Step 2 Clone Detection
• Step 3 Visualization
Source Files
TranslatorCommon
Model
Common Model
InspectorDetected Clones
Detected Clones
UIClone
Visualization
151
Schedule
152
Our next step is to re-evaluate where we currently stand.◦ Revisit Release Plan
Pull in Software Studio I work that was not completed.
◦ Revisit User Stories◦ Start off strong with unit tests not completed.
Path Forward
153