Está en la página 1de 14

Suscríbete a DeepL Pro para poder editar este docu

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*
Maquinaria de Computación. Para copiar de otra manera, o para volver
Resumen a publicar, se requiere una cuota y/o un permiso específico.
Proponemos un marco total para las etapas de desarrollo de
software de especificación (definición), diseño y codificación.
Este marco se basa en tres piedras angulares: a) el concepto
de gráficos de desarrollo de software que especifican todas 0 1987 ACM 02705257/87/0300/0017$00.75
las etapas y pasos del desarrollo; b) el uso de métodos
formales, en nuestro caso el VDM, el Método de Viena para
el Desarrollo de Software, en todas las etapas y pasos del
desarrollo; y c) los roles claramente separados de los
informáticos teóricos, programadores, ingenieros de software
y gerentes de desarrollo en todos los aspectos del desarrollo
de software. Así pues, no sólo se formaliza la programación
(es decir, los programas se consideran objetos formales), sino
la corrección de los programas informáticos, 3) porque
también el desarrollo, su ingeniería y su gestión (es decir,
los desarrollos que han utilizado formalismos han sido
toda la programación en sí misma se considera también un
mucho más productivos, en un orden de magnitud de 3 a
objeto formal sobre el que razonar).
5 veces, que los desarrollos que no utilizan formalismos,
y 4) porque es divertido, incluso intelectualmente
Preludio personal satisfactorio, utilizar el formalismo. Una parte intrínseca
Se me ha pedido que relaten 14 años de experiencia en "el uso del formalismo (VDM) que hemos desarrollado y
de formalismos en la ingeniería de software". He elegido utilizado es la abstracción. La abstracción en la definición
abordar esto proponiendo, como se anuncia en el resumen, un (especificación) del software, pero también la abstracción
marco total para el desarrollo de software. Identificamos en su diseño. Es decir: (I) primero (especificación) nos
todos los factores igualmente importantes que entran en el abstraemos de cualquier implementación y nos
desarrollo y mapeamos cada uno de estos aspectos en nuestro concentramos sólo en las [propiedades de las] funciones
modelo de desarrollo de software. Wc no utiliza formalismos que deseamos exhibir al usuario; (2) luego (diseño
por el hecho de ser sólo fornmal. Utilizamos formalismos (1) abstracto) nos abstraemos del software logra estas
porque parecen ayudar a estructurar más finamente el funciones centrando nuestra atención en lo que los
desarrollo, (2) porque arquean los medios primarios que componentes conceptuales del software computan; (3)
conocemos para ayudar a garantizar luego (diseño concreto) describimos abstractamente
cómo el software computa, antes de (4) finalmente
codificar el software. La abstracción, y en estos diversos
*El uso de formalismos en la ingeniería de software niveles, ayuda a (1) "dividir y conquistar" la complejidad
[aparentemente intrínseca] del software, ayuda a
construir (2) conceptualmente Inore t.ransparent
irnplementaciones del sistema. Tal vez unas pocas
El permiso para copiar sin cargo todo o parte de este material se personas puedan desarrollar sistemas tan bellos sin
concede siempre que las copias no se realicen o distribuyan para utilizar formalismos (aunque lo dudo), pero estamos aquí
obtener un beneficio comercial directo, aparezca el aviso de derechos
de autor de la ACM y el título de la publicación y su fecha, y se para desarrollar métodos para otros que no sean los
notifique que la copia se realiza con permiso de la Asociación de genios únicos- y, cuando todo está dicho y hecho, sólo el
desarrollo formal puede posiblemente dar alguna
confianza en la corrección del sistema de software.
El papel no es técnico. (1) El corto tiempo dado
(diciembre-enero 86) para escribir el trabajo, (2)
17
cuatro semanas de conferencias en este período cuádruples facetas de la informática teórica, la
(India, China, Japón y los EE.UU.), (3) el hecho de programación, la ingeniería de programas informáticos
que otros tres trabajos también tuvieron que ser y la gestión; y v) desde el punto de vista de sus
escritos, (4) Navidad y Año Nuevo, y (5) curso de repercusiones, con un entorno de apoyo total, no sólo
primavera de preparación de conferencias - todo eso orientado a la sintaxis y la pragmática, sino también al
puede ser una mala excusa. Pero de todas formas desarrollo de programas informáticos orientados a la
rogaré a los lectores que lo entiendan. Por supuesto, semántica. La conclusión vi) examina la realidad, la
creo que en este artículo he tratado aspectos "filosofía" y la sociología de conseguir que la gente
cruciales del "uso de formalismos en la ingeniería utilice métodos formales.
de software". He elegido identificar las muchas
facetas, aspectos y conceptos que entran en el
desarrollo de software y trato de señalar los que ya Introducción
pueden ser formalizados, presentando el conjunto de
El resumen y la reseña han esbozado nuestro objetivo.
tal manera que se invite a más...
malización. No estoy postulando ideas no probadas. Todo lo En esta introducción vamos a motivar y justificar
que se describe a continuación ha sido probado y demostrado nuestro enfoque.
como deseable - sólo que todavía carecemos de herramientas Aunque los términos "crisis del software" e
formales para su apoyo. "ingeniería de software" parecen haber sido
ampliamente adaptados a partir de 1969 [Randell 691
S ummary vemos pocos cambios, en la industria (casas de software,
fabricantes de computadoras que programan
(Las partes i-iv abajo se encuentran en las secciones 1-6.) centros), en el camino de la mejora. La mayoría de los
Este documento consta de seis partes. Las primeras desarrolladores de los compiladores de Ada@, por
cinco (i-v) partes constituyen unidades más o menos ejemplo, fueron más allá de las estimaciones iniciales, no
independientes que, al estar ensartadas, preparan el utilizaron ninguna, o sólo "al azar", de las muchas
camino para la última parte: (vi) reflexiones solas sobre técnicas formales disponibles en la actualidad y, como
lo que se necesita para conseguir que las ideas se consecuencia, parece que dieron lugar a productos poco
propaguen en general, ¡y qué obstáculos puede haber fiables que son difíciles y costosos de mantener.
para ello! En primer lugar i) definimos los conceptos de En los años transcurridos desde 1969 se han
"ciencia teórica de la informática", "ciencia de la propuesto un gran número de técnicas formales (por
informática" (o: "metodología de programación"), algunos incluso llamados métodos), casi
"ingeniería de software" y "gestión del desarrollo de exclusivamente en el ámbito académico, y muy
software", y discutimos brevemente los roles de las pocas de ellas se utilizan realmente en la industria.
siguientes categorías de personal de desarrollo de Nos referimos aquí primero a tales técnicas como (1)
software: "científicos residentes" "programadores" probar que las anotaciones de los programas en
"ingenieros de software" y "administradores". A forma de afirmaciones usando sonle forni de Hoare
continuación, ii) definimos el concepto de "métodos Logic (Proof Systenl), (2) definir formalmente las
formales" y nos centramos en el estado actual del uso de funciones de software usando semántica algebraica
los métodos formales en la programación profesional. o denotacional, y (3) transformar los programas
También definimos el tipo de proyectos y productos de desde sus especificaciones, a través de su diseño, en
software a los que se pueden aplicar los métodos código. Dentro de cada una de estas tres áreas (1-2-
formales. Ahora (iii) sigue una parte central del 3) hay hoy en día una abundancia de teoría y
documento en la que introducimos el concepto de también propuestas para su explotación práctica.
gráficos de desarrollo de software: se trata de gráficos Pero, llegando a la segunda parte de la primera frase
acíclicos y dirigidos cuyos nodos en general denotan de este párrafo, muy poco de esto está siendo
actividades de especificación, diseño o codificación que utilizado realmente por la industria.
conducen a documentos y cuyos bordes en general Las razones de esta falta de adopción de técnicas
denotan actividades que motivan y justifican diseños formales por parte de los videntes de la industria no sólo
con especificaciones, diseño con código, etc. Los nodos son sociológicas, sino también la falta de un método
firme y total que ofrezca un marco unificador para al
sin bordes de entrada o "tempranos" en el gráfico
menos algunas de las técnicas. La razón sociológica de la
denotan especificación; los nodos sin bordes de salida o falta de aceptación parece tener sus raíces en varios
"tardíos" en el gráfico denotan codificación; los nodos factores: los directores de desarrollo de programas
interiores denotan diseño. Este concepto de desarrollo pertenecen a una generación a la que no se le enseñó
de programas informáticos se examina a continuación iv) informática y programación, o se le enseñó de maneras
desde varios puntos de vista: en primer lugar, desde las muy diferentes a las que suponen estas técnicas formales

18
más recientes, que también pueden ser diferentes de la
manera en que se enseñaron los programadores, que se
1 Las ciencias de la computación y
supone que son los directores. El resultado es los roles de los desarrolladores
básicamente -que un mínimo común denominador
concerniente al desarrollo de software ennoblece En esta sección damos un vistazo a las profesiones y a los
subconscientemente. En esto no hay lugar para técnicas profesionales de nuestro campo (de desarrollo de software).
formales. La brecha entre las técnicas formales que El objetivo es proporcionar una comprensión más refinada del
ofrece la investigación y las "técnicas" del desarrollo de entorno interno en el que se desarrolla el software. El entorno
software industrial se está ampliando! externo, que tiene que ver con las relaciones con los clientes,
no se tratará aquí. Creemos que una descomposición más fina
En contraste con esto vemos la existencia de más
de las ciencias y la ingeniería, y los roles de las personas que
y mayores departamentos de ciencias de la se describen a continuación, es beneficiosa para el desarrollo.
computación que producen no sólo interesantes Evidentemente, no podemos demostrarlo, pero podemos
resultados de ciencias de la computación, y muchos referirnos a los desarrollos [Oest 86] que, encarnando el
candidatos entrenados forzosamente en estos, sino espíritu de esta descomposición, han tenido éxito no sólo en
también, afirmo, una insuficiencia de resultados en conducir a un software fiable desarrollado a tiempo y con
la metodología de programación, especialmente en recursos, todo ello a un nivel mucho mejor que los desarrollos
lo que se refiere a los aspectos de "método" de la compulsivos, sino que también fueron proyectos "divertidos":
puesta en marcha de "técnicas". intelectualmente satisfactorios, y proyectos en los que todo el
Es un signo revelador, a veces inquietante, de que la personal tenía confianza. Atribuimos parte de estos éxitos a la
mayoría de los llamados "métodos" que se están comprensión de los aspectos tratados en esta sección.
propagando fueron creados básicamente en pequeñas Atribuimos parte de estos éxitos a haber utilizado un
empresas de software, y por individuos con poca o "met.hod" formal (en este caso VDM), y a haber formado una
ninguna inclinación a considerar una base foránea para su odisea de cuatro años de desarrollo en torno a un gráfico de
trabajo. Así, la mayoría de los desarrollo de software claramente aceptado. Pero lo primero
es lo primero.
@Ada es una marca registrada del Gobierno de los Estados
Unidos (Ada 1.1 Las ciencias de la computación
Conjunta, Oficina de Progranune) Las ciencias de la computación y la ingeniería consisten aquí
estos métodos (con la refrescante y notable excepción de en: ciencias de la computación, ciencia de la computación,
JSP/JSD [Jackson 75,Jackson 83]) no llegaron al entorno ingeniería de software y hardware.
abierto de revisiones por pares que ofrece el mundo
académico, sino a uno industrial impulsado por motivos
Informática
comerciales. Las revolucionarias posibilidades de largo La ciencia teórica de la computadora de maíz es el estudio de
alcance y de horizonte lejano de la investigación universitaria los progresos:
formal, bien fundada y criticada abiertamente, han sido
sustituidas por las ofertas evolutivas y de corto alcance, aquí -de lo que es computable (meta-matemática, teoría
y ahora, de propuestas ad hoc en tirnes, incluso celosamente de la computabilidad, de lo complejo que es
religiosas. computar las cosas (análisis de algoritmos, teoría de
Por lo tanto, sobre el trasfondo de las afirmaciones la complejidad), del fundamento Inathematlcal para
fanfaristas de arriba, tal vez sea presuntuoso afirmar varias abstracciones de la computación (teoría de
ahora que el objetivo de este documento es reducir la los autómatas, teoría del lenguaje formal, teoría de
brecha entre los resultados semánticos exóticamente redes, teoría del dominio de puntos fijos, semántica
bellos de la academia y las siempre pedantes denotacional, semántica algebraica), y del
preocupaciones sintácticas y pragmáticas de la industria: fundamento del razonamiento que se da en la
en resumen, proponer un fratnework, un método para el programación (sistemas de prueba, Hoare Logics, )
desarrollo "total", en el que se entiende por "total": todo
el espectro desde la especificación funcional hasta la
codificación, todo el espectro desde los gestores, Ciencias de la computación o ciencias de la
pasando por los ingenieros de software y los
programadores, hasta los científicos "residentes" del programación y metodología
proyecto, y toda la fuerza de todos los resultados La ciencia convincente es el estudio de la
teóricos aplicables aplicados a todo el espectro. programación:

-de las metodologías, lenguajes, técnicas y


herramientas que intervienen en el desarrollo de

19
software: análisis y definición de requisitos; herramientas siempre reflejan una nueva instancia de
especificación funcional y no funcional; una metodología, pero están sujetas a las limitaciones de
transformación de programas; de las técnicas la tecnología actual y a los conocimientos teóricos).
especiales de desarrollo necesarias para asegurar un
software fiable, robusto, tolerante a fallos y seguro; Programador vs. Ingeniero de Software
y codificación. El ingeniero de software "aprovecha" las leyes de
la naturaleza, el programador las leyes de las
Ingeniería de Software matemáticas, la informática y la computación. El
ingeniero de software interactúa con las
La ingeniería de software es la
práctica de los programas y la limitaciones siempre actuales de la tecnología de
hardware, el programador con las siempre fijas
programación:
leyes de la computación. La misma persona es a
-que incluye las preocupaciones sintácticas y veces un programador, a veces un ingeniero de
pragmáticas tanto humanas como mecánicas software, y un buen programador sabe exactamente
(construcción y uso de herramientas) de cómo producir, cuándo se hacen las transiciones entre las dos
validar, controlar y supervisar los documentos necesarios actividades, y cuándo se requiere la asistencia de un
en el proceso de desarrollo de software, no sólo desde el informático para ayudar a asegurar los fundamentos
punto de vista de apoyar estos proce.s.ses de lo que se está describiendo.
mecánicamente, sino también de asegurar la interacción
(los procesos sociales) entre las personas:
clientes/usuarios y desarrolladores, y entre los 2 Sobre el desarrollo de software y
desarrolladores. sobre sistemas de software
Por lo tanto, definimos el concepto de Ingeniería de
Software más estrechamente que lo que se hace Esta sección tiene dos partes. En las secciones (2.1-2-3)
normalmente. La definición del IEEE, por ejemplo, se habla de los métodos forrnales, y en las secciones
abarca nuestra Ciencia de la Computación. (2.4-5-6) se habla de las propiedades y cualidades de los
productos de software y proyectos de desarrollo, objeto
y portador de los métodos formales.
1.2 El desarrollador Röles El objetivo de la presente sección es, en primer lugar,
Programador definir (sec. 2.1) los conceptos de "método" y de
"método formal" en relación con el desarrollo de
Cuando una persona se ocupa de los aspectos semánticos programas informáticos, motivar y justificar (sec. 2.2)
del proceso de programación, por ejemplo: qué por qué es necesario utilizar métodos formales (técnicas
propiedades funcionales hay que captar en la y herramientas) siempre que sea posible en todas las
especificación abstracta y en cuáles hay que centrarse en facetas del desarrollo de programas informáticos, y (sec.
el diseño y la codificación concretos, qué formulación 2.3) presentar brevemente un candidato a "método
hay que dar a los documentos de desarrollo, qué formal" que haya superado la prueba de ser aplicado
significan, cómo verificar qué documentos describen y ampliamente, en Europa, en entornos industriales. Tal
cómo transformar las descripciones abstractas en otras vez no en plena formalidad, pero sí en forma sistemática.
más concretas, entonces esa persona es un programador Por consiguiente, en la primera sección (2.1) se definirán
y está programando. Un programador propone teorías los modificadores adicionales: "sistemático" y
(con el informático teórico que las garantiza). "riguroso", y en la sección (2.3) se esbozará brevemente
lo que, en la
Ingeniero de Software forma del proyecto ESPRIT 315 RAISE del Mercado
Cuando una persona se ocupa de los aspectos sintácticos Común Europeo de DDC/STC/NBB [Meiling 86], se
y pragmáticos del proceso de desarrollo de programas está haciendo para ofrecer un método que satisfaga más
informáticos, por ejemplo, de las limitaciones de las necesidades de desarrollo de software industrial
tecnológicas actuales no funcionales, el seguimiento de tal como se esbozan en la segunda parte de esta sección.
los requisitos externos de diseño [limitación], el registro En la sección (2.4) se enumeran las propiedades del
de los documentos de desarrollo, la creación y el software (system.s) que los métodos formales deben
mantenimiento de las versiones de los documentos de atender, y en la sección (2.5) las cualidades del proyecto
especificación, diseño y código, su configuración en los y del producto de software resultante, respectivamente.
productos y la validación de los requisitos no
Por último, en la sección 2.6, detallamos algunos, pero
funcionales, entonces esa persona es un ingeniero de
programas informáticos. El ingeniero de programas no todos, los componentes informales que parecen
informáticos es un constructor de herramientas (las necesarios, además de utilizar los métodos formales,
para ayudar a asegurar las propiedades y cualidades.

20
2.1 Sobre los métodos sistemáticos, rigurosos (Nuestra distinción entre "riguroso" y "sistemático" no es
consistente con el uso de las palabras sanne en [Jones
y formales 80,Jones 861.)
Por un %método' entenderemos un conjunto de Por lo tanto, para nosotros, el espectro formal-
procedimientos (directrices) para seleccionar y secuenciar el rigurosamente sistemático, es uno dentro del cual deseamos
uso de 'técnicas' y 'herramientas' para construir un que nuestro desarrollo tenga lugar apoyado, siempre que sea
determinado artefacto. Por 'método formal' entenderemos un posible, por la disponibilidad de herramientas formales.
rnet.hod (i) en el que todas las técnicas y herramientas que lo
componen son formales, es decir, se le da un significado
matemático preciso, y (ii) en el que el uso de los métodos y 2.2 Justificación de los métodos formales
las técnicas puede justificarse formalmente. Nos explayamos Antes del costoso desarrollo de software, como por ejemplo
sobre el punto (ii). Para ser formal debe ser posible razonar t.hat de compiladores, sistemas operativos, sistemas de
matemáticamente (lógicamente) sobre los programas gestión de bases de datos, redes de área local y amplia y
producidos (ya sean abstractos, en forma de definiciones o sistemas distribuidos, incluyendo componentes de ISO/OSI,
especificaciones, o menos abstractos, digamos en forma de antes de que el desarrollo de dicho software tenga lugar
diseños, o sean ejecutables, en forma de código), de ahí el asumimos (como un dogma) la creación de una especificación.
requisito de técnicas formales que se piensa que se aplican a Al igual que las concepciones y dibujos de los arquitectos de
un individuo, o a pares adyacentes de pasos de desarrollo. un edificio, una especificación sirve (1) como contrato "legal"
Pero eso no es suficiente. Para ser formal también debe ser entre el cliente y el desarrollador, (2) como base para el
posible razonar sobre el desarrollo en sí mismo -como desarrollo, y (3) como base para la redacción de los manuales
veremos en la sección 4- de ahí el requisito de métodos del cliente/usuario. De una especificación esperamos que sea
formales, donde la parte de Inet.hod: la selección y (4) consistente y cornple.te, (5) corta y concisa, (6) accesible
secuenciación ordenada, habla de la programación. Así pues, y referenciable, y (7) expresada de tal manera que las
no sólo consideramos los programas como objetos formales, propiedades forrnales del software resultante puedan ser
sino que también la programación, el proceso, se ve como un probadas wrt. la especificación-un ejemplo es: la corrección.
objeto formal, igualmente sujeto al razonamiento. Las Como consecuencia de los requisitos especiales (1,2,4,5,7)
herramientas son cosas tales como los sistemas de anotación llegamos a la conclusión de que la especificación debe
(lenguajes de especificación y diseño) utilizados, y las ayudas formalizarse, aunque de tal manera que se cumplan los
mecánicas necesarias para apoyar clericalmente requisitos 3) y G).
(sintácticamente), semántica y pragmáticamente el uso del Bjørner 85a] se extiende sobre los puntos anteriores a
método y sus técnicas. Por técnicas entendemos, entre otras la luz de la elaboración por parte de DDC/CRAI/CNR y
cosas, por qué principios (1) especificamos definiciones la Universidad de Génova de una definición matemática
abstractas, (2) las transformamos en diseños, y los diseños en formal y completa de Ada.
código, (3) probamos que tales transformaciones son
correctas, y (4) descargamos otras pruebas obligatorias en
general. 2.3 Un método "formal"
Las herramientas de apoyo a las técnicas y el método El VDM (Método de Desarrollo de Viena) surgió por primera
Inust son, por lo tanto, formalmente explicables. Es vez el Laboratorio de Viena del IBM alrededor de 1973-74 (a
decir, la arquitectura general del sistema de apoyo de través del trabajo en la construcción de un compilador para
herramientas completo debe transponer las propiedades PL/1 [Bekié 74]).
formalmente expresables del método, y del mismo Posteriormente, el DM V se desarrolló aún más, como
modo para las sub-herramientas vs. las técnicas. lo atestiguan, por ejemplo, los libros de texto y las
Decimos que un desarrollo es formal si todos los pasos de monografías: Bjørner & Jones 78,Jones 80,Bjørner &
developine.nt.: definición, de.firma y codificación se llevan a Jones 82,Jone Actualmente se está preparando un
cabo formalmente, y si se cumplen todas las obligaciones de conjunto de 5-6 volúmenes sobre' todos los aspectos de
prueba derivadas de este desarrollo. la VDM para su publicación en 1988 [Bjørner 88].
Decimos que un desarrollo es riguroso si carece de V DM se ha utilizado en muchos proyectos de
formalidad por la ausencia de pruebas reales y formales. Es desarrollo, Inostly sólo sistemáticamente. El más
decir: somos rigurosos cuando seguimos los pasos del método: notable de estos desarrollos debe ser sin duda el
especificar, diseñar y codificar, y cuando relacionamos desarrollo del Centro Dansk Datamatik del DDC Ada
forzosamente las etapas de desarrollo en la forma, por Compiler SY+ tern [Bjørner & Oest 80,0est 86). Un
ejemplo, de relaciones de inyección, fimcciones de número creciente de empresas de maíz europeas están
al)estracción, predicados de adecuación o imple.mentabilidad, utilizando uno u otro aspecto del MDV. Como
y teoremas de corrección, pero omitiendo las pruebas consecuencia de ello (y, puede decirse, del éxito del
detalladas. DDC Ada Compiler), la CEE (Comunidad Económica
Decimos que un desarrollo es sistemático si carece de rigor Europea) ha establecido un Foruln Europa VDM cuyos
por la omisión de relaciones formales entre las etapas del miembros industriales y académicos se reúnen 3-4 veces
desarrollo. al año para discutir temas de (1) experiencia en el uso

21
de VDM y sus aplicaciones, (2) requerimientos de fiable, (4) tolerante a fallos, (5) seguro, (6) mantenible, y (7)
entrenamiento y educación, (3) herramientas, (4) robusto. El software fiable rechaza claramente los datos no
fundamentos formales y (5) facetas de VDM especificados como entrada. El software tolerante a fallos
potencialmente sujetas a la estandarización de la repara o "corrige" los datos erróneos (hasta la entrada más
industria. El Foro Europeo de VDM celebró su primer "cercana" a la especificación) y también detecta y corrige o
simposio abierto del 23 al 26 de marzo de 1987 [Bjørncr desvía los cambios espurios e intermitentes en los datos
et al. 87]. almacenados (o en el programa). Los sistemas de software
VDM es básicamente una semántica denotacional (es seguros impiden que los usuarios no autorizados descubran: i)
decir, un método teórico, constructivo y basado en lo que hacen los sistemas, y ii) cómo lo hacen. Además, un
modelos). Las facetas del VDM es (1) su lenguaje de sistema seguro evita que los usuarios no autorizados (iii)
especificación y diseño de amplio espectro: Meta-IV impidan que el sistema haga lo que está haciendo, y (iv) les
[Bjørner & Jones 78], (2) un gran número de deja sin saber si lo saben (iii-iii-iv)! Asumiendo que alguna
operaciones de descomposición y técnicas de reificación inasistencia de un cambio razonable en la funcionalidad, u
de datos [Jones 80,Jones 86]. El Meta-IV, en toda su otra, de un sistema, se dice que su software es rnaint.able si
extensión, no es un lenguaje formal, pero a grandes los recursos requeridos para la inserción de estos cambios
subconjuntos del Meta-IV se les puede dar, o se les ha pueden ser precisamente est.ilnat.ed y en .sorne (aquí no
dado, una semántica formal, y a las partes se les ha dado especificado) manera son proporcionales a los cambios. El
un sistema de prueba formal (véase los documentos en software es robusto si cualquier cambio en él no altera
[Bjørner y otros 87]). El Meta-IV es aplicable a la ninguna de sus propiedades (1-7)!
especificación, diseño y codificación de sistemas La utilidad de los formalismos para abordar todos los
deterministas. Se han hecho algunas aplicaciones a aspectos (1-7) está aún por demostrar. Ciertamente, los
sistemas no determinísticos, y se han utilizado aspectos (2-3-4) vistos por separado se pueden obtener [Ravn
extensiones operacionales del Meta-IV, para incluir 86], y los aspectos (67) vistos por separado resultan del uso
características de CSP [Folkjær 80] para desarrollar de definiciones conceptualmente limpias y transformaciones
sistemas concurrentes y distribuidos. homolórficas de éstas. Pero todavía hay un largo camino por
¡Pero el VDM, en su etapa actual, no es lo recorrer antes de que podamos garantizar plenamente todos
suficientemente bueno! Uno quiere una formalidad los aspectos de forma satisfactoria!
completa, o al menos esforzarse por una mayor
formalidad en el uso de VDM. El proyecto 2.5 Garantía de calidad
DDC/STC/NBB RAISE, patrocinado en parte por el
programa ESPRIT de la CEE, intenta remediar las Distinguimos entre las cualidades de un proyecto y de
deficiencias de mayor alcance del VDM. El Lenguaje de su producto resultante.
Especificación y Diseño R.AISE presenta (1) Para que un proyecto sea de calidad es necesario que sea (1)
instalaciones de estructuración de especificación ingenioso y predecible, es decir, que, basándose por ejemplo en un
algebraica y diseño (abstracto. tipos de datos y gráfico de desarrollo de software completo y consistente, se puedan
operaciones de tipo de datos: enriquecer, derivar, estimar correctamente todos los recursos necesarios. personas,
colübinar, resumir. y aplicar), (2) concurrencia en el máquinas y finanzas mes a mes; 2) controlable: debe haber un
Cortn de aserciones de trazas y CSP, (3) una semántica principio objetivo mediante el cual se pueda supervisar y, si es
completa y formal, y (4) un sistema de pruebas. El necesario, modificar el consumo de recursos; 3) económico: debe
método RAISE ofrece un conjunto completo de haber alguna tnea.segura de amnistía entre la presupuestación, la
principios de perfeccionamiento del desarrollo, financiación, la contabilidad y los resultados (esperados); 4) seguro:
centrados en torno a un modelo de datos plenamente el proyecto debe conducir a los resultados esperados; y 5) divertido:
desarrollado para todas las etapas y facetas del el proyecto.
desarrollo, ya sean de interés para los socios de El personal debe confiar en que la dirección tiene
programas, los ingenieros de software o la gestión de plena autoridad y que se enriquece intelectual,
proyectos... Referencia [Meiling 861 ofrece una educativa y educativamente con el proyecto.
introducción general a RAISE mientras que [Bjørner Para que un producto tenga calidad debe satisfacer los
85b] ofrece una visión de röle y alcance (orientada a los
puntos (1-7) de la sección 2.4 anterior.
requirernent.s) de RAISE.
La garantía es el doble acto de asegurar tanto la
calidad del proyecto como la del producto.
2.4 Propiedades del software Podremos apoyar formalmente el logro de la calidad
Deseamos desarrollar programas informáticos para a) del producto. Se cree que los puntos informales
deterministas así como b) no determinantes, c) secuenciales planteados en la sección 2.5 y el forrnal de las secciones
así como d) sistemas concurrentes, y para sistemas que 3-4 ayudan indirectamente a lograr la calidad del
funcionan en e) tiempo real y están f) distribuidos. Deseamos proyecto.
que el software para estos sistemas sea (1) apto para su
propósito, (2) con especificaciones correctas de la red, (3)

22
2.6 Componentes del proyecto referencia bibliográfica propia, sino también, a medida que
el proyecto avanza, un conjunto acumulativo, de
Se ha considerado necesario un número de
anotaciones relativas a la disposición de la referencia (su
componentes del proyecto, además de los pasos de
valor para el proyecto, etc.); y 3) la colección de papel
desarrollo de la especificación, diseño y
propiamente dicha.
codificación adecuados y reales, para ayudar a
De manera similar (a la Terminología) una Biblioteca se
garantizar una alta calidad del proyecto y del
convierte en un objeto formal.
producto. Dado que no están pensados en el
contexto del desarrollo de software, los
enumeramos y explicamos brevemente aquí. 2.6.3 Estudio-Experiencia-Acción
La primera actividad es la de definir el proyecto Cada componente del desarrollo propiamente dicho, para
en sí mismo. Esta actividad se centra, en nuestro nosotros consiste en tres actividades pha.sed: estudio-
caso, en (I) el desarrollo por etapas del gráfico de experimentación. Su consumo de recursos y duración de
desarrollo de software del proyecto, ver secciones tiempo son típicamente 1-2-8. En la primera, la fase de
3-4. A continuación se inician dos actividades, estudio, todos los miembros del componente del proyecto
actividades que abarcan toda la duración del estudian lo que creen que es la literatura relevante para el
proyecto: establecer y mantener, (2) a componente del proyecto en cuestión. Las presentaciones
r
.rernuinología, y (3) una biblioteca. de los coloquios, por parte de todos los miembros,
identifican aquellas ideas y técnicas que podrían ser de
2.6.1 Terminología interés para el proyecto. Éstas se investigan más a fondo en
la siguiente fase, en la que se llevan a cabo experimentos
Hoy en día la mayoría de los programas (ya sea en la especificación, el diseño o la codificación) que
informáticos [proyectos de desarrollo] introducen implican estas ideas y técnicas. Es decir: aplicadas a
una serie de nuevos conceptos, y se basan también aspectos pequeños, pero difíciles, del problema. Por último,
en conceptos previamente establecidos no del todo de las fases de estudio-experimento debe surgir suficiente
establecidos. Por lo tanto, parece importante crear confianza en cuanto a las opciones técnicas a adoptar, y se
(electrónicamente), maint.ain y durante todo el lleva a cabo una aplicación a gran escala al problema "real",
proyecto adherirse a una Ternünología: un conjunto en esta, la fase de acción.
de definiciones precisas de los conceptos utilizados El plan de estudio-experimento-acción está
e introducidos. La importancia de establecer,
explícitamente dirigido a fomentar el uso de técnicas
rnaintaintain (incluido el ajuste) y adherirse a una
Terminología fue enfatizada, para mí, por Peter formales.
Naur, a quien por la presente reconozco con gratitud.
Los malentendidos relativos a los nombres de los 3 Un gráfico concreto de desarrollo de
conceptos, la vaguedad de su significado, etc., son
muy perjudiciales para la consecución de un software
proyecto. La disciplina de establecer, mantener y El gráfico de desarrollo de software [Bjørner
adherirse a una Terminología es una actividad 86a], [Bjørner 86b] es, sintácticamente hablando, un
intelectualmente muy gratificante (educadora y gráfico direct.ed finito y sin ciclos. Los nodos denotan
liberadora). actividades de desarrollo de software que son parte de la
En un sentido, la terminología es un objeto formal en el que especificación, diseño y codificación. Estas actividades
se basa en la precisión y la economía, es decir, en la concisión. conducen a documentos de especificación, diseño o
codificación. Los bordes también denotan actividades que
2.6.2 Biblioteca (primero) motivan y (después) justifican el paso de
En cada etapa de un proyecto se estudian los desarrollo. designadas por el nódulo-borde-nodo triple
documentos científicos, técnicos y de otro tipo identificado por el borde. Las actividades son realizadas por
(informes y publicaciones): se descartan o se una combinación de prograrnIners, científicos, ingenieros
utilizan. Se construye una biblioteca de todo ello, de software y manager.s. Los documentos suelen ser
para su posterior consulta y para la documentación formales.
completa del proyecto. Por Biblioteca entendemos Desarrollo de software. Los gráficos pueden ser
abstractos, pero sin sentido, como en la Fig. 3.1, o
una cosa de tres partes:
1) un esquema que estructura taxonómicamente la bib- relacionados con el tema del software, como en la Fig. 3.2.
liografía; 2) una bibliografía anotada, es decir, una lista de Para que se familiaricen con los conceptos de los gráficos
entradas, cada una de las cuales no sólo contiene una de desarrollo de software, revisamos brevemente el último
gráfico basado en el uso de V DM.

23
abstiene de consideraciones tales como palabras clave,
secuencia lineal de objetos (como declaración.s cuyo
ordenamiento lineal es accidental y que no tienen
significado). A partir de la Sintaxis Abstracta desarrollamos,
de la forma más abstracta posible, tanto una Semántica
Estática, como una Sernántica Dinámica, ambas incluyendo
el tratamiento de la concurrencia, etc. Juntos estos cuatro
nodos (y sus bordes intermedios) representan la parte de
especificación del desarrollo. Ahora sigue, en general, un
número de etapas de diseño. Primero centramos nuestra
atención de desarrollo en lo que hay que hacer en lo (cada
vez más) concreto, luego en cómo realizar las 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 (llamada
Semántica Mecánica o Macro-Sustitución). Esta última
exhibe fimdament.als de la estructura de tiempo de
ejecución de los programas [Ada]. De la Semántica Dinámica
Mecánica derivamos primero la definición de un Vil% tual
Target Machine, una máquina "óptimamente" adecuada
para ejecutar programas en el lenguaje fuente (viz.: Ada); o
Un gráfico del software DoveDopment para tal Target Machine (viz.: DEC VAX) ya está dada. m-om la
los sistemas ComplOor + Runtime definición de Target Machine y la Semántica Dinámica
Mecánica u 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 debe generarse para cada construcción (esquemática)
del lenguaje de origen. A partir de los datos concretos del
front end (Sernant.ic Analysis) y del back-end (Cornpiling
Algoritlun) desarrollamos la posible estructura multipaso del
compilador, de todos los lenguajes intermedios y del
administrador multipaso. De la Semántica Dinámica también
se deriva una descripción concreta de lo que hay que
manejar en la asignación de tareas; y a partir de esto y de la
definición de la Máquina Objetivo se desarrolla un diseño
para el Run-Tirne (Objetivo) Systern. Esto concluye el diseño.
A partir de los respectivos nodos de diseño se desarrolla
finalmente la codificación real del compilador y el sistema de
tiempo de ejecución.
Cada uno de los nodos puede, usando VDM en general, ser
refinado en una subgrafia de ocho nodos, ...ver... Fig. 3.3.
Especificación Definición del lenguaje de programación: Resumen
A cada uno de los nodos y bordes corresponde un
Sintaxis. Semántica estática y dinámica conjunto bien definido de técnicas de förmal.
Explicamos estas, en general, para cada una de las cuatro
Estructura de los datos en tiempo de ejecución y mecánica áreas de T.H.C.: programación, ingeniería, administración y
Diseño Diseño de la representación de la operación ciencia de la computación básica; pero, primero, echamos un
vistazo general a los gráficos.
Codificación del lenguaje de aplicación

Coda

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
conjunto de ecuaciones de dominio, en el Meta-IV, que se

24
científicos "residentes", así como observaciones a-
posteriores que describen las principales propiedades
del desarrollo del software, también occarn es una
marca registrada de inmos Ltd. (REINO UNIDO)
para cada una de las cuatro clases, a.s que transpiraron
Dominio
al llevar a cabo el proyecto en sí.
Bien formado Así pues, destacamos la importancia de llevar a cabo
minuciosamente la cuidadosa planificación que se manifiesta
3. Función auxiliar 6. Definiciones de la función auxiliar 7. Definiciones
en el acto de asignar atributos.
semánticas
Tipos de función
8. Semántica
Gráficos de productos
Definiciones de la función
La ingeniería de software abarca desde el seguimiento
de los requisitos, las pruebas hasta la ingeniería de
productos. A cada configuración de versiones (véase el
El caso de la semántica de Denotationai apartado 4.2) le corresponde un producto y a él un
gráfico, una "versión" del gráfico del proyecto. En lugar
Fig.3.3
de ciertas, y además de otras anotaciones de proyecto
(es decir, de proceso) contiene adicionalmente producto
(es decir, resultado) attril)utes.
4 Gráficos de desarrollo de software
en general 4.2 Atributos de la programación
El principal atributo en este caso es el del método
4.1 Desarrollo de gráficos utilizado en el desarrollo (ejemplos: VDM, HDM, HOS,
Meta-Gráficos JSD, RAISE, Este atributo pertenece a un gráfico
completo. En base a nodos y bordes tenemos,
A cada clase ("equivalencia") de software le refiriéndonos aquí sólo a los atributos secundarios
corresponde un gráfico de desarrollo de meta software. relacionados con V DM). Nodos: técnicas de
Así, un gráfico de desarrollo de meta software describe especificación como configuración, o reanudación, o
cómo desarrollar toda una clase de software "similar". salida, o semántica directa para modelar los GOTO y las
El gráfico anterior es un metagráfico para el desarrollo excepciones; modelo de almacenamiento de
de compiladores de la clase ALGOL/Pascal pero con localización/valor plano, localización/valor
asignación de tareas (procesos, concurrencia). Por lo estructurado plano, o localización/valor estructurado;
tanto, es válido para el desarrollo de compiladores para modelo imperativo; Inodel aplicativo; definiciones de
lenguajes como Concurrent Pascal, Pascal Plus, CHILL, funciones principalmente putativas; definiciones de
occam@, Modual-2, y Ada. Existen otras clases: un funciones principalmente plicit (pre/post condición);
gráfico, básicamente es necesario para el desarrollo de, etc., etc. Bordes: técnicas de transformación del diseño
por ejemplo, sistemas operativos UNIX, o LAN (redes de como pliegue/despliegue/abstracto [regla instancial
área local), o Sistemas de Gestión de Bases de Datos transformat.iones grudados; transformación
Relacionales, etc. Así pues, los metagráficos son
completamente automática (es decir, compilación); o
genéricos y su estructura y significado es el resultado de
transformaciones manuales -esta última anotada más
la investigación y a ellos deberían llegar los científicos de
adelante con sununario del teorema- que prueban las
la universidad o la industria.
estrategias y tácticas; etc., etc. En caso de desarrollo no
basado en VDM, otros atributos pueden ser pertinentes.
Gráficos del proyecto
La industria del software cuando se enfrenta al inicio. de 4.3 Atributos de la ingeniería de software
desarrollo: de software selecciona un apropiado.e
metagráfico a partir del cual desarrolla un gráfico de Aquí hay cuatro tributos primarios: (1) nanne y
proyecto. El gráfico del proyecto. es una versión características del syst.em de soporte mecanizado
posiblemente enriquecida o derivada del Ineta-graph (herramientas); (2) los principios de rastreo de
junto con sus cuatro clases de anotaliones. Estas cuatro requerimientos; (3) la estrategia de generación de t.est.;
clases son las que dan atributos de nodos y bordes a- y (4) el principio de registro, versión y configuración.
priori que definen las tareas que tienen por delante los Atributos secundarios para cada una de las áreas
programadores, ingenieros de software, gerentes y respectivas siguen trivialmente.

25
4.4 Atributos de la gestión sistemáticamente entre los atributos de entrada del
desarrollador ab init.io y los atributos parcial o
Hay dos a-priori, atributos primarios de gestión input.s:
totalmente derivados (computados). Hay muchos
por nodo y por borde hay una estimación, en forma de
otros att.ributes, esquemas de atributos y propert.ies
histograma, de los requerimientos de Inanpower
que tampoco hemos tratado.
(máquina, etc.) por mes (tiempo virtual) (para hacer la
El objetivo de asignar homenajes y luego, en el
actividad del nodo, respectivamente borde), y para todo
desarrollo adecuado, adherirse a sus prescripciones,
el proyecto (es decir, su gráfico) hay un histograma de
es fortificar tantos aspectos del desarrollo como sea
la mano de obra total disponible (máquina, etc.). Un
razonable. Esta "disciplina" da libertad durante la
"resultado" primario es un mapeo de los recursos
ac-
requeridos en tiempo real de acuerdo con uno de varios
desarrollo del t.ual.
principios de asignación y según lo restringe el
histograma de disponibilidad (Lynenskjold 87]. 5 Arquitectura de un software total
Hay otros atributos de gestión primarios:
principio para la supervisión y control del proyecto,
Sistema de apoyo al desarrollo
incluidos los planes de prioridad y reasignación, Hemos esbozado, en la sección 4, un método basado en
principio para la generación de planes renovables gráficos. Hemos explicado, de forma puntual, algunos de sus
(informes), etc. La vigilancia incluye la frecuencia puntos detallados sobre el uso de VDM. Otras técnicas
foráneas, diferentes a las de VDM, podrían instanciar el
del muestreo de los recursos realmente utilizados;
método basado en gráficos del software Clevclopnnent.
el control estipula los principios para las medidas
Ejemplos de esto último son: JSD ("Jackson System Design"),
correctivas o de ajuste (por sobreutilización o HDM ("Hierarchical Developnnent Method"), HOS ("Higher
infrautilización de los recursos); y el plan móvil es Order Software"), RAISE ("Rigorous Approach to Industrial
una presentación tabular de estos asuntos destinada Software Engineering"), etc.
a ser utilizada en (1) las reuniones de gestión del En esta sección esbozaremos la arquitectura de un sistema
proyecto, y (2) la contabilidad. de apoyo total al desarrollo de software. Por tal sistema nos
referimos a un sistema computarizado (hardware/software)
que proporciona herramientas mecanizadas para todos los
4.5 Atributos de la informática teórica aspectos del desarrollo (especificación, diseño y codificación),
Los nodos denotan documentos, y los documentos (de tanto de los gráficos de desarrollo de software (Ineta, proyecto
especificación, diseño o código) denotan teorías. Los y producto) como del software cuyo desarrollo prescriben ;
bordes denotan mapeos, a veces morfismos, entre teorías. para todos los grupos de desarrolladores (programadores,
La naturaleza exacta de las teorías y mapeos puede ser ingenieros de software, administradores y científicos); y que
planificada y los documentos resultantes comprobados refleja de manera transparente todo el gráfico de desarrollo de
con estos atributos. software basado en el método Ineta, así como el conjunto
Normalmente las especificaciones definen las particular de técnicas de especificación, diseño y codificación
funciones totales y, por lo tanto, normalmente requiere (como para exanil)le VDM) al que está instanciado.
un razonamiento en una lógica de 2 valores. Por lo tanto, la arquitectura debe directamente, en el nivel
Normalmente los documentos de diseño definen más externo, el desarrollo de software gráfico, elnbody el
funciones parciales y por lo tanto requieren un no.iones de (1) gráficos de desarrollo de soft.ware -
razonamiento en una lógica de 3 valores. Los bordes incluyendo meta-, proyecto- y gráficos de productos; (2) su
entre, por ejemplo, los "nodos" de la lógica de 2 y 3 desarrollo e inauguración-incluyendo la asignación de
valores también denotan morfismos institucionales. atributos y el cálculo; (3) nodos y bordes-incluyendo
Algunos, normalmente nodos de especificación, denotan sus .significados sintácticos, semánticos y prácticos, tanto
documentos que definen dominios en una teoría de Scott para programadores, ingenieros de software, gerentes y
de retracciones, mientras que otros, normalmente nodos científicos residentes; (4) la ejecución de gráficos de
de diseño, denotan documentos para los que basta una desarrollo de software - permitiendo la ejecución simultánea
teoría de dominio simple (setteórica) å lå Blikle [Blikle de nodos y aristas independientes, y dentro de cada uno de
83]. Se podrían enumerar muchos otros atributos de la ellos la ejecución simultánea (de un nodo o arista) por varios
informática. desarrolladores de las cuatro categorías de desarrolladores.
Los puntos (1-2-3) se relacionan, en un sen.se, con el
4.6 Observaciones desarrollo de gráficos de desarrollo de software. El punto (4)
a su ejecución;ión. Por ejecución de un gráfico de desarrollo
No hemos explicado en detalle los tributos de de software entendemos una interacción entre los
proyecto versus producto, ni los atributos (de nodos desarrolladores y el sistema de acuerdo con el significado de
y aristas) que se asignan durante el proyecto los gráficos, nodos y bordes, y como parametrizado por el
propiamente dicho. Tampoco hemos distinguido conjunto de técnicas embebidas (es decir, instanciadas) (por
ejemplo, VDM).

26
El siguiente "árbol" solariza la estructura taxonómica Algunas observaciones pueden ser necesarias.
básica y las características salientes del sistema
(i) El "árbol" anterior refleja las ofertas funcionales
propuesto. del .syst.ems, no su estructura implementada. El hecho
de que pueda haber un "gestor de ventanas", un "shell
de conunancl" y una "base de datos orientada a objetos"
Desarrollo de Gráficos Soporte del Subsistema
posiblemente di.stribuída, un "procesador de
Soporte del Repositorio de Gráficos
transacciones t.ransaction" que permita copias de
(Biblioteca de Meta Gráficos) c Soporte del
seguridad y recuperación, etc., es realmente una
Refinamiento de Gráficos
preocupación muy menor para el usuario. No reflejan ni
(Especificación y diseño)
el método ni sus técnicas, sino más bien las limitaciones
Gráfico Inst, soporte de antiationes de la aplicación (tecnología).
(De Meta-, vía Proyecto- a Gráfico de Producto) (ii) El "árbol" de la función refleja, por lo tanto, que el
Atributo. Apoyo a la asignación conjunto de herramientas del sistema está
profundamente arraigado en la serenidad del método, en
Atributo Apoyo a la Cornputación lugar de representar, por error, el habitual método ad hoc
Soporte del subsistema de ejecución de gráficos de evaluación de herramientas principalmente
sintácticas y pragmáticas que no están vinculadas a
Ejecutor de nodos
ningún método.
Herramientas sintácticas
Estructura y Sintaxis Dirigida por Editores (iii) Deseamos que el usuario del sistema (el desarrollador)
Impresoras bonitas tenga, en todos los tirnes, un conocimiento exacto y
Soporte de diario * Referencia cruzada etc. Apoyo "pago" por donde en el proceso de desarrollo (es decir,
donde en el gráfico) se encuentra, y que tenga acceso a
Herramientas sensuales
herramientas para todas las facetas sernánticas,
Herramientas de análisis de datos, lógica y control sintácticas y pragmáticas del rnethod y sus técnicas. En
de flujo sununary deseamos que el usuario se sienta como en el
Herramientas de comprobación estática (tipo) asiento del conductor de un coche de conducción
Herramientas de interpretación de Dynanlic * avanzada cornfort.able: rueda, pedales de acelerador,
Proveedores y verificadores de Theorelii frenos, cambio de marchas (palanca o automático) y una
Herramientas pragmáticas variedad de interruptores, uno para cada una de las
Herramientas de rastreo de decisiones de diseño y de funciones. La conducción puede ser una interacción
requerimientos agradable entre el coche y el conductor, así como el uso
Herramientas de control de versión y configuración del sistema de apoyo al desarrollo.
Generadores, probadores y validadores de casos de
(iv) En toto la estructura conceptual más que la de aplicación
prueba
del sistema de apoyo airn.s a inducir el uso de un método
Edge. Ejecutor formal con todas sus técnicas e instrumentos formales
constituyentes.
- Herramientas de derivación automática de nodos
Herramientas de reglas de transformación, unificación y
reescritura 6 La realidad, la filosofía y la sociología
Herramientas de derivación de nodos "manuales".
del uso de formalismos en el
Editor de la estructura, sustituto, herramientas de la
regla de reescritura * Herramientas de prueba de desarrollo de software
obligación y de descarga (Proving and Hemos propuesto un marco total para el desarrollo de
Verific.ations) software. Hemos construido este marco alrededor de znany
años de uso de VDM; y el aspecto más básico del marco se ha
Sub-sistema de gestión
utilizado durante al menos 6 años. Así que no estamos
Asignación de recursos, -Supervisión y apoyo al postulando nuevas ideas no probadas, no comprobadas. Al
control contrario. Pero básicamente hemos usado estas ideas de forma
Gráficos de apoyo a la evaluación, la vigilancia y el sistemática, en lugar de formalmente, básicamente porque no
control hemos tenido el apoyo informático necesario para ayudarnos.
Apoyo a la evaluación, vigilancia y control de los Hemos reconocido repetidamente, a lo largo de los años, la
nódulos necesidad de apoyo informático, pero no nos hemos
Edge. Apoyo a la evaluación, la supervisión y el precipitado (sabiamente, creemos ahora) a instrumentar ideas
control que entonces no estaban conceptualmente completamente
R.esident' Científico Sub-Systexn desarrolladas. Donde antes, sin usar herramientas, de
cualquiera de los tipos descritos anteriormente (ni sintácticas,

27
ni senáticas, ni antes) podíamos registrar Creo que el progreso en el uso de los métodos formales
el desarrollo. cuesta sólo el 25% de los de otros desarrollos, sólo se producirá si se cumplen tres condiciones: l)
esperamos. ¡hacerlo mucho mejor con herramientas producción de suficientes candidatos de departamentos
formalizadas! Pero no esperamos que éstas resulten en de informática orientados a la programación de la
ahorros en los costos reales de desarrollo, ni en una reducción Inetología; muchos han aprendido las teorías sobre los
significativa del tiempo de desarrollo. En lugar de ello, progrmas que no sirven para la programación; 2) empleo
esperamos poder entregar eventualmente un software de esas personas en grupos de masa crítica; y 3)
confiable, un software que satisfaga todas las calidades de instrumentos apropiados. La producción de candidatos
producto descritas en las secciones 2.4-2.5. También nos adecuadamente educados y capacitados es
hemos convencido de que el desarrollo de software es responsabilidad de las universidades, y los Ino.st aún no
demasiado costoso. ¡Creo que se hace demasiado barato! comprenden y distinguen la ciencia de la computación de
Los clientes no se levantarán para exigir todas estas la informática, y no hacen hincapié en la ciencia de la
cualidades, aunque unos pocos (como el Departamento computación! El empleo es el reino de las casas de
de Defensa de EE.UU.) pedirán un hijo. En cambio, las software, y muy, muy pocos de sus gerentes entienden la
nuevas empresas de informática podrán garantizar cada necesidad de contratar personas formalmente
vez más a Inore esas cualidades, y es "a su manera" que capacitadas, y mucho menos de asignar, a los pocos que
veremos llegar el uso de formalismos: mediante consiguen, para formar grupos con suficiente personal.
productos más adecuadamente iluminados, mediante La producción de herramientas está, de nuevo, en el
software más fiable, mediante una mayor productividad dominio de la industria. Las herramientas producidas en
(relativa), pero también porque la generación más joven la universidad son generalmente semánticamente
de desarrolladores de software no querrá: hacerlo de otra avanzadas, pero los prototipos en los sentidos t.hc. (1) de
manera. ser aplicables sólo a datos muy pequeños (es decir, no
Hay pocas esperanzas de que las empresas de software aplicables de manera realista al tipo de grandes ejemplos
y los fabricantes de computadoras existentes ("viejos") que suelen surgir en la industria), y (2) de ser pobremente
se den cuenta de los métodos foráneos de desarrollo de (¡locutnados! Las herramientas producidas por la
software. Las viejas formas de hacer software están industria son invariablemente siempre vacías
demasiado arraigadas en la administración y el personal. sernanamente, presentando sólo herramientas sintácticas
He experimentado en la industria establecida enormes y pragrnat.ic, y luego en combinaciones ad hoc.
lagunas en el conocimiento l)asico sobre incluso el Nunca se demostrará que las viejas formas en que el
concepto más básico. s--o sea, lo que los actuales software está siendo diseñado hoy en día por IBM y
graduados están aprendiendo. La mayoría de los gerentes todos sus competidores están equivocadas.
existentes ni siquiera son capaces de desarrollar software Eventualmente morirán por falta de uso, ya que la nueva
y por lo tanto no tienen autoridad para hacer gestión. y generación ha crecido con los nuevos métodos:
están completamente a merced de la jerga y las excusas
de sus "programadores-ingenieros de software". "Las viejas teorías nunca se prueban equivocadas.
Sólo... se dictan por la falta de uso por parte de
las nuevas generaciones...
habiendo crecido con nuevas teorías" - Erwin of PL/1,
Schrödinger, Autobiografía.
Referencia TR25.139,
Lo que hemos propuesto en este documento es una s IBM
Laboratory,
"teoría". Hay muchas "teorías". Esta, como Inost, H. Bekié y otros..: Viena, 1974.
otros desarrolladores de software..: "%net.hods", no A
es una teoría en el sentido de ser demostrable, es decir, [Bjørner
F & Jones 78] D.
demostrable "la teoría". Es, como las "teorías" de la o Bjørner &
informática de Inost, más bien una conjetura. No se r C.B. Jones:
m The Vienna
puede probar su superioridad, ni las "teorías" de otros.
a Developme
Sólo la práctica lo dirá, y controlará tal "cambio de nt Method:
l
mando": D tlLe Meta.-
"No hay teorías, y no hay pruebas. Puede haber e Language,
conjeturas, y a veces hay tristes refutaciones" - f Springer
esencia de un aspecto de la Teoría de la Ciencia i Verlag,
de ICarl Poppers. n Lecture
i Notes in
Para terminar, hemos intentado para cada faceta y t Computer
aspecto del software y su desarrollo, identificar formas y i Science, vol.
medios de formalizar estas características en la mayoría de o 61, 1978.
las secciones y subsecciones. n

28
Towa.rds a. Formal Description of Ada, Springer Verlag, [Folkjær 80] VDM Symposium '87 - a Formal
Lecture Notes in Computer Science, Method at work, VDM Europe
(eds. D. Bjørner & O.N. oest), vol. Conference, Bruselas, Marzo 87,
98, 1980. Springer Verlag, Lecture Notes in
Computer Science, (eds. D. Bjørner,
D. Bjørner & C.B. Jones: Formal Specification a.nd C.B. Jones, M. Mac an Airchinnig,
Softwarc Dcvcl.opne-nt, Prentice- E. Neuhold), 1987.
Hall Intl., 1982. [Jackson 75]
[Bjørner 85a] D.Bjørner: El R,öl.e y el alcance D. Bjørner: Arquitecturas de
de la definición formal de Ada, software y diseño de sistemas de
Dansk Datamatik Center, programación, 6 volúmenes, 1988.
Techn.Rept. AdaFD/ DDC/ DB/ [Jackson 83]
A.J.B1ik1e & A.Tar1ecki:
6 1985-12-09, 1985. Naive Denotational Semantics,
[Bjørner 85b] D.Bjørner y otros..: El levantamiento in: Information Processing 83,
[Jones 801
Proyecto: D.Bjørner. ed. R.E.A. Mason, IFIP
Ediciones Gráficos y meta- Congress Proc. , North-Holland
y Requerimientos, Dansk programas del Publ., 1983.
Datamat.ik Center, Techn. Rcpt., proyecto:
RAISE/DDC/EM/I v6, -10. Towards a Theory P.F01kjær & D.Bjørner. A Formal
Diciembre 85, 1.985. of Software Model of a Generalised CSPlike
[Bjørner 86a] Development, Language, Information Processing
Capri Conference 80 (ed. S.H.Lavington), North-
on Innovative Holland Publ., pp. 95-99, 1980.
Software
Factories y Ada, M.A. Jackson: Principios de Diseño
de Programas, Acadernic Press,
mayo de 1986,
1975.
para aparecer en
Springer Lecture M.A. Jackson: Desarrollo de
Notes in
sistemas, Prentice-Hall Intl.,
Computer Science,
eds. N. 1983.
[Bjørner 86b]
Habermann y U. C.B.- Jones: Software Development,
Montanari, 1987. a Rigorous Approach, Prentice-Hali
Intl., 1980.
D.Bjørner:
Gráficos de
Desarrollo de
Software: A
Unifying Theory
for Software
Development?,
[Bjørner y otros 87] New Delh, 6th
Conf. on
Foundations of
Software
Technology and
Theoretical
Computer Science,
Springer Lecture
[Bjørner 88] Notes in
Computer Science,
vol. 241, ed.
K.Nori, págs. 1 a 9,
[Blilde 83] 1986.

29
[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