160 likes | 359 Views
Unified CodeCounter (UCC) with Differencing Functionality. Marilyn Sperka 1 , Vu Nguyen 2 , Ryan Pfeiffer 1 1 The Aerospace Corporation 2 University of Southern California 24 th International Forum on COCOMO 10/03/2009. What Does a Code Counter Do?. Determines software size
E N D
Unified CodeCounter (UCC) with Differencing Functionality Marilyn Sperka1, Vu Nguyen2, Ryan Pfeiffer1 1 The Aerospace Corporation 2 University of Southern California 24th International Forum on COCOMO 10/03/2009
What Does a Code Counter Do? • Determines software size • Leads to more reliable metrics: • Cost • Schedule • Productivity • Valuable analysis of existing projects • Better predictions for new software systems cost and schedule
Don’t We Do That Already? • Many code counters available now • Various problems: • Some are proprietary, others are public domain • Inconsistent counting rules • May or may not be maintained • Big problem: they count differently • Inconsistent or biased conclusions
Why Develop Yet Another? • NRO Cost Group (NCG) needed a tool to: • Count software lines of code • Consistently • With documented standards • Ability to easily add new languages • Support and maintenance • Compare different baselines of software • Determine addition, modification, deletion • Identify duplicate files • Determine complexity
How Did It Get Started? • USC wanted real-world projects for students • USC CSSE: University of Southern California Center for Systems and Software Engineering • Non-biased, industry-respected • Aerospace management recognized the potential of a USC/Aerospace team • A collection of existing code counting tools was donated to USC • Northrop Grumman, TRW, Boeing
Where Is It Now? • CodeCount is developed and maintained at USC • Graduate students get credit for directed research while interning • Code counters are continuously being checked and updated by USC students • New languages are added every semester • Aerospace provides validation and verification • Active involvement in class projects
Latest Release: UCC • The latest release of UCC unifies the code counters and differencing functions into a single application • UCC = Unified CodeCounter • Common interface • Easy to use • Consistent output reports
Links • http://sunset.usc.edu/research/CODECOUNT/ • Open source code and documentation • http://sunset.usc.edu/csse/affiliate/private/codecount.html • Beta release code to affiliates • http://brown.usc.edu:8080/ • Wiki information • nguyenvu@usc.edu • To report bugs or make suggestions
Features • Platform independent • Command line interface • Modes: Code counting only or counting plus differencing • Counts multiple files and languages in a single pass • Output reports • Robust processing • Options to improve performance • Error log
Code Counting • Counts logical and physical SLOC, comments, and blank lines • Counts multiple languages in one run • Creates separate output reports for each language • Also creates grand total report • Identifies duplicate files • Reports those counts separately
Differencing • Compares two baselines of files • Counts each same as in code counting • Matches files between baselines • Compares the code and counts: • SLOC added to second baseline • SLOC deleted from first baseline • SLOC modified in second baseline • SLOC unmodified between baselines
Differencing, Continued • Reports on files in one baseline but not the other • Identifies duplicate files in each baseline • Reports counts separately • Options for performance enhancement
Languages Supported Code Counting: Differencing: C/C++ C# Java SQL Ada Perl ASP • JSP • HTML • CSS • JavaScript • VB • VBScript • PhP • C/C++ • C# • Java • SQL • Ada • Perl • ASP • JSP • HTML • CSS • JavaScript • VB • VBScript Code counters are developed first, then differencing is added
Output Reports • A variety of reports are output • Counting, differencing, duplicates, complexity, errors • Users can customize their reports • Several .csv reports • Load directly into Excel
Current Projects • Code counters and differencing for Python, Unix shell script, Ruby, ColdFusion, Fortran, PhP, X-Midas, Assembly, COBOL • Add GUI front end interface • Improve complexity counting