ProgramvaruUtveckling för Stora System Christin Lindholm Vad ska ni göra? Tidrapporteringssystem Administration Tidrapportering Projektledning Projektledare (PG) Systemansvariga (SG) Valfri funktionalitet Utvecklare (UG) Testare (TG) 2 Kravförvirring Rollerblades och pälsdjur förbjudna i denna byggnad Husprefekten Hur skall detta krav tolkas? 9 frågor till prefekten Gäller förbudet både och eller antingen eller? Får pälsdjur åka rollerblades? Får man bära sina rollerblades i en väska? Får man bära pälsdjur i en väska? Är det ok om man rakar av pälsen? Får man ha vinterpäls & pälsmössa? Kan jag ha inlines av annat märke än rollerblades? Får jag åka vanliga rullskridskor? Skateboard? Om pluralis avses - får jag hanka mig fram på EN rollerblade? 3 4
Exempel: Luftvärnsrobot Mål: En luftvärnsrobot som hotar skeppet den avfyrades ifrån ska självdestruera Exempel: Implementerat krav Krav: Luftvärnsroboten ska självdestruera då roboten svängt 180 grader från avfyrningsläget í 5 6 Exempel: Problemet Scenario: Vid provskjutning avfyrades en robot men den lämnade inte robotrampen. Skeppet vände hemåt för att åtgärda felet och desarmera roboten. Syftet med krav Beskrivning av kundens förväntningar på produkten Bas för kontakt mellan kund och leverantör Underlag för implementation Referens för verifiering Beskrivning av färdig produkt 7 8
Ekonomiska aspekter Kravhantering (Requirements Engineering) Metoder och tekniker för att Samla in Dokumentera Validera krav Spåra krav genom utvecklingsprocessen. Fokus på Vad systemet ska göra 9 10 Kravhantering viktiga uppgifter Kravhanteringsprocessen Konceptualisera problemet och kraven Ta fram och samla in kraven Prioritera och välja bland kraven När är man färdig? Dokumentation Spårning Validering Ändringshantering Kravinsamling Specifikation Validering Hur ska vi fånga in kraven? Hur ska vi dokumentera kraven? Hur ska vi säkra att vi gör rätt? 11 12
Kravspecifikation (SRS) Kravtyper Mål: Dokumentera kundens krav på sätt som gör att utvecklarna vet exakt vad som krävs av systemet. Några kvalitetsegenskaper hos kravspecifikation: Korrekthet Fullständighet Verifierbarhet Entydighet Motsägelsefrihet Spårbarhet Organiserad Motiverad Funktionella krav Datakrav Kvalitetskrav Projektkrav 13 14 Funktionella krav Vad systemet eller produkten ska göra Specificerar ofta indata och utdata Datakrav En typ av funktionella krav Vilken data som ska in och ur systemet Vilken data som ska lagras Ex: 1. Kunder ska sparas i systemet 15 16
Kvalitetskrav Olika typer av kvalitetskrav Icke-funktionella krav Hur systemet ska fungera Användbarhet Tillförlitlighet Prestanda Underhållbarhet Säkerhet Skärmbilden ska synas på en meters håll T ex accepterad nertid T ex svarstider Krav på t ex designen T ex inloggning 17 18 Jämför GS:SRS Bakgrund & Målsättningar Terminologi Kravuppdelning Krav: Tidrapportering Context diagram Funktionella krav Login and logout Data Administration Generella krav Kvalitets krav Användare ska kunna skapa, uppdatera och ta bort tidrapporter Underhållbarhet Prestanda Projektkrav Utvecklingsmiljö, Leveranskrav, etc. 19 20
Krav Kravnumrering Alla krav ska vara spårbara!!! Analys/Design Test specifikation Kod etc. 21 För att åstadkomma spårbarhet till krav: Löpande numrering som inleds med delkapitelnummer Varför är detta bra? Samma kapitelstruktur som GS:SRS Ange vilka krav som gäller fortfarande och vilka som ev. stryks i GS:SRS Ändra inga krav i GS:SRS - stryk gammalt och lägg till nytt OBS! Ändra aldrig 22 numreringen Arbetet med SRS Varje UG analyserar och formulerar kraven SG sammanställer, fixar terminologi Testarna agerar lämpligen granskare SVVS beror av SRS -> synkroniseringsproblem Projektbibliotek Se PH:4.5 Projektbibliotek Dokumentbibliotek Dokument som produceras under projektets gång åtkomliga för externa granskare och gruppensmedlemmar Arbetsbibliotek Alla dokument ska finnas tillgängliga elektroniskt åtkomliga för gruppens medlemmar. 23 SVN eller likande 24
För projektet Processen Produkten Betygskriterier Slutrapporten För individen Individuell slutrapport Kamratbedömning Processen Hur väl följs den specificerade processen? Mäts via Projektbiblioteket och epuss. Stäms av vid 3 tillfällen (SSR, PDR, PR) 25 26 Produkten Vilken kvalitet har produkten? Produktnivå: Hur begränsad/förenklad är produkten? (Begränsningar för användaren förenklar projektet). Specifikationsenhetlighet: Hur väl stämmer den levererade produkten stämmer överens SRS:en? Tillförlitlighet och Robusthet: Hur väl har projektet lyckats säkra kvalitén på produkten? Slutrapporten (max 20s) Vad innehåller slutrapporten? Nivå: Hur långt når rapporten i de tre stegen: 1) VAD har hänt (datarapportering)? 2) VARFÖR blev det så (orsaksanalys)? 3) HUR ska man göra för att förbättra (processförbättringsanalys)? Kvalité: Hur väl rapporterad är den valda nivån. 27 28
Individuella rapporten (max 2s) Vad innehåller den individuella rapporten? Nivå: Hur långt når rapporten i beskrivningen av reflektioner utifrån roll i projektet utifrån ett antal nyckelord. Kvalité: Hur väl rapporterad är den valda nivån. Betygssteg 1. Underkänt som kräver omarbete 2. Underkänt men som är ok om det sammanslagna betyget blir minst 3 3. Godkänt genomförande/resultat 4. Väl godkänt genomförande/resultat 5. Mycket väl godkänt genomförande/ resultat 29 30 Produkten Nytt tidrapporteringssystem Webbaserat Titta på epuss, kundens uppdragsbeskrivning, kursinstruktioner Förbättringar av nuvarande system OK (välkommet) Generalisering möjlig (användning utanför kursen) 31 Några basal funktioner vi tänkt på Tidrapportering För projektmedlemmar rapportera tid (per fas, per dokument etc) Rapportgenerering Summera använd tid per person, fas, dokument etc För projektledare och andra ledare 32
forts basala funktioner HTML Administration Definiera projekt Lägg till/ta bort projektmedlemmar etc. Grundläggande statistik Tid använt per fas, per dokument per projektmedlem etc (se kap 8.2.2 sid 39).html file on the server: <html> <head> <title> A page with html </title> </head> <body> <h1> A heading </h1> Some text written in different ways <p> A new paragraph. </body> </html> 33 <h1> Some forms </h1> HTML Forms Server responses to user data (some steps) <form> First name: <input type="text" name="firstname" > <br> Last name: <input type="text" name="lastname" > </form> <form> <input type="radio" name="university" value="lth" > LTH <br> <input type="radio" name="university" value="chalmers" > Chalmers <br> <input type="radio" name="university" value="kth" > KTH <br> </form> 1. The server displays a page with a form 2. The user enters data in the form and presses a submit button or similar 3. The server analyzes the data that was entered in the form 4. The server displays a new page with a new form
<html> <head><title> FANTASTIC WEB APPLICATION </title></head> <body> Please enter your name <p> <form name="input" method="get"> <p> Name: <input type="text" name="user"> <p> <input type="submit value="submit"> </body> </html> submit In the server: abstract class HttpServlet Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet must override at least one method, usually one of these: doget, if the servlet supports HTTP GET requests dopost, for HTTP POST requests doput, for HTTP PUT requests dodelete, for HTTP DELETE requests init and destroy, to manage resources that are held for the life of the servlet getservletinfo, which the servlet uses to provide information about itself [http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/httpservlet.html] public class Survey extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Get data from form name = request.getparameter("user"); // To write the next page PrintWriter out = response.getwriter(); Printing the next page PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head><title> the title</title></head>"); out.println("<body>"); out.println(formgenerator.namerequestform()); out.println("</body></html>");
HttpSession (Store data during a user session) HttpSession session = request.getsession(true); // example of storing data session.setattribute("name", name); In Eclipse EE New project: File -> New -> Dynamic Web Project New Servlet: File -> New -> Servlet Possible to run a server inside Eclipse Export.war-file: File -> Export // example of retrieving data name = (String) session.getattribute("name"); How to store data? In Java Collections? Loose data when server is restated In files? Depends on file system In Database Management Systems (DBMS)? Made for this Atomicy, consistency, isolation, durability Different views
Data stored in tables (relational database) SQL Students: Student name Birth year Program Courses Course name Teacher Book Course selections Student name Course name Structured Query Language Language for managing data in a relational database MySQL is one system for this Some examples create table Respondents (name varchar(100), primary key (name)); create table Cities (Cityname varchar(100), population integer, primary key (cityname)); insert into Respondents (name) values('martin Host'); select * from Respondents;
Connecting to the database in Java (jdbc) // open connection conn = DriverManager.getConnection("jdbc:mysql:// vm26.cs.lth.se/survey?" + "user=<>&password=<>"); // Example: retrieving data Statement stmt = conn.createstatement(); ResultSet rs = stmt.executequery("select * from Respondents"); while (rs.next( )) { String name = rs.getstring("name"); System.out.println(name); } stmt.close(); Prepared statements Vi rekommenderar prepared statements Uppgift för SG Design av databasen Viktigt för att undvika duplikat, inkonsistens. Lärs ut i databaskusen Prata även med designexperten Vid leverans Det ska finnas data i databasen! 52
Läs http://www.coreservlets.com/apache- Tomcat-Tutorial/tomcat-7-witheclipse.html http://tomcat.apache.org/tomcat-5.5- doc/servletapi/javax/servlet/http/ HttpServlet.html http://tomcat.apache.org/tomcat-5.5- doc/servletapi/javax/servlet/http/ HttpSession.html http://www.w3schools.com/html/ http://dev.mysql.com/ 53 Vad gör man? Om man inte får all information? Eget ansvar! 54 Nästa vecka Måndag 25/1 kl. 10-12 Fö3 Kick-off SG (UG) 12.15 och TG 13.15 i sal E412 Onsdag 27/1 kl. 10-12 Fö4 Fredag 29/1 Ö2 krav 55