Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Metodologias Formales ES
Metodologias Formales ES
Papel Invitado*
El permiso para copiar sin cargo todo o parte de este material se
Resumen concede siempre que las copias no se realicen o distribuyan para
obtener un beneficio comercial directo, aparezca el aviso de derechos
Proponemos un marco total para las etapas de autor de la ACM y el título de la publicación y su fecha, y se
de desarrollo de software de especificación notifique que la copia se realiza con permiso de la Asociación de
(definición), diseño y codificación. Este Maquinaria de Computación. Para copiar de otra manera, o para volver
a publicar, se requiere una cuota y/o un permiso específico.
marco se basa en tres piedras angulares: a)
el concepto de gráficos de desarrollo de
software que especifican todas las etapas y
pasos del desarrollo; b) el uso de métodos
formales, en nuestro caso el VDM, el 0 1987 ACM 02705257/87/0300/0017$00.75
Método de Viena para el Desarrollo de la corrección de los programas
Software, en todas las etapas y pasos del informáticos, 3) porque los desarrollos
desarrollo; y c) los roles claramente que han utilizado formalismos han sido
separados de los informáticos teóricos, mucho más productivos, en un orden de
programadores, ingenieros de software y magnitud de 3 a 5 veces, que los
gerentes de desarrollo en todos los aspectos desarrollos que no utilizan formalismos,
del desarrollo de software. Así pues, no sólo y 4) porque es divertido, incluso
se formaliza la programación (es decir, los intelectualmente satisfactorio, utilizar el
programas se consideran objetos formales), formalismo. Una parte intrínseca del
sino también el desarrollo, su ingeniería y formalismo (VDM) que hemos
su gestión (es decir, toda la programación desarrollado y utilizado es la
en sí misma se considera también un objeto abstracción. La abstracción en la
formal sobre el que razonar). definición (especificación) del software,
pero también la abstracción en su
Preludio personal diseño. Es decir: (I) primero
Se me ha pedido que relaten 14 años de (especificación) nos abstraemos de
experiencia en "el uso de formalismos en la cualquier implementación y nos
ingeniería de software". He elegido abordar concentramos sólo en las [propiedades
esto proponiendo, como se anuncia en el de las] funciones que deseamos exhibir
resumen, un marco total para el desarrollo al usuario; (2) luego (diseño abstracto)
de software. Identificamos todos los nos abstraemos del software logra estas
factores igualmente importantes que entran funciones centrando nuestra atención en
en el desarrollo y mapeamos cada uno de lo que los componentes conceptuales
estos aspectos en nuestro modelo de del software computan; (3) luego
desarrollo de software. Wc no utiliza (diseño concreto) describimos
formalismos por el hecho de ser sólo abstractamente cómo el software
fornmal. Utilizamos formalismos (1) porque computa, antes de (4) finalmente
parecen ayudar a estructurar más finamente codificar el software. La abstracción, y
el desarrollo, (2) porque arquean los medios en estos diversos niveles, ayuda a (1)
primarios que conocemos para ayudar a "dividir y conquistar" la complejidad
garantizar [aparentemente intrínseca] del software,
ayuda a construir (2) conceptualmente
Inore t.ransparent irnplementaciones del
*El uso de formalismos en la ingeniería de software sistema. Tal vez unas pocas personas
puedan desarrollar sistemas tan bellos
17
sin utilizar formalismos (aunque lo programación"), "ingeniería de
dudo), pero estamos aquí para software" y "gestión del desarrollo de
desarrollar métodos para otros que no software", y discutimos brevemente los
sean los genios únicos- y, cuando todo roles de las siguientes categorías de
está dicho y hecho, sólo el desarrollo
personal de desarrollo de software:
formal puede posiblemente dar alguna
confianza en la corrección del sistema
"científicos residentes"
de software. "programadores" "ingenieros de
software" y "administradores". A
El papel no es técnico. (1) El continuación, ii) definimos el concepto
corto tiempo dado (diciembre-enero de "métodos formales" y nos centramos
86) para escribir el trabajo, (2) en el estado actual del uso de los
cuatro semanas de conferencias en métodos formales en la programación
este período (India, China, Japón y profesional. También definimos el tipo
los EE.UU.), (3) el hecho de que de proyectos y productos de software a
otros tres trabajos también tuvieron los que se pueden aplicar los métodos
que ser escritos, (4) Navidad y Año
formales. Ahora (iii) sigue una parte
Nuevo, y (5) curso de primavera de
central del documento en la que
preparación de conferencias - todo
introducimos el concepto de gráficos de
eso puede ser una mala excusa. Pero
desarrollo de software: se trata de
de todas formas rogaré a los lectores
que lo entiendan. Por supuesto, creo gráficos acíclicos y dirigidos cuyos
que en este artículo he tratado nodos en general denotan actividades de
aspectos cruciales del "uso de especificación, diseño o codificación
formalismos en la ingeniería de que conducen a documentos y cuyos
software". He elegido identificar las bordes en general denotan actividades
muchas facetas, aspectos y que motivan y justifican diseños con
conceptos que entran en el especificaciones, diseño con código, etc.
desarrollo de software y trato de Los nodos sin bordes de entrada o
señalar los que ya pueden ser "tempranos" en el gráfico denotan
formalizados, presentando el especificación; los nodos sin bordes de
conjunto de tal manera que se invite salida o "tardíos" en el gráfico denotan
a más... codificación; los nodos interiores
malización. No estoy postulando ideas no denotan diseño. Este concepto de
probadas. Todo lo que se describe a desarrollo de programas informáticos se
continuación ha sido probado y demostrado examina a continuación iv) desde varios
como deseable - sólo que todavía carecemos puntos de vista: en primer lugar, desde
de herramientas formales para su apoyo. las cuádruples facetas de la informática
teórica, la programación, la ingeniería
S ummary de programas informáticos y la gestión;
(Las partes i-iv abajo se encuentran en las y v) desde el punto de vista de sus
secciones 1-6.) repercusiones, con un entorno de apoyo
Este documento consta de seis partes. total, no sólo orientado a la sintaxis y la
Las primeras cinco (i-v) partes pragmática, sino también al desarrollo
constituyen unidades más o menos de programas informáticos orientados a
independientes que, al estar ensartadas, la semántica. La conclusión vi) examina
preparan el camino para la última parte: la realidad, la "filosofía" y la sociología
(vi) reflexiones solas sobre lo que se de conseguir que la gente utilice
necesita para conseguir que las ideas se métodos formales.
propaguen en general, ¡y qué obstáculos
puede haber para ello! En primer lugar
i) definimos los conceptos de "ciencia
teórica de la informática", "ciencia de la
informática" (o: "metodología de
18
sociológicas, sino también la falta de un
Introducción método firme y total que ofrezca un
El resumen y la reseña han esbozado marco unificador para al menos algunas
nuestro objetivo. En esta introducción de las técnicas. La razón sociológica de
vamos a motivar y justificar nuestro la falta de aceptación parece tener sus
enfoque. raíces en varios factores: los directores
Aunque los términos "crisis del de desarrollo de programas pertenecen a
una generación a la que no se le enseñó
software" e "ingeniería de software"
informática y programación, o se le
parecen haber sido ampliamente enseñó de maneras muy diferentes a las
adaptados a partir de 1969 [Randell 691 que suponen estas técnicas formales
vemos pocos cambios, en la industria más recientes, que también pueden ser
(casas de software, fabricantes de diferentes de la manera en que se
computadoras que programan enseñaron los programadores, que se
centros), en el camino de la mejora. La supone que son los directores. El
mayoría de los desarrolladores de los resultado es básicamente -que un
compiladores de Ada@, por ejemplo, mínimo común denominador
fueron más allá de las estimaciones concerniente al desarrollo de software
iniciales, no utilizaron ninguna, o sólo ennoblece subconscientemente. En esto
"al azar", de las muchas técnicas no hay lugar para técnicas formales. La
formales disponibles en la actualidad y, brecha entre las técnicas formales que
como consecuencia, parece que dieron ofrece la investigación y las "técnicas"
lugar a productos poco fiables que son del desarrollo de software industrial se
difíciles y costosos de mantener. está ampliando!
En los años transcurridos desde En contraste con esto vemos la
1969 se han propuesto un gran existencia de más y mayores
número de técnicas formales (por departamentos de ciencias de la
algunos incluso llamados métodos), computación que producen no sólo
casi exclusivamente en el ámbito interesantes resultados de ciencias
académico, y muy pocas de ellas se de la computación, y muchos
utilizan realmente en la industria. candidatos entrenados forzosamente
Nos referimos aquí primero a tales en estos, sino también, afirmo, una
técnicas como (1) probar que las insuficiencia de resultados en la
anotaciones de los programas en metodología de programación,
forma de afirmaciones usando sonle especialmente en lo que se refiere a
forni de Hoare Logic (Proof los aspectos de "método" de la
Systenl), (2) definir formalmente las puesta en marcha de "técnicas".
funciones de software usando Es un signo revelador, a veces
semántica algebraica o inquietante, de que la mayoría de los
denotacional, y (3) transformar los llamados "métodos" que se están
programas desde sus propagando fueron creados básicamente
especificaciones, a través de su en pequeñas empresas de software, y
diseño, en código. Dentro de cada por individuos con poca o ninguna
una de estas tres áreas (1-2-3) hay inclinación a considerar una base
foránea para su trabajo. Así, la mayoría
hoy en día una abundancia de teoría
de los
y también propuestas para su
explotación práctica. Pero, llegando
a la segunda parte de la primera @Ada es una marca registrada del Gobierno
de los Estados Unidos (Ada
frase de este párrafo, muy poco de Conjunta, Oficina de Progranune)
esto está siendo utilizado realmente estos métodos (con la refrescante y notable
por la industria. excepción de JSP/JSD [Jackson 75,Jackson
Las razones de esta falta de adopción 83]) no llegaron al entorno abierto de
de técnicas formales por parte de los revisiones por pares que ofrece el mundo
videntes de la industria no sólo son académico, sino a uno industrial impulsado
19
por motivos comerciales. Las mucho mejor que los desarrollos
revolucionarias posibilidades de largo compulsivos, sino que también fueron
alcance y de horizonte lejano de la proyectos "divertidos": intelectualmente
investigación universitaria formal, bien satisfactorios, y proyectos en los que todo el
fundada y criticada abiertamente, han sido personal tenía confianza. Atribuimos parte
sustituidas por las ofertas evolutivas y de de estos éxitos a la comprensión de los
corto alcance, aquí y ahora, de propuestas ad aspectos tratados en esta sección.
hoc en tirnes, incluso celosamente Atribuimos parte de estos éxitos a haber
religiosas. utilizado un "met.hod" formal (en este caso
Por lo tanto, sobre el trasfondo de las VDM), y a haber formado una odisea de
afirmaciones fanfaristas de arriba, tal cuatro años de desarrollo en torno a un
vez sea presuntuoso afirmar ahora que gráfico de desarrollo de software claramente
aceptado. Pero lo primero es lo primero.
el objetivo de este documento es reducir
la brecha entre los resultados
semánticos exóticamente bellos de la 1.1 Las ciencias de la
academia y las siempre pedantes computación
preocupaciones sintácticas y
Las ciencias de la computación y la
pragmáticas de la industria: en resumen, ingeniería consisten aquí en: ciencias de la
proponer un fratnework, un método para computación, ciencia de la computación,
el desarrollo "total", en el que se ingeniería de software y hardware.
entiende por "total": todo el espectro Informática
desde la especificación funcional hasta
La ciencia teórica de la computadora de
la codificación, todo el espectro desde
maíz es el estudio de los progresos:
los gestores, pasando por los ingenieros
de software y los programadores, hasta -de lo que es computable (meta-
los científicos "residentes" del proyecto, matemática, teoría de la
y toda la fuerza de todos los resultados computabilidad, de lo complejo que
teóricos aplicables aplicados a todo el es computar las cosas (análisis de
espectro. algoritmos, teoría de la
complejidad), del fundamento
Inathematlcal para varias
1 Las ciencias de la abstracciones de la computación
computación y los roles (teoría de los autómatas, teoría del
lenguaje formal, teoría de redes,
de los desarrolladores teoría del dominio de puntos fijos,
En esta sección damos un vistazo a las semántica denotacional, semántica
profesiones y a los profesionales de nuestro algebraica), y del fundamento del
campo (de desarrollo de software). El razonamiento que se da en la
objetivo es proporcionar una comprensión programación (sistemas de prueba,
más refinada del entorno interno en el que Hoare Logics, )
se desarrolla el software. El entorno externo,
que tiene que ver con las relaciones con los
clientes, no se tratará aquí. Creemos que una Ciencias de la computación o
descomposición más fina de las ciencias y la ciencias de la programación y metodología
ingeniería, y los roles de las personas que se La ciencia convincente es el estudio
describen a continuación, es beneficiosa de la programación:
para el desarrollo. Evidentemente, no
podemos demostrarlo, pero podemos
-de las metodologías, lenguajes,
referirnos a los desarrollos [Oest 86] que,
encarnando el espíritu de esta
técnicas y herramientas que
descomposición, han tenido éxito no sólo en intervienen en el desarrollo de
conducir a un software fiable desarrollado a software: análisis y definición de
tiempo y con recursos, todo ello a un nivel requisitos; especificación funcional
20
y no funcional; transformación de teorías (con el informático teórico que
programas; de las técnicas las garantiza).
especiales de desarrollo necesarias
para asegurar un software fiable, Ingeniero de Software
robusto, tolerante a fallos y seguro; Cuando una persona se ocupa de los
y codificación. aspectos sintácticos y pragmáticos del
proceso de desarrollo de programas
Ingeniería de Software informáticos, por ejemplo, de las
limitaciones tecnológicas actuales no
La ingeniería de funcionales, el seguimiento de los
software es la requisitos externos de diseño
práctica de los [limitación], el registro de los
programas y la documentos de desarrollo, la creación y
programación: el mantenimiento de las versiones de
los documentos de especificación,
-que incluye las preocupaciones diseño y código, su configuración en
sintácticas y pragmáticas tanto los productos y la validación de los
humanas como mecánicas requisitos no funcionales, entonces esa
(construcción y uso de herramientas) de persona es un ingeniero de programas
cómo producir, validar, controlar y informáticos. El ingeniero de
supervisar los documentos necesarios programas informáticos es un
en el proceso de desarrollo de software, constructor de herramientas (las
no sólo desde el punto de vista de herramientas siempre reflejan una
apoyar estos proce.s.ses nueva instancia de una metodología,
mecánicamente, sino también de pero están sujetas a las limitaciones de
asegurar la interacción (los procesos la tecnología actual y a los
sociales) entre las personas: conocimientos teóricos).
clientes/usuarios y desarrolladores, y
entre los desarrolladores. Programador vs. Ingeniero de
Por lo tanto, definimos el concepto Software
de Ingeniería de Software más
estrechamente que lo que se hace El ingeniero de software
normalmente. La definición del IEEE, "aprovecha" las leyes de la
por ejemplo, abarca nuestra Ciencia de naturaleza, el programador las leyes
la Computación. de las matemáticas, la informática y
la computación. El ingeniero de
software interactúa con las
1.2 El desarrollador Röles
limitaciones siempre actuales de la
Programador tecnología de hardware, el
Cuando una persona se ocupa de los programador con las siempre fijas
aspectos semánticos del proceso de leyes de la computación. La misma
programación, por ejemplo: qué persona es a veces un programador,
propiedades funcionales hay que captar a veces un ingeniero de software, y
en la especificación abstracta y en un buen programador sabe
cuáles hay que centrarse en el diseño y exactamente cuándo se hacen las
la codificación concretos, qué
transiciones entre las dos
formulación hay que dar a los
documentos de desarrollo, qué actividades, y cuándo se requiere la
significan, cómo verificar qué asistencia de un informático para
documentos describen y cómo ayudar a asegurar los fundamentos
transformar las descripciones abstractas de lo que se está describiendo.
en otras más concretas, entonces esa
persona es un programador y está
programando. Un programador propone
21
2 Sobre el desarrollo de 2.1 Sobre los métodos
software y sobre sistemáticos, rigurosos y
sistemas de software formales
Esta sección tiene dos partes. En las Por un %método' entenderemos un conjunto
secciones (2.1-2-3) se habla de los de procedimientos (directrices) para
métodos forrnales, y en las secciones seleccionar y secuenciar el uso de 'técnicas'
(2.4-5-6) se habla de las propiedades y y 'herramientas' para construir un
cualidades de los productos de determinado artefacto. Por 'método formal'
software y proyectos de desarrollo, entenderemos un rnet.hod (i) en el que todas
objeto y portador de los métodos las técnicas y herramientas que lo componen
formales. son formales, es decir, se le da un
El objetivo de la presente sección es, significado matemático preciso, y (ii) en el
en primer lugar, definir (sec. 2.1) los que el uso de los métodos y las técnicas
conceptos de "método" y de "método puede justificarse formalmente. Nos
formal" en relación con el desarrollo de explayamos sobre el punto (ii). Para ser
programas informáticos, motivar y formal debe ser posible razonar
justificar (sec. 2.2) por qué es necesario matemáticamente (lógicamente) sobre los
utilizar métodos formales (técnicas y programas producidos (ya sean abstractos,
herramientas) siempre que sea posible en forma de definiciones o especificaciones,
en todas las facetas del desarrollo de o menos abstractos, digamos en forma de
programas informáticos, y (sec. 2.3) diseños, o sean ejecutables, en forma de
presentar brevemente un candidato a código), de ahí el requisito de técnicas
"método formal" que haya superado la formales que se piensa que se aplican a un
prueba de ser aplicado ampliamente, en individuo, o a pares adyacentes de pasos de
Europa, en entornos industriales. Tal desarrollo. Pero eso no es suficiente. Para
vez no en plena formalidad, pero sí en ser formal también debe ser posible razonar
forma sistemática. Por consiguiente, en sobre el desarrollo en sí mismo -como
la primera sección (2.1) se definirán los veremos en la sección 4- de ahí el requisito
modificadores adicionales: de métodos formales, donde la parte de
"sistemático" y "riguroso", y en la Inet.hod: la selección y secuenciación
sección (2.3) se esbozará brevemente ordenada, habla de la programación. Así
lo que, en la pues, no sólo consideramos los programas
forma del proyecto ESPRIT 315 RAISE como objetos formales, sino que también la
del Mercado Común Europeo de programación, el proceso, se ve como un
DDC/STC/NBB [Meiling 86], se está objeto formal, igualmente sujeto al
razonamiento. Las herramientas son cosas
haciendo para ofrecer un método que
tales como los sistemas de anotación
satisfaga más de las necesidades de (lenguajes de especificación y diseño)
desarrollo de software industrial tal utilizados, y las ayudas mecánicas
como se esbozan en la segunda parte de necesarias para apoyar clericalmente
esta sección. (sintácticamente), semántica y
En la sección (2.4) se enumeran las pragmáticamente el uso del método y sus
propiedades del software (system.s) que técnicas. Por técnicas entendemos, entre
los métodos formales deben atender, y otras cosas, por qué principios (1)
en la sección (2.5) las cualidades del especificamos definiciones abstractas, (2)
proyecto y del producto de software las transformamos en diseños, y los diseños
resultante, respectivamente. Por último, en código, (3) probamos que tales
en la sección 2.6, detallamos algunos, transformaciones son correctas, y (4)
descargamos otras pruebas obligatorias en
pero no todos, los componentes
general.
informales que parecen necesarios,
Las herramientas de apoyo a las
además de utilizar los métodos
técnicas y el método Inust son, por lo
formales, para ayudar a asegurar las
tanto, formalmente explicables. Es
propiedades y cualidades.
decir, la arquitectura general del sistema
22
de apoyo de herramientas completo cliente/usuario. De una especificación
debe transponer las propiedades esperamos que sea (4) consistente y
formalmente expresables del método, y cornple.te, (5) corta y concisa, (6) accesible
del mismo modo para las sub- y referenciable, y (7) expresada de tal
herramientas vs. las técnicas. manera que las propiedades forrnales del
Decimos que un desarrollo es formal si software resultante puedan ser probadas wrt.
la especificación-un ejemplo es: la
todos los pasos de developine.nt.:
corrección. Como consecuencia de los
definición, de.firma y codificación se llevan
requisitos especiales (1,2,4,5,7) llegamos a
a cabo formalmente, y si se cumplen todas
la conclusión de que la especificación debe
las obligaciones de prueba derivadas de este
formalizarse, aunque de tal manera que se
desarrollo.
cumplan los requisitos 3) y G).
Decimos que un desarrollo es riguroso si
carece de formalidad por la ausencia de Bjørner 85a] se extiende sobre los
pruebas reales y formales. Es decir: somos puntos anteriores a la luz de la
rigurosos cuando seguimos los pasos del elaboración por parte de
método: especificar, diseñar y codificar, y DDC/CRAI/CNR y la Universidad de
cuando relacionamos forzosamente las Génova de una definición matemática
etapas de desarrollo en la forma, por formal y completa de Ada.
ejemplo, de relaciones de inyección,
fimcciones de al)estracción, predicados de
adecuación o imple.mentabilidad, y
2.3 Un método "formal"
teoremas de corrección, pero omitiendo las El VDM (Método de Desarrollo de Viena)
pruebas detalladas. surgió por primera vez el Laboratorio de
Decimos que un desarrollo es sistemático Viena del IBM alrededor de 1973-74 (a
si carece de rigor por la omisión de través del trabajo en la construcción de un
relaciones formales entre las etapas del compilador para PL/1 [Bekié 74]).
desarrollo. Posteriormente, el DM V se desarrolló
(Nuestra distinción entre "riguroso" y aún más, como lo atestiguan, por
"sistemático" no es consistente con el uso de ejemplo, los libros de texto y las
las palabras sanne en [Jones 80,Jones 861.) monografías: Bjørner & Jones
Por lo tanto, para nosotros, el espectro 78,Jones 80,Bjørner & Jones 82,Jone
formal- rigurosamente sistemático, es uno Actualmente se está preparando un
dentro del cual deseamos que nuestro conjunto de 5-6 volúmenes sobre'
desarrollo tenga lugar apoyado, siempre que todos los aspectos de la VDM para su
sea posible, por la disponibilidad de publicación en 1988 [Bjørner 88].
herramientas formales. V DM se ha utilizado en muchos
proyectos de desarrollo, Inostly sólo
sistemáticamente. El más notable de
2.2 Justificación de los métodos estos desarrollos debe ser sin duda el
formales desarrollo del Centro Dansk Datamatik
del DDC Ada Compiler SY+ tern
Antes del costoso desarrollo de software, [Bjørner & Oest 80,0est 86). Un
como por ejemplo t.hat de compiladores, número creciente de empresas de maíz
sistemas operativos, sistemas de gestión de europeas están utilizando uno u otro
bases de datos, redes de área local y amplia aspecto del MDV. Como consecuencia
y sistemas distribuidos, incluyendo de ello (y, puede decirse, del éxito del
componentes de ISO/OSI, antes de que el DDC Ada Compiler), la CEE
desarrollo de dicho software tenga lugar (Comunidad Económica Europea) ha
asumimos (como un dogma) la creación de establecido un Foruln Europa VDM
una especificación. Al igual que las cuyos miembros industriales y
concepciones y dibujos de los arquitectos de académicos se reúnen 3-4 veces al año
un edificio, una especificación sirve (1) para discutir temas de (1) experiencia
como contrato "legal" entre el cliente y el en el uso de VDM y sus aplicaciones,
desarrollador, (2) como base para el (2) requerimientos de entrenamiento y
desarrollo, y (3) como base para la educación, (3) herramientas, (4)
redacción de los manuales del fundamentos formales y (5) facetas de
23
VDM potencialmente sujetas a la interés para los socios de programas,
estandarización de la industria. El Foro los ingenieros de software o la gestión
Europeo de VDM celebró su primer de proyectos... Referencia [Meiling
simposio abierto del 23 al 26 de marzo 861 ofrece una introducción general a
de 1987 [Bjørncr et al. 87]. RAISE mientras que [Bjørner 85b]
VDM es básicamente una semántica ofrece una visión de röle y alcance
denotacional (es decir, un método (orientada a los requirernent.s) de
teórico, constructivo y basado en RAISE.
modelos). Las facetas del VDM es (1)
su lenguaje de especificación y diseño
de amplio espectro: Meta-IV [Bjørner
2.4 Propiedades del software
& Jones 78], (2) un gran número de Deseamos desarrollar programas
operaciones de descomposición y informáticos para a) deterministas así como
técnicas de reificación de datos [Jones b) no determinantes, c) secuenciales así
80,Jones 86]. El Meta-IV, en toda su como d) sistemas concurrentes, y para
extensión, no es un lenguaje formal, sistemas que funcionan en e) tiempo real y
pero a grandes subconjuntos del Meta- están f) distribuidos. Deseamos que el
IV se les puede dar, o se les ha dado, software para estos sistemas sea (1) apto
una semántica formal, y a las partes se para su propósito, (2) con especificaciones
les ha dado un sistema de prueba correctas de la red, (3) fiable, (4) tolerante a
formal (véase los documentos en fallos, (5) seguro, (6) mantenible, y (7)
[Bjørner y otros 87]). El Meta-IV es robusto. El software fiable rechaza
aplicable a la especificación, diseño y claramente los datos no especificados como
codificación de sistemas deterministas. entrada. El software tolerante a fallos repara
Se han hecho algunas aplicaciones a o "corrige" los datos erróneos (hasta la
sistemas no determinísticos, y se han entrada más "cercana" a la especificación) y
utilizado extensiones operacionales del también detecta y corrige o desvía los
Meta-IV, para incluir características de cambios espurios e intermitentes en los
CSP [Folkjær 80] para desarrollar datos almacenados (o en el programa). Los
sistemas concurrentes y distribuidos. sistemas de software seguros impiden que
¡Pero el VDM, en su etapa actual, los usuarios no autorizados descubran: i) lo
no es lo suficientemente bueno! Uno que hacen los sistemas, y ii) cómo lo hacen.
quiere una formalidad completa, o al Además, un sistema seguro evita que los
menos esforzarse por una mayor usuarios no autorizados (iii) impidan que el
formalidad en el uso de VDM. El sistema haga lo que está haciendo, y (iv) les
proyecto DDC/STC/NBB RAISE, deja sin saber si lo saben (iii-iii-iv)!
patrocinado en parte por el programa Asumiendo que alguna inasistencia de un
ESPRIT de la CEE, intenta remediar cambio razonable en la funcionalidad, u
las deficiencias de mayor alcance del otra, de un sistema, se dice que su software
VDM. El Lenguaje de Especificación es rnaint.able si los recursos requeridos para
y Diseño R.AISE presenta (1) la inserción de estos cambios pueden ser
instalaciones de estructuración de precisamente est.ilnat.ed y en .sorne (aquí
especificación algebraica y diseño no especificado) manera son proporcionales
(abstracto. tipos de datos y a los cambios. El software es robusto si
operaciones de tipo de datos: cualquier cambio en él no altera ninguna de
enriquecer, derivar, colübinar, resumir. sus propiedades (1-7)!
y aplicar), (2) concurrencia en el Cortn La utilidad de los formalismos para
de aserciones de trazas y CSP, (3) una abordar todos los aspectos (1-7) está aún por
semántica completa y formal, y (4) un demostrar. Ciertamente, los aspectos (2-3-4)
sistema de pruebas. El método RAISE vistos por separado se pueden obtener [Ravn
ofrece un conjunto completo de 86], y los aspectos (67) vistos por separado
principios de perfeccionamiento del resultan del uso de definiciones
desarrollo, centrados en torno a un conceptualmente limpias y transformaciones
modelo de datos plenamente homolórficas de éstas. Pero todavía hay un
desarrollado para todas las etapas y largo camino por recorrer antes de que
facetas del desarrollo, ya sean de
24
podamos garantizar plenamente todos los La primera actividad es la de
aspectos de forma satisfactoria! definir el proyecto en sí mismo.
Esta actividad se centra, en nuestro
2.5 Garantía de calidad caso, en (I) el desarrollo por etapas
del gráfico de desarrollo de software
Distinguimos entre las cualidades de un
del proyecto, ver secciones 3-4. A
proyecto y de su producto resultante.
continuación se inician dos
Para que un proyecto sea de calidad es necesario
actividades, actividades que abarcan
que sea (1) ingenioso y predecible, es decir, que,
basándose por ejemplo en un gráfico de desarrollo toda la duración del proyecto:
de software completo y consistente, se puedan establecer y mantener, (2) a
r
estimar correctamente todos los recursos .rernuinología, y (3) una biblioteca.
necesarios. personas, máquinas y finanzas mes a
mes; 2) controlable: debe haber un principio 2.6.1 Terminología
objetivo mediante el cual se pueda supervisar y, si Hoy en día la mayoría de los
es necesario, modificar el consumo de recursos; 3) programas informáticos [proyectos
económico: debe haber alguna tnea.segura de de desarrollo] introducen una serie
amnistía entre la presupuestación, la financiación,
la contabilidad y los resultados (esperados); 4)
de nuevos conceptos, y se basan
seguro: el proyecto debe conducir a los resultados también en conceptos previamente
esperados; y 5) divertido: el proyecto. establecidos no del todo
El personal debe confiar en que la establecidos. Por lo tanto, parece
dirección tiene plena autoridad y importante crear (electrónicamente),
que se enriquece intelectual, maint.ain y durante todo el proyecto
educativa y educativamente con el adherirse a una Ternünología: un
proyecto. conjunto de definiciones precisas de
Para que un producto tenga calidad los conceptos utilizados e
debe satisfacer los puntos (1-7) de la introducidos. La importancia de
sección 2.4 anterior. establecer, rnaintaintain (incluido el
La garantía es el doble acto de ajuste) y adherirse a una
asegurar tanto la calidad del proyecto Terminología fue enfatizada, para
como la del producto. mí, por Peter Naur, a quien por la
Podremos apoyar formalmente el presente reconozco con gratitud.
logro de la calidad del producto. Se Los malentendidos relativos a los
cree que los puntos informales nombres de los conceptos, la
planteados en la sección 2.5 y el forrnal vaguedad de su significado, etc., son
de las secciones 3-4 ayudan muy perjudiciales para la
indirectamente a lograr la calidad del consecución de un proyecto. La
proyecto. disciplina de establecer, mantener y
adherirse a una Terminología es una
2.6 Componentes del proyecto actividad intelectualmente muy
Se ha considerado necesario un gratificante (educadora y
número de componentes del liberadora).
proyecto, además de los pasos de En un sentido, la terminología es un
objeto formal en el que se basa en la
desarrollo de la especificación,
precisión y la economía, es decir, en la
diseño y codificación adecuados y concisión.
reales, para ayudar a garantizar una
alta calidad del proyecto y del 2.6.2 Biblioteca
producto. Dado que no están
pensados en el contexto del En cada etapa de un proyecto se
desarrollo de software, los estudian los documentos científicos,
enumeramos y explicamos técnicos y de otro tipo (informes y
brevemente aquí. publicaciones): se descartan o se
25
utilizan. Se construye una biblioteca 3 Un gráfico concreto de
de todo ello, para su posterior
consulta y para la documentación desarrollo de software
completa del proyecto. Por El gráfico de desarrollo de
Biblioteca entendemos una cosa de software [Bjørner 86a], [Bjørner 86b] es,
tres partes: sintácticamente hablando, un gráfico
1) un esquema que estructura direct.ed finito y sin ciclos. Los nodos
taxonómicamente la bib-liografía; 2) una denotan actividades de desarrollo de
bibliografía anotada, es decir, una lista de software que son parte de la
entradas, cada una de las cuales no sólo especificación, diseño y codificación. Estas
contiene una referencia bibliográfica actividades conducen a documentos de
propia, sino también, a medida que el especificación, diseño o codificación. Los
proyecto avanza, un conjunto bordes también denotan actividades que
acumulativo, de anotaciones relativas a la (primero) motivan y (después) justifican el
disposición de la referencia (su valor para paso de desarrollo. designadas por el
el proyecto, etc.); y 3) la colección de nódulo-borde-nodo triple identificado por
papel propiamente dicha. el borde. Las actividades son realizadas
De manera similar (a la Terminología) por una combinación de prograrnIners,
una Biblioteca se convierte en un objeto científicos, ingenieros de software y
formal. manager.s. Los documentos suelen ser
formales.
2.6.3 Estudio-Experiencia-Acción Desarrollo de software. Los gráficos
Cada componente del desarrollo pueden ser abstractos, pero sin sentido,
propiamente dicho, para nosotros como en la Fig. 3.1, o relacionados con el
consiste en tres actividades pha.sed: tema del software, como en la Fig. 3.2.
estudio-experimentación. Su consumo de Para que se familiaricen con los
recursos y duración de tiempo son conceptos de los gráficos de desarrollo de
típicamente 1-2-8. En la primera, la fase software, revisamos brevemente el último
de estudio, todos los miembros del gráfico basado en el uso de V DM.
componente del proyecto estudian lo que
creen que es la literatura relevante para el
componente del proyecto en cuestión. Las
presentaciones de los coloquios, por parte
de todos los miembros, identifican
aquellas ideas y técnicas que podrían ser
de interés para el proyecto. Éstas se
investigan más a fondo en la siguiente
fase, en la que se llevan a cabo
experimentos (ya sea en la especificación,
el diseño o la codificación) que implican
estas ideas y técnicas. Es decir: aplicadas a
aspectos pequeños, pero difíciles, del
problema. Por último, de las fases de
estudio-experimento debe surgir
suficiente confianza en cuanto a las
opciones técnicas a adoptar, y se lleva a
cabo una aplicación a gran escala al
problema "real", en esta, la fase de acción.
El plan de estudio-experimento-
acción está explícitamente dirigido a
fomentar el uso de técnicas formales.
26
Un gráfico del software
DoveDopment para los
sistemas ComplOor + Runtime
Coda
Codificación del lenguaje de aplicación
35
[Jones 86] C.B. Jones: Systematic
Development Using the VDM
Approa.ch, Prentice-Hall Intl.,
1986.
[Lynenskjold 87] s. Lynenskjold: Project
Graph based Resource Allocation
Schetne, Techn. Rept., Comp. Sci.
Dept., Techn. Univ. de Dinamarca,
Jan.87, 31 páginas.