Programski inženiring

Slides:



Advertisements
Similar presentations
INFORMACIJSKA TEHNOLOGIJA projektna naloga pri predmetu informatika
Advertisements

Strategic Research Agenda Strateška raziskovalna usmeritev D. Gradišar, V. Jovan 14. April 2010.
Wikinomija Stanko Blatnik, IPAK Inštitut eFest Velenje, oktober 2008.
Miha Pihler MCSA, MCSE, MCT, CISSP, Microsoft MVP
PREDSTAVITEV SMERNICE Peter Grasselli, CISA, CISSP SLOVENSKI INŠTITUT ZA REVIZIJO Ljubljana G32 Bussiness Continuity Plan (BCP) Review from IT Perspective.
Tihomir Ratkajec, MD, PhD.  Work has a very central role  spend a large part of ours life at work.  working situations are changed  the increasing.
PODPORA IKT PRI POUČEVANJU NARAVOSLOVNIH VSEBIN
Prvi razpis programa Jugovzhodna Evropa potek razpisa Tomaž Miklavčič Ministrstvo za okolje in prostor Direktorat za evropske zadeve in investicije Novo.
Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov.
1 EDUKACIJA BOLNIKOV pred uvedbo zdravila MAREVAN (tudi Sintrom) Alenka Mavri.
Pregled programa MED Nacionalni informativni dan ob prvem razpisu Ljubljana, 9. september 2015 mag. Nadja Kobe Služba Vlade RS za razvoj in.
TIPI PODATKOV. Načrt Najprej je potrebno dobro premisliti o problemu Katere podatke hranimo, kako podatke razporediti v tabele, kakšne vrste podatkov.
RAZVOJ SISTEMOV in TESTIRANJE UPORABNOSTI
SREČNO NOVO LETO 2009 Lara Koren, 2.c.
Visoka razpoložljivost podatkovnih zbirk
Project management implementation from the practical point of view
Srečko Bončina Izposoja e-knjig eBooks na EBSCOHost-u
SPACE OF OPPORTUNITIES
TRETJI TIR ZA INDUSTRIJO
MALE SIVE CELICE, RTV Slovenija
Informacijski model objekta BIM Building Information Modelling
INTELLIGENT AGENTS Properties of intelligent agents
Microsoftovi programi in tehnologija Silverlight
Utišajmo mobilne telefone !
Utišajmo mobilne telefone !
Utišajmo mobilne telefone !
UVOD V VIZUALNO PROGRAMIRANJE
Uvod v Python
Urnik – varno programiranje – odmor – napredno razhroščevanje Cilj: v prvem delu vsakomur dati vsaj eno dobro.
PRAVIČNA TRGOVINA Neža Dolmovič, 8.b April 2014.
DELOVANJE POVEZAV V STANOVANJU
11/15/2018 3:47 AM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN.
Utišajmo mobilne telefone !
Odvisnost podjetja od okolja
Fotografiranje hrane Predmet: Tipografija in reprodukcija.
Računalniško podprto skupinsko delo
Utišajmo mobilne telefone !
IZBRANI PRIMERI UPORABE IKT V VELIKI BRITANIJI IN NEMČIJI
Modulacija in demodulacija signalov (prirejeno po gradivu avtorja N
Nabavne verige v celotnem življenjskem ciklu “Uporabniški pogled”
THE PAST SIMPLE TENSE navadni preteklik.
‚Sintezna bioinformatika‘
Izbrana Poglavja iz Informacijskih Tehnologij (IPIT)
Primož Gričar, Vodja prodaje Februar 2003
Uporaba vrtilnih tabel za analizo množice podatkov
Tatjana Welzer Družovec (Inštitut za informatiko, FERI Maribor)
Microsoftove rešitve za šolstvo
Operacijski sistemi Lucijan Katan, 1.at Mentor: Branko Potisk.
Kaj je izziv pri dajanju zagotovil pri projektih za razvoj rešitev?
Miselni preboj za novi zagon Slovenije
Šalej Mirko Iskraemeco, d.d. Kranj
Projekt eMarket Services
UKREPI ZA ZMANJŠANJE STRESA
OSMOSE Predstavitev projekta
Binarna logistična regresija
Opazovalne metode kot tehnika / kot splošni dizajn
UML – je standardno pogoj za univerzalno ?
Ela Reven, Katarina urbančič
Ugani število Napišimo program, ki si “izmisli” naključno število, potem pa nas v zanki sprašuje, katero je izmišljeno število. Če število uganemo, nas.
Gorenje, d.d. Organizacija in informatika Peter Tovšak
JOTA dr. Gašper Cankar Filozofska fakulteta, april 2007
E-mobilnost in njena integracija v elektroenergetski sistem
24 UR SHAKESPEARA – (MULTI)MEDIJSKA PREDELAVA DOMAČEGA BRANJA
TERMODINAMIKA / THERMODYNAMICS
Urnik – Unit testing, TDD DUnit, DUnit2, DUnitX, TestInsight – odmor – Unit testing v resničnem svetu, mocking.
Informacijska varnost v Oracle okolju
Utišajmo mobilne telefone !
Agenda Predstavitev podjetja Tradicionalni pristopi
Referenčni model digitalne knjižnice
Neprekinjeno testiranje v .NET Core
Presentation transcript:

Programski inženiring (Software Engeneering)

Programsko inženirstvo Kaj je SWE? (a spet teorija) Zakaj SWE? (kako bi bilo, če bi se temu izognili) SWE da ali ne? Izhodišče: ali ti je všeč, da je SW tako buggy in hkrati tako drag? Dejansko stanje – posledica programskega NEINŽENIRINGA!!! sprememba Stopnja napak Čas Idealna krivulja

Programsko inženirstvo (software engineering – SWE) D E F I N I C I J E (opredelitev) Boehm: SWE je praktična uporaba računalništva, informatike, managementa in drugih znanosti za analizo, načrtovanje, konstrukcijo in vzdrževanje programske opreme in pridružene dokumentacije Dennis: SWE je uporaba principov, veščin in umetnosti pri načrtovanju in konstruiranju programov in programskih sistemov. Parnas: SWE je programiranje, če je izpolnjen vsaj en od naslednjih dveh pogojev: V razvoj programa je vključena več kot ena oseba Proizvedena bo več kot ena verzija programa Fairley: SWE je tehnološka in managerska disciplina, ki se ukvarja s sistematično proizvodnjo in vzdrževanjem programskih izdelkov, ki so razviti in prilagojeni pravočasno in sicer v okviru načrtovanega proračuna (stroškov).

Programsko inženirstvo (nad.) D E F I N I C I J E (opredelitev) Pomberger & Blaschek: SWE se praktična uporaba znanosti za ekonomično produkcijo in uporabo visoko kakovostne programske opreme. ‘Po domače’: SWE uporaba tehničnih in ne-tehničnih znanj pri razvoju, obratovanju in vzdrževanju programske opreme, s katero so zadovoljni uporabniki in razvijalci. Okolje programskega inženirstva sistem računalnikov, podporne programske opreme, pripomočkov, procedur in podpornega osebje, ki razvijalcem programske opreme zagotavlja potrebne pogoje, avtomatizacijo procesov, metodologije in orodja.

Problemi razvoja velikih programskih sistemov Pravilnost oz. nepredvidljiva kakovost končnega produkta Učinkovitost oz nizka produktivnost osebja in skupin Obvladovanje kompleksnosti sistema Zanesljivost sistema Fleksibilnost sistema Slaba / pomanjkljiva dokumentacija Slabo vodenje / organizacija projektov Predolgi razvojni cikli Pomanjkanje kadra za razvoj programske opreme Visoki stroški razvoja Visoki stroški vzdrževanja POSLEDICE Astronomska cena programskih rešitev Nezadovoljni uporabniki Nezadovoljni razvijalci

Vzroki za probleme pri razvoju SW Proces razvoja je v teoriji in praksi še vedno relativno slabo opredeljen (?ali pa enostavno ne poznamo teorije?) Uporaba zastarelih/ lastnih improviziranih metod razvijanja IS Nezadostna uporaba računalniške podpore pri razvijanju IS Pomanjkljivo metodološko znanje razvijalcev IS Nezadostno upoštevanje dejstva, da informacijski procesi in sistemi za različne ravni in načine upravljanja zahtevajo različne metode njihovega razvijanja

Atributi kakovosti SW

Glavni vzroki za (ne)uspeh SW Zahteve uporabnikov so napačno ali le delno zbrane; Zahteve uporabnikov se prepogosto spreminjajo; Uporabniki niso pripravljeni dajati zadostne resurse projektom IT; Uporabniki ne želijo sodelovati z razvijalci Uporabniki imajo nerealna pričakovanja Sistem ni več pomoč / benefikacija za uporabnike; Razvijalci ‘niso kos’ svoji nalogi.

Dobri načrti so delo dobrih načrtovalcev Najeti najboljše načrtovalce Načrtovalcem zagotoviti permanentno izobraževanje in ispopolnjevanje; Podpirati izmenjavo informacij in znanj ter interakcijo med načrtovalci; Motivirati načrtovalce (odstraniti ovire) in usmeriti njihove napore v produktivno delo; Ponuditi dobro delovno okolje Uskladiti cilje posameznikov z strategijo in cilji organizacije Dati poudarek na timskem delu

Mere za zagotavljanje kakovosti SW Konstruktivne Dosledna uporaba metod v vseh fazah razvojnega procesa Uporaba ustreznega razvojnega orodja Razvoj SW na osnovi visoko kakovostnih pol-produktov Dosledno pisanje/vzdrževanje razvojne dokumentacije Analitične Statična analiza programa Dinamična analiza programa Sistematično izbiranje testnih primerov Konsistentno beleženje rezultatov analiz Organizacijske Nenehno (permanentno) izobraževanje razvijalcev Institucionalizacija zagotavljanja kakovosti (uvedba standardov ISO, ANSI, IEEE…)

Večplastnost programskega inženirstva

Življenjski cikel programske opreme (SDLC - System Development Life Cycle)

Življenjski cikel prične se z zasnovo in konča z vzdrževanjem pri uporabniku razvojni proces razčlenimo na zaporedje medsebojno odvisnih aktivnosti, ki temeljijo na začetnih potrebah po izdelavi uporabnega produkta zakaj “cikel" - vsak razviti produkt generira nove potrebe Definicija (standard ANSI/IEEE Std 792-1983): življenjski cikel programske opreme = nabor diskretnih aktivnosti v času razvoja programske opreme in programskih sistemov faza življenjskega cikla = čas izvajanja posameznih aktivnosti (tudi sama aktivnost)

Faze življenjskega cikla programske opreme Problem Problem Analiza zahtev Delovanje in vzdrževanje Specifikacija (opredelitev) sistema Testiranje sistema Načrtovanje sistema in komponent Implementacija in testiranje komponent

Faze življenjskega cikla 1. analiza zahtev vključuje: analiziranje programskega problema (funkcionalen opis) in specifikacije želenega obnašanja grajenega sistema (funkcionalne zahteve in specifikacije) rezultat: Software Requirements Specifications oz. Specifikacije Zahtev Programske Opreme SZPO opisuje: funkcionalne zahteve, značilnosti strojnega okolja, obliko uporabniških vmesnikov in performančne cilje oz. zahtevane zmogljivosti

Faze življenjskega cikla 1. analiza zahtev (nad.) aktivnosti faze analize ločimo v 2 skupini: analiza problema rezultat = popolno razumevanje problemskega področja opis produkta rezultat = skladen in kompleten dokument programskih specifikacij aktivnosti obeh skupin ne izvajamo zaporedno, temveč sočasno v tej fazi odgovorimo na vprašanje: KAJ POTREBUJEMO oz. kaj naj bi grajeni programski sistem zagotavljal

Faze življenjskega cikla 2. načrtovanje vključuje: preliminarno načrtovanje – dekompozicija (razčenitev) programskega sistema v njegove dejanske konsistentne komponente in interaktivna razgradnja teh komponent v vedno manjše podkomponente, dokler niso dovolj majhne, da jih lahko ljudje brez težav razumejo vsak modul je dokumentiran - opisani so vhodi, izhodi in funkcije. podrobno načrtovanje – za vsak modul definiramo in dokumentiramo algoritme rezultati: modularna razgradnja definicija strukture podatkov definicija formata datotek opis pomembnejših algoritmov v tej fazi odgovorimo na vprašanje: KAKO oz. kako bomo zadovoljili identificirane zahteve oz. obnašanje sistema

Faze življenjskega cikla 2. načrtovanje (nad.) rezultat: modularna razgradnja definicija strukture podatkov definicija formata datotek opis pomembnejših algoritmov v tej fazi odgovorimo na vprašanje: KAKO oz. kako bomo zadovoljili identificirane zahteve oz. obnašanje sistema

Faze življenjskega cikla 3. implementacija izvedemo kodiranje transformacija algoritmov v računalniku razumljiv jezik testiramo in čistimo napake vsakega modula, specificiranega pri načrtovanju

Faze življenjskega cikla 4. testiranje in integracija testiranje posameznih modulov osredotočimo na del programa, da lažje ugotovimo in odstranimo napake kontroliramo tudi obnašanje modula glede na podane specifikacije (funkcionalno testiranje) integracijsko testiranje že stestirane module integriramo oz. povežemo (združimo) v enotno programsko strukturo ter jih testiramo (testiranje programskih komponent) sistemsko testiranje preverimo, ali se celoten programski sistem, postavljen v določeno strojno okolje, obnaša ustrezno podanim specifikacijam zahtev programske opreme

Faze življenjskega cikla 5. prenos v ciljno okolje / uporaba izročimo programsko in pripadajočo strojno opremo začne se uporaba sistema 6. vzdrževanje neprestano iskanje napak in njihovo odstranjevanje razširitev sistema 7. umik iz uporabe

Modeli življenjskega cikla Klasični pristopi: SLAM-DUNK model BAROČNI model KASKADNI model KASKADNI model, razširjen s prototipno komponento SPIRALNI model Objektni pristopi: Unified Process

Slam- dunk model najbanalnejši in najpogosteje uporabljen model izrazito negativen primer na začetku se začne tudi kodiranje filozofija uporabnika metode: preprosteje je kodirati, odkrivati in popravljati napake kot pa izgubljati čas z "znanostjo" - psihološko ozadje občutek, da lahko brez natančne razgradnje pristopimo k realizaciji, saj imamo "vse v glavi" takšne projekte imenujemo tudi "kmalu bo gotovo", zanje pa je značilno, da vedno zamujajo ali pa nikoli niso gotovi

Baročni model vnaša disciplino v prej opisan "slam-dunk" model bistvo modela: predhodna faza se konča pred naslednjo fazo - ta model lahko imenujemo tudi "etapni model" baročni model uzakonjuje pretirano disciplino zahteve so vedno spreminjajoče =>paradoks, faza analize se nikoli ne konča v realni okvir lahko ta proces spravimo le tako, da se fazi analize in snovanja delno prekrivata baročni model enostavno ne deluje, ker razvoj programske opreme ni determinističen proces ta model je prispeval k razvoju realnejšega "kaskadnega" modela

Implementacija (NAREDI) Testiranje (PREIZKUSI) Uporaba in vzdrževanje Kaskadni model Analiza (KAJ?) Načrtovanje (KAKO?) Implementacija (NAREDI) Testiranje (PREIZKUSI) Prenos v ciljno okolje Pomanjkljivost: predolg čas porabljen od začetka do implementacije. Rešitev – uporaba prototipov Uporaba in vzdrževanje

Prototipiranje Cilji prototipiranja: oddaljiti se od stroge zaporednosti pospešiti odzivni čas zmanjšati tveganje za stranko in razvijalca cenenost in hitrost nepopolno, vendar da nazorne rezultate Prototip - delna implementacija sistema, narejena s primarnim namenom, da omogoči uporabniku, stranki ali razvijalcu čim lažjo seznanitev s problemom ali njegovo rešitvijo. (A. Davis)

Metodi prototipiranja metoda zavračanja (throw-away) ustrezna za raziskovalne in eksperimentalne prototipe zgradimo hiter in robusten (quick-and-dirty) prototip, ki ga predstavimo uporabnikom z namenom, da skupaj z njimi: ugotovimo izvedljivost želja (zahtev) potrdimo potrebnost oz. nujnost posameznih funkcij odkrijemo manjkajoče (nepodane) zahteve raziščemo možnosti razvoja ustreznega uporabniškega vmesnika. po pridobitvi vsega potrebnega znanja o problemu in o rešitvah prototip zavržemo in začnemo razvijati sistem razvojna metoda (evolutionary) ustrezna za razvojne prototipe sistematičen pristop pri izgradnji, prototip preraste v sam sistem

Spiralni model analiza tveganja p r o t o t i p i ovrednoti alternative, identificiraj in zmanjšaj tveganja določi cilje, alternative, omejitve analiza tveganja p r o t o t i p i principi načrt zahtev zahteve sistemsko podrobno načrtovanje načrt razvoja načrtovanje načrt izvedbe implement test & instalacija načrtovanje naslednje faze razvoj& verifikacija izdelka

Analiza spiralnega modela omogoča boljšo oceno tveganja mešanica čistega strukturiranega in fleksibilnega prototipnega modela podpira hitre odzive in zagotavlja kakovost

Preverjanje rezultatov VALIDACIJA preverjanje ustreznosti programskega izdelka Ali gradim pravi produkt? VERIFIKACIJA preverjanje pravilnosti programskega izdelka Ali gradim produkt pravilno? Dokaz pomena sprotnega preverjanja Razmerje stroškov za odpravljanje napake, ki je odkrita v fazi analize zahtev : v fazi vzdrževanja = 1 : 200 Značilno za XP (eXtreme programming)

Dva inženirska pristopa RAZVOJNO INŽENIRSTVO proizvede nov sistem in izhaja iz začetnih postavk ter danosti OBRNJENO INŽENIRSTVO izhaja iz sistema, ki obstaja in deluje proces razstavitve in analize obstoječega fizičnega podatkovnega in procesnega modela IS in njegova vnovična obnovljena ali spremenjena izgradnja vzroki: uvedba sodobnejše tehnologije ali spremenjene zahteve uporabnikov uporaba: za vzdrževanje, izboljševanje, spreminjanje ali ažuriranje informacijskega sistema ali za celotno zamenjavo z novim sistemom

Vidiki razvoja programskih rešitev Procesni vidik => Diagram toka podatkov (DFD) opisuje transformacije nad podatki poenostavljena notacija: Vhod --> Proces --> Izhod obravnava procesno obnašanje sistema - kako sistem pretvori vhode v izhode Podatkovni (informacijski) vidik => Entitetno relacijski diagrami (ERD) in podatkovni slovarji opisuje obliko informacij, ki jih mora sistem procesirati nakazuje medsebojne relacije med informacijskimi enotami nanaša se na strukturo in uporabo podatkov v sistemu Dogodkovni vidik opisuje obnašanje sistema v realnem času nanaša se na dinamično obnašanje sistema => kako si dogodki sledijo v časovnem zaporedju kontrolni diagrami in diagrami prehajanja stanj

Orodja CASE Computer Aided Software Engineering CASE - tehnologija avtomatizacije razvoja in vdrževanja programske opreme oz. sistemov Osnovna ideja: s povezovanjem in avtomatizacijo vseh faz življenjskega cikla programskih sistemov zagotoviti popolnoma integrirana orodja, ki bodo zmanjšala trud, potreben za razvoj in vzdrževanje programske opreme

Pridobitve CASE praktičnost strukturnih in objektnih tehnik vsiljuje programsko/informacijsko inženirstvo izboljšana kvaliteta programske opreme (avtomatske kontrole, preverjanja) praktičnost prototipiranja lažje, enostavnejše vzdrževanje skrajšan čas razvoja razvijalci se lahko osredotočijo na kreativni del razvoja ponovna uporaba programskih komponent

Funkcije CASE Diagramska orodja // risanje diagramov, kreiranje grafičnih specifikacij Oblikovalniki // za kreiranje obrazcev, poročil, specifikacij, preprostih prototipov Podatkovni slovarji Preverjanje specifikacij // avtomatsko odkrivanje nepopolnih, sintaktično nepravilnih in nekonsistentnih specifikacij Generatorji kode // generiranje izvedljive kode avtomatično (direktno) iz grafičnih specifikacij sistema Generatorji dokumentacije // za pridobivanje tehnične in uporabniške dokumentacije, ki jo zahtevajo razvojne tehnike

CASE repozitorij mehanizem za hranjenje in organizacijo vseh informacij o programskem sistemu: informacije o problemu, ki ga rešujemo inf. o problemskem področju oz. domeni inf. o procesu, ki ga uporabljamo podatkovne in procesni modeli prototipi resursi projekta in zgodovina, organizacijski kontekst ... omogoča praktično uporabo koncepta ponovne uporabnosti (reusability) => dvig produktivnosti // ne gre le za ponovno uporabo izvorne kode modulov, temveč tudi projektnih planov, prototipnih modelov, specifikacij, ..

Cilji CASE Spremeniti način gradnje programskih sistemov Zagotoviti: 1. Interaktivno razvojno okolje //hitri odzivni časi, namenskimi resursi in zgodnje preverjanje/iskanje/ izločanje napak 2. Avtomatizacijo mnogih opravil razvoja in vzdrževanja 3. Vizualno programiranje // zmogljiv uporabniški vmesnika Končni cilj CASE tehnologije: s pomočjo integriranih programskih orodij avtomatizirati celoten življenjski cikel programske opreme

Kategorije CASE Upper CASE (front-end CASE) Lower CASE (back-end CASE) zgodnje faze življenjskega cikla (analiza in načrtovanje) Lower CASE (back-end CASE) kasnejše faze življenjskega cikla (implementacija in vzdrževanje) Integrirana (integrated) CASE

Nekatera orodja CASE Integracija CASE in RAD POSE (Picture Oriented Software Engineering) PowerDesigner Oracle Designer Rational ROSE Popkin System Architect CA Cool Case Studio DBDesigner Integracija CASE in RAD Microsoft Visual Studio (Enterprise) IBM VisualAge Borland Enterprise Studio Rapid Application Development

Mal’ za šalo, mal’ za res alias ‘Življenje nekega programa’ Programer je napisal in oddal program, za katerega verjame, da je brez napak. Program je testiran, najdenih 20 napak. Programer popravi 10 napak in pojasni ekipi za testiranje, da preostalih 10 napak niso pravi ‘hrošči’. Ekipa za testiranje ugotovi, da 5 popravkov ne deluje in odkrije 15 novih hroščev. Dokler ne ponorijo v prodaji in marketingu, se ponavlja naslednja zgodba: Preberi točko 3. Preberi točko 4. Zaradi pritiska s strani komercialistov in marketinga (najava novega produkta se je zanašala na veliko preoptimističen terminski načrt projekta), program dajo v uporabo. Uporabniki najdejo 137 novih hroščev. Originalnega programerja (po tem ko je dobil plačilo za svojo ‘umetnijo’) ni nikjer. Na novo zbrana programerska ekipa odpravi skoraj vseh 137 hroščev, vendar najde 468 novih. Originalni programer pošlje (slabo plačani) ekipi za testiranje kartici iz Dominikanske Republike in Jamajke. Celotna ekipa za testiranje da odpoved. S strani konkurenčen firme pride do sovražnega prevzema podjetja. Novi lastniki poberejo ves profit od zadnje verzije programa, ki je imela 783 hroščev. Novi CIO pride v nadzorni odbor. Najame programerja, ki naj ponovno naredi (zlepi) program iz ostankov starega. Programer napiše in odda program, za katerega verjame, da je brez napak. Vrni se na točko 2.