selected topics in software computing distributed software development cvsql final project...

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

Upload: mark-simmons

Post on 26-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

Selected Topics in Software Computing

Distributed Software Development

CVSQLFinal Project Presentation

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

Page 3: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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!

Page 4: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 5: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 6: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 7: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 8: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

CVSQL Server Overview• The central component of the CVSQL system

• Collects data from various sources

• Serves it to CVSQL clients

Page 9: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 10: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 11: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 12: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

The Future

• More extensive testing to improve robustness

• Performance optimizations

• More data providers

• Better SQL SELECT support (subselects, ...)

• ...

Page 13: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 14: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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

Page 15: Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation

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