HTML

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