1 / 15

Selected Topics in Software Computing Distributed Software Development

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?

Download Presentation

Selected Topics in Software Computing Distributed Software Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CVSQL Final Project Presentation Selected Topics in Software ComputingDistributed Software Development

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

  3. 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!

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

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

  6. 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? ;-)

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

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

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

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

  11. 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 :(

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

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

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

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

More Related