Granskad: Datum: Signatur: Godkänd : Datum: Signatur:

Relevanta dokument
BILAGA G till Programvaruprojekt FÖRBÄTTRAT GRÄNSSNITT multipc_logic_c Rev 2.

BILAGA F till Programvaruprojekt BRISTFÄLLIGT GRÄNSSNITT. multipc_logic_c Rev 1.

BILAGA A till Programvaruprojekt ANVÄNDARKRAV MultiPC v1.0

BILAGA E till Programvaruprojekt ÅTERSTÅENDE PROBLEM MultiPC v1.0. Innehållsförteckning

INKREMENTELL UTVECKLING AV STABIL PROGRAMVARA

BILAGA B till Programvaruprojekt DETALJKRAV MultiPC v1.0

BILAGA D till Programvaruprojekt KONFIGDOKUMENT MultiPC v1.0

TPFD - TestPlan Före Design BESKRIVNING AV AKTIVITETER

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

HI1024 Programmering, grundkurs TEN

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

BILAGA C till Programvaruprojekt TESTPLAN MultiPC v1.0

Enkla datatyper minne

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

HI1024 Programmering, grundkurs TEN

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Värmedistribution i plåt

Objektorientering: Lagring, räckvidd och livstid

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Inlämningsuppgift 1, Digsim

Tentamen FYTA11 Javaprogrammering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Laboration 3 GUI-programmering

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Chapter 3: Using Classes and Objects

Tentamen, EDAA10 Programmering i Java

Installation av Microsoft Office Version 2.1

OOP Objekt-orienterad programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Tentamen OOP

Tentamen *:58/ID100V Programmering i C Exempel 3

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

HI1024 Programmering, grundkurs TEN

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

BaraTrav Grunderna Version 1.3

PROGRAMMERING-Java TENTAMINA

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Uppgift 1 ( Betyg 3 uppgift )

Länkning av Prolog under C

Objektorientering: Lagring och livstid

Övning från förra gången: readword

Föreläsning 3-4 Innehåll

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Uppgift 1 ( Betyg 3 uppgift )

1 Klasser och objektorientering Vad är objektorientering?

Programmering B med Visual C

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

C++ Slumptalsfunktioner + switch-satsen

TENTAMEN OOP

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Det här dokumentet går kortfattat igenom registrerings- och ansökningsprocessen.

Simulering med ModelSim En kort introduktion

Tentamen Programmeringsteknik för BME, C, D, E, F, I, N & Pi

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

kl Tentaupplägg

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TUTORIAL: SAMLING & KONSOLL

BaraTrav Grunderna Version 2.1

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

DAT043 Objektorienterad Programmering

Laboration 3, uppgift En klass för en räknare

INTRODUKTION TILL JDBC

4.4 Swing ett interaktivt grafiskt gränssnitt

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Tentamen, EDAA20/EDA501 Programmering

Tentamen i Grundläggande Programvaruutveckling, TDA548

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Symboliska konstanter const

PROGRAMMERING-JAVA TENTAMINA

Språket Python - Del 2 Grundkurs i programmering med Python

Objektorienterad programmering

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

729G04 Programmering och diskret matematik. Föreläsning 7

SKOLKORT. Användarmanual. Sida 1 av 17

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Tentamen ges för: Tentamensdatum: Tid:

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Uppgift 1 ( Betyg 3 uppgift )

Planering Programmering grundkurs HI1024 HT TIDAA

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Axalon Process Navigator SP Användarhandledning

Gissa det hemliga talet

Transkript:

DESIGNSPECIFIKATION Rev 8 1(13) DESIGNSPECIFIKATION MultiPC v1.0 Ansvarig: Håkan Lindegren Granskad: Datum: Signatur: Godkänd : Datum: Signatur:

DESIGNSPECIFIKATION Rev 8 2(13) Innehållsförteckning 1 ALLMÄNT...3 2 REFERENSER...3 3 TERMINOLOGI...3 4 RELATION TILL ANDRA DOKUMENT...3 5 SUBSYSTEMINDELNING...3 6 SUBSYSTEM...4 6.1 WEBBPLATS...4 6.1.1 Stödgraf...4 6.1.2 Krävda gränssnitt...4 6.1.3 Erbjudet gränssnitt...4 6.1.4 Funktion...4 6.1.5 Övrigt...4 6.2 MULTIPC GUI...4 6.2.1 Stödgraf...4 6.2.2 Krävda gränssnitt...5 6.2.3 Erbjudet gränssnitt...6 6.2.4 Funktion...6 6.2.5 Övrigt...6 6.3 MULTIPC LOGIK...6 6.3.1 Stödgraf...6 6.3.2 Krävda gränssnitt...7 6.3.3 Erbjudet gränssnitt...7 6.3.4 Funktion...11 6.3.5 Övrigt...11 6.4 MULTIPC HJÄLP...11 6.4.1 Stödgraf...11 6.4.2 Krävda gränssnitt...11 6.4.3 Erbjudet gränssnitt...12 6.4.4 Funktion...12 6.4.5 Övrigt...12 7 PROBLEM...12 8 ÖVRIGT...13

DESIGNSPECIFIKATION Rev 8 3(13) 1 ALLMÄNT Det här dokumentet ska beskriva hur MultiPC v1.0 ska konstrueras. Dokumentet specificerar en hierarkisk indelning i subsystem. För subsystemen visas sedan beroendediagram, klassdiagram, arkitekturdiagram m.m. 2 REFERENSER [DETDOK] Lindegren, Håkan: MultiPC v1.0: Detaljkrav. [ANVDOK] Lindegren, Håkan: MultiPC v1.0: Användarkrav. 3 TERMINOLOGI Fasadklass En fasadklass läggs ovanpå en struktur av klasser för att dölja den underliggande strukturen. Det enda det externa systemet ser av stödsystemet är fasadklassen. Singleton Ett designmönster som kan tas till då ett system endast ska ha en instans av en klass. Ett alternativ vore att ha en enda global instans av klassen. 4 RELATION TILL ANDRA DOKUMENT Det här dokumentet bör granskas mot detaljkravspecifikationen. Dokumentet ska fungera som indata till implementationen. Dokumentet ska granskas och rättas till i samband med verifiering som följer på implementationen. 5 SUBSYSTEMINDELNING Webbplats MultiPC GUI MultiPC Logik Installationsfil MultiPC Hjälp Webbplats ska utgöra en webbplats med information om produkten MultiPC. Från webbplatsen ska det gå att ladda ner en installationsfil med ett PC-program för multiplikationsträning. PC-programmet delas in i två subsystem, ett för GUI:t och ett för logiken. Det ska utvecklas en windows hjälpfil för PC-programmet.

DESIGNSPECIFIKATION Rev 8 4(13) 6 SUBSYSTEM 6.1 Webbplats 6.1.1 Stödgraf Grafen visar beroenden mellan filer på webbplatsen. Där inget filltillägg anges gäller att det ska vara.html. 6.1.2 Krävda gränssnitt På webbplatsen: stöd för ASP v2.0. Hos användaren: Webbläsare med stöd för ramar. 6.1.3 Erbjudet gränssnitt Filen index.html ger entré till webbplatsen. 6.1.4 Funktion Subsystemet ska tillhandahålla MultiPC webbplats. 6.1.5 Övrigt Gränssnitt mot det nerladdningsbara PC-programmet utgörs av filen mulsetup.zip. 6.2 MultiPC GUI 6.2.1 Stödgraf

DESIGNSPECIFIKATION Rev 8 5(13) Arkitektur GUI:t ska accessa logiken via den enda klassen multipc_logic_c. GUI-klasser och beroenden Klasserna i GUI:t kommer att genereras av utvecklingsverktyget. Ttraining_frm Klass som ska hantera visning av träningsfönstret där en elev kan öva på tal. Träningsfönstret kommer att vara huvudfönster i programmet. Tnames_frm Klass som ska hantera visning av fönstret där en elev kan skriva in sitt namn. Tresult_frm Klass som ska hantera visning av facit då en elev har gjort klart ett prov. Tstatistics_frm Klass som ska hantera visning av statistik för en viss provtyp. Tdetailed_frm Klass som ska hantera visning av detaljstatistik för ett visst tal. Tmsg_frm Klass som ska hantera visning av felmeddelanden. Ttestmode_frm Klass som ska hantera visning av resultatet av en körning i testmod. 6.2.2 Krävda gränssnitt En PC med Windows 2000. Fönsterkomponenter i utvecklingsverktyget. multipc_logic_c utvecklad och klar enligt nedan. mulhelp.hlp utvecklad och klar enligt nedan.

DESIGNSPECIFIKATION Rev 8 6(13) 6.2.3 Erbjudet gränssnitt En programfil multipc.exe via vilket PC-programmet kan startas. 6.2.4 Funktion Subsystemet ska tillhandahålla PC-programmet MultiPC. 6.2.5 Övrigt EXE-filen ska inte splittras i två delar. Logiken ska länkas ihop med GUI:t. multipc.exe ska tillsammans med mulhelp.hlp utgöra indata för installationen. Installationen ska tillsammans med en readme-fil packas ihop i filen mulsetup.zip. 6.3 MultiPC logik 6.3.1 Stödgraf problem_s En struct som ska hålla reda på två stycken heltal. Heltalen ska representera ett multiplikationsproblem, t.ex. 7 3. answered_problem_s En struct som är en problem_s med ett heltal för avgivet svar och ett heltal för den tid det tog att avge svaret. answers_log_c Klass som ska hålla ordning på tio stycken answered_problem_s. Ska hantera data för facitfönstret. details_answer_s Struct som ska hålla reda på detaljer om ett enda problem för detaljstatistiken. I praktiken en problem_s och

DESIGNSPECIFIKATION Rev 8 7(13) en vektor med alla elevens svar, dock högst 30 stycken. Att det ska vara högst 30 stycken ges av detaljkraven för MultiPC. detailed_answers_log_c Klass som ska hantera detaljstatistik för samtliga 100 multiplikationstal som är möjliga. statistics_problem_s En struct som är en problem_s förstärkt med två heltal för antalet försök och antalet rätt. statistics_log_c Klass som ska hantera statistik för samtliga 100 multiplikationstal som är möjliga. problem_generator_c Klass som ska slumpa fram nya multiplikationstal. Den får aldrig slumpa samma två tal i rad, det ges av kravställningen för MultiPC. multidb_c Klass som ska fungera som gränssnitt mot filhantering av elevnamn. Eftersom den troligen ska byggas ut till ett generellt databasgränssnitt i framtida utgåvor får den namnet multidb_c. multipc_logic_c Ska ge GUI-klasserna ett snällt gränssnitt via vilket de kan manipulera logiken. 6.3.2 Krävda gränssnitt En C++ kompilator. 6.3.3 Erbjudet gränssnitt En fasadklass multipc_logic_c med följande gränssnitt: Konstanter för felhantering vid läsning och skrivning av elevnamn ----------------------------------------------------- typedef enum { DB_OK, DB_CORRUPT, WRITE_FAILED, DB_FULL } db_status_t; class multipc_logic_c { public: Ska returnera en unik instans av multipc_logic_c Parametrar: INGA Retur: Pekare till unik instans Felhantering: INGEN ---------------------------------------------- static multipc_logic_c *get_instance(); Returnerar status för elev DB För anrop INNAN get_first_pupil/get_next_pupil Parametrar: INGA

DESIGNSPECIFIKATION Rev 8 8(13) Retur: Status hos elev DB: DB_OK eller DB_CORRUPT Felhantering: Via statusvärdet Om status är DB_CORRUPT kommer ny och tom elevfil att skapas. Anroparen kan sedan fortsätta. Jämför med detaljkraven under 120 ----------------------------------------------------- db_status_t get_db_status(); För att loopa över och läsa in elevnamn Parametrar: first_name: för lagring av elevs förnamn, minst 40 tecken last_name: för lagring av elevs efternamnnamn, minst 40 tecken item_found: sätts till 1 om elev fanns, 0 annars Retur: item_found = 1 indikerar att det fanns ytterligare en elev item_found = 0 ==> Ingen elev, övriga param oförändrade Felhantering: INGEN ---------------------------------------------- void get_first_pupil( char first_name[], char last_name[], void get_next_pupil( char first_name[], char last_name[], Sätter aktuell elev Parametrar: first_name: elevens förnamn, max 40 tecken last_name: elevens efternamn, max 40 tecken Retur: INGEN Felhantering: INGEN ---------------------------------------------- void set_pupil( char first_name[], char last_name[] ); Ger tillbaka namn på aktuell elev Parametrar: first_name: elevens förnamn, minst 40 tecken last_name: elevens efternamn, minst 40 tecken Retur: Namndata i first_name och last_name Felhantering: INGEN ---------------------------------------------- void get_pupil( char first_name[], char last_name[] ); För lagring av nytt elevnamn Sätter också aktuell elev, d.v.s. anropar set_pupil Parametrar: first_name: elevens förnamn, max 40 tecken

DESIGNSPECIFIKATION Rev 8 9(13) last_name: elevens efternamn, max 40 tecken db_status: sätts till DB_OK om det gick bra Retur: db_status = DB_OK ==> skrivning gick bra db_status = WRITE_FAILED ==> skrivning misslyckades, elev EJ lagrad db_status = DB_FULL ==> redan fullt i elev-db elev EJ lagrad Felhantering: Via db_status ---------------------------------------------------- void store_name( char first_name[], char last_name[], db_status_t &db_status ); För inställning av tabell Parametrar: table: heltal inom [1.. 10] Retur: INGEN Felhantering: INGEN ---------------------------------------------- void set_table( int table ); Returnerar inställd tabell Parametrar: INGA Retur: Vald tabell, ett heltal inom [1.. 10] Felhantering: INGEN ---------------------------------------------- int get_table(); Ska ge nästa framslumpade problem Parametrar: problem: operand_a/_b får värden Retur: operand_a inom [1.. 10], operand_b = aktuell tabell Felhantering: INGEN ---------------------------------------------- void get_next_problem( answered_problem_s &problem ); Rensar den interna svarsloggen För anrop innan ett prov startar Parametrar: INGA Retur: INGEN Felhantering: INGEN ---------------------------------------------- void clear_answers(); För lagring av ett besvarat tal Parametrar: answer: svarsdata som ska lagras

DESIGNSPECIFIKATION Rev 8 10(13) Retur: INGEN Felhantering: INGEN ---------------------------------------------- void store_answer( answered_problem_s &answer ); För att loopa över de givna svaren i ett prov Parametrar: answer: får svarsdata för ett svar correct_answer: får korrekt svar [1.. 100] item_found: sätts till 1 om svar fanns, 0 annars Retur: item_found = 1 indikerar att det fanns ytterligare ett svar item_found = 0 ==> Inget svar, övriga param oförändrade Felhantering: INGEN ---------------------------------------------- void get_first_answer( answered_problem_s &answer, int &correct_answer, void get_next_answer( answered_problem_s &answer, int &correct_answer, För att loopa över statistiken i vald tabell Parametrar: answer_statistics: får statistik om ett tal item_found: sätts till 1 om svar fanns, 0 annars Retur: item_found = 1 indikerar att det fanns ytterligare statistik item_found = 0 ==> Ingen statistik, övriga param oförändrade Felhantering: INGEN ---------------------------------------------- void get_first_stats( statistics_problem_s &answer_statistics, void get_next_stats( statistics_problem_s &answer_statistics, För att ställa in aktuellt tal för detaljstatistiken Ska kombineras med set_table() Parametrar: operand_a: värdet av första operanden Retur: INGEN Felhantering: INGEN ---------------------------------------------- void set_details_number( int number ); Returnerar inställt details_number Parametrar: INGA Retur: Inställd detaljoperand, ett heltal inom [1.. 10]

DESIGNSPECIFIKATION Rev 8 11(13) Felhantering: INGEN ---------------------------------------------- int get_details_number(); För att loopa över detaljstatistik för vald tabell och valt detaljnummer Parametrar: answer_details: data får svar som avgivits correct_answer: får korrekt svar item_found: sätts till 1 om svar fanns, annars 0 Retur: item_found = 1 indikerar att det fanns ytterligare svar item_found = 0 ==> Inget svar, övriga param oförändrade Felhantering: INGEN ---------------------------------------------- void get_first_detail( int &answer, void get_next_detail( int &answer, 6.3.4 Funktion Subsystemet ska tillhandahålla ett lätthanterligt skal ovanpå MultiPC logikklasser. 6.3.5 Övrigt Inga för utvecklingsverktyget specifika datatyper ska utnyttjas av multipc_logic_c eller dess stödklasser. multipc_logic_c fungerar som en fasadklass och den uppfyller designmönstret Singleton. 6.4 MultiPC hjälp 6.4.1 Stödgraf MultiPC GUI mulhelp.hlp GUI-klasserna i PC-programmet kommer att aktivera hjälpfilen via anropet: Application->HelpJump( HelpID ) där HelpID är en sträng För att det ska fungera krävs att PC-programmet utnyttjar de ID-strängar som definieras nedan. 6.4.2 Krävda gränssnitt WinHelp i MS-Windows.

DESIGNSPECIFIKATION Rev 8 12(13) 6.4.3 Erbjudet gränssnitt En hjälpfil mulhelp.hlp med ID-strängar enligt följande: INTRODUCTION STARTWIN TRAINING RESULTS STATISTICS DETAILS HINTS ERROR_MESSAGES Ovanstående ID-strängar ska utnyttjas för rubrikerna i hjälpen, se [DETDOK]. Det ska dessutom finnas ID-strängar som ger separata ingångar till hjälpen från samtliga felmeddelandefönster som dyker upp. Här gäller: NONAME_FOUND för meddelandet att inga namn hittades. 6.4.4 Funktion Subsystemet ska tillhandahålla en hjälpfil för MultiPC PC-program. 6.4.5 Övrigt Nya felmeddelanden som definieras ska i hjälpen ges engelska, beskrivande namn. Den här sektionen ska fyllas på i samband med att ändringsloggen töms. 7 PROBLEM 1. Samtliga felmeddelanden är inte definierade Det ska finnas utgångar till hjälpsystemet från samtliga felmeddelanden som dyker upp. De är ännu inte identifierade. Lösning Följ namnkonventionen under MultiPC hjälp ovan. För in i Ändringsloggen så att det inte glöms bort. 2. Många parametrar Vissa av funktionerna i mul_logic_c kräver flera parametrar. Vore det inte bättre att synliggöra de strukter som finns internt under mul_logic_c? Lösning Det kan vara en god idé. Ignorera nu. Dokumentera som återstående problem. 3. Inklippta diagram, inklippt kodgränssnitt UML-graferna har klippts in via ett ritverktyg. Det gör det svårt att ändra i det här dokumentet. Om kodgränssnitt ändras måste man ändra även här i dokumentet. Lösning Ignorera nu. Kanske bättre att lägga diagram och kodgränssnitt som bilagor? Dokumentera som återstående problem.

DESIGNSPECIFIKATION Rev 8 13(13) 4. Var finns Javaapplet? Enligt detaljkraven 40 och 45 ska det utvecklas en Javaapplet. Den borde vara med här. Lösning TBD Komplettera det här dokumentet snarast. 5. Generering av namn Enligt detaljkraven 200 ska det utvecklas testverktyg för att generera namn. Det borde vara med här. Lösning TBD Red ut. Är testverktyget så trivialt att det går bra ändå? 8 ÖVRIGT Avsiktligt lämnad tom.