Projektförslag: Hantering av ligaresultat

Nedan följer ett scenario i vilket en person vill beställa ett enkelt(?) program av Er. Han har en del synpunkter på vad programmet bör klara av, och har bifogat lite ideer på hur man skulle kunna implementera det.

Observera att `behovet' och beskrivningar inte säkert är kompletta, samt att vissa saker de önskar sig är onödiga eller skulle bli våldsamt dyra att implementera.

Det är Er uppgift att utifrån denna luddiga problemformulering författa en funktionsspecifikation som beskriver exakt vad programmet skall klara av och hur det kommer att fungera gentemot användaren.

Scenario

Lars Gunnar Björklind har fått för mycket att göra. I sitt dagliga arbete på spelmonopolet TipsService behöver Björklind ständigt veta den aktuella poängställningen i diverse fotbollsligor runt hela landet. Tidigare, när det bara var en liga, klarade han att hålla informationen i minnet, men då antalet ligor har ökat kraftigt på senare år så går det inte längre.

Björklind har själv försökt att hitta ett sådant program på marknaden (d.v.s. i de programvaruhus som finns i stan) men har inte hittat något. Det närmaste han kommit var ett program skrivet av en kompis till honom. Då han provade programmet upptäckte han följande dumheter:

På er fråga hur han vill att ett program skall fungera, svarade han (ungefär) följande: Jaha, säger du. Och det här var allt? Du förklarar att det som sagts ovan bitvis kan vara lite besvärligt, och att du därför kommer att dela in uppgifterna i flera grupper (sådant som måste vara med och lite besvärligare men önskvärda saker) i den kravspecifikation du nu skall skriva. Sedan återkommer du för att se att du fattat problemet rätt. Det är inte säkert att du kan lova att implementera de svårare delarna.

Kommentar till scenariot

Nedan följer lite idéer om hur man kan bygga upp en datastruktur för att handskas med lagen enligt ovan. När ni börjar veta hur ni vill ha det, så skriver ni en funktions- specifikation enligt ovan (se `Handledningen till projektuppgifterna' för en förklaring). Datastrukturen Av kommentarerna till `kompisens' program ovan kan man sluta sig till att Lars Gunnar vill ha en dynamisk datastruktur (en som växer allt eftersom man stoppar in saker i den). En sådan kan bestå av poster, som på något sätt ät hopkopplade med pekare, och frågan är då vilka sorters poster du behöver. Ett sätt kan vara att ha en lista av LAG och en lista av MATCHer. Då ett lag spelar flera matcher, måste det i varje LAG finnas en lista av kopplingar till MATCHerna, d.v.s. någon typ av post där ena delen pekar ut en MATCH och andra delen pekar ut nästa post. I varje MATCH kan man då lagra (förutom datum för matchen) information om vad som är hemmalag och bortalag, (pekare till dessa LAG för att inte dubbellagra information!) samt hur många mål respektive lag gjort.

Rita upp, med lådor och pilar, hur datastrukturen kan se ut. Får ni oöverstigliga problem med val av datastruktur (d.v.s. förstår ni inte ovanstående exempel) har handledaren en mer handfast instruktion på vad ni skall göra. Den ger dock mindre utrymme åt er fantasi.

Lycka till!


Thomas Padron-McCarthy (tpm@ida.liu.se), 20 september 1998.
Med tack till Torbjörn Jonsson, Peter Loborg m fl.