Göm menyn

TDDD82 Projekttermin inklusive kandidatprojekt: Säkra, mobila system

Projektet - krav

En viktig del i varje utvecklingsprojekt är att identifiera vilka krav som ska implementeras. I det här projektet finns följande källor för krav:

  • Scenariobeskrivningarna på kurshemsidan.
  • Explicita krav på kurshemsidan (under respektive ämnesområde).
  • Intervjuer med personer som arbetar inom respektive aktör - ni får ta kontakterna själva, men får förslag på kontaktpersoner från lärarlaget.
  • Information ni hittar själva, t.ex. via artiklar och litteratur, och egna idéer.
  • Kontakt med kundkontakter.
  • Inspiration kan också fås från presentation av Myndigheten för samhällsskydd och beredskap. slides.
I de fall då krav är vaga, motsägande eller saknas så är det er uppgift att ta reda på kundens förväntan. Det är viktigt att kundens och er syn på hur systemet skall se ut är lika. Det är i slutändan kursledningen som godkänner er kravspecifikation.

Systemets utformning

Varje grupp kan fritt utforma sitt system. Dock ställs vissa tekniska krav på plattformen som påverkar vilka utformningar som är möjliga:

  • Systemet innehåller en mobil klient i form av en handdator/smartphone som kommunicerar trådlöst med övriga delar av systemet.
  • I systemet finns en server som samordnar alla klienter och som ansvarar för att leverera information till dem. Denna server ska ha hög tillgänglighet.
  • De olika gruppernas system ska kommunicera, och den kommunikationen ska vara säker och filtrerad, så att enbart information som ska levereras kan levereras.
Den övergripande arkitekturen som är mest trolig visas i figur 1.


Figur 1. Trolig övergripande struktur.

Klient

Klienten är en eller flera komponenter på den mobila enheten. Klienten programmeras i Java på plattformen Android. Varje grupp utformar själva arkitekturen för klienten; den kommer att ha stor inverkan på hur projektet fortlöper.

Klienten ska kommunicera trådlöst med servern. Detta kan ske genom infrastrukturnät eller ad-hoc-nätverk. Det står varje grupp fritt att implementera detta som man tycker passar bäst. Kommunikationen ska vara säkrad från avlyssning och manipulering.

Server

Servern är en komponent i det fasta nätet, som kommunicerar trådlöst med klienterna. Huvuduppgiften för servern är att koordinera klienterna, tillhandahålla information som de behöver, och ta emot information som de producerar.

Under projektet tillhandahåller vi en Windows-miljö för Android-utveckling, och ger tillgång till Linux och Solaris för servern.

De olika gruppernas system ska kunna kommunicera. Detta sker (om inte grupperna kommer överens om något annat) över Internet. Här är det viktigt att enbart information som får överföras (baserat på juridiska och etiska hänsynstaganden) överförs, och att kanalen är skyddad på lämpligt sätt.

Andra tjänster

Flera av scenarierna varifrån krav ska hämtas beskriver information som finns i källor som befolkningsregister eller patientjournalsystem. Dessa är andra tjänster i nätet, som tillhandahåller information som klienterna (eller andra aktörer) vill använda. Gruppen ska implementera minst en sådan enkel tjänst för att demonstrera att kraven relaterade till andra tjänster är uppfyllda.

Explicita krav i projektet

Funktionalitet

Alla grupper ska implementera åtminstone följande funktioner:

  • Video- och röstkommunikation via eget protokoll eller via SIP.
  • Synkronisering av kontakter mellan alla klienter.
  • Ytterligare krav kan identifieras från de scenarion som finns i projekthandboken.

Informationssäkerhet

Ett krishanteringssystem ställer höga krav på informationssäkerhet. I det här projektet ska ni minst säkerställa följande:

  • Servern autentiserar varje meddelande den tar emot från de mobila klienterna, för att garantera att meddelandet är äkta och kommer från en auktoriserad användare.
  • Data som sänds till andra aktörer filtreras, så att endast data som får sändas verkligen sänds.
  • Data som skickas mellan klient och server, mellan klienter, och mellan aktörer inte går att avlyssna eller manipulera (utan att det upptäcks).
  • Design och arkitektur följer tillämpliga designprinciper för säkerhet.
Utöver detta kan gruppen själva lägga till krav på säkerhet. En riskanalys ska genomföras för att ge vägledning kring vilken nivå av säkerhet, och vilket ytterligare skydd som behövs. CORAS skall användas för riskanalysen.

Mobila system

Ett mobilt system är inte alltid anslutet till sitt nätverk. I projektet ska ni minst säkerställa att:

  • Tillämpningarna på klienten fungerar (om än med begränsad funktion) oavsett om klienten har tillgång till nätverk eller inte.
  • Återuppkoppling till nätet ska ske utan att användaren behöver agera.
  • Kommunikationen anpassas till tillgänglig nätverkskapacitet, trafik och batterinivå.
  • Inga viktiga meddelanden förloras.

Systemprogramvara

Varje klient ska innefatta en QoS manager vars uppgift är att anpassa kommunikationen efter tillgänglig batterinivå. Systemets beteende i form av vilka typer av meddelanden som kommer att skickas ska vara predikterbar, givet en viss batterinivå.

Serversidan ska se till att tjänsten är tillgänglig även om programvaru- eller hårdvarukrasch uppstår. Vid replikering skall konsistens i serverns tillstånd upprätthållas. Den feltoleranta lösningen kan vara långsammare, dock med svarstider max två gånger motsvarande icke-feltoleranta lösning.

Arkitektur och Design

Arkitektur och design är intimt sammankopplade. Arkitektur är strukturer av strukturer, ramverk som fastställer systemets utformning på hög nivå. Här är en definition ur litteraturen:

The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. -- ANSI/IEEE Std 1471-2000 Recommended Practice for Architectural Description of Software Intensive Systems

Se http://www.sei.cmu.edu/architecture/definitions.html för fler definitioner av begreppet.

Under projektet ska ni definiera systemets arkitektur. Genom att definiera arkitekturen skapar ni en ram inom vilken resten av utvecklingen sker. I projekt där utformningen växer fram successivt gör arkitekturen att resultatet ändå har en förutsägbar struktur och ett förutsägbart beteende.

Design handlar om detaljerade beslut hur olika delar av arkitekturen ska realiseras. I en lättrörlig process tenderar man fatta sådana beslut successivt, utan någon övergripande plan. Här kommer utvecklarens erfarenhet in: en utvecklare med omfattande erfarenhet fattar bättre och mer konsekventa designbeslut än en oerfaren utvecklare.

För att underlätta designbesluten och fär att underlätta kommunikation om design finns ett begrepp som heter "designmönster" ("design pattern" på engelska). Ett designmönster är en välbeprövad lösning på ett generellt designproblem. Varje mönster är väldokumenterat, inklusive dess konsekvenser för systemet i stort, fördelar och nackdelar. Under projektet räknar vi med att ni använder er av designmönster i så stor utsträckning som möjligt.

Ni förväntas lära er om arkitektur och design på egen hand. Detta är nödvändigt för att kunna utforma systemet på ett bra sätt. Se under Litteratur för mer information.


Sidansvarig: Nahid Shahmehri
Senast uppdaterad: 2014-01-31