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!
2015-10-04
1
Selected Topics in Software Engineering
Distributed Software Development
2015-10-04
2
Siniša Tomić
How to make:
Tuna salad
2015-10-04
3
How to make tuna salad
• Ingredients
–
–
–
–
–
–
–
–
• Recipe
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
–
–
–
–
Cook the pasta
Cool down the pasta
Chop the rest of ingredients
Mix all the ingredients
together
• Note
– Best served cold
2015-10-04
4
Siniša Tomić
CVSQL
Final project report
2015-10-04
5
Current project status
100% finished
100% new
OK
“As seen on TV previous presentations”
2015-10-04
6
Past
2015-10-04
7
I 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 including
developer testing during the development)
• ~ 30 hours
2015-10-04
8
Disclaimer
• No animal was harmed in the making of this software
• No tree was cut down during the making of the documentation
2015-10-04
9
Following the advices (1/3)
Stig Larsson - ABB
• Don’t do it if you don’t 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
2015-10-04
10
Following 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 we’ve
tried to do that for local jobs
2015-10-04
11
Following the advices (3/3)
• Aim at continuous integration
– Yes, we’ve tried to do, with only minor problems during connection of
JDBC driver and CVSQL server
• Provide local support for complex tools
– We haven’t used any complex tools,
so there was no need
• For small projects; build a virtual team
– Yes
• Do risk management
– We haven’t 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.
2015-10-04
12
Ideas for the next time
• Email can solve you a lot of problems
– Email was, at the end, the best way of communication. It has it’s
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
– We’ve used it to agree on all parts of the
project that we share really fast
• Large amount of motivation
– We’ve 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 description
the main job was to do things done the way it was expected
2015-10-04
13
Present
2015-10-04
14
This 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
2015-10-04
15
Wait, wait. Did you said 5?
• Yes, we know that we said before that we’ll do 4 types of interfaces:
–
–
–
–
Command line GUI
Command line with arguments
XML Server
JDBC
• But, it’s 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
2015-10-04
16
But that’s 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 don’t need to worry if someone else is using it.
2015-10-04
17
That’s nice, but I have two projects
• Don’t worry, you don’t need two separate
installations 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 one
virtual 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
2015-10-04
18
Sounds nice, but does it work?
• Sure it does work, but we know that you don’t have too much time to
type in all the test queries
• So we said, “Come on, it’s Christmas time” again and so we’re
adding also
the automated testing capabilities
• That means you don’t 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, it’s part
of Test document – only 2000 pages result
– Yes, you can get it as ASCII file too if you like 
2015-10-04
19
Why would I want to do a self test?
• One reason is that the complete CVSQL is written in standard
C/C++ language and doesn’t 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
2015-10-04
20
Is it multilingual?
• Of course it is.
• You can use the software in one of the following languages:
– English
– Swedish
– Croatian
• Don’t worry, you don’t 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.
2015-10-04
21
What 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
2015-10-04
22
So what are CVSQL limitations
• Of course, there are some additional limitations imposed by the
project
– You don’t 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 you’re 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?
2015-10-04
23
Any 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 don’t need to know anything about CVS to get that data
2015-10-04
24
SQL diagrams
USE diagram
SELECT
diagram
2015-10-04
25
What 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 date> '2002/12/20' AND date < '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;
2015-10-04
26
What 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;
2015-10-04
27
What 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 > '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;
2015-10-04
28
Can 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)
2015-10-04
29
CVSQL server + JDBC
• The presentation of CVSQL server called
by the JAVA application using the CVSQL
JDBC driver
2015-10-04
30
JDBC demo Application
Java Application
TCP/IP
Query
XML
JDBC Driver
CVSQL Database
This computer
2015-10-04
31
Demo Application, 3-tiers
Web Interface, browser
JSP - Page
JDBC Driver
J2EE Server
Web - Server
TCP/IP
Query
XML
CVSQL Database
2015-10-04
32
CVSQL server GUI
• The presentation of CVSQL server GUI
aggregate
2015-10-04
33
Command line GUI
• The presentation of Command line GUI
2015-10-04
34
Command line with parameters
• The presentation of Command line calling
2015-10-04
35
Future
2015-10-04
36
What 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, that’s another story …
2015-10-04
37
Thank 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 Dękuji Köszi Köszi Dank u Blagodarya
Faleminderit Salamat Asante Mauruuru Mahalo Cám ón Grazias Gestena Gracies
Dękuji tack själv Danko Dankie Gracias Grazia Grazia Dakujem Dakujem Merci Merci
Dhannvaad Sas efharisto Blagodarya Kiitos Grŕcies Danke Merci Grazie Cám ón
Dhannvaad Sas efharisto Grŕcies Dyakooyu Grazia Hvala Danko tack själv
Faleminderit Merci Blagodarya Merci Komapsumnida Ngiyabonga Diolch yn
fawr Tesekkurler Dękuji Merci Hvala Mauruuru Gestena Dhannvaad Gestena
Thank you Cám ón Kiitos Tesekkurler Köszi Grazias Sas efharisto Thank you Asante
Blagodarya Toda
2015-10-04
38
2015-10-04
39
Descargar

Selected Topics of Software Engineering