Você está na página 1de 222

Compendio de Ingeniera del Softw

Rev. 0.04 Junio 2006


Juan Palacio Baeres

Tabla
Tabla de
de contenido
contenido

Prlogo
Derechos
1.- Introduccin a la ingeniera del software
2.- Ciclo de vida
3.- Requisitos
4.- Anlisis y diseo
5.- Documentacin de usuario
6.- Verificacin y validacin
7.- Mantenimiento
8.- Gestin de la configuracin

Prlogo
Derechos
9.- Ingeniera de procesos del software
10.- Agilidad y procesos.
11.- Modelos formales: CMMI
12.- Modelos formales: ISO / IEC 15504
13.- Modelos giles
14.- Gestin de proyectos
14.1.- Gestin formal de proyectos
14.2.- Gestin gil de proyectos: Scrum
15.- Gestin de organizaciones de Software

Prlogo
Prlogo
CIS ofrece una visin prctica y sinptica de la Ingeniera del Software.
El formato de exposicin que emplea resulta adecuado para foros que requieren una exposicin
didctica de la Ingeniera del Software, o de alguna de sus reas (requisitos, CMMI, etc.) de carcter
ejecutivo o general, sin entrar en la densidad del libro especializado:

Formacin de Ingeniera del Software como asignatura complementaria en programas de


estudio tcnicos.

Formacin continua de gestores intermedios o directivos de empresas de software.

Etc.

Presentaciones de asesora y formacin profesional durante la implantacin de procesos de


mejora.

Este no es un trabajo completo, y por su carcter general no pretende cubrir todos los modelos,
tcnicas o lneas de trabajo de la Ingeniera del Software, sino las ms relevante y las que mayor
repercusin o uso tienen en la industria del desarrollo y mantenimiento de software.
Si resulta posible, en futuras revisiones se incluirn temas que por razones de tiempo y prioridad
an se han quedado fuera (DSDM, mtricas, estimaciones, etc.). Tambin en ellas se revisarn los
contenidos actuales.

Obra y derechos registrados en safecreative.net. Cdigo de obra: 0710040047711


Puede consultar la forma en la que puede emplear y distribuir este trabajo en:
hthttp://www.safecreative.org/work/0710040047711
3

1.- Introduccin a la Ingeniera


del Software

Introduccin Ingeniera del Software


Desarrollo
Desarrollo del
del hardware
hardware
La aparicin de componentes que cada dos aos doblan la capacidad de sus antecesores[1] nos ha
rodeado en menos de cuatro dcadas de mquinas capaces de procesar miles de millones de
operaciones por segundo (MTOPS).
En 1946 ENIAC ocupaba una superficie de 160 m2, pesaba 30 toneladas, y ofreca una capacidad de
proceso de 30.000 instrucciones por segundo. En 2002 El microprocesador Pentium IV a 2 Ghz
ocupa una superficie de 217 mm2 y tiene una capacidad de proceso de 5.300 MTOPS (Millions of
theoretical operations per second)
En la actualidad son cuatro los factores que imprimen un ritmo acelerado a la industria del
hardware.
De ellos, tres son consecuencia de la ley de Moore: Incremento constante de la capacidad de
operacin, miniaturizacin y reduccin de costes para la produccin de hardware; y a stos se ha
sumado en la ltima dcada el avance de las comunicaciones entre sistemas. La consecuencia es
obvia: ordenadores potentes, que pueden llevarse en el bolsillo y en permanente conexin con
grandes sistemas, redes de comunicacin pblicas, sistemas de localizacin GPS, etc.
Estas cuatro lneas de avance han extendido el mbito de aplicacin del hardware, e incrementado
al mismo ritmo exponencial la complejidad de los sistemas en los que se integra. Los ordenadores
ya no son mquinas tiles slo para la banca o el ejrcito. Se encuentran presentes en todos los
mbitos, por su capacidad de proceso y de comunicacin pueden ofrecer soluciones a sistemas cada
vez ms complejos.
Este es el escenario creado por la industria del hardware, y que en las tres ltimas dcadas ha
implicado a los desarrolladores de software en retos a los que no han sabido responder con
solvencia.
[1] Ley de Moore

Introduccin Ingeniera del Software


Desarrollo
Desarrollo del
del hardware
hardware
Desde 1965 la Ley de Moore rige la evolucin de los microprocesadores
100.000.000
Pentium IV
Pentium III

Transistores

10.000.000

Pentium II
Pentium

486 DX
1.000.000
386
286
100.000
8086
10.000
4004

8080
8008

1970

1975

1980

1985

1990

1995

2000

Factores que imprimen aceleracin al ritmo de crecimiento del hardware:


Incremento de la capacidad de operacin.
Consecuencias de la ley de Moore

Incremento de la miniaturizacin.
Reduccin de costes en la produccin.

Comunicaciones entre sistemas


6

Introduccin Ingeniera del Software


Crisis
Crisis de
de software
software
Proyectos para el desarrollo de sistemas de software
Fracaso
2004
2000
1998

19%

53%

23%

28%

46%
40%

31%

xito
29%

49%

28%

1995
1994

Problemtico

26%
33%

27%

53%

16%

El proyecto se aborta o el sistema no se llega a utilizar


Desbordamiento de agendas o costes. Las funcionalidades no cubren las
expectativas. Problemas funcionales
Proyecto realizado en el tiempo previsto, con los costes previstos, con la
funcionalidad esperada y ofreciendo un funcionamiento correcto.
Fuente: Standish Group Survey,
7

Introduccin Ingeniera del Software


Crisis
Crisis del
del software
software
Este problema se identific por primera vez en 1968, ao en el que la organizacin NATO desarroll
la primera conferencia sobre desarrollo de software, y en la que se acuaron los trminos crisis
del software para definir a los problemas que surgan en el desarrollo de sistemas de software, e
ingeniera del software para describir el conjunto de conocimientos que existan en aquel
estado inicial.
Algunas referencias tiles para comprender cules eran los conocimientos estables para el desarrollo
de software en 1968 son:

En 1962 se public el primer algoritmo para bsquedas binarias.

En 1968 los programadores se debatan entre el uso de la sentencia GoTo, y la nueva idea
de programacin estructurada; ese era el caldo de cultivo en el que Edsger Dijkstra escribi
su famosa carta GoTo Statement Considered Harmful en 1968.

La primera publicacin sobre programacin estructurada no vio la luz hasta 1974, publicada
por Larry Constantine, Glenford Myers y Wayne Stevens.

El primer libro sobre mtrica de software fue publicado en 1977 por Tom Gilb.

C. Bhm y G. Jacopini publicaron en 1966 el documento que creaba una fundacin para la
eliminacin de GoTo y la creacin de la programacin estructurada.

El primero sobre anlisis de requisitos apareci en 1979

Introduccin Ingeniera del Software


Ingeniera
Ingeniera del
del software
software
Definicin original:
Establecimiento y uso de principios de ingeniera para obtener software
econmico que trabaje de forma eficiente en mquinas reales.
Fritz Baver, 1968 (conferencia NATO)

Otras definiciones
Disciplina para producir software de calidad desarrollado sobre las agendas y
costes previstos y satisfaciendo los requisitos.
S. Schach 1990, Software Engineering

(1) La aplicacin de mtodos sistemticos, disciplinados y cuantificables para el


desarrollo, operacin y mantenimiento de software; esto es, la aplicacin de la
ingeniera al software.
(2) El estudio de (1).
IEEE 1993

Introduccin Ingeniera del Software


Ingeniera
Ingeniera del
del software
software
Desde 1968 hasta la fecha han sido muchos los esfuerzos realizados por los departamentos de
informtica de las universidades, y por organismos de estandarizacin (SEI, IEEE, ISO) para
identificar las causas del problema y definir pautas estndar para la produccin y mantenimiento del
software.
Los esfuerzos se han encaminado en tres direcciones principales.

Identificacin de los factores clave que determinan la calidad del software.


Identificacin de los procesos necesarios para producir y mantener software.
Acotacin, estructuracin y desarrollo de la base de conocimiento necesaria para la
produccin y mantenimiento de software.

El resultado ha sido la necesidad de profesionalizar el desarrollo, mantenimiento y


operacin de los sistemas de software, introduciendo mtodos y formas de trabajo
sistemticos, disciplinados y cuantificables.
La forma de trabajo de programadores individuales surgida por la necesidad de los primeros
programas, ha creado una cultura de la programacin heroica, para el desarrollo de software que es
la principal causa de los problemas apuntados, y en la actualidad una de las principales resistencias
a la implantacin de tcnicas de ingeniera para el desarrollo de sistemas

10

Introduccin Ingeniera del Software


Estndares
Estndares yy modelos
modelos
La Ingeniera del Software es una ingeniera muy joven que necesitaba:

Definirse a s misma: Cules son las reas de conocimiento que la comprenden?

Definir los procesos que intervienen en el desarrollo, mantenimiento y operacin


del software

De las mejores prcticas, extraer modelos de cmo ejecutar esos procesos para
evitar los problemas de la crisis del software

Definir criterios unificadores para las tareas de requisitos, pruebas, gestin de la


configuracin, etc.

Los estndares son tiles porque:


Agrupan lo mejor y ms apropiado de las buenas prcticas y usos del desarrollo de
software.
Engloban los conocimientos.
Proporcionan un marco para implementar procedimientos de aseguramiento de la calidad.
Proporcionan continuidad y entendimiento entre el trabajo de personas y organizaciones
distintas.

11

Introduccin Ingeniera del Software


Principales
Principales organizaciones
organizaciones de
de estandarizacin
estandarizacin
Desde la identificacin del fenmeno crisis del software, han sido muchas las organizaciones que
han abordado, con mayor o menor rigor, el anlisis de problemas en el desarrollo de sistemas de
software. Sus trabajos se han encaminado a la localizacin de las causas; y a la exposicin en
textos didcticos, normativos o estndares de procesos o prcticas necesarias para abordar el
desarrollo, mantenimiento y operacin con las mayores garantas de xito.
Han sido muchos los departamentos de universidades, organismos de normalizacin o investigacin
nacionales o internacionales, sociedades de profesionales, departamentos de defensa,
departamentos de calidad y procesos de empresas los que han ido generando normas y estndares.
Este compendio considera como entidades de mayor reconocimiento internacional, por sus trabajos
y esfuerzos realizados para la normalizacin, y reconocimiento de la Ingeniera del software a: ISO,
IEEE- Computer Society y SEI.

12

Introduccin Ingeniera del Software


Principales
Principales organizaciones
organizaciones de
de estandarizacin
estandarizacin

ISO
Organizacin Internacional para la Estandarizacin. Fundada en 1947
Son miembros 87 pases.
En 1987 la Organizacin Internacional para la Estandarizacin (ISO) y la Comisin
Internacional Electrotcnica (IEC), establecieron un Comit Internacional (JTC1) para las
Tecnologas de la Informacin. La misin del JTC1 es la estandarizacin en el campo de
campo de los sistemas de tecnologas de la informacin, incluyendo microprocesadores y
equipos.
Los estndares o instrucciones tcnicas ms importantes para la Ingeniera del Software:

SEI

ISO/IEC 12207
ISO/IEC TR 15504

Instituto de Ingeniera del software. (SEI http://www.sei.cmu.edu/).


Integrado en la Universidad Carnegie Mellon.
Los trabajos y aportaciones realizadas por el Instituto de Ingeniera del Software a la
Ingeniera del software son tambin referente mundial de primer orden, siendo la aportacin
ms significativa los modelos de madurez de las capacidades: CMM y CMMI; que en sus casi
15 aos de implantacin efectiva en entornos de produccin de software han demostrado su
efectividad en las dos finalidades que cubren: como marco de referencia para mejora de
procesos, y como criterio de evaluacin para determinar la madurez, y por tanto fiabilidad de
resultados previsibles de una organizacin de software.
13

Introduccin Ingeniera del Software


Principales
Principales organizaciones
organizaciones de
de estandarizacin
estandarizacin

IEEE Computer Society


IEEE Es el Instituto de Ingenieros en electricidad y electrnica (Institute
of Electrical and Electronics Engineers).
Su misin es preservar, investigar y promover la informacin de las
tecnologas elctricas y electrnicas.
Surgi en 1963 con la fusin del AIEE (Instituto Americano de Ingenieros Elctricos) y el Instituto
de Ingenieros de Radio (IRE).
La IEEE Computer Society (www.computer.org) es una sociedad integrada en IEEE, formada en la
actualidad por ms de 100.000 miembros en todo el mundo.
Su finalidad es avanzar en la teora, prctica y aplicacin de las tecnologas de la informacin.
Realiza conferencias, publicaciones, cursos de formacin, y desarrolla estndares.
Estndares para la Ingeniera del Software
IEEE ha desarrollado estndares para todas las reas de Ingeniera del Software.
Algunos de ellos, correspondientes a las principales reas especficas de la Ingeniera del
Software son:

IEEE Std. 830 Prcticas recomendadas para las especificaciones de software.


IEEE Std. 1362 Gua para la especificacin del documento de requisitos ConOps
IEEE Std. 1063 Estndar para la documentacin de usuario de software.
IEEE Std. 1012 Estndar para la verificacin y validacin de software.
IEEE Std. 1219 Estndar para el mantenimiento del software
14

Introduccin Ingeniera del Software


Principales
Principales estndares
estndares yy modelos
modelos
La Ingeniera del Software es una ingeniera muy joven que necesitaba:

Definirse a s misma: Cules son las reas de conocimiento que la comprenden?


SWEBOK: Software Engineering Body of knowledge

Definir los procesos que intervienen en el desarrollo, mantenimiento y operacin


del software
ISO/IEC 12207: Procesos del ciclo de vida del software

De las mejores prcticas, extraer modelos de cmo ejecutar esos procesos para
evitar los problemas de la crisis del software
CMM / CMMI
ISO/IEC TR 15504

Definir estndares menores para dibujar criterios unificadores en requisitos,


pruebas, gestin de la configuracin, etc.
IEEE 830 - IEEE 1362 - ISO/IEC 14764

15

Introduccin Ingeniera del Software


SWEBOK
SWEBOK
El proyecto SWEBOK (Software Engineering Body of Knowledge) comenz sus actividades de
manera efectiva dentro del SWECC1 en 1997 (aunque el comit SWECC se cre en 1993).
En el proyecto tambin estn representados:
los dos principales organizaciones de estandarizacin en Ingeniera del Software: IEEE e ISO/IEC
JTC1/SC/.
Los autores de las tres principales obras de Ingeniera del Software: Steve Mc Connell, Roger
Pressman e Ian Sommerville.
Universidad de Qubec (Montreal)
Empresas y organizaciones como: Rational, SAP, Boeing, Construx, MITRE, Raytheon,
En 2001 el proyecto public ya una definicin consensuada del cuerpo de conocimiento aceptado en
la ingeniera del software (http://www.swebok.org).
Las fuentes de informacin para la identificacin de las reas de conocimiento han sido los ndices
de textos genricos sobre la Ingeniera del Software, los curricula para licenciatura y postgrado en
Ingeniera de Software, y los criterios de admisin que se utilizan en el postgrado. Todos estos datos
se han organizado siguiendo el estndar ISO/IEC 12207.
El
El cuerpo
cuerpo de
de conocimiento
conocimiento identificado
identificado por
por el
el proyecto
proyecto SWEBOK
SWEBOK se
se ha
ha configurado
configurado como
como el
el estudio
estudio
ms
relevante
y
como
la
referencia
de
ms
autoridad
en
toda
la
comunidad
informtica
para
ms relevante y como la referencia de ms autoridad en toda la comunidad informtica para la
la
acotacin
acotacin yy descripcin
descripcin de
de los
los conocimientos
conocimientos que
que configuran
configuran la
la Ingeniera
Ingeniera del
del software.
software.

1 Software, Engineering Coordinating Comitee, Comisin creada por IEEE Computer Society y ACM (Association for Computer Machinery) para
definir el cuerpo de la Ingeniera del Software

16

Introduccin Ingeniera del Software


SWEBOK
SWEBOK
SWEBOK da el primer paso necesario para constituir a la Ingeniera del Software como profesin: la
delimitacin del cuerpo de conocimiento que comprende la profesin. Sin esta delimitacin no es
posible validar de forma universal exmenes de licenciatura, no es posible la preparacin para
acceder a la profesin, y no hay un consenso sobre el contenido de su currculo.
El proyecto parte de la suposicin de que es necesario establecer cul es el cuerpo de conocimiento
que deben conocer los ingenieros del software, y en su desarrollo ha agrupado este conocimiento en
10 reas

Requisitos
Diseo
Construccin
Pruebas
Mantenimiento

Gestin de la configuracin
Gestin
Procesos
Herramientas y mtodos
Calidad

Es importante resaltar que estas reas no incluyen aspectos importantes de las tecnologas de la
informacin, tales como lenguajes especficos de programacin, bases de datos relacionales o redes
o tecnologa de redes y comunicaciones.
Esta es una consecuencia de la distincin que entre esencia y accidente se establece desde un
enfoque de ingeniera.
Por supuesto que un Ingeniero de Software debe conocer las tcnicas de cada momento, pero la
definicin de procesos y metodologa de trabajo es la esencia de la profesin. As por ejemplo, el
rea de conocimiento de requisitos, s que puede considerarse como esencia de la profesin. Los
problemas que pueden derivarse en un proyecto por una mala obtencin o gestin de los requisitos
son indistintos del hardware o lenguaje de programacin empleado. Eran los mismos hace dos
dcadas que ahora, y todo nos hace suponer que seguirn siendo idnticos dentro de otros cuatro
lustros.

17

Introduccin Ingeniera del Software


ISO
ISO 12207:
12207: Propsito
Propsito
Establecer un estndar para evitar una situacin de Torre de Babel en la gestin e
ingeniera del software, proporcionando un marco y un lenguaje comn en la disciplina
del software
Establece un marco comn para el ciclo de vida del software para

Adquisicin, suministro, desarrollo, operacin y mantenimiento del software


Gestionar, controlar y mejorar el marco
Como base de referencia para el trabajo e intercambio entre organizaciones de software

Ciclo de vida del software


Periodo de tiempo que comienza al concebir la idea de un nuevo sistema de software, y
termina cuando este se retira y deja de funcionar.

18

Introduccin Ingeniera del Software


ISO
ISO 12207:
12207: Propsito
Propsito
El estndar no prescribe:

Que deba emplearse ningn tipo de documentacin especfica.


Que deba emplearse un tipo especfico de ciclo de desarrollo.
Mtodos concretos para el desarrollo, mantenimiento u operacin del software.

Define el QU, no el CMO.


Dice cules son los procesos, actividades y tareas implicados en el desarrollo,
mantenimiento y operacin de los sistemas de software, asentando un marco estndar de
referencia internacional, pero no se ocupa ni prescribe tcnicas especficas.

El estndar sirve de referencia desde dos perspectivas diferentes:


Para la adquisicin de sistemas y servicios de software.
Para el suministro, desarrollo, mantenimiento y operacin de productos de software.
El estndar no cubre el desarrollo de productos de software para distribucin comercial masiva
(productos en caja).
No se trata de un estndar de certificacin, tipo ISO 9000, sino de un estndar para la
normalizacin.
19

Introduccin Ingeniera del Software


ISO
ISO 12207:
12207: Procesos
Procesos
5. Procesos primarios

6.- Procesos de soporte

5.1
5.1 Adquisicin
Adquisicin

6.1
6.1 Documentacin
Documentacin

5.2
5.2 Suministro
Suministro

6.2
6.2 Gestin
Gestin de
de la
la configuracin
configuracin
6.3
6.3 Control
Control de
de calidad
calidad

5.3
5.3
Operacin
Operacin

6.4
6.4 Verificacin
Verificacin
6.5
6.5 Validacin
Validacin

5.3
5.3
Desarrollo
Desarrollo

6.6
6.6 Reuniones
Reuniones
5.3
5.3
Mantenimiento
Mantenimiento

6.7
6.7 Auditora
Auditora
6.8
6.8 Resolucin
Resolucin de
de problemas
problemas

7. Procesos organizacionales
7.1
7.1 Gestin
Gestin

7.2
7.2 Infraestructura
Infraestructura

7.3
7.3 Mejora
Mejora

7.4
7.4 Formacin
Formacin
20

Introduccin Ingeniera del Software


ISO
ISO 12207
12207

ISO 1227 define los procesos que componen el ciclo de vida del software

Actividad 1
Tarea 1
Tarea 2

Proceso

Tarea n

Ciclo de vida

Concepto
Retirada

Proceso
N

Actividad n
Tarea 1
Tarea 2

Tarea n

21

Introduccin Ingeniera del Software


ISO
ISO 12207
12207
PROCESO

Un proceso est compuesto por actividades.


ACTIVIDAD 1

Una actividad est compuesta de tareas.


TAREA 1

TAREA X

ACTIVIDAD n
TAREA 1

La descomposicin del proceso en actividades y tareas se realiza sobre el concepto de ciclo de


mejora PDCA Plan Do Chek Act (Planificacin, ejecucin, medicin y mejora)

INICIO

PLAN
Tareas, agenda,
asignaciones

ACT
Problemas y acciones
correctivas

PROCESO

DO
Ejecicin de planes
y tareas

CHECK
Evaluacin y
medicin

FIN
22

Introduccin Ingeniera del Software


INGENIERA
INGENIERA DE
DE SISTEMAS
SISTEMAS

ISO 12207 establece un nexo con la Ingeniera de sistemas al considerar al software como
parte de un sistema.
Desde esta perspectiva se establece a la Ingeniera de sistemas como fundamento de la
Ingeniera del Software.

Qu es un sistema?
Coleccin de componentes organizados para cumplir una funcin o conjunto de funciones
especficas.
IEEE Standard 610.12-1990
Sistema de
Entrada

Elemento
Elemento del
del
sistema
sistema

Elemento
Elemento del
del
sistema
sistema

Sistema

Elemento
Elemento del
del
sistema
sistema
Elemento
Elemento del
del
sistema
sistema

Sistema de
Salida

Coleccin de elementos relacionados de forma que puedan realizar un objetivo tangible.


Pressman 1982
23

Introduccin Ingeniera del Software


INGENIERA
INGENIERA DE
DE SISTEMAS
SISTEMAS
Sistema
conjunto de elementos de hardware, software, personas, procedimientos, herramientas y otros
factores organizativos, organizados para llevar a cabo un objetivo comn.

Sistema de software
Sistema o sub-sistema formado por una coleccin de programas y documentacin que de forma
conjunta satisfacen unos determinados requisitos.
Un sistema de software puede ser en s mismo un sistema independiente que, por ejemplo, realiza
su objetivo en un ordenador independiente. A este tipo de sistemas se les denomina tambin
sistema intensivo de software, porque el sistema es prcticamente software.
Un sistema de software puede ser tambin una parte de un sistema mayor. En cuyo caso se trata en
realidad de un sub-sistema de software.
Por ejemplo, el sistema de software de un avin de combate es en realidad el sub-sistema de
software del avin.

Ingeniera de sistemas
El trmino Ingeniera de sistemas surgi por primera vez en 1956, y fue propuesto por H. Hitch,
presidente del departamento de Ingeniera Aeronatica de la Universidad de Pensilvania, para
intentar desarrollar una disciplina de ingeniera que pudiera abarcar el desarrollo de grandes
sistemas que empleaban diversas disciplinas de ingenieras especficas: construccin de
bombarderos, submarinos, etc.
Los principios de Ingeniera de sistemas desarrollados en los 60 y 70 se aplicaron en programas
como el Apolo, o el programa de misiles balsticos USAF/USN.
24

Introduccin Ingeniera del Software


INGENIERA
INGENIERA DE
DE SISTEMAS
SISTEMAS
Algunas definiciones
Ingeniera de sistemas comprende la funcin de gestionar todo el esfuerzo de desarrollo para
conseguir un balance ptimo entre todos los elementos del sistema. Es el proceso que transforma la
necesidad operacional en la descripcin de los parmetros del sistema, e integra esos parmetros
para mejorar la eficiencia general del sistema.

Defense Systems Management College, 1989

Los procesos de ingeniera de sistemas integran las secuencias de actividades y decisiones que
transforman la definicin de una necesidad en un sistema, que con un ciclo de vida optimizado,
consigue un balance ptimo de todos sus componentes.
USAF, 1985

La principal funcin de la ingeniera de sistemas es garantizar que el sistema satisface los requisitos
durante todo el ciclo de vida. Todas las dems consideraciones se alinean sobre esta funcin.
Wymore 1993

La ingeniera de sistemas define el plan para gestionar las actividades tcnicas del
proyecto. Identifica el ciclo de desarrollo y los procesos que ser necesario aplicar. Desde
la Ingeniera de sistemas se desarrolla la lnea base tcnica para todo el desarrollo, tanto
de hardware como de software.

25

Introduccin Ingeniera del Software


INGENIERA
INGENIERA DE
DE SISTEMAS
SISTEMAS
Funciones de la Ingeniera de sistemas

Definicin del problema: Determinacin de las expectativas hacia el producto, necesidades y


restricciones obtenidas y analizadas en los requisitos del sistema. Trabaja cerca del cliente para
establecer las necesidades operacionales.

Anlisis de la solucin: Determinar las opciones posibles para satisfacer los requisitos y las
restricciones. Estudiar y analizar las posibles soluciones. Seleccionar la mejor, sopesando las
necesidades inmediatas, opciones de implementacin, utilidad, evolucin del sistema

Planificacin de los procesos: Determinar los grupos de tareas tcnicas que se deben realizar,
el esfuerzo requerido para cada una, su prioridad y los riesgos que implican para el proyecto.

Control de los procesos: Determinar los mtodos para controlar las actividades tcnicas del
proyecto y los procesos; la medicin del progreso, revisin de los productos intermedios y
ejecucin de las acciones correctivas, cuando corresponda.

Evaluacin del producto: Determinar la calidad y cantidad de los productos elaborados, a


travs de evaluaciones, pruebas, anlisis, inspecciones

26

Introduccin Ingeniera del Software


INGENIERA
INGENIERA DE
DE SISTEMAS
SISTEMAS
Ingeniera de sistemas Gestin de proyectos Ingeniera del Soft.
Gestin de proyectos

Ingeniera de sistemas

Definicin del problema


Anlisis de la solucin
Planificacin de procesos
Control de procesos
Evaluacin del producto

Planificacin
Organizacin
Personal
Direccin
Control

Ingeniera del software

Diseo del software


Codificacin
Pruebas unitarias
Integracin del
subsistema de software

27

Introduccin Ingeniera del Software


INGENIERA
INGENIERA DE
DE SISTEMAS
SISTEMAS
Ingeniera de sistemas Ingeniera de sistemas de software
Ingeniera del software

Anlisis
Anlisis del
del
sistema
sistema

Pruebas
Pruebas del
del
sistema
sistema

Diseo
Diseo del
sistema
sistema

Ingeniera de sistemas

Anlisis
Anlisis de
de
requisitos
requisitos del sw

Ingeniera de sistemas de software

Diseo
Diseo de la arquitectura
quitectura del sw
Ingeniera del software

Pruebas
Pruebas de
de
integracin
integracin del sis

Pruebas
Pruebas del
sistema
sistema de
de sw
sw

Pruebas
Pruebas de
de
integracin
integracin del
del sw
sw

Diseo
Diseo detallado
del
del software
software

Pruebas del subsistema


sistema de softw.

Ingeniera del software

Codificacin
Codificacin
Pruebas
Pruebas unitarias
unitarias
28

2.- Ciclo de vida del software

29

Ciclo de vida del software


Introduccin
Introduccin
En este tema se tratan los siguientes conceptos:

Ciclo de vida del software.


Procesos del ciclo de vida.
Modelos de ciclo de vida.

Ciclo
Ciclo de
de vida
vida del
del software
software
El marco del ciclo de vida del software cubre desde la conceptuacin de las ideas iniciales del
producto hasta el fin de su uso (retirada).
ISO/IEC 12207 1995

Desde el punto de vista del estndar (v. Introduccin a la Ingeniera del Software) un proceso es un
conjunto de actividades y tareas relacionadas, que al ejecutarse de forma conjunta transforman una
entrada en una salida.

30

Ciclo de vida del software


Procesos
Procesos primarios
primarios del
del ciclo
ciclo de
de vida
vida del
del software
software
12207 define los siguientes procesos primarios en el ciclo de vida del software:
ADQUISICIN
Proceso global que sigue el adquiriente para obtener el producto.
SUMINISTRO
Proceso global que sigue el suministrador para proporcionar el producto.
DESARROLLO
Proceso empleado por el suministrador para el diseo, construccin y pruebas del producto.
OPERACIN
Proceso seguido por el operador en el da a da para el uso del producto.
MANTENIMIENTO
Proceso empleado para mantener el producto, incluyendo tanto los cambios en el propio
producto como en su entorno de operacin.

31

Ciclo de vida del software


Procesos
Procesos de
de soporte
soporte del
del ciclo
ciclo de
de vida
vida del
del software
software
El estndar 12207 identifica los procesos de soporte que pueden ser utilizados desde un proceso
primario, o incluso desde otro proceso de soporte.
Los procesos de soporte son:
DOCUMENTACIN
Actividades empleadas para registrar informacin especfica empleada por otros procesos.
GESTIN DE LA CONFIGURACIN
Actividades empleadas para mantener un registro de los productos generados en la ejecucin
de los procesos.
ASEGURAMIENTO DE LA CALIDAD
Actividades empleadas para garantizar de forma objetiva que el producto y los procesos
asociados son conformes a los requisitos documentados y a las planificaciones.
VERIFICACIN
Actividades empleadas para verificar el producto.
VALIDACIN
Actividades empleadas para validar el producto.
32

Ciclo de vida del software


Procesos
Procesos de
de soporte
soporte del
del ciclo
ciclo de
de vida
vida del
del software
software
REUNIONES DE REVISIN
Reuniones empleadas por las dos partes para evaluar el estado del producto y de las
actividades.
AUDITORAS
Actividades para determinar que el proyecto cumple con los requisitos, planes y contratos.
RESOLUCIN DE PROBLEMAS
Actividades para analizar y resolver problemas relativas al proyecto, sea cual sea su fuente y
naturaleza.

33

Ciclo de vida del software


Procesos
Procesos organizacionales
organizacionales
El estndar 12207 identifica los procesos que deben realizarse en el contexto de la organizacin que
va a ejecutar el proyecto.
Normalmente estos procesos se aplican de forma comn sobre mltiples proyectos. De hecho las
organizaciones ms maduras los identifican e institucionalizan.
GESTIN
Describe las actividades de gestin de la organizacin, incluyendo tambin la gestin de
proyectos.
INFRAESTRUCTURA
Actividades necesarias para que puedan realizarse otros procesos del ciclo de vida. Incluye
entre otros el capital y el personal.
MEJORA
Actividades realizadas para mejorar la capacidad del resto de procesos.
FORMACIN

E1
E1

34

Ciclo de vida del software


VISIN
VISIN GENERAL
GENERAL DE
DE LOS
LOS PROCESOS,
PROCESOS, RELACIONES
RELACIONES Y
Y ROLES
ROLES

ADQUISICIN

emplea

PROCESO DE ADQUISICIN
PROCESO DE ADQUISICIN

Adquiriente
Adquiriente

contrato
ROL
SUMINISTRO

emplea
ROL
OPERACIN

emplea

PROCESO DE SUMINISTRO
PROCESO DE SUMINISTRO

Suministrador
Suministrador

Operador
Operador
Usuario
Usuario

emplea

emplea
emplea

PROCESO DE OPERACIN
PROCESO DE OPERACIN
usa

ROL
INGENIERA

ROL
SOPORTE

ROL
ORGANIZACIONAL

Desarrollador
Desarrollador
Mantenedor
Mantenedor

Usuario
Usuario del
proceso
proceso de
de
soporte
soporte

Gestor
Gestor

PROCESO DE
usa
PROCESO DE
MANTENIMIENTO
MANTENIMIENTO

Documentacin
Gestin de la configuracin
Aseguramiento calidad
Verificacin

Gestin

Infraestructura

PROCESO DE
PROCESO DE
DESARROLLO
DESARROLLO

emplea

PROCESOS DE SOPORTE

ROL

Validacin
Reuniones de seguimiento
Auditora
Resolucin de problemas

Mejora

Formacin

35

Ciclo de vida del software


Modelos
Modelos de
de ciclo
ciclo de
de vida
vida para
para el
el desarrollo
desarrollo
Los conceptos bsicos de partida son los definidos y normalizados en el estndar 12207:

Ciclo de vida del software: El periodo de tiempo comprendido desde la definicin de los
requisitos hasta el fin del su uso.
Procesos: Actividades y tareas implicadas en el desarrollo operacin y mantenimiento de un
sistema de software.

La aplicacin de los procesos, tanto en el desarrollo como en el posterior mantenimiento y operacin


del software, se dibuja a travs de unos patrones fijos que configuran el esquema de mapa de
situacin, relacin y continuidad entre los diferentes procesos, actividades y tareas.
En la etapa de desarrollo los patrones bsicos son:
Desarrollo en cascada. (o variante secuencial)
Desarrollo en espiral.
Una vez desarrollada la primera versin, el ciclo de vida del sistema discurre en cada momento
segn uno de los siguientes patrones.
Desarrollo incremental del sistema.
Desarrollo evolutivo del sistema.
Sobre estos patrones bsicos, en las diferentes etapas del ciclo de vida pueden intervenir como
modificadores los siguientes factores:
Prototipado.
Concurrencia.
Componentes comerciales y reutilizacin.
generando la riqueza de modelos y sub-modelos de patrones que algunos textos clasifican de forma
lineal y agrupada como modelos de ciclos de vida

36

Ciclo de vida del software

MODIFICADORES

Modelos
Modelos de
de ciclos
ciclos de
de vida
vida
MODELOS
CICLOS DESARROLLO
SECUENCIAL
SECUENCIAL
CASCADA
CASCADA
ESPIRAL
ESPIRAL

PROTOTIPADO
PROTOTIPADO

MODELOS CICLOS DE
VIDA DE SISTEMAS

INCREMENTAL
INCREMENTAL
EVOLUTIVO
CASCADA
EVOLUTIVO
CASCADA

CONCURRENCIA
CONCURRENCIA

COMPONENTES COMERCIALES Y REUTILIZAZIN


COMPONENTES COMERCIALES Y REUTILIZAZIN

37

Ciclo de vida del software


Modelos
Modelos de
de ciclos
ciclos de
de desarrollo
desarrollo
Lineal o secuencial

Requisitos
Diseo

Codificacin

Pruebas

Integracin
Operacin y
mantenimiento

38

Ciclo de vida del software


Modelos
Modelos de
de ciclo
ciclo de
de desarrollo
desarrollo
Lineal o secuencial
Este modelo refleja un desarrollo marcado por la sucesin escalonada de las etapas que lo
componen : requisitos, diseo, codificacin, pruebas e integracin.
Es necesario terminar por completo cada etapa para pasar a la siguiente
Este modelo, identificado ya a principios de la dcada de los 50, resulta muy rgido porque cada fase
requiere como elemento de entrada el resultado completo de la anterior.
Al aplicarlo en situaciones reales su rigidez genera problemas, porque muchas veces resulta difcil
poder disponer de requisitos completos o del diseo pormenorizado del sistema en las fases
iniciales, creando una barrera que impide avanzar.
Resulta apropiado para:

Desarrollar nuevas versiones de sistemas ya veteranos en los que el desconocimiento de las


necesidades de los usuarios, o del entorno de operacin no plantea riesgos.

Sistemas pequeos, sin previsin de evolucin a corto plazo.

El modelo prcticamente idntico, que evita esta rigidez es el de cascada, que se expone a
continuacin.

P1
P1

39

Ciclo de vida del software


Modelos
Modelos de
de ciclos
ciclos de
de desarrollo
desarrollo
Cascada

Requisitos
Diseo

Codificacin

Pruebas

Integracin
Operacin y
mantenimiento

P2
P2

40

Ciclo de vida del software


Modelos
Modelos de
de ciclos
ciclos de
de desarrollo
desarrollo
Cascada

Requisitos
Diseo

Codificacin

Pruebas

Integracin
Operacin y
mantenimiento

41

Ciclo de vida del software


Modelos
Modelos de
de ciclo
ciclo de
de desarrollo
desarrollo
Cascada

[1]

En 1970 Winston Royce defini flujos de retorno sobre el modelo secuencial, acuando as el modelo
en cascada.
El modelo en cascada refleja la necesidad impuesta por la realidad de retornar con frecuencia desde
una fase hacia las anteriores con la informacin generada al avanzar el desarrollo.
Las representaciones ms habituales de este modelo son las representadas en las dos figuras
anteriores. La primera parece indicar que el retorno posible se da solamente entre una fase y la
anterior, mientras que en la segunda se refleja mejor el hecho de que en cualquier fase puede surgir
un retorno para modificar cualquiera de las anteriores.
Este modelo, como el anterior, reconoce la importancia de disponer de unos requisitos y un diseo
previo antes de comenzar con la codificacin del sistema, pero al mismo tiempo se enfrenta al
hecho de que en la realidad la dificultad que supone disponer de documentacin elaborada de
requisitos y diseo antes de empezar a codificar puede actuar como una barrera que bloquee el
comienzo de la siguiente fase.
Por estas razones el modelo no se ha hecho muy popular, y los equipos que lo aplican pueden caer
en la tentacin de comenzar con el diseo o incluso con la codificacin, sin tener un conocimiento
suficiente de los requisitos.
Resulta apropiado para:

Desarrollar nuevas versiones de sistemas ya veteranos en los que el desconocimiento de las


necesidades de los usuarios, o del entorno de operacin no plantean riesgos.

Sistemas pequeos, sin previsin de evolucin a corto plazo.

[1] Algunos textos llaman cascada al modelo lineal, y cascada modificada al modelo de cascada

42

Ciclo de vida del software


Modelos
Modelos de
de ciclo
ciclo de
de desarrollo
desarrollo
Espiral

43

Ciclo de vida del software


Modelos
Modelos de
de ciclo
ciclo de
de desarrollo
desarrollo
Espiral
Este modelo, definido por Boehm en 1988, presenta un desarrollo evolutivo, en contraste a la
linealidad de los anteriores. Tambin introduce como elemento distintivo la actividad de anlisis de
riego para guiar la evolucin del proceso de desarrollo.
El ciclo de iteracin de este modelo evolutivo se convierte en una espiral, que al representarse sobre
ejes cartesianos muestra en cada cuadrante una clase particular de actividad: Planificacin, Anlisis
de riesgo, Ingeniera y Evaluacin, que se suceden de forma consecutiva a lo largo del ciclo de vida
del desarrollo. La dimensin angular representa el avance relativo en el desarrollo de las actividades
de cada cuadrante. En cada ciclo de la espiral se realiza una parte del desarrollo total, a travs de
los cuatro tipos de actividades.
En la planificacin de cada vuelta se establece el contexto del desarrollo y se decide qu parte del
mismo se abordar en el ciclo siguiente.
Las actividades de anlisis de riesgo evalan las alternativas posibles para la ejecucin de la
siguiente parte del desarrollo, seleccionando la ms ventajosa y previendo los riesgos posibles.
Las actividades de ingeniera corresponden a las indicadas en los modelos lineales (secuencial y
cascada): anlisis, diseo, codificacin, etc.
Las actividades de evaluacin analizan los resultados de la fase de ingeniera, tomando el resultado
de la evaluacin como punto de partida para el anlisis de la siguiente fase.
Este modelo permite mltiples combinaciones ya que en la planificacin de cada ciclo se determina
el avance que se va a ejecutar durante la vuelta. ste puede consistir en la obtencin y validacin
de requisitos, o en el desarrollo del diseo, o el diseo junto con la codificacin, o en la obtencin de
un subsistema completo (cascada de requisitos diseo codificacin pruebas integracin).
44

Ciclo de vida del software


Modelos
Modelos de
de ciclo
ciclo de
de desarrollo
desarrollo
Espiral
En funcin de las combinaciones empleadas se podra argumentar que un desarrollo en espiral
puede acabar siendo idntico a otro modelo. As por ejemplo si cada vuelta realizase exactamente
una de las fases del modelo en cascada, al final se podra argumentar que se ha seguido una
cascada. Si por el contrario en cada vuelta se desarrollara una parte del sistema global, se podra
decir que se ha seguido no un modelo de ciclo de desarrollo, sino de ciclo de vida, y concretamente
el modelo incremental.
Aunque a primera vista puede parecer cierto, en realidad no lo es.
Si al comenzar el desarrollo se tiene decidido que se van a abordar las fases de una cascada de
forma secuencial, indudablemente se va a seguir un modelo en cascada.
Si se determina ir elaborando partes del sistema, se opta por un ciclo de vida incremental.
Si slo se determina dar un pequeo paso, y despus de conseguido, evaluar el resultado y
planificar el siguiente paso, y antes de cada ejecucin se analizan los riesgos, en ese caso, el
modelo seguido es un modelo en espiral

P3
P3

45

Ciclo de vida del software


Modelos
Modelos de
de ciclos
ciclos de
de evolucin
evolucin
Incremental
REQUISITOS

Diseo
Diseo

Codificacin
Codificacin

Diseo
Diseo

Pruebas
Pruebas

Codificacin
Codificacin

Operacin
Operacin
Integracin
Integracin Mantenim.
Mantenim.
Pruebas
Pruebas

Diseo
Diseo

Sub-sistema

Operacin
Operacin
Integracin
Integracin Mantenim.
Mantenim.
Codificacin
Codificacin

Pruebas
Pruebas

Sub-sistema

SISTEMA

El modelo incremental mitiga la rigidez del modelo en cascada, descomponiendo el desarrollo de un


sistema en partes; para cada una de las cuales se aplica un ciclo de desarrollo (en cascada en la
representacin grfica siguiente).
Las ventajas que ofrece son:

El usuario dispone de pequeos subsistemas operativos que ayudan a perfilar mejor las
necesidades reales del sistema en su conjunto.

El modelo produce entregas parciales en periodos cortos de tiempo, comparados con el


tiempo necesario para la construccin del sistema en su conjunto, y permite la incorporacin
de nuevos requisitos que pueden no estar disponibles o no ser conocidos al iniciar el
desarrollo.

46

Ciclo de vida del software


Modelos
Modelos de
de ciclos
ciclos de
de evolucin
evolucin
Incremental
Aunque en la representacin grfica de la figura anterior, los desarrollos de cada subsistema se
solapan en el tiempo, en su aplicacin real, el segundo y siguientes subsistemas pueden comenzar
una vez concluido el anterior.
Resulta apropiado:
Desarrollo de sistemas en los que el cliente necesita disponer de parte de la funcionalidad antes de
lo que costara desarrollar el sistema completo.
Desarrollo de sistemas en los que por razones del contexto interesa realizar la obtencin de los
requisitos de forma escalonada a travs de subsistemas.

P4
P4

47

Ciclo de vida del software


Modelos
Modelos de
de ciclos
ciclos de
de evolucin
evolucin
Evolutivo
Requisitos
Requisitos

Diseo
Diseo

Codificacin
Codificacin

Requisitos
Requisitos

Pruebas
Pruebas

Diseo
Diseo

Operacin
Operacin
Integracin
Integracin Mantenim.
Mantenim.

Codificacin
Codificacin

Pruebas
Pruebas

Sistema

Operacin
Operacin
Integracin
Integracin Mantenim.
Mantenim.

Requisitos
Requisitos

Sistema

Diseo
Diseo

Este modelo est compuesto por varios ciclos de desarrollo. Cada uno de ellos produce un sistema
completo con el que se operar en el entorno de operacin.
La informacin acumulada en el desarrollo de cada sistema, y durante su fase de operacin sirve
para mejorar o ampliar los requisitos y el diseo del siguiente.
En realidad es un ciclo de vida comn a todos los sistemas desarrollados que se mejoran a travs de
versiones sucesivas.

48

Ciclo de vida del software


Modelos
Modelos de
de ciclos
ciclos de
de evolucin
evolucin
Evolutivo
Las circunstancias en las que este modelo puede resultar apropiado son

Desconocimiento inicial de todas las necesidades operativas que sern precisas,


generalmente por tratarse del desarrollo de un sistema que operar en un entorno nuevo
sin experiencia previa.

Necesidad de que el sistema entre en operacin en tiempos inferiores a los que seran
necesarios para disearlo y elaborarlo de forma exhaustiva.

Necesidad de desarrollar sistemas en entornos cambiantes (sujetos a normas legislativas,


mejora continua del producto para hacer frente a desarrollos de la competencia, etc.).

Aunque en su concepcin inicial contempla desarrollos internos en cascada, tambin podra


plantearse, por ejemplo, un ciclo de vida evolutivo con desarrollos internos en espiral.

P5
P5

P6
P6

49

Ciclo de vida del software


Modificadores
Modificadores de
de los
los modelos
modelos
Prototipado
El prototipado consiste en la construccin de modelos de prueba, que simulen el funcionamiento que
se pretende conseguir en el sistema.
Los prototipos pueden ser:

Ligeros: dibujos de pantallas de interfaz con simulacin de funcionamiento por enlaces a


otros dibujos

Operativos: Mdulos de software con funcionamiento propio que se desarrollan sin cubrir las
funcionalidades completas del sistema, normalmente en entornos RAD (rapid application
development.

Esta forma de trabajo previo suele tener como principal objetivo la experimentacin con un entorno
similar al pretendido, para obtener retro-informacin del usuario o cliente que ayuda a los
desarrolladores en la concrecin de los requisitos.
Aunque ofrece muchas ventajas, deben conocerse los riesgos que implica el uso de prototipado:

Como puede parecer que se ha desarrollado un interfaz de usuario sofisticado y elaborado,


el cliente puede llegar a pensar que ya se ha realizado el grueso del trabajo.

Si se trata de un prototipo operativo, puede empezar a crecer al margen de la planificacin,


ms all de los objetivos previstos, desbordando agendas y recursos.

Si se trata de un prototipo ligero desarrollado fuera del departamento de desarrollo (ej.


Marketing), puede mostrar al cliente funcionalidades no implementables.

El prototipo puede llegar a ofrecer funcionalidades superiores a lo conseguible, por estar


construido en un entorno diferente al de desarrollo, o no incluir toda la funcionalidad del
sistema.
50

Ciclo de vida del software


Modificadores
Modificadores de
de los
los modelos
modelos
Concurrencia
Consiste en el solapamiento de un proceso sobre otro.
Resulta bastante frecuente que aunque se haya planteado un desarrollo en cascada, se comience
con una fase sin haber terminado por completo la anterior; y as por ejemplo quiz el equipo que ha
llevado a cabo el diseo detallado de determinados mdulos, quiz comienza ya su codificacin,
mientras otros equipos an tienen en su planificacin tareas de diseo pendientes.
La concurrencia puede aportar beneficios sobre la planificacin de un proyecto de software, o por el
contrario ser origen o consecuencia de problemas.
Los factores que deben tenerse en cuenta para analizar cmo ayuda o perjudica al rendimiento son:

ndice de concurrencia. Se produce en un grado reducido, generando un escaso flujo de


modificaciones; o por el contrario se da de forma intensiva generando situaciones
problemticas en la planificacin o en la distribucin del trabajo.

Gestin de la concurrencia. La concurrencia puede producirse en un proyecto de forma


planificada o inducida por las circunstancias. En ambos casos resulta muy importante la
labor de gestin del proyecto para tratarla de forma adecuada con el mayor beneficio, o el
menor perjuicio a los planes y la calidad del proyecto.

51

Ciclo de vida del software


Modificadores
Modificadores de
de los
los modelos
modelos
Componentes comerciales y reutilizacin
Resulta muy habitual integrar en el desarrollo de un sistema partes pre-construidas: que pueden
ser componentes comerciales, o la reutilizacin de componentes o marcos ya desarrollados para
otros sistemas.
Esta tendencia surge desde tres situaciones:

Presin competitiva para reducir agendas y costes.


Incremento de la complejidad y estandarizacin de los entornos de operacin.
Aparicin de las lneas de produccin en las que se desarrollan mltiples sistemas de
software re-utilizando partes de diseo y componentes.

El uso de componentes o partes ya desarrolladas tienen implicaciones en el ciclo de desarrollo,


diferentes segn las circunstancias. As por ejemplo, si gran parte del sistema consta de
componentes ya desarrollados y probados, el periodo de pruebas se acortar sustancialmente.
Si un proyecto va a delegar funcionalidades crticas en un componente comercial, que no ha
empleado previamente la organizacin desarrolladora, es posible que incorpore en su ciclo de
desarrollo una fase de pruebas de ese componente, antes del diseo, para obtener la certeza previa
de que el componente se comporta como se espera.

52

Ciclo de vida del software


Creacin
Creacin del
del modelo
modelo de
de ciclo
ciclo de
de vida
vida
Al iniciar el proyecto, el responsable de la arquitectura de procesos debe realizar los siguientes
pasos:

Anlisis de las circunstancias ambientales del proyecto.

Mapeo de las actividades sobre el modelo.

Diseo del modelo especfico de ciclo de vida para el proyecto (sobre las bases de los
diseos ms apropiados, para el desarrollo y la evolucin del sistema de software.
Desarrollo del plan para la gestin del ciclo de vida del proyecto.

Debe considerar aspectos como:

E2
E2

Posibilidad de descomposicin del sistema en subsistemas de software, con agendas y


entregas diferenciadas.

Estabilidad esperada de los requisitos.


Novedad del proceso o procesos gestionados por el sistema en el entorno del cliente.
Criticidad de las agendas y presupuestos.
Grado de complejidad del interfaz de operacin, criticidad de la usuabilidad.
Grado de conocimiento y familiaridad con el entorno de desarrollo, componentes externos
empleados, etc.

53

3.- Requisitos del software

54

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos
Para que un esfuerzo de desarrollo de software tenga xito, es esencial comprender
perfectamente los requisitos del software. Independientemente de lo bien diseado o
codificado que est un programa, si se ha analizado y especificado pobremente,
decepcionar al usuario y desprestigiar al que lo ha desarrollado.
Roger S. Pressman Ingeniera del Software Mc Graw Hill 1995

La parte ms difcil en la construccin de sistemas software es decidir


precisamente qu construir. Ninguna otra parte del trabajo conceptual es tan ardua
como establecer los requerimientos tcnicos detallados, incluyendo todas las
interfaces con humanos, mquinas y otros sistemas software. Ninguna otra parte
del trabajo puede perjudicar tanto el resultado final si se realiza de forma errnea.
Ninguna otra parte es tan difcil de rectificar posteriormente.
Frederick P. Brooks, Jr., The Mythical Man-Month, Addison-Wesley, 1995.

55

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Qu porcentaje de proyectos concluyen con xito?


Un estudio realizado por Standish Group analiz el desarrollo de 8000 proyectos de software,
realizados por 350 empresas diferentes y concluy que slo el 16% de los proyectos de
software se realizan con xito.
El estudio identific como principales causas de los problemas:

Requisitos deficientes
La planificacin de agendas y estimaciones de costes no se realizaron en base a los
requisitos
Deficiencias en la aplicacin de procesos y desconocimiento del ciclo de vida del proyecto

Los criterios para determinar el xito de un proyecto son:

Sin desviaciones en las fechas previstas.


Sin desviaciones en los costes estimados.
Que el producto final cubra las expectativas y necesidades del cliente.
Que funcione correctamente.

56

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Porqu fracasan los proyectos?

Requisitos incompletos: 13%


Cambios en requisitos: 9%
No implicacin de usuarios: 12%

Expectativas no realistas: 10%


Producto no necesario: 8%

TOTAL: 52%
57

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos
50-200X
Coste de la
correccin
50-200X

Fase en la que se
detecta el fallo
Requisitos

1X
1X

Arquitectura

Diseo detallado

Construccin

Requisitos

Arquitectura

Diseo detallado

construccin

Produccin

Fase en la que se soluciona el fallo


58

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Sus defectos repercuten en todas las fases


REQUISITOS

Estimacin

E1
E1

Planificacin

Diseo

Construccin

V&V

Los errores en los requisitos se comportan como una enfermedad contagiosa que siempre repercute
en todas las fases del proyecto.
Estimacin: No es posible estimar con rigor costes y recursos necesarios para desarrollar
algo que no se conoce.
Planificacin No se puede confiar en la planificacin para el desarrollo de algo que no se
sabe bien como es.
Diseo: Los errores en requisitos, las modificaciones frecuentes, las deficiencias en
restricciones o futuras evoluciones, producen arquitecturas que ms tarde se confirmarn
como errneas y sern modificadas.
Construccin: Las deficiencias en los requisitos obligan a programar en ciclos de prueba y
error que derrochan horas y paciencia de programacin sobre patrones de recodificacin
continua y programacin heroica.
Validacin y verificacin: Terminado el desarrollo del sistema, si las especificaciones tienen
errores de bulto, o peor an, no estn reflejadas en una especificacin de requisitos, no
ser posible validar el producto con el cliente.
59

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Los defectos comunes en los requisitos y sus consecuencias.


Implicacin insuficiente
del cliente

Problemas en la validacin
del producto obtenido

Requisitos crecientes
y cambiantes

Degradacin de la estructura
y arquitectura del producto

Requisitos ambiguos

Prdida de tiempo en
re-codificacin

Requisitos
innecesarios

Trabajo innecesario

Requisitos mnimos
(insuficientes)

Problemas en la validacin
del producto obtenido

Requisitos mnimos
(insuficientes)

Error en la estimacin
y planificacin

Omisin de las necesidades


de grupos de usuarios

Usuarios insatisfechos

60

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Los defectos comunes en los requisitos y sus consecuencias.


Implicacin insuficiente del cliente
Algunos clientes no comprenden la importancia de trabajar con rigor en la obtencin de los
requisitos, para garantizar la calidad de los resultados.
Tambin es frecuente que los desarrolladores prefieran comenzar a trabajar en la
construccin del sistema, porque les resulta ms atractivo que reunirse con el cliente.
Hay situaciones en las que resulta difcil encontrar representantes del cliente que conozcan
a fondo el problema, o que por tratarse de un sistema o negocio nuevo, nadie en el entorno
del cliente tenga claras todas las funcionalidades que se necesitan.
Requisitos crecientes y cambiantes
Independientemente del punto del ciclo de vida en que nos encontremos, el sistema cambiar y
la tendencia al cambio persistir a lo largo de todo el ciclo de vida
Software Configuration Management, Prentice-Hall, 1980.
Es normal que los requisitos evolucionen durante el desarrollo del sistema, pero los cambios
deben partir de una descripcin inicial correcta, y gestionarse convenientemente, midiendo su
impacto en la planificacin del proyecto, y consensundolo con todos los participantes.
La evolucin de los requisitos durante el desarrollo de los proyectos puede incrementar o
modificar funcionalidades ya implementadas, desbordando los costes y agendas planificados.

61

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Los defectos comunes en los requisitos y sus consecuencias.


Requisitos crecientes y cambiantes
Partir de una especificacin de requisitos incompleta incrementar el nmero de modificaciones
que sufrir el proyecto durante el desarrollo. Si los desarrolladores han diseado un sistema que
no corresponde con las expectativas del cliente, la introduccin sistemtica (generalmente con
agendas apretadas, o sin modificar las agendas iniciales), generar parches de programacin, con
insercin de cdigo adicional que puede trastocar principios bsicos de diseo y degradar la
arquitectura del sistema obteniendo finalmente un producto con serias deficiencias tcnicas.
Requisitos ambiguos
La ambigedad es un defecto habitual de las descripciones de requisitos.
Si lectores diferentes obtienen interpretaciones diferentes, o si un lector puede interpretar los
requisitos de formas diferentes, stos son ambiguos.
La ambigedad crea expectativas diferentes entre las partes del proyecto, y hace que los
desarrolladores programen funcionalidades que no se ajustan a lo que los usuarios necesitan.
La consecuencia inevitable de este problema es la re-programacin
La reprogramacin puede consumir ms del 40% del coste total de un desarrollo y se ha
estimado que hasta un 85% de las revisiones pueden deberse a errores en los requisitos

[1]

Para evitarla hay que confirmar que se comparte la visin obtenida con la que tienen las
diferentes fuentes de requisitos, y que los distintos participantes obtienen la misma
interpretacin de la documentacin de requisitos.
[1] Calculating the Return of Investment from More Effective Requirement Management, Leffingwell, Dean. 1997.

62

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Los defectos comunes en los requisitos y sus consecuencias.


Requisitos innecesarios
Es frecuente la tendencia de algunos desarrolladores a incluir funcionalidades que no figuran en
la especificacin de requisitos, con la suposicin de que los usuarios lo agradecern. Muchas
veces los usuarios no les encuentran utilidad y quedan finalmente programadas pero sin uso,
suponiendo un coste de desarrollo innecesario.
Las sugerencias y posibilidades aportadas por el equipo de desarrollo pueden descubrir mejoras
importantes para el cliente o los usuarios, pero no deben implementarse sin consultarlas y
validarlas previamente.
Desde el punto de vista del equipo de desarrollo la mejor perspectiva es respetar la sencillez y
funcionalidad, y no ir ms all de los requisitos, sin la aprobacin del cliente.
Tambin es frecuente que el cliente pida funcionalidades que a primera vista pueden parecer
necesarias, pero que en realidad no aaden funcionalidad al producto, y que sin embargo
suponen un esfuerzo importante de desarrollo. Identificar estas funcionalidades, y pensar dos
veces si realmente se necesitan puede ahorrar trabajo innecesario

63

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Los defectos comunes en los requisitos y sus consecuencias.


Requisitos insuficientes (mnimos)
Muchas veces el cliente tiene tan slo el concepto general del producto que desea, y no
comprende por qu es tan importante detallar los requisitos.
La tentacin en estos casos es partir de una descripcin mnima, o incluso de una explicacin
verbal, e ir preguntando y revisando a los programadores conforme el desarrollo avanza.
Esta forma de trabajo puede resultar apropiada slo para la construccin de sistemas
experimentales o prototipos, pero en general suele terminar con la frustracin de los
desarrolladores y el desconcierto y desesperacin del cliente.
Este planteamiento tambin genera la situacin muy frecuente de contar a los desarrolladores la
idea general de un nuevo producto, para pedirles una estimacin del tiempo necesario para
desarrollarlo.
Normalmente la visin general, sin descender a los detalles que implica, genera previsiones
optimistas que terminarn desbordadas al descubrir durante el desarrollo las implicaciones que
pasan inadvertidas en la concepcin inicial.
Las estimaciones prematuras, basadas en informacin limitada pueden fcilmente desbordarse en
ms del doble. Siempre que sea preciso ofrecer valoraciones previas es conveniente ofrecer
varias posibilidades (mejor caso, caso probable, peor caso), o incluir un porcentaje posible de
error probable.

64

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Los defectos comunes en los requisitos y sus consecuencias.


Omisin de las necesidades de algunos grupos de usuarios
Entre los usuarios de un sistema es frecuente que se incluyan grupos de personas con
necesidades diferentes, que empleen funcionalidades distintas, e incluso que presenten diversos
perfiles de experiencia y conocimientos.
Al identificar las posibles fuentes de requisitos hay que localizar todos los posibles usuarios y
obtener informacin de sus caractersticas, necesidades y expectativas

65

Requisitos del software


Importancia
Importancia de
de los
los requisitos
requisitos

Beneficios de los buenos requisitos.

E2
E2

Acuerdo entre desarrolladores, clientes y usuarios sobre el trabajo que debe realizarse.
Unos requisitos bien elaborados y validados con el cliente evitan descubrir al terminar el
proyecto que el sistema no era lo que se peda.

Acuerdo entre desarrolladores, clientes y usuarios sobre los criterios que se emplearn para su
validacin.
Resulta muy difcil demostrar al cliente que el producto desarrollado hace lo que el pidi si su
peticin no est documentada y validada por l.

Base objetiva para la estimacin de recursos (coste, personal en nmero y competencias, equipos
y tiempo)
Si los requisitos no comprenden necesidades reales, las estimaciones no dejan de ser meras
apuestas. Las estimaciones en el fondo son clculos de probabilidad que siempre implican un
margen de error; por esta razn disponer de la mayor informacin posible reduce el error.

Concrecin de los atributos de calidad (ergonoma, mantenibilidad, etc.)


Ms all de funcionalidades precisas, los requisitos recogen atributos de calidad necesarios
que en ocasiones son desconocidos por los desarrolladores, produciendo finalmente sistemas
sobredimensionados o con serias deficiencias de rendimiento.

Eficiencia en el consumo de recursos: reduccin de la re-codificacin, reduccin de omisiones y


malentendidos.
Tener un conocimiento preciso de lo que hay que hacer evita la prueba y error, repeticin de
partes ya desarrolladas, etc.
66

Requisitos del software


Ingeniera
Ingeniera de
de requisitos
requisitos

Conceptos clave.

Requisitos
del software

Requisitos
del sistema

Procesos de
ingeniera de
requisitos

Especificacin

Obtencin

Anlisis

Gestin

Validacin y
verificacin

67

Requisitos del software


Ingeniera
Ingeniera de
de requisitos
requisitos
Ingeniera de requisitos

Procesos

Obtencin
Obtencin

Anlisis
Anlisis

mbitos

Especif.
Especif.

V
V&
&V
V

Gestin
Gestin

Sistema
Sistema

Software
Software

La ingeniera del software y la ingeniera de requisitos son ingenieras muy recientes.


En la actualidad acaba de cerrarse la versin 1.0 de SWEBOK, que constituye el esfuerzo ms serio
y consensuado hasta la fecha para definir las reas de conocimiento que la integran.
En este estado de cosas no es extrao encontrar que, diferentes autores clasifican o presentan los
conceptos clave de forma diferente, si bien los conceptos bsicos siempre son los mismos:
Obtencin, anlisis, especificacin, validacin y verificacin y gestin.
As por ejemplo, Karl Wiegers centra su inters clasificatorio en la diferencia entre el desarrollo de lo
requisitos y su posterior gestin.
SWEBOK plantea una representacin esquemtica plana (no distingue entre gestin y desarrollo) y
centra su inters slo en los requisitos del software.
IEEE carga el peso de la clasificacin en la diferencia entre requisitos del sistema y del software.
Nuestro punto de vista contempla las 5 reas clave, que se trabajan tanto en el mbito de los
requisitos del sistema como en los requisitos del software.
68

Requisitos del software


Ingeniera
Ingeniera de
de requisitos
requisitos
Obtener informacin

Registro y contrastacin

Controlar las
modificaciones

Obtener informacin

Clasificarla, localizar
inconsistencias, dar
prioridades, pasar a
requisitos

Escribir los
requisitos

Comprobar que son


formalmente
correctos y lo que el
cliente quiere

Registrar cambios,
estudiar su impacto,
actualizar
documentacin

OBTENCIN

ANLISIS

ESPECIFICACIN

VERIFICACIN
&
VALIDACIN

GESTIN

Obtencin (elicitation)
El primer paso consiste en conocer y comprender las necesidades y problemas del cliente.
En la obtencin se identifican todas las fuentes de requisitos implicadas en el sistema y, en funcin
de las caractersticas del entorno y del proyecto se emplean las tcnicas ms apropiadas para la
identificacin de las necesidades que deben satisfacerse.
Anlisis
Una vez obtenida la informacin necesaria del entorno, es necesario sintetizarla, darle prioridades,
analizar posibles contradicciones o conflictos, descomponer el sistema y distribuir las necesidades de
cada parte, delimitar los lmites del sistema y definir su interaccin con el entorno.
69

Requisitos del software


Ingeniera
Ingeniera de
de requisitos
requisitos
Especificacin
Cuando ya se conoce el entorno del cliente y sus necesidades, es necesario plasmarlas en forma de
requisitos en los documentos que sirven de base de entendimiento y acuerdo entre cliente y
desarrollador, y que establecern tanto la gua desarrollo como los criterios de validacin del
producto final.
Documentar los requisitos es la condicin ms importante para gestionarlos correctamente.
Verificacin y validacin
Los requisitos deben ser formal y tcnicamente correctos (verificacin), y satisfacer las necesidades
del sistema, sin omitir ninguna ni incluir funcionalidades innecesarias (validacin).
El significado de estos dos trminos genera confusiones habitualmente. El criterio bsico que los
diferencia es que verificacin se refiere a la calidad formal, en este caso de los documentos de
requisitos (no son ambiguos, no son incompletos, son posibles, verificables, etc.) y validacin
comprende la adecuacin en el entorno de produccin, en el caso de la documentacin de
requisitos, la conformidad por parte del cliente de que reflejan lo que l quiere.
Gestin
Los requisitos cambiarn durante el desarrollo del sistema, y es necesario poder trazar en cada
cambio todas las partes afectadas, as como poder medir el impacto que cada modificacin implica
en la planificacin del proyecto.

70

Requisitos del software


mbitos
mbitos de
de los
los requisitos
requisitos
Sistema
Sistema

Descripcin
Descripcin del
del sistema
sistema
ConOps
ConOps

Software
Software

Requisitos
Requisitos del
del software
software
SRS
SRS

mbitos

Descripcin del sistema


Documento, tambin denominado ConOps y normalizado en el estndar IEEE Std. 1362-1998.
Definicin:
Documento dirigido a los usuarios, que describe las caractersticas de un sistema propuesto,
desde el punto de vista del usuario. La Descripcin del Sistema es el medio de comunicacin que
recoge la visin general, cualitativa y cuantitativa de las caractersticas del sistema; compartido
por la parte cliente y desarrolladora.

71

Requisitos del software


Descripcin
Descripcin del
del sistema
sistema

Propsito de la descripcin del sistema


El desarrollo de la Descripcin del Sistema proporciona una actividad de anlisis y un documento
que tiene la funcin de enlace entre las necesidades del usuario, y las especificaciones tcnicas
del desarrollo.
La Descripcin del sistema proporciona:

La descripcin de las necesidades operacionales del usuario sin entrar en detalles


tcnicos.

La documentacin de las caractersticas del sistema y las necesidades operacionales del


usuario, de forma que puedan ser verificadas sin requerir conocimientos tcnicos.

El documento que recoge los deseos del usuario, sin requerir una cuantificacin medible.
Por ejemplo, el usuario puede indicar que desea que los tiempos de respuesta de las
consultas sean rpidos, y las razones de su deseo, sin necesidad de cuantificar esos
trminos. Ms adelante, el desarrollo y anlisis de los requisitos del sistema, el analista
concretar y cuantificar esos deseos.

El documento en el que, comprador y suministrador, reflejan las posibles estrategias de


solucin, y las restricciones que deben respetarse.

72

Requisitos del software


Descripcin
Descripcin del
del sistema
sistema

Propsito del estndar IEEE 1362


Ofrece un formato y contenidos para la confeccin de las descripciones de sistema en los
desarrollos y modificaciones de sistemas intensivos de software.
El estndar no especifica tcnicas exactas, sino que proporciona las lneas generales que deben
respetarse. No es por tanto un modelo final, sino una gua de referencia sobre la que cada
organizacin debe desarrollar sus propias prcticas y procedimientos para preparar y actualizar
su documentacin con las descripciones de los sistemas.
Las partes esenciales de un ConOps son:
Punto 3: descripcin del sistema existente.
Punto 4: justificacin del desarrollo o de la modificacin,
Punto 5: Descripcin del sistema propuesto.
Los proyectos de tamao pequeo requieren descripciones de sistema menos formales, pero no
por su reducido tamao debe ignorarse.
Si el proyecto de software forma parte de un proyecto mayor, la descripcin del sistema de
software puede ser un documento separado, o ir incluido en la descripcin del sistema completo.
El estndar puede aplicarse a todos los tipos de sistemas de software: slo software, intensivos
de software o software/ hardware/personas. Aunque los conceptos del estndar tambin podran
aplicarse a sistemas de hardware, esta no es su finalidad.
El estndar identifica los elementos que al menos debe incluir una Descripcin del sistema. El
usuario puede incorporar otros elementos, agregando clusulas y sub-clusulas.
73

Requisitos del software


Descripcin
Descripcin del
del sistema
sistema

74

Requisitos del software


Descripcin
Descripcin del
del sistema
sistema

SISTEMA

EVOLUCIN
PREVISTA

75

Requisitos del software


Especificacin
Especificacin de
de requisitos
requisitos del
del software
software (SRS)
(SRS)
Un documento SRS es la especificacin de las funciones que realiza un determinado producto de
software, programa o conjunto de programas en un determinado entorno.
El documento de especificacin de requisitos puede desarrollarlo personal representativo de la
parte suministradora, o de la parte cliente; si bien es aconsejable la intervencin de ambas partes.
Los aspectos bsicos que una descripcin de requisitos debe cubrir son:

Funcionalidad. Descripcin de lo que el software debe hacer.

Rendimiento. Indicacin de la velocidad, disponibilidad, tiempos de respuesta, tiempos de


recuperacin, tiempos de determinadas funciones.

Atributos. Consideraciones de portabilidad, correccin, mantenibilidad, seguridad, etc.

Interfaces externos. Cmo debe interactuar el software con las personas, el sistema de
hardware, o con otros sistemas (software y hardware).

Restricciones de diseo en la implementacin. Indicacin de las restricciones que


puedan afectar por la necesidad de sometimiento a estndares, lenguajes, polticas de
integridad de bases de datos, lmites de recursos disponibles para el desarrollo, sistema
operativo, etc.

Las especificaciones de requisitos de software deben evitar incluir requisitos de diseo o de


proyecto.

76

Requisitos del software


Especificacin
Especificacin de
de requisitos
requisitos del
del software
software (SRS)
(SRS)

No deben incluir restricciones de diseo gratuitas


Deben especificar el QU, no el CMO
Una descripcin de requisitos del sistema limita las alternativas de diseo posibles, pero esto no
significa que deba decidir cul debe ser la solucin de diseo del sistema.
La especificacin de requisitos de software determina qu funcionalidades deben realizarse, qu
datos deben generarse en cada resultado, en qu lugar y quin los debe producir. La SRS debe
centrarse en los servicios que se realizarn, pero, en general, no debe especificar elementos de
diseo como los siguientes:

Divisin del software en mdulos.


Distribucin de funciones en los mdulos.
Descripcin del flujo de informacin entre los mdulos.
Eleccin de las estructuras de datos.

Deben centrarse nicamente en el punto de vista externo


del sistema, y no en el funcionamiento interno

77

Requisitos del software


Especificacin
Especificacin de
de requisitos
requisitos del
del software
software (SRS)
(SRS)

Restricciones de diseo necesarias


En algunos casos especiales, los requisitos pueden restringir el diseo de forma severa. Por
ejemplo, algunos requisitos de seguridad pueden implicar consideraciones de diseo como:

Mantener ciertas funciones en mdulos separados.


Permitir o limitar la comunicacin entre determinadas reas del programa.
Comprobar la integridad de los datos en variables crticas.

Algunos ejemplos de restricciones de diseo vlidas los constituyen los requisitos fsicos, los de
rendimiento y el cumplimiento de estndares en el desarrollo y procesos de garanta de calidad.

Exclusin de parmetros y datos de planificacin del proyecto


La especificacin de requisitos de software se centra en el producto, no en el proceso de produccin
del producto.
Los requisitos de proyecto representan los trminos contractuales entre el cliente y el suministrador, y
no deben incluirse en la SRS. Normalmente incluyen informacin relativa a los procesos de adquisicin
o de suministro:

E3
E3

Coste.
Agenda de entregas.
Procedimientos de seguimiento.
Mtodos de desarrollo del software.
Control de calidad.
Criterios de validacin y verificacin.
Procedimientos de aceptacin
78

Requisitos del software


Descripcin
Descripcin del
del sistema
sistema SRS:
SRS: Diferencias
Diferencias

Pertenecen a procesos primarios diferentes


DESCRIPCIN
DEL SISTEMA

SRS

5.1 Adquisicin

5.1 Adquisicin

5.2 Suministro

5.2 Suministro

5.4
Operacin

5.3
Desarrollo

5.4
Operacin

5.3
Desarrollo
5.5
Mantenimiento

5.5
Mantenimiento

Procesos primarios del ciclo de vida del software (ISO 12207)

79

Requisitos del software


Descripcin
Descripcin del
del sistema
sistema SRS:
SRS: Diferencias
Diferencias

Pertenecen a entornos diferentes


ENTORNO DEL PROBLEMA

ENTORNO DE LA SOLUCIN

DESCRIPCIN DEL SISTEMA

SRS

E4
E4

80

Requisitos del software


Conceptos
Conceptos clave
clave
Independientemente de las tcnicas o procesos que se apliquen para realizar las diferentes tareas
relacionadas con el rea de requisitos, son cinco los objetivos que hay que cubrir:

ANALIZAR EL PROBLEMA

DEFINIR EL SISTEMA

DESARROLLAR LOS REQUISITOS DEL SOFTWARE

GESTIONAR LOS REQUISITOS

COMPRENDER LAS NECESIDADES DE LOS USUARIOS

Analizar el
problema

Comprender las
necesidades de
los usuarios

Definir el sistema

Desarrollar los
requisitos del
software

Gestionar los
requisitos

81

Requisitos del software


Conceptos
Conceptos clave
clave

Analizar el problema
Consiste en comprender los problemas reales de los usuarios, y proponer soluciones que cubran
sus necesidades.
El objetivo del anlisis es conseguir la mayor comprensin posible antes de que empiece el
desarrollo.
El analista de requisitos es en realidad un solucionador de problemas.
Durante el anlisis debe comprender las necesidades de los usuarios, y proponer soluciones. En
esta tarea es necesario explorar y comprender el entorno del cliente.
Al realizar el anlisis hay que
Evitar la tendencia frecuente a los prejuicios creyendo que ya conocemos las necesidades del
cliente, y que su principal problema en realidad es que no entiende cul es su problema.
Tener en cuenta que siempre hay varias maneras de abordar un problema, y que en ocasiones,
cambiar la perspectiva del usuario puede generar la solucin ms eficiente y rentable, aunque no
siempre es posible.
Comenzar el anlisis sin ideas preconcebidas y teniendo presente el objetivo: conseguir la mayor
comprensin posible del problema.
El anlisis del problema comprende
1.2.3.4.-

Identificacin del problema.


Identificacin de las partes implicadas.
Delimitacin de la solucin.
Identificacin de las restricciones.

82

Requisitos del software


Conceptos
Conceptos clave
clave

Comprender las necesidades de los usuarios


La obtencin de los requisitos es sin duda la parte ms difcil del desarrollo de un sistema, y en la
actualidad es la principal causa de problemas.
En el apartado Obtencin de requisitos desarrolla de forma exclusiva este punto.

Definir el sistema
La descripcin del sistema marca el punto intermedio entre el anlisis del problema, y la
descripcin detallada de los requisitos del software. Es el documento que ofrece una visin general,
y ofrece la idea global del sistema en su conjunto. Marca una pausa antes de seguir avanzando
hacia los detalles, para evitar que los rboles nos impidan ver el bosque.
El resultado de esta fase es el documento de Definicin del sistema,
frecuentemente llamado tambin ConOps (Concept of Operations).

83

Requisitos del software


Conceptos
Conceptos clave
clave

Definir el sistema
La descripcin del sistema el resultado del anlisis conceptual, y debe contener toda la informacin
necesaria para describir las necesidades de los usuarios, expectativas, entorno operativo, procesos
y caractersticas del sistema que se ha ideado para darles solucin.
Los elementos esenciales de la descripcin del sistema son:

Descripcin del sistema o de la situacin actual.


Descripcin de las necesidades que han motivado el desarrollo de un sistema nuevo, o de
la necesidad de modificar el actual.
Modos de operacin propuestos para el nuevo sistema.
Tipos de usuarios y caractersticas.
Funcionalidades propuestas.
Restricciones que debe respetar el sistema.

Por Definir el sistema no consideramos slo la redaccin del Con Ops por
el ingeniero de requisitos. Tambin comprende la verificacin y
validacin del documento.
Por verificacin se entiende la supervisin del documento para garantizar que
resulta formalmente correcto.
Validacin implica la conformidad de las partes afectadas por el sistema
(usuarios, clientes, etc.).

84

Requisitos del software


Conceptos
Conceptos clave
clave

Desarrollar los requisitos del software


Tras analizar los problemas y necesidades de los usuarios, conocer las limitaciones que tener en
cuenta, y haber sintetizado en la descripcin del sistema la visin global de la solucin que se
pretende construir, es el momento de profundizar en los detalles.
El nivel de precisin que se debe alcanzar en la descripcin de los requisitos del software (SRS),
depende de varios factores, incluyendo el contexto de la aplicacin, los conocimientos del equipo de
desarrollo, as como su experiencia en desarrollos similares.
Los requisitos del software tambin deben verificarse y validarse, para garantizar, por un lado, que
son formalmente correctos, y por otro que dan respuesta a las necesidades de todas las partes
implicadas.

85

Requisitos del software


Conceptos
Conceptos clave
clave

Gestionar los requisitos


Una vez que se ha comprendido el problema del usuario, se ha definido y descrito el sistema que
se desea construir para solucionarlo, y detallado los requisitos del software, comienza la fase de
diseo y desarrollo.
Se puede considerar que la fase de requisitos ya ha terminado al generar los documentos de
descripcin del sistema y descripcin de requisitos del software. Pero lo cierto es que los ciclos de
desarrollo secuenciales, o de cascada pura son muy raros, y, aun el caso de que inicialmente se
haya planteado este ciclo, desde la gestin del proyecto se debe considerar la posibilidad de
incorporar modificaciones en los requisitos durante el periodo de desarrollo.
Cuanto ms complejo sea el sistema, y ms larga la agenda de desarrollo, habr mayor
probabilidad de modificaciones sobre los requisitos; y si no se gestionan convenientemente
deteriorarn, en mayor o menor medida, la planificacin y la calidad del proyecto.
Si bien es cierto que no es posible plantear escenarios de desarrollo ideales en los que, tras una
definicin inicial de los requisitos, stos se van a mantener inamovibles durante todo el desarrollo
del producto; tampoco es posible incorporar modificaciones sobre los requisitos que han servido de
base para la planificacin del proyecto, y el diseo de la solucin, sin que la incorporacin obligue a
medir las consecuencias que van a tener sobre el trabajo ya realizado, el pendiente de realizar, las
posibles reconsideraciones de diseo, y en consecuencia sobre los costes y agendas del proyecto.

Requisitos

Diseo

Codificacin

Integracin/
pruebas

La gestin de requisitos da continuidad a esta rea durante todo el proyecto


86

Requisitos del software


Conceptos
Conceptos clave
clave

Gestionar los requisitos


El hecho de tener que gestionar los requisitos durante todo el ciclo de vida del sistema no quiere
decir que cualquier momento del desarrollo sea un buen momento para seguir descubriendo cules
son las necesidades de los clientes. La incorporacin de nuevos requisitos, o la modificacin de los
iniciales resulta mucho ms costosa conforme van avanzando las fases del proyecto. Por esta
razn, los ciclos secuenciales o de cascada con escasas iteraciones de retroceso son los ms
eficientes en el consumo de recursos.
Las razones que normalmente no permiten llegar a un conocimiento detallado del problema en la
fase inicial de los requisitos suelen ser:

Sistemas complejos.
Sistemas para dar soporte a procesos de negocio poco maduros.
Desarrollos evolutivos impuestos por la necesidad de implantaciones parciales tempranas
para los usuarios.
Avance del desarrollo del proyecto

Coste de la introduccin de modificaciones de requisitos


87

Requisitos del software


Conceptos
Conceptos clave
clave

Gestionar los requisitos


Al analizar el problema del cliente, y desarrollar los documentos de requisitos no hay que
escamotear esfuerzos para profundizar en las funcionalidades del sistema, y caer en la tentacin de
dejar pendientes de concrecin, o insuficientemente analizadas partes del problema para ms
adelante.
La gestin de los requisitos implica que cada modificacin de requisitos:

Debe provenir de una fuente autorizada.

Debe incorporarse formalmente a la documentacin de requisitos

Debe alcanzar el consenso de las partes implicadas.


Obliga a un anlisis del impacto.
Implica una revisin de la planificacin del proyecto.
Debe informarse al cliente de los efectos sobre la planificacin y recursos necesarios, para
obtener su aprobacin.

E5
E5

88

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

Sndromes en la obtencin de los requisitos


Cuatro son los principales desafos para el analista de requisitos:

S pero no exactamente as.


Vaya!, pues esto no debera ser as.
Ya est todo?
Usuarios contra desarrolladores

89

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

Vaya!, pues esto no debera ser as.


Este es un problema inherente al desarrollo de software.
Los usuarios no ver el sistema hasta que lo empiezan a usar, y es normal
que sea entonces cuando descubran que algunas partes no se adecuan
exactamente a sus expectativas.
El software no es fsico ni tangible. Al cliente de una vivienda se le puede
mostrar una maqueta o un plano. Un proyecto de mobiliario se puede
dibujar, pero nuestro producto no es fsico, es difcil de representar, de
conceptualizar de forma concreta y objetiva.
Si el analista de requisitos no comprende bien lo que el cliente necesita,
ste se dar cuenta de la disparidad de criterios cuando ya sea tarde,
cuando el sistema est en sus manos; de forma que habremos producido
algo que no cumple sus expectativas.
Por esta razn, inherente a la intangibilidad del software, la obtencin de
requisitos es la fase ms importante de un desarrollo.
El ingeniero de requisitos debe tener en cuenta que este sndrome es un riesgo consustancial con su trabajo, y que su
misin es anticipase para que al final del desarrollo produzca el menor efecto posible.
Los medios para reducir su efecto son:

Evitar quedarse con las primeras descripciones genricas.


No dar nada por supuesto.
Evitar las ambigedades.
Conocer el entorno y las necesidades del cliente.
Dedicar esfuerzo y tiempo para la obtencin de requisitos, adecuado al tamao y complejidad del sistema.
90

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

S pero no exactamente as.


Este sndrome es similar al anterior, porque tiene el mismo resultado:
el descubrimiento tardo por parte del cliente de que determinadas
partes del sistema no solucionan adecuadamente su problema, pero a
diferencia del anterior, su origen no est en omisiones o ambigedades
en el proceso de obtencin, sino en la inmadurez de los procesos a los
que el nuevo sistema debe dar soporte, o en el desconocimiento o
actitud por parte de los interlocutores del cliente.
Aunque tenga el mismo efecto que el sndrome anterior, identificar que
tienen causas diferentes interesa en la medida en que requieren
soluciones, o formas de trabajo distintas.
El ingeniero de requisitos debe identificar mayores probabilidades de
riesgo si en el contexto adquieren relevancia las siguientes
situaciones:

El sistema no sustituye o modifica a otro existente, sino que se desarrolla para dar soporte a procesos de negocio
novedosos para la organizacin que lo solicita.

Los interlocutores nombrados por el cliente no son conocedores expertos de los procesos cubiertos por el sistema.
Faltan representantes de partes implicadas por procesos importantes del nuevo sistema.
Escasa implicacin del cliente, que por falta de recursos, tiempo o incluso por pereza intelectual no se sienta con el

ingeniero de requisitos a desmenuzar las particularidades de sus procesos, dando por vlidos los requisitos finalmente
obtenidos, sin prcticamente mirarlos.

91

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

S pero no exactamente as.


Estas situaciones aumentan las probabilidades de terminar un sistema
perfectamente validable sobre una descripcin de requisitos correcta y
completa, sin ambigedades, pero en el que al final el cliente
descubrir que en, menor o mayor medida, no le soluciona el problema
como hubiera sido deseable.
Por supuesto en esta situacin, como desarrolladores podremos
argumentar que tenemos la razn de nuestra parte, puesto que
habremos construido lo que el cliente nos pidi, y el problema estriba
en que l no saba bien lo que quera, o se ha dado cuenta de lo que
en realidad necesita, cuando ha empezado a trabajar con el nuevo
sistema que hemos desarrollado.
De cualquier forma no es una situacin ni cmoda ni deseable. Nuestro
cliente como experto en su negocio tiene su ego,
y difcilmente reconocer que no saba o no quiso explicarnos lo que debamos construir. Si afortunadamente
disponemos de un documento de requisitos formalmente correcto, validado con su firma, tendremos un salvoconducto
para hacer efectiva nuestra factura, o defendernos de acciones legales, pero en ningn caso habremos cubierto nuestro
objetivo: desarrollar soluciones para los clientes, y habremos creado un sistema que no sirve y un cliente cabreado y
descontento.
Este sndrome tambin es inherente al desarrollo de sistemas de software, y con l resulta fcil deducir las funciones y
competencias que debe cubrir el ingeniero de requisitos, as como de ser persona con ojo clnico y registro amplio de
recursos.
Si se enfrenta a procesos poco maduros deber involucrarse en mayor medida en el entorno organizacional del cliente y
aportar en su trabajo parte ms propia de consultora que de analista de requisitos.

92

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

S pero no exactamente as.


Deber tambin aportar asesora profesional al cliente informndole
del riesgo alto que encierra el proyecto de producir versiones que se
demostrarn inadecuadas para la realidad de sus procesos, y de la
conveniencia de profundizar el mximo posible en el conocimiento de
los procesos antes de elaborar los requisitos, as como de emplear
tcnicas de prototipado en la obtencin de requisitos, y ciclos de
desarrollo en cascada. Resultan ms aconsejables desarrollos
incrementales o evolutivos, con ciclos en espiral y seguimiento por
parte del cliente.
Si el analista se encuentra con problemas de comunicacin o de actitud
por parte del cliente deber conducir la situacin y adaptar su registro
de actuacin de forma que sin perder la asertividad, logre establecer
una implicacin adecuada del cliente y un flujo de comunicacin
productivo.

93

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

Ya est todo?
Cundo se puede dar por terminado un trabajo?
Cuando ya no queda ms por hacer.
Cmo sabe el ingeniero de requisitos que ha descubierto
todos los requisitos necesarios?.
Esta incertidumbre es tambin inherente al trabajo del
ingeniero de requisitos, porque nunca tendr la certeza de
haber descubierto todas las necesidades y restricciones, y
sobre todo porque siempre puede dar por descontado que
algo se queda sin descubrir.

La nica forma de afrontar esta circunstancia es dedicar tiempo suficiente a la obtencin y anlisis,
e identificar a todos los participantes o partes implicadas en el proyecto.
Aunque nunca podr afirmar haber localizado todos los requisitos, el objetivo en este caso es
alcanzar el convencimiento de haber descubierto lo suficiente, y que las posibles omisiones
pertenecern a cuestiones menores, que pueden surgir durante la gestin de los requisitos, o a lo
largo del mantenimiento del futuro sistema.

94

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

Usuarios contra desarrolladores


No es posible saber qu necesita el cliente, si no disponemos de
comunicacin fluida con los interlocutores de su organizacin; y por
desgracia es demasiado frecuente que los desarrolladores y los
usuarios, se relacionen sobre la base de la desconfianza mutua, y
empleen idiomas distintos.
Tanto la actitud de los desarrolladores como la de los usuarios no suele
ser favorable para trabajar unos con otros. Los primeros prefieren
concentrar su trabajo en el entorno tcnico, y olvidarse de hablar con
los clientes.
Los usuarios, por su parte, esperan su nuevo programa, con la misma
actitud que podran esperar un coche tras haberlo encargado en el
concesionario.
Los analistas y los usuarios pertenecen a dos comunidades que
desconfan mutuamente.
Los usuarios ven a los desarrolladores como personas incapaces de conseguir sistemas que funcionen correctamente sin
la necesidad de estar constantemente parchendolos.
Los desarrolladores se ven solos y desamparados como nicos responsables de todo cuando ocurra o tenga relacin con
el sistema.
Por supuesto, nosotros no esperamos que los usuarios cambien, pero tenemos que conocer estos problemas, y el
ingeniero de requisitos debe estar preparado para encontrarse con estas dificultades y minimizar sus consecuencias.
Se supone que durante la obtencin de los requisitos, tanto los usuarios como los desarrolladores comparten el mismo
objetivo: definir cmo ha de ser el nuevo sistema, pero lo cierto es que cada uno tiene objetivos diferentes.
Por nuestra parte estamos interesados en desarrollar una buena descripcin de requisitos, completa y correcta.
Queremos especificar un sistema tcnicamente viable, que integre la funcionalidad necesaria de forma eficiente sobre un
diseo limpio y robusto.
95

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

Usuarios contra desarrolladores


Por su parte los usuarios (cuando se implican) centran su inters en
definir el sistema con que esperan trabajar, sin querer saber nada de
agendas, viabilidad, prioridades, etc.
Para abordar con las mayores garantas de xito este problema, por
nuestra parte:
Debemos sumergirnos en la organizacin del cliente; estudiar, analizar
y comprender los procesos y problemas a los que tiene que dar
cobertura el nuevo sistema.
En las comunicaciones de requisitos, as como en la descripcin del
sistema, tenemos que emplear un lenguaje natural, sin tecnicismos; y
adoptar la terminologa habitual del entorno del cliente.
Mantener un enfoque y unidad de criterio comn por todas las
personas de nuestra organizacin, de cara al cliente.
Por parte del cliente:
Debe facilitar interlocutores conocedores de los procesos y problemas que debemos conocer, con tiempo y motivacin
suficiente para trabajar con nosotros.
Los interlocutores deben ser concretos y especficos en sus descripciones, revisar y validar los documentos de requisitos
generados.

96

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

Problemas frecuentes en la obtencin de requisitos


Los problemas ms frecuentes pertenecen a 3 categoras:

Delimitacin confusa del mbito del sistema.


Comprensin
Inestabilidad

Problema: delimitacin confusa del mbito del sistema


Antes de entrar en la obtencin de requisitos con detalle es necesario conocer cules son los
objetivos y los lmites del sistema.
Si no controlamos los lmites y objetivos esperados del sistema, el sistema nos
controlar a nosotros
Los contextos que es necesario conocer para centrar apropiadamente el sistema en su entorno son:

Organizacin
Entorno
Proyecto

97

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos
Problema: delimitacin confusa del mbito del sistema
Para evitarlo deben analizarse y conocerse los tres mbitos sealados
ORGANIZACIN
Para llevar a cabo la obtencin de requisitos es preciso conocer y comprender la organizacin
en la que trabajar el sistema, y los objetivos que se pretenden conseguir.
ENTORNO
Los factores del entorno del sistema influyen de forma determinante en el proceso de
obtencin de requisitos. Los ms importantes son:
Restricciones: de hardware, sobre el software o sobre los procesos de desarrollo.
Madurez de los procesos del entorno de operacin.
Grado de certidumbre de los interfaces con otros sistemas.
PROYECTO
El contexto en el que se desarrolla el proyecto tambin afecta a los procesos de obtencin de
requisitos, que deber adecuar los mtodos y tcnicas de obtencin a las caractersticas del
proyecto:
Caractersticas especficas de cada grupo de agentes implicados en el proyecto
(usuarios, cliente, desarrolladores, normativas, etc.)
Restricciones impuestas por las partes implicadas en la obtencin de los requisitos
(agenda, coste, parmetros de calidad deseados, etc.)

98

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos
Problema: comprensin
El 56% de los errores deslizados en los sistemas desarrollados se deben a deficiencias en la
comunicacin usuario analista durante la obtencin de los requisitos, y este tipo de errores son
los ms caros de corregir porque llegan a consumir hasta el 82% del tiempo de desarrollo .
[1]

Los problemas de comprensin producen requisitos incompletos, con ambigedades,


inconsistentes; y en definitiva incorrectos, porque no definen las necesidades reales de los
usuarios.
Estos problemas se pueden agrupar en tres categoras:

Dar por supuesto lo desconocido.


Lenguaje.
Informacin desestructurada.

Problema: inestabilidad
Los requisitos son inestables y cambian durante el desarrollo y tras la entrada en servicio del
sistema.
La solucin para evitar problemas radica en el proceso de gestin de requisitos.

[1] Goodrich, Victoria, and Olfman, Lorne. An experimental Evaluacion of Task annd Methodology Variables for Requirements
Definition Phase Success. In Bruce D. Shriver (editor), Proceedings of the twenty-third Annnual Hawaii International Conference on
System Sciences, p. 201-209. IEEE Computer Society, January 1990

99

Requisitos del software


Obtencin
Obtencin de
de los
los requisitos
requisitos

Tcnicas de obtencin de requisitos


ENTREVISTAS

Reuniones JAD, cuestionarios


reuniones de grupo
entrevista, lluvia de ideas

ESCENARIOS

Casos de uso, tarjetas CRC


diagramas de flujo, escenarios

PROTOTIPOS

Prototipos rpidos
prototipos evolutivos

TCNICAS

OBSERVACIN

Introspeccin
anlisis de protocolo
documentacin, otros sistemas

E6
E6

100

Requisitos del software


Clasificacin
Clasificacin de
de los
los requisitos
requisitos
REQUISITO
FUNCIONALES
RESTRICCIN
REQUISITO
TIPOS DE REQUISITOS

NO FUNCIONALES
RESTRICCIN

REQUISITO
DE INTERFAZ
RESTRICCIN

Requisitos funcionales
Definen el comportamiento del sistema.
Describen las tareas que el sistema debe realizar.
Al definir un requisito funcional es importante mantener el equilibrio entre la excesiva generalidad,
insuficiencia de detalle o ambigedad, y el exceso de detalle con precisiones o descripciones
innecesarias o redundantes.

101

Requisitos del software


Clasificacin
Clasificacin de
de los
los requisitos
requisitos

Requisitos no funcionales
Definen aspectos, que sin ser funcionalidades, (tareas que el sistema debe realizar) resultan
deseables desde el punto de vista del usuario. Generalmente comprenden atributos de calidad:
Tiempos de respuesta.
Caractersticas de usabilidad.
Facilidad de mantenimiento.
etc.

Requisitos de interfaz
Definen las interacciones del sistema con su entorno:

Usuarios
Otros sistemas

102

Requisitos del software


Clasificacin
Clasificacin de
de los
los requisitos
requisitos

Restricciones
Los requisitos, en su definicin purista definen el QU, y no el CMO; pero en el conjunto de
necesidades que debe cubrir un sistema, no slo hay que tener en cuenta QU cosas hay que
hacer, sino tambin en ocasiones CMO deben hacerse.
La clasificacin entre requisitos puros (QU) y restricciones (CMO) la debe considerar el analista
para que el equipo de trabajo sepa hasta qu punto determinados aspectos limitan sus opciones de
trabajo, y poder mantener as la trazabilidad con su origen (necesidad apuntada por el usuario,
normativa legal, limitacin tcnica, etc.)
Con carcter general las restricciones imponen limitaciones:

En la libertad de los analistas al realizar el diseo del sistema.


En los procesos o formas de trabajar que se emplearn en el desarrollo del sistema.

El analista del sistema elige entre todas las opciones tecnolgicamente posibles aquellas que segn
su criterio profesional y las circunstancias del sistema, aportan mejor solucin para la
implementacin de los requisitos funcionales y no funcionales.
La indicacin por parte del cliente de instrucciones como:
Debe emplearse base de datos Oracle.
Los procesos de desarrollo deben ser conformes a Mtrica 3.
El sistema final debe ejecutarse sobre la plataforma libre Linux.
Debe desarrollarse empleando Java.
El interfaz de comunicacin con un programa externo de contabilidad debe hacerse de la siguiente
forma...
103

Requisitos del software


Clasificacin
Clasificacin de
de los
los requisitos
requisitos

Problemas de clasificacin y nivel de rigor necesario


Para nosotros la base terica de clasificacin es un marco de referencia con la definicin de los
criterios de clasificacin.
En la relacin de requisitos de un sistema, no resulta interesante entrar en anlisis puristas para
determinar si cada requisito lo es de interfaz, funcional, etc.
La diferencia entre:
El sistema comprueba la autentificacin y autorizacin del usuario y le da acceso a una
pantalla con el men general o en caso de error le redirige a la pantalla de usuario y
contrasea otra vez
Y:
RS. 3 El sistema slo permite el acceso al men principal a usuarios autorizados.
RT.3.1 El sistema identifica al usuario solicitando a travs de la pantalla de operacin
su nombre y contrasea de acceso.
En el segundo caso, el equipo de trabajo sabe que debe descartar opciones de identificacin a
travs de tarjetas, o dispositivos biomtricos, o cualquier otra opcin posible.
Se trata por tanto de conocer y comprender el concepto de restriccin, para aplicarlas
slo cuando son necesarias, dejando as el mayor margen posible de libertad para el
diseo de la solucin de software.
104

Requisitos del software


Calidad
Calidad de
de la
la documentacin
documentacin

Caractersticas de las buenas descripciones de requisitos


Especificacin

Requisitos
Posibles

Completa

Necesarios

Correcta

Priorizados

Consistente

Concretos

Modificable

Verificables

Trazable

105

Requisitos del software


Propiedades
Propiedades de
de los
los buenos
buenos requisitos
requisitos
Posibles
Cada requisito debe poder implementarse dentro de las capacidades y limitaciones conocidas
del sistema y su entorno. El director tcnico deber comprobar la viabilidad de los requisitos
antes de comprobar el documento.

Necesarios
Un requisito es necesario si es algo:

que el cliente realmente necesita


requerido para la conformidad con un requisito
requerido para la conformidad con un interfaz,

Alto

externo o estndar.

Para evitar requisitos innecesarios,


el cliente debe valorar cada
funcionalidad y como afectar
al sistema si esta o no.

Coste

Alto
Valor

106

Requisitos del software


Propiedades
Propiedades de
de los
los buenos
buenos requisitos
requisitos
Requisitos priorizados
Los requisitos de una SRS deben incluir una indicacin de la importancia del requisito en el
conjunto del sistema.
Normalmente todos los requisitos de un producto de software no son igual de importantes.
Algunos resultan esenciales, y otros son deseables.
Cada requisito debe identificar estas diferencias de forma clara, de esta forma ayuda a:

Los clientes tengan una consideracin ms adecuada de cada requisito, y a menudo


clarifica asunciones que pudieran estar ocultas.

Que los desarrolladores tomen decisiones de diseo correctas y dediquen niveles de


esfuerzo apropiado a las diferentes partes del producto.

Que el gestor del proyecto pueda establecer prioridades de ejecucin, y disponga de


informacin adicional en caso de problemas de agenda.

107

Requisitos del software


Propiedades
Propiedades de
de los
los buenos
buenos requisitos
requisitos
Concretos

Punto ptimo: Mayor grado de comprensin con la


menor ambigedad

Comprensin

Un requisito es concreto si tiene una nica interpretacin. Como mnimo esto requiere que cada
caracterstica del producto final se describa empleando un trmino nico. En los casos en los que
el trmino puede tener diferentes significados segn el contexto, ste debe incluirse en el
glosario de la SRS con el significado con el que se emplea.

Punto
ptimo

Ambigedad

Modos eficaces de evitar la ambigedad:

Inspecciones formales de los documentos de requisitos.


Escritura de casos de prueba
Elaboracin de casos de uso.
Elaboracin de diagramas.
108

Requisitos del software


Propiedades
Propiedades de
de los
los buenos
buenos requisitos
requisitos
Verificable
Un requisito es verificable si, y slo si a travs de un proceso concreto y finito es posible
comprobar si el software lo cumple. En general los requisitos ambiguos no son verificables.
Los requisitos no verificables incluyen sentencias como que trabaje eficientemente,interfaz de
usuario amigable, debe responder rpidamente. Estos requisitos no son verificables porque no
es posible definir los trminos eficiente, amigable, rpido. La sentencia el programa no
debe entrar nunca en un bucle infinito tampoco es verificable porque un nivel de pruebas
absoluto es tericamente imposible.
Un ejemplo de requisito verificable es:
El tiempo de respuesta para la compra de un billete sencillo no debe superar los 2 segundos el
90% de las veces, y una transaccin de compra de un billete sencillo nunca debe tardar ms de
5 segundos.
Esta sentencia es verificable porque emplea trminos concretos y magnitudes medibles y
comprobables.
Si no es posible establecer un mtodo para comprobar si el software cumple con un determinado
requisito, el requisito debe eliminarse o revisarse

109

Requisitos del software


Propiedades
Propiedades de
de la
la documentacin
documentacin
Completa
Una SRS es completa si, y slo si incluye los elementos siguientes:

Todos los requisitos significativos, relativos a funcionalidad, rendimientos, restricciones


de diseo, atributos e interfaces externos.

Definicin de las respuestas del software a todas las posibles entradas de datos en toda
clase de situaciones. Es importante especificar las respuesta tanto para datos de entrada
vlidos, como invlidos.

Referencias a todas las imgenes, tablas y diagramas y definicin de todos los trminos
propios y unidades de medida no normalizadas.

No puede considerarse completa una SRS si en la descripcin de algunos requisitos se incluye la


frase A determinar o la expresin inglesa TBD (to be determined).
Si excepcionalmente se indica que un requisito se concretar ms adelante es necesario indicar
tambin:
Descripcin de las causas por las que no se ha concretado el requisito.
Descripcin de qu debe realizarse para poder eliminar el TBD, quin es la persona
responsable de llevarlo a cabo, y cundo debe eliminarse

110

Requisitos del software


Propiedades
Propiedades de
de la
la documentacin
documentacin
Completos
Conocemos

No Conocemos
Entrevistas y revisiones

Entendemos

Este bloque pertenece a


los requisitos que
conocemos y sabemos
que son aplicables al
problema

Este bloque pertenece a


los requisitos que
conocemos pero no
conocemos, es decir que
sabemos que existen pero
no hemos realizado su
anlisis.

Prototipado

Prototipado y
casos de uso

No Entendemos

Este bloque pertenece a


los requisitos que
sabemos que son
aplicables al problema
pero que no entendemos

Este bloque pertenece a


los requisitos que no
conocemos y tampoco
sabemos que no
conocemos

111

Requisitos del software


Propiedades
Propiedades de
de la
la documentacin
documentacin
Correcta
Una especificacin de requisitos de software es correcta si, y solo si todos y cada uno de los
requisitos indicados son los que debe cubrir el software del sistema.
No hay ninguna herramienta que pueda garantizar la correccin. Una SRS debe compararse con
las especificaciones de rango superior del proyecto (Descripcin del sistema, documentacin
referenciada, etc.) para comprobar que cumple sus indicciones.
Tambin es recomendable que la parte cliente determine si la especificacin de requisitos de
software refleja sus necesidades actuales
Necesidades
del Usuario

A
B

B
Revisin y aprobacin

Requisitos
Correctos

C
Requisitos
Especificados
112

Requisitos del software


Propiedades
Propiedades de
de la
la documentacin
documentacin
Consistente
El atributo de consistencia se refiere a consistencia interna no a conformidad o congruencia con
documentos superiores (ej. descripcin del sistema). La ausencia de esta congruencia supondra
un problema de correccin y no de consistencia.
Una documentacin es internamente consistente si, y solo si, no se establecen conflictos entre
requisitos individuales o grupos de requisitos. Los tres tipos de conflictos posibles son:

Conflictos

Objetos

Lgicos

C=A+B
C=A*B

Trminos
RF 10 Informe A
cierre de caja
RF 50 Informe A
cierre diario de operaciones

113

Requisitos del software


Propiedades
Propiedades de
de la
la documentacin
documentacin
Modificable
Un documento de requisitos es modificable si, y slo si su estilo y estructura permiten que
puedan llevarse a cabo modificaciones en los requisitos manteniendo la estructura y el estilo, de
forma fcil, completa y consistente. La modificabilidad generalmente requiere en la
documentacin:
Que tenga una organizacin coherente y fcil, con una tabla de contenidos y un ndice..
Que no sea redundante. (p. ej. que el mismo requisito no aparezca en dos lugares del
documento)
Exprese cada requisito por separado, mejor que mezclados con otros requisitos.
La redundancia, por s misma no es un error, pero puede acarrearlos. En ocasiones la
redundancia puede hacer un SRS ms legible, pero puede generar errores al actualizar el
documento, y generar inconsistencias si slo se actualiza una de las apariciones, olvidando la
otra.

114

Requisitos del software


Propiedades
Propiedades de
de la
la documentacin
documentacin
Trazable
Un SRS es trazable si establece de forma clara el origen de cada requisito, y facilita su
referencia en las futuras etapas del desarrollo, o en las actualizaciones de la documentacin. Se
recomiendan los dos tipos siguientes de trazabilidad:
Trazabilidad remota (hacia fases previas del desarrollo). Para ello se debe referenciar la fuente
del requisito.
Trazabilidad futura (hacia fases posteriores del desarrollo). Para ello cada requisito debe tener
un nombre o referencia nica.
La trazabilidad remota es importante cuando el producto de software entra en la fase de
operacin y mantenimiento. Al modificar el diseo y el cdigo es esencial poder determinar
todos los requisitos que quedan afectados por una modificacin

115

Requisitos del software


Conclusiones
Conclusiones
OBJETIVO

Desarrollar software

Desarrollar una
solucin

Tomar requisitos
del usuario

Comprender el entorno
y necesidades del usuario

Realizar procesos
normalizados para el
desarrollo de requisitos

Descripcin de requisitos
correcta

116

Requisitos del software


Conclusiones
Conclusiones

MEDIOS

Aplicar tcnicas
y procesos

FIN

Conseguir
el objetivo

117

4.- Diseo del software

118

Diseo del software


Diseo
Diseo

Definicin
El proceso de definicin de la arquitectura, componente, interfaces y otras
caractersticas de un sistema o de un componente.
El resultado de este proceso.
IEEE std. 610.12-1990 Glossary of software engineering terminology

El diseo del software comprende la descripcin de la arquitectura del sistema con el nivel de
detalle suficiente para guiar su construccin.
Descomposicin del sistema
Organizacin entre los componentes del sistema
Interfaces entre los componentes

119

Diseo del software


Diseo
Diseo
Diseo es la actividad del ciclo de vida en la que se analizan los requisitos del software para
desarrollar una descripcin de la estructura interna y la organizacin del sistema que servir de
base para su construccin.

Requisitos

Diseo

Construccin

120

Diseo del software


Diseo
Diseo

El diseo como creacin de modelos


Una vez conocidas las necesidades de los usuarios es preciso disear una solucin.
Empleando el smil con la construccin de edificios, tras conocer cuales son las necesidades que
se desean cubrir con un edificio (hotel, colegio, vivienda familiar, edificio de apartamentos), es
el momento de disear la solucin.
Las posibilidades son muchas, y exceptuando proyectos de tamao mnimo, la complejidad de
concebir todas las facetas e interacciones del sistema desborda la capacidad de abstraccin
mental para concebirlo en una nica visin. Al mismo tiempo es necesario que todas las
personas implicadas en el proyecto conozcan y compartan los planos de la solucin.
As pues, las razones del diseo son:
Concepcin u anlisis de las posibles soluciones.
Apoyo metodolgico para abordar la complejidad de la solucin.
Registro documentado como medio de comunicacin entre los participantes.
Un modelo es una representacin simplificada de la realidad.
De igual forma que al concebir un edificio se divide la complejidad del sistema para hacerlo
digerible, y se generan diversos modelos de los diferentes aspectos: planos de estructura,
planos del subsistema de fontanera, del de electricidad, etc. los sistemas de software son
tambin realidades complejas que es preciso conocer (modelizar) para llevar a cabo el diseo
de su solucin.

121

Diseo del software


Actividades
Actividades del
del diseo
diseo de
de software
software
El diseo del software comprende dos actividades intermedias entre la fase de requisitos y la de
construccin:

Diseo de la arquitectura del software


Descripcin de la arquitectura general, identificacin de
sus componentes y su organizacin y relaciones en el
sistema.

Diseo detallado del software


Definicin y estructura de los componentes y datos.
Definicin de los interfaces
Elaboracin de las estimaciones de tiempo y tamao.

Considerando que la descripcin del sistema (ConOps) dibuja una primera aproximacin del
sistema en su conjunto, algunos autores diferencian entre:
Diseo del sistema (la visin del documento de descripcin del sistema).
Diseo de la arquitectura
Diseo del detallado del software
122

Diseo del software


Razones
Razones del
del diseo
diseo del
del software
software

Por qu?
El resumen de las razones expuestas que hacen necesarias las tareas de diseo antes de
comenzar la construccin de un sistema son:

Permite la descomposicin del problema en partes y vistas de menor tamao, ms


manejables para el trabajo intelectual del diseo de la solucin.

Permite el desarrollo de modelos que se pueden analizar para determinar si cumplen


los distintos requisitos.

Permite examinar soluciones alternativas.


Los modelos se pueden utilizar para planificar el desarrollo de las actividades, y son el
punto de partida para empezar las actividades de codificacin y pruebas.

123

Diseo del software


Razones
Razones del
del diseo
diseo de
de software
software

Descomposicin de la complejidad

Class nombredeclase{
Public: funcion() {}
}
124

Diseo del software


Razones
Razones del
del diseo
diseo de
de software
software

Anlisis de soluciones posibles a travs de su modelado.

Requisitos

Disponibilidad
Coste desarrollo

Coste mantenimiento
Robustez

Tiempos de respuesta
Hardware necesario

Etc.

125

Diseo del software


Razones
Razones del
del diseo
diseo de
de software
software

Elemento de comunicacin, Base de planificacin y del desarrollo

126

Diseo del software


Fin
Fin del
del proceso
proceso de
de diseo
diseo

Se considera que el proceso de diseo se ha completado cuando

Todas las preguntas Como tienen respuesta

Los borradores de manuales para mantenimiento y administracin estn realizados

La descripcin del diseo de la arquitectura est completada


La revisin del diseo se ha completado y cada equipo/persona implicado est de acuerdo
con el diseo.
Se ha realizado la trazabilidad del diseo
Se ha revisado el diseo de la arquitectura
Se ha verificado el diseo de la arquitectura
Se ha escrito la planificacin de la integracin del software.
Se ha establecido la lnea base del producto

127

Diseo del software


Vistas
Vistas del
del diseo
diseo de
de la
la arquitectura
arquitectura
Un sistema de software es una entidad ortogonal que puede contemplarse o analizarse desde
diferentes vistas:
Puede enfocarse la atencin en:
Distribucin fsica del software entre los diferentes elementos del sistema.
Descomposicin en las diferentes funcionalidades que realiza.
Estructuras de la informacin que gestiona.
Etc.
De esta forma el diseo puede generar modelos para cada una de las diferentes vistas empleadas
en su anlisis (modelo fsico, modelo de datos, modelo se procesos, etc.).

128

Diseo del software


Notacin
Notacin empleada
empleada
Si bien el concepto y la finalidad del diseo o modelado de un sistema de software es siempre el
mismo, las notaciones pueden variar en funcin de las caractersticas de cada proyecto o de los
conocimientos o preferencias de las personas u organizacin que lo realice.
A travs del lenguaje de modelado empleado (UML, IDEF, Diagramas de flujo, etc.) se consiguen
realizar dos tipo de descripciones:

Descripciones estructurales
Las notaciones para descripciones estructurales suelen ser grficas y representan los
diferentes componentes y sus relaciones.
Lenguajes de descripcin de arquitecturas (ADL): AADL, AESOP, CODE, MetaH,
Gestalt, Modechart, UML, Unicon, Modechart, etc.
Diagramas de clases y objetos
Diagramas de componentes
Diagramas entidad-relacin
Lenguajes de descripcin de interfaz
Etc.

Descripciones de comportamiento

Diagramas de actividad
Diagramas de colaboracin
Diagramas de flujo de datos
Diagramas de flujo
Pseudo-cdigo y lenguajes de diseo (PDL)
Diagramas de secuencia
Etc.
129

Diseo del software


Estrategias
Estrategias yy mtodos
mtodos para
para el
el diseo
diseo del
del software
software
Las principales estrategias que suelen emplearse para el diseo del software son:
Orientadas a funciones (estructurada)
Orientada a objetos (diseo orientado a objetos)
Diseo centrado en las estructuras de datos (menos empleado)

Diseo estructurado
Esta es la aproximacin clsica y se centra en la identificacin y descomposicin de las
principales funciones del sistema hacia niveles ms detallados.

Diseo orientado a objetos


Es la aproximacin ms popular actualmente, sobre la que se han desarrollado numerosos
mtodos partiendo de su concepcin inicial en la dcada de los 80
A travs del diseo orientado a objetos (OOD), se desarrollan las especificaciones de sistemas
como modelos de objetos (sistemas compuestos por conjuntos de objetos que interactan
entre ellos). que, expuesta de forma muy bsica, identifica a los nombres como objetos, a los
verbos como los comportamientos que pueden ofrecer y a los adjetivos como sus mtodos.

Para cada estrategia hay numerosos mtodos (notaciones, lenguajes de modelado, tcnicas).

130

Diseo del software


El
El paradigma
paradigma 00
00 Orientacin
Orientacin aa objetos
objetos
OO no es una estrategia de diseo. El paradigma de orientacin a objetos es ms amplio
y abarca un enfoque general para conceptualizar, disear y programar los sistemas de
software.

Estrategias
Las estrategias OO cubren tanto los requisitos como el anlisis, diseo y programacin.
Anlisis Orientado a Objetos (OOA)
Diseo Orientado a Objetos (OOD)
Programacin Orientada a Objetos (OOP)

Mtodos
Las metodologas ms importantes de anlisis y diseo de sistemas, orientado a objetos, han
terminado confluyendo en lo que es el UML (www.uml.org), bajo el respaldo del Object
Management Group (www.omg.org).
Algunas de las principales metodologas, pioneras que han terminado confluyendo en el UML
son:
Object-Oriented Design (OOD), Booch.
Object Modeling Technique (OMT), Rumbaugh.
Object Oriented Analysis (OOA), Coad/Yourdon.
Hierarchical Object Oriented Design (HOOD), ESA.
Object Oriented Structured Design (OOSD), Wasserman.
Object Oriented Systems Analysis (OOSA), Shaler y Mellor.
Responsibility Driven Design (RDD), Wirfs-Brock, entre otros.
131

Diseo del software


El
El paradigma
paradigma 00
00 Orientacin
Orientacin aa objetos
objetos

Enfoque OO
Este paradigma centra su foco en el concepto Objeto.
Objeto es aquello que tiene estado (propiedades ms valores), comportamiento (acciones y
reacciones a mensajes) e identidad (propiedad que lo distingue de los dems objetos).
La estructura y comportamiento de objetos similares estn definidos en su clase comn; los
trminos instancia y objeto son intercambiables. Una clase es un conjunto de objetos que
comparten una estructura y comportamiento comn.
La diferencia entre un objeto y una clase es que un objeto es una entidad concreta que existe
en tiempo y espacio, mientras que una clase representa una abstraccin, la "esencia" de un
objeto, tal como son. De aqu que un objeto no es una clase, sin embargo, una clase puede ser
un objeto.

Beneficios del enfoque OO


Los beneficios sealados por Booch en 1986 son:
Potencia, el uso del modelo OO ayuda a explotar el poder expresivo de los lenguajes de
programacin basados u orientados a objetos, como Smalltalk, Object Pascal, C++, CLOS,
Ada, Java, C#
Reutilizacin, el uso del modelo OO favorece la reutilizacin, no solo del software, sino de
diseos completos.
Mantenibilidad, produce sistemas que estn construidos en formas intermedias estables y
por ello son ms resistentes al cambio en especificaciones y tecnologa.
132

Diseo del software


El
El paradigma
paradigma 00
00 Orientacin
Orientacin aa objetos
objetos

Principios del modelo OO


Fundamentales: Abstraccin, encapsulacin, modularidad y jerarqua. Booch afirma que
un modelo en el que no est presente alguno de estos principios NO es un modelo OO.
Complementarios: Tipificacin, concurrencia y persistencia

Abstraccin. Simplificacin en la descripcin o especificacin de un sistema consistente


en enfatizar algunos detalles o propiedades del sistema, con detrimento o supresin de
otros.

Encapsulacin. Ocultacin de los detalles de un objeto que no contribuyen a sus


caractersticas esenciales.

Modularidad. Propiedad de un sistema que ha sido descompuesto en un conjunto de


mdulos coherentes e independientes.

Jerarqua o herencia. Orden de las abstracciones organizado por niveles.

Concurrencia . Propiedad que distingue un objeto que est activo de uno que no lo est.

Tipificacin. Definicin precisa de un objeto de forma tal que objetos de diferentes tipos
no puedan ser intercambiados o, a lo sumo, pueden intercambiarse de manera muy
restringida.
Persistencia. Propiedad de un objeto por la cual su existencia trasciende al tiempo (es
decir, el objeto continua existiendo despus de que su creador ha dejado de existir) y/o al
espacio (es decir, la localizacin del objeto se mueve del espacio de direccin en que fue
creado).
133

Diseo del software


UML
UML
UML es un lenguaje de modelado que permite especificar, visualizar y documentar modelos de
sistemas de software.
Desde sus inicios fue concebido para ayudar a las tareas de anlisis de los sistemas de software, y
este es sin duda el mbito de mayor utilizacin, si bien es cierto que en la actualidad tambin se
emplea en el modelado y diseo de otros tipos de sistemas (modelos de negocio, producciones
cinematogrficas, etc.)

Tipos de diagramas UML


UML proporciona diagramas para representar modelos de las visiones estticas y dinmicas del
sistema, as como de su modularizacin.
REPRESENTACIONES
Estructura esttica

Diagrama de clases
Diagrama de objetos
Diagrama de componentes
Diagrama de despliegue

Comportamiento dinmico

Modularizacin

Diagrama de casos de uso


Diagrama de secuencia
Diagrama de colaboracin
Diagrama de actividad
Diagrama de colaboracin
Diagrama de estados

Paquetes
Subsistemas
Modelos

134

Diseo del software


Descripcin
Descripcin del
del diseo
diseo del
del software
software (SDD)
(SDD)
El resultado del proceso de diseo es la documentacin denominada Descripcin del Diseo del
Software.
Un estndar empleado para desarrollar esta documentacin de forma normalizada es el IEEE Std.
1016-1998.

IEEE Std. 1016-1998


Describe prcticas recomendadas para describir los diseos de software. Especifica la informacin
que debe contener, y recomienda cmo organizarla.
Puede emplearse en software comercial, cientfico o militar sin limitaciones por el tamao,
complejidad o nivel de criticidad.
El estndar no establece ni limita determinadas metodologas de diseo, gestin de la
configuracin o aseguramiento de la calidad.

135

Diseo del software


Descripcin
Descripcin del
del diseo
diseo del
del software
software (SDD)
(SDD)

Ejemplo de una posible organizacin de la informacin en una SDD

1.- Introduccin
1.1 Propsito
1.2 Alcance
1.3 Definiciones y acrnimos
2.- Referencias
3.- Descomposicin de la informacin
3.1 Descomposicin modular
3.1.1. Descripcin del mdulo 1
3.1.2. Descripcin del mdulo 2
3.2 Descomposicin de los proceesos
3.2.1. Descomposicin del proceso 1
3.2.2. Descomposicin del proceso 2
3.3 Descomposicin de los datos
3.3.1. Descripcin de la entidad 1
3.3.2. Descripcin de la entidad 2

4.- Descripcin de las dependencias


4.1 Dependencias intermolulares
4.2 Dependencias inter-procesos
4.3 Dependencias de los datos
5.- Descripcin de interfaces
5.1 Interfaces entre mdulos
5.1.1 Interfaz del mdulo 1
5.1.2 Interfaz del mdulo 2
5.2 Interfaces entre procesos
5.2.1 Interfaz del proceso 1
5.2.2 Interfaz del proceso 2
6.- Diseo detallado
6.1 Diseo detallado de los mdulos
6.1.1 Detalle del mdulo 1
6.1.2 Detalle del mdulo 2
6.2 Diseo detallado de los datos
6.1.1 Detalle de la entidad 1
6.1.2 Detalle de la entidad 2

136

Diseo del software


Prcticas
Prcticas recomendadas
recomendadas

Trazabilidad del diseo

Comprobacin de que el diseo incluye todos lols requisitos


Comprobacin de que el diseo no incluye funciones adicionales no
especificadas en el SRS.
Los resultados de la trazabiliad del diseo deben estar
documentados para la reunin de revisin del diseo

Reunin de revisin del diseo de la arquitectura


Revisin del diseo de la arquitectura
Un equipo apropiado (Usuarios, cliente, ingeniero de soft) revisan el diseo.
Una vez aprobado este diseo de puede comenzar a realizar el diseo detallado.

Verificacin del diseo de la arquitectura


El diseo se verifica contra el SRS
El proceso de verificacin analiza si el diseo es incompleto, incorrecto, ineficiente, difcil de
mantener, presenta un interfaz de usuario difcil de utilizar o aprender, o la documentacin
es de baja calidad.
Se realiza un informe para documentar los posibles problemas encontrados y tomar nota de
posibles incompatibilidades entre documentos.
LNEA BASE DE REQUISITOS

QU

LNEA BASE DE DISEO

CMO
137

Diseo del software


Base
Base para
para las
las tareas
tareas de
de planificacin
planificacin
La planificacin comienza con la misma decisin de desarrollar un sistema de software, y es un
esfuerzo continuo que termina cuando el proyecto ha concluido.
La planificacin consiste en la especificacin de:
Metas y objetivos para el proyecto
Estrategias, poltica, y procedimientos
Explicndolo de otra forma es la decisin de:
qu hacer
cmo hacerlo
cuando hacerlo
quien va a hacerlo.
A lo largo del ciclo de vida, desde la concepcin inicial del proyecto, la planificacin se va
revisando y depurando, y una vez obtenido el diseo se dispone de una base slida.
El diseo es la representacin formal de qu hacer y cmo hacerlo, sobre la que se
puede asignar cando y quin.

138

Diseo del software


Planificacin
Planificacin =
= tareas
tareas de
de ingeniera
ingeniera del
del software
software yy de
de gestin
gestin
La planificacin del proyecto est dividido entre dos componentes relacionados:

Planificacin realizada por el gestor


Planificacin realizada por el ingeniero de sistemas

Ingeniero
Ingeniero de
de Software decide:

Gestor
Gestor de Proyecto
Proyecto decide:
decide:

Qu
Qu tareas
tareas hay
hay que
que realizar
realizar

Las
Las habilidades
habilidades necesarias
necesarias para
para realizar
realizar las
las tareas
tareas

Orden
Orden yy Dependencias
Dependencias de
de tareas
tareas

La
La agenda
agenda para
para terminar
terminar el
el proyecto
proyecto

Tamao
Tamao (Esfuerzo
(Esfuerzo en horas)

El
El coste
coste de
de esfuerzo
esfuerzo

Solucin
Solucin tcnica para la resolucin del problema
problema

Metodologa
Metodologa para
para evaluar
evaluar el estatus del proyecto

Qu
Qu herramientas
herramientas de anlisis y diseo hay que
utilizar
utilizar

Qu
Qu herramientas
herramientas de
de planificacin hay que utilizar

Riesgos
Riesgos tcnicos
tcnicos

Gestin
Gestin de
de riesgos
riesgos

El
El modelo
modelo de
de procesos
procesos (Tcnicas)
(Tcnicas)

El
El modelo
modelo de
de procesos
procesos (Gestin)

Actualizar
Actualizar la
la planificacin
planificacin cuando
cuando los requisitos o el
entorno
entorno cambian.
cambian.

Actualizar
Actualizar la
la planificacin
planificacin cuando
cuando condiciones
condiciones de
gestin
gestin yy entorno
entorno cambian.
cambian.
139

Diseo del software


Consideraciones
Consideraciones

El diseo es la estrategia de solucin.


Las tareas de codificacin, integracin y mantenimiento del sistema son la tctica.
La estrategia debe ser adecuada a las necesidades de los usuarios (requisitos y atributos
de calidad esperados).
No surge de procesos, herramientas o lenguajes de modelado.
Surge del talento de su creador.
Los procesos, las herramientas y los lenguajes de modelado pueden resultar tiles como
ayuda para descomponer la complejidad, y para comunicar el diseo a los participantes del
proyecto.
El talento de algunos profesionales les puede permitir manejar niveles de complejidad
elevados sin necesitar apoyo de procesos, herramientas o lenguajes de modelado.
A travs del cdigo es posible ver el diseo y la arquitectura del sistema.
La documentacin del cdigo resulta til para comunicar su diseo a travs del espacio en
sistemas en los que intervienen muchos desarrolladores, y del tiempo para facilitar su
mantenimiento.
Al emplear documentacin para la comunicacin del diseo es necesario trabajar con
procesos suficientes para garantizar su integridad y actualidad a travs de los cambios.
El diseo no cumple su finalidad hasta que no queda plasmado en el cdigo.
El resultado del diseo puede fallar tanto errores en su estrategia como por distorsiones
introducidas en la codificacin, integracin y mantenimiento.

140

5.-Documentacin de usuario

141

Documentacin de usuario
Conceptos
Conceptos generales
generales
Formatos de distribucin

Interno
Documentacin de usuario que se encuentra integrada y es accesible a travs del software.
Externo
Documentacin de usuario que cuyo acceso no est integrado en la operativa del software.
El formato externo no quiere decir que emplee una distribucin no informtica, sino que se
encuentra apartada de la operacin del software.
De hecho la documentacin externa puede distribuirse en CD, a travs de descargas desde
la web, etc.

Importancia de la calidad de la documentacin


A pesar de su importancia, las organizaciones productoras de software suelen descuidar la calidad
de la documentacin de usuario.
En muchos casos la documentacin se prepara en el ltimo minuto, y orientando su desarrollo ms
como trmite que como herramienta de informacin para el usuario.

Ayuda al cliente a obtener todo el valor de su inversin.


La operacin de sistemas complejos sin un conocimiento detallado de los mismos puede
dejar sin uso un porcentaje importante de los mismos.
Una documentacin completa y til incrementa la facilidad de uso del sistema.

LA PRODUCCIN DE DOCUMENTACIN DE USUARIO INADECUADA ES UN PROBLEMA


COMN EN LA INDUSTRIA DEL SOFTWARE
142

Documentacin de usuario
Conceptos
Conceptos generales
generales
Tipos de documentos y contenidos posibles
La documentacin de usuario de un sistema de software puede estar comprendida en uno o varios
documentos fsicos.
Un documento puede abordar uno o varios de los siguientes mbitos:

Instalacin / desinstalacin.
Uso del sistema.
Administracin.

Un sistema de software puede disponer de manuales diferentes para cada uno de los subsistemas
que lo componen.

P1
P1

143

Documentacin de usuario
Conceptos
Conceptos generales
generales
Modos descriptivos
La documentacin de usuario puede adoptar dos modos narrativos diferentes: formativo o
referencia, en funcin de la finalidad con la que el lector va a usar el texto:
Para aprender a trabajar con el software (modo formativo)
Para refrescar la memoria, realizando consultas puntuales (modo referencia).
A su vez, los textos formativos pueden orientar la exposicin de sus contenidos para indicar al lector
cmo realizar cada tarea paso a paso. (orientados a tareas), o para transmitirle la informacin y
conocimientos tcnicos necesarios para emplear el software de forma adecuada (orientados a la
informacin).

Formativo

Orientado a la
informacin
Orientado a tareas

Modos descriptivos
E1
E1

Referencia
144

Documentacin de usuario
Desarrollo
Desarrollo de
de la
la documentacin
documentacin
Los factores que deben determinarse antes de desarrollar la documentacin son:

Cules son los documentos necesarios.


Las caractersticas de la audiencia o audiencias de la documentacin.
El modo descriptivo de cada documento.

Documentos necesarios
En funcin de las caractersticas del sistema, de los usuarios e incluso de parmetros del proyecto,
es necesario determinar cules son los documentos que debernelaborarse.
Algunos factores que pueden resultar tiles en su determinacin son:
Naturaleza del producto, fin previsto, entorno en el que se emplear, complejidad de uso
vista desde el punto de vista del usuario. Cmo de complejo es instalar, operar y mantener
el sistema.
Nivel de conocimientos de los usuarios, instaladores y personal de mantenimiento.
En el uso de sistemas informticos.
En los procesos y negocio gestionados por el sistema.
Tamao y complejidad del sistema, junto con las tecnologas empleadas en su desarrollo y
mantenimiento.
Requisitos contratados.
Ciclo de desarrollo del producto.
As por ejemplo, un producto con desarrollo incremental puede tener como requisitos en el contrato
la elaboracin de manuales de usuario para cada subsistema entregado, o uno global para todo el
sistema.
145

Documentacin de usuario
Desarrollo
Desarrollo de
de la
la documentacin
documentacin
Caractersticas de la audiencia o audiencias
Audiencia: grupo de usuarios con caractersticas similares, tanto de operacin con el sistema,
como de conocimientos y experiencia informtica y profesional.
P2
P2

Antes de comenzar el desarrollo de la documentacin es importante clasificar a los usuarios del


sistema por audiencias, identificando las caractersticas clave.
La documentacin debe plantearse pensando en las caractersticas y necesidades de la audiencia.
Algunos criterios tiles para identificar las audiencias y sus caractersticas:

Educacin:Cul es el nivel educativo de la audiencia?


Actitud: Cul es la actitud de la audiencia?. Son reacios al uso de ordenadores?.
Presentan resistencia al cambio?
Nivel de sofisticacin informtica. A ttulo de ejemplo, Brockmann identifica cinco
niveles de sofisticacin informtica de los usuarios, que se muestran en la pgina siguiente.
Familiaridad con los procesos y negocio de la aplicacin.

[1] Brockmann, R.J. (1990). Writing Better Computer Documentation: From Paper to Hypertext

[1]

146

Documentacin de usuario
Desarrollo
Desarrollo de
de la
la documentacin
documentacin
Clasificacin de usuarios
Nivel de sofisticacin informtica

Caractersticas

[1]
Inexperto[1]

Muy
Muy poca
poca o
o ninguna
ninguna experiencia
experiencia con
con ordenadores
ordenadores
Tratan
Tratan volmenes
volmenes reducidos
reducidos de
de informacin
informacin
No
No confan
confan en
en la informtica
informtica
Trabajadores
Trabajadores concretos
concretos

Principiante

Alguna
Alguna experiencia
experiencia con
con ordenadores
ordenadores
Pueden
Pueden comprender
comprender conceptos
conceptos aislados
aislados
Emplean
Emplean ejemplos
ejemplos concretos
Emplean
Emplean siempre
siempre las
las opciones
opciones por
por defecto
defecto

Usuario
Usuario novel con pocos meses de experiencia con
ordenadores
ordenadores
Comienza
Comienza aa enlazar
enlazar conceptos
conceptos aislados
aislados
Emplea
Emplea acciones
acciones por
por defecto
defecto yy sus
sus opciones.
opciones.

Es
Es la
la evolucin
evolucin de
de un
un usuario
usuario intermedio.
intermedio.
Comprende
las
relaciones
Comprende las relaciones entre
entre conceptos
conceptos aislados.
Tiene
un
nivel
alto
de
autoconfianza.
Tiene un nivel alto de autoconfianza.
Comprende
Comprende el
el lenguaje
lenguaje abstracto
abstracto

Puede
Puede ser
ser inexperto,
inexperto, principiante,
principiante, intermedio
intermedio o
o
experto.
experto. Trabaja
Trabaja muy
muy poco
poco con
con el
el sistema.
sistema.
Se
Se conduce
conduce aa travs
travs de
de los
los mens
mens yy mensajes
mensajes del
del
sistema
sistema

Intermedio

Experto

Intermitente

[1] La denominacin original que hace Brockmann en su libro es lorito (parrot)

147

Documentacin de usuario
Estructura
Estructura de
de la
la documentacin
documentacin de
de usuario
usuario

Por estructura de la documentacin se entiende la manera en la que la informacin se divide en


apartados, y el orden en el que stos se presentan.
La estructura afecta tanto a documentos impresos como a documentos electrnicos.
La documentacin puede estructurarse en uno o varios documentos.
La estructura debe ayudar a localizar y comprender la informacin.
Cuando la documentacin de un sistema se dirige a audiencias diferentes debe emplearse uno de
los siguientes criterios:
Separar en secciones diferentes la informacin dirigida a audiencias diferentes, identificando
en la introduccin de cada seccin la audiencia a la que va dirigida.
Separar en documentos diferentes la informacin para cada audiencia.

E2
E2

148

Documentacin de usuario
Estructura
Estructura de
de la
la documentacin
documentacin de
de usuario
usuario
Recomendaciones del estndar IEEE 1063-2001 para la estructura
Estructura general

La documentacin de un sistema de software puede consistir en uno o ms documentos, y cada


documento puede comprender uno o varios volmenes. Por ejemplo la referencia de comandos de
un lenguaje de programacin puede tener un volumen con la mitad de ellos y otro con la otra
mitad.
Son recomendables (aunque no obligatorio) las siguientes divisiones dentro de cada documento:
Documentos impresos: Captulos, temas y sub-temas.
Documentos electrnicos: temas.
La unidad de presentacin para los primeros es la pgina, y para los segundos la pantalla.
Cada pgina o pantalla debe tener una identificacin nica (por ejemplo el ttulo del captulo y
el n de pgina), que debe aparecer al imprimirla el usuario.
Los documentos impresos no deben tener ms de tres niveles de subdivisin dentro de un
captulo. As, por ejemplo, un sub-tema con nivel 1.2.3.4 debe ser el mayor nivel de sub-divisin.
Los documentos electrnicos deben permitir acceder a cualquier informacin con menos de 3
saltos (links) desde la pgina inicial.
Los documentos que contengan informacin en varios modos descriptivos (formativo y de
referencia) deben estar claramente separados en captulos diferentes, o al menos en temas
diferentes o manteniendo formatos tipogrficos distintos.
La documentacin en modo de referencia debe estar estructurada para facilitar la bsqueda y
acceso a los diferentes elementos. Por ejemplo, ordenando alfabticamente una lista de
comandos, o de informes de error.

149

Documentacin de usuario
Estructura
Estructura de
de la
la documentacin
documentacin de
de usuario
usuario
Recomendaciones del estndar IEEE 1063-2001 para la estructura
Cada documento debe incluir
INFORMACIN IDENTIFICATIVA
INFORMACIN IDENTIFICATIVA
Ttulo del documento
Ttulo del
Versin
del documento
documento y fecha de publicacin

Versin
del
documento
fecha de
Nombre del producto
de y
software
y publicacin
versin
Nombre del que
producto
software y versin
Organizacin
edita de
el documento
Organizacin que edita el documento
TABLA DE CONTENIDOS (ndice)
TABLA DE CONTENIDOS (ndice)
INTRODUCCIN
INTRODUCCIN

Audiencia
Audiencia
Alcance
y propsito del documento

Alcance
y propsito
delpropsito
documento
Descripcin
general del
y funcionalidad
del
Descripcin
y funcionalidad
software, general
as comodel
delpropsito
entorno de
operacin
del software, as como del entorno de operacin

E3
E3

150

Documentacin de usuario
Estructura
Estructura de
de la
la documentacin
documentacin de
de usuario
usuario
Recomendaciones del estndar IEEE 1063-2001 para la estructura
Informacin crtica

La informacin crtica debe aparecer en una ubicacin destacada de la


documentacin.
Las advertencias de carcter general deben incluirse en la introduccin del
documento.
Las advertencias particulares deben aparecer en la misma pgina o pantalla en
la que se da informacin del procedimiento implicado

Contenido

La informacin debe ser completa


Si es en modo formativo debe incluir descripcin suficiente para que los
individuos con menos experiencia de la audiencia puedan realizar
eficientemente las funciones descritas.
En modo referencia se deben incluir todas las instancias de los elementos
seleccionados.
La informacin debe ser actual y acorde a la versin del software indicada.

151

Documentacin de usuario
Estructura
Estructura de
de la
la documentacin
documentacin de
de usuario
usuario
Recomendaciones del estndar IEEE 1063-2001 para la estructura
Componentes recomendados para la documentacin de usuario
COMPONENTE
COMPONENTE

OBLIGATORIO?
OBLIGATORIO?

Informacin
Informacin identificativa
identificativa

S
S

Tabla
Tabla de
de contenidos
contenidos

S,
S, en
en documentos
documentos de
de ms
ms de
de 8 pginas
pginas

Lista
Lista de imgenes

Opcional
Opcional

Introduccin
Introduccin

S
S

Informacin
Informacin para
para el
el uso
uso de
de la
la documentacin
documentacin

S
S

Informacin
Informacin conceptual
conceptual de
de las
las funcionalidades
funcionalidades
generales
generales

S
S

152

Documentacin de usuario
Estructura
Estructura de
de la
la documentacin
documentacin de
de usuario
usuario
Recomendaciones del estndar IEEE 1063-2001 para la estructura
Componentes recomendados para la documentacin de usuario
COMPONENTE
COMPONENTE

OBLIGATORIO?
OBLIGATORIO?

Procedimientos
Procedimientos

S,
S, en
en modo
modo formativo
formativo

Informacin
Informacin de
de comandos
comandos de
de software
software

S,
S, en
en modo
modo referencia
referencia

Mensajes
Mensajes de
de error yy resolucin
resolucin de
de problemas
problemas

S
S

Glosario
Glosario

S,
S, si
si la
la documentacin
documentacin incluye
incluye trminos
trminos
desconocidos
para
la
audiencia
desconocidos para la audiencia

Fuentes
Fuentes de
de informacin
informacin adicionales
adicionales

Opcional
Opcional

ndice
ndice

S,
S, en
en documentos
documentos de
de ms
ms de
de 40 pginas

Capacidad
Capacidad de bsqueda

S,
S, en
en documentacin
documentacin sobre
sobre formato
formato electrnico
electrnico
153

Documentacin de usuario
Estructura
Estructura de
de la
la documentacin
documentacin de
de usuario
usuario
Recomendaciones generales

Legibilidad

La documentacin impresa y electrnica debe resultar legible para el usuario, teniendo en cuenta la
distancia que se emplear en las condiciones normales del entorno de consulta. Deben emplearse
tipos de letra y colores fcilmente legibles sobre el color de fondo empleado. La documentacin
impresa debe mantenerse legible si el usuario agranda o reduce la ventana de visualizacin.
El estndar IEEE 1063, por ejemplo, da algunas recomendaciones especficas como:
No abusar de las letras maysculas, indicando que no se emplee en ms de 25 palabras
seguidas.
No emplear en los textos electrnicos letras menores de 3mm. (aprox. 7,5 puntos).
En la documentacin electrnica deben considerarse tambin las combinaciones de colores
previendo el caso de que el usuario vaya a imprimirla en una impresora monocromo.

Correccin
Los textos deben ser lxica, ortogrfica y sintcticamente correctos.

Consistencia en la terminologa y en el formato


El documento debe emplear de forma consistente la terminologa empleada para nombrar los
elementos del interfaz de usuario, nombres de operaciones, funciones, procesos y conceptos claves
del sistema.
Asimismo debe respetar a travs de todo el documento unas caractersticas grficas homogneas:
cabeceras, pies de pgina, estilos de ttulos y prrafos, mrgenes, estilos de vietas, etc.
Las convenciones empleadas para mostrar las advertencias y notas resaltadas deben presentarse
con las mismas caractersticas de estilo en todo el documento.
154

6.- Verificacin y validacin

E1
E1

155

Verificacin y validacin
Introduccin
Introduccin
La complejidad del desarrollo de un sistema de software
Durante el desarrollo de un sistema de software, antes de producir el producto ejecutable final, se
generan mltiples productos intermedios:
Especificaciones de requisitos.
Diseo.
Planes de prueba.
Cdigo.
Al mismo tiempo el producto final se genera a travs de las tareas y actividades realizadas en
diferentes procesos:
Adquisicin.
Suministro.
Desarrollo.
Etc.

Los errores introducidos en los productos intermedios se transmiten al


producto final.

E2
E2

Las calidad del producto final depende de la calidad imprimida en las


diferentes tareas, actividades y procesos.

156

Verificacin y validacin
Introduccin
Introduccin
Verificacin y validacin
Aunque en el lenguaje coloquial estos trminos pueden considerarse sinnimos, en el contexto de la
ingeniera del software tienen significados diferentes:

Verificacin: Determinacin con medios objetivos y repetibles de que un elemento


satisface los requisitos.

Validacin: Determinacin con medios objetivos y repetibles de que un elemento puede


emplearse para el fin que tiene asignado.

Coste de la validacin y verificacin


Las actividades de validacin y verificacin en un proyecto requieren un esfuerzo, que debe
estimarse y planificarse de forma apropiada en el plan del proyecto.
En funcin de las caractersticas del proyecto los costes directos e indirectos suelen situarse en
rangos del 5% al 40%[1] del coste total del proyecto.

P1
P1

[1] Boehm Software Engineering Economics 1981 Marciniak J.J. Encyclopedia of Software Engineering 1994 Neal, R.D. A Case
Study of IV & V Cost Efectiveness 1997

157

Verificacin y validacin
Conceptos
Conceptos
Verificacin y validacin
Es la disciplina de gestin y actividad tcnica para garantizar que el software operar segn lo
especificado en los requisitos y las necesidades del usuario, que se lleva a cabo a travs de:

Proceso proactivo de anlisis, revisin y pruebas.


Gestin en paralelo con las actividades de desarrollo para garantizar que el software cumple
los objetivos de correccin, calidad, rendimiento, agendas y usabilidad.

Verificacin: Mtodo empleado para garantizar que el producto resultante de una


actividad o fase del desarrollo cumple con los requisitos de esa actividad o fase en lo
relativo a correccin, calidad, rendimiento, cumplimiento de agendas y usabilidad.
Validacin: Mtodo que garantiza que el producto es conforme para el uso que tiene
previsto.

Verificacin
Se est construyendo adecuadamente el producto?
La verificacin se realiza contra el entorno de desarrollo o del proyecto.
Validacin:
Se est construyendo el producto adecuado?
La validacin se realiza contra el entorno cliente, donde el producto debe
cumplir su finalidad.
158

Verificacin y validacin
Verificacin: Mtodo empleado para garantizar que el producto resultante de una
actividad o fase del desarrollo cumple con los requisitos de esa actividad o fase en lo
relativo a correccin, calidad, rendimiento, cumplimiento de agendas y usabilidad.
Validacin: Mtodo que garantiza que el producto es conforme para el uso que tiene
previsto.

E3
E3

159

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en los
los procesos
procesos de
de desarrollo
desarrollo
5. Procesos primarios

6.- Procesos de soporte

5.1
5.1 Adquisicin
Adquisicin

6.1
6.1 Documentacin
Documentacin

5.2
5.2 Suministro
Suministro

6.2
6.2 Gestin
Gestin de
de la
la configuracin
configuracin
6.3
6.3 Control
Control de
de calidad
calidad

5.3
5.3
Operacin
Operacin

6.4
6.4 Verificacin
Verificacin
6.5
6.5 Validacin
Validacin

5.3
5.3
Desarrollo
Desarrollo

6.6
6.6 Reuniones
Reuniones
5.3
5.3
Mantenimiento
Mantenimiento

6.7
6.7 Auditora
Auditora
6.8
6.8 Resolucin
Resolucin de
de problemas
problemas

7. Procesos organizacionales
7.1
7.1 Gestin
Gestin

7.2
7.2 Infraestructura
Infraestructura

7.3
7.3 Mejora
Mejora

7.4
7.4 Formacin
Formacin
160

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en los
los procesos
procesos de
de desarrollo
desarrollo
Procesos de soporte
Las actividades de verificacin y validacin pueden realizarse en diversas fases y sobre diversos
productos del desarrollo.
Por esta razn estn clasificados como procesos de soporte, que son llamados por otros procesos
del ciclo de vida.
As, por ejemplo, si el estndar 830 de IEEE se emplea para regular cmo debe hacerse el
documento de especificacin de requisitos del software, resulta posible y probable que durante el
curso del desarrollo se revise el documento para ver si se ajusta a las caractersticas definidas en el
estndar (verificacin).
Tambin resulta posible (y muy recomendable) que se contraste el documento generado con
interlocutores del cliente para comprobar que lo escrito refleja sus necesidades (validacin).
Si la agenda del plan de proyecto prevea disponer del diseo en la fecha X, parece lgico que
regularmente se verifique si los procesos estn inyectando causas de problemas en el proyecto
(incumpliendo agendas, en este caso).
El esfuerzo de verificacin y validacin debe ajustarse a las caractersticas del proyecto. En
algunos casos resultar aconsejable o necesario generar un plan de verificacin y validacin del
software que se ajuste a estndares como el IEEE 1012-1998, y en otros casos bastar con tareas
bsicas de verificacin yvalidacin, contempladas y dimensionadas en el plan del proyecto.

161

Verificacin y validacin
Relacin
Relacin entre
entre V&V
V&V yy el
el Aseguramiento
Aseguramiento de
de la
la Calidad
Calidad
Aseguramiento de la calidad
La funcin del Aseguramiento de la Calidad es garantizar que la organizacin realiza el trabajo
conforme a los procedimientos y mtodos establecidos para el proyecto.
IEEE Std. 730-1998

Relacin con Verificacin y validacin.


Es frecuente encontrar cierta confusin entre estas dos reas.
El Aseguramiento de la calidad (SQA) es una metodologa interna cuya principal finalidad es
garantizar que el flujo del trabajo cumple con las normas que tiene impuestas el desarrollador (por
su normativa interna, por imposicin del cliente, etc.).

SQA no evala el producto producido en esa fase o en ese proyecto, sino el


proceso que lo ha producido. No mira el producto, mira el proceso.
Validacin y Verificacin enfocan su anlisis en atributos del producto
generado.

162

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Definiendo los objetivos
Las consideraciones que deben contemplarse para evaluar la planificacin de las actividades de
Validacin y Verificacin son:

Nivel de integridad del proyecto.


Concepto desarrollado en las pginas siguientes. Mide la criticidad del software.

Mnimo de tareas recomendadas para el nivel de integridad del proyecto.


La regulacin interna de la organizacin desarrolladora puede determinar qu tareas de V&V
deben realizarse para cada nivel de integridad.
El estndar IEEE 1012 define 4 niveles de integridad e incorpora una tabla en la que se
estipulan las actividades mnimas de V&V en funcin del nivel.

Intensidad y rigor necesarios en las tareas de Validacin y verificacin.


El nivel de integridad no slo determina qu tareas deben realizarse, sino tambin su
intensidad y rigor. Por ejemplo, si lo realiza el propio personal de desarrollo, otro equipo de
desarrollo diferente, o incluso una organizacin externa (auditora).

Los criterios que se emplearn en las tareas de V&V para establecer los parmetros
mnimos de correccin, consistencia, precisin

163

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Criticidad del producto
El estndar IEEE 1012 establece que el plan de validacin y verificacin del software (SVVP) debe
especificar un mtodo para clasificar el nivel de integridad del software de cada subsistema de
software del proyecto.

E4
E4

164

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Anlisis de criticidad
Proceso para identificar, evaluar y categorizar el grado de criticidad de los elementos del producto
de software.
La definicin formal incluida en el estndar IEEE 1012-1998 es:
La evaluacin estructurada de las caractersticas del software (p. ej. Seguridad, complejidad,
rendimiento) para determinar la severidad del impacto de un fallo del sistema, de su degradacin o
de su no cumplimiento con los requisitos o los objetivos del sistema.
En otras palabras:

Si el sistema falla, se degrada o no consigue realizar las funciones de los


requisitos, qu impacto tiene en la seguridad o en el rendimiento?

Anlisis de daos
(hazard analysis)

Anlisis de criticidad
Anlisis de riesgos
(risk analysis)

165

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Anlisis de criticidad: anlisis de daos
La definicin formal del anlisis de daos (a nivel de sistema) es:
Anlisis de fuentes potenciales de daos o de situaciones que pueden generar daos en trminos
de daos a personas, daos a la salud, o al entorno, o una combinacin de ellos.
IEC 60300-3-9, 1995

No obstante el estndar para validacin y verificacin IEEE 1012-1998 da una definicin ms amplia
que incluye tambin prdidas econmicas, fallo en la misin del sistema, o impacto social adverso.
Para nosotros dao en el marco de validacin y verificacin de software incluye por tanto:

Daos a las personas.


Daos al medio ambiente.
Prdidas econmicas.
Fallo en la finalidad del sistema.
Impacto social adverso.

Para realizar el anlisis de daos deben identificarse las consecuencias que pueden ocasionar
los fallos en el software. Es posible que no generen daos fsicos, pero s en trminos de prdidas
econmicas (para el desarrollador, para el cliente, para los usuarios), o de impacto social adverso
(desprestigio del cliente, del desarrollador, de los usuarios, de terceros).

166

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Anlisis de criticidad: anlisis de riesgos
Riesgo: probabilidad de que se produzca un dao identificado

P2
P2
P3
P3

En el desarrollo de un sistema de software se pueden producir adversidades que afecten a:


Los planes del proyecto.
Al producto o subproductos del desarrollo.
Los riesgos inherentes a un proyecto suelen ser de tres naturalezas:
Intrnsecos al sistema que se desarrolla
Derivados de las particularidades de desarrollo del software.
Propios del desarrollo de proyectos.

167

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Anlisis de criticidad: anlisis de riesgos
NATURALEZA DEL RIESGO
Propios del sistema

Propios del desarrollo


de software

CAUSAS TPICAS
Los identificados en el anlisis de daos

Complejidad innecesaria

Baja calidad

Propios de los desarrollos


[1]
por proyecto[1]

Complejidad
Complejidad intrnseca
intrnseca del
del diseo
diseo mayor
mayor de
de la
la necesaria
necesaria
Incumplimiento
Incumplimiento de
de estndares
estndares necesarios
necesarios

Inestabilidad de los requisitos


Problemas con herramientas y mtodos
Inestabilidad,
Inestabilidad, bugs
bugs en
en compiladores,
compiladores, etc.
etc.

Comportamiento imprevisto de los interfaces


Interfaces
Interfaces con
con hardw.
hardw. yy softw.
softw. externo
externo en
en la
la implementac.
implementac.

Inestabilidad y cambio rpido de las


plataformas tecnolgicas
Presin en costes y agendas.
Lagunas en planificacin y gestin.
Retrasos en subcontrataciones.

[1] En los proyectos de software se suelen dar con mayor intensidad los riesgos tpicos indicados.

168

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Anlisis de criticidad: anlisis de riesgos
Validacin y Verificacin no gestionan las causas de los riesgos. Esa gestin pertenece a la gestin
de riesgos, dentro de la gestin del proyecto.

Validacin
Verificacin

Gestin de proyecto
(Gestin de riesgos)

Dirige el esfuerzo en la identificacin de los riesgos y la


cuantificacin de su posible impacto, para determinar
el nivel de integridad del proyecto.

Dirige el esfuerzo en la identificacin de los riesgos para


desarrollar un plan de accin para reducir la probabilidad
de cada riesgo en funcin de la magnitud de su impacto,
as como para prever las acciones si se llegan a producir
Daos.

[1] En los proyectos de software se suelen dar con mayor intensidad los riestos tpicos indicados.

169

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Niveles de integridad
Anlisis de daos
(hazard analysis)

NIVEL DE
INTEGRIDAD

Anlisis de criticidad
Anlisis de riesgos
(risk analysis)
Una vez realizado el anlisis de criticidad a travs de los anlisis de
daos y de riesgos, resulta posible establecer el nivel de integridad
del proyecto y adecuar a l las tareas de validacin y verificacin.

Adecuacin de las
tareas de

VALIDACIN
y

VERIFICACIN

El nivel de criticidad depende de dos factores:

MAGNITUD DEL DAO POSIBLE

POSIBILIDAD DE MITIGACIN
DEL DAO
170

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Niveles de integridad
El estndar IEEE 1012-1998 define 4 niveles de integridad.
En el borrador de 2004 las definiciones que se recogen para cada uno son:
Nivel
4

Dimensin del dao por fallo del Software

Mitigacin aplicable

Prdida de vida
Prdida del sistema
Graves prdidas econmicas o sociales

No es posible mitigar
los daos producidos

El sistema no realiza el fin previsto ni en


todo ni en parte.
Graves prdidas econmicas o sociales

Es posible una mitigacin


parcial de los daos producidos

No se pueden realizar funcionalidades


parciales del sistema.
Prdidas econmicas o sociales importantes

Se pueden mitigar los


daos producidos

Una determinada funcionalidad del sistema


no se realiza.
Consecuencias mnimas

No es necesario mitigar
los daos

El modelo del estndar resulta vlido, pero cualquier modelo, adecuado a las circunstancias del
sistema y del entorno de desarrollo, puede resultar igualmente vlido.

171

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Independencia
La determinacin de las personas responsables de las tareas de verificacin y validacin, depende
de:

P4
P4

P5
P5

Caractersticas y naturaleza del proyecto

Nivel de integridad

La independencia puede aplicarse a distintas reas del proyecto:

Independencia de gestin
Las personas que realizan las tareas de verificacin y validacin se gestion al margen de la
organizacin que realiza el desarrollo. Tienen la autoridad para tomar decisiones sobre el
trabajo de V&V, incluyendo qu elementos se van a analizar, con qu herramientas. Facilitan
la informacin de sus conclusiones tanto a los desarrolladores como al adquiriente, pero
slo el adquiriente puede modificar la lnea de trabajo de validacin y verificacin.
Independencia tcnica
Las personas que analizan el proyecto son ajenas al grupo de desarrollo. Emplean sus
propias herramientas, mtodos y recursos.
Independencia financiera
Las tareas de verificacin y validacin cuentan con presupuesto propio, y la autoridad para
modificar su presupuesto est fuera de la organizacin desarrolladora.

172

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Tipos de independencia
La validacin y verificacin independiente (IV&V) se clasifica en 4 tipos, en funcin del rigor con el
que se realiza: clsica, modificada, interna y domstica. Los proyectos con nivel de integridad 4
requieren independencia rigurosa en todas sus reas.
El estndar IEEE 1012-1998 muestra con la siguiente tabla el grado de independencia generalmente
proporcionado por cada tipo, para cada faceta del proyecto.

reas

Tipos de independencia

Gestin

Tcnica

Financiera

CLSICA

MODIFICADA

I-R

INTERNA

I-R

I-R

I-R

DOMSTICA

I-M

I-M

I-M

I: Independencia rigurosa

IR: Independencia con reparos

IM: Independencia mnima

173

Verificacin y validacin
Adecuacin
Adecuacin de
de V&V
V&V aa las
las caractersticas
caractersticas del
del proyecto
proyecto
Tipos de independencia
IV&V CLSICA
Normalmente requerida para proyectos con nivel de integridad 4.
Exige rigurosa independencia en las 3 reas del proyecto.
IV&V MODIFICADA
Suele emplearse en proyectos con nivel de integridad 3.
El desarrollo y la V&V lo realizan organizaciones diferentes, pero la responsabilidad de la gestin en
el proyecto es nica, y es la que recibe la informacin de ambas partes. No obstante, los
presupuestos y el personal tcnico estn separados.
IV&V INTERNA
Se emplea cuando el equipo de V&V pertenece a la misma organizacin desarrolladora, pero en la
forma de una entidad diferenciada del grupo de desarrollo del proyecto.
IV&V DOMSTICA
Se emplea personal de la organizacin desarrolladora para realizar la V&V. El personal de desarrollo
y de validacin y verificacin trabaja conjuntamente. No se puede garantizar la independencia
tcnica, y la gestin y el presupuesto son nicos para desarrollo y V&V.

174

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en el
el ciclo
ciclo de
de vida
vida del
del software
software
Las tareas de verificacin y validacin se deben realizar en paralelo con los procesos del ciclo de
vida, incluyendo tambin la gestin del proyecto.

Gestin

Adquisicin

Suministro

Desarrollo

Operacin

Mantenim.

Verificacin y Validacin
GESTIN
El objetivo del trabajo de verificacin y validacin es garantizar que el software tiene la integridad
requerida.
Este trabajo debe realizarse de forma integrada en la gestin del proyecto y puede comprender:

Desarrollo del plan de validacin y verificacin.


Valoracin de las modificaciones.
Supervisin de las actividades de verificacin y validacin
Planificacin, monitorizacin y control del trabajo de validacin y verificacin.
Etc.

175

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en el
el ciclo
ciclo de
de vida
vida del
del software
software
ADQUISICIN
En el proceso de adquisicin el trabajo de verificacin y validacin debe incluir siempre
Revisin de la descripcin del sistema.
En funcin del nivel de integridad del proyecto, puede cubrir tambin:
Valoracin de la dimensin y alcance de los trabajos de V&V.
Planificacin de la comunicacin entre los trabajos de V&V y la organizacin desarrolladora.
SUMINISTRO
El proceso de verificacin y validacin comienza cuando un suministrador decide atender la peticin
de adquisicin. V&V se enfoca en determinar si la documentacin e informacin facilitada por el
adquiriente es consistente y si, en opinin del suministrador, la solucin satisfar las necesidades de
los clientes.
Este proceso se denomina verificacin del contrato.

176

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en el
el ciclo
ciclo de
de vida
vida del
del software
software
DESARROLLO
La verificacin y validacin en el desarrollo centra su actividad en 6 tareas, que corresponden a las
5 tpicas de los ciclos de desarrollo en cascada, ms instalacin.
V&V EN EL PROCESO DE DESARROLLO
CONCEPTO

REQUISITOS

DISEO

IMPLEMENTACIN

PRUEBAS

INSTALACIN

Si en el ciclo de vida empleado por el proyecto, la incorporacin de estas actividades est


modificada, el proceso de verificacin y validacin tambin se adecuar a las caractersticas del
proyecto.
V & V CONCEPTO
La verificacin y validacin del concepto trabaja sobre la descripcin del sistema, lleva a cabo el
anlisis de criticidad, estudiando y evaluando daos y riesgos; y genera o actualiza el plan de
validacin y verificacin.

177

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en el
el ciclo
ciclo de
de vida
vida del
del software
software
V & V REQUISITOS
En esta fase, la verificacin y validacin comprueba el principal producto generado en esta fase: la
especificacin de requisitos del software.
Se analizan las propiedades de calidad
DEL DOCUMENTO

Completo
Correcto
Consistente
Modificable
Trazable

DE LOS REQUISITOS

Posibles
Necesarios
Priorizados
Correctos
Verificables

V & V DISEO
Comprobacin de que el diseo realizado comprende todos los requisitos sin omisiones y sin
complejidad innecesaria. Los aspectos generales que se analizan son:
Trazabilidad entre requisitos y diseo.
No hay omisiones ni aadidos.
El diseo es apropiado para los objetivos deseados del sistema.
El diseo es conforme con los estndares, prcticas y convenciones acordadas para el
proyecto
El diseo es comprensible por el equipo de desarrollo y el posterior de mantenimiento.
Contiene informacin suficiente para realizar las pruebas de unidad y de integracin.
La documentacin est completa, incluyendo grficas o especificaciones necesarias.
178

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en el
el ciclo
ciclo de
de vida
vida del
del software
software
V & V IMPLEMENTACIN
La implementacin transforma la descripcin del diseo en componentes de que juntos integran el
producto final de software. La labor de verificacin y validacin comprueba:
Conformidad del cdigo
Con las especificaciones del diseo
Con los estndares aplicables
La idoneidad del cdigo para obtener el producto con el nivel de integridad deseado.
V & V PRUEBAS
La verificacin y validacin de las pruebas garantiza que se han cumplido los requisitos del sistema y
del software, alcanzando los niveles de integridad requeridos.
En sistemas con niveles de integridad 3 y 4 es necesario que el equipo de verificacin y validacin
realice los planes y procesos de prueba, as como su ejecucin.
Para niveles 1 y 2 es suficiente con verificar las pruebas realizadas por el equipo de desarrollo.
V & V INSTALACIN
Se comprueba el rendimiento del sistema de software al ejecutarse en el entorno del cliente, as
como que los procedimientos de instalacin son correctos.

179

Verificacin y validacin
Verificacin
Verificacin yy validacin
validacin en
en el
el ciclo
ciclo de
de vida
vida del
del software
software
V & V OPERACIN
Una vez instalado y puesto en servicio el sistema de software, la verificacin y validacin valora el
impacto que los cambios pueden suponer en el nivel de integridad del sistema, o los riesgos o daos
que pueden introducir.
Incluye la monitorizacin y evaluacin del entorno de operacin.
V & V MANTENIMIENTO
Una vez puesto en servicio el sistema de software, las modificaciones del entorno, o la presencia de
errores, o la necesidad de ampliar su funcionalidad requerirn emprender tareas de mantenimiento,
que en esencia, y a menor escala son pequeas acciones de desarrollo que pueden introducir
modificaciones en el nivel de integridad, y requerir revisiones en los anlisis de criticidad, daos y
riesgos, as como requerir posteriores acciones de verificacin y validacin sobre las modificaciones
de requisitos, diseo, desarrollo y pruebas.

E5
E5

180

7.- Mantenimiento
E1
E1

181

Mantenimiento
Introduccin
Introduccin
La complejidad del mantenimiento de un sistema de software
CONSUME MUCHOS RECURSOS
El mantenimiento consume ms
del 60% del coste de todo el
ciclo de vida

EL SISTEMA YA EST EN USO


Las actividades de mantenimiento resultan muy visibles para el
cliente.
Pueden afectar negativamente a la imagen de la organizacin.

ES UNA ACTIVIDAD CRTICA


GENERALMENTE INFRACONSIDERADA
182

Mantenimiento
Introduccin
Introduccin
Definicin
Modificacin de un producto de software, despus de su entrega para corregir errores,
mejorar el rendimiento u otros atributos o adaptar el producto a cambios del entorno.
IEEE
IEEE Std.
Std. 1219-1998
1219-1998

Producto de software no comprende slo el cdigo. Incluye tambin la documentacin y los datos de
configuracin
PRODUCTO DE SOFTWARE

Cdigo

Datos de configuracin
y estructuras de datos

Requisitos, documentos
de anlisis, plan de V&V

Manuales y
documentacin de usuario

183

Mantenimiento
Tipos
Tipos de
de mantenimiento
mantenimiento
El mantenimiento del software se clasifica generalmente en tres categoras, en funcin de cul es la
causa que motiva el cambio:

Adaptativo

Correctivo

Perfectivo

ADAPTATIVO
Permite al software continuar en funcionamiento, adaptndose a cambios producidos en su entorno
de operacin.
Los cambios tpicos se suelen centrar en el hardware con el que interacta, en el sistema operativo,
o en formatos de datos que recibe o enva.
CORRECTIVO
Tiene como finalidad corregir fallos o problemas. Dentro del mantenimiento correctivo se suele
diferenciar entre de emergencia o de agenda; en funcin de la urgencia con la que deba
aplicarse la solucin.
En algunas ocasiones el cliente necesita urgentemente la reparacin del fallo, y en otras, puede
seguir operando con el error presente, y esperar a la prxima versin que normalmente incluye
cambios acumulados en la agenda de mantenimiento, tanto de tipo adaptattivo, como correctivo y
perfectivo.

184

Mantenimiento
Tipos
Tipos de
de mantenimiento
mantenimiento
PERFECTIVO
Se realiza para dar respuesta a nuevos requisitos del cliente, o para mejorar el rendimiento del
sistema.
Clasificacin

Porcentajes habituales

Adaptativo
Mantenimiento

De emergencia
Correctivo
De agenda
Perfectivo
[Preventivo]

PREVENTIVO
E2
E2

En su versin de 1993, el estndar IEEE 1229 inclua tambin en su clasificacin el mantenimiento


preventivo como aquel que se realiza para evitar la aparicin futura de errores, o para mejorar la
integridad de producto en prevencin de stos. Algunos textos lo consideran como un 4 tipo de
mantenimiento, y otros lo incluyen como mantenimiento correctivo.
185

Mantenimiento
Dificultad
Dificultad del
del mantenimiento
mantenimiento
El mantenimiento es una de las fases ms difciles del ciclo de vida, y generalmente no est lo
suficientemente reconocida.
Las principales razones de esta situacin son:

En las organizaciones de software no aparece asociada a nuevas oportunidades de negocio,


que es sin duda un aspecto mucho ms atractivo para sus gestores.
Los trabajos de mantenimiento suelen tener asignados sus propios presupuestos preestablecidos, y se ven como un negocio normal, por lo que no suelen atraer la atencin de
la actividad del negocio.
El personal tcnico suele preferir trabajar en proyectos nuevos y no en mantener sistemas
ya desarrollados.

En muchos sentidos, el mantenimiento resulta ms difcil tanto desde el punto de vista tcnico como
de gestin del proyecto. Algunos de los factores que hacen del mantenimiento un proceso difcil son:

Posibilidad de introduccin de errores en cascada o distorsionar funcionalidades ya


implementadas al insertar nuevas modificaciones.
El equipo de mantenimiento debe tener un conocimiento global del producto.
Las pruebas suelen resultar especialmente complicadas porque generalmente las
limitaciones de tiempo no hacen posible ejecutar pruebas completas de regresin.
Desde el punto de vista de gestin, las tres categoras de mantenimiento (correctivo,
perfectivo y adaptativo) suelen realizarse de manera simultnea, con gestin de prioridades
de cada peticin de cambio, y respetando la gestin de la configuracin del sistema.

186

Mantenimiento
Dificultad
Dificultad del
del mantenimiento
mantenimiento
Dificultad por degradacin del sistema
Cuanto mejor diseado, codificado y documentado est un sistema, ms fcil resulta su
mantenimiento.
Las propias tareas de mantenimiento tienden a degradar el diseo, la limpieza del cdigo y su
documentacin, generando de esta forma una espiral que se retroalimenta y que con el tiempo
incrementa la dificultad de mantenimiento de un sistema.
Los factores que favorecen esta situacin, y que por tanto es necesario gestionar adecuadamente
son:
Los mitos ya apuntados de no otorgar al mantenimiento la importancia y rigor necesarios.
Las presiones de tiempo y recursos con las que suelen ejecutarse.
La consideracin por parte del personal tcnico de tareas de segunda divisin

reas de degradacin creciente

Diseo
Diseo

Cdigo
Cdigo

Datos
Datos

Documentacin
Documentacin

187

Mantenimiento
Dificultad
Dificultad del
del mantenimiento
mantenimiento
Dificultad por degradacin del sistema

DIFICULTAD
DEL MANTENIMIENTO

Factores agravantes

SISTEMA MS DIFCIL
DE MANTENER

Escasa concienciacin
organizacional de la relevancia del
mantenimiento.
Peticiones de cambios con presin
de fechas y presupuestos.
Consideracin del personal tcnico
de que se trata de un trabajo de
segunda categora

Degradacin del sistema

Diseo cada vez ms turbio


Cdigo parcheado cada vez ms
sucio
Estructurad de datos van
perdiendo su normalizacin e
integridad referencial
Actualizacin deficiente o nula de
la documentacin
188

Mantenimiento
Gestin
Gestin del
del mantenimiento
mantenimiento
Las tareas de mantenimiento deben ejecutarse dentro de un marco de gestin, de igual forma que
si se trata el desarrollo de un sistema nuevo.
Tambin es frecuente que en este aspecto tambin el mantenimiento suele ser tratado como la
cenicienta en los proyectos de software, y generalmente resulta ms difcil la gestin de un
proyecto de mantenimiento que la de un desarrollo nuevo. De hecho puede ocurrir que dentro del
mantenimiento de un sistema se incluya tambin el desarrollo de un nuevo sub-sistema paraa
ampliar su funcionalidad.
Por tanto todas las tareas e indicaciones propias de la gestin de proyectos de software son
aplicables a los proyectos de mantenimiento: estimacin del esfuerzo necesario, identificacin de
procesos necesarios, planificacin de costes y agendas, gestin de riesgos, etc.

Las actividades de mantenimiento deben realizarse con tcnicas de gestin


de proyectos

189

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
Para identificar y comprender las actividades que deben tenerse en cuenta en el mantenimiento, los
pasos que deben seguirse y las herramientas y mtodos que deben emplearse, resulta muy til
considerar que los procesos de cambio o modificaciones de un sistema de software comprenden 7
fases:

Identificacin clasificacin y priorizacin del problema o de la modificacin.


Anlisis.
Diseo.
Implementacin.
Pruebas de sistema y de regresin.
Pruebas de aceptacin.
Entrega.

Al realizar tareas de mantenimiento, en cada una de estas fases deben considerarse los siguientes
elementos:

EN CADA FASE

Entradas

Procesos

Control

Salidas

Mtricas
190

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
1.- Identificacin del problema, clasificacin y priorizacin
Cada peticin de cambio debe identificarse, clasificarse y asignarle una prioridad, teniendo en
cuenta qu tipo de mantenimiento implica (correctivo, adaptativo, perfectivo y si es de emergencia)

Entradas

Peticin de cambio

Procesos

Asignar n de

identificacin
Clasificar por tipo
de mantenimiento
Analizar y determinar se se acepta
rechaza o pospone
Primera estimacin
de su magnitud
Priorizar la
modificacin
Asignar la peticin
a qu bloque de
modificaciones
prevista va a ir

Control
Una vez identificada
la peticin de
cambio, debe
quedar registrada en
un registro de
peticiones de
cambio

Salidas
Peticin de cambio
validada que queda
en un registro con la
siguiente
informacin:

Definicin del

problema o del
nuevo requisito
Evaluacin
Tipo de mantenim.
Prioridad inicial
Estimacin inicial
de recursos
necesarios

Mtricas

N de omisiones
en la P.C.
N de P.C.
enviadas
N de peticiones
de cambio
duplicadas
Tiempo invertido
en la validacin.

Factores medidos:
correccin y
mantenibilidad

191

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
2.- Anlisis
La fase de anlisis emplea la relacin de peticiones de cambio registradas y validadas para analizar
su viabilidad, alcance de las modificaciones y preparar un plan preliminar de diseo implementacin
y entrega

Entradas

Peticin de cambio

validada
Estimacin inicial
de recursos y
dems informacin
registrada.
Documentacin del
proyecto (si la
hay).

Procesos

Anlisis de

viabilidad
(impacto,
soluciones
alternativas,
implicaciones de
seguridad, coste y
beneficio de la
modificacin)
Anlisis detallado
(SRS de la
modificacin,
elementos a
modificar,
estrategia de
pruebas)

Control

Salidas

Realizar revisiones
tcnicas y revisar

Estrategia de

pruebas.
Que la documentacin est completa
y actualizada e
incluye parmetros
de seguridad

Informe de
viabilidad de las
P.C.
Informe del anlisis detallado.
Requisitos
actualizados (y
trazables)
Lista preliminar
de mofificaciones.
Plan de pruebas
Plan de
implementacin

Mtricas

Modificaciones de
requisitos
% de errores en
la documentacin
Esfuerzo por rea
(SQA, SE, etc.)
Tiempo empleado
% de errores
generados por
prioridad y tipo.

Factores: flexibilidad
trazabilidad
usabilidad
mantenibilidad
reusabilidad
192

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
3.- Diseo
En esta fase se emplea toda la documentacin del sistema, del proyecto y la generada en la fase
anterior (anlisis) para disear la modificacin del sistema.

Entradas

Salidas de la fase

de anlisis.
Documentacin del
sistema y del
proyecto
Cdigo,
comentarios y
bases de datos del
sistema.

Procesos

Identificacin de

los mdulos
afectados.
Documentacin de
las modificaciones
Creacin de casos
de prueba para las
modificaciones
Identificacin y
creacin de
pruebas de
regresin
Actualizacin de
documentacin
(SRS manuales)

Control

Inspeccin /
verificacin del
diseo
Inspeccin /
verificacin de la
documentacin
asociada

Salidas
Revisados:
Lista de
modificacines
Anlisis detallado
Plan de
implementacin
actualizado
Lnea base de
diseo
Planes de
pruebas

Mtricas

Complejidad del
software
Cambios diseo
Esfuerzo por rea
Cambios en
planes de prueba
Nmero de
mdulos
N lneas de
cdigo aadidas o
modificadas

193

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
4.- Implementacin
A partir del diseo realizado y verificado, el cdigo y la documentacin del sistema y del proyecto se
lleva a cabo el trabajo de implementacin.

Entradas

Resultados de la

fase de diseo.
Cdigo fuente y
bases de datos del
sistema.
Documentacin del
sistema y del
proyecto.

Procesos

Codificacin y

pruebas unitarias
Integracin
Anlisis de riesgos
Revisin de
pruebas

Control

Revisiones de
cdigo
Verificacin de la
integracin.
Verificacin de
modificaciones y
actualizaciones
de
documentacin.
Gestin de
riesgos y
supervisin
durante las
pruebas

Salidas
Revisados:
Software
actualizado.
Documentacin
de diseo,
pruebas,
manuales
documentacin
de formacin
actualizados.
Definicin de
riesgos e
impactos.
Informe de
revisin de las
pruebas

Mtricas

Volumen (puntos
de funcin /
lneas de cdigo)
Porcentaje de
errores
generados.

194

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
5.- Pruebas de sistema y de regresin
Tras la implementacin deben realizarse las pruebas del sistema modificado. Las pruebas de
regresin son parte de las pruebas del sistema que comprueban que el cdigo modificado no ha
introducido errores nuevos.

Entradas

Informe de las

pruebas.
Documentacin de
los planes de
prueba, casos de
prueba,
procedimientos de
prueba, manuales
de usuario, diseo.
Sistema
actualizado

Procesos

Prueba funcional
del sistema.
Pruebas de
interfaz.
Pruebas de
regresin.

Control

Las pruebas del


sistema se han
realizado segn
los planes SQA.
Control de la
gestin de la
configuracin de:
cdigo, peticiones
de cambio,
documentacin
de pruebas

Salidas
Revisados:
Sistema revisado.
Informes de
pruebas.

Mtricas

Porcentajes de
errores por
prioridad y tipo:
Generados y
corregidos.

195

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
6.- Pruebas de aceptacin
Sobre el sistema completamente integrado, el cliente, los usuarios o un tercero nombrado por el
cliente lleva a cabo las pruebas de aceptacin

Entradas

Informes de

pruebas.
Sistema
completamente
integrado.
Planes de pruebas
de aceptacin.
Casos de prueba
de aceptacin.
Procedimientos de
aceptacin

Procesos

Ejecucin de las

pruebas de
aceptacin a nivel
funcional.
Ejecucin de
pruebas de
interoperabilidad.
Ejecucin de
pruebas de
regresin.

Control

Ejecucin de
planes de
aceptacin.
Auditora
funcional.
Puesta bajo
control de
configuracin de
la nueva
documentcin.
Establecimiento
de la nueva lnea
base del sistema.
Informe de los
resultados de
auditora
funcional.

Salidas

Nueva lnea base


del sistema.
Informe de
auditora
funcional.
Informe de
pruebas de
aceptacin.

Mtricas

Porcentajes de
errores por
prioridad y tipo:
Generados y
corregidos.

196

Mantenimiento
Las
Las 77 fases
fases del
del mantenimiento
mantenimiento
7.- Entrega
Entrega del sistema modificado.

Entradas

El sistema

modificado segn
se represente en la
nueva lnea base.

E3
E3

Procesos

Auditora fsica de

la configuracin.
Notificacin a la
comunidad de
usuarios.
Desarrollo y
archivo de una
copia de seguridad
del nuevo sistema.
Instalacin y
formacin de
usuarios.

Control

Ejecucin de la
auditora fsica de
la configuracin.
Documento de
descripcin de la
versin.

Salidas

Informe de la
auditora fsica.
Documento de
descripcin de la
versin.

Mtricas

Cambios en la
documentacin
(manuales de
usuario, de
operacin,
documento
descripcin de
versin, etc.)

197

Mantenimiento
Mantenibilidad
Mantenibilidad
Con este trmino, que aunque inexistente en el lxico espaol se ha hecho hueco en nuestra jerga,
se define una propiedad del software que se puede definir como:

la medida cualitativa de la facilidad para comprender, corregir y adaptar o


mejorar el software.
Los factores que conforman la mantenibilidad de un sistema de software son:

Mayor o menor profesionalidad en las fases de diseo, codificacin y prueba.


Adecuada cualificacin del equipo desarrollador del software.
Facilidad de comprensin de la estructura del software.
Facilidad de uso del sistema.
Uso de lenguajes de programacin y sistemas operativos estandarizados.
Grado de normalizacin de la documentacin.
Disponibilidad de la documentacin de los casos de prueba.
Facilidades de depuracin con las que cuenta el sistema.
Disponibilidad de medios e infraestructura para realizar el mantenimiento.
Madurez en la planificacin del mantenimiento.

198

Mantenimiento
Mantenibilidad
Mantenibilidad
Medicin
Vista la definicin de mantenibilidad, y los factores que la forman
Cmo se mide la mantenibilidad?. Es posible afirmar que este sistema tiene una mantenibilidad de
6, o alta, o peor que la de aquel otro sistema?.
No es un atributo ni fsico ni simple. No puede medirse directamente.
Las mediciones siempre tendrn carcter de aproximacin, y se pueden realizar indirectamente
midiendo aspectos relacionados:

Tiempos invertidos en las tareas de mantenimiento


Para indentificar el problema, para analizarlo, para modificar x lneas de cdigo, etc.
Midiendo la complejidad del sistema de software.
En esta lnea las propuestas de medicin apuntan a la medicin de la complejidad
ciclotmica, la legibilidad, etc.
Esta lnea presenta el problema de utilizar atributos indirectos que tambin son de difcil
medicin.

La mantenibilidad es un atributo de calidad del software.

199

Mantenimiento
Mantenibilidad
Mantenibilidad
Reingeniera
Cmo abordar el mantenimiento de un sistema de software con problemas de
mantenibilidad?

No se dispone de documentacin (diseo, requisitos)


Con deficiente gestin de la configuracin.
Que ha sufrido mltiples y cambios que han degradado el sistema, o desfasado la
documentacin.

Analizar el sistema y decidir si conviene rehacerlo de nuevo, o por el contrario resulta


ms apropiado aplicar tcnicas de reingeniera.

200

Mantenimiento
Mantenibilidad
Mantenibilidad
Modelo de reingeniera del software
El modelo comprende 6 actividades. La primera es un anlisis de inventario del que se decidir si de
aplica reingeniera, y en caso afirmativo se emplearn alguna o todas de las cinco actividades
restantes.
Anlisis de
inventario

Qu
hacer?

Reconstruccin

Ingeniera inversa

Ingeniera
Ingeniera
inversa
inversa

Reestructuracin
Reestructuracin
de
de datos
datos

Reestructuracin
Reestructuracin
de
de cdigo
cdigo

Reestructuracin
Reestructuracin
de
de documentos

Ingeniera
Ingeniera
progresiva
progresiva

201

Mantenimiento
Mantenibilidad
Mantenibilidad
Modelo de reingeniera del software
Anlisis de inventario
El inventario del sistema comprende la informacin necesaria para el anlisis que servir para
decidir si resulta ms conveniente rehacer de nuevo el sistema, o aplicar tcnicas de reingeniera:

Identificacin del sistema de software


Ao de creacin
Nmero de cambios importantes realizados
Esfuerzo invertido en esos cambios
Fecha y esfuerzo del ltimo cambio importante
Sistema o sistemas en los que se integra el software
Sistemas con los que se relaciona
Bases de datos a las que accede
Errores detectados en los ltimos x meses (12)
Nmero de usuarios
Complejidad de la arquitectura, cdigo y documentacin
Calidad de la documentacin
Mantenibilidad general
Longevidad acumulada y previsible del proyecto
Nmero de cambios previstos en los prximos x meses
Coste anual del mantenimiento
Valor actual del negocio que gestiona
Importancia estratgica para el negocio del cliente y del desarrollador
202

Mantenimiento
Mantenibilidad
Mantenibilidad
Modelo de reingeniera del software
Reestructuracin de documentos
Los sistemas en los que se cuestiona aplicar reingeniera suelen tener deficiencias en su
documentacin.
En funcin de las caractersticas del proyecto, tras el anlisis del inventario las opciones son:

Dejarlo como est


Razones:
Se trata de un sistema con escasa previsin de cambios futuros.
Se trata de un sistema que se encuentra cercano al fin de su ciclo de vida.
Los recursos necesarios para crear la documentacin no compensan con el beneficio
obtenido.

Documentar slo las partes que se modifican


Razones:
Se dispone de recursos limitados.
Tras el anlisis de inventario resulta necesario actualizar la documentacin.

Reducir la documentacin al mnimo imprescindible


Razones:
Se trata de un sistema crtico para el negocio.
Es preciso volver a documentarlo
203

Mantenimiento

Modelo de reingeniera del software


Ingeniera inversa
La ingeniera inversa realiza un anlisis de un sistema de software para conseguir especificar su
documentacin; generalmente su diseo.
Obviamente se aplica cuando no se dispone del diseo, o ste est obsoleto.
Un proceso de ingeniera inversa debe ser capaz de:
Derivar las representaciones de diseo de procedimientos.
Extraer la estructura de datos.
Representar el modelo de los flujos de datos y de control.
Representar el modelo de entidades y relaciones.

204

Mantenimiento
Mantenibilidad
Mantenibilidad
Modelo de reingeniera del software
Reestructuracin de cdigo
Los sistemas que tras un anlisis de inventario quedan como candidatos a una reestructuracin de
cdigo suelen presentar una arquitectura de programa relativamente slida, pero presentan
mdulos individuales que por haber sufrido modificaciones poco ortodoxas, o por las razones que
sean presentan un cdigo sucio de difcil comprensin, comprobacin y mantenibilidad.
Reestructuracin de datos
Las deficiencias en las estructuras de datos son una de las principales causas de errores.
Es necesario realizar reestructuracin (rediseo y posterior migracin de la informacin al nuevo
diseo) en las bases de datos que por no tener un diseo normalizado, o sin integridad relacional
presentan un riesgo de error cuyo impacto aconseje su reestructuracin.
La reestructuracin de datos suele implicar tambin modificaciones de cdigo.
Ensame tu cdigo y mantn ocultas tus estructuras de datos, y me seguirs engaando.
Mustrame tus estructuras de datos y normalmente no necesitar que me ensees tu cdigo:
resultar evidente
Fred Brooks
205

Mantenimiento
Mantenibilidad
Mantenibilidad
Modelo de reingeniera del software
Ingeniera progresiva
Por el estado actual de las herramientas CASE se trata de un modelo ideal de proceso, ms que de
un proceso que se pueda aplicar directamente.
Su objetivo es ejecutar ingeniera inversa y reestructuracin de cdigo de forma automtica a travs
de herramientas CASE que analicen el cdigo y generen su diseo, as como su reestructuracin.

E4
E4

206

8.- Gestin de la configuracin

207

Gestin de la configuracin
Introduccin
Introduccin
El problema
Entorno de desarrollo de un sistema de software de tamao medio:
Equipo de 10 programadores.
75 mdulos de programa.
Media de dos versiones de cada mdulo.
Documentacin del proyecto: descripcin del sistema, SRS, plan
de proyecto, anlisis, etc.
Cada programador modifica un mdulo cada da.
Modificaciones de requisitos
Varios programadores deben trabajar de forma concurrente
sobre el mismo mdulo.
Etc.

Consecuencias

La versin del programa no coincide con la documentacin.


Estamos en la versin 2.3, y debemos revisar un error que se ha
producido en una instalacin de la versin 1.7. Dnde est el cdigo de
esa versin?
Ese error ya se corrigi hace un mes.. Porqu ha vuelto a aparecer?
Quin aprob esa modificacin de requisitos, y porqu no est en la
versin actual de SRS?
Se est dando mantenimiento a usuarios con diferentes versiones del
sistema Qu versin del componente de acceso a datos se integr en
la versin 2.0 del sistema?.
Etc.
208

Gestin de la configuracin
Definicin
Definicin
Gestin de la configuracin del software es una disciplina formal de la ingeniera del software
que proporciona mtodos y herramientas para identificar y controlar el software durante su
desarrollo y posterior uso.
Comprende las siguientes actividades:[1]
Identificacin y establecimiento de las lneas base.
Revisin, aprobacin o rechazo, control y seguimiento de los cambios.
Auditoras y revisiones de la evolucin de los productos de software.
Control de la relacin del sistema de software en su interfaz de operacin.

mbito de la gestin de la configuracin


De aplicacin
Los componentes del sistema y su
relacin con el entorno

Temporal

Desde el inicio del proyecto hasta


que se deja de usar y se retira.

Entorno
Sistema

Desarrollo
Desarrollo

Mantenimiento
Mantenimiento

Ciclo de vida
[1] En la exposicin del captulo se abordan con detalle cada una de ellas.

209

Gestin de la configuracin
Conceptos
Conceptos clave
clave

Lnea base

Peticin de
cambio

Comit de
control de la
configuracin

Librera

Elementos de
configuracin
del software

210

Gestin de la configuracin
Conceptos
Conceptos clave
clave
Lnea base
Especificacin de un producto que ha sido formalmente revisada y aceptada para servir como
punto de referencia para su posterior desarrollo, y slo puede modificarse a travs de un
procedimiento formal de control de cambio.
El nmero y tipo de lneas base de un proyecto puede ser diferente en funcin de las
caractersticas y modelo de ciclo de vida del mismo, pero las habituales son:

Lnea base funcional


Describe las funcionalidades que realizar el sistema, y se establece despus de la
revisin de la descripcin del sistema y del diseo del sistema.
Lnea base de requisitos (tambin lnea base asignada)
Documenta las funciones que desarrollar el software y se establece despus de la
revisin de la especificacin de requisitos del software (SRS). Tambin se denomina
Lnea base asignada, porque en ella se asignan al software los requisitos de la
descripcin del sistema.
Lnea base de desarrollo
Esta lnea base crece y evoluciona durante el desarrollo del sistema y recoge la
configuracin en cada fase del diseo, codificacin y pruebas. Los elementos contenidos
en esta lnea base van incrementando y son normalmente revisados por el equipo del
desarrollo.
Lnea base de producto
Contiene el producto completo en su versin final. Se establece tras comprobar con la
validacin y verificacin del producto que ste es conforme a las especificaciones de los
requisitos.
211

Gestin de la configuracin
Conceptos
Conceptos clave
clave
Elemento de configuracin del software
Un elemento de configuracin del software (SWCI) es un conjunto de
productos de trabajo documentados que se han producido en los
procesos del ciclo de vida, o que se emplean en los mismos.
Por producto de trabajo se entiende a un elemento tangible que es el resultado
de determinadas actividades o tareas de desarrollo: planes de pruebas,
documentos de requisitos, documentos de diseo, cdigo, manuales de
usuario, etc.
Los elementos de configuracin del software son cualquier parte del desarrollo o del producto
entregable y necesitan poder identificarse, almacenarse, cambiarse, revisarse o mantenerse de
forma independiente.
Estos elementos no comprende slo los productos de software que se entregan al cliente, tambin
incluyen los elementos que son necesarios para crear esos productos.

E1
E1

Categoras

Producto:
Producto: Productos
Productos intermedios
intermedios o
o finales
finales desarrollados
desarrollados durante
durante el
el proyecto.
proyecto.
Software
Software adquirido:
adquirido: Mdulos
Mdulos o
o componentes
componentes adquiridos
adquiridos o
o subcontratados.
subcontratados.
Software
Software suministrado:
suministrado: Software
Software proporcionado
proporcionado por
por el
el cliente
cliente para
para que
que se
se integre
integre en
en el
el sistema.
sistema.
Software
Software de
de pruebas:
pruebas: Software
Software empleado
empleado para
para realizar
realizar las pruebas.
Software
Software de
de apoyo:
apoyo: Software
Software empleado
empleado para
para desarrollar
desarrollar el
el sistema
sistema de software
software (compiladores,
(compiladores, etc.)
etc.)
212

Gestin de la configuracin
Conceptos
Conceptos clave
clave
Peticin de cambio
Las peticiones de cambio documentan la necesidad de modificar un elemento de
configuracin del software.
Las peticiones de cambio deben incluir:
Razn por la que hay que realizar el cambio (deteccin de un fallo,
modificacin de requisitos, etc.)
Elemento de configuracin afectado y lnea base a la que pertenece.
Urgencia del cambio.
Persona que lo solicita e indicacin de si el origen es interno o externo.

213

Gestin de la configuracin
Conceptos
Conceptos clave
clave
Comit de control de la configuracin
Para conseguir que las peticiones de cambio se procesen de forma ordenada,
correcta y a tiempo, el proyecto debe establecer quin o quienes configuran el
comit de control de la configuracin.
En funcin del tamao y caractersticas del proyecto puede ser que lo forme una
sola persona (p. ej. el analista o el gestor del proyecto), o que est formado por
varias: gestor de proyecto, cliente, gestor de calidad, etc.
Las funciones del comit incluyen:
Sopesar las ventajas e inconveniente de la introduccin del cambio (beneficios esperados,
coste de la implementacin)
Evaluar el impacto de la modificacin sobre los parmetros del proyecto (agenda, costes,
riesgos, etc.).
El comit no slo decide si debe realizarse el cambio, tambin determina su prioridad, cundo y
cmo debe llevarse a cabo y cmo deber comprobarse y verificarse su implementacin.

214

Gestin de la configuracin
Conceptos
Conceptos clave
clave
Libreras
Las libreras constituyen los dispositivos de almacenamiento necesarios para
llevar a cabo los cambios y el control histrico de los mismos que requiere la
gestin de la configuracin, de forma que queden guardadas y puedan
recuperarse las diferentes lneas base en cualquiera de sus versiones.
El nmero y tipo de libreras puede variar en funcin de las caractersticas del
proyecto, pero generalmente son 3:

Librera dinmica
Es el entorno de almacenamiento usado y gestionado por el equipo de programacin en el que se
ubican los elementos con los que estn trabajando.
Librera controlada
Es la librera empleada para guardar las lneas base y controlar los cambios que sobre ellas se
realizan. Los elementos se almacenan en esta librera despus de haber sido identificados como
elementos de configuracin asignados a su lnea base, documentados y aceptados por el comit
de gestin de la configuracin.
Librera esttica
Tambin llamada repositorio de software. Guarda las lneas base una vez que han sido validadas y
verificadas para su distribucin y uso final.

215

Gestin de la configuracin
Conceptos
Conceptos clave
clave
Libreras
LIBRERA DINMICA
Tambin llamada Directorio de programacin.
Controlada por el equipo de programacin.

LIBRERA CONTROLADA
Tambin llamado Directorio maestro.
Contiene todas las lneas base del proyecto.

LIBRERA ESTTICA
Tambin llamado Repositorio de software
Comprende las lneas base que finalmente se entregan.
Versin 1.0

Versin 1.1
216

Gestin de la configuracin
Funciones
Funciones clave
clave de
de la
la gestin
gestin de
de la
la configuracin
configuracin

Gestin de la configuracin
del software

Identificacin
Identificacin de
de
la
la configuracin

Control
Control de
de la
la
configuracin
configuracin

Medicin
Medicin del
estado
estado de
de la
la
configuracin
configuracin

Auditoras
Auditoras y
y
revisiones
revisiones

Control
Control de
de las
las
relaciones
relaciones de
interfaz
interfaz

217

Gestin de la configuracin
Funciones
Funciones clave
clave de
de la
la gestin
gestin de
de la
la configuracin
configuracin
Identificacin de la configuracin

Identificacin

Seleccin
Seleccin de
de los
los elementos
elementos de
de configuracin
configuracin yy agrupacin
agrupacin en
en lneas
lneas base.
base. Deben
Deben
considerarse
considerarse productos
productos que
que puedan
puedan disearse,
disearse, desarrollarse,
desarrollarse, probarse
probarse yy
modificarse
modificarse de forma independiente.
Documentos
Documentos
Cdigo
Cdigo
Datos
Datos

Seleccin
Seleccin

Revisin
Revisin
tcnica
tcnica y
y
formal

Lneas base

No
No deben
deben identificarse
identificarse muy pocos, ni tampoco demasiados. Los criterios de
seleccin
seleccin deben
deben ser
ser acordes
acordes con
con las
las caractersticas
caractersticas del
del proyecto.
proyecto.

Nomenclatura y
adquisicin

Actividades

Determinacin de los elementos de configuracin del software y de las lneas


base a las que pertenecen.

Nomenclatura:
Nomenclatura: Cada
Cada elemento
elemento de
de configuracin
configuracin debe
debe nombrarse con un identificador nico. Es
habitual
habitual que el identificador contenga:
contenga:

NOMBRE:
NOMBRE: descriptivo
descriptivo del
del elemento.
elemento.
IDENTIFICADOR
IDENTIFICADOR DE
DE CONFIGURACION: Usado en la gestin interna de la librera.
IDENTIFICADOR
IDENTIFICADOR DE
DE VERSION: Usado para identificar las diferentes
diferentes versiones.
versiones.

Adquisicin:
Adquisicin: Una vez identificado cada elemento, debe incorporarse a su
su respectiva
respectiva librera.

218

Gestin de la configuracin
Funciones
Funciones clave
clave de
de la
la gestin
gestin de
de la
la configuracin
configuracin
Control de la configuracin
Comprende la gestin de las revisiones y de los procesos de aprobacin, para
evitar que se produzcan cambios de forma descontrolada.

Garantiza

Que
Que
Que
Que

para cada cambio se evala y considera el impacto en el proyecto.


slo se implementan los cambios aprobados.
todos los cambios aprobados se implementan.
las lneas base se mantienen controladas y actualizadas.
CLASIFICACIN

Identificacin
Identificacin
del
del cambio
cambio

Comunicacin
formal
formal

Validacin
Validacin
yy evaluacin
evaluacin

Aprobacin
Aprobacin
o
o rechazo
rechazo

Por urgencia
Por Naturaleza (error, mejora, mod. Requisitos)
Por categora de elementos modificados (producto,
Software adquirido, Software suministrado, software
de pruebas o software de apoyo).

Implementacin
Implementacin
EVALUACIN

Tcnico
En los interfaces de configuracin
En la agenda
En el presupuesto

Check-out lnea base


Ejecucin de cambios
Pruebas y verificacin
Aprobacin de la ejecucin
Chech-in lnea base

219

Gestin de la configuracin
Funciones
Funciones clave
clave de
de la
la gestin
gestin de
de la
la configuracin
configuracin
Medicin del estado de la configuracin
Medicin y registro de los cambios, contenidos e histricos de la gestin de la
configuracin

Registra

Versin inicial aprobada de los elementos de la configuracin.


Estado de las peticiones de cambio.
Estado de implantacin de los cambios aprobados.

Esta es la informacin mnima que debera registrarse (Std. IEEE 828-1998).

Auditoras y revisiones
Con menor o mayor rigor, segn se trate de revisiones o auditoras, estos
procesos tambin se deben aplicar sobre la gestin de la configuracin para
garantizar:

Que los elementos de la configuracin se encuentran en el estado que


deberan estar.
Que las actividades, las tareas y los resultados de la gestin de la
configuracin son correctos.
220

Gestin de la configuracin
Funciones
Funciones clave
clave de
de la
la gestin
gestin de
de la
la configuracin
configuracin
Control de las relaciones de interfaz
El desarrollo y mantenimiento de sistemas de software no suele ser autocontenido. Normalmente el software debe relacionarse con hardware y con otro
software. El control de las relaciones de Interfaz contempla y gestiona las
situaciones posibles:
SITUACIONES

IMPLICCIONES DE INTERFAZ
La gestin de la configuracin
debe registrar tambin las
plataformas y componentes
externos, evaluando las posibles
evoluciones y cambios.

El software debe ejecutarse


sobre plataformas operativas
comerciales

El producto de software debe


integrar componentes externos

El desarrollo de partes del


software se subcontrata a un
proveedor externo.

Las gestiones de configuracin del proyecto de


software y del subcontratado deben comunicarse y
gestionar las implicaciones de cambio derivadas de uno
a otro.

Evolucin paralela del hardware


del sistema global

La gestin de la configuracin del sistema global debe


relacionarse con la del proyecto de software por las
implicaciones de cambios que pueden derivarse en sta
de aquella.

221

Juan Palacio
jpalacio@navegapolis.net

http://www.navegapolis.net

Obra y derechos registrados en safecreative.net. Cdigo de obra: 0710040047711


Puede consultar la forma en la que puede emplear y distribuir este trabajo en:
hthttp://www.safecreative.org/work/0710040047711
222

Você também pode gostar