150 likes | 166 Views
CVSQL is an innovative solution that bridges the gap between CVS and SQL, allowing easy extraction of CVS log data using SQL SELECT statements. With multiple data sources, interfaces, and supported SQL features, CVSQL version 2.0 is a powerful tool for distributed software development teams.
E N D
CVSQL Final Project Presentation Selected Topics in Software ComputingDistributed Software Development
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 2nd 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 3rd 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, DateTime • 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 • Multithreaded
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 MySQL) • 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 CVSQL1 project team for making the initial version of the project (and documenting it) Thank you CVSQL 2 Team