Está en la página 1de 20

Suscríbete a DeepL Pro para poder editar este documento.

Entra en www.DeepL.com/pro para más información.

Sobre el uso de métodos formales en el desarrollo de


software
Dines Bjørner
Depto. de Comp.Sci., Techn. Univ. de Dinamarca
DK-2800 Lyngby, Dinamarca

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

Especificaci Definición del lenguaje de programación:


ón
Resumen
Sintaxis. Semántica estática y dinámica

Estructura de Diseño los datos en tiempo de ejecución y


mecánica
Diseño de la representación de la operación

Coda
Codificación del lenguaje de aplicación

302 : Gráfico de desarrollo de UndvusaD


Softwmn
Aseguramos un BNF granunar para el
Ada sintáctico dado. Frente a ello (etc.)
desarrollamos una Sintaxis Abstracta, un
27
conjunto de ecuaciones de dominio, en el Máquina Objetivo se desarrolla un diseño
Meta-IV, que se abstiene de para el Run-Tirne (Objetivo) Systern. Esto
consideraciones tales como palabras clave, concluye el diseño. A partir de los
secuencia lineal de objetos (como respectivos nodos de diseño se desarrolla
declaración.s cuyo ordenamiento lineal es finalmente la codificación real del
accidental y que no tienen significado). A compilador y el sistema de tiempo de
partir de la Sintaxis Abstracta ejecución.
desarrollamos, de la forma más abstracta Cada uno de los nodos puede, usando
posible, tanto una Semántica Estática, VDM en general, ser refinado en una
como una Sernántica Dinámica, ambas subgrafia de ocho nodos, ...ver... Fig. 3.3.
incluyendo el tratamiento de la A cada uno de los nodos y bordes
concurrencia, etc. Juntos estos cuatro corresponde un conjunto bien definido de
nodos (y sus bordes intermedios) técnicas de förmal.
representan la parte de especificación del Explicamos estas, en general, para cada
desarrollo. Ahora sigue, en general, un una de las cuatro áreas de T.H.C.:
número de etapas de diseño. Primero programación, ingeniería, administración y
centramos nuestra atención de desarrollo ciencia de la computación básica; pero,
en lo que hay que hacer en lo (cada vez primero, echamos un vistazo general a los
más) concreto, luego en cómo realizar las gráficos.
funciones así diseñadas. Es decir: primero
desarrollamos una versión más concreta y
secuenciada de la Semántica Estática
(llamada Análisis Ccmántico), y versiones
más operativas, o mecánicas, de aspectos
secuenciales de la Semántica Dinámica Dominio

(llamada Semántica Mecánica o Macro- Bien formado


Sustitución). Esta última exhibe
fimdament.als de la estructura de tiempo
3. Función auxiliar 6. Definiciones de la
de ejecución de los programas [Ada]. De la función auxiliar 7. Definiciones
Semántica Dinámica Mecánica derivamos semánticas
Tipos de función
primero la definición de un Vil% tual Target
8. Semántica
Machine, una máquina "óptimamente" Definiciones de la función
adecuada para ejecutar programas en el
lenguaje fuente (viz.: Ada); o tal Target
Machine (viz.: DEC VAX) ya está dada. m- El caso de la semántica de Denotationai

om la definición de Target Machine y la


Semántica Dinámica Mecánica u Fig.3.3
Operacional semant.ic Semántica i.s derivó
un llamado Connpiling Algoritlun. Este
último define la secuencia exacta de la
instrucción de la máquina de destino que 4 Gráficos de desarrollo
debe generarse para cada construcción de software en general
(esquemática) del lenguaje de origen. A
partir de los datos concretos del front end 4.1 Desarrollo de gráficos
(Sernant.ic Analysis) y del back-end
(Cornpiling Algoritlun) desarrollamos la Meta-Gráficos
posible estructura multipaso del A cada clase ("equivalencia") de
compilador, de todos los lenguajes software le corresponde un gráfico de
intermedios y del administrador multipaso. desarrollo de meta software. Así, un
De la Semántica Dinámica también se gráfico de desarrollo de meta software
deriva una descripción concreta de lo que describe cómo desarrollar toda una
hay que manejar en la asignación de tareas; clase de software "similar". El gráfico
y a partir de esto y de la definición de la anterior es un metagráfico para el
28
desarrollo de compiladores de la clase (véase el apartado 4.2) le corresponde
ALGOL/Pascal pero con asignación de un producto y a él un gráfico, una
tareas (procesos, concurrencia). Por lo "versión" del gráfico del proyecto. En
tanto, es válido para el desarrollo de lugar de ciertas, y además de otras
compiladores para lenguajes como anotaciones de proyecto (es decir, de
Concurrent Pascal, Pascal Plus, CHILL, proceso) contiene adicionalmente
occam@, Modual-2, y Ada. Existen producto (es decir, resultado) attril)utes.
otras clases: un gráfico, básicamente es
necesario para el desarrollo de, por
ejemplo, sistemas operativos UNIX, o 4.2 Atributos de la
LAN (redes de área local), o Sistemas programación
de Gestión de Bases de Datos El principal atributo en este caso es el
Relacionales, etc. Así pues, los del método utilizado en el desarrollo
metagráficos son genéricos y su
(ejemplos: VDM, HDM, HOS, JSD,
estructura y significado es el resultado
RAISE, Este atributo pertenece a un
de la investigación y a ellos deberían
gráfico completo. En base a nodos y
llegar los científicos de la universidad o
bordes tenemos, refiriéndonos aquí sólo
la industria.
a los atributos secundarios relacionados
con V DM). Nodos: técnicas de
Gráficos del proyecto especificación como configuración, o
La industria del software cuando se reanudación, o salida, o semántica
enfrenta al inicio. de desarrollo: de directa para modelar los GOTO y las
software selecciona un apropiado.e excepciones; modelo de
metagráfico a partir del cual desarrolla almacenamiento de localización/valor
un gráfico de proyecto. El gráfico del plano, localización/valor estructurado
proyecto. es una versión posiblemente plano, o localización/valor estructurado;
enriquecida o derivada del Ineta-graph modelo imperativo; Inodel aplicativo;
junto con sus cuatro clases de definiciones de funciones
anotaliones. Estas cuatro clases son las principalmente putativas; definiciones
que dan atributos de nodos y bordes a- de funciones principalmente plicit
priori que definen las tareas que tienen (pre/post condición); etc., etc. Bordes:
por delante los programadores, técnicas de transformación del diseño
ingenieros de software, gerentes y como pliegue/despliegue/abstracto
científicos "residentes", así como [regla instancial transformat.iones
observaciones a-posteriores que grudados; transformación
describen las principales propiedades completamente automática (es decir,
del desarrollo del software, también compilación); o transformaciones
occarn es una marca registrada de manuales -esta última anotada más
inmos Ltd. (REINO UNIDO)
adelante con sununario del teorema- que
para cada una de las cuatro clases, a.s prueban las estrategias y tácticas; etc.,
que transpiraron al llevar a cabo el etc. En caso de desarrollo no basado en
proyecto en sí. VDM, otros atributos pueden ser
Así pues, destacamos la importancia de
pertinentes.
llevar a cabo minuciosamente la cuidadosa
planificación que se manifiesta en el acto de
asignar atributos. 4.3 Atributos de la ingeniería de
software
Gráficos de productos Aquí hay cuatro tributos primarios: (1)
La ingeniería de software abarca desde nanne y características del syst.em de
el seguimiento de los requisitos, las soporte mecanizado (herramientas); (2)
pruebas hasta la ingeniería de productos. los principios de rastreo de
A cada configuración de versiones requerimientos; (3) la estrategia de
29
generación de t.est.; y (4) el principio resultantes comprobados con estos
de registro, versión y configuración. atributos.
Atributos secundarios para cada una de Normalmente las especificaciones
las áreas respectivas siguen definen las funciones totales y, por lo
trivialmente. tanto, normalmente requiere un
razonamiento en una lógica de 2
valores. Normalmente los documentos
4.4 Atributos de la gestión de diseño definen funciones parciales y
Hay dos a-priori, atributos primarios de por lo tanto requieren un razonamiento
gestión input.s: por nodo y por borde en una lógica de 3 valores. Los bordes
entre, por ejemplo, los "nodos" de la
hay una estimación, en forma de
lógica de 2 y 3 valores también denotan
histograma, de los requerimientos de morfismos institucionales. Algunos,
Inanpower (máquina, etc.) por mes normalmente nodos de especificación,
(tiempo virtual) (para hacer la actividad denotan documentos que definen
del nodo, respectivamente borde), y dominios en una teoría de Scott de
para todo el proyecto (es decir, su retracciones, mientras que otros,
gráfico) hay un histograma de la mano normalmente nodos de diseño, denotan
de obra total disponible (máquina, etc.). documentos para los que basta una
Un "resultado" primario es un mapeo teoría de dominio simple (setteórica) å
de los recursos requeridos en tiempo lå Blikle [Blikle 83]. Se podrían
real de acuerdo con uno de varios enumerar muchos otros atributos de la
principios de asignación y según lo informática.
restringe el histograma de
disponibilidad (Lynenskjold 87]. 4.6 Observaciones
Hay otros atributos de gestión No hemos explicado en detalle los
primarios: principio para la tributos de proyecto versus
supervisión y control del proyecto, producto, ni los atributos (de nodos
incluidos los planes de prioridad y y aristas) que se asignan durante el
reasignación, principio para la proyecto propiamente dicho.
generación de planes renovables Tampoco hemos distinguido
(informes), etc. La vigilancia sistemáticamente entre los atributos
incluye la frecuencia del muestreo de entrada del desarrollador ab
de los recursos realmente init.io y los atributos parcial o
utilizados; el control estipula los totalmente derivados (computados).
principios para las medidas Hay muchos otros att.ributes,
correctivas o de ajuste (por esquemas de atributos y propert.ies
sobreutilización o infrautilización que tampoco hemos tratado.
de los recursos); y el plan móvil es El objetivo de asignar homenajes
una presentación tabular de estos y luego, en el desarrollo adecuado,
asuntos destinada a ser utilizada en adherirse a sus prescripciones, es
(1) las reuniones de gestión del fortificar tantos aspectos del
proyecto, y (2) la contabilidad. desarrollo como sea razonable. Esta
"disciplina" da libertad durante la
4.5 Atributos de la informática ac-
desarrollo del t.ual.
teórica
Los nodos denotan documentos, y los 5 Arquitectura de un
documentos (de especificación, diseño
o código) denotan teorías. Los bordes
software total
denotan mapeos, a veces morfismos, Sistema de apoyo al
entre teorías. La naturaleza exacta de
las teorías y mapeos puede ser desarrollo
planificada y los documentos
30
Hemos esbozado, en la sección 4, un los desarrolladores y el sistema de acuerdo
método basado en gráficos. Hemos con el significado de los gráficos, nodos y
explicado, de forma puntual, algunos de sus bordes, y como parametrizado por el
puntos detallados sobre el uso de VDM. conjunto de técnicas embebidas (es decir,
Otras técnicas foráneas, diferentes a las de instanciadas) (por ejemplo, VDM).
VDM, podrían instanciar el método basado El siguiente "árbol" solariza la
en gráficos del software Clevclopnnent. estructura taxonómica básica y las
Ejemplos de esto último son: JSD ("Jackson características salientes del sistema
System Design"), HDM ("Hierarchical propuesto.
Developnnent Method"), HOS ("Higher
Order Software"), RAISE ("Rigorous
Approach to Industrial Software Desarrollo de Gráficos Soporte
Engineering"), etc. del Subsistema Soporte del
En esta sección esbozaremos la Repositorio de Gráficos
arquitectura de un sistema de apoyo total al (Biblioteca de Meta Gráficos)
desarrollo de software. Por tal sistema nos c Soporte del Refinamiento de
referimos a un sistema computarizado Gráficos
(hardware/software) que proporciona (Especificación y diseño)
herramientas mecanizadas para todos los
aspectos del desarrollo (especificación, Gráfico Inst, soporte de antiationes
diseño y codificación), tanto de los gráficos (De Meta-, vía Proyecto- a Gráfico de
de desarrollo de software (Ineta, proyecto y Producto)
producto) como del software cuyo desarrollo Atributo. Apoyo a la asignación
prescriben ; para todos los grupos de
Atributo Apoyo a la Cornputación
desarrolladores (programadores, ingenieros
de software, administradores y científicos); y Soporte del subsistema de ejecución de
que refleja de manera transparente todo el gráficos
gráfico de desarrollo de software basado en
Ejecutor de nodos
el método Ineta, así como el conjunto
Herramientas sintácticas
particular de técnicas de especificación,
diseño y codificación (como para exanil)le Estructura y Sintaxis Dirigida por
VDM) al que está instanciado. Editores
Por lo tanto, la arquitectura debe Impresoras bonitas
directamente, en el nivel más externo, el Soporte de diario * Referencia
desarrollo de software gráfico, elnbody el cruzada etc. Apoyo
no.iones de (1) gráficos de desarrollo de Herramientas sensuales
soft.ware -incluyendo meta-, proyecto- y Herramientas de análisis de datos,
gráficos de productos; (2) su desarrollo e lógica y control de flujo
inauguración-incluyendo la asignación de Herramientas de comprobación
atributos y el cálculo; (3) nodos y bordes- estática (tipo)
incluyendo sus .significados sintácticos, Herramientas de interpretación de
semánticos y prácticos, tanto para Dynanlic * Proveedores y
programadores, ingenieros de software, verificadores de Theorelii
gerentes y científicos residentes; (4) la Herramientas pragmáticas
ejecución de gráficos de desarrollo de
Herramientas de rastreo de decisiones
software - permitiendo la ejecución
de diseño y de requerimientos
simultánea de nodos y aristas
Herramientas de control de
independientes, y dentro de cada uno de
versión y configuración
ellos la ejecución simultánea (de un nodo o
Generadores, probadores y
arista) por varios desarrolladores de las
cuatro categorías de desarrolladores. Los validadores de casos de prueba
puntos (1-2-3) se relacionan, en un sen.se, Edge. Ejecutor
con el desarrollo de gráficos de desarrollo
- Herramientas de derivación automática de
de software. El punto (4) a su ejecución;ión.
nodos
Por ejecución de un gráfico de desarrollo de
software entendemos una interacción entre
31
Herramientas de reglas de desarrollo (es decir, donde en el
transformación, unificación y reescritura gráfico) se encuentra, y que tenga
Herramientas de derivación de nodos acceso a herramientas para todas las
"manuales". facetas sernánticas, sintácticas y
pragmáticas del rnethod y sus técnicas.
Editor de la estructura, sustituto,
En sununary deseamos que el usuario
herramientas de la regla de
se sienta como en el asiento del
reescritura * Herramientas de
conductor de un coche de conducción
prueba de obligación y de
avanzada cornfort.able: rueda, pedales
descarga (Proving and
de acelerador, frenos, cambio de
Verific.ations)
marchas (palanca o automático) y una
Sub-sistema de gestión variedad de interruptores, uno para
cada una de las funciones. La
Asignación de recursos,
conducción puede ser una interacción
-Supervisión y apoyo al control
agradable entre el coche y el
Gráficos de apoyo a la evaluación,
conductor, así como el uso del sistema
la vigilancia y el control
de apoyo al desarrollo.
Apoyo a la evaluación, vigilancia
y control de los nódulos (iv) En toto la estructura conceptual más
Edge. Apoyo a la evaluación, la que la de aplicación del sistema de
supervisión y el control apoyo airn.s a inducir el uso de un
R.esident' Científico Sub-Systexn método formal con todas sus técnicas e
instrumentos formales constituyentes.

Algunas observaciones pueden ser 6 La realidad, la filosofía y


necesarias. la sociología del uso de
(i) El "árbol" anterior refleja las ofertas formalismos en el
funcionales del .syst.ems, no su
estructura implementada. El hecho de
desarrollo de software
que pueda haber un "gestor de Hemos propuesto un marco total para el
ventanas", un "shell de conunancl" y desarrollo de software. Hemos construido
una "base de datos orientada a objetos" este marco alrededor de znany años de uso
posiblemente di.stribuída, un de VDM; y el aspecto más básico del marco
"procesador de transacciones se ha utilizado durante al menos 6 años. Así
t.ransaction" que permita copias de que no estamos postulando nuevas ideas no
seguridad y recuperación, etc., es probadas, no comprobadas. Al contrario.
realmente una preocupación muy Pero básicamente hemos usado estas ideas
menor para el usuario. No reflejan ni de forma sistemática, en lugar de
el método ni sus técnicas, sino más formalmente, básicamente porque no hemos
bien las limitaciones de la aplicación tenido el apoyo informático necesario para
(tecnología). ayudarnos. Hemos reconocido
(ii) El "árbol" de la función refleja, por lo repetidamente, a lo largo de los años, la
tanto, que el conjunto de herramientas necesidad de apoyo informático, pero no nos
del sistema está profundamente hemos precipitado (sabiamente, creemos
arraigado en la serenidad del método, ahora) a instrumentar ideas que entonces no
en lugar de representar, por error, el estaban conceptualmente completamente
habitual método ad hoc de evaluación desarrolladas. Donde antes, sin usar
de herramientas principalmente herramientas, de cualquiera de los tipos
sintácticas y pragmáticas que no están descritos anteriormente (ni sintácticas, ni
vinculadas a ningún método. senáticas, ni antes)
podíamos registrar el desarrollo. cuesta sólo
(iii) Deseamos que el usuario del sistema el 25% de los de otros desarrollos,
(el desarrollador) tenga, en todos los esperamos. ¡hacerlo mucho mejor con
tirnes, un conocimiento exacto y herramientas formalizadas! Pero no
"pago" por donde en el proceso de esperamos que éstas resulten en ahorros en
32
los costos reales de desarrollo, ni en una departamentos de informática
reducción significativa del tiempo de orientados a la programación de la
desarrollo. En lugar de ello, esperamos Inetología; muchos han aprendido las
poder entregar eventualmente un software teorías sobre los progrmas que no
confiable, un software que satisfaga todas sirven para la programación; 2) empleo
las calidades de producto descritas en las de esas personas en grupos de masa
secciones 2.4-2.5. También nos hemos crítica; y 3) instrumentos apropiados.
convencido de que el desarrollo de software La producción de candidatos
es demasiado costoso. ¡Creo que se hace adecuadamente educados y capacitados
demasiado barato! es responsabilidad de las universidades,
Los clientes no se levantarán para y los Ino.st aún no comprenden y
exigir todas estas cualidades, aunque distinguen la ciencia de la computación
unos pocos (como el Departamento de de la informática, y no hacen hincapié
Defensa de EE.UU.) pedirán un hijo. en la ciencia de la computación! El
En cambio, las nuevas empresas de empleo es el reino de las casas de
informática podrán garantizar cada vez software, y muy, muy pocos de sus
más a Inore esas cualidades, y es "a su gerentes entienden la necesidad de
manera" que veremos llegar el uso de contratar personas formalmente
formalismos: mediante productos más capacitadas, y mucho menos de asignar,
adecuadamente iluminados, mediante a los pocos que consiguen, para formar
software más fiable, mediante una grupos con suficiente personal. La
mayor productividad (relativa), pero producción de herramientas está, de
también porque la generación más nuevo, en el dominio de la industria.
joven de desarrolladores de software no Las herramientas producidas en la
querrá: hacerlo de otra manera. universidad son generalmente
Hay pocas esperanzas de que las semánticamente avanzadas, pero los
empresas de software y los fabricantes prototipos en los sentidos t.hc. (1) de
de computadoras existentes ("viejos") ser aplicables sólo a datos muy
se den cuenta de los métodos foráneos pequeños (es decir, no aplicables de
de desarrollo de software. Las viejas manera realista al tipo de grandes
formas de hacer software están ejemplos que suelen surgir en la
demasiado arraigadas en la industria), y (2) de ser pobremente
administración y el personal. He (¡locutnados! Las herramientas
experimentado en la industria producidas por la industria son
establecida enormes lagunas en el invariablemente siempre vacías
conocimiento l)asico sobre incluso el sernanamente, presentando sólo
concepto más básico. s--o sea, lo que herramientas sintácticas y pragrnat.ic, y
los actuales graduados están luego en combinaciones ad hoc.
aprendiendo. La mayoría de los Nunca se demostrará que las viejas
gerentes existentes ni siquiera son formas en que el software está siendo
capaces de desarrollar software y por lo diseñado hoy en día por IBM y todos
tanto no tienen autoridad para hacer sus competidores están equivocadas.
gestión. y están completamente a Eventualmente morirán por falta de
merced de la jerga y las excusas de sus uso, ya que la nueva generación ha
"programadores-ingenieros de crecido con los nuevos métodos:
software".
Creo que el progreso en el uso de los "Las viejas teorías nunca se
métodos formales sólo se producirá si prueban equivocadas. Sólo... se
se cumplen tres condiciones: l) dictan por la falta de uso por
parte de las nuevas
producción de suficientes candidatos de
generaciones...
habiendo crecido con nuevas teorías" - desarrollad teoría en el sentido de
Erwin Schrödinger, Autobiografía. ores de ser demostrable, es
Lo que hemos propuesto en este software..: decir, demostrable "la
documento es una "teoría". Hay muchas "%net.hods teoría". Es, como las
"teorías". Esta, como Inost, otros ", no es una "teorías" de la
33
informática de Inost, más bien una [Bjørner 85b] [Folkjær 80]
conjetura. No se puede probar su
superioridad, ni las "teorías" de otros. y
Sólo la práctica lo dirá, y controlará tal Requerimi
"cambio de mando": entos,
Dansk
"No hay teorías, y no hay pruebas. Datamat.ik
Puede haber conjeturas, y a veces [Jackson 75]
Center,
hay tristes refutaciones" - esencia Techn.
de un aspecto de la Teoría de la Rcpt.,
Ciencia de ICarl Poppers. RAISE/D
[Jackson 83]
DC/EM/I
Para terminar, hemos intentado para cada
faceta y aspecto del software y su desarrollo, v6, -10.
identificar formas y medios de formalizar Diciembre
[Jones 801
estas características en la mayoría de las 85, 1.985.
D.Bjørner. Gráficos y
secciones y subsecciones. [Bjørner
meta-programas del
86a]
proyecto: Towards a
Theory of Software
Referencias Development, Capri
Conference on Innovative
H. Bekié y otros..: A Formal Definition of
Software Factories y Ada,
PL/1, TR25.139,
mayo de 1986, para
IBM Laboratory,
aparecer en Springer
Viena, 1974.
Lecture Notes in Computer
[Bjørner & Jones 78] D. Science, eds. N.
Bjørner & C.B. Habermann y U.
[Bjørner Montanari, 1987.
Jones: The Vienna
86b]
Development
D.Bjørner: Gráficos de
Method: tlLe Meta.-
Language, Springer Desarrollo de Software: A
Verlag, Lecture Unifying Theory for
Notes in Computer Software Development?,
Science, vol. 61, New Delh, 6th Conf. on
1978. Foundations of Software
Technology and
Towa.rds a. Formal Description of Ada, Theoretical Computer
Springer Verlag, Science, Springer Lecture
Lecture Notes in [Bjørner y Notes in Computer
Computer Science, otros 87] Science, vol. 241, ed.
(eds. D. Bjørner & K.Nori, págs. 1 a 9, 1986.
O.N. oest), vol. 98,
1980. VDM Symposium '87 - a
Formal Method at work,
D. Bjørner & C.B. Jones: Formal VDM Europe Conference,
Specification a.nd Bruselas, Marzo 87,
Softwarc Springer Verlag, Lecture
Dcvcl.opne-nt, Notes in Computer
[Bjørner 88] Science, (eds. D. Bjørner,
Prentice-Hall Intl.,
1982. C.B. Jones, M. Mac an
[Bjørner 85a] D.Bjørner: El R,öl.e y el Airchinnig, E. Neuhold),
alcance de la definición [Blilde
formal 83] 1987.
de Ada, Dansk Datamatik D. Bjørner: Arquitecturas
Center, Techn.Rept. AdaFD/ de software y diseño de
DDC/ DB/ sistemas de programación,
6 1985-12-09, 1985. 6 volúmenes, 1988.
34
A.J.B1ik1e & A.Tar1ecki: Naive
Denotational Semantics, in: Information
Processing 83, ed. R.E.A. Mason, IFIP
Congress Proc. , North-Holland Publ.,
1983.
P.F01kjær & D.Bjørner. A Formal Model of
a Generalised CSPlike Language,
Information Processing 80 (ed.
S.H.Lavington), North-Holland Publ., pp.
95-99, 1980.
M.A. Jackson: Principios de Diseño de
Programas, Acadernic Press, 1975.

M.A. Jackson: Desarrollo de sistemas,


Prentice-Hall Intl., 1983.
C.B.- Jones: Software Development, a
Rigorous Approach, Prentice-Hali Intl.,
1980.

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.

[Meiling 86] E. Meiling & C.W. George: The


RAISE Language and Method,
Proc. ESPRIT Techno week, Sept.
1986, North-Holland Publ.,
también: Dansk Datamatik Center
Techn. Rept. RAISE/ DDC/ EM/
21 VI, 11. sept. 1986.
[Oest 86] O.N. Oest: VDM from Research
to Practice, IFIP Congress '86,
North-Holland, Proc. 'Infomnation
Processing 86', pp. 527-533, 1986.

[Randell 69] Ingeniería de Software, R.ept.


NATO Sci. Comm., (NATO Sci.
Affairs Div., Bruselas 1039,
Bélgica), enero de 1969 (eds. P.
Naur & B. Randell).
[Ravn 86] A.P.Ravn: Clasificación de Fallas
en Sistemas Distribuidos, en:
Information Processing 86, ed.
H.J.Kug1er, IFIP Congress
Proceedings, North-Holland Publ.,
pp. 735-738, 1986.
29

También podría gustarte