Merge branch 'master' of github.com:jeena/GGS-report

This commit is contained in:
Kallfaktorn 2011-05-02 14:00:21 +02:00
commit 5661080440
6 changed files with 1196 additions and 16 deletions

View file

@ -226,3 +226,13 @@
publisher = {ACM}, publisher = {ACM},
address = {New York, NY, USA}, address = {New York, NY, USA},
} }
@book{ieee_90,
author = {Electrical, Institute O. and (ieee), Electronics E.},
citeulike-article-id = {485989},
keywords = {bibtex-import},
posted-at = {2006-01-30 15:35:50},
priority = {2},
title = {{IEEE 90: IEEE Standard Glossary of Software Engineering Terminology}},
year = {1990}
}

BIN
graphics/netsplit2.dia Normal file

Binary file not shown.

825
graphics/netsplit2.eps Normal file
View file

@ -0,0 +1,825 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: /Diagram1.dia
%%Creator: Dia v0.97.1
%%CreationDate: Mon May 2 12:41:14 2011
%%For: jeena
%%Orientation: Portrait
%%Magnification: 1.0000
%%BoundingBox: 0 0 728 555
%%BeginSetup
%%EndSetup
%%EndComments
%%BeginProlog
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E
/F /G /H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W /X /Y
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
/d /e /f /g /h /i /j /k /l /m
/n /o /p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
/cp {closepath} bind def
/c {curveto} bind def
/f {fill} bind def
/a {arc} bind def
/ef {eofill} bind def
/ex {exch} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth pop} bind def
/tr {translate} bind def
/ellipsedict 8 dict def
ellipsedict /mtrx matrix put
/ellipse
{ ellipsedict begin
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def /savematrix mtrx currentmatrix def
x y tr xrad yrad sc
0 0 1 startangle endangle arc
savematrix setmatrix
end
} def
/mergeprocs {
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/Times-Roman-latin1
/Times-Roman findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Times-Italic-latin1
/Times-Italic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Times-Bold-latin1
/Times-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Times-BoldItalic-latin1
/Times-BoldItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-Gothic-latin1
/AvantGarde-Gothic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-BookOblique-latin1
/AvantGarde-BookOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-Demi-latin1
/AvantGarde-Demi findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-DemiOblique-latin1
/AvantGarde-DemiOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-Light-latin1
/Bookman-Light findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-LightItalic-latin1
/Bookman-LightItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-Demi-latin1
/Bookman-Demi findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-DemiItalic-latin1
/Bookman-DemiItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-latin1
/Courier findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-Oblique-latin1
/Courier-Oblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-Bold-latin1
/Courier-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-BoldOblique-latin1
/Courier-BoldOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-latin1
/Helvetica findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Oblique-latin1
/Helvetica-Oblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Bold-latin1
/Helvetica-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-BoldOblique-latin1
/Helvetica-BoldOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-latin1
/Helvetica-Narrow findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-Oblique-latin1
/Helvetica-Narrow-Oblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-Bold-latin1
/Helvetica-Narrow-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-BoldOblique-latin1
/Helvetica-Narrow-BoldOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-Roman-latin1
/NewCenturySchlbk-Roman findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-Italic-latin1
/NewCenturySchlbk-Italic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-Bold-latin1
/NewCenturySchlbk-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-BoldItalic-latin1
/NewCenturySchlbk-BoldItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-Roman-latin1
/Palatino-Roman findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-Italic-latin1
/Palatino-Italic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-Bold-latin1
/Palatino-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-BoldItalic-latin1
/Palatino-BoldItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Symbol-latin1
/Symbol findfont
definefont pop
/ZapfChancery-MediumItalic-latin1
/ZapfChancery-MediumItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/ZapfDingbats-latin1
/ZapfDingbats findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
28.346000 -28.346000 scale
-2.735000 -22.768412 translate
%%EndProlog
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 3.522500 9.042500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 3.522500 9.042500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 3.522500 9.042500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 7.328571 6.950000 m 8.421429 6.950000 l 9.150000 7.950000 l 8.421429 8.950000 l 7.328571 8.950000 l 6.600000 7.950000 l ef
0.000000 0.000000 0.000000 srgb
n 7.328571 6.950000 m 8.421429 6.950000 l 9.150000 7.950000 l 8.421429 8.950000 l 7.328571 8.950000 l 6.600000 7.950000 l cp s
0 slc
0 slj
[] 0 sd
n 7.328571 6.950000 m 8.421429 6.950000 l 9.150000 7.950000 l 8.421429 8.950000 l 7.328571 8.950000 l 6.600000 7.950000 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 4.474047 8.704705 m 6.389277 8.024806 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 4.756241 8.339242 m 4.368685 8.742108 l 4.923511 8.810432 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 6.107083 8.390269 m 6.494639 7.987403 l 5.939813 7.919078 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 9.622500 4.142500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 9.622500 4.142500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 9.622500 4.142500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 7.407500 11.697500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 7.407500 11.697500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 7.407500 11.697500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 9.224752 5.072235 m 8.509379 6.744416 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 9.301913 5.527474 m 9.268727 4.969443 l 8.842214 5.330811 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 8.432217 6.289177 m 8.465404 6.847208 l 8.891917 6.485840 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 7.757459 10.749197 m 8.344013 9.159778 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 7.657319 10.298455 m 7.718751 10.854086 l 8.126397 10.471562 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 8.444153 9.610520 m 8.382721 9.054889 l 7.975075 9.437413 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 22.487500 3.992500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 22.487500 3.992500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 22.487500 3.992500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 21.243571 7.250000 m 22.336429 7.250000 l 23.065000 8.250000 l 22.336429 9.250000 l 21.243571 9.250000 l 20.515000 8.250000 l ef
0.000000 0.000000 0.000000 srgb
n 21.243571 7.250000 m 22.336429 7.250000 l 23.065000 8.250000 l 22.336429 9.250000 l 21.243571 9.250000 l 20.515000 8.250000 l cp s
0 slc
0 slj
[] 0 sd
n 21.243571 7.250000 m 22.336429 7.250000 l 23.065000 8.250000 l 22.336429 9.250000 l 21.243571 9.250000 l 20.515000 8.250000 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 22.126814 4.937036 m 21.323341 7.041106 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 22.221879 5.388875 m 22.166699 4.832589 l 21.754778 5.210505 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 21.228276 6.589266 m 21.283456 7.145553 l 21.695377 6.767636 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 26.187500 8.892500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 26.187500 8.892500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 26.187500 8.892500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 18.472500 5.347500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 18.472500 5.347500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 18.472500 5.347500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 25.198529 8.689005 m 23.284018 8.295066 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 24.767913 8.855637 m 25.308038 8.711538 l 24.868684 8.365897 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 23.714635 8.128434 m 23.174509 8.272533 l 23.613864 8.618174 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 19.054214 6.174147 m 20.386316 8.067133 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 19.482071 6.347743 m 18.989872 6.082713 l 19.073167 6.635490 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 19.958460 7.893537 m 20.450658 8.158566 l 20.367363 7.605790 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 6.022500 14.397500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 6.022500 14.397500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 6.022500 14.397500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 9.078571 15.355000 m 10.171429 15.355000 l 10.900000 16.355000 l 10.171429 17.355000 l 9.078571 17.355000 l 8.350000 16.355000 l ef
0.000000 0.000000 0.000000 srgb
n 9.078571 15.355000 m 10.171429 15.355000 l 10.900000 16.355000 l 10.171429 17.355000 l 9.078571 17.355000 l 8.350000 16.355000 l cp s
0 slc
0 slj
[] 0 sd
n 9.078571 15.355000 m 10.171429 15.355000 l 10.900000 16.355000 l 10.171429 17.355000 l 9.078571 17.355000 l 8.350000 16.355000 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 6.981990 14.698119 m 8.865193 15.288146 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 7.427175 14.575617 m 6.875301 14.664692 l 7.277685 15.052746 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 8.420007 15.410648 m 8.971882 15.321573 l 8.569497 14.933518 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 12.272500 18.997500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 12.272500 18.997500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 12.272500 18.997500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 6.507500 18.952500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 6.507500 18.952500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 6.507500 18.952500 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 11.476170 18.374974 m 10.347594 17.492716 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 11.016363 18.332848 m 11.564252 18.443832 l 11.324306 17.938930 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 10.807400 17.534842 m 10.259511 17.423858 l 10.499458 17.928760 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 7.365934 18.419124 m 8.888641 17.473011 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 7.563726 18.001901 m 7.270969 18.478129 l 7.827606 18.426598 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 8.690849 17.890233 m 8.983606 17.414005 l 8.426969 17.465536 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0 slc
n 9.415336 7.433085 m 14.003374 5.662864 16.807532 12.402189 20.622968 9.308768 c s
[] 0 sd
0 slj
0 slc
n 9.065475 7.568073 m 9.441965 7.154847 l 9.415336 7.433085 l 9.621949 7.621330 l ef
n 9.065475 7.568073 m 9.441965 7.154847 l 9.415336 7.433085 l 9.621949 7.621330 l cp s
[] 0 sd
0 slj
0 slc
n 20.914258 9.072600 m 20.683316 9.581684 l 20.622968 9.308768 l 20.368426 9.193297 l ef
n 20.914258 9.072600 m 20.683316 9.581684 l 20.622968 9.308768 l 20.368426 9.193297 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0 slc
n 15.800000 14.318412 m 14.050000 15.418412 12.883553 13.107875 10.779296 15.289536 c s
[] 0 sd
0 slj
0 slc
n 10.518962 15.559446 m 10.686134 15.026011 l 10.779296 15.289536 l 11.046014 15.373122 l ef
n 10.518962 15.559446 m 10.686134 15.026011 l 10.779296 15.289536 l 11.046014 15.373122 l cp s
/Helvetica-latin1 ff 0.560000 scf sf
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 20.175435 15.155000 m 21.268292 15.155000 l 21.996863 16.155000 l 21.268292 17.155000 l 20.175435 17.155000 l 19.446863 16.155000 l ef
0.000000 0.000000 0.000000 srgb
n 20.175435 15.155000 m 21.268292 15.155000 l 21.996863 16.155000 l 21.268292 17.155000 l 20.175435 17.155000 l 19.446863 16.155000 l cp s
0 slc
0 slj
[] 0 sd
n 20.175435 15.155000 m 21.268292 15.155000 l 21.996863 16.155000 l 21.268292 17.155000 l 20.175435 17.155000 l 19.446863 16.155000 l cp s
(GGS node) 22.500000 16.150000 m
gs 1 -1 sc sh gr
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 20.722500 18.542500 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 20.722500 18.542500 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 20.722500 18.542500 0.737500 0.737500 0 360 ellipse cp s
(Game client) 22.500000 18.550000 m
gs 1 -1 sc sh gr
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 19.923607 20.450000 m 21.626393 20.450000 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 20.311803 20.200000 m 19.811803 20.450000 l 20.311803 20.700000 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 21.238197 20.700000 m 21.738197 20.450000 l 21.238197 20.200000 l s
(Network) 22.550000 20.450000 m
gs 1 -1 sc sh gr
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0 slc
n 18.250000 12.968412 m 19.750000 11.318412 22.957850 12.523043 22.251663 9.771606 c s
[] 0 sd
0 slj
0 slc
n 22.158437 9.408379 m 22.524890 9.830531 l 22.251663 9.771606 l 22.040587 9.954832 l ef
n 22.158437 9.408379 m 22.524890 9.830531 l 22.251663 9.771606 l 22.040587 9.954832 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
0 slj
0.100000 slw
0 slc
0 slj
[] 0 sd
1.000000 1.000000 1.000000 srgb
n 5.906257 4.286098 0.737500 0.737500 0 360 ellipse f
0.000000 0.000000 0.000000 srgb
n 5.906257 4.286098 0.737500 0.737500 0 360 ellipse cp s
0 slc
0 slj
[] 0 sd
n 5.906257 4.286098 0.737500 0.737500 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 6.382605 5.178267 m 7.223254 6.752748 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 6.785977 5.402961 m 6.329947 5.079641 l 6.344908 5.638457 l s
0.100000 slw
[] 0 sd
0 slj
0 slc
n 6.819883 6.528053 m 7.275913 6.851374 l 7.260951 6.292557 l s
0.080000 slw
0 slj
[] 0 sd
n 17.800000 14.868412 m 17.260000 13.923412 l 16.877973 14.141713 l 16.600000 12.768412 l 17.140000 13.713412 l 17.522027 13.495111 l ef
n 17.800000 14.868412 m 17.260000 13.923412 l 16.877973 14.141713 l 16.600000 12.768412 l 17.140000 13.713412 l 17.522027 13.495111 l cp s
0.080000 slw
0 slj
[] 0 sd
n 21.350000 22.768412 m 20.893250 22.095662 l 20.529221 22.342812 l 20.335000 21.273412 l 20.791750 21.946162 l 21.155779 21.699012 l ef
n 21.350000 22.768412 m 20.893250 22.095662 l 20.529221 22.342812 l 20.335000 21.273412 l 20.791750 21.946162 l 21.155779 21.699012 l cp s
(Demaged network) 22.500000 21.968412 m
gs 1 -1 sc sh gr
showpage

BIN
graphics/netsplit2.pdf Normal file

Binary file not shown.

BIN
graphics/networksplit2.pdf Normal file

Binary file not shown.

View file

@ -81,6 +81,12 @@
morestring=[b]', morestring=[b]',
morestring=[b]" morestring=[b]"
} }
\usepackage{float}
\floatstyle{ruled}
\newfloat{code}{thp}{lop}
\floatname{code}{Code}
\end_preamble \end_preamble
\use_default_options true \use_default_options true
\maintain_unincluded_children false \maintain_unincluded_children false
@ -2576,16 +2582,20 @@ Site A
Site B Site B
\emph default \emph default
by a faulty network (illustrated by the cloud and lightening bolt). by a faulty network (illustrated by the cloud and lightening bolt).
When When
\emph on \emph on
Site A
\emph default \emph default
and the decoupled node
\emph on \emph on
Site B
\emph default \emph default
later re-establish communications, they may have generated the same ID:s and
if using algorithm \emph on
\emph default
the rest of the network later re-establish communication, they may have
generated the same ID:s if using algorithm
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref
reference "alg:A-simple-generator" reference "alg:A-simple-generator"
@ -2600,7 +2610,7 @@ reference "alg:A-simple-generator"
\begin_inset Float figure \begin_inset Float figure
wide false wide false
sideways false sideways false
status collapsed status open
\begin_layout Plain Layout \begin_layout Plain Layout
\begin_inset ERT \begin_inset ERT
@ -2620,7 +2630,7 @@ begin{centering}
\begin_layout Plain Layout \begin_layout Plain Layout
\begin_inset Graphics \begin_inset Graphics
filename graphics/NetworkSPlit.eps filename graphics/netsplit2.eps
scale 40 scale 40
\end_inset \end_inset
@ -3639,6 +3649,236 @@ name "sub:The-structure-of"
\end_inset \end_inset
\end_layout
\begin_layout Standard
The GGS protocol is modelled after the HTTP protocol.
The main reason for this is the familiarity many developers already have
with HTTP due to its presence in internet software.
Each GGS protocol packet contains a headers section.
The headers section is followed by a data section.
In the headers section, parameters concerning the packet is placed.
In the data section, the actual data payload of the packet is placed.
\end_layout
\begin_layout Standard
There is no requirement of any specific order of the parameters in the headers
section, however the data section must always follow directly after the
headers section.
\end_layout
\begin_layout Standard
In the example below, line 1 contains a Game-Command parameter.
This parameter is used to determine which game-specific command the client
is trying to perform.
The handling of this parameter is specific to each game, and can be anything.
\end_layout
\begin_layout Standard
Line 2 specifies a game token.
This is a UUID which is generated for each client upon authentication with
the GGS.
The GGS uses this token in case a client is disconnected and the new connection
created when the client reconnects must be re-paired with the player object
inside the GGS.
The UUID is also used as a unique ID within GDL VMs.
\end_layout
\begin_layout Standard
Line 3 specifies the content type of the payload of this particular packet.
This parameter allows the GGS to invoke special parsers, should the data
be encoded or encrypted.
When encryption is employed, only the payload is encrypted, not the header
section.
This is a scheme which does not allow for strong encryption, but is deemed
feasible for gaming purposes.
\end_layout
\begin_layout Standard
Line 4 specifies the content length of the payload following immediately
after the headers section.
\end_layout
\begin_layout Standard
The parser of the GGS protocol implemented in the GGS prototype is designed
as a finite state machine using the gen_fsm behaviour.
When a full message has been parsed by the parser, the message is converted
into the internal structure of the GGS messages, and sent in to the system
from the protocol paser using message passing.
\end_layout
\begin_layout Standard
\begin_inset Note Note
status open
\begin_layout Plain Layout
Packet below is not an algorithm, but I don't know how to change that label..
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float algorithm
wide false
sideways false
status open
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
lstset{
\end_layout
\begin_layout Plain Layout
backgroundcolor=
\backslash
color{white},
\end_layout
\begin_layout Plain Layout
extendedchars=true,
\end_layout
\begin_layout Plain Layout
basicstyle=
\backslash
footnotesize
\backslash
ttfamily,
\end_layout
\begin_layout Plain Layout
showstringspaces=false,
\end_layout
\begin_layout Plain Layout
showspaces=false,
\end_layout
\begin_layout Plain Layout
numbers=left,
\end_layout
\begin_layout Plain Layout
numberstyle=
\backslash
footnotesize,
\end_layout
\begin_layout Plain Layout
numbersep=9pt,
\end_layout
\begin_layout Plain Layout
tabsize=2,
\end_layout
\begin_layout Plain Layout
breaklines=true,
\end_layout
\begin_layout Plain Layout
showtabs=false,
\end_layout
\begin_layout Plain Layout
captionpos=b
\end_layout
\begin_layout Plain Layout
}
\end_layout
\begin_layout Plain Layout
\backslash
begin{lstlisting}
\end_layout
\begin_layout Plain Layout
Game-Command: chat
\end_layout
\begin_layout Plain Layout
Token: e30174d4-185e-493b-a21a-832e2d9d7a1a
\end_layout
\begin_layout Plain Layout
Content-Type: text
\end_layout
\begin_layout Plain Layout
Content-Length: 18
\end_layout
\begin_layout Plain Layout
\end_layout
\begin_layout Plain Layout
Hello world, guys!
\end_layout
\begin_layout Plain Layout
\backslash
end{lstlisting}
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "alg:A-sample-packet"
\end_inset
A sample packet sent from a client to the GGS during a chat session
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -3666,10 +3906,94 @@ name "sub:The-coordinator-module"
\end_layout \end_layout
\begin_layout Standard
The coordinator module is responsible for keeping track of all players,
their seats and tables.
Players register with the coordinator process when first connecting to
the server, and the coordinator places each player by their respective
table.
\end_layout
\begin_layout Standard
The coordinator keeps mappings between each player and table, therefore
it is used to perform lookups on tables and players to find out which are
connected.
The connectivity of players and tables is important when sending messages
to all participants in a game.
A lookup in the coordinator process is performed prior to notifying all
players in a game to ensure the message reaches all players.
The lookup can be performed either using internal identification codes
or using the UUID associated with each client and table.
\end_layout
\begin_layout Standard
The coordinator process contains important state, therefore a backup process
is kept at allt times.
All good data processed by the coordinator is stored for safekeeping in
the backup process as well.
Data which is potentisally harmful is not stored in the backup process.
\end_layout
\begin_layout Standard
Upon a crash, the coordinator process recovers the prior good state from
the backup process and continues where it left off.
A supervisor process monitors the coordinator process and restarts the
process when it malfunctions.
There is a window of time between the crash of the coordinator and the
restarting of the coordinator, during this time, players can not be seated
by new tables, and can not disconnect from the server.
This window of time is very small, and the unavailability of the coordinator
process should not be noticed by more than a short time lag for the clients.
\end_layout
\begin_layout Standard
Moving back to the example of the chess club, the coordinator process can
be seen as a judge, monitoring all moves of the players.
At the same time as acting as a judge, the coordinator process is also
a host in the chess club, seating players by their tables and offering
services to the players.
\end_layout
\begin_layout Subsection \begin_layout Subsection
The table module The table module
\end_layout \end_layout
\begin_layout Standard
The table module is mostly a hub used for communication.
New table processes are created by the coordinator on demand.
The table module does not contain any business logic, however each process
contains information concerning which players are seated by that particular
table.
\end_layout
\begin_layout Standard
The information about which players are seated by each table is used when
notifying all players by a table of an action.
Consider a game of chess, each player notifies the table of its actions,
the table then notifies the rest of the participants of these actions after
having had the actions processed by the game VM, where an action could
be moving a playing piece.
\end_layout
\begin_layout Standard
Each table is associated with a game VM.
The actions sent to a table are processed by the game VM, this is where
the game logic is implemented.
\end_layout
\begin_layout Standard
After a crash in a table process, the entire table must be rebuilt and the
players must be re-associated with the table.
Data concerning players is kept in the coordinator process, and is restored
from there.
Data kept in the actual game is not automatically corrupted by the crash
in a table, however the table must be re-associated with the game VM is
was associated with prior to the crash of the table.
The table process maps well into the setting of the real-worl chess clib
scenario previously discussed.
A table works in the same way in a real world setting as in the GGS setting.
\end_layout
\begin_layout Subsection \begin_layout Subsection
The game virtual machine module The game virtual machine module
\end_layout \end_layout
@ -3691,13 +4015,27 @@ Techniques for ensuring reliability
\begin_layout Standard \begin_layout Standard
One of the main goals of the project is to achieve high reliability. One of the main goals of the project is to achieve high reliability.
A highly reliable application is one that crashes very, very rarely The term
\begin_inset Note Note \begin_inset Quotes eld
status open \end_inset
\begin_layout Plain Layout reliable system
CITATION NEEDED \begin_inset Quotes erd
\end_layout \end_inset
is defined by the IEEE as a system with
\begin_inset Quotes eld
\end_inset
the ability of a system or component to perform its required functions under
stated conditions for a specified period of time
\begin_inset Quotes erd
\end_inset
\begin_inset CommandInset citation
LatexCommand citet
key "ieee_90"
\end_inset \end_inset
@ -3760,9 +4098,16 @@ This entire section is bad.
\begin_layout Standard \begin_layout Standard
By linking processes together and notifying parents when children exit, By linking processes together and notifying parents when children exit,
we can create supervisors. supervisors are created.
A supervisor is a common approach in ensuring that an application functions A supervisor is a common approach in ensuring that an application functions
in the way it was intended. in the way it was intended
\begin_inset CommandInset citation
LatexCommand citet
key "Savor:1997:HSA:851010.856089"
\end_inset
.
When a process misbehaves, the supervisor takes some action to restore When a process misbehaves, the supervisor takes some action to restore
the process to a functional state. the process to a functional state.