1 / 29

PROGRAMSKO INŽENJERSTVO

PROGRAMSKO INŽENJERSTVO. Maja Štula. PROGRAMSKO INŽENJERSTVO - Definicija. Izvor - IEEE Stdandard br. 610 ( IEEE Standard Computer Dictionary ) iz 1990. god. (IEEE – Institute of Electronics and Electrical Engineering)

ila-golden
Download Presentation

PROGRAMSKO INŽENJERSTVO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PROGRAMSKO INŽENJERSTVO Maja Štula

  2. PROGRAMSKO INŽENJERSTVO - Definicija • Izvor - IEEE Stdandard br. 610 (IEEE Standard Computer Dictionary) iz 1990. god. (IEEE – Institute of Electronics and Electrical Engineering) • je primjena sistematskog, mjerljivog pristupa u razvoju, radu i održavanju softvera; tj. primjena inženjerstva na softver. (The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.) • Izvor - http://en.wikipedia.org/wiki • je područje kreiranja i održavanja softverskih aplikacija primjenom tehnologije i prakse iz područja računalne znanosti, upravljanja projektima, inženjerstva, područja primjene i drugih područja. (Software engineering is the profession that creates and maintains software applications by applying technologies and practices from computer science, project management, engineering, application domains, and other fields.)

  3. Početak • Pojam programsko inženjerstvo (software engineering) je kreiran 1968. godine na konferenciji o softverskim tehnologijama u Njemačkoj, Garmisch-Partenkirschen (1968 NATO Conf. On Software Technology). “What we need is software engineering.” – F.L.Bauer • Na konferenciji je ukazano da je kvaliteta razvijene programske podrške na nedopustivo niskoj razini. • Dogovoreno je konsenzusom da je potrebno ustanoviti novu inženjersku disciplinu tj. područje (engineering disciplines) koje će se baviti razvojem softvera tzv. software engineering. • Programsko inženjerstvo, kao i tradicionalna inženjerska područja, bavi se pitanjima razvoja proizvoda kroz prizmu pouzdanosti i troškova razvijenog proizvoda.

  4. Što je inženjerstvo? • Tradicionalno poimanje: • rješavanje stvarnih, realnih problema (kako prijeći određenu udaljenost → auto) • razumna rješenja po pitanju cijene, korištenja resursa, performansi proizvoda, ponovnog korištenja • zasniva se na znanosti: • matematičko modeliranje • mogućnost ponavljanja rezultata

  5. Što je inženjerstvo? • koristi kodirano znanje; znanje i iskustvo se prenosi: • zapisano u priručnicima • organizirano za razumijevanje i ponovno korištenje • postoji profesionalna odgovornost: • profesionalna etika • kodovi ponašanja • akreditacije i nadgledanje od strane profesionalnih udruženja (IEEE)

  6. NAČELA ETIKE I PROFESIONALNOG RADA U PROGRAMSKOM INŽENJERSTVU • Prema preporuci IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices te zajednički usvojena od udruga ACM i IEEE-CS kao norma za podučavanje i stručni rad u programskom inženjerstvu. • Izvorni dokument: Software Engineering Code of Ethics and Professional Practice (Version 5.2) • PREDGOVOR • Kratka verzija načela ponašanja predstavlja sažetak vrlo uopćenih težnji, dok puna verzija daje primjere i pojedinosti načina na koji te težnje mijenjaju ponašanje nas kao profesionalnih programskih inženjera. Bez ovih težnji pojedinosti ostaju pravnički suhoparne i zamorne, bez pojedinosti težnje bivaju zvučne ali isprazne, zajedno, međutim, težnje i pojedinosti tvore povezana načela ponašanja. • Programski inženjeri obvezuju se da će analizu, specifikaciju, oblikovanje, razvoj, provjeru i održavanje programskih proizvoda učiniti korisnom i poštovanom strukom. U skladu sa svojom obvezom prema zdravlju, sigurnosti i dobrobiti javnosti, programski inženjeri se obvezuju pridržavati slijedećih osam načela: • 1. JAVNI INTERES - Programski inženjeri djeluju u skladu s javnim interesom. • 2. KLIJENT I POSLODAVAC - Programski inženjeri djeluju u skladu s interesima njihovog klijenta ili poslodavca, a koji nisu u suprotnosti s javnim interesom. • 3. PROIZVOD - Programski inženjeri obvezuju se osigurati da njihovi proizvodi i prateće izmjene zadovoljavaju najviše moguće standarde struke. • 4. PROSUDBA - Programski inženjeri održavaju integritet i neovisnost u svojim stručnim prosudbama • 5. UPRAVLJANJE - Menedžeri i voditelji programskog inženjeringa potiču i promiču etički pristup upravljanju programskim razvojem i održavanjem. • 6. STRUKA - Programski inženjeri unapređuju čestitost i ugled struke u skladu s javnim interesom. • 7. KOLEGIJALNOST - Programski inženjeri međusobno se podržavaju i ophode pošteno. • 8. ODNOS PREMA SEBI - Programski inženjeri se kontinuirano stručno unapređuju i promiču etički pristup radu u svojoj struci.

  7. Programsko inženjerstvo • Procjenjuje se (izvor U.S. Bureau of Labor Statistics) da je u SAD-u zaposleno oko 675000 programskih inženjera i oko pola milijuna u EU i Aziji. • Otprilike polovica zaposlenih imaju diplomu iz tzv. računalnih znanosti (computer science), ali programsko inženjerstvo se počinje odvajati na način da danas već možete dobiti i diplomu iz računalnog inženjerstva. • Od 2004 u SAD-u oko 2000 fakulteta nudi diplomu iz računarstva, a oko 50 i diplomu iz softverskog inženjerstva.

  8. Programsko inženjerstvo • Programsko inženjerstvo bavi se razvojem, implementacijom i održavanjem VELIKIH softverskih sustava uz ispunjenje osnovnih zahtjeva: • na vrijeme u okviru sredstava • prihvatljive performanse • ispravan, pouzdan, robustan

  9. Veliki sustavi • više ljudi organiziranih u timove • pažljiva analiza, dizajn, implementacija i testiranje • > 100 KLOC (LOC – line of code) • cijena softvera nadmašuje cijenu hardvera • sustav je u uporabi više godina i mijenja se s vremenom

  10. Zašto je važno? • Cijena pogreške može biti velika: • bankrot proizvođača softvera • bankrot klijenata koji ovise o softveru • financijski gubici zbog bug-ova, nefleksibilnosti sustava ili vremena “nerada” sustava (downtime) • ljudski gubici u sigurnosno kritičnim sustavima • Profitabilnost softvera ovisi znatno o troškovima održavanja i upgrade softvera • zahtjevi za promjenjivim dizajnom • modularnost, evolucija, portabilnost, odvajanje podataka od funkcionalnosti

  11. Dobar softver KorisnikProgramer funcionalan na vrijeme ispravan u okviru sredstava pouzdan jednostavan za održavanje robustan dobro dizajniran korisničko sučelje dokumentacija

  12. Programsko inženjerstvo • U SAD-u tijekom 90-tih softver utječe na ¼ porasta BDP (oko 90 milijardi $ godišnje) i na šestinu porasta produktivnosti (oko 33 milijarde $ godišnje). • Programsko inženjerstvo dovelo je do porasta od $1 triliona u produktivnosti i svijetskoj ekonomiji. • Na svakih šest projekata iz područja razvoja programske podrške dva se napuštaju. • 75% velikih softverskih sustava imaju “operativne pogreške”.

  13. Programsko inženjerstvo • U lipnju 1994. godine IBM Consulting Group je pregledala 24 vodeće kompanije koje su razvijale velike i raspodijeljene programske sustave • 55% razvijenog softvera je premašilo projektiranu (planiranu) cijenu • 68% je razvijeno s vremenom većim nego predviđenim • 88% razvijenog softvera je trebalo redizajnirati.

  14. Programsko inženjerstvo • 1994. godine je Standish Group (http://standishgroup.com/index.php) izvršila analizu 8.380 projekata u državnom i privatnom sektoru u SAD-u i ustanovila: • 31% projekata razvoja programske podrške je obustavljeno prije završetka • 53% je kompletirano s prosječnom cijenom koja je za oko 189% premašila predviđenu cijenu • od ovih 53% samo 42% projekata je zadržalo njihove izvorne (originalne) značajke i funkcije • samo 9% projekata je kompletirano na vrijeme i s predviđenim budžetom.

  15. FBI – Virtual Case File • U IEEE Spectrumu od 9 mjeseca ova godine opisan je jedan takav projekt (koji spada u onih 31% obustavljenih). • Zašto je projekt propao? • VCF – Virtual Case File case-managment softver za pohranu podataka o slučajevima, za unakrsno pretraživanje podataka i sl.

  16. Što je softver? • Česta je pojava da se pojam programska podrška (software) izjednačava s pojmom računalni program (computer programs). To je dosta restriktivan – ograničen pogled. • Softver nisu samo programi već je to također pridružena dokumentacija kao i konfiguracijski podaci neophodni da bi ovi programi korektno radili. • Sustav programske podrške (kao konačni produkt) obični sadrži i brojne izdvojene programe primjerice: konfiguracijske datoteke, datoteke s dokumentacijom, datoteke s dokumentacijom za korisnika, adrese za “download” dokumentacije s posljednjim informacijama o produktu (configuration files, system documentation, user documentation,download recent product information). • Programski inženjeri su okupirani s razvojem softvera-a kao produkta za kojeg je zainteresirana korisnička populacija. • Dva su tipa softver produkata i to: • Generički produkti (Generic product). • Produkti po narudžbi ili po mjeri korisnikovih zahtjeva (Bespoke or customized product)

  17. Generički softver • U načelu to je samostalan– zaseban (stand-alone system) sustav koji je proizveden u nekoj software tvrtki i prodajnom mrežom isporučen korisnicima koji su spremni za svoje potrebe taj produkt kupiti. Ponekad se za ovu programsku podršku kaže da je to “shrink-wrapped software”. • Brojni su primjeri ovakvih produkata, primjerice: databases, word processors, drawing packages and project management tools.

  18. Produkti po mjeri korisnikovih zahtjeva • To su programski sustavi razvijeni po potrebama kupca. • Programska je podrška razvijena u funkciji posebnih zahtjeva kupca. • Brojni su primjeri ovakvih sustava. Evo nekih: control systems for electronic devices, systems written to support a particular business process, air traffic control systems

  19. Razlika između programskog inženjerstva i računalne znanosti • U suštini se računalna znanost (computer science) bavi teorijama i metodama koje se odnose na računalne i programske sustave, dok se programsko inženjerstvo (software engineering) bavi praktičkim problemima povezanim s proizvodnjom programske podrške. • Uspoređujući zanimanje programskog inženjera i inženjera elektrotehnike mogli bi zaključiti sljedeće: • Neka znanja iz domene računalnih znanosti su od izuzetne važnosti za programske inženjere, isto tako kako su i neke domene iz fizike od posebne važnosti za inženjere elektrotehnike.

  20. Razlika između programskog inženjerstva i sistemskog inženjerstva • Sistemsko inženjerstvo (system engineering) ili još preciznije na računalu utemeljeno sistemsko inženjerstvo je orijentirano na sve aspekte razvoja (development) i kasnije evolucije (evolution) složenih sustava u kojima software ima glavnu ulogu. • Sistemsko inženjerstvo se dakle odnosi na razvoj tehničke podrške (hardware development), oblikovanje procesa (process design), uspostavljanje sustava (system deployment) te konačno na programsko inženjerstvo. • Sistemski inženjeri su uključeni u specifikaciju sustava, definiranje svekolike arhitekture sustava, te konačno integracije – povezivanje različitih dijelova sustava u cjelinu. Oni su manje uključeni u inženjering komponenata sustava (primjerice: hardware, software...). • System engineering je dakle “starija” disciplina u odnosu na software engineering.

  21. Softverski proces • Skup aktivnosti kao i pridruženi im rezultati što se javljaju pri produkciji - proizvodnji programske podrške nazivamo procesom programske podrške ili softverskim procesom. • To su: • Specifikacija programske podrške (software specification) obuhvaća definiranje funkcionalnosti programske podrške i ograničenja u operativnom radu. • Razvoj programske podrške (software development) dovodi do konačnog produkata, a mora se odvijati u skladu sa specifikacijom programske podrške. • Legaliziranje programske podrške (software validation) odvija se u suglasju s željama kupca i odraz je njegovih zahtjeva. • Evolucija programske podrške (software evolution) mora se moći odvijati u suglasju s zahtjevima i potrebama kupca programske podrške.

  22. Model softverskog procesa • Model procesa programske podrške predstavlja pojednostavljeni opis procesa programske podrške koji je obično predstavljen za svaki posebni slučaj. Osim toga, model je uvijek pojednostavljeni opis fizikalne predodžbe, pa je tako i model procesa programske podrške apstrakcija aktualnog procesa kojega opisujemo. • Neki primjera tipova modela procesa programske podrške su: • Vodopadni model (workflow model) koji prikazuje dijelove aktivnosti u procesu s pripadnim ulazima, izlazima i međuzavisnostima. Aktivnosti i takvom modelu u načelu • predstavljaju aktivnosti čovjeka. • Tijeka podataka ili model djelatnosti (dataflow or activity model) predstavlja proces kao skup aktivnosti koje za posljedicu imaju podatkovnu transformaciju. Primjerice, ono prikazuje kako se ulazi u proces kao recimo specifikacija transformiraju u izlaz kao recimo oblikovanje. • Brojni su i različiti modeli ili paradigme za razvoj programske podrške. Primjerice: the waterfall approach, evolutionary development, formal transformation, system assembly from reusable components …

  23. Vodopadni model

  24. Vodopadni model • Izvorno je model prenesen iz već postojećih metoda inženjerskih procesa i prihvaćen u projektima programskog inženjerstva. • Temeljna mu je odrednica vidljivost svih faza u procesu razvoja softwarea. • Kako model osigurava kaskadni prijelaz s jedne na drugu fazu često se naziva i "waterfall" – vodopadni model. Brojne su varijante u primjenama ovog modela, ali zajednički je za sve da se proces odvija kroz faze: • definicija i analiza zahtijeva, • oblikovanje programske podrške i sustava, • implementacija i testiranje jedinica sustava, • integracija i testiranje sustava, • rad i održavanje. • Navedene faze čine životni ciklus programske podrške.

  25. Životni ciklus softvera Software life-cycle • The complete lifetime of a software system from initial conception through to final obsolescence (Dictionary of Computing, Third edition, 1991). Životni ciklus programske podrške • Izgradnja programskog sustava može se zorno usporediti s izgradnjom bilo kojeg inženjerskog proizvoda, npr. s izgradnjom građevinskog objekta. Njegov razvoj treba planirati, analizirati potrebe za njegovo uvođenje, zatim ga oblikovati, izraditi odnosno proizvesti, uvesti u rad, tijekom rada održavati. • Zato se i govori o životnom ciklusu programske podrške (Grupa autora: Poslovno računarstvo, 1998).

  26. Metode programskog inženjerstva • Metoda programskog inženjerstva se obično promatra kao strukturirani pristup razvoju softvera s ciljem da se omogući proizvodnja visoke kvalitete, ali tako da ta proizvodnja u pogledu cijene bude i najprihvatljivija. • Metode kao primjerice: Structured Analysis (DeMarco, 1978); Jackson System Development (Jackson,1983) su bile razvijene već ’70 godina prošlog stoljeća. Ove su metode nastojale identificirati temeljene funkcionalne komponente sustava. Nazivale su se i funkcijski orijentirane (function-oriented methods), a bile su dosta zastupljene u primjenama. • U ‘80 i ’90 ove function-oriented methods su bile dopunjene s objektno-orijentiranim metodama kao što su primjerice: Booch (Booch, 1994) and Rumbaugh (Rumbaugh, Blaha et al., 1991) metoda. • Ovi su se različiti pristupi kasnije integrirali u jedinstvene pristupe izgrađene oko Unified Modeling Language (UML) Fowler and Scott, 1997; Booch, Rumbaugh et al., 1999; Rumbaugh, Jacobson et al., 1999). • Nema idealne metode. Različite metode imaju i različita područja na kojima se uspješno primjenjuju. Primjerice, objektno-orijentirane metode će se obično koristiti u interaktivnim sustavima, ali neće u sustavima sa strogo definiranim zahtjevima za primjenu u realnom vremenu.

  27. CASE • CASE - Computer-Aided Software Engineering obuhvaća različite programske alate za podršku aktivnosti u softverskom procesu kao što su: requirements analysis, system modeling, debugging and testing. • Sve metode danas raspolažu s CASE tehnologijom kao što su različiti uređivači, moduli za analizu i provjeravanje modela sustava u suglasju s postavljenim pravilima, kao i generatori izvještaja koji pomažu u izgradnji sustava dokumentacije. • CASE alati također uključuju i generatore izvornog programskog koda. • CASE alat ima i svoju dekompoziciju. U vezi s tim oni koji podržavaju analizu i oblikovanje se ponekad nazivaju CASE alati visoke razine, jer u suštini podržavaju rane faze u razvoju software-a. CASE alate za podržavanje implementacije i testiranja (debuggers, program analysis systems, test case generators and program editors) često nazivamo CASE alatima niske razine.

  28. Cijena • Obično nije jednostavan generalan odgovor na ovo pitanje. • Naime precizna raspodjela financijskih sredstava ovisi kako o primijenjenom procesu tako i o softveru koji se razvija. • Ako je ukupna cijena razvoja složenog programskog sustava iskazana sa 100 jedinica, tada raspodjela ove cijene po sastavnim dijelovima obično bude kao na slici:

More Related