34
"ŠTA SE DOGAĐA U 'ŽIVOTU' SOFTVERA" Softverski inženjering 1 Životni ciklus softvera

Softverski inženjering

  • Upload
    ansob1

  • View
    77

  • Download
    1

Embed Size (px)

DESCRIPTION

Softverski procesi

Citation preview

Page 1: Softverski inženjering

" Š T A S E D O G A Đ A U ' Ž I V O T U ' S O F T V E R A "

Softverski inženjering

1

Životni ciklus softvera

Page 2: Softverski inženjering

Ciljevi predavanja

Softverski inženjering

2

Razmotriti 'životni ciklus' softvera Razumjeti softverski proces i njegove povezane

elemente Dovesti u vezu različite paradigme softverskog

inženjeringa

Page 3: Softverski inženjering

Slojevi softverskog inženjeringa

Softverski inženjering

3

fokus na "kvalitet"

model procesa

metode

alati

Page 4: Softverski inženjering

Softverski proces

Softverski inženjering

4

Aktivnosti u softverskim projektima Okarakteriziran općenitim procesnim okvirom

(common process framework) Okvirne aktivnosti (framework activity) – skupovi zadataka Krovne aktivnosti

"Zrelost procesa" (process maturity) omogućava razvoj kvalitetnih softverskih proizvoda

Page 5: Softverski inženjering

Općeniti procesni okvir

Softverski inženjering

5

Općeniti procesni okvirOkvirne aktivnosti

radni zadaciradni proizvodiprekretnice & rokovi isporukekontrolne tačke za QA

Krovne aktivnosti

Page 6: Softverski inženjering

Krovne aktivnosti

Softverski inženjering

6

Upravljanje softverskim projektom (software project management)

Formalni tehnički pregledi (formal technical review) Osiguranje kvaliteta softvera Upravljanje konfiguracijom softvera (software

configuration management) Priprema i produkcija dokumenta Upravljanje ponovnom upotrebom (reusability

management) Mjerenje Upravljanje rizikom (risk management)

Page 7: Softverski inženjering

Proces kao rješavanje problema

Softverski inženjering

7

statusquo

problemdefinition

technicaldevelopment

solutionintegration

Page 8: Softverski inženjering

Model procesa: Prilagodljivost

Softverski inženjering

8

Okvirne aktivnosti će uvijek biti primijenjene na svaki projekt ... MEĐUTIM

zadaci (i stepen strogosti) za svaku aktivnost će serazlikovati zavisno od: vrste projekta ("ulazna tačka" u model) karakteristika projekta procjene zdravog razuma; zajedničkog djelovanja projektnog

tima

Page 9: Softverski inženjering

Primarni cilj: Visok kvalitet

Softverski inženjering

9

Zapamtite:

Visok kvalitet = pravovremenost projekta

Zašto?

Manje ponovnog rada!

Page 10: Softverski inženjering

Sistematičan proces

Softverski inženjering

10

Problem

Modeli

Rješenje

Analiza

Dizajn

Razvoj

Testiranje

Page 11: Softverski inženjering

Generičke faze

Softverski inženjering

11

Faza definicije Fokus na ono 'šta' je softver

Faza razvoja Fokus na to 'kako' softver radi

Faza održavanja Fokus na 'izmjene' na softveru

Page 12: Softverski inženjering

Faza definicije

Softverski inženjering

12

Identificira informacije koje treba obraditi Identificira ponašanje sistema – funkcije i

performansu Određuje ograničenja, interfejse, kriterije validacije Glavni zadaci: Inženjering sistema Planiranje softverskog projekta Analiza zahtjeva

Page 13: Softverski inženjering

Faza razvoja

Softverski inženjering

13

Definira strukture podataka, provedbu djelovanja (function implementation), proceduralne detalje, interfejse

Prevodi dizajn u programski jezik Kako se testiranje obavlja Glavni zadaci: Dizajn softvera Generiranje kôda Testiranje softvera

Page 14: Softverski inženjering

Faza održavanja

Softverski inženjering

14

Ponovno primjenjuje faze definicije i razvoja na postojeći softver

Vrste izmjena: Korekcija Adaptacija Poboljšanje Prevencija

Page 15: Softverski inženjering

Vodopadni model

Softverski inženjering

15

System Engineering

Analysis

Design

Code

Testing

Maintenance

Page 16: Softverski inženjering

Karakteristike vodopadnog modela

Softverski inženjering

16

Klasični životni ciklus – najstarija i najviše korištenaparadigma

Aktivnosti 'teku' iz jedne faze u drugu Ako postoje korekcije, vraća se na prethodnu fazu i

'teče' otuda ponovo Glavne prednosti: Dobar za planiranje i dobro

definirane/ponovljene projekte

Page 17: Softverski inženjering

Problemi vodopadnog modela

Softverski inženjering

17

Često se stvarni projekti izvršavaju u sekvencama Svi zahtjevi možda neće biti eksplicitno formulirani

od kupca Kupac vidi samo rezultate nakon nekog vremena Razvojni inženjeri često kasne u određenim fazama

Page 18: Softverski inženjering

Prototipni model

Softverski inženjering

18

Kraj

Prikupljanje iprečišćavanje

zahtjeva

Izgradnjaprototipa

Brzidizajn

Korisničkaevaluacija

Prečišćavanjeprototipa

Inženjerskiproizvod

Početak

listento

customerbuild/revisemock-up

customertest-drivesmock-up

Page 19: Softverski inženjering

Karakteristike prototipnog modela

Softverski inženjering

19

Razvojni inženjer i kupac određuju ciljeve i nacrt zahtjeva (draft requirements)

Kupac brzo producira i evaluira prototip Prototip se zatim prečišćava i ponovo evaluira Proces se ponavlja, prije razvoja finalnog proizvoda Prednosti: Učešće kupca i bolji zahtjevi

Page 20: Softverski inženjering

Problemi prototipnog modela

Softverski inženjering

20

Problem 1: Kupac može vidjeti prototip kao radnimodel i očekivati brze rezultate

Problem 2: Brza izrada prototipa, npr. različitoperativni sistem ili programski jezik

Page 21: Softverski inženjering

Brzi razvoj aplikacija(Rapid Application Development – RAD)

Softverski inženjering

21

Modeliranjeposlovanja

Modeliranjepodataka

Modeliranjeprocesa

Stvaranjeaplikacije

Testiranje iTurnover

Tim #1 Modeliranjeposlovanja

Modeliranjepodataka

Modeliranjeprocesa

Stvaranjeaplikacije

Testiranje iTurnover

Tim #2

Vremenski period

Page 22: Softverski inženjering

Karakteristike RAD-a

Softverski inženjering

22

"High-speed" verzija vodopadnog modela Prvenstveno se koristi za aplikacije informacionih

sistema Zahtjevi se dobro razumiju, a potpuno

funkcionalan sistem se proizvede za kratko vrijeme Aplikacija je modularizirana – glavne funkcije

mogu biti završene za 3 mjeseca Zasebni timovi kompletiraju funkcije, a zatim ih

integriraju u cjelinu Zahtijeva ljudske resurse i predanost poslu

Page 23: Softverski inženjering

Inkrementalni model

Softverski inženjering

23

analysis design code test

System/informationengineering

analysis design code test

analysis design code test

analysis design code test

increment 2

increment 3

increment 4

increment 1

delivery of1st increment

delivery of2nd increment

delivery of3rd increment

delivery of4th increment

calendar time

Page 24: Softverski inženjering

Karakteristike inkrementalnog modela

Softverski inženjering

24

Softver se razdvaja u različite "inkremente" –potpune radne dijelove

Fokus na isporuci operativnog proizvoda sa svakiminkrementom – može biti evaluiran

Koristan kada nedostaje osoblja i može bitipredviđen za upravljanje tehničkim rizicima, npr. čekanje na novi hardver

Page 25: Softverski inženjering

Spiralni model

Softverski inženjering

25

CustomerCommunication

Planning

Construction & ReleaseCustomerEvaluation

Engineering

Risk Analysis

Page 26: Softverski inženjering

Karakteristike spiralnog modela

Softverski inženjering

26

Prvobitno ga je predložio Boehm, povezuje iterativnuprirodu prototypinga i sistematične aspektevodopadnog modela

Softver se razvija u serijama inkrementalnih izdanja Svaka iteracija proizvodi potpuniji proizvod Bolji menadžment pomoću analize rizika

Page 27: Softverski inženjering

Problemi spiralnog modela

Softverski inženjering

27

Može biti teško uvjeriti kupce da je razvoj kontrolabilan

Zahtijeva ekspertizu procjene rizika – glavni rizik će prouzrokovati probleme ako nije identificiran

Relativno nov i rijedak u praksi – ne može se odreditiperformansa

Page 28: Softverski inženjering

Komponentni model

Softverski inženjering

28

Identificiratikomponente

kandidate

Potražitikomponenteu biblioteci

Raspoloživo?

Ekstrahovatikomponente

Izgraditikomponente

Konstruiratisistem

da

ne

Page 29: Softverski inženjering

Karakteristike komponentnog modela

Softverski inženjering

29

Upotreba objektno-orijentirane tehnologije Komponente – klase koje enkapsuliraju i podatke i

algoritme Komponente se razvijaju da bi se ponovo mogle

koristiti Paradigma slična spiralnom modelu, ali inženjerska

aktivnost uključuje komponente Sistem se proizvodi sastavljanjem ispravnih

komponenti

Page 30: Softverski inženjering

Tehnike četvrte generacije (4GT)

Softverski inženjering

30

"Design" Strategy

Testing

Requirements gathering

Implementation using 4GL

Page 31: Softverski inženjering

Karakteristike 4GT-a

Softverski inženjering

31

Upotreba softverskih alata koji omogućavajusoftverskom inženjeru da specificira s/w karakteristike na višem nivou

Alati generiraju kôdove temeljene na specifikaciji Više vremena u dizajnu i testiranju – povećanje

produktivnosti Alati možda neće biti jednostavni za upotrebu,

generirani kôdovi možda neće biti efikasni

Page 32: Softverski inženjering

Ostali modeli procesa

Softverski inženjering

32

Komponentni model (component assembly model) – postupak koji treba primijeniti kada je ponovna upotreba cilj razvoja

Model konkurentnih procesa (concurrent process model) – prepoznaje da će različiti dijeloviprojekta biti na različitim mjestima u procesu

Formalne metode – postupak koji treba primijenitikada treba razviti matematsku specifikaciju

Softverski inženjering "bez greške" (cleanroom software engineering) – naglašava detekciju greške prije testiranja

Page 33: Softverski inženjering

Zaključak

Softverski inženjering

33

Paradigma korištena za razvoj softvera zavisi ododređenog broja faktora Ljudi – osoblje i korisnici Softverski proizvod Raspoloživi alati Okruženje

Postojeći modeli učinit će proces razvoja jasnijim, ali oni mogu prerasti u nove paradigme

Page 34: Softverski inženjering

Reference

Softverski inženjering

34

"Software Engineering: A Practitioner's Approach"5th Ed. by Roger S. Pressman, Mc-Graw-Hill, 2001

"Software Engineering" by Ian Sommerville, Addison-Wesley, 2001