IMT3102 Objektorientert systemutvikling Introduksjon av emnet høsten 2011 Læringsutbytte i emnebeskrivelsen : Studentene skal : oppnå kunnskaper om smidig systemutvikling og Open Source-basert systemutvikling forstå Design Patterns og relevansen av å benytte dette ved programvaredesign. Kjenne tradisjonelle og moderne programvarearkitekturer Ha ferdigheter til å gjennomføre analyse og design basert på objektorientert modellering i UML, og kunne gi faglig begrunnede arkitekturforslag ved utvikling av mellomstore programvareløsninger 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 1 Temaer Kursets temaer Vekt Smidige systemutviklingsmetoder og Open Source Software Development (35 %) Objektorientert analyse og design med anvendelse av Unified Modelling Language (25 %) Programvarearkitektur og Design Patterns (40 %) 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 2 IMT3102 Objektorientert systemutvikling 10 studiepoeng Bachelor i Programvareutvikling Forutsetter IMT2243 Systemutvikling og bygger på IMT1082 Objektorientert programmering 4 timer pr uke (tirsdag og onsdag) forelesning, diskusjon, mappearbeidveiledning + 2 timer øremerket veiledning (når?) 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 Fordyper oss innen utvalgte temaer fra Systemutvikling 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 3 IMT3102 - Objektorientert systemutvikling 1
MAPPEARBEIDENE Mappe 1 : Open Source Software Development lære om denne arbeidsformen gjennom å kartlegge, analysere og sammenligne utvalgte OpenSourceprosjekter (Gruppearbeid 2-3 studenter) Mappe 2 : Smidige systemutviklingsmetoder lære mer om SCRUM og øvrige smidige metoder. Undersøke forsknings- og erfaringsstatus rundt anvendelse av slike systemutviklingsmetoder. (Individuell) Mappe 3 : Design Patterns Gå inn i detaljer rundt utvalgte Gang of Four patterns viktig fagfelt for enhver programvareutvikler (Individuell) 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 4 MAPPEARBEIDENE Mappe 4: Inceptionfasen i systemutviklingsprosjekt smidig anvendelse av Unified Process og UML med vekt på problemforståelse og krav (gruppe) Mappe 5: Elaborationfasen i systemutviklingsprosjekt vekt på vurdering av alternative teknologier og programvareløsninger. Utforme skisse til arkitektur der også Cloud Computing inngår (gruppe) Mappe 6: Refleksjonsnotat der de ulike temaer vi har tatt for oss i emnet settes i perspektiv (individuell) 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 5 Open Source Software Development Hva vet dere nå om dette temaet? 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 6 IMT3102 - Objektorientert systemutvikling 2
Open Source : studentenes ståsted Hvilke Open Source programvare bruker dere og hva er historikken til disse? Hva tror du har vært motivasjonen for å bidra som henholdsvis User og eller Developer i disse? Ser dere fordeler og farer ved å basere seg på Open Source programvare? Er Open Source utbredt innen systemutviklingsbransjen? Og hvordan gjøres det (gjenbruke eller distribuere ) Hvorfor skulle du som HiG student vurdere å bidra i et Open Source prosjekt? Hva med å benytte seg av Open Source tankegang i forbindelse med Bacheloroppgaven til våren? 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 7 Open Source Community Open Source programvare : Programvare som lisensieres under en copyright-lisens som er i overensstemmelse med Open Source Definition og der kildekoden distribueres på et format som kan leses av mennesker. Selve utviklingsprosessen tilstrebes utført i et åpent og samarbeidsfremmende miljø Mye relevant stoff på : http://opensource.org/docs/osd Open Source Software Development (fra SysUtv) 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 helt sentralt 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 som kommer 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). 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 9 IMT3102 - Objektorientert systemutvikling 3
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) 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 10 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). 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 11 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, Chromium 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/ 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 12 IMT3102 - Objektorientert systemutvikling 4
Open Source roller : 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 13 Open Source noen små drypp : Motivasjon til deltagelse Idealisme, JOBB, 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 Konfigurasjonsstyring : Alt Jon L. sa i Systemutvikling er helt og fullt inne i alle typer Open Source prosjekter (et must i OSSD) 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 14 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 eller utvidet funksjonalitet Endringer i installasjonsrutiner Tredelt : 2.2.1 Major.Minor.Micro ulikt grad av kompabilitet 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 15 IMT3102 - Objektorientert systemutvikling 5
Open Source Bug-lifecycle 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 16 Open Source kommersielle aktører stadig mer toneangivende Hva er de kommersielle aktørers motiv? NB! INGEN GJØR DET AV REN «GODHET» - Penger og makt ligger alltid som et motiv bak. Programvaren kan være et delprodukt som bidrar til å skape goodwill for aktørens hovedprodukt (eks. bidrag for å øke interesse for HW ) Opererer med Dual lisens (kommer mer og mer) Innfallsport til at man begynner å benytte Cloud-tjenester Ønske om å nå et marked for salg av supporttjenester (konsulentvirksomhet) Tjene pengene på Reklame Slippe ellers dødende interne applikasjoner skape blest goodwill Kompetanseoppbyggingstiltak 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 17 Open Source MAPPE 1 : Gå sammen i grupper straks Start sonderingsarbeidet med å finne OSSD-prosjekter idag. Se om dere kan finne informasjon som forteller noe om: Målsetting for prosjektet, Historikken bak prosjektet, Hvem utvikler, organisering, lisensvalg, bruk av informasjonskanaler(web, wiki, mailinglister, IRC), Informasjon om utviklere/antall brukere, releasehistorikk, popularitet, prog.språk, plattformer Søk etter prosjekter som er ulike av «natur». Kommersielle vs frivillige, store vs små, populære vs upopulære, gamle vs nye, betalte vs ubetalte, «åpne vs lukkede» Les pensum innen OSSD 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 18 IMT3102 - Objektorientert systemutvikling 6
Open Source Mappe forts. : Kartlegg mange ulike prosjekter før dere velger ut de 3 4 OSprosjekter som dere så skal gå inn og granske nøye. NB! bruk tid til å orientere dere først og bytt gjerne ut enkeltprosjekter underveis. Hvis dere kontakter prosjektgruppen 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. Bruk tilgjenglig og åpen info for alt det er verdt. (Bug-fix rapporter, dokumentasjon ) Kildehenvisninger viktig. Prosjektsiden klart viktigs kilde, men mys også litt rundt etter prosjektomdømme utenfor. 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 19 Open Source Mappe 1 forts. : Prosjekter som ble undersøkt i fjor (dere kan MAX ha 1 av disse i deres arbeid) : Joomla! ffdshow VirtualBox Google Chromium Audacity PCSX2 Android 7-zip Bloodshed Dev-C++ 16.Aug 2011 Forelesning 1 i IMT3102 høst 2011 20 Open Source Software Development Fogels oppstartstips for å drive OSSD : Se etter tilsvarende / nært beslektede prosjekter Bli heller med i et eksisterende enn å starte opp nytt hvis mulig Navnsetting av prosjektet Lag god beskrivelse av målet med prosjeket : OpenOffice : To create, as a community, the leading international office suite that will run on all major platforms and provide access to all functionality and data through open component based APIs and an XMLbased file format Beskriv : nedlastningsformat, krav til verktøybruk (versjonskontroll, bug-tracker), angi lisens prosjektet legges under, hosting av prosjektet Klargjør utviklingsstatus, avklar kommunikasjonskanaler og ha gode beskrivelser av rutiner for bidragsytere IMT3102 - Objektorientert systemutvikling 7