IMT3102 Objektorientert systemutvikling 10 studiepoeng Bachelor i Programvareutvikling Emnet forutsetter IMT2243 Systemutvikling og bygger på IMT1082 Objektorientert programmering 5 timer pr uke (onsdag og torsdag) : forelesning, diskusjon, case, mappearbeid Evalueringsform : mappeevaluering!!! Tre individuelle arbeider to skal i presentasjonsmappa Tre gruppearbeider to skal i presentasjonsmappa Karakter settes ut fra presentasjonsmappa ingen eksamen Utstrakt tilbud om veiledning gjennom semesteret, men IKKE retting underveis kan forbedre arbeidene Et prosjektarbeid utføres mot en reell oppdragsgiver 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 1 Læringsutbytte i emnebeskrivelsen Studentene skal : oppnå kunnskaper om smidig systemutvikling og Open Source-basert systemutvikling bli i stand til å gjennomføre analyse og design basert på objektorientert modellering i modelleringsspråket UML. forstå Design Patterns og relevansen av å anvende dette ved programvaredesign, samt foreta arkitekturvurderinger ved utvikling av programvare 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 2 Temaer Kursets hovedtemaer Vekt Smidige systemutviklingsmetoder og Open Source Software Development (35 %) Objektorientert analyse og design med anvendelse av Unified Modelling Language (30 %) Programvarearkitektur og Design Patterns (35 %) 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 3 IMT3102 - Objektorientert systemutvikling 1
Determine objectives alternatives and constraints Plan next phase Evaluate alternatives identify, resolve risks analysis analysis analysis Operational Prototype 3 Prototype 2 protoype REVIEW type 1 Requirements plan Simulations, models, benchmarks Life-cycle plan Concept of Operation S/W requirements Product design Detailed Requirement design Development plan validation Code Design Unit test Integration and test plan V&V Integration Acceptance test Service test Develop, verify next-level product Faglærer : Tom Røise MAPPEARBEIDENE Mappe 1 : Open Source Software Development lære om denne arbeidsformen gjennom å kartlegge, analysere og sammenligne utvalgte OpenSourceprosjekter (Gruppearbeid) Mappe 2 : Smidige systemutviklingsmetoder lære mer om SCRUM og øvrige smidige metoder. Drøfte metodene opp mot hverandre og diskutere valg av metode i utviklingsprosjekt (individuell) Mappe 3 : Design Patterns utgangspunkt i Gang of Four pattern ene meget relevant og viktig fagfelt for en programvareutvikler (individuell) 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 4 MAPPEARBEIDENE Mappe 4: Inceptionfasen i et reelt systemutviklingsprosjekt smidig anvendelse av Unified Process og UML med vekt på problemforståelse og krav (gruppe) Mappe 5: Elaborationfasen i samme systemutviklingsprosjekt vekt på vurdering av alternative teknologier og programvareløsninger. Utforme skisse til arkitektur der også SOA og Cloud Computing inngår (gruppe) Mappe 6: Refleksjonsnotat der de ulike temaer vi har tatt for oss i emnet settes inn i en Bacheloroppgavekontekst og diskuteres (individuell) 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 5 Repetisjon fra Systemutvikling : Tradisjonelle Systemutviklingsmodeller Requirements definition System and software design Define outline requirements Assign requirements to increments Design system architecture Implementation and unit testing Integration and system testing Develop system increment Valida te Integrate increment increment System incomplete Vali dat e system Final system Operation and maintenance Concurrent activities Specification Initial version analysis Proto- Outline description Development Validation Intermediate versions Final version 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 6 IMT3102 - Objektorientert systemutvikling 2
forts. repetisjon Moderne tilnærminger til systemutvikling extreme Programming : Verdigrunnlag : Communication, Simplicity, Feedback, Courage 12 pratices : On-site Customer System Metafor Små releaser Planning Game Par programmering Felles eierskap Test før kode Refactoring Enkelt Design (DTSTTCPW) Kontinuerlig integrasjon Kode standard 40 timers uke 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 7 Methodology topics and samples (A. Cockburn ) / 19.Aug 2010 Forelesning 1 i IMT3102 høst 2010 8 Open Source Hva vet dere nå om dette temaet? IMT3102 - Objektorientert systemutvikling 3
Open Source Software Development Open Source begrepet knyttes ofte til et sett av kriterier for distribusjon av programvaren man har utviklet. Det er en misoppfatning at det her er snakk om gratis programvare. Aktører som legger ut sitt arbeid som Open Source gjør programvaren tilgjengelig i form av at mottaker gis frihet til bruk og også bearbeide den videre. Tilgang på kildekoden er et viktig element i dette. Man kan velge å utvikle en programvare på tradisjonelt vis og deretter slippe den ut som Open Source. Noen Open Sourceprosjekter tar steget videre og anvender en helt anderledes måte å kjøre selve utviklingen av programvaren på. Man velger her å involvere brukere av programvaren i selve utviklings- og testingsaktiviteten. Dette er OSSD! Man etablerer en gruppe (ofte idealistiske) systemutviklere til å komme med sine bidrag i programvaren (Developer Community), samtidig oppfordrer man alle brukere der ute til å teste og komme med feilrapporter og forslag til utvidelser (User Community). Litt historikk innen OSSD 1983 GNU-prosjektet startet av Richard Stallman. Mål om å lage et Unix-lignende operativsystem og distribuere det som fri programvare 1985 FSF Free Software Foundation stiftet av Richard Stallman Støtte til universell frihet til å distribuere og endre programvare uten. Fokuserer på fri som i frihet ikke fri som i gratis! 1991 Linus Torvalds lanserer sin ide om å utvikle et operativsystem og drar dermed i gang prosjektet som resulterer i Linux. I 2002 hadde anslagsvis 8000 årsverk av frivillig utviklingstid resultert i et operativsystem som ble benyttet på 25 % av verdens servere. 1997 Eric Raymonds diskuterer i sitt manifest The Cathedral and the Bazaar det han mener er fundamentale forskjeller mellom utviklingsprosesser for henholdsvis tradisjonell kommersiell programvare (Cathedral model) og internett-basert samarbeid og fri informasjonsdeling i prosjekter som Linux og Fetchmail (Bazaar model). 1998 Open Source begrepet etableres (http://www.opensource.org/docs/osd) Karakteristika ved OSSD-prosesser Må ha et startpunkt i form av et eksisterende produkt eller en genial ide. Gjerne også et nettverk av kontakter innen Open Source miljøer. Ulike utviklingsprosesser (A. Capiluppi m.fl): Soloarbeid, en person eier og videreutvikler programvaren, men distribuerer den som Open Source Soloarbeid med innslag av eksterne patcher. Her er det en utvikler, men eksterne bidragsytere gir inn feedback, patcher og eventuelt forslag til utvidelser Gruppearbeid med interne patcher. En lukket utviklergruppe som gjør all videreutvikling selv. Gruppearbeid med reelle bidrag fra større utvikler- og brukermasser (Reelt OSSD). IMT3102 - Objektorientert systemutvikling 4
Eksempler på OSSD Utviklingen av Linux ansees av mange som skoleeksemplet ikke bare på en velfungerende programvare distribuert som Open Source, men også som en reell OOSD utviklingsprosess der fordelene med å få engasjerte bruker- og utviklermiljøer er utnyttet til fulle. Andre kjente OpenSource : Apache Software Foundation, Mozilla Project, KDE, Open Office, Eclipse, Android, Viktige kildene for å finne gode Open Source prosjekter http://sourceforge.net/index.php http://freshmeat.net/ http://launchpad.net/ http://code.google.com/intl/no/ Open Source diskusjon : Hvilke Open Source programvare bruker dere? Hvilke Open Source prosjekter kjenner dere noe av historikken til? Hvilke trekk fra de ulike systemutviklingsmodellene er relevant i en OSSD sammenheng? Hva finner dere igjen fra extreme Programming som kan være relevant i OSSD? Hvor viktig er responstid innen Open Source prosjekter? Hva er motivasjonen for å bidrar som henholdsvis User og eller Developer, og hva er belønningen? Hvorfor skulle du som HiG student vurdere å bidra i et Open Source prosjekt? Open Source temaer : Roller i OS-prosjekter : Prosjektleder, release manager, bug master, dokumentansvarlig, web-ansvarlig, sikkerhetsansvarlig Core developer, Active developer, User (aktiv), User (passiv), Bug fixer, Reader (holder seg informert) Motivasjon til deltagelse Idealisme, Læring, Livsstil - addicted, Ære, Aksept blant likesinnede, CV-fokus, Karrierestart, Savner noe i programvaren man selv har behov for, Egoboo Kommunikasjonskanaler : Web site, Mailing lists, Versjonskontroll, Bug tracking, Real-time chat Lederstiler : Konsensus-basert (votingsystem/lazy consensus), Enehersker, Benevolent dictator Benevolent dictatorship is a form of government in which an authoritarian leader exercises political power for the benefit of the whole population rather than exclusively for his or her own self-interest or benefit or for the benefit of only a small portion of the population. IMT3102 - Objektorientert systemutvikling 5
Open Source temaer : User Community : Påpeke feil (Thousand eyeballs ansvar for å sjekke duplikater mer og mer i fokus), Melde nye krav og ønsker, Være aktive på informasjonsfora skape diskusjon og debatt rundt SW, Skape entusiasme for bruk innselgere i egen org Release policy : Gamle feil rettet og nye introdusert, Ny funksjonalitet, Utvidet funksjonalitet (forbedret tidligere), Endringer i installasjonsrutiner Veldig viktig at nyheter er beskrevet!! Tredelt : 2.2.1 Major.Minor.Micro - ulikt grad av kompabilitet her Konfig.styring : Alt Jon L. sa er helt og fullt inne i alle typer Open Source prosjekter, de som ikke praktiserer lever ikke lenge Open Source temaer : Kommersielle aktørers motiv : Bidrag for å øke interesse for HW. Marked for salg av supporttjenester (konsulentvikrsomhet) Utvikle lukkede utvidelser som selges Operere med Dual lisens (kommer mer og mer) Tjene penger på Reklame Slippe ellers dødende interne applikasjoner skape blest / goodwill Open Source roller : IMT3102 - Objektorientert systemutvikling 6
Open Source Bug-lifecycle. Open Source MAPPE 1 : Velg dere ut 3 4 OS-prosjekter som dere går inn og gransker nøye. NB! bruk tid til å orientere dere først og bytt gjerne ut enkeltprosjekter underveis Finn ut : Målsetting for prosjektet, Hvem utvikler, organisering, lisensvalg, informasjonskanalene vurder web-side side, wikibruk, mailinglister, IRC, Antall deltagere i ulike kategorier, styringsstruktur, releaser, popularitet, Fork-historikk, prog.språk, plattformer Kommersielle aktører vs frivillige, betalte vs ubetalte, kobling til andre prosjekt, kom.versjon/fri versjon? Bug-innblikk, Historikken til prosjektet, startet det med working code Tilbakemeldinger på deltagelse hyppighet, form, åpenhet Analyser likheter, forskjeller. Hva har dere lært av disse som dere selv vil anvende den dagen dere gründer et OSSD-prosjekt Open Source Mappe forts. : Hvis kontakt gjør klart at dere har et education-oppdrag som er kartlegging ikke deltagelse. Ikke spill potensielle utviklere for å få ut info mot reglene og god OSSD skikk. Hvis dere vil være Users så gjør det seriøst, ellers bare bruk tilgjenglig og åpen info. Kild h i i ikti P j kt id kl t ikti kild Kildehenvisninger viktig. Prosjektsiden klart viktigs kilde, men mys også litt rundt etter prosjektomdømme utenfor. IMT3102 - Objektorientert systemutvikling 7