Upload
lillith-gray
View
44
Download
0
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
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ć
Fakultet prirodoslovo-matamatičkih znanostiFakultet prirodoslovo-matamatičkih znanostiSveučilišta u SplituSveučilišta u Splitu
Split, 2011/12Split, 2011/12
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
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
4
Životni ciklus programa
Postavljanje i održavanje sustava programske podrškePostavljanje 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
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
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
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
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
11
Sustav programske podrške
Postavljanje i održavanje sustava programske podrškePostavljanje 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
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
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
15
Standardizacija
Postavljanje i održavanje sustava programske podrškePostavljanje i održavanje sustava programske podrške
16
Standardizacija
Postavljanje i održavanje sustava programske podrškePostavljanje 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
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
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
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
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
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
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
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
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
26
Dodavanje projekata u instalaciju
Postavljanje i održavanje sustava programske podrškePostavljanje 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
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
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
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
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
32
Računanje točke povratka ulaganja
Postavljanje i održavanje sustava programske podrškePostavljanje 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
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
35
Isporuka
Postavljanje i održavanje sustava programske podrškePostavljanje 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
37
Održavanje
Postavljanje i održavanje sustava programske podrškePostavljanje 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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;
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.
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.
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?
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.
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).
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.
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?
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.
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])
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
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
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