Förslag på svar Tentamen etjänster och webb- programmering 2012-05- 30 Svar 1 3 p a) Proprietary: Det är denna modell som har dominerat marknaden, programföretag anställer programmerare som sköter utvecklingen, kunderna betalar genom att köpa en licens. Företagen skyddar programvara med hjälp av copyright Open communities: Utvecklingen utförs av volontärer med ett begränsat kommersiellt intresse, utvecklingen koordineras via webb- platser på. Källkoden är synlig och skyddas inte med copyright. Corporate distribution: Trots att Open Communities levererar bra programvara har man upptäckt att många kunder får problem med bl.a. support. Vissa programvaruföretag har specialiserat sig på att sälja tjänster som gör OSS programvara mer tillgänglig Svar 2) a) 1. Free Redistribution (Fri återdistribution) Licensen skall inte förhindra någon part att sälja eller ge bort programvaran som en komponent som ingår som en del i annan programvara. Licensen skall inte kräva en royalty eller avgift i ett sådant fall. 2. Source Code (Källkod) Programmet måste innehålla källkod och tillåta distribution både i form av källkod och kompilerad kod. Källkod ska tillhandahållas så att en programmerare kan förändra koden. Att medvetet fördärva källkoden är inte tillåtet. 3. Derived Works (Programvaran kan vara vidareutvecklad) Licensen måste tillåta förändring av tidigare kod och tillåta att den vidareutvecklade programvaran kan distribueras med utgångspunkt från de villkor som gäller för den ursprungliga programvaran. b) Som etjänsteutvecklare är det bra att känna till att det finns programvara som distribueras med utgångspunkt från dessa principer. Det är t.ex. bra att känna till att det finns databashanteringssystem som t.ex. MySQL som jag kan använda och som inte är omgärdad av hinder om jag vill köra min etjänst i kommersiell drift eller vidareförmedla programkoden för den etjänst som jag utvecklat. Om jag inte känner till detta kan detta få juridiska följder och det kan skapa badwill för mig. Jag kan också använda mig av alla fördelar som Open Source ger vid programutveckling.
Svar 3) 6 p a) I en kravspecifikation ingår normalt a. En funktionslista med tillhörande användningssituationer i samband med kursen har detta illustrerats med en lista över användningsituationer. Kan även beskrivas som funktionslista (handlingsrepertoair) eller med hjälp av use- case diagram. b. Användargränssnitt dvs en beskrivning av hur användaren ska interagera med IT- systemet. Beskrivning av skärmdokument och hur interaktion sker med skärmdokument. På kursen har ni specat detta med er prototyp. c. Informationsmodell med tillhörande tabeller. d. I regel försöker man hålla en kravspecifikation teknikneutral men ibland kan även tekniska krav ingå i kravspecifikationen för IT- systemet. b) Det är viktigt att genomföra en noggrann analys av etjänsten genom att den utgörs underlaget för att förstå hur och varför IT- systemet skall användas. Dåliga kravspecifikationer som grund för utveckling av IT- system leder ofta till att IT- system inte lever upp till vad användarna förväntat sig. Svar 4) 8 p a) 4 p Kommunikationshandlingar: utförs med hjälp av språkliga symboler, resulterar i meddelanden, förändrar statusen i den sociala världen, skapar och förändrar sociala relationer b) 4 p Den fysiska nivån handlar om mediet eller kanalen som meddelandet realiseras på. Den syntaktiska nivån handlar om hur meddelandet är strukturetat t.ex. i olika sammanhängande fält. Den semantiska nivån handlar om innebörden i de termer och begrepp som används. Den pragmatiska nivån handlar om intentionen med meddelandet. Svar 5) 6 p a) 4p. Social interaktion är alla handlingar som är inriktade mot en annan social aktör. Dessa handlingar utförs och styrs av normer och regelverk. Den sociala interaktionen utförs för att uppnå resultat och utlösa effekter. Kommunikation är grundläggande för social interaktion men kan även inkludera andra typer av handlingar. Social interaktion skapar och upprätthåller sociala relationer. Observera att kommunikation är inte lika med social interaktion. Social interaktion kan även inkludera materiella handlingar och transporthandlingar. b) 2p.
Aktörerna d.v.s. de människor som interagerar behöver inte mötas rent fysiskt vilken innebär att den sociala interaktionen inte blir plats och tidsberoende. Man kan mötas via IT systemet utan att man befinner sig på samma plats eller kommunicerar vid samma tidpunkt. Svar 6 a) O Reilly nämner tre strategier: (1) att man kan skapa sig kontroll över vissa typer av strategiskt viktiga data. Detta gäller t.ex. lägesbaserad information, produktidentifierare, information om events etc; (2) att man kontrollerar data som det kostar mycket att skapa t.ex. kartinformation; (3) att man låter användarna i själva etjänsten generera informationen. b) Databashantering innebär hur man lyckas att generera, organisera, förändra och göra information sökbar. Detta handlar både om hur man lyckas att hantera informationen på ett begripligt sätt när det presenteras och kommuniceras men också hur den hanteras rent tekniskt i form av svarstider, säkerhet, etc. Enligt O Reilly bygger varje lyckad etjänst på Internet på en specialiserad databas med avancerade sökalgoritmer. Det är också viktigt att skapa kontroll över informationen genom att äga databasen. Svar 7 Kod som löser A, B och C ser ut på följande sätt: Kod som löser A, B och C ser ut på följande sätt: <?php function display_data($modell){ $conn = mysql_connect('localhost', 'mattias', '123456'); if (!$conn) exit; if (!mysql_select_db('mydb')) exit; $query = " SELECT Bil.Regnr as reg, Bil.pris as pris, Bil.mil as mil FROM Bil, Annons WHERE bil.modell = $modell AND Annons.regnr = Bil.regnr"; // <A>SQL $result = mysql_query($query); if(!$result){ echo ' Ingen annons med denna modell finns! ; return; // <B> echo '<div class="cheader">'. $modell. '</div>'; echo <table><tr> ; echo <th>registreringsnummer</th><th>pris</th><th>mil</th></tr> ; while($r = mysql_fetch_assoc($result)){ echo '<tr><td>'. $r['reg']. '</td><td>'. $r['pris']. '</td><td> ; // <C> echo $r['mil']. </td></tr> ; echo </table> ; if(array_key_exists($_get, 'modell')) display_data(mysql_real_escape_string($_get['modell']));?>
Kod som löser D ser ut på följande sätt: <?php function display_data($modell, $maxmil){ $conn = mysql_connect('localhost', 'mattias', '123456'); if (!$conn) exit; if (!mysql_select_db('mydb')) exit; $query = " SELECT Bil.Regnr as reg, Bil.pris as pris, Bil.mil as mil FROM Bil, Annons WHERE bil.modell = $modell AND Annons.regnr = Bil.regnr"; // <A>SQL if ($maxmil) $query.= " AND Bil.mil < $maxmil"; // Ny SQL $result = mysql_query($query); if(!$result){ echo ' Ingen annons med denna modell finns! ; return; echo '<div class="cheader">'. $modell. '</div>'; echo <table><tr> ; echo <th>registreringsnummer</th><th>pris</th><th>mil</th></tr> ; while($r = mysql_fetch_assoc($result)){ echo '<tr><td>'. $r['reg']. '</td><td>'. $r['pris']. '</td><td> ; echo $r['mil']. </td></tr> ; echo </table> ; if(array_key_exists($_get, 'modell')) if(array_key_exists($_get, maxmil )) //ändrad kod display_data(mysql_real_escape_string($_get['modell']), mysql_real_escape_string($_get['maxmil'])); else display_data(mysql_real_escape_string($_get['modell']), null);?> Svar 8 Observera att Bil med registreringsnummer DCA001 finns två ganger i annonstabellen vilket visar att det finns en 1:M relation mellan Bil och Annons.
Svar 9 a) GET förmedlas genom URL:en, POST förmedlas genom ett meddelande i requesten. GET har därför begränsad storlek, POST har inga dylika begränsningar. GET kan delas med andra genom att kopiera adressraden, POST är "osynlig" för användaren. 1 p b) Exempelvis: Det är bättre att använda GET då användaren ska kunna dela med sig av länkar till andra. Jämför minsida.com/index.php?nav=18&show=blabla med POST (som alltså enkom ger minsida.com/index.php). Svar 10 4 p Mailet innehåller Anders lösenord i klartext. Detta betyder att alla användares lösenord i databasen sparas i klartext eller i en form som enkelt kan avkrypteras. Det är inte så lyckat i det fall att någon får tillgång till databasen. Speciellt då kopplingen mellan lösenord och email lagras och användare tenderar att återanvända sina lösenord. Den som är ansvarig för innehållet i databasen kan ju också se detta och utnyttja detta på ett otillbörligt sätt! Svar 11 exempelvis.newscls{ color: #000; #newsheader{ font- face: Verdana; Svar 12 Variabler i PHP har en typ, den anges implicit genom tilldelningen. Att så är fallet noteras ex vis genom möjligheten att se huruvida en variabel är en integer (is_integer()). Vidare styrks detta av det faktum att operatorn === existerar. Faktum är att det är omöjligt att lagra data utan att ange en typ. Ty att ange en typ är ekvivalent med att explicit ange hur en mängd binär data skall tolkas. Om vi inte vet hur en mängd data skall tolkas kan vi inte särskilja den från "icke- data" i form av en slumpvis binär teckensträng (som alltså saknar mening).