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

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

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

Exempel på verklig kravspecifikation

TDDI02. Programmeringsprojekt. Föreläsning 3 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 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

Dokumentation och presentation av ert arbete

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

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

Objektorienterad programmering

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

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

LIPS Kravspecifikation. Institutionen för systemteknik Mattias Krysander

Dokumentation och presentation av ert arbete

Process IT-utveckling, översikt

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

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

Programmeringsteknik II

Dokumentation och presentation av ert arbete

Arbeta i projekt. Anders Hessel ITP-projekt Uppsala Universitet

Datavetenskapligt program, 180 högskolepoäng

Exempel på verklig projektplan

Programmering, grundkurs

Kandidatarbete Data och Informationsteknik

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

Examensarbete hos företag

Chaos om datorprojekt..

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

TDDD80 Mobila och sociala applikationer. Kursintroduktion

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

TDDD92 Artificiell intelligens -- projekt

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

Projektarbete DAVC20

Introduktion till kursen och MATLAB

Kursplan Gränssnittsdesign och Webbutveckling 1 Vårtermin 2014

Praktikum i programvaruproduktion

Objektorienterad programmering, allmänt

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

Inspel till dagens diskussioner

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt

Testbara krav. SAST Syd Ställ gärna frågor under presentationen eller efteråt Åhörarkopior distribueras efteråt

Kursplan Webbutveckling 2, 100p Läsår

Kursanalys DA2003 sommar 2017

Programvaruteknik, hp

Projektstyrning - kortversionen Jan-Åke Olofsson

TDP005 Projekt: objektorienterade system

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

Dokumentation och presentation av ert arbete

Introduktionsmöte Innehåll

Chaos om IT-projekt..

Kursprogram, ETSF20 Programvaruutveckling för stora projekt (PUSP), 7,5 hp

Här ges en överblick över de delar som ingår i projektarbetet och beskriver kraven och bedömningskriterierna.

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

LIPs Daniel Axehill ChrKr Projektdirektiv_Saab_v3 CKr

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

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

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.

Era förväntningar? Agenda. Introduktion till examensarbete INTRODUKTION MÅL EXAMENSARBETE 16 HP KANDIDAT

Projektdirektiv. Rikard Falkeborn Sida 1

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

Programmeringsstil 11/3-2002

vecka 51 tisdag 18/12 kl 14:00 Informationsmöte om examensarbetet i projektrummet.

TDP025. Entreprenöriell programmering. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell.

Reglerteknisk projektkurs TSRT10

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

Agil programutveckling

Reglerteknisk projektkurs TSRT10

EXAMENSARBETE i elektroteknik KORT IFORMATION

WEBBSERVERPROGRAMMERING

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

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

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Användarcentrerad systemdesign

EDAA01 Programmeringsteknik - fördjupningskurs

Kravspecifikation Fredrik Berntsson Version 1.1

Reglerteknisk projektkurs TSRT10

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

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

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.


TDP023 Projekt: Agil systemutveckling

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

Konstruktion med mikrodatorer

Kandidatarbete på Industriell ekonomi

LIPs Isak Nielsen ChrKr Projektdirektiv13_ROV.doc CKr

Dokumentation och presentation av ert arbete

Användarcentrerad Systemutveckling

Introduktion - Metodik i Produktutveckling

Programmeringsstil 18/3-2002

Logistik (723G48), 7,5 hp Kursinformation VT -2016

DM1012 Multimediaproduktion

TANA81: Matematikprojekt

Copyright Prolore All Rights Reserved.

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: Anton Sundblad Examinator: Jonas Wallgren Kursadministratör: Åsa Kärrman 2

Kursupplägg Kursens mål: Programutveckling i metodisk projektform, inkl. dokumentation Kunskap om några element inom Software Engineering Kodning av lite större volym 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 1 lektion, OOA/OOD Hemtenta 1 gästföreläsning av Kristian Sandahl 1 praktikföreläsning, användbara verktyg Projekt 3

Examination Projekt Genomförs i grupper av 4 Kravspecifikation Designspecifikation Presentation Granskning Leverans Demonstration Kodinlämning Testrapport (eventuellt..) Erfarenhetsrapport Hemtenta Individuell 2 tillfällen till kompletteringar 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 Förmedla status via Kernel Alphas Rapportera via e-mail: Vad som gjorts av vem tidsuppskattning Att göra en intern planering i form av en projektplan rekommenderas starkt! Börja bilda 4-personers grupper snarast! 4 personer, varken mer eller mindre För in er i webreg innan nästa fö., länk på kurshemsidan Deadline torsdag: Gruppbildning klar Val av projekt färdigt Första handledarmötet genomfört 5

Projektförslag Krav - Minst ett externt bibliotek, ex: SDL2, SFML, Qt, MySQL, SQLite, ENet, Box2D, etc. Qt / MySQL / SQLite: Textbaserat äventyrsspel med editor Bibliotekshantering Ligahantering SDL2 / SFML / Enet / Box2D: Tower Defense Roguelike Risk Racingspel Egna förslag: Iphone- / Android-app? 6

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 (Processer, produkter, etc..) Dokumentation av olika slag Management (Ledning, uppföljning, resursfördelning, etc..) Till stor del icke-tekniska frågeställningar! 7

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 8

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. 9

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. 10

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

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), implementera på flera nivåer, kod 4. Utvärdera resultatet Testning Ny kod, (validering, uppdaterade verifikation), dokument flera nivåer Dessa steg bryts ner i flera, mer preciserade, delsteg. 12

Projekt? En tillfällig kraftsamling (endeavour) som genomförs för att skapa en unik produkt, tjänst eller resultat. Ett definierbart ändamål (ett Opportunity) 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. Kort 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 13

Begreppsdistinktioner Principer (eller Practices): Ett enskilt förfaringssätt, sätt att arbeta Parprogrammering Planning Poker Metod: Ett konkret, detaljerat, förfaringssätt, inklusive verktyg och principer. Extreme Programming (XP) Jackson Structured Programming (JSP) Metodik: Processmodell er, med generella och gemensamma drag för ett flertal metoder. 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(en Stakeholder) och dennes 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 av 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

SEMAT Alpha Kernels 16

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

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

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 19

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

Tankar inför projektet Börja fundera på era principer och er metod Finns många fler att välja på än de som nämnts här Lägg upp en tidsplan med datum och vilka Alpha Kerneltillstånd ni planerar att ha nått där. Använd också dessa för att övervaka var ni är och vad ni behöver arbeta på härnäst! Dokumentera era principer, er metod och er tidsplan i den rekommenderade projektplanen! 21

Kravspecifikation 22

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 23

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 24