66
Postavljanje i održavanje Postavljanje i održavanje sustava programske podrške sustava programske podrške mr.sc. Tonći Dadić mr.sc. Tonći Dadić [email protected] Fakultet prirodoslovo-matamatičkih znanosti Fakultet prirodoslovo-matamatičkih znanosti Sveučilišta u Splitu Sveučilišta u Splitu Split, 2011/12 Split, 2011/12

Postavljanje i održavanje sustava programske podrške

Embed Size (px)

DESCRIPTION

Fakultet prirodoslovo-matamatičkih znanosti Sveučilišta u Splitu. Postavljanje i održavanje sustava programske podrške. mr.sc. Tonći Dadić [email protected]. Split, 2011/12. Postavljanje i održavanje sustava programske podrške. Program. Uloge izvršitelja i nalogodavca - PowerPoint PPT Presentation

Citation preview

Page 1: Postavljanje i održavanje sustava programske podrške

Postavljanje i održavanje sustava Postavljanje i održavanje sustava programske podrškeprogramske podrške

mr.sc. Tonći Dadićmr.sc. Tonći Dadić

[email protected]

Fakultet prirodoslovo-matamatičkih znanostiFakultet prirodoslovo-matamatičkih znanostiSveučilišta u SplituSveučilišta u Splitu

Split, 2011/12Split, 2011/12

Page 2: Postavljanje i održavanje sustava programske podrške

2

Program

Uloge izvršitelja i nalogodavcaUloge izvršitelja i nalogodavca Program - model neke domene koja je podskup realnog Program - model neke domene koja je podskup realnog

svijetasvijeta Model – zapisuje se izabranim formalnim sustavomModel – zapisuje se izabranim formalnim sustavom Model apstrahira (izostavlja) detalje nevažne za konačni Model apstrahira (izostavlja) detalje nevažne za konačni

rezultat, a uvažava one koji određuju konačni rezultatrezultat, a uvažava one koji određuju konačni rezultat Svojstva programa:Svojstva programa:

JednoznačnostJednoznačnost Razumljiv izvršiteljuRazumljiv izvršitelju Izvršitelj ga može izvesti, postupati prema programuIzvršitelj ga može izvesti, postupati prema programu

Programska podrška – računalni programProgramska podrška – računalni program

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 3: Postavljanje i održavanje sustava programske podrške

3

Programska podrška Računalni programRačunalni program Izvršitelj – stroj, računalni hardverIzvršitelj – stroj, računalni hardver Nalogodavci – programer, korisnikNalogodavci – programer, korisnik Model – klase, članovi klasa (instance, objekti), metode, Model – klase, članovi klasa (instance, objekti), metode,

svojstva (eng. properties)svojstva (eng. properties) Klasa – definira svojstva i metode zajedničke svim Klasa – definira svojstva i metode zajedničke svim

članovima klase.članovima klase. Odnosi klasa – (i)nasljeđivanje, (ii)agregacija Odnosi klasa – (i)nasljeđivanje, (ii)agregacija

(sadržavanje), (iii)dijeljenje zajedničkih objekata(sadržavanje), (iii)dijeljenje zajedničkih objekata Metoda – pravilo preslikavanja (transformacije) ulaznih Metoda – pravilo preslikavanja (transformacije) ulaznih

objekata u izlazne: ulazi objekata u izlazne: ulazi izlazi izlazi

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 4: Postavljanje i održavanje sustava programske podrške

4

Životni ciklus programa

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 5: Postavljanje i održavanje sustava programske podrške
Page 6: Postavljanje i održavanje sustava programske podrške

6

Vrste programa

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Program

Sistemski Primjenski

Jezgra OS

Mrežni sistemi

Kompilatori

Interaktivni Neinteraktivni

Kompilatori

Konzolni

Windows

Web

Servisi

Web servisi

Page 7: Postavljanje i održavanje sustava programske podrške

7

Postavljanje (eng. Deployment)

Proizvođač programske podrške (eng. Producer)Proizvođač programske podrške (eng. Producer) Potrošač programske podrške (eng. Consumer)Potrošač programske podrške (eng. Consumer) Razvojna (eng. Development) računala proizvođačaRazvojna (eng. Development) računala proizvođača DistribucijaDistribucija

transferni mediji (diskete, CD, DVD)transferni mediji (diskete, CD, DVD) transferna računala – web sjedišta proizvođačatransferna računala – web sjedišta proizvođača

Računala za podršku postavljanja (eng. Deployment system)Računala za podršku postavljanja (eng. Deployment system) UputeUpute RegistracijaRegistracija Prava korištenja (licenciranje)Prava korištenja (licenciranje)

Računala potrošačaRačunala potrošača

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 8: Postavljanje i održavanje sustava programske podrške

8

Inteligentno poučavanje programiranja temeljeno na semantičkom vrednovanju ciljnih programaInteligentno poučavanje programiranja temeljeno na semantičkom vrednovanju ciljnih programa

Postavljanje (eng. Deployment)

Transfer datoteka (izvršnog programa, sustava pomoći) s računala Transfer datoteka (izvršnog programa, sustava pomoći) s računala proizvođača na računala potrošačaproizvođača na računala potrošača

Registracija potrošača u bazi podataka proizvođačaRegistracija potrošača u bazi podataka proizvođača Korisnička podrškaKorisnička podrška Prava korištenja - ograničenja broja instalacija ili izvršavanjaPrava korištenja - ograničenja broja instalacija ili izvršavanja

Priprema postavki okruženja za uspješno izvođenjePriprema postavki okruženja za uspješno izvođenje AUTOEXEC.BAT, CONFIG.SYS (DOS), PATHAUTOEXEC.BAT, CONFIG.SYS (DOS), PATH *.ini datoteke sadrže podatke inicijalizacije programa čime se *.ini datoteke sadrže podatke inicijalizacije programa čime se

određuje djelovanje programaodređuje djelovanje programa Registri (eng. Registry) – strukturirana datoteka s podacima Registri (eng. Registry) – strukturirana datoteka s podacima

koji određuju djelovanje programakoji određuju djelovanje programa Uklanjanje (eng. uninstall) – ukloniti program i sve podatke na Uklanjanje (eng. uninstall) – ukloniti program i sve podatke na

sustavu koje koristi samo taj program, tj. dovođenje sustava u sustavu koje koristi samo taj program, tj. dovođenje sustava u stanje kao da program nikada nije bio postavljen na sustavstanje kao da program nikada nije bio postavljen na sustav

Page 9: Postavljanje i održavanje sustava programske podrške

9

Parametri programa - postavke okruženja Okruženje programa – postavke sustava instalacije: Okruženje programa – postavke sustava instalacije:

Operacijski sustavOperacijski sustav Stablo direktorijaStablo direktorija Točka instalacije programaTočka instalacije programa Spoj sa servisima, npr. sustav baze podataka, e-mail poslužiteljSpoj sa servisima, npr. sustav baze podataka, e-mail poslužitelj Pristup računalima distribuiranog sustava (putem mreže)Pristup računalima distribuiranog sustava (putem mreže)

Razvojno okruženje se razlikuje od eksplotacijskogRazvojno okruženje se razlikuje od eksplotacijskog Ne moraju sva eksploatacijska računa biti jednako postavljenjaNe moraju sva eksploatacijska računa biti jednako postavljenja Tijekom životnog ciklusa programa okruženje se može mijenjatiTijekom životnog ciklusa programa okruženje se može mijenjati Prilagodljivost programa okruženju (bez ponovnog kompiliranja)Prilagodljivost programa okruženju (bez ponovnog kompiliranja) Konfiguracijska XML datoteka sadrži lako dostupne parametre koji Konfiguracijska XML datoteka sadrži lako dostupne parametre koji

određuje konfiguraciju instalacijeodređuje konfiguraciju instalacije Registry – baza podataka s parametrima – nije lako dostupnaRegistry – baza podataka s parametrima – nije lako dostupna

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 10: Postavljanje i održavanje sustava programske podrške

10

Poruke programa

Interaktivni ili nadzirani programi –Interaktivni ili nadzirani programi – vezani za korisnika prijavljenog sustavuvezani za korisnika prijavljenog sustavu greška se može desiti samo u vremenu interakcije s korisnikomgreška se može desiti samo u vremenu interakcije s korisnikom poruke korisnikuporuke korisniku

Neinteraktivni programi (servisi) – Neinteraktivni programi (servisi) – nisu vezani za konkretnog korisnika prijavljenog sustavunisu vezani za konkretnog korisnika prijavljenog sustavu rade “automatski”rade “automatski” kada opslužuju konkretnog korisnika – greške su vezane za sustav, a kada opslužuju konkretnog korisnika – greške su vezane za sustav, a

ne akcije korisnikane akcije korisnika poruke zapisuje u datoteku – poruke zapisuje u datoteku – log fajl, event fajllog fajl, event fajl administrator programa naknadno analizira zapise – administrator programa naknadno analizira zapise – event viewerevent viewer

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 11: Postavljanje i održavanje sustava programske podrške

11

Sustav programske podrške

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 12: Postavljanje i održavanje sustava programske podrške

12

Sustav programske podrške Operacijski sustav – skup funkcionalnosti zajednički Operacijski sustav – skup funkcionalnosti zajednički

mnogim primjenskim programima (aplikacijama)mnogim primjenskim programima (aplikacijama) DLL – dinamički poveziva knjižnica izvršnog koda DLL – dinamički poveziva knjižnica izvršnog koda

metodametoda DLL – se obično (ne nužno) nalaze u imeniku DLL – se obično (ne nužno) nalaze u imeniku

WINDOWS\system32WINDOWS\system32 Aplikacije pozivaju metode definirane u DLL preko imena Aplikacije pozivaju metode definirane u DLL preko imena

metode i njenih argumenatametode i njenih argumenata DLL-ove koje treba definira aplikacija:DLL-ove koje treba definira aplikacija:

Implicitno u svom prologu – s diska u radnu memoriju računala Implicitno u svom prologu – s diska u radnu memoriju računala učitava operacijski sustavučitava operacijski sustav

Eksplicitno – aplikacija učitava DLL kad ga treba, naredbom Eksplicitno – aplikacija učitava DLL kad ga treba, naredbom koju zapisuje programer, prije poziva metodakoju zapisuje programer, prije poziva metoda

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 13: Postavljanje i održavanje sustava programske podrške

13

Sustav programske podrške Statičko povezivanje – aplikacija sadrži knjižnicu Statičko povezivanje – aplikacija sadrži knjižnicu

definicija metoda koje treba i donosi je na sustav definicija metoda koje treba i donosi je na sustav postupkom instalacijepostupkom instalacije Prednosti : (i)aplikacija sigurno pronalazi potrebnu metodu, Prednosti : (i)aplikacija sigurno pronalazi potrebnu metodu,

(ii)metoda ispunja pogodbu s aplikacijom (radi točno ono što je (ii)metoda ispunja pogodbu s aplikacijom (radi točno ono što je radila u vrijeme razvoja programaradila u vrijeme razvoja programa

Mane : (i)prostor na diskovima, (ii)održavanje promjena Mane : (i)prostor na diskovima, (ii)održavanje promjena knjižniceknjižnice

Dinamičko povezivanje – mnoge aplikacije dijele Dinamičko povezivanje – mnoge aplikacije dijele zajedničku knjižnicuzajedničku knjižnicu Prednosti: (i)manji prostor na diskovima, (ii)održavanje Prednosti: (i)manji prostor na diskovima, (ii)održavanje

promjenapromjena Mane: (i) knjižnica na ciljnom računalu možda ne pstoji, (ii) ne Mane: (i) knjižnica na ciljnom računalu možda ne pstoji, (ii) ne

definira očekivanu funkciju, (iii)funkcija ne ispunja očekivanjedefinira očekivanu funkciju, (iii)funkcija ne ispunja očekivanje

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 14: Postavljanje i održavanje sustava programske podrške

14

Mogući problemi dinamičkih knjižnica

Postavljanjem programa A prekrije se dio knjižniceprograma B

Knjižnica A nema definicije metoda koje program B poziva

Knjižnica A ima definicje metode koje B poziva, ali

def(A) != def(B)

Rezultat = raste cijena korisničke potpore !

Program ne nalazi očekivanu knjižnicu na računalu potrošača

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 15: Postavljanje i održavanje sustava programske podrške

15

Standardizacija

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 16: Postavljanje i održavanje sustava programske podrške

16

Standardizacija

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 17: Postavljanje i održavanje sustava programske podrške

17

Objava (eng.Release) Priprema programskog paketa za distribucijuPriprema programskog paketa za distribuciju

Instalaciju na korisničkim računalimaInstalaciju na korisničkim računalima Uklanjanje – deinstalaciju s računalaUklanjanje – deinstalaciju s računala

Rješenje problema nekompatibilnosti i konflikataRješenje problema nekompatibilnosti i konflikata Uključivanje dodatnih programaUključivanje dodatnih programa Uključivanje – isključivanje komponenti u distribucijski Uključivanje – isključivanje komponenti u distribucijski

paketpaket Prilagodba instalacijskog korisničkog sučeljaPrilagodba instalacijskog korisničkog sučelja Ugradnja mehanizma prijave i licenciranjaUgradnja mehanizma prijave i licenciranja Automatizacija konfiguracije na ciljnom računaluAutomatizacija konfiguracije na ciljnom računalu

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 18: Postavljanje i održavanje sustava programske podrške

18

Priprema instalacijskog paketa

1. Otvaranje rješenja (Solution u Visual Studiu)

2. Dodavanje instalera (Advanced Installer Project) u rješenje

3. Kreiranje glavnog instalacijskog paketa (the first install package)

4. Uređivanje instalacijskog projekta

5. Uključivanje dodatnih projekata u instalacijski paket

6. Stvaranje konačnog instalacijskog paketa

7. Utvrđivanje međuzavisnosti komponenti

8. Testiranje instalacijskog paketa

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 19: Postavljanje i održavanje sustava programske podrške

19

Priprema instalacijskog paketa

http://www.advancedinstaller.com/user-guide/tutorial-ai-ext-vs.htmlhttp://www.advancedinstaller.com/user-guide/tutorial-ai-ext-vs.html http://support.microsoft.com/kb/307353http://support.microsoft.com/kb/307353 Otvoriti rješenje (npr. u VS 2010)Otvoriti rješenje (npr. u VS 2010)

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 20: Postavljanje i održavanje sustava programske podrške

20

Advanced Installer

• Iz dijaloga “New Project” Visual Studia izabrati Advanced Iz dijaloga “New Project” Visual Studia izabrati Advanced Installer ProjectInstaller Project

• U polju Solution izabrati opciju Add to solutionU polju Solution izabrati opciju Add to solution• Upisati ime projektaUpisati ime projekta

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 21: Postavljanje i održavanje sustava programske podrške

21

Advanced Installer U projekt se automatski dodaju izgrađene datoteke U projekt se automatski dodaju izgrađene datoteke

rješenjarješenja

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 22: Postavljanje i održavanje sustava programske podrške

22

Kreiranje prvog instalacijskog paketa• U ovom koraku se kreira instalacijski paket bez modifikacije U ovom koraku se kreira instalacijski paket bez modifikacije

postavki instalerapostavki instalera• Build Solution – kompajliraju se svi projekti rješenjaBuild Solution – kompajliraju se svi projekti rješenja• Izlazi kompilatora se uključuju u Advanced Installer ProjectIzlazi kompilatora se uključuju u Advanced Installer Project• *.msi je instalacijski paket*.msi je instalacijski paket

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 23: Postavljanje i održavanje sustava programske podrške

23

Modifikacije instalacijskog projekta• Pomoću preglednika (viewera) koji dolazi uz Advanced Installer Pomoću preglednika (viewera) koji dolazi uz Advanced Installer

Project možemo postavitiProject možemo postaviti– Detalje o proizvoduDetalje o proizvodu– Uvjete instalacijeUvjete instalacije– Parametre instalacijeParametre instalacije

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 24: Postavljanje i održavanje sustava programske podrške

24

Vrednovanje sukladnosti• Let's suppose we have an Let's suppose we have an EnterpriseEnterprise edition of Advanced Installer. By default, the  edition of Advanced Installer. By default, the

installer project will be created based on ainstaller project will be created based on aFreewareFreeware license. Since we want to use  license. Since we want to use features from the features from the EnterpriseEnterprise edition, like selecting a theme for the installation dialogs,  edition, like selecting a theme for the installation dialogs, we will need to upgrade our project type:we will need to upgrade our project type:

• Press the [ Edit in Advanced Installer ] button to open your installer project in Press the [ Edit in Advanced Installer ] button to open your installer project in Advanced InstallerAdvanced Installer

• From the “Project” menu select “Options...”From the “Project” menu select “Options...”• Navigate to the Project Type Tab and select Navigate to the Project Type Tab and select EnterpriseEnterprise• Press the [ OK ] buttonPress the [ OK ] button• Now, that we have an Now, that we have an EnterpriseEnterprise project we have full access to all the available  project we have full access to all the available

Enterprise features.Enterprise features.• In order to change the dialog theme go to Themes PageIn order to change the dialog theme go to Themes Page• From the right view select the desired theme and variation for your installer dialogsFrom the right view select the desired theme and variation for your installer dialogs• Save the project and exit Advanced InstallerSave the project and exit Advanced Installer• Visual Studio will ask you if you want to reload the installer project since it was Visual Studio will ask you if you want to reload the installer project since it was

modified. Press the [ Yes ] button.modified. Press the [ Yes ] button.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 25: Postavljanje i održavanje sustava programske podrške

25

Dodavanje projekata u instalaciju• If an Advanced Installer Project is added to a solution it will If an Advanced Installer Project is added to a solution it will

automatically import the build output and all useful information automatically import the build output and all useful information related to the projects from the solution. If later, the existing projects related to the projects from the solution. If later, the existing projects are modified or another project is added to the solution are modified or another project is added to the solution the the importimportoperation must be redone.operation must be redone.

• From the “New Project” dialog of Visual Studio select Visual C# From the “New Project” dialog of Visual Studio select Visual C# project typeproject type

• In the “Solution” field select Add to solution optionIn the “Solution” field select Add to solution option• Press the [ OK ] button. The new project will be added to the Press the [ OK ] button. The new project will be added to the

solutionsolution• Rebuild the solutionRebuild the solution• Even if three files will be generated the install package will Even if three files will be generated the install package will

contain contain onlyonly the original project from the solution. The other project  the original project from the solution. The other project build output will not be included. An easy way to see this is from the build output will not be included. An easy way to see this is from the “Files and folders” page.“Files and folders” page.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 26: Postavljanje i održavanje sustava programske podrške

26

Dodavanje projekata u instalaciju

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 27: Postavljanje i održavanje sustava programske podrške

27

Kreiranje konačnog instalacijskog paketa• To include the second project in the installer package:To include the second project in the installer package:• Select the Installer_Project.aip file from the "Solution Explorer"Select the Installer_Project.aip file from the "Solution Explorer"• From the context menu select the Redo import optionFrom the context menu select the Redo import option• Check that both projects output builds are included in the installer package from the Check that both projects output builds are included in the installer package from the

“Files and Folders” page“Files and Folders” page

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 28: Postavljanje i održavanje sustava programske podrške

28

Međuzavisnosti projekata

• Advance Installer Project se mora izgraditi Advance Installer Project se mora izgraditi zadnji:zadnji:– Izabrati Installer ProjectIzabrati Installer Project– Izabrati opciju Project DependenciesIzabrati opciju Project Dependencies– Izabrati projekte u “Depends on”Izabrati projekte u “Depends on”

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 29: Postavljanje i održavanje sustava programske podrške

29

Vrednovanje sukladnosti Potreba za programskom podrškomPotreba za programskom podrškom

Nabavna cijena : dobitak korištenjemNabavna cijena : dobitak korištenjem Testiranje postavljanjaTestiranje postavljanja Prilagodba postojećih sustava programske podrškePrilagodba postojećih sustava programske podrške

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 30: Postavljanje i održavanje sustava programske podrške

30

Vrednovanje Je li softver potreban ?Je li softver potreban ? Je li nadmašena točka povratka ulaganja (TPU, eng. Je li nadmašena točka povratka ulaganja (TPU, eng.

ROI) postojeće programske podrške ?ROI) postojeće programske podrške ? Postoji li razumna TPU za nastale prateće troškovePostoji li razumna TPU za nastale prateće troškove Omogućuje li isporučitelj široku skalu metoda distribucijeOmogućuje li isporučitelj široku skalu metoda distribucije Može li se učinkovito upravljati ili modificirati postupak Može li se učinkovito upravljati ili modificirati postupak

instalacijeinstalacije Postoje li interne mogućnosti izgradnje instalacijskih Postoje li interne mogućnosti izgradnje instalacijskih

paketa prilagođenih potrebama organizacijepaketa prilagođenih potrebama organizacije Radi li program na različitim platformama (hardver + OS)Radi li program na različitim platformama (hardver + OS)

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 31: Postavljanje i održavanje sustava programske podrške

31

Vrednovanje Tko treba program ->broj korisnika (licenca/cijena)Tko treba program ->broj korisnika (licenca/cijena) Planiranje prema operacijskim sustavima u organizacijiPlaniranje prema operacijskim sustavima u organizaciji Testiranje kompatibilnostiTestiranje kompatibilnosti

Raspoloživost resursa za pouzdano testiranjeRaspoloživost resursa za pouzdano testiranje Je li novi program sukladan (kompatibilan) postojećim Je li novi program sukladan (kompatibilan) postojećim

programimaprogramima Postoje li konflikti sa zajedničkim resursimaPostoje li konflikti sa zajedničkim resursima Je li potrebna promjena (verzije) operacijskog sustavaJe li potrebna promjena (verzije) operacijskog sustava Učinak programa na mrežni prometUčinak programa na mrežni promet

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 32: Postavljanje i održavanje sustava programske podrške

32

Računanje točke povratka ulaganja

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 33: Postavljanje i održavanje sustava programske podrške

33

Automatizacija instalacije Mogućnost interne prilagodbe potrebama organizacijeMogućnost interne prilagodbe potrebama organizacije

za svaku platformu u organizacijiza svaku platformu u organizaciji može li biti završeno na vrijeme prema planu – rasporedumože li biti završeno na vrijeme prema planu – rasporedu

PrilagoditiPrilagoditi Riješiti neslaganja i konflikteRiješiti neslaganja i konflikte Staviti u paket dodatni programStaviti u paket dodatni program Dodati ili ukloniti komponente u paketDodati ili ukloniti komponente u paket Ukloniti ili prilagoditi korisničko sučelje prema potrebama Ukloniti ili prilagoditi korisničko sučelje prema potrebama

korisnikakorisnika Omogućiti vlastitom softveru mehanizam distribucijeOmogućiti vlastitom softveru mehanizam distribucije Osigurati dodatnu instalacijsku konfiguracijuOsigurati dodatnu instalacijsku konfiguraciju

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 34: Postavljanje i održavanje sustava programske podrške

34

Inteligentno poučavanje programiranja temeljeno na semantičkom vrednovanju ciljnih programaInteligentno poučavanje programiranja temeljeno na semantičkom vrednovanju ciljnih programa

Isporuka (eng. Delivery) Stvaranje kopije (eng. Image) instalacije na računalu Stvaranje kopije (eng. Image) instalacije na računalu

korisnikakorisnika Isporuka preko medija CD / DVDIsporuka preko medija CD / DVD Isporuka preko interneta ili intranetaIsporuka preko interneta ili intraneta

““Push” – upravljanje postavljanjem sa središnjeg računala Push” – upravljanje postavljanjem sa središnjeg računala putem mrežeputem mreže

““Pull” – obavijest korisnika e-mailom s URL instalacijske kopijePull” – obavijest korisnika e-mailom s URL instalacijske kopijeda samostalno uradi postavljanje “klikom”da samostalno uradi postavljanje “klikom”

Pilot proces – testiranje postupka postavljanja na uzorkuPilot proces – testiranje postupka postavljanja na uzorku

Page 35: Postavljanje i održavanje sustava programske podrške

35

Isporuka

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 36: Postavljanje i održavanje sustava programske podrške

36

Održavanje Inventura opreme – hardvera i softvera po računalimaInventura opreme – hardvera i softvera po računalima Isporuka – potreba za naknadnom instalacijomIsporuka – potreba za naknadnom instalacijom Licenciranje – raspoložive / iskorištene dozvoleLicenciranje – raspoložive / iskorištene dozvole IzvještavanjeIzvještavanje ““Werhausing” – fizički skladišni prostor za isporuku Werhausing” – fizički skladišni prostor za isporuku

kopija (Image) instalacijekopija (Image) instalacije Održavanje komponenti – ograničeno, automatizirano Održavanje komponenti – ograničeno, automatizirano

održavanje raspodijeljenih računalnih sustava i održavanje raspodijeljenih računalnih sustava i programaprograma

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 37: Postavljanje i održavanje sustava programske podrške

37

Održavanje

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 38: Postavljanje i održavanje sustava programske podrške

38

Verifikacija Program je korektan ako ispunjava programsku specifikaciju, a to je:Program je korektan ako ispunjava programsku specifikaciju, a to je:

Svaki specificirani vektor programskih ulaza transformira u Svaki specificirani vektor programskih ulaza transformira u specificirani vektor programskih izlaza.specificirani vektor programskih izlaza.

Ima specificirano ponašanje, primjerice da završava.Ima specificirano ponašanje, primjerice da završava. Neka program ostvaruje funkciju (z, w) = f(x, y), pri čemu su D(x), Neka program ostvaruje funkciju (z, w) = f(x, y), pri čemu su D(x),

D(y), D(z) i D(w) domene varijabli određene tipom podatka.D(y), D(z) i D(w) domene varijabli određene tipom podatka. Skup mogućih ulaznih vektora: D(x) x D(y).Skup mogućih ulaznih vektora: D(x) x D(y). Skup mogućih izlaznih vektora: D(z) x D(w).Skup mogućih izlaznih vektora: D(z) x D(w). Svaki specificirani vektor ulaza zadovoljava logičku tvrdnju: P(x, y).Svaki specificirani vektor ulaza zadovoljava logičku tvrdnju: P(x, y). Svaki specificirani vektor izlaza zadovoljava logičku tvrdnju: Q(z, w).Svaki specificirani vektor izlaza zadovoljava logičku tvrdnju: Q(z, w). Program S je korektan ako je Q istinito uvijek kada je P istinito, što Program S je korektan ako je Q istinito uvijek kada je P istinito, što

iskazujemo Hoareovom trojkom:iskazujemo Hoareovom trojkom: {P(x, y)} S {Q(z, w)}{P(x, y)} S {Q(z, w)}

Verifikacija: postupak kojim se utvrđuje da S proizvodi izlaze z i w koji Verifikacija: postupak kojim se utvrđuje da S proizvodi izlaze z i w koji zadovoljavaju Q, uvijek kada ulazi x i y zadovoljavaju P.zadovoljavaju Q, uvijek kada ulazi x i y zadovoljavaju P.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 39: Postavljanje i održavanje sustava programske podrške

39

Vrste specifikacije

Neformalna specifikacijaNeformalna specifikacija: iskazana nekim neformalnim sustavom, : iskazana nekim neformalnim sustavom, najčešće opisana prirodnim jezikom.najčešće opisana prirodnim jezikom.

Primjer: Napisat proceduru koja ima dva ulazna i dva izlazna Primjer: Napisat proceduru koja ima dva ulazna i dva izlazna argumenta koji su prirodni brojevi (iz skupa argumenta koji su prirodni brojevi (iz skupa NN00), tako da su njeni ), tako da su njeni

izlazi količnik i ostatak cjelobrojnog dijeljenja prvog i drugog ulaza. izlazi količnik i ostatak cjelobrojnog dijeljenja prvog i drugog ulaza. Program koji poziva proceduru osigurava da drugi ulaz nije nula.Program koji poziva proceduru osigurava da drugi ulaz nije nula.

Formalna specifikacijaFormalna specifikacija: iskazana nekim formalnim sustavom koji : iskazana nekim formalnim sustavom koji ima određenu sintaksu i semantiku (značenje) svojih iskaza, ima određenu sintaksu i semantiku (značenje) svojih iskaza, primjerice predikatnom logikom prvog stupnja.primjerice predikatnom logikom prvog stupnja.

Primjer: Napisati proceduru: (k, m) Primjer: Napisati proceduru: (k, m) f( x, y) tako da vrijedi: f( x, y) tako da vrijedi: P(x, y): (x, y) e P(x, y): (x, y) e NN00 && y > 0. && y > 0. Q(z, w): x = y * k + m && m >= 0 && m < y.Q(z, w): x = y * k + m && m >= 0 && m < y.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

x

Page 40: Postavljanje i održavanje sustava programske podrške

40

Specifikacija i implementacija

Pogodba između kupca i prodavača u realnom životu: kad prodavač Pogodba između kupca i prodavača u realnom životu: kad prodavač meni osigura preduvjet, a to je isporuči robu, ja njemu osiguravam meni osigura preduvjet, a to je isporuči robu, ja njemu osiguravam postuvjet: plaćanje.postuvjet: plaćanje.

Pogodba između programa koji poziva proceduru i procedure f: kad Pogodba između programa koji poziva proceduru i procedure f: kad god program osigura uvjet iskazan formulom P, procedura f mora god program osigura uvjet iskazan formulom P, procedura f mora zadovoljiti uvjet iskazan formulom Q. Ako to vrijedi program je zadovoljiti uvjet iskazan formulom Q. Ako to vrijedi program je korektan, inače je nekorektan.korektan, inače je nekorektan.

Preduvjet: formula P koja mora biti zadovoljena pri pozivu Preduvjet: formula P koja mora biti zadovoljena pri pozivu procedure f.procedure f.

Postuvjet: formula Q koju procedura f mora zadovoljiti na kraju svog Postuvjet: formula Q koju procedura f mora zadovoljiti na kraju svog izvršavanja uvijek kada je P zadovoljen.izvršavanja uvijek kada je P zadovoljen.

Specifikacija ne određuje implementaciju, odnosno način na koji će Specifikacija ne određuje implementaciju, odnosno način na koji će procedura ostvariti zadovoljenje postuvjeta Q.procedura ostvariti zadovoljenje postuvjeta Q.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

x

Page 41: Postavljanje i održavanje sustava programske podrške

41

Specifikacija i implementacija

Primjer implementacije (k, m) Primjer implementacije (k, m) f1(x, y): f1(x, y):

1.1. k := x div y;k := x div y;

2.2. m := x mod y;m := x mod y;

Primjer implementacije (k, m) Primjer implementacije (k, m) f2(x, y): f2(x, y):

1.1. k := 0;k := 0;

2.2. m := x;m := x;

3.3. dok jedok je m >= y m >= y činitičiniti

1.1. m := m – y;m := m – y;

2.2. k := k + 1;k := k + 1;

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

x

Page 42: Postavljanje i održavanje sustava programske podrške

42

Verifikacija: provjera korektnosti

Lažna uzbuna:Lažna uzbuna: postupkom verifikacije je korektan postupkom verifikacije je korektan program proglašen nekorektnim.program proglašen nekorektnim.

Propuštena logička pogreška (uzbuna):Propuštena logička pogreška (uzbuna): logička logička pogreška postoji u programu, ali postupkom verifikacije pogreška postoji u programu, ali postupkom verifikacije nije otkrivena.nije otkrivena.

Vrste verifikacije:Vrste verifikacije: TestiranjeTestiranje Formalna verifikacijaFormalna verifikacija

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

x

Page 43: Postavljanje i održavanje sustava programske podrške

43

Provjera korektnosti testiranjem

Testiranje - neformalna verifikacija:Testiranje - neformalna verifikacija: Izbor podskupa ulaznih vektora,Izbor podskupa ulaznih vektora, Izvršavanje programa s izabranim podskupom ulaznih vektora.Izvršavanje programa s izabranim podskupom ulaznih vektora. Provjera da postignuti podskup izlaznih vektora zadovoljava Provjera da postignuti podskup izlaznih vektora zadovoljava

specifikaciju.specifikaciju. Testiranje po principu crne kutije: nasumični izbor podskupa Testiranje po principu crne kutije: nasumični izbor podskupa

ulaznih vektora:ulaznih vektora: Nedostatak: program (proceduru) najčešće nije moguće izvršiti s Nedostatak: program (proceduru) najčešće nije moguće izvršiti s

potpunim skupom ulaznih vektora jer ih ima mnogo.potpunim skupom ulaznih vektora jer ih ima mnogo. Nasumično izabrani podskup ulaznih vektora nužno ne osigurava Nasumično izabrani podskup ulaznih vektora nužno ne osigurava

izvršavanje svih staza programa.izvršavanje svih staza programa. Testiranje po principu staklene kutije:Testiranje po principu staklene kutije:

Izbor kritičnog podskupa ulaznih vektora: osigurava izvršavanje svih Izbor kritičnog podskupa ulaznih vektora: osigurava izvršavanje svih staza programa.staza programa.

Kritični podskup ulaznih vektora se utvrđuje inspekcijom koda.Kritični podskup ulaznih vektora se utvrđuje inspekcijom koda.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

x

Page 44: Postavljanje i održavanje sustava programske podrške

44

Formalna verifikacija

Primjenjuju se postupci utemeljeni na logici i matematički Primjenjuju se postupci utemeljeni na logici i matematički rigoroznim metodama.rigoroznim metodama.

Zahtijeva formalnu specifikaciju programa koju nije lako napisati.Zahtijeva formalnu specifikaciju programa koju nije lako napisati. Provodi se statički – bez izvršavanja programa.Provodi se statički – bez izvršavanja programa. Osigurava pouzdanu informaciju o korektnosti programa, tj. ne Osigurava pouzdanu informaciju o korektnosti programa, tj. ne

proizvodi lažne uzbune i nema propuštenih uzbuna.proizvodi lažne uzbune i nema propuštenih uzbuna. Rezultat formalne verifikacije odgovara rezultatu iscrpnog testiranja Rezultat formalne verifikacije odgovara rezultatu iscrpnog testiranja

programa sa svim mogućim ulaznim vektorima.programa sa svim mogućim ulaznim vektorima. Manualna formalna verifikacija: provodi je čovjek.Manualna formalna verifikacija: provodi je čovjek. Automatska formalna verifikacija: provodi je stroj u vrijeme Automatska formalna verifikacija: provodi je stroj u vrijeme

oblikovanja programa, tako da je isporučeni program zajamčeno oblikovanja programa, tako da je isporučeni program zajamčeno korektan.korektan.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

x

Page 45: Postavljanje i održavanje sustava programske podrške

45

Automatska formalna verifikacija

Automatska formalna verifikacija je još uvijek u fazi istraživanja.Automatska formalna verifikacija je još uvijek u fazi istraživanja. Primjeri alata koji provode formalnu verifikaciju:Primjeri alata koji provode formalnu verifikaciju:

MS Spec#, MS Spec#, MS Dafny.MS Dafny.

Formalna specifikacija se zapisuje u programu zajedno s Formalna specifikacija se zapisuje u programu zajedno s instrukcjama.instrukcjama.

Programski jezik podržava instrukcije i formule specifikacije, Programski jezik podržava instrukcije i formule specifikacije, primjerice:primjerice: MS Spec# proširuje C# formulama specifikacije.MS Spec# proširuje C# formulama specifikacije.

Oslanja se na alat koji može automatski dokazati zadovoljenje Oslanja se na alat koji može automatski dokazati zadovoljenje formula predikatne logike prvog stupnja.formula predikatne logike prvog stupnja.

SMT rješavač (SMT rješavač (eng. solvereng. solver): automatski dokazuje zadovoljenje ): automatski dokazuje zadovoljenje ograničenja zapisanih formulama predikatne logike prvog stupnja.ograničenja zapisanih formulama predikatne logike prvog stupnja.

SAT rješavač (SAT rješavač (eng. solvereng. solver): automatski dokazuje zadovoljenje ): automatski dokazuje zadovoljenje ograničenja zapisanih formulama propozicijski (Booleove) logike.ograničenja zapisanih formulama propozicijski (Booleove) logike.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

x

Page 46: Postavljanje i održavanje sustava programske podrške

46

Metode formalne verifikacje

Simboličko izvršavanje:Simboličko izvršavanje: Instrukcija čitanja programskih ulaza dobavlja simboličke Instrukcija čitanja programskih ulaza dobavlja simboličke

vrijednost, a ne konkretne numeričke.vrijednost, a ne konkretne numeričke. Posljedično algebarsko-logički izrazi nemaju jednu, konkretnu, Posljedično algebarsko-logički izrazi nemaju jednu, konkretnu,

numeričku vrijednost, već su određeni formulama.numeričku vrijednost, već su određeni formulama.

Najstroži postuvjet:Najstroži postuvjet: Polazi se od preduvjeta i utvrđuje transformira li program Polazi se od preduvjeta i utvrđuje transformira li program

njegovu formulu u izraz koji povlači (podrazumijeva) njegovu formulu u izraz koji povlači (podrazumijeva) zadovoljenje postuvjetazadovoljenje postuvjeta

Najslabiji preduvjet:Najslabiji preduvjet: Polazi se od postuvjeta i utvrđuje logička formula koja Polazi se od postuvjeta i utvrđuje logička formula koja

podrazumijeva (povlači) valjanost zadanog preduvjeta.podrazumijeva (povlači) valjanost zadanog preduvjeta.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 47: Postavljanje i održavanje sustava programske podrške

47

Je li sljedeći program korektan?

int Sum( int a[])int Sum( int a[])

1.1. int i := 0;int i := 0;

2.2. int s := 0;int s := 0;

3.3. dok i < dužina(a) činitidok i < dužina(a) činiti

1.1. s := s + a[ i ];s := s + a[ i ];

2.2. s := i + 1;s := i + 1;

4.4. return s;return s;

Korektnost se odnosi na specifikaciju, tako da polazimo od Korektnost se odnosi na specifikaciju, tako da polazimo od formalne specifikacije programa.formalne specifikacije programa.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 48: Postavljanje i održavanje sustava programske podrške

48

Formalna specifikacija funkcije / procedure

Stanje programa: vektor vrijednosti programskih varijabli:Stanje programa: vektor vrijednosti programskih varijabli: Primjer vektora od četiri varijable: V(x, y, z, w).Primjer vektora od četiri varijable: V(x, y, z, w).

Program svojim izvršavanjem mijenja stanja programa, postupno Program svojim izvršavanjem mijenja stanja programa, postupno transformirajući početno stanje Vtransformirajući početno stanje V00 u konačno V u konačno Vnn:: V(xV(x00, y, y00, z, z00, w, w00) ) V(x V(x11, y, y11, z, z11, w, w11) ) ... ... V(x V(xnn, y, ynn, z, znn, w, wnn).).

Predikat: Booleova funkcija nad stanjima programa:Predikat: Booleova funkcija nad stanjima programa: Primjer: V( xPrimjer: V( xnn, y, ynn, z, znn, w, wnn) ) {istina, laž}. {istina, laž}.

Primjeri predikata:Primjeri predikata: x = 3;x = 3; x > y;x > y; x != 0 x != 0 ═>═> y + z = w; y + z = w; s = Suma( a[ i ]), gdje je i = 0..dužina( a ) – 1;s = Suma( a[ i ]), gdje je i = 0..dužina( a ) – 1; Za svaki k iz [1..dužina( a ) -1] vrijedi: a[ k ] >= a[k – 1];Za svaki k iz [1..dužina( a ) -1] vrijedi: a[ k ] >= a[k – 1]; istinaistina

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 49: Postavljanje i održavanje sustava programske podrške

49

Hoareova trojka

Formalno zaključivanje o korektnosti programa na temelju preduvjeta i postuvjeta.

Sintaksa: { P } S { Q } P i Q su predikati nad stanjima programa, S je program.

Značenje: ako program S započne izvršavanje u stanju u kojem vrijedi predikat P onda završava u stanju u kojem vrijedi predikat Q.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 50: Postavljanje i održavanje sustava programske podrške

50

Primjeri Hoareovih trojki

{ true } x := 5 { x=5 } { x = y } x := x + 3 { x = y + 3 } { x > 0 } x := x * 2 { x > -2 } { x=a } if (x < 0) then x := -x { x=|a| } { false } x := 3 { x = 8 }

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 51: Postavljanje i održavanje sustava programske podrške

51

Najstroži postuvjet

Primjeri valjanih Hoareovih trojki:• {x = 5} x := x * 2 { istina }

• {x = 5} x := x * 2 { x > 0 }

• {x = 5} x := x * 2 { x = 10 || x = 5 }

• {x = 5} x := x * 2 { x = 10 }

Sve navedene trojke su istinite, ali najkorisnija (najpreciznija) je sljedeća:

• x=10 : je najstroži postuvjet.

Ako vrijedi { P } S { Q } i za svaki Q’ za koji vrijedi { P } S { Q’ },

Q povlači Q’, onda je Q najstroži postuvjet od S s obzirom na P.• provjera: x = 10 povlači istina (Q je x = 10, a Q’ je istina).

• provjera: x = 10 povlači x > 0

• provjera: x = 10 povlači x = 10 || x = 5

• provjera: x = 10 povlači x = 10

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 52: Postavljanje i održavanje sustava programske podrške

52

Najslabiji preduvjet

Primjeri valjanih Hoareovih trojki:• {x = 5 && y = 10} z := x / y { z < 1 }• {x < y && y > 0} z := x / y { z < 1 }• {y ≠ 0 && x / y < 1} z := x / y { z < 1 }

Sve trojke su istinite, ali posljednja je najkorisnija zato što dozvoljava poziv procedure (programa) s najvećom slobodom u pogledu ograničenja ulaza x i y.

• y ≠ 0 && x / y < 1 je najslabiji (najblaži) preduvjet.

Ako vrijedi { P } S { Q } i za svaki P’ za koji vrijedi { P’ } S { Q } takav da P’ povlači P, onda je P najslabiji preduvjet (eng. weakest precondition) wp(S,Q) programa S s obzirom na postuvjet Q.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 53: Postavljanje i održavanje sustava programske podrške

53

Hoareova trojka i najslabiji preduvjet

• Teorem: { P } S { Q } vrijedi ako i samo ako P povlači wp(S,Q).

Drugim riječima Hoareova trojka je još uvijek valjana ako je:• Preduvjet P stroži nego li je neophodno, ali• Nije valjana ako je blaži.

Podsjetimo se: predikati P i Q te program S su zadani, a wp(S, Q) se računa polazeći od Q i krećući se programom jednu po jednu instrukciju unatrag.

• Sličan teorem za najstroži postuvjet glasi:

{P} S {Q} vrijedi ako i samo ako vrijedi sp(S,P) povlači Q.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 54: Postavljanje i održavanje sustava programske podrške

54

Pravila Hoareove logike

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Pravila za izračunavanje najslabijeg preduvjeta wp(S, Q) za pojedine vrste instrukcija, i to: Praznu instrukciju: skip; Pridjeljivanje: y := f( X ); gdje je X skup varijabli na desnoj strani

instrukcije pridjeljivanja. Slijed instrukcija: S1; S2; Odlučivanje: ako B onda S1 inače S2; Ponavljanje: dok B činiti S; Prekid programa: abort;

Page 55: Postavljanje i održavanje sustava programske podrške

55

Prazna instrukcija i prekid

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

wp(skip, Q) = Q. Prazna instrukcija nema učinka na korektnost, drugim riječima

program je ekvivalentan programu u kojem je prazna instrukcija ispuštena.

wp(abort, Q) = laž. Budući je vrijednost implikacije (laž istina) laž, znači da laž

ne može povlačiti zadovoljiv (istinit) preduvjet. Dakle, prekinuti program ne rezultira zadovoljenjem postuvjeta.

Page 56: Postavljanje i održavanje sustava programske podrške

56

Pridjeljivanje

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• { P } x := 3 { x+y > 0 }• Što je najslabiji preduvjet P = wp( x := 3, x + y > 0)?• Intuitivan odgovor: y > -3• Kako izvesti gornji zaključak na formalan način?

– Tako da pronađemo najopćenitiju vrijednost od y za koju vrijedi:

– 3 + y > 0

– Budući na temelju instrukcije pridjeljivanja u ovom primjeru znamo da x ima vrijednost 3.

• Dakle, svaku pojavu varijable x u formuli Q treba zamijeniti vrijednošću koja je toj varijabli pridjeljena. Općenito, pridjeljena je vrijednost određena izrazom (formulom) na desnoj strani instrukcije.

Page 57: Postavljanje i održavanje sustava programske podrške

57

Pravilo zaključivanja: pridjeljivanje

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• Instrukcija pridjeljivanja:– { P } x := 3 { x + y > 0 }– Što je najslabiji preduvjet P = wp( x : =3, x + y > 0 )?

• Formalno pravilo za izračun wp( pridjeljivanje, Q):– wp(x := E, Q) = Q([E/x]@x, ..., ) = Q(E, ...).– Dakle, svaku pojavu varijable x kojoj se pridjeljuje izraz E treba u

postuvjetu Q zamijeniti izrazom E:– [3 / x] {(x + y > 0)} ≡ {(3) + y > 0} ≡ {y > -3}

• Što je s izrazom x := x - 1;– wp( x := x -1, {x + y > 0}– {[x - 1/x] x + y > 0} ≡ {x - 1 + y > 0} ≡ {x + y > 1}.

– Program je korektan kada je prije izvršavanja instrukcije pridjeljivanja zbroj x i y veći od 1 pa će tada x + y biti veći od nula. Logično, zar ne?

Page 58: Postavljanje i održavanje sustava programske podrške

58

Pravilo zaključivanja: slijed instrukcija

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• { P } x := x + 1; y := x + y { y > 5 }– Što je najslabiji preduvjet P?

• Pravilo wp slijeda:– wp(S;T, Q) = wp(S, wp(T, Q))

– wp slijeda se računa instrukciju po instrukciju u slijedu i to unatrag, počevši od zadnje instrukcije.

• Primjer:– wp(x:=x+1; y:=x+y, y>5)

– wp(x:=x+1, wp(y:=x+y, y>5))

– wp(x:=x+1, x+y>5)

– x+1+y>5

– x+y>4.

Page 59: Postavljanje i održavanje sustava programske podrške

59

Pravilo zaključivanja: odlučivanje

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• { P } ako x > 0 onda y := x inače y := -x { y > 5 }– Što je najslabiji preduvjet P?

• Intuitivno:• Slučaj onda: {P1} y := x { y > 5}

– P1 = x>5

• Slučaj inače: {P1} y := -x { y > 5}– P2 = -x > 5

– P2 = x < -5

• P ≡ P1 || P2 ≡ x > 5 || x < -5

• Formalno pravilo:– wp( ako B onda S inače T, Q) = B wp(S, Q) && !B wp(T, Q).

Page 60: Postavljanje i održavanje sustava programske podrške

60

Pravilo zaključivanja: odlučivanje

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• Formalno pravilo:– wp( ako B onda S inače T, Q) = B wp(S, Q) && !B

wp(T, Q).

• Primjer:– wp(ako x > 0 onda y := x inače y:= - x, y > 5)

– x > 0 wp(y := x, y > 5) && x ≤ 0 wp(y := - x, y > 5)

– x > 0 x > 5 && x ≤ 0 -x > 5

– x > 0 x > 5 && x ≤ 0 x < -5

• Budući za implikaciju vrijedi: A B ≡ !A || B.– (!(x > 0 ) || x > 5) && (!( x ≤ 0 ) || x < -5) ≡

– x > 5 || x < -5.

Page 61: Postavljanje i održavanje sustava programske podrške

61

Pravilo zaključivanja: ponavljanje

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• { P } dok (j <= N) f : = f * j; j := j + 1 { f = N ! }– Što je najslabiji preduvjet P?

Page 62: Postavljanje i održavanje sustava programske podrške

62

Pravilo zaključivanja: petlja

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• Najprije razmatramo parcijalnu korektnost, ne vodeći računa o završetku petlje.

• Petlja može biti beskonačna, ali ako se završava onda je postuvjet zadovoljen kada je petlja parcijalno korektna.

• • {P} dok B činiti S {Q}– Pronaći invarijantu Inv tako da vrijedi:

– P Inv : inicijalno, invarijanta je zadovoljena

– { Inv && B } S {Inv} : u svakom koraku petlje invarijanta je zadovoljena

• (Inv && ¬B) Q: po završetku petlje, invarijanta i negirani uvjet ponavljanja povlače valjanost postuvjeta Q.

• Inv = istina zadovoljava navedene postavke, ali nam nije korisna.• Invarijanta se bira tako da omogući zaključivanje o postuvjetu.

Page 63: Postavljanje i održavanje sustava programske podrške

63

Izbor invarijante

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

• Obično ima oblik izveden iz postuvjeta Q:– s = (Σi | 0≤i<N • a[i])

– Ali tako da ovisi o indeksu petlje j.

• Znamo opseg vrijednosti indeksa petlje j: početno ima vrijednost nula i zatim se povečava dok ne dosegne vrijednost N.

• Stoga je 0 ≤ j ≤ N član invarijante• Završetak petlje && invarijanta postuvjet

– Petlja završava kada je j = N

– Dobra pretpostavka: zamijeniti N s j u postuvjetu Q:

– s = (Σi | 0≤i<j • a[i])

• Dakle postuvjet Q je: 0 ≤ j ≤ N && s = (Σi | 0≤i<j • a[i])

Page 64: Postavljanje i održavanje sustava programske podrške

64

Primjer: pridjeljivanjeJednostavan primjer pridjeljivanja:

Q: { y > 0}

Program:

y := x + 10;

---

P = ?

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 65: Postavljanje i održavanje sustava programske podrške

65

Primjer: odlučivanjaJednostavan primjer odlučivanja:

Q : {y > 0}

Program:

ako x > 0 onda

y := x;

inače

y := -x;

---

P = ?

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške

Page 66: Postavljanje i održavanje sustava programske podrške

66

Primjer: ponavljanjaCjelobrojno dijeljenje:

Q: exists(k, m) : a = k*b + m && m < b, gdje su:k – količnik i m ostatak cjelobrojnog dijeljenja

Program:

m := a;k := 0;dok m >= b činiti

k := k + 1;m := m – b;

P = ?.

Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške