1 / 20

Formālās specifikācijas

Formālās specifikācijas. LU datorzinātņu bakalaura programma. “Specifikācija”. Intuitīvi: specifikācija = apraksts Sistēmas specifikācija: precīzi formulēts sistēmas īpašību apraksts precīzi formulēts sistēmas struktūras un / vai darbības īpašību apraksts

shirin
Télécharger la présentation

Formālās specifikācijas

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

E N D

Presentation Transcript


  1. Formālās specifikācijas LU datorzinātņu bakalaura programma

  2. “Specifikācija” Intuitīvi: specifikācija = apraksts Sistēmas specifikācija: precīzi formulēts sistēmas īpašību apraksts precīzi formulēts sistēmas struktūras un / vai darbības īpašību apraksts Sistēma – iecerēta, projektējama, var būt arī esoša Sistēma – aparatūra vai programmatūra (vai abas kopā) Specifikācija – vienošanās starp lietotāju un pakalpojuma sniedzēju Specifikācija – daļēja (atsevišķas īpašības) vai izsmeļoša (visas prasības, darba uzdevums kontraktā) Specifikācijas – izmantotas dažādos līmeņos, dažādas specifikācijas vienai sistēmai Programmēšanas valoda – arī programmēšanas sistēmas speciālgadījums (būs būtiski šajā kursā).

  3. “Formāls” Formāls – balstās uz formu. Matemātiski precīzi definēts. Sinonīmi: formāls – precīzs. Formālā loģika: noskaidrot izteikuma patiesumu, balstoties uz tā formu. Piemēram, A  A ir patiess, neatkarīgi no tā, kāds ir A “saturs”. Formāls izvedums no aksiomām. Iespējams pārbaudīt uz datora. Matemātiskā loģika: spriedumi tiek veidoti formāli. Programmas izpilde: simbolu manipulācija – formāla aktivitāte. Alternatīva: forma – saturs.

  4. “Formālās specifikācijas” Formāls – balstās uz formu. Matemātiski precīzi definēts. Formālā loģika: noskaidrot izteikuma patiesumu, balstoties uz tā formu. Formāla, precīza specifikācija: spriedumi par specifikāciju izdarāmi aplūkojot tikai specifikācijas “formu” – uzrakstīto specifikācijas tekstu. Viss būtiskais “saturs”, specifikācijas nozīme, ietverts formā, uzrakstīts tekstā. Nekas nepaliek uz “roku vicināšanu”. Gala lietotāja prasības – būtībā saturiskas (lai sistēma “strādā”). Prasību formalizācija – pierakstīt tās precīzā formā noteiktā sistēmā. Specifikācijas formalitāte neatceļ prasību pēc saturiskās nozīmes. Specifikāciju validācija – vai formāli iegūtie secinājumi tiešām ir tie, kas lietotājam vajadzīgi? Formālā specifikācija – visas būtiskās sistēmas īpašības ietvertas arī formāli uzrakstītajā specifikācijas tekstā.

  5. Kāpēc specifikācijas? Iegūt programmas / sistēmas, kas “garantēti”, “droši” risina tām izvirzītos uzdevumus. Precīzi fiksēt sistēmas dizaina lēmumus agrīnā sistēmas izstrādes procesā; strukturēt sistēmu izstrādes procesu. Piezīmes: 1) garantijas un drošība kaut ko maksā 2) garantijas un drošība ir reālas, bet nebūs absolūtas. Precīzas specifikācijas veidošana: • Tiek iegūts precīzs uzdevuma formulējums (kas tad īsti no sistēmas vai tās komponentes tiek sagaidīts, prasīts) • Iespējas – specifikācijas analīze • Vai formulējums atbilst lietotāja vēlmēm (validācija) • Vai izstrādātā sistēma atbilst specifikācijai (verifikācija) • Iespējas izveidot / ģenerēt sistēmu, kas atbilst specifikācijai (sintēze) • Iespējas – programmatūras testēšanā: • Specifikācija kā mēraukla testa rezultātiem • Testa situāciju automātiska ģenerēšana no specifikācijām (var būt iespējama noteiktos kontekstos / situācijās) Ja specifikācija ir, papildus iespējas var tikt un var netikt izmantotas

  6. Specifikācijas programmatūras dzīves ciklā Dažādas specifikācijas vienai sistēmai: • Prasību (darbības) specifikācija, vienošanās starp gala lietotāju un sistēmas izstrādātāju • Dizaina specifikācija, ietver sistēmas arhitektūru, vienošanās starp sistēmas arhitektu un realizētāju • Moduļu (programmas) specifikācija, ietver prasības konkrētiem moduļiem, procedūrām, vienošanās starp programmētājiem, kas implementē, un kas lieto attiecīgo moduli / procedūru • Realizācija – arī “īpašību apraksts” (parasti neuzskata par specifikāciju). Specifikācijas – dažādos programmas dzīves cikla posmos, dažādos kontekstos Dažādas prasības pret specifikācijām: • lasāmība (praktiski vienmēr), • precizitāte, viennozīmība (svarīgi, bet vai vienmēr ievērots ?) • izpildāmība (var dot papildus iespējas), • utt.

  7. Programmatūras kļūdas .. Naudas tranzakciju apstrāde bankās (cilvēks atnāk izņemt naudu no bankomāta, naudu viņam neizdod, bet no konta summu noņem, pretenzijas netiek pieņemtas, jo viņam nav pierādījumu); Radiācijas terapijas vadības sistēmas (programmas kļūdas dēļ pacienti terapijas laikā saņem 100 – kāršu radiācijas devu, pēc tam nomirst); Kosmisko lidaparātu vadības sistēmas – Ariane 5 owerflow kļūdas dēļ apstājas borta vadības datori, kā sekas – lidaparāts tiek “disintegrēts” – gaisā sadalīts daļās; Intel Pentium nepareizi veikta dalīšana – kompānijai izmaksāja aptuveni 475 miljonus dolāru; Programmas kļūdas dēļ AT&T telefonijas komutatoros, Ņujorkas pilsēta uz 9 stundām paliek bez telefona sakariem. Sk. “10 nopietnākās programmēšanas kļūdas cilvēces vēsturē”. Kļūdu novēršana ir dārga, bet arī kļūdu esamība ne vienmēr ir lēta. Svarīgi – noteikt pareizo balansu – cik lielus līdzekļus ieguldīt programmatūras drošībā.

  8. Dabiskās un formālās valodas specifikācijā Specifikāciju valoda – konstrukciju sistēma specifikāciju veidošanai Dabiskā valoda - ? Nav precizitātes, daudz “trokšņa”: • viens un tas pats jēdziens dažādās vietās izteikts dažādi (sevišķi ja jēdzienu jālieto daudzkārt nelielā teksta fragmentā) Programmas ieejā tiek padotas divas netukšas simbolu virknes, un izejā programma izdod virkni, kas satur vismaz vienu simbolu. • var būt lietas, kas rakstītājam var šķist skaidras bez rakstīšanas, vai arī, kuras uzrakstīt tiek aizmirsts • “notikums a notiek pēc notikuma b” – gan “notiek”, gan “pēc” var tikt interpretēts vairāk, nekā vienā veidā. “notiek” – vai laikā momentāni, vai, iespējams, ilglaicīgi? “pēc” – vai a sākums ir pēc b beigām, vai arī pietiek ar to, ka a sākums ir pēc b sākuma, un a beigas pēc b beigām?

  9. Dabiskās un formālās valodas specifikācijā Specifikāciju valoda – konstrukciju sistēma specifikāciju veidošanai Dabiskā valoda - Nav precizitātes, daudz “trokšņa”: Shematiskas diagrammas – var palīdzēt labāk strukturēt specifikāciju Bet: arī diagrammai nav pašai par sevi precīzas semantikas (nozīmes), ja to nepapildina precīzas anotācijas Formālās specifikāciju valodas: matemātiski precīzi definēta konstrukciju sintakse un semantika.

  10. Formālas specifikācijas: līmeņi Specifikācija: Formāla valoda / notācija – precīza sintakse un semantika. Semantika: katrai valodas konstrukcija atbilst kādam “zināmam” matemātiskam objektam. Iespējams veidot matemātiskus apgalvojumus par specificēto sistēmu. Specifikācija + analīze: Formāla sistēma = Formāla notācija + formāli izveduma likumi Iespējams veidot un pierādīt apgalvojumus par specificēto sistēmu (iespējams matemātiski pārliecināties par noteiktām specifikācijas īpašībām). Lai veiktu analīzi, vajadzīga formāla sistēma. Lai analīze būtu ticama, nepieciešami valodas atbalsta rīki Rīks nodrošina iespēju formāli pārbaudīt valodā izteiktos apgalvojumus Bez atbalsta rīka pareizības “pierādījumā” ir vismaz tikpat viegli pieļaut kļūdu, kā pašā programmā Vai atbalsta rīka paša “pareizība” ir pierādīta?

  11. ... šajā kursā Formālās specifikācijas programmatūras sistēmām. A. Programmēšanas valodu formāla specifikācija (uzdot sintaksi un semantiku). B. Valoda Z formālu specifikāciju veidošanai, dažādām programmatūras sistēmām (kursa otrajā daļā) Programmēšanas valodas: - pašas ir programmatūras sistēmas (interpretators, kompilators, ...)- var tikt izmantotas citu programmatūras sistēmu veidošanā. Programmēšanas valodas specifikācija – sintakses un semantikas uzdošana. Jautājums arī par to, kā pierādīt programmu īpašības.

  12. Kursa tēmas Formālas specifikācijas jēdziens Abstraktās mašīnas. Galīgi un paplašināti automāti Konkrētā un abstraktā sintakse programmēšanas valodām Ievads funkcionālajā un loģiskajā programmēšanā Operacionālā un dabiskā semantika Translatīvā semantika Denotacionālā un algebriskā semantika Cikla invarianti, daļējās korektības pierādījumi Cikla varianti, pilnās korektības pierādījumi Datu un vadības struktūras korektības pierādījumos Verifikācijas nosacījumi Praktiskas verifikācijas sistēmas Specifikāciju valoda Z: ievads CZT vide darbam ar Z specifikācijām Z: matemātiskā notācija un pierādījumi Z: kopas, virknes, relācijas, brīvie tipi Shēmas valodā Z, programmatūras sistēmu specifikācija No specifikācijām uz programmām

  13. Kursa mērķis Kursā tiek aplūkots programmēšanas valodu formālas specifikācijas jēdziens, īpaši akcentējot valodu semantikas uzdošanas metodes: translatīvo, operacionālo un denotacionālo, kā arī programmu korektības pierādījumus uz aksiomātiskās semantikas bāzes. Kursa otrajā daļā tiek aplūkota universāla formālo specifikāciju valoda Z. Kursa ietvaros studentiem tiek piedāvāti praktiski vingrinājumi ar aplūkoto formālismu atbalsta rīkiem. REZULTĀTI 1. Gūt priekšstatu par datorprogrammu kā formālu un matemātiski analizējamu objektu. 2. Apgūt galveno programmu semantikas uzdošanas metožu pamatus. 3. Apgūt programmu korektības pierādīšanas pamatus. 4. Iepazīties ar formālo specifikāciju valodu Z un tās atbalsta rīkiem.

  14. Prasības Patstāvīgi izpildīti, noteiktos termiņos iesniegti un eksāmenā atbildēti mājas darbi (70%). Rakstisks eksāmena darbs sesijas laikā (30%). Atzīmes „izcili” iegūšanai nepieciešams papildus referāts.

  15. Literatūra Pamatliteratūra, grāmatas pieejamas tīmeklī: H.R.Nielson, F.Nielson, Semantics with applications: a formal introduction J. Woodcook, J.Davies, Using Z: Specifications, Refinement and Proof Papildliteratūra: D.Gries, The Science of Programming Z.Manna, Mathematical Theory of Computing, McGrawHill, 1974 F.Pagan, Formal Specification of Programming Languages: a panoramic primer C. Morgan, Programming from Specifications (pieejama tīmeklī). J.M.Spivey, The Z Notation: a Reference Manual, Prentice Hall International, 1992. (pieejama tīmeklī)

  16. Tēmas pieteikums: abstraktās mašīnas un automāti Formālās specifikācijas

  17. Kas ir dators? Dažādi uztveres/matemātiskie modeļi. Varam uz datoru skatīties dažādos veidos. (a) Dators kā lietotāja tekstu un tabulu apstrādes līdzeklis, uz datora iespējams izpildīt lietojamas programmas (Word, Excel, u.c.) (b) Dators kā vide programmēšanai (valodā C++, PASCAL, PROLOG, u.c.) (c) Dators kā bināras simbolu virknes apstrādājoša iekārta (viss sastāv no 0 un 1, baits – 8 biti, Kbaits – 1024 baiti, u.tml.) (d) Dators kā fizikāli realizētu mikroshēmu sistēma, sastāv no diodēm, tranzistoriem, u.c. elementiem. Starp (b) un (c) vēl 3 līmeņi: (b1) asemblera valoda (instrukcijas darbam ar reģistriem, atmiņas šūnām) (b2) operētājsistēmas kodols (vada uzdevumu plūsmu datorā) (b3) mikroprogrammas (procesora instrukciju realizācija loģisko operāciju līmenī). Zemāks līmenis realizē operācijas, kas pieejamas (izmantojamas) augstākā līmenī. Lai strādātu augstākā līmenī, nav jāzina visas zemākā līmeņa detaļas (lai brauktu ar trolejbusu, nav jāzina tā dzinēja uzbūve). Vienai un tai pašai sistēmai varam veidot dažādus matemātiskos modeļus.

  18. Abstraktās mašīnas Diskrētais process:tas, kas notiek datora programmas izpildes laikā.tas, kas notiek datora darbības laikā (0 un 1, vai citā līmenī). Dažādi abstrakcijas līmeņi vienam un tam pašam diskrētajam procesam. Šajā kursā: būtiska koncentrēšanās uz diskrētā procesa matemātisko modeļu veidošanu un analīzi. Abstraktā mašīna – diskrētā procesa matemātiskais modelis (viens iespējams veids) Abstraktā mašīna: vadības bloks + datu bloks Abstraktās mašīnas stāvoklis: - norāde uz kārtējo instrukciju vadības blokā, - datu bloka saturs Abstraktās mašīnas komandas izpilde: - izpilda kārtējo instrukciju no vadības bloka (iespējams, izmaina datu bloka saturu; var būt arī ievada un izvada operācijas) - uzstāda nākamo kārtējo vadības bloka instrukciju. Vienkārša abstraktā mašīna: galīgs automāts (tukša datu telpa). Galīgie automāti nozīmīgi gan no programmēšanas valodu sintakses, gan arī semantikas apraksta viedokļa.

  19. Abstraktās mašīnas kā semantikas modelis while (x=y) do if xy then y:=y-x else x:=x-y fi od A: (x=y) - + Piemērs: vienkārša programma un atbilstoša blokshēma. Abstrakta mašīna – vadības bloks + datu bloks, komandas izpilde maina norādi uz kārtējo instrukciju vadības blokā, maina datu informāciju. Blokshēma – “pusceļš” uz atbilstošās abstraktās mašīnas definīciju. Vadības stāvokļu kopa: { A, B, C, D, E } Datu stāvokļu kopa: StVar = {x,y}  Z (vai Fun({x,y}, Z), vai Z  Z) Lai abstrakto mašīnu definētu precīzi, vajadzīgi vēl pāreju nosacījumi pA+, pA-, pB+, pB- (kā predikāti kopā StVar) un pāreju funkcijas fA+, fA-, fB+, fB-, fC, fD (kā funkcijas StVar  StVar). B: xy + - E: beigas C: y:=y-x D: x:=x-y

  20. m k Galīgs automāts kā abstrakta mašīna Abstrakta mašīna – vadības bloks + datu bloks, komandas izpilde maina norādi uz kārtējo instrukciju vadības blokā, maina datu informāciju. Galīgais automāts – vienkāršākā abstraktā mašīna, tikai vadības bloks. Galīgs skaits dažādu stāvokļu un pārejas starp tiem. “Kafijas automāts”: Katrā brīdī atrodas vienā no 2 “stāvokļiem”: Var pieņemt monētu, vai var izdot kafiju. Stāvokli nosaka iepriekšējā darbību secība. Galīgs dažādu stāvokļu skaits, galīgs skaits variantu, kā automāts var reaģēt pašreizējā situācijā. Ir sistēmas, ko var adekvāti aprakstīt ar galīgu automātu. Cita veida sistēmām galīgs automāts var būt “abstrakcija”, kas var atspoguļot vairākas (lai arī ne visas) būtiskas sistēmas īpašības. Galīgi automāti būtiski gan valodu sintakses, gan semantikas uzdošanā (redzēsim arī atšķirības starp šiem 2 lietojumiem).

More Related