University of Southern California Center for Systems and Software Engineering 1 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 2 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 3 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 4 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 5 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 6 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 7 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 8 © USC-CSSE Links –Open source code and documentation ount.htmlhttp://sunset.usc.edu/csse/affiliate/private/codec ount.html –Beta release code to affiliates –Wiki information –To report bugs or make suggestions
University of Southern California Center for Systems and Software Engineering 9 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 10 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 11 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 12 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 13 © USC-CSSE Languages Supported Code Counting: C/C++ C# Java SQL Ada Perl ASP Differencing: C/C++ C# Java SQL Ada Perl ASP JSP HTML CSS JavaScript VB VBScript PhP Code counters are developed first, then differencing is added JSP HTML CSS JavaScript VB VBScript
University of Southern California Center for Systems and Software Engineering 14 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 15 © USC-CSSE 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
University of Southern California Center for Systems and Software Engineering 16 © USC-CSSE Questions and Comments