Title: These%20materials%20are%20prepared%20only%20for%20the%20students%20enrolled%20in%20the%20course%20Distributed%20Software%20Development%20(DSD)%20at%20the%20Department%20of%20Computer%20Science%20and%20Engineering,%20%20%20University%20of%20M
1NOTICE!
- 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!
2Selected Topics in Software Engineering -
Distributed Software Development
3Siniša Tomic
How to makeTuna salad
4How to make tuna salad
- Ingredients
- 2 cans of tuna (185g each)
- 500 g of pasta
- 1 mayonnaise with olive oil
- 1 mayonnaise with mustard
- 0.1 l of sour cream
- 1 celery
- 2 fresh tomatoes (only meat)
- Cheese
- Note
- Best served cold
- Recipe
- Cook the pasta
- Cool down the pasta
- Chop the rest of ingredients
- Mix all the ingredients together
5Siniša Tomic
CVSQL Final project report
6Current project status
- 100 finished
- 100 new
- OK
- As seen on TV previous presentations
7Past
8I want to see some numbers
- For those of you who love numbers
- Lines of code
- 8000 lines C
- 5200 JAVA
- Total of 13000 lines
- Pages of documentation
- 2900 pages
- Number of valid test SQL queries
- 4437 SQL queries
- Number of invalid test SQL queries
- 30457 SQL queries
- Time of automated testing (not includingdeveloper
testing during the development) - 30 hours
9Disclaimer
- No animal was harmed in the making of this
software - No tree was cut down during the making of the
documentation
10Following the advices (1/3)
Stig Larsson - ABB
- Dont do it if you dont have to
- Actually do it if you have enough time ?
- Use system boundaries to define organization
boundaries - Yes
- Use sub-contract management
- We defined all the requirements at the start for
each developer output - Watch for conflicts between project and line
organization - We used mail for notifying all the members of
the team about everything so if there was a
conflict it would show - Define clear roles and responsibilities
- Yes.
- Spread the knowledge
- Yes, email was the best way of communication
because of the distance
11Following the advices (2/3)
- Establish a formal reporting and meeting culture
- We always tried to stay focused during the
meeting and to follow the meeting plan. It was
very helpful - Document properly
- It could have been done better, but the parts
that should connect together were always well
defined before any side started to work so that
there was no need for large changes - If practically possible, meet in person
- It would make some things easier ?
- Support job rotation
- Not possible, the job was divided so that
everyone does the part in which is best - Call the team together for critical tasks
- That was not possible for work divided Sweden
Croatian, but weve tried to do that for local
jobs
12Following the advices (3/3)
- Aim at continuous integration
- Yes, weve tried to do, with only minor problems
during connection of JDBC driver and CVSQL server - Provide local support for complex tools
- We havent used any complex tools, so there was
no need - For small projects build a virtual team
- Yes
- Do risk management
- We havent done that enough.
- Do proper work breakdown
- This could have been done better, but the job
was divided so that everyone does the thing in
which he or she is the best.
13Ideas for the next time
- Email can solve you a lot of problems
- Email was, at the end, the best way of
communication. It has its problems when you need
fast response, but if you include time required
for other site to respond in your plans it is
great - Videoconferencing
- It helped us a lot to get know each other a bit
better, although it cannot replace real human
contact - Weve used it to agree on all parts of the
project that we share really fast - Large amount of motivation
- Weve early started to build Team spirit and it
really helped in avoiding any conflicts and in
getting some new great ideas - Transparency
- Every member of the team knew exactly what was
expected from him or her and the way of output
should be. Everything was planed as much detailed
as possible and thank to the rather good design
descriptionthe main job was to do things done
the way it was expected
14Present
15This looks OK, but what do I get?
- You get 5 different user interfaces
- The are all fully supported on two different
operating systems - Windows
- Linux
- They can also be used on three more operating
systems - FreeBSD (Intel)
- Solaris (Sun)
- MacOS X (PowerPC)
- You can access them from at least 3 types of
programming language styles - JDBC
- Command line
- XML interface
16Wait, wait. Did you said 5?
- Yes, we know that we said before that well do 4
types of interfaces - Command line GUI
- Command line with arguments
- XML Server
- JDBC
- But, its still Christmas time and so we said
well, they could always use one more - Server GUI
- You can telnet to your favourite CVSQL server
and use it just as you would your Command line
GUI no need for local installation
17But thats not much
- OK we know that you still want more so we decided
to also make - the Windows server version
- Yes, that means that you can use your favourite
CVSQL server under Windows environment as well as
under the Linux environment. - They both use the same code base and they are
both multithreaded so that you dont need to
worry if someone else is using it.
18Thats nice, but I have two projects
- Dont worry, you dont need two
separateinstallations of CVSQL - you can have as many projects as you like in
just one. The CVSQL will support them all - Each of the projects is represented as
onevirtual database and you can connect to any
of them using the SQL USE command - You only cannot use one SQL query to check two
different projects (you cannot do than in SQL too
?), but you can use and of provided interfaces to
generate as much data as needed
19Sounds nice, but does it work?
- Sure it does work, but we know that you dont
have too much time to type in all the test
queries - So we said, Come on, its Christmas time again
and so were adding also - the automated testing capabilities
- That means you dont need to enter all queries
you can just use the software to perform self
test by itself - If you just want to browse through our test
results you can, its part of Test document
only 2000 pages result - Yes, you can get it as ASCII file too if you like
?
20Why would I want to do a self test?
- One reason is that the complete CVSQL is written
in standard C/C language and doesnt use any
proprietary functions or library calls - Therefore is quite portable to all other
platforms with only minor changes - And if you do porting you will want to test it
again so why create new test cases? - Of course, our JDBC driver is portable just as
all other JAVA applications
21Is it multilingual?
- Of course it is.
- You can use the software in one of the following
languages - English
- Swedish
- Croatian
- Dont worry, you dont need to recompile the
software to add another language just translate
the text file that represents the language file
and set up the new value in the configuration
file - There is no limit on number of translations.
22What are the limitations?
- The main limitation is imposed by the CVS and SQL
being two completely different interfaces - CVS
- works with your local file system
- and has knowledge about your data
- cannot access the data at any order
- SQL
- has no knowledge about your local data
- can access all the data in the random order
23So what are CVSQL limitations
- Of course, there are some additional limitations
imposed by the project - You dont have 100 full SELECT syntax at your
disposal - Problem, sometimes you must use more than one
- SQL query to get information when only one
SQL - query (more than 300 characters long) would
do - exactly the same ?
- Solution You do have all main parts supported so
- you can still get the same data by using two
separate - queries. It will also make your code easier
to understand ? - In case youre wandering where are yours Alter
table, Revoke and Create constraint
trigger(I know, you use them everyday, even
before lunch) - They are not part of this project remember?
24Any more limitations?
- Most probably, but we tried to make possible all
of your requests as much as we could - The greatest limitation is the limitation of SQL,
often it is necessary to know SQL very well in
order to get the wanted data in wanted way - Sorry, we cannot fix SQL ?
- The second limitation is that some information
that is easy to get from standard CVS is not
that easy to get from CVSQL - Again that SQL problem ?
- There are also some good news
- You can get some data from CVSQL that is not
available through the standard CVS interface
without a lot of data analysis - You dont need to know anything about CVS to get
that data
25SQL diagrams
SELECTdiagram
26What can we get? (1/3)
- Who worked in the last working week of last year?
- SELECT author, sum(added), sum(delete), count()
FROM changes WHERE dategt '2002/12/20' AND
date lt '2002/12/31' - dido 18 0 2
- Who made most changes in root CVS directory and
how much lines has added since initial commit? - SELECT author, sum(added), count() FROM
changes WHERE dir '' order by 3, 2 - shakira 773 11
- britney 3519 22
- eve 4879 64
- christina 6021 149
- avril 9192 154
- dido 6397 214
- mariah 11544 622
27What can we get? (2/3)
- Who deleted files?
- SELECT author, count() FROM changes WHERE
state 'dead' ORDER BY 2 - eve 1
- dido 11
- avril 29
- shakira 30
- britney 55
- mariah 273
- How many commits in which directories Avril had?
- SELECT dir, count() FROM changes WHERE
author 'avril' - 154
- configs 2
- img 2
28What can we get? (3/3)
- How many lines was added by shakira and mariah
in index.avi last year? - SELECT file, author, count() FROM changes
WHERE file ilike 'index.AVI' and date gt '2003/'
and (author 'shakira' or author
'mariah') - index.avi mariah 30
- index.avi shakira 3
- How many lines in total had added users with 7
leter username and what was the maximum number of
lines added in one commit? - SELECT author, sum(added), max(added) FROM
changes WHERE author like '???????' - shakira 1834 663
- britney 3944 1563
29Can we see that thing of yours?
- Of course, here is a live presentation of the
following parts - CVSQL server JDBC driver
- CVSQL server GUI
- Command line gui
- Command line with parameters
- The first one coveres two types of interfaces XML
and JDBC - (yes, this one will be a bit short since
there is no much time)
30CVSQL server JDBC
- The presentation of CVSQL server called by the
JAVA application using the CVSQL JDBC driver
31JDBC demo Application
Java Application
TCP/IP Query
XML
JDBC Driver
CVSQL Database
This computer
32Demo Application, 3-tiers
Web Interface, browser
JSP - Page
JDBC Driver
Web - Server
J2EE Server
TCP/IP Query
XML
CVSQL Database
33CVSQL server GUI
- The presentation of CVSQL server GUI aggregate
34Command line GUI
- The presentation of Command line GUI
35Command line with parameters
- The presentation of Command line calling
36Future
37What can be done?
- There are still a lot of thing that could be
developed - Additional SQL query interface
- Additional tables that would provide user with
contents of files from CVS - Additional memory optimization
- New interfaces
- New operating systems
-
- But, thats another story
38Thank you !
- The CVSQL project Team wishes to thank
- All of you for your attention during this and all
other presentations - Our dear customer for making clear requests with
no modifications during the project - Our computers for making the most painful work
for us without complaining
Dyakooyu Tesekkurler Köszi Takk Dekuji Köszi
Köszi Dank u Blagodarya Faleminderit Salamat
Asante Mauruuru Mahalo Cám ón Grazias Gestena
Gracies Dekuji tack själv Danko Dankie Gracias
Grazia Grazia Dakujem Dakujem Merci Merci
Dhannvaad Sas efharisto Blagodarya Kiitos Grrcies
Danke Merci Grazie Cám ón Dhannvaad Sas efharisto
Grrcies Dyakooyu Grazia Hvala Danko tack själv
Faleminderit Merci Blagodarya Merci Komapsumnida
Ngiyabonga Diolch yn fawr Tesekkurler Dekuji
Merci Hvala Mauruuru Gestena Dhannvaad Gestena
Thank you Cám ón Kiitos Tesekkurler Köszi Grazias
Sas efharisto Thank you Asante Blagodarya Toda
39(No Transcript)