TDDI02. Programmeringsprojekt. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Relevanta dokument
TDDI02. Programmeringsprojekt. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 1. Kursinformation Vad är Software Engineering? Hur går ett projekt till?

TDDI02. Programmeringsprojekt, Föreläsning 1. Filip Strömbäck. Med utgångspunkt i tidigare slides av Jonas Lindgren

Exempel på verklig kravspecifikation

TDDI02. Programmeringsprojekt. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDI02. Programmeringsprojekt. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDI02. Programmeringsprojekt, Föreläsning 2. Filip Strömbäck. Med utgångspunkt i tidigare slides av Jonas Lindgren

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

UTGÅNGSPUNKT KURSMÅL: Programmering (= kodning) och design (= konstruktion) är teknikområden. Kodning av lite större volym

Praktikum i programvaruproduktion

Exempel på verklig projektplan

Chaos om datorprojekt..

Arbeta i projekt. Anders Hessel ITP-projekt Uppsala Universitet

Objektorienterad programmering

Dokumentation och presentation av ert arbete

TDP005. Föreläsning 1. Filip Strömbäck

Datavetenskapligt program, 180 högskolepoäng

TDP005. Föreläsning 1. Filip Strömbäck

Föreläsning 4, Användbarhet, prototyper

TPFD - TestPlan Före Design BESKRIVNING AV AKTIVITETER

Chaos om IT-projekt..

LIPs Daniel Axehill ChrKr Projektdirektiv_Saab_v3 CKr

Föreläsning 1. Kursinformation. Utvecklingsprocessen. Kravspecifikation. Gruppindelning.

Programmeringsteknik II

LIPS Kravspecifikation. Institutionen för systemteknik Mattias Krysander

TDDD92 Artificiell intelligens -- projekt

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 3. Verifikation, validering och testning

TDIU01 (725G67) - Programmering i C++, grundkurs

Projektplan. LiTH Segmentering av MR-bilder med ITK Anders Eklund. Version 1.0. Status. Bilder och grafik projektkurs, CDIO MCIV LIPs

Projektstyrning - kortversionen Jan-Åke Olofsson

Kursinformation. Metodik för programvaruutveckling. Utvecklingsprocessen för programvara. Innehåll. Processmodell. Exempel

EMG:s väg till examensarbeten av mycket hög kvalitet

Användarcentrerad Systemutveckling

Kurs-PM fo r HI1028, Projektkurs inom programvaruutveckling, VT16

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod

Utbildningsplan för. International Software Engineering, 180 högskolepoäng

Programvaruteknik, hp

CIVILINGENJÖRSEXAMEN MASTER OF SCIENCE IN ENGINEERING

Process IT-utveckling, översikt

Dokumentation och presentation av ert arbete. Kursens mål. Lärare Projektmedlemmar. Studenter Extern personal. Projektfaser. Projektroller.

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

produkters egenskaper och innehåll

Projektmetodik II. HF1005, Informationsteknik och ingenjörsmetodik för Datateknik. Projektarbete

Objektorienterad konstruktion

WEBBSERVERPROGRAMMERING

Dokumentation och presentation av ert arbete

Martin Völcker, SLL & Suit

Välkomna till KMM! KMM. KMM - lärandemål Efter fullgjord kurs ska ni bland annat kunna:

Inspel till dagens diskussioner

Introduktion - Metodik i Produktutveckling

Föreläsning 11, Planera utvärdering. Att planera utvärdering. Vetenskapliga experiment. Kapitel i kursboken

Dokumentation och presentation av ert arbete

Reglerteknisk projektkurs TSRT10

Kursplan Gränssnittsdesign och Webbutveckling 1 Vårtermin 2014

Reglerteknisk projektkurs TSRT10

Introduktion till kursen och MATLAB

Programmering, grundkurs

Idag. EDAA35: Utvärdering av programvarusystem. Mål. Innehåll. Kursmoment. Lärare

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

Elektroteknik GR (C), Examensarbete för högskoleingenjörsexamen, 15 hp

Platina och kvalité. Rasmus Staberg, Teknisk direktör,

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 3. Filip Strömbäck. Verifikation, validering och testning

Dok. Nr: VE V Verksamhetsmanual Benning Sweden AB

Undervisningen i ämnet mobila applikationer ska ge eleverna förutsättningar att utveckla följande:

13 1MA302 Automatateori DV1 4 A D, M 1TD442 Algoritmer och datastrukturer DV1 6 A D

Kandidatarbete på Industriell ekonomi

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

Låt oss ta hand om din utveckling, medan du själv utvecklar ditt företag

Kursplan Webbutveckling 2, 100p Läsår

TANA81: Matematikprojekt

Fakulteten för ekonomi, kommunikation och IT. Utbildningsplan SGITD. IT-design. Study programme in IT-Design

LIPs Isak Nielsen ChrKr Projektdirektiv13_ROV.doc CKr

Interaktionsdesign som profession. Föreläsning Del 2

Reglerteknisk projektkurs TSRT10

Robotgräsklippare PROJEKTPLAN. Robotgräsklippare. Version 1.1. Status. Granskad. Godkänd. Robotgräsklippare.

Dokumentation och presentation av ert arbete

Kursplan Gränssnittsdesign, 100p Läsår

DM1012 Multimediaproduktion

Beslut om fastställande: - - Behörighetskrav: -

Föreläsning 4: Designprocessen

Programmeringsstil 11/3-2002

Maskiningenjör - produktutveckling, 180 hp

729G06 Föreläsning 1 Objektorienterad programmering

Webbserverprogrammering

DATA- OCH INFORMATIONSTEKNIK

Opponentrapport på examensarbete Utveckling av ett affärssystem med Unified Process av Therese Sundström.

Automation Region. Affärsdriven systemutveckling genom agila metoder. Stefan Paulsson Thomas Öberg

Design och krav. Design Definition. enkelt Det ska vara möjligt att. Henrik Artman

Examensarbete hos företag

Datateknik Teknologie kandidatexamen, 180 sp

Metoder för Interaktionsdesign

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Föreläsning 8, Design

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Filhanterare med AngularJS

Design för användbarhet Användarcentrerad utvecklingsprocess

RESULTAT, AVSLUT OCH UPPFÖLJNING INFÖRANDET BYTE AV PROJEKTGRUPP/MEDLEMMAR? PLANERING INFÖR INFÖRANDET

RESULTAT, AVSLUT OCH UPPFÖLJNING. Stefan Berglund

Transkript:

TDDI02 Programmeringsprojekt. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Vad är Software Engineering? Hur går ett projekt till? Anatomin hos en kravspecifikation

Kursledning Kursledare: Jonas Lindgren Handledare: Mattias Rönn Handledare : Rebecka Geijer Michaeli Handledare : Torbjörn Lönnemark Examinator: Jonas Wallgren Kurssekreterare: Gunilla Mellheden 2

Kursupplägg Kursens mål: Kodning av lite större volym Programutveckling i metodisk projektform, med dokumentationer Kunskap om några element inom Software Engineering Förkunskaper: God förtrogenhet med något högnivåspråk Praktisk kunskap inom datastrukturer och algoritmer Genomförande: 3 initiala föreläsningar 2 gästföreläsningar 1 lektion Projekt Hemtenta 3

Examination Projekt Genomförs i grupper av 4 Kravdokument Designdokument Presentation Opposition Leverans Demonstration Kodinlämning Testrapport (eventuellt..) Reflektionsdokument Ev. övriga projektdokument Hemtenta Individuell Kursen betygsätts med G 4

Övrigt Kursen kräver stort egenansvar! Konsultera hemsidan! Konsultera litteratur! Regelbundna möten med handledare är ett krav, ca. ett i veckan Att göra en intern planering i form av en projektplan rekommenderas starkt! Börja forma 4-personers grupper snarast! 4 personer, varken mer eller mindre För in er i LUPP, se kurshemsidan Deadline fredag: Gruppbildning klar Val av projekt färdigt Första handledarmötet genomfört 5

Utgångspunkt Programmering (= kodning) och design (= konstruktion) är teknikområden. Framställning av stora/komplexa system kräver dessutom t.ex. Många programmerare/teams Personalfrågor (Specialister, utbildning, ersättare, etc..) Externa frågor (Marknadsföring, kontrakt, etc..) Kvalitetssäkring (Produkter, processer, etc..) Dokumentation av olika slag Management (Ledning, uppföljning, resursfördelning, etc..) Till stor del icke-tekniska frågeställningar! 6

Utgångspunkt (cont.) Området Software Engineering omfattar både dessa tekniska och icke-tekniska kompetenser. Ett metodiskt arbetssätt i projektarbetsform behövs. Ett projekt löper allmänt i ordningen: 1. Förstå problemet 2. Planlägg lösningen 3. Genomför planen 4. Utvärdera resultatet 7

Software Engineering? En praktisk och vetenskaplig del av datalogi Som anger metoder, verktyg, riktlinjer, attityder, etc.. För konstruktion av stora/komplexa programvarusystem I enlighet med användares/beställares intentioner Inom föreskrivna budget- och tids-ramar Med hänsyn till kvalitets- och underhålls-aspekter SE is the body of THEORY and PRACTICAL TECHNIQUES that can be brought to bear on the process of developing software. 8

Software Engineering? (cont.) Mest övergripande mål: Förmåga att urskilja och rätta sig efter kunders önskemål och krav (dvs. behovsstyrt, inte teknikstyrt!) Användande av ingenjörsmässiga principer, idéer, kvaliteter och attityder Vad innebär ingenjörsmässighet? Konstruktion av programvara är inte (längre) ett ad hoc -jobb utfört av enstaka, kreativa individer i den mörka skrubben, utan ett välorganiserat, metodbaserat teamwork, baserat på känd teknik. 9

Software Engineering? (cont.) Källa: Software Engineering for Students: A Programming Approach, D. Bell 10

Traditionell arbetsgång Projektfas, allmänt SE-fas Resultat 1. Förstå problemet Kravanalys Kravspecifikation 2. Planlägg lösningen Planering Projektplan (tid, resurser) 3. Genomför planen Design Designspec, ev. (konstruktion), på flera nivåer, implementera kod 4. Utvärdera resultatet Testning Ny kod, (validering, uppdaterade verifikation), dokument flera nivåer Dessa steg bryts ner i flera, mer preciserade, delsteg. 11

Projekt? En tillfällig kraftsamling (endeavour) som genomförs för att skapa en unik produkt, tjänst eller resultat. Ett definierbart ändamål Definieras i en kravspecifikation: funktionalitet, prestanda, uppträdande, etc.. Ett unikt företag Inte rutinarbete, avser inte något som gjorts identiskt tidigare En tillfällig aktivitet Det finns en tydligt början och ett tydligt slut, enligt krav. Annan definition: Ett projekt är en kombination av resurser som förs ihop för att skapa något som inte fanns förut., Cleland och Ireland, 2002 12

Projekthantering? (engelska management ) Planering, organisering, styrning, övervakning, förändring, hantering av osäkerheter, risker, etc.. Speciellt för programvaruprojekt Produkten är icke-konkret, osynlig, svårt för en manager att urskilja framstegen Standardiserade processer saknas, det går inte att förutsäga när problem kommer att uppstå Den snabba teknikutveckligen kan orsaka att tidigare erfarenheter inte längre gäller 13

Begreppsdistinktioner Metod: Ett specifikt, konkret, detaljerat, strukturerat förfaringssätt, inklusive verktyg. Kan beskrivas algoritmiskt. T.ex: Jackson Structured Programming (JSP) Extreme Programming (XP) Metodik: Grundmodeller, generella och gemensamma drag för ett flertal metoder. Processmodell. T.ex: Prototyping Unified Process (UP, OpenUP) Metodologi: Läran om hur metoder konstrueras, kan värderas, dess generella egenskaper. 14

Begreppsdistinktioner (cont.) VALIDERING: Med VALIDERING menar man att slå fast att det som levereras (eller interna dokument på vägen) har en FUNKTIONALITET i enlighet med det beställaren avsett. Det relaterar till KUNDEN och hans förväntningar. VERIFIKATION: Med VERIFIERING menar man, något striktare, att slå fast att produkten (och steg på vägen!) lever upp till kravspecifikationen! Denna kan ju beskrivas mer än funktionaliteten (andra kvaliteter). Verifieringen kan också avse koll av mer interna tekniska lösningar, allmänna programvarukrav, etc.. Lite populistiskt uttryckt (Boehm): VALIDATION: Are we building the right product? VERIFICATION: Are we building the product the right way? 15

Strikt vattenfallsmodell Källa: Software Engineering for Students: A Programming Approach, D. Bell 16

Vattenfallsmodell ( återhopp ) Källa: Software Engineering for Students: A Programming Approach, D. Bell 17

Prototyping Processmodell som bygger på att: Tidigt skriva en prototyp Låta användaren testa denna prototyp Förfina kravspecifikationen baserat på feedback Förfina prototypen och upprepa Kan användas på två sätt: Evolutionary development Prototypen förfinas tills den utgör den färdiga produkten Throwaway prototyping Prototypen kasseras till slut Den färdiga produkten utvecklas från grunden med tidigare lärdommar 18

Spiralmodellen Källa: Software Engineering for Students: A Programming Approach, D. Bell 19

Tankar inför projektet Välj en metod och metodik att följa Finns fler att välja på än de som nämnts här Håll er till den valda metodens fasindelning Dokumentera er metod, metodik och tidsplan i den rekommenderade projektplanen! 20

Framställning av krav 1. Rimlighetsstudie (feasibility study) Kan systemet bidra med något? Kan det implementeras? Kan det integreras? 2. Kravinsamling (elicitation) och analys Svårt, verksamhetsfolk kanske inte kan uttrycka det dom vill, kan vara orealistiska, har egna och varierande begrepp, har outtalad kunskap. Verksamhetens omgivning kan förändras. Procedur: i. Förstå verksamhetens domän ii. Samla krav från verksamhetsfolk Vy-orienterad metod Scenarier Etnografisk metod iii. Klassificera krav iv. Lös konflikter mellan krav v. Prioritering mellan krav vi. Kolla kravens konsistens, kolla mot kunden Denna procedur pågår iterativt. 21

Framställning av krav (cont.) 3. Kravspecifikation (processen) Skriv ihop dokumentet 4. Kravvalidering Kolla giltighet Konsistens Kompletthet Rimlighet Verifierbarhet Etc.. 22

Egenskaper hos kravspec. Ska specificera bara det externa uppträdandet (vad, inte hur) Ska specificera eventuella begränsningar i implementationen (men inte många!) Ska själv vara lätt att ändra (för detta kommer att behövas!) Ska fungera som referens vid underhåll, och under alla utvecklingsfaser Ska klargöra vilka anständiga responser som ska ges på oönskade händelser under drift 23

En kravspec. kan innehålla.. Identifikation Sammanfattning Innehållsförteckning Inledning Användarna Funktionella krav Ska-krav Bör-krav Eventuellt -krav Produktkomponenter Programvara Maskinvara Dokumentation Effektivitet Kompabilitet Konfiguration Installation och service Tillförlitlighet Ordförklaringar Index 24

Exempel på verklig kravspec. 1. Revisionshistoria 2. Introduktion 2.1 Syfte 3. Definitioner och förkortningar 4. Projektets syfte 4.1 Projektbakgrund 4.2 Mål 4.3 Effekt 5. Kund och andra intressenter 5.1 Kund 5.2 Andra intressenter 6. Användare 7. Avgränsningar 7.1 Lösning 7.2 Implementation 7.3 Externa kopplingar 7.4 Övrigt 8. Fakta och förutsättningar 9. Krav 9.1 Händelseflöden 9.2 Funktionalitet 9.3 Användargränssnitt 9.4 Användbarhet 9.5 Felhantering 9.6 Data 9.7 Statistik och rapporter 9.8 Prestanda 9.9 Säkerhet 9.10 Administration och informationsförsörjning 10. Osäkerheter och risker 10.1 Beroenden 10.2 Stabilitet 10.3 Prestanda 10.4 Andra identifierade risker 11. Användardokumentation och utbildning 12. Tidsuppskattning 13. Väntrum 14. Lösningsidéer 25