Kravförvirring… ProgramvaruUtveckling för Stora System Rollerblades och pälsdjur förbjudna i denna byggnad Husprefekten Christin Lindholm Hur skall detta krav tolkas? 2 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 Exempel: Luftvärnsrobot Mål: En luftvärnsrobot som hotar skeppet den avfyrades ifrån ska självdestruera 4 Exempel: Implementerat krav Krav: Luftvärnsroboten ska självdestruera då roboten svängt 180 grader från avfyrningsläget 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. ! 5 6 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 ett system ska göra 9 Kravhantering – viktiga uppgifter • • • • • • • • 10 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 11 Hur ska vi fånga in kraven? Hur ska vi dokumentera kraven? Hur ska vi säkra att vi gör rätt? 12 Kravspecifikation (SRS) • 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 Kravtyper • Funktionella krav – Datakrav • Kvalitetskrav • Projektkrav 13 Funktionella krav 14 Datakrav • Vad systemet eller produkten ska göra • Specificerar ofta indata och utdata • 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 • Användbarhet • ”Skärmbilden ska synas på en meters håll” • T ex accepterad nertid • Tillförlitlighet • T ex svarstider • Prestanda • Underhållbarhet • Krav på t ex designen • T ex inloggning • Säkerhet • Icke-funktionella krav • Hur systemet ska fungera 17 Kravuppdelning • 18 Krav: Tidrapportering Jämför GS:SRS – Bakgrund & Målsättningar – Terminologi – Context diagram – Funktionella krav • Login and logout • Användare ska kunna skapa, uppdatera och ta bort tidrapporter • Data • Administration • Generella krav – Kvalitets krav • Underhållbarhet • Prestanda – Projektkrav • Utvecklingsmiljö, Leveranskrav, etc. 19 20 Krav Kravnumrering • Alla krav ska vara spårbara!!! • För att åstadkomma spårbarhet till krav: • Analys/Design – Löpande numrering som inleds med delkapitelnummer – Varför är detta bra? • Test specifikation • Samma kapitelstruktur som GS:SRS • Kod etc…. • 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 21 Arbetet med SRS • • • • OBS! Ändra aldrig numreringen 22 Projektbibliotek Varje UG analyserar och formulerar kraven SG sammanställer, fixar terminologi Testarna agerar lämpligen granskare SVVS beror av SRS -> synkroniseringsproblem • Se PH:4.5 Projektbibliotek • Dokumentbibliotek • Dokument som produceras under projektets gång åtkomliga för externa granskare och gruppensmedlemmar • Arbetsbibliotek 23 • Alla dokument ska finnas tillgängliga elektroniskt åtkomliga för gruppens medlemmar. • SVN eller likande 24 Betygskriterier Processen • För projektet • Hur väl följs den specificerade processen? – Processen – Produkten – Slutrapporten – Mäts via Projektbiblioteket och ePUSS. – Stäms av vid 3 tillfällen (SSR, PDR, PR) • För individen – Individuell slutrapport – Kamrat bedömning 25 Produkten 26 Slutrapporten (max 20s) • Vad innehåller slutrapporten? • 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? 27 – 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. 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 Några basal funktioner vi tänkt på Produkten • Nytt tidrapporteringssystem • Tidrapportering – 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 – 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 .html file on the server: • Administration <html> – Definiera projekt – Lägg till/ta bort projektmedlemmar – etc…. <head> <title> A page with html </title> </head> <body> <h1> A heading </h1> • Grundläggande statistik – Tid använt per fas, per dokument per projektmedlem etc (se kap 8.2.2 sid 39) Some text written in different ways <p> A new paragraph. </body> </html> 33 HTML Forms <h1> Some forms </h1> <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> Server responses to user data (some steps) 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 submit <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> 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(); … 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] 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) • Students: • Course selections – Student name – Birth year – Program – Student name – Course name • Courses – Course name – Teacher – Book 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; SQL • Structured Query Language • Language for managing data in a relational database • MySQL is one system for this 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(); Design av databasen • Viktigt för att undvika duplikat, inkonsistens…. • Lärs ut i databaskusen • Prata även med designexperten Prepared statements • Vi rekommenderar “prepared statements” • Uppgift för SG Läs mer • http://www.coreservlets.com/ApacheTomcat-Tutorial/tomcat-7-witheclipse.html • http://tomcat.apache.org/tomcat-5.5doc/servletapi/javax/servlet/http/ HttpServlet.html • http://tomcat.apache.org/tomcat-5.5doc/servletapi/javax/servlet/http/ HttpSession.html • http://www.w3schools.com/HTML/ 52 • http://dev.mysql.com/ Nästa vecka • Måndag 26/1 kl. 10-12 – Fö3 – Kick-off SG (UG) 12.15 och TG 13.15 i sal C626 • Onsdag 28/2 kl. 10-12 – Fö4 • Fredag 30/1 – Ö2 krav 53
© Copyright 2024