160 likes | 320 Views
CVSQL Final Project Presentation. Selected Topics in Software Computing Distributed 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?
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