140 likes | 338 Views
Projektiranje in organizacija informacijskih sistemov. Uvod. Če bi Microsoft izdeloval avtomobile. Avto bi brez posebnega razloga razpadel dvakrat dnevno. Vsakič, ko bi narisali na cesto nove črte, bi morali zamenjati avto z novejšim.
E N D
Če bi Microsoft izdeloval avtomobile... • Avto bi brez posebnega razloga razpadel dvakrat dnevno. • Vsakič, ko bi narisali na cesto nove črte, bi morali zamenjati avto z novejšim. • Kadar bi se avto na lepem ustavil, bi ga mirno ugasnili in ponovno zagnali, kot da se ni zgodilo nič posebnega. • Včasih to ne bi zaleglo in avta ne bi mogli več zbuditi, zato bi morali ponovno namestiti motor.
Če bi Microsoft izdeloval avtomobile... • V avtu bi se lahko peljala le po ena oseba, če ne bi kupili profesionalne različice. (In še tedaj bi morali za vsakogar kupiti dodaten sedež.) • Apple bi izdelal avto, ki bi bil dvakrat lepši, trikrat zanesljivejši in štirikrat hitrejši. (vendar bi deloval le na petih odstotkih cest) • Vse opozorilne lučke bi zamenjali z enoz napisom “General exception 0xc0000000”. • Nova različica sedežev bi zahtevala, da imamo vsi enako velike riti. (Tudi to bi se nam zdelo povsem sprejemljivo.)
Če bi Microsoft izdeloval avtomobile... • Zračne blazine bi vprašale “Are you sure?”, preden bi se napihnile. • Pred odklepanjem avtomobila bi moral istočasno dvigniti kljuko pri vratih, pritisniti ogledalo in potegniti anteno k sebi. • Z vsakim novim modelom avtomobila bi se morali znova učiti voziti, saj nič ne bi bilo več tam, kjer je bilo pri prejšnji različici. • Da bi ugasnili avto, bi morali najprej pritisniti tipko “Start”.
Če bi Microsoft izdeloval avtomobile... • JD: Vsakič, ko bi zgradili novo, ravnejšo in hitrejšo avtocesto, bi Microsoft predstavil počasnejši model avtomobila, ki pa bi imel bolj pisano armaturo. Večina bi ga (iz neznanega vzroka) kupila.
Razlike med avtomobilsko industrijo in programiranjem • Programi so bolj zapleteni od avtomobilov (?) • morda pa so avtomobili bolj “modularni”, razvoj sedeža je neodvisen od karoserije, ta pa (dokaj) neodvisen od pnevmatik • Glavni del cene programa je razvoj, material je cenen • Ko se pnevmatika postara, jo “posodobimo” z novo; ko program zastari, je posodabljanje težje • Večina programske opreme ni iz obstoječih delov, temveč po naročilu • Že majhne spremembe imajo velike posledice
Razlike med avtomobilsko industrijo in programiranjem • Nemogoče je načrtovati razvojni čas • Napake zaradi neizkušenosti • prehitri in prepogosti prehodi na nove tehnologije • prevelik poudarek strojni opremi • slaba komunikacija med programerji, vodstvom, strankami • dodajanje novih programerjev, če projekt zamuja • ...
Projekt Enkratna, zapletena naloga z določenimi • cilji • določljivi, sicer je naročnik nezanesljiv ali projekta nepotreben • zapisani, da obe strani vesta, kaj sta se dogovorili • pomembni za kontrolo napredka in motivacijo • roki • drugimi omejitvami • stroški • predpisi, standardi
Vrste projektov • deterministični • cilje določimo vnaprej • stohastični • cilje si izmišljamo sproti • navadno raziskovalni ali razvojni projekti • enkratni projekti • projektni procesi
Orange • 150.000 vrstic goste lastne kode(brez komentarjev...) • 80.000 C++ • 70.000 Python (ena šteje za deset!) • posebnosti • odprtokodni projekt • razvojna skupina se spreminja, prispevki izven nje • ni eksplicitnega naročnika, so pa uporabniki • ni neposredno financiran • raziskovalni program (večni prototip)
Vsebina predmeta: Faze projekta • Zasnova • Definiranje • okvirni časovni načrt • določitev dela • okvirni stroški • mrežni načrt – izdelava in optimizacija • načrt stroškov • Izvajanje • spremljanje in vrednotenje stanja • napovedovanje in ukrepanje
Vsebina predmeta: Organizacija skupin • tradicionalna – direktor, vodje oddelkov... • projektna – prehajanje delavcev med projekti • matrična – “oboje hkrati” • nujno dobro planiranje vseh aktivnosti projektov! • dvojna podrejenost lahko povzroča spore in težave z razmejitvijo odgovornosti • skupina “glavnega programerja” • “kirurg” • premalo primernih ljudi (voditeljske sposobnosti...) • primerno za manjše projekte • modifikacija: v vlogi glavnega jih nastopa več
Vsebina predmeta: Orodja za skupinsko delo • načrtovanje in dodeljevanje opravil, sledenje... (dotProject, phpCollab, netOffice; MSProject, Groove) • nadzor različic (CVS)primerjanje (Araxis Merge) • shramba poročil o napakah (Mantis) • orodja za regresijske teste • mesto za dogovore, zapisnike (phpBB) • Wiki