With exciting new features!

Download Report

Transcript With exciting new features!

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 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
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