1 Introduccin
Lo ms difcil en la construccin de un sistema software es decidir precisamente qu
construir... No existe tarea con mayor capacidad de lesionar al sistema, cuando se
hace mal... Ninguna otra tarea es tan difcil de rectificar a posteriori...
F. P. Brooks, 1987
F. P. Brooks es el autor de The Mythical Man-Month, quiz el nico libro clsico de la
Ingeniera del Software [Br075]. Brooks fue jefe de proyecto del OS/360, el sistema
operativo del IBM/360. A lo largo de este enorme proyecto, Brooks padeci todos los
males que constituyen lo que habitualmente se conoce como "crisis del software".
Continuamente se publican nuevos datos acerca de la importancia de los requisitos en
Ingeniera del Software. Por ejemplo, segn el Chaos Report del Standish Group
(www.standishgroup.com/chaos.html) resulta que:
Un 16,2% ser finalizado a tiempo y dentro del presupuesto pero el producto final
poseer (aprox.) la mitad de los requisitos iniciales
El 56% de los errores que tienen lugar en un proyecto Sw. Se deben a una mala
Especificacin de Requisitos (DeMarco, 1984)
Segn el Chaos Report de 1995, de nuevo resulta que los factores principales que
conducen al fracaso en los proyectos Sw son
Requisitos incompletos
Resulta evidente que no se han producido grandes mejoras en los ltimos aos
Se podran contar ms historias de horror relacionadas con los requisitos:
En 1981, Victor Basili encontr cerca de 88 errores en una ERS de 400 pginas
para el proyecto A-7E Operational Flight Program. Esta ERS haba sido escrita por
un grupo de expertos en especificacin de requisitos.
Antes de nada, debera recordarse el hecho de que la gran mayora de los sistemas no
parten de tan solo 15 o 30 requisitos. Tambin hay sistemas de cientos de requisitos,
sistemas de miles de requisitos, sistemas de 5.000 requisitos, sistemas de ms de 10.000 e
incluso se conocen casos de sistemas que presentan unos 60.000 requisitos!
1.1 Evidencia de la importancia de los requisitos
La evidencia emprica demuestra que, cuanto ms tarde se descubran, el coste de la
reparacin de los errores introducidos en la etapa de requisitos crece exponencialmente. Si
asignamos coste 1 al coste de reparar un error de requisitos descubierto en la etapa de
requisitos, se obtendran las siguientes cifras[Dav93]:
Etapa
Requisitos
Diseo
Codificacin
Pruebas Unitarias
Pruebas sistema
Explotacin / Mantenimiento
Coste de Reparacin
1-2
5
10
20
50
200
avion_en_pista
Para detectar si las ruedas se encuentran, o no, sobre la pista, existen unos sensores
conectados a las ruedas que generan pulsos elctricos cuando las ruedas se encuentran
girando. Para que este mecanismo funcione, se supone que, en el dominio que rodea al
software (o sea, en el mundo real) se cumple que las ruedas rotan cuando se encuentran
sobre la pista, y que el sensor enva pulsos cuando las ruedas rotan:
D1 : pulsos_sensor
ruedas_rotando
D2: ruedas_rotando
avin_en-pista
pulsos-sensor
Puede comprobarse que, dado este comportamiento externo de la mquina, M-ex, y dadas
las descripciones D, se cumple R.
La importancia del conocimiento del dominio (D) es crucial en la IR. Si se da el caso
(como sucedi en la realidad) de que la pista est mojada, se producir aquaplanning y,
por tanto, deja de cumplirse D2 (las ruedas no rotan, a pesar de que el avin se encuentra
en la pista). Por lo tanto, un pequeo cambio en el dominio D, pese a no hallarse
(aparentemente) conectado con el software, puede conducir a una situacin en la que el
requisito R no se cumple. Para solucionar esta situacin, debera cambiarse el
comportamiento externo del software (M-ex), lo cual quiz obligue a modificar el sistema
de sensores. Lo que es imposible cambiar es D, pues son descripciones que corresponden
a la realidad (salvo error), no son metas ni son especificaciones del software.
Finalmente, repetir que en IR, a pesar de la confusin que se pueda originar, se
denominan requisitos a los tres conjuntos M-ex, R y D. La razn es que los requisitos
estn constituidos por todas aquellas informaciones necesarias para construir un sistema
que satisfaga las metas perseguidas.
Es importante, asimismo, destacar qu no son los requisitos. Los requisitos NO son
anlisis top-down, ni son la arquitectura del sistema, ni son el qu frente al cmo.
1.4 Otros contenidos relevantes
Detallando un poco ms lo expuesto en el prrafo anterior, es necesario que un documento
de requisitos contenga, en primer lugar:
Diseo
Codificacin
Pruebas
Mantenimiento
etctera...
2 El proceso de requisitos
El proceso de Ingeniera de Requisitos es un conjunto estructurado de actividades que
sirven para derivar, validar y mantener los requisitos de un sistema (hardware, software o
hardware+software). Las tareas que conlleva este proceso, a grandes rasgos, se representan
en el siguiente grfico:
Educcin de
Requisitos
Anlisis y
Negociacin
Documentacin
de Requisitos
Necesidades
Informacin del Dominio
Estndares
Etc.
Educcin de
Requisitos
Documento de
Requisitos
Gestin de Requisitos
Si es dirigido al mercado
Si es un sistema a medida
Los implementadores se quejan del trabajo perdido por culpa de errores en los
requisitos
3 Educcin de Requisitos
La educcin de requisitos se refiere a la captura y descubrimiento de los requisitos. Es
una actividad ms humana que tcnica, en la que se identifica a los interesados y se
establecen las primeras relaciones entre ellos y el equipo de desarrollo.
3.1 Principales fuentes de requisitos
Los requisitos pueden proceder de:
A veces hay que inventar los requisitos (sistemas orientados a miles de usuarios)
Prototipado: cuando la incertidumbre es total acerca del futuro sistema. Hay dos
tipos principales:
-
Evolutivo
10
Modelizacin de requisitos
Negociacin
La disponibilidad de herramientas
11
5 El Documento de Requisitos
El llamado "Documento de Requisitos" es el modo habitual de guardar y comunicar los
requisitos. Debe tenerse en cuenta que, al decir "documento", nos referimos a cualquier
medio electrnico de almacenamiento y distribucin de informacin como, por ejemplo:
Procesador de textos
Base de Datos
12
Completa: Una ERS es completa si todo lo que se supone que el software debe
hacer est incluido en la ERS. Por completitud, deberan describirse todas las
posibles respuestas a todas las posibles entradas y en todas las situaciones
posibles. Adems, la ERS no contendr secciones de tipo por determinar....
Concisa: La ERS debe ser lo ms breve posible, sin que esto afecte al resto de
atributos de calidad.
13
Precisa: Una ERS es precisa si hace uso de valores numricos para precisar las
caractersticas del sistema. La precisin es aplicable, ante todo, a los requisitos
no funcionales. Por ejemplo, no es til decir El tiempo de respuesta ser ms
bien rpido, sino El tiempo de respuesta ser menor a dos segundos. OJO: en
la prctica diaria, este atributo es dificilsimo de conseguir pues es fuertemente
dependiente de la tecnologa disponible, lo cual no siempre se conoce al
principio de un proyecto.
14
6 Validacin de Requisitos
El objetivo de la validacin de los requisitos es descubrir problemas en el Documento de
Requisitos antes de comprometer recursos a su implementacin. El documento debe
revisarse para
Conflictos
Ambigedades
Bsqueda de problemas
Reunin
Establecimiento de acuerdos
Como gua para identificar problemas habituales, se pueden utilizar listas de comprobacin
(checklists). Hay checklists adaptadas a distintos tipos de sistemas. Otros mtodos de
validacin son:
15
En general, una lista de comprobacin debera girar alrededor de los atributos de calidad
(anteriormente expuestos) que debera poseer una ERS. Para cada atributo de calidad, se
pueden plantear una serie de cuestiones que sirvan para confeccionar la lista de
comprobacin.
La propia existencia del sistema va a generar nuevos requisitos por parte de los
usuarios.
16
8 La IR en la prctica hoy
Hoy el software es parte casi imprescindible de todo tipo de dispositivos. El software se
utiliza para proporcionar valor aadido a productos tradicionales (telfonos, refrigeradores,
coches) y para diferenciarse de los productos de la competencia. Basta con decir que, hoy
da, el componente ms complejo de un coche es el software (por ejemplo, hay modelos de
Mercedes que contienen sistemas empotrados que suman casi 5 Mbytes de cdigo
ejecutable!!!).
Industrias tradicionalmente alejadas del software hoy tienen problemas de requisitos.
Introducir componentes software es distinto a introducir nuevos componentes fsicos. La
complejidad que aade el software es de varios rdenes de magnitud respecto a la
complejidad que aadira un nuevo componente fsico.
Introducir el software en industrias tradicionales est produciendo choques culturales.
Estas industrias poseen tradiciones, normas y procedimientos que no son aplicables al
desarrollo de software. El mismo concepto de prototipo posee significados muy distintos
en Ingeniera Aeronutica, por ejemplo, y en Ingeniera del Software.
Actualmente, los requisitos no funcionales (seguridad, fiabilidad, tiempo de respuesta,
disponibilidad, etc.) ocupan ms espacio en el documento de requisitos que los requisitos
puramente funcionales.
Los requisitos ya no son un problema exclusivo de la industria del software y, desde
luego, no son un problema exclusivo de los Sistemas de Informacin tradicionales. Pero
es el software, precisamente, lo que provoca los problemas de requisitos, debido al gran
potencial que posee para aumentar la complejidad de un sistema.
17
18