CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Spécification (informatique) - Wikipédia

Spécification (informatique)

Un article de Wikipédia, l'encyclopédie libre.

Vous avez de nouveaux messages (diff ?).

En génie logiciel il s'agit d'une étape du développement d'un programme ou d'un système informatique qui consiste à décrire ce que le logiciel doit faire puis comment il doit le faire.


Sommaire

[modifier] Types de spécification

On distingue :

  • les spécifications informelles
  • les spécifications semi-formelles
  • les spécifications formelles

On distingue également (notamment dans la méthode Merise) :

  • les spécifications générales ou externes (spécifications fonctionnelles générales ou SFG)
  • les spécifications détaillées ou internes (spécifications fonctionnelles détaillées ou SFD)
  • les spécifications techniques.

On distingue aussi les spécifications par le ou les paradigmes utilisées (par exemple, des processus séquentiels communicants (CCS, CSP), ensembliste, etc.). Ainsi on peut spécifier sans utiliser de variables (comme en « pur » CCS).

On parle de « spécifications mixtes » quand on utilise plusieurs paradigmes. Par exemple, une méthode semi-formelle comme JSD (auteurs : M. Jackson, J. Cameron), utilise le paradigme des processus séquentiels communicants mais avec « passage de valeur » (avec variables).

On trouve aussi la classification suivante :

  • spécifications exécutables
  • spécifications non exécutables.

Selon la définition que l'on donnera à ce qu'est une spécification, on pourra considérer qu'une spécification ne doit pas être exécutable (c'est ce qui la distingue, entre autres choses, d'un programme).

[modifier] Méthode de spécification

Le terme « méthode de spécification » recouvre :

  • une méthode (ordre des tâches préconisé pour réaliser une spécification)
  • un langage pour écrire la spécification. Ce langage peut être informel ou formel. Dans ce dernier cas, on distingue :
    • les langages avec une syntaxe formelle
    • les langages avec une syntaxe et une sémantique formelles
    • des outils d'aide :
      • éditeurs
      • vérificateurs de syntaxe
      • vérificateurs de typage
      • prouveurs (en général, la logique sous-jacente au langage de spécification n'est pas décidable. On est en semi-décidable. Le spécifieur doit intervenir dans le processus de preuve)
      • des « contrôleurs de modèles » (model-checkers)
      • des animateurs de spécification

On utilise aussi le terme « outils » pour dénoter les langages utilisés ou encore les « notations » (ce terme mériterait une explicitation). Ainsi les « réseaux de Petri », les « automates de Harel » (des automates structurés) ou même le langage Pascal, Java, etc. seront considérés comme des outils.

Enfin, on trouve aussi : « Une méthode est un ensemble de concepts, langage, outils ».

Remarquons que le terme « méthodologie » est plus à la mode que le terme « méthode ». Mais si on s'en tient à l'étymologie, la méthodologie est « l'étude des méthodes ». Le dictionnaire de Lalande nous dit : « Subdivision de la Logique, ayant pour objet l'étude a posteriori des méthodes, et plus spécialement d'ordinaire, celle des méthodes scientifiques. Kant a opposé la Méthodologie à l'ensemble de la Logique (...) ».


[modifier] Exemples

[modifier] L'Analyse fonctionnelle descendante (SADT)

SADT dispose d'un langage avec un vocabulaire d'éléments graphiques (boîtes, flèches, étiquettes) à syntaxe formelle (les flèches doivent être positionnées à certains endroits selon le type de flèches, une flèche qui « entre » dans une boîte qui est composée d'autres boîtes, doit entrer dans une de ces autres boîtes. Mais SADT n'a pas de sémantique claire (par exemple, que signifie le fait qu'une flèche sorte d'une boîte et entre dans une autre).

[modifier] La Méthode B

La « méthode de spécification formelle B » (de Jean-Raymond Abrial) ne donne pas explicitement une séquence de tâches à effectuer. Différentes approches peuvent être prises (les entreprises la pratiquant définissent souvent l'approche qui convient à leurs applications). Mais il faut respecter les obligations de B et celles-ci impliquent certaines séquences d'actions.

Les spécifications sont faites en utilisant le langage de la théorie des ensembles et la logique des prédicats du premier ordre.

La sémantique des opérations (des substitutions) est définie par un ensembles d'axiomes dits « axiomes des substitutions généralisées »).

B met en œuvre les travaux de Dijkstra (langage de commande gardé).

B consiste à faire un développement prouvé (preuve mathématique), à raffiner jusqu'à arriver à des « machines » dont les opérations sont écrites dans un langage « algorithmique » qui est traduit automatiquement en langage exécutable (C, ADA,...).

L'Atelier B est un Atelier de génie logiciel qui comprend (entre autres) :

  • un analyseur syntaxique
  • un vérificateur de typage
  • un générateur d'obligations de preuves (i.e. de théorèmes à prouver)
  • plusieurs prouveurs, dont un prouveur dit « La balbulette », distribué gratuitement
  • un animateur de spécifications
  • un éditeur de spécifications
  • des générateurs de code

[modifier] Validation de spécification

Quand on se demande si le texte formel « dit bien » ce que l'on veut qu'il dise, s'il « traduit » bien la demande informelle faite par celui qui commande le logiciel, on dit que l'on fait de la validation. La validation ne peut pas être automatisée.

[modifier] Formel vs rigoureux

Un prouveur fait un raisonnement formel. Un spécifieur qui fait comme le professeur de mathématiques qui dit « il est évident que » et saute des étapes dans ses preuves, fait un raisonnement rigoureux. Autre exemple : On peut faire une spécification formelle en B. Puis faire un développement (passage au code exécutable) rigoureux.

[modifier] L'écriture des commentaires d'une spécification formelle

Ceux-ci sont écrits en langage naturel, mais en évitant des irrégularités (source : Thèse de Y. Toussaint, Méthodes informatiques et linguistiques pour l'aide à la spécification de logiciel, oct. 1992, U.P.S. Toulouse).

Mais celles-ci ne sont pas toujours un défaut ! :

  • le bruit, information non nécessaire au moment où elle est donnée
  • le silence, notions introduites sans définition (un peu comme

une non-déclaration de variable)

  • la contradiction
  • la sur-spécification : en dire trop. Par exemple, traiter d'implantation

alors qu'on n'a pas spécifié la fonction que l'on veut implanter.

  • l'ambiguïté, i.e. un énoncé à interprétations multiples
  • la référence en avant (n'est pas forcément mauvaise !)

On mentionne des concepts dont la définition sera fournie plus loin. Un sommaire est fait de référence en avant !

[modifier] Voir aussi

  • Guide IEEE 830
  • Guide AECMA PSC-85-16598

[modifier] Liens externes

[modifier] Prouveurs

  • de B
    • Atelier B avec son prouveur et PP, le prouveur de

prédicat

    • La balbulette

http://www.b4free.com/

    • voir aussi proB (animateur et model-checker)

www.ecs.soton.ac.uk/~mal/systems/prob.html

  • Boyer-Moore

http://www.cs.utexas.edu/users/boyer/ftp/nqthm/ http://www.cs.utexas.edu/users/moore/best-ideas/nqthm/

  • ACL

http://www.cs.utexas.edu/users/moore/acl2/

  • PVS

http://pvs.csl.sri.com/

  • Affirm(University of. Southern California)
  • Gypsy prover (GTP)
  • EVES et NEVER (ORA, Canada)

http://www.ora.on.ca/eves/welcome.html

  • Larch

http://www.sds.lcs.mit.edu/spd/larch/

  • Lean

http://i12www.ira.uka.de/leantap/

  • Lego

http://www.dcs.ed.ac.uk/home/lego/

  • Coq

http://coq.inria.fr/coq-fra.html

  • HOL

http://www.cl.cam.ac.uk/Research/HVG/HOL/

  • IMPS

http://imps.mcmaster.ca/

  • Isabelle

http://www.cl.cam.ac.uk/Research/HVG/Isabelle/

  • Otter

http://www-unix.mcs.anl.gov/AR/otter/

  • TPS

http://gtps.math.cmu.edu/tps.html

  • Mona

http://www.brics.dk/mona/

  • LoTREC

http://www.irit.fr/ACTIVITES/LILaC/Lotrec/

[modifier] Model chekers

  • Alloy
  • CWB
  • Csml, Mcb
  • Smv

http://www-2.cs.cmu.edu/~modelcheck/smv.html

  • LoTREC [se sert aussi pour ça]

http://www.irit.fr/ACTIVITES/LILaC/Lotrec/modelchecking/index.htm

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com