Abstract-Interactive program, som användargränssnitt, är svåra att formellt specificera och därmed att bevisa korrekt. Vissa idéer som kommer från funktionella programmeringsspråk har varit framgångsrika för att förbättra sättet vi skriver säkrare program, jämfört med traditionella tvingande språk, men dessa idéer gäller mestadels kodfragment utan några input-outputs. Med hjälp av det rent funktionella språket Coq presenterar vi en ny teknik för att representera interaktiva program och formellt verifiera användningsfall med hjälp av Coq proof-motorn som en symbolisk avlusare. I detta syfte introducerar vi begreppet scenarier, väl utformad schema över interaktioner mellan en miljö och ett program. Vi designar och certifierar ett bloggsystem som en illustration. Vårt tillvägagångssätt generaliserar enhetstestningstekniker och skisserar en ny metod för mekaniskt assisterad kontroll av effektiva funktionella program. Att implementera och bevisa korrekta interaktiva program är en utmaning. Faktum är att interaktiva program är svåra att resonera om eftersom de kommunicerar med en yttre miljö (operativsystemet, nätverket, användaren,. .. ) som kan vara underspecificerade och icke-deterministiska. Dessutom kan kommunikationen mellan programmet och miljön ske på många ställen under utförandet och kan bero på tidigare interaktioner. Många tekniker har utvecklats för att modellera, specificera och bevisa korrekta interaktiva eller samtidiga program [15]. Till exempel processalgebra och temporal logik är välförstådda abstrakta modeller för sådana program. I dessa abstrakta modeller kan några intressanta beteendeegenskaper automatiskt bevisas av modellkontroller. Men dessa verktyg ger vanligtvis garantier om modellen för programmet, inte dess faktiska genomförande. I ett annat tillvägagångssätt, som kallas programvarusäker co-design, är specifikationen och verifieringen av ett program inte bortkopplad från dess faktiska genomförande. I så fall är specificering, genomförande och kontroll strikt kopplade till programvaruutvecklingsprocessen. Denna snäva integration är möjlig inom Coq proof assistenten som är både ett programmeringsspråk och en assisterad testare. Men även om en realistisk kompilator för C-språket redan har utvecklats i Coq[12], kan man överväga att använda Coq som ett allmänt programmeringsspråk
Claret m.fl. har föreslagit Coq.io, ett ramverk för att specificera och verifiera interaktiva program när det gäller användningsfall REF.
Mechanical verification of interactive programs specified by use cases
{'venue': "Formalise '15", 'journal': None, 'mag_field_of_study': ['Computer Science']}