Struktureret system udvikling Minimodul 4: Introduktion til systematisk design

Relaterede dokumenter
Struktureret system udvikling Minimodul 4: Struktureret ProgramUdvikling (SPU) - I

Struktureret system udvikling Minimodul 1: Introduktion, UML og use cases

Struktureret system udvikling Minimodul 2: Kravspecifikation og accepttest

Software Dokumentation

Struktureret system udvikling Minimodul 2: Kravspecifikation og accepttest

UML til kravspecificering

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Svendeprøve Projekt Tyveri alarm

Underbilag 14 C: Afprøvningsforskrifter til prøver og tests

SOFTWARE DOKUMENTATION

Fra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1

Kravspecifikation For. Gruppen

Struktureret system udvikling Minimodul 3: Kravspecifikation og accepttest

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Struktureret system udvikling Minimodul 3: SPU/UML modellen

Struktureret system udvikling Minimodul 3: SPU/UML modellen

Processer og tråde. dopsys 1

Model og metode til programudvikling. Om undertegnede... Struktureret Systemudvikling. Dagens menu... Tankevækkende erfaringer med systemudvikling...

Bias Reducing Operating System - BROS -

Mangelfuldt dokumenterede it-systemer. Hvordan løses udfordringen?

Vejledning til udviklingsprocessen for projekt 2

Principper for Samtidighed og Styresystemer

Projektlederens roller og kompetencer. Cases til Projektlederens roller og kompetencer

Hvad skal du vide for at bygge din egen computer?

Projekt E1PRJ1 Emne: Strukturering Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Jacob Nielsen, Klaus Eriksen,

Sortering. Eksempel: De n tal i sorteret orden

Bilag 9, Kvalitetssikring

Undervisningsbeskrivelse

Plan for præsentationen

Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag

Secure O matic. Gruppe 5 2. SEMESTERPROJEKT. Udgave. Accepttest-specifikation

SYSTEMDOKUMENTATION AF POC

Arkitekturdokument for Cruise Control

Sortering. Eksempel: De n tal i sorteret orden

Procedure for systemtest

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Anvendelse af BPT til manuel test

Standardisering af PLC Programmering. SESAM Præsentation 2. November 2016

Nintex Workflow UK/DK

Informatik C robotter

Semesterbeskrivelse cand. it uddannelsen i it-ledelse 2. semester.

Accepttest Specifikation For. Gruppen

Struktureret system udvikling Minimodul 2: UML og use cases

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

Automatisk Vandingssystem

Opsætning af xcon og Logix Controller

Kapitel 21: Softwarearkitektur designprincipper

KOMPONENT BESKRIVELSE

Case til opgaven: Evaluering som belutningsmodel for forandring. Case til opgaven: Evaluering som beslutningsmodel for forandring.

Struktureret system udvikling Minimodul 1: Introduktion, projekt- og tidsplanlægning

Kursuskatalog 2012 TwinCAT Basic og Extended

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Agil test tilgang - erfaringer fra projekter

Opgave: BOW Bowling. Rules of Bowling. danish. BOI 2015, dag 1. Tilgængelig hukommelse: 256 MB

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Struktureret Test og Værktøjer Appendiks til bogen Struktureret Test

Typisk modul-opbygget PLC system (Allan Bradley)

Agenda. Muligheder for anvendelse. Komponenter. Features. Restore muligheder. DR og TSM integration. Repository. Demo. Spørgsmål

Spar tid med struktureret programmering! Om PLC programmering

BILAG 5.D DOKUMENTATION

Objektorienteret Analyse & Design

Overvejelser ved valg af IT system

Koncept for systemforvaltning af den fælles open source kode, herunder procedure for opfølgning på software-versioner af OpenTele

Algorithms & Architectures II

Produktpræsentation. BA Systems. Control made easy

Kursuskatalog 2013 TwinCAT Basic og Extended

Nye testteknikker fra ISTQB - direkte fra hylderne. Ole Chr. Hansen

Undervisningsbeskrivelse

SPU UML note. Systematisk Program- Udvikling med UML. Finn Overgaard Hansen

FRA USECASE TIL TESTCASE HP TEST BRUGERKONFERENCE, 10. APRIL 2014

Hassansalem.dk/delpin User: admin Pass: admin INTERFACE DESIGN

Hos Lasse Ahm Consult vurderer vi at følgende supplerende krav i de enkelte kravelementer er væsentlige at bemærke:

MCE9637 DeviceNet Modul

Transkript:

Struktureret system udvikling Minimodul 4: Introduktion til systematisk design Rasmus L. Olsen, 26 Marts, 2008

Kursusoversigt og tidsplan Mm1: Introduktion til kursus, UML og use cases (13/2, 2008) Mm2: Kravspecifikation og accepttest (27/2) Mm3: SPU og UML (12/3) Mm4: Design af system (26/3) Mm5: Test design og planlægning (9/4)

Dagens program Generelt om design Designprincipper Generelle designregler Software design Program design Process design Modul design

Generelt om design Ingen entydig opskrift på god design Design er en kreativ proces Design Kræver Et vist antal iterationer En god portion intuition Jo mere erfaring, jo bedre design Generelt er design vanskeligt - Men også sjovt

Generelt om design D. Parnas: Vi vil aldrig finde en metode, der tillader os at designe software på en rationel måde Men vi kan få det til at se ud sådan og det kan betale sig at gøre sådan!!! Design dokumenteres som om man havde fulgt en ideel og rationel arbejdsproces

Generelt om design Det gælder om at realisere kravspecifikationen! Designarbejdet skal udføres grundigt med omfattende dokumentation og reviews. Godt design er karakteriseret ved bla.: Let at forstå Let at implementere Let at teste Let at vedligeholde Har en høj ydelse, f.eks. Responstid, lavt strømforbrug, m.m.

Dagens program Generelt om design Designprincipper Generelle designregler Software design Program design Process design Modul design

Designprincipper Vælg en designmetode Code-and-fix Object Orienteret Fastlæg de eksterne grænseflader Hvilke muligheder er der indenfor de givne rammer Hvad er givet på forhånd Hvad mangler Foretag en opdeling af enheden Fastlæg de interne grænseflader Kontroller designet Dokumenter designet Først når designet er tilfredsstillende, færdiggøres dokumentet Dokumenter som designet var foregået på en rationel måde

Designprincipper Flere kandidater Object Orienteret Code-and-Fix Structural Circuit analysis. Vælg en designmetode Fastlæg de eksterne grænseflader Foretag en opdeling af enheden Fastlæg de interne grænseflader Kontroller designet Dokumenter designet U=R*I..og så videre. Class: Passenger + setlandingsign() + showmovie() + checkstatus() Class: Airplane + takeoff() + landing() Class: Fighter + armweapon() + fireweapon() If (a>b) { c=d+e; } else { c=0; } return c;

Designprincipper Fastlæggelse af enhedens omgivelser Kan komme fra bla. Analysen Andre moduler Eksterne kilder Vælg en designmetode Fastlæg de eksterne grænseflader Foretag en opdeling af enheden Fastlæg de interne grænseflader Kontroller designet Dokumenter designet MP3 afspiller Afspil mp3 fil Lytteren Vis ID-tag info Forstærker anlæg Upload af mp3 filer Uploader PC

Designprincipper Opdeling af system i moduler og komponenter Divide et impera Men baseret på hvilke kriterier? Vælg en designmetode Fastlæg de eksterne grænseflader Foretag en opdeling af enheden Fastlæg de interne grænseflader Kontroller designet Dokumenter designet System Program 1 Program 2 Program K Moduler 1 Moduler 2 Moduler M Funktion 1 Funktion 2 Funktion N

Designprincipper Muliggør parallel udvikling af enheden Skal specificeres og dokumenteres! Sker i tæt interaktion med opdeling af enheden De seks regler Vælg en designmetode Fastlæg de eksterne grænseflader Foretag en opdeling af enheden Fastlæg de interne grænseflader Kontroller designet Dokumenter designet Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer Komp. A Komp. A Komp. B Komp. B

Designprincipper Teknisk gennemgang Review Checklister Vælg en designmetode Fastlæg de eksterne grænseflader Foretag en opdeling af enheden Fastlæg de interne grænseflader Kontroller designet Dokumenter designet

Designprincipper Udgangspunkt for Review Efterfølgende vedligeholdelse Intern kommunikation Vælg en designmetode Fastlæg de eksterne grænseflader Foretag en opdeling af enheden Fastlæg de interne grænseflader Kontroller designet Dokumenter designet

Dagens program Generelt om design Designprincipper Generelle designregler Software design Program design Process design Modul design

Generelle designregler Lav kobling mellem moduler F.eks. hvis data udveksles som parametre Få interaktioner mellem moduler Simple interaktioner mellem moduler Høj kobling Kræver mange interaktioner mellem moduler Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer Kræver mange data bliver udvekslet (evt. pak data ind i strukturer) Funktionstæthed Lav funktionstæthed: eks. et diverse modul fyldt med urelaterede funktioner Høj funktionstæthed: eks. Alle opetør funktioner i et operatørmodul Jo højere funktionstæthed en modul kan opnå, jo lavere kobling mellem moduler D.Parnas: Et modul skal indkapsle og beskytte en designbeslutning

Generelle designregler Genbrug af design og moduler er generelt godt fordi: Kortere udviklingstid Lavere pris Bedre kvalitet og pålidelighed Kræver god vedligeholdelse af bibliotek Nogle moduler er bedre egnede til genbrug end andre, f.eks. Et RS-232 kommunikationsmodul Læse/skrivemodul Kontrolmodul Sensormodul til sensor X Andre forhold kan også være gældende, f.eks. Hvad platform modulet er udviklet til/på Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer Specifik interface (et genbrugeligt modul skal gerne have generelle interfaces)

Generelle designregler Vedligeholdelse er nemt hvis der i designfasen er taget stilling til hvorledes dette skal/kan gøres Nogle teknikker kan være Udforme designet med en passende åben struktur, f.eks. ved modulisering af opgaver/funktioner Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer At samle og beskytte f.eks. Maskin, OS, compiler og hardwareafhængige funktioner i moduler der er lette at lokalisere og ændre At modulisere logik og datastrukturer, således varianter udelukkende opsættes i datastrukturer. Eksempler Flytte dialogtekst eller konfigurationer ud i en tekstfiler

Generelle designregler Delleveringer kan give tidlig feedback Designet skal omfatte samtlige delleverancer Delleverancer kan også med fordel specificeres i kravspecifikationen Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer Designet skal foretages således delleverancer bliver lette. Med en god modulopdeling er det dog ikke nødvendigvis et problem Et alarmeringssystem kunne i første omgang implementere en simpel alarm Senere leveringer kunne indføre mere sofistikerede alarmeringsmetoder (men stadig have samme interfaces som alarm V1.0)

Generelle designregler Alt skal testes Husk: Hvis ikke det er testet, så virker det ikke!! Et mål for godt design er muligheden for at teste moduler og system Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer

Generelle designregler Ofte mangler specifikation på fejlsituationer Ikke optimalt i de fleste tilfælde, og katastrofalt i andre tilfælde Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer Fejl bør lede til fornuftige handlinger Reboot? Fortsætte? Stoppe helt? Gå i fejlsikker tilstand? Hvem og hvad involverer en fejl? Slutbrugeren? En ekspert? Redundante systemblokke? Hvordan designes disse ind i eksisterende systemer og systemløsninger? Konklusion: Fejlsikre systemer er decideret udviklings- og forskningsemner

Generelle designregler Ofte mangler specifikation på fejlsituationer Ikke optimalt i de fleste tilfælde, og katastrofalt i andre tilfælde Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer Fejl bør lede til fornuftige handlinger Reboot? Fortsætte? Stoppe helt? Gå i fejlsikker tilstand? Hvem og hvad involverer en fejl? Slutbrugeren? En ekspert? Redundante systemblokke? Hvordan designes disse ind i eksisterende systemer og systemløsninger? Konklusion: Fejlsikre systemer er decideret udviklings- og forskningsemner

Generelle designregler Ofte mangler specifikation på fejlsituationer Ikke optimalt i de fleste tilfælde, og katastrofalt i andre tilfælde Minimaliser og optimiser tætheden af grænseflader Design for og med genbrug Design for vedligeholdelse Design for og med del-leveringer Design for testbarhed Design for og med fejlsituationer Fejl bør lede til fornuftige handlinger Reboot? Fortsætte? Stoppe helt? Gå i fejlsikker tilstand? Hvem og hvad involverer en fejl? Slutbrugeren? En ekspert? Redundante systemblokke? Hvordan designes disse ind i eksisterende systemer og systemløsninger? Konklusion: Fejlsikre systemer er decideret udviklings- og forskningsemner

Arbejdsformer og dokumentation Rådspørg kunden ved kravspørgsmål Deltag flere ved design Anvend en dokumentstandard Benyt grafik til at give overblik Vurder og beskriv alternativer Vedligehold designdokumenter Evaluer benyttede metoder

Dagens program Generelt om design Designprincipper Generelle designregler Software design Program design Process design Modul design

Software design Program design Process design Modul design SPU modellen opdeler designprocessen i tre step Program design Process design Modul design Godt for parallelisering af opgaver Men pas på, nogle opgaver kræver synkronisering! Kræver godt design og tanker omkring proces kommunikation

Programdesign Opdeling af program i flere sekventielle processer (multiprogrammering) Proces = job = task = Eksempel Brugerdialog Overvågning Specifikation af eksterne grænseflader Specifikation af grænseflader mellem processer Men hvordan?

Data flow diagrammer Firkantede kasser angiver hvor data opstår eller slutter Start/Slut Cirkler angiver data transformationer (input -> output) 0 proces Flow angives med pile Information flow Ikke-lukkede kasser angiver en fil (disk, hukommelse, database, ) Database

Eksempel på Data Flow Diagram

Eksempel på Data Flow Diagram med proces opdeling

Check af program design Nemt og overskueligt for andre (f.eks. Kunden) at se hvorvidt et system overholder krav, og hvor i systemet kravene bliver opfyldt

Guidelines til opdeling af processer Tidsmæssige sammenlægnings-kriterium: Transformationer der aktiveres af samme hændelse, kan efter dette kriterium sættes sammen i en proces Sekventielt sammenlægnings-kriterium: Hvis flere transformationer altid sker i samme rækkefølge, kan de slås sammen i en proces Prioritets sammenlægnings-kriterium: Transformationer der har forskellig prioritet skal IKKE lægges i samme proces, idet det modvirker opfyldelsen af tidskrav til de enkelte transformationer

Race condition Tænk på to opgaver der løses parallelt A, B gør hver flg. 1. Read X 2. Do X=X+1 3. Write X back Task A Synkronisering Task B Integer X Sekventielt udføres programmerne således, X bliver 2 efter at A og B er færdige Read X X = X+1 Write X=1 Read X X = X+1 Write X=2 I et multitask miljø, risikerer X at blive 1 Time Task A Read X X = X+1 Write X=1 Time Task B Read X X = X+1 Write X=1

Deadlocks When two trains approach each other at a crossing, both shall come to a full stop and neither shall start up again until the other has gone. Proces A venter på at Proces B skal blive færdig med et resultat Proces B venter på at Proces A skal levere input til beregningen.. Hvor lang tid skal de vente på hinanden?

Hændelser og interproces kommunikation Processer Proces 4 Proces 3 Proces 2 Proces 1 Processer har somme tider behov for at kommunikere Vente på resultater fra andre processer, f.eks. Ved beregning af resultater Ved venten på eksterne events, såsom hardware interrupts Anvendelse af resourcer beregnet til en-ad-gangen Disk- og hukommelsesadgang A/D og D/A konvertere Time

Proces synchronisering - Software Typiske operationer der kan anvendes Semaphorer og/eller mutexes: Anvendes til at ekskludere andre processer til en given ressource, f.eks. Variablen X Signaler: Anvendes til at kommunikere til andre processer, f.eks. Stop eksekvering, Sov 100 ms, vent på hændelse Y Event: Benyttes til at signalere en hændelse er sket; jeg er færdig med at beregne Y, data er klar, A/D konverteringen er færdig, IEEE definerer en standard for proces kommunikation (IEEE Std 1003.1, Posix), se http://standards.ieee.org/regauth/posix/

Software design Program design Process design Modul design Opdeling af processen i mindre moduler Del og hersk Uddelegering af opgaver Nemmere vedligeholdelse Fejldetektering og retning bliver nemmere

Opsplitning af processer i moduler Formål: Designe den enkelte proces som et sekventielt program Opdeling af processen i simplere opgaver (udført af moduler) Udarbejdelse af modul specifikation Specifikation af modul integrationstest Definition af modul: En selvstændig enhed, der skjuler en designbeslutning taget under procesdesignet

Modul design Designes som black-box Modul specifikation Beskrivelse af modulets funktionalitet Funktioner inkl. parametre

Funktionsorienteret design Top-down funktions-nedbrydning Bottom-up funktions-opbygning Hybrid Mest kritisk først Bottom down approach Bottom up approach

Funktionsorienteret design Nedbrydning i input, behandling og output Funktion Input Behandl Output Input Behandl Output

Balanceret opdeling Fan-out: Forgreningsfaktor jvf. SPU max. 7 +/- 2 Fan-in: Tilstræb fan-in i dybden Balanceret Ubalanceret

Software design Program design Process design Modul design Detaljeret design af datastrukturer og funktioner Pseudokode Grafiske Flowcharts Tilstandsdiagrammer.

Pseudo kode

Flowcharts - byggesten

Flowcharts typiske eksempler

Flowcharts flere eksempler

UML State Diagram Initial state State transition Ready Stop [User quits] State Event /ctr 0 := 0 Final/End State Done Stop Guard Action

Tilstandsdiagrammer

Regler for moduldesign Ingen globale variabler eller datastrukturer der kan ændres udefra Grænseflader ud af modulet består af entry funktioner Lokale funktioner bør ikke være synlige udadtil Initialisering af modulets datastrukturer eller hardware bør ske gennem initialiseringsfunktion med parametre Evt. inkluder testfunktion til udskrivning af modulets skjulte informationer Design modulet med henblik på senere genbrug i andre sammenhæng/projekter

Nogen spørgsmål?

Opgaver Reviewmøder mellem grupper som planlagt