E N D
NOTICE! • These materials are prepared only for the students enrolled in the course Distributed Software Development (DSD) at the Department of Computer Science and Engineering, University of Mälardalen, Västerås, Sweden and at the Faculty of Electrical Engineering and Computing, University of Zagreb, Croatia (year 2003/2004). • For all other purposes, authors’ written permission is needed! • The purpose of these materials is to help students in better understanding of lectures in DSD and not their replacement!
Selected Topics in Software Engineering-Distributed Software Development
Siniša Tomić CVSQL client-daemon-JDBC
The current project status • There are two main questions today • First question • Is it done yet? • Second question • Is it done yet? • “I know that, technically, that's only one question, but it was such a big one I thought I'd mention it twice.” (Kryten, Red Dwarf)
A little bit of statistics • 18 work days + • 7 developers + • 5 main parts + • 3 user interfaces + • 2 sub project leaders + • 2 different locations + • 1 project leader + • 1 project • = 1 goal • To do what the customer needs
A little bit of statistics (2) • From the scratch written: • CVS Library • SQL parser • SQL grammar checker • TCP/IP server • Definition of: • XML data exchange • SQL tables • O.k. But something must be taken • Well, the qsort function is taken from another project since the ANSI one was not good enough
A little bit more of statistics (3) • More than 5000 lines of code • More than 700 per developer • More than 5 late night sleep • More than 10 early morning wakeup • More than 10 different computers for development • More than 3 different operating systems (for testing and a bit of developing) • Is it possible? … within time?
Well… it’s not over (yet) • But, it will be over in time • And, yes, it will be working
Current project status • We’re currently still green – OK • All parts of project are done within planed period (our plans ) • The main goal is still the same: • Before Christmas • Server – finished • JDBC – finished • Client GUI – finished • Client – command line with arguments - finished
Then what will you do? • There is still a lot of work to do • Testing • Testing • Testing • Testing • Fixing problems • Testing • …
So much testing? • Actually – yes! • We want to give you a product that will work, but not only on paper • We still have enough time to check if something is not working correctly and fix it • You don’t need a product that is high in the orbit and has only one little ‘feature’… it’s not dividing correctly (M.Ž.)
Simple testing plan • We’re not going to go into details today • We’re planning to do (mostly) fully computer automated tests: • The JDBC will send the server a long list of queries • The client will receive the queries by command line arguments • Some of queries will be good, some of them will be bad. After a couple of hundreds well check if the server is still working, and go through the procedure with another couple of hundreds more if needed
Simple testing plan (2) • For the C/C++: • We’re also doing a quite extensive memory leakage test and invalid ptrread/write during that period: • Memwatch • It’s free, it’s working, it’s from Sweden
Ok. That will the computer do • We’re going to work a bit too… • Someone needs to kick the computer from time to time and check if it’s still working • We know it’s a hard workto watch computer work, but we’ll manage it somehow
But where are you now then? • The most logical explanation, if we ever want to be finished with main development in one week, is that we have something already done so far • And… you are right. • We’re going to use a bit of time to show you the First alpha version of the CVSQL • (In colour, Dolby digital where available )
But before - what is missing? • (And you thought that the presentation will already start ) • Currently the missing parts that will be implemented in the final version are: • Grammar check • It’s completed, it’s just not in this source • String comparison: • The < and > comparison is still missing (the date!) • In the like / ilike comparison the question mark is still not implemented • Configuration file • Users file • JDBC • Some functions still need the implementation – non vital • (Probably I still missed something) (Yes, the font is smaller on this page )
Ok, so where is the presentation? • Is about to start • Today we’ll demonstrate the following: • CVSQL • main core • not the GUI , it will be much nicer • JDBC • Simple example • Connects to the simulated database • The real server is still not done
Some questions • To our dear customers • The request problems: • users are registered in CVS • Not available from CVS • The list of users that edited files is available • Which user(s) have created which files (latest or particular version) • ok • Which users edit files • Currently? Not available • The list of users that edited files is available • Which files have been created/modified at particular date, last day, last week, etc. • The week format is not supported. Is it neccesary? • Which files are different in my working structure from files in CVS (particular version) • We don’t have the list of your files
Some questions • To our dear customers • The request problems: • How much percent has been changed between different versions of specified files • We don’t know the file size, so we cannot determine the percent of change • Which user changed or inserted the most lines of code between Jan 1st and Jan 10th? • Ok (you can also specify the year ) • How many lines of code have the users deleted on average? • Ok • For each date, how many lines of code were changed, deleted, or inserted in a file, or in a structure • O.k. (added and deleted, but without changed, we don’t get that info) • The language should have possibility to specify a particular version of a file, a particular file, sets/ranges of versions, set of files, files in a structure – and combination of these • O.k.
Some questions • To our dear customers • The request problems: • The language should be able to specify states/set of states of file versions • Ok, each commit has it’s own state. You can get that info. • The language should be able to specify CVS-users • Ok (e.g. where author=‘username’) • Sometimes, the query should return a single number or string, and sometimes, a table with several rows and columns will be returned (the language and implementation must support this). • SQL always returns table (One or more rows and columns) • Look at CVS commands that will be bases for the query execution • Ok, rlog
The end • Questions? • Comments? • Testing ideas?