Selected Topics in Software Computing Distributed Software Development

Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

Questions • • Are you a part of software development team? A distributed team, perhaps? Do you use CVS? Are you annoyed with its reporting capabilities? – Actually, with the lack of them. . . • Do you like SQL databases? We have the solution. . .

CVSQL • An SQL server for CVS logs • Bridges the gap between CVS and SQL • Allows easy extraction of CVS log data using SQL SELECT statements • One year after the initial release, the 2 nd CVSQL development team is proud to present: CVSQL version 2. 0 With exciting new features!

Features • Multiple data sources: – CVS logs • Contain the information about the files in the CVS repository, commited changes and the people working on the CVS repository – ODBC databases • Access to any data stored in ODBC-compliant databases • Interaction with 3 rd party systems such as Palantir – And more. . . • Modular design provides extensibility • Write your own data provider in a few lines of code

Features (II) • Multiple interfaces: – JDBC driver • Any Java application can use CVSQL with no modifications – XML-RPC server • Publish the data as web service • Easy-to-use in many development platforms (C#, C/C++, Perl, Python, PHP, . . . ) – XML-Bridge (legacy) server • Simplified version of XML-RPC • Support for legacy (CVSQL 1. 0) applications

Features (III) • Supported SQL subset: – Only the SELECT command • It's read-only SQL server, after all – Select from multiple tables • INNER and LEFT OUTER JOIN support – Support for aggregate operators • AVG, MAX, MIN, SUM, COUNT – Supported SQL data types • String, Integer, Decimal, Date. Time – Support for WHERE, GROUP BY and ORDER BY • That's obligatory, isn't it? ; -)

Features (IV) • Standards-compliant: – Implements JDBC and XML-RPC standards – Uses ODBC for back-end data access • Other: – Multiple databases can be served by one CVSQL server – Optional integration with system authentication mechanisms – Portability • Clean C++ source code, portable to any Unix system • Easy to port to Microsoft Windows platform

CVSQL Server Overview • The central component of the CVSQL system • Collects data from various sources • Serves it to CVSQL clients

Deployment • Typical setup: – CVS server with one or more repositories – Optional database server (such as My. SQL) – Client(s) that can use data from the CVSQL server

Data Mining • How many lines did each developer commit? SELECT author, sum(lines_added) FROM changes GROUP BY author • Who made the most changes? SELECT author, count(lines_added), sum(lines_added) AS sum FROM changes GROUP BY author ORDER BY sum • Who deleted files? SELECT author FROM changes WHERE state = 'dead' • Who worked on 'Makefile'? SELECT author FROM changes WHERE file = 'Makefile' GROUP BY author

Product Info • Development time: 9 weeks • Development team size: 7 developers • Programming languages: – C++ – 8611 lines of code (188 KB) – Java – 6558 lines of code (171 KB) • Code reused from previous version: – C++ – None (we used the ideas, though) – Java – Much (most of it reworked) • Product completion status – Almost complete (no LIKE / MATCHES operator) – Not extensively tested : (

The Future • • • More extensive testing to improve robustness Performance optimizations More data providers Better SQL SELECT support (subselects, . . . ). . .

The Authors • • Tomislav Capan – XML-RPC client and server, documentation Matija Čižmek – SQL Engine, testing Abdul Ahad Khan – JDBC driver, documentation Senko Rašić – SQL Parser, CVSQL core, legacy server, integration, testing • Matija Slivonja – CVS log provider • Ian Wharton – JDBC driver, testing • David Zidar – ODBC provider

Lessons Learned • Distributed development really is hard! • Good task assignment and job separation is crucial for the development process • Nothing is “obvious” – discuss everything • E-mail is your friend ; -) • No matter how good your design is, things are going to change • Surprises can't be predicted • Balance the formality of the communication and the development process

That's all, folks! • This is where our journey ends. – It's been hard – It's been fun – It's been worth the effort • We would like to thank: – All of you for your attention during the project presentations – The customer for not making unrealistic requests ; -) – The CVSQL 1 project team for making the initial version of the project (and documenting it) Thank you CVSQL 2 Team
- Slides: 15