Formalūs metodai

Formalūs metodai yra logika bei matematika besiremiantys metodai informatikoje ir programų inžinerijoje skirti programinės ir aparatūrinės įrangos specifikavimui, modeliavimui, kūrimui ir verifikavimui. Tikimasi, kad panašiai, kaip ir kitose inžinerijos srityse, formalūs metodai leis kurti patikimesnes ir atsparesnes klaidoms sistemas. Tačiau kadangi jų taikymas yra brangus, tai jie taikomi kuriant padidinto patikimumo sistemas.
Formalūs metodai taiko įvairius teorinės informatikos įrankius, pvz., logiką, formalias kalbas, automatų teoriją, programų semantiką, taip pat tipų teoriją, algebrinius duomenų tipus siekdama išspręsti programinės ir aparatūrinės įrangos specifikavimo ir verifikavimo uždavinius.

Lengvasvoriai formalūs metodai

Kai kurie praktikuojantys asmenys mano, kad formalių metodų bendruomenė per daug pabrėžia visišką specifikacijos arba formalizavimą. Jie tvirtina, kad į tai įtrauktų kalbų ekspresyvumas, taip pat kaip modeliuojamų sistemų sudėtingumas, visišką formalizaciją padaro sudėtinga ir brangia užduotimi. Kaip alternatyva (pasirinkimas), buvo pasiūlyti įvairūs lengvasvoriai formalūs metodai, pabrėžiantys dalinę specifikaciją ir kryptingą taikymą. Šių lengvasvorių formalių metodų požiūris į formalius metodus apima lydinio objekto modeliavimo žymėjimą, kai kurių Denn’io Z žymėjimo aspektų su use case varomu plėtojimu/vystymu sintezę ir CSK bei VDM įrankius.

Naudojimas

Formalieji metodai gali būti taikomi įvairiose plėtojimo proceso dalyse.

Specifikacijos

Formalūs metodai gali būti naudojami apibūdinti bet kuriame lygyje ar lygiuose plėtotiną sistemą. Šis formalus apibūdinimas gali būti naudojamas kaip tolimesnių plėtojimo (vystymo) veiksmų vedlys (žiūrėti sekančias teksto dalis), papildomai, jie gali būti naudojami plėtojamos sistemos reikalavimų patvirtinimui, patvirtinti, kad reikalavimai buvo iki galo ir teisingai nustatyti. Formalios specifikacijos sistemų reikmė pastebėta metų metus. ALGOL 60 ataskaitoje, Džonas Bakus pristatė formalų žymėjimą kalbos sintaksės programavimui apibūdinti (vėliau pavadintą Bakus’o normine forma arba Bakus’o – Naur’o forma), BNF. Bakus taip pat aprašė kalbos semantikos programavimo žymėjimo apibūdinimo poreikį. Atsakaita žadėjo, kad ateityje atsiras toks pat tikslus žymėjimas kaip BNF, tačiau tai neįvyko.

Patikrinimas/kontrolė

Išplėtojus formalią specifikaciją, ją galima naudoti kaip pagrindą įrodyti specifikacijos ypatybes (su viltimi, darant išvadas apie išplėtotą sistemą).

Į žmogų nukreiptas įrodymas

Kartais motyvacija įrodyti sistemos teisingumą yra ne akivaizdus poreikis užtikrinti sistemos teisingumą, bet noras geriau suprasti sistemą. To pasekoje, kai kurie teisingumo įrodymai gaunami matematinio įrodymo stiliumi: naudojant ranka rašytą arba surinktą klaviatūra kalbą, naudojant nenormalumo lygį, bendrą tokiems įrodymams. „Geras“ įrodymas yra tas, kuris yra įskaitomas ir kurį gali supratsi kiti žmonės skaitytojai.
Tokio požiūrio kritikai teigia, kad dviprasmiškumas būdingas natūraliai kalbai tokiuose įrodymuose leidžia neaptikti klaidų, dažnai subtilios klaidos gali būti žemo lygio smulkmenose, paprastai nepastebėtose tokių įrodymų. Papildomai, darbas tam, kad sukurti geros kokybės įrodymą, reikalauja aukšto lygio matematikos išmanymo ir kompetencijos.

Kritikos

Formalių metodų sritis turi savo kritikus. Gauti ranka rašytus teisingumo įrodymus su paslaugų priemonėmis, kitokiomis nei užtikrinančiomis teisingumą, reikia daug laiko ir pinigų. Tai formalius metodus greičiau padaro naudotinus srityse, kur įmanoma atlikti automatizuotus įrodymus naudojant programinę įrangą arba tais atvejais, kai pažeidimo kaina yra didelė. Pavyzdžiui: geležinkelių inžinerijoje ir aerokosminėje inžinerijoje neaptiktos klaidos gali sukelti mirtį, taigi formalūs metodai populiaresni šioje srityje nei kitose taikymo srityse.