Professional Documents
Culture Documents
COMIT DE REDACCIN
Presidente
Vocales
Ingeniera de Sistemas
c/ Edison, 4
28006 Madrid
Telfono (34-1) 411 50 11
Fax (34-1) 411 47 03
E-mail: monografias@isdefe.es
P.V.P.:
1.000
Ptas.
(IVA incluido)
11
INGENIERA DE SISTEMAS DE SOFTWARE. Gonzalo Len Serrano
de
Ingeniera
de
Sistemas
INGENIERA DE SISTEMAS
DE SOFTWARE
por
Gonzalo Len Serrano
ILUSTRACIN DE PORTADA
Grabado de 1771 que representa una prensa de
madera para acuar monedas.
2
INGENIERA DE SISTEMAS DE SOFTWARE
Isdefe
c/ Edison, 4
28006 Madrid.
Diseo y fotomecnica:
HB&h Direccin de Arte y Edicin
Infografa de portada:
Salvador Vivas
Impresin:
Closas Orcoyen S.L.
ISBN: 84-89338-10-8
Depsito legal: M-1996
Printed in Spain - Impreso en Espaa.
4
INGENIERA DE SISTEMAS DE SOFTWARE
PRLOGO
Esta monografa pretende recoger los aspectos ms importantes
del desarrollo de sistemas de software. Al formar parte de una serie
bajo el epgrafe general de Ingeniera de Sistemas, hemos querido
que el concepto de sistema quedase tambin reflejado en sta.
No hay duda de que un sistema de software es un sistema, pero
tan distinto a otros que no se puedan emplear tcnicas generales de
ingeniera de sistemas? Si bien es cierto que, como tal sistema, un
sistema de software hereda muchos de los aspectos generales de
planificacin del desarrollo que posee cualquier otro tipo de sistema
complejo, las fuentes de su complejidad y las caractersticas especiales
que su desarrollo conlleva, hacen de ellos unos sistemas bastante
especiales.
Por indicar solamente algunas de sus caractersticas ms sobresalientes en la problemtica que nos interesa, los conceptos de
fabricacin, aprovisionamiento y distribucin son claramente diferentes.
La fabricacin, porque es el nico caso en el que el coste de replicacin
es prcticamente nulo; los de aprovisionamiento y distribucin, porque
los mecanismos de acceso y distribucin electrnica de software a
travs de redes de datos implican problemas logsticos y soluciones
muy diferentes a los clsicos en el desarrollo de un sistema.
6
INGENIERA DE SISTEMAS DE SOFTWARE
8
INGENIERA DE SISTEMAS DE SOFTWARE
NDICE GENERAL
1.
2.
13
1.1.
1.2.
1.3.
1.4.
1.5.
Introduccin
El papel de los recursos software en sistemas complejos
Una perspectiva histrica
Enfoques complementarios de los sistemas de software
Caracterizacin de los sistemas de software
1.5.1. Caractersticas relevantes de un sistema de software
1.5.2. La utilidad de un sistema de software
1.5.3. El valor aadido del software
1.6. Ingeniera de sistemas de software
1.7. Resumen
14
15
17
19
24
25
28
30
31
32
35
2.1
36
36
39
40
41
42
45
47
48
49
50
56
58
59
64
67
70
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
10
INGENIERA DE SISTEMAS DE SOFTWARE
3.
TECNOLOGAS DE SOFTWARE
3.1. Introduccin
3.2. Concepto de tecnologa de software
3.3. Panorama de los componentes tecnolgicos
3.3.1. Notaciones
3.3.2. Marco de razonamiento sobre el sistema en desarrollo
3.3.3. Mtodos de desarrollo
3.3.4. Herramientas de soporte: entornos de desarrollo
3.3.5. Directrices de aplicacin industrial
3.3.5.1. Componentes reutilizables
3.3.5.2. Consolidacin del conocimiento previo
3.4. Ejemplos de tecnologas de software
3.4.1. Tecnologas de desarrollo estructurado
3.4.2. Tecnologas orientadas a objetos
3.5. Resumen
4.
5.
73
74
75
81
83
85
87
89
96
97
98
98
99
102
104
110
110
115
117
119
121
123
145
129
134
134
136
138
140
142
5.1. Introduccin
146
5.2. Validacin de sistemas de software
149
5.2.1. Conceptos bsicos
149
5.2.2. Clasificacin de las tcnicas de prueba
152
5.2.3. Gestin de las pruebas
155
5.3. Control de versiones y configuraciones
157
5.3.1. Conceptos bsicos
157
5.3.2. Herramientas para control de versiones y configuraciones 163
5.4. Mtricas
164
5.4.1. Mtricas sobre el producto
165
5.4.2. Mtricas sobre el proceso
168
11
6.
169
169
172
176
180
183
184
187
6.1. Introduccin
6.2. La mejora del proceso de desarrollo del software
6.3. Adopcin de una tecnologa de software
6.3.1. Modelos para tecnologas maduras
6.3.2. Modelos para tecnologas inmaduras
6.3.3. Gestin de riesgos en la adopcin de nuevas tecnologas
6.3.4. La formacin requerida
6.4. Resumen
188
188
189
196
197
200
201
202
REFERENCIAS
205
BIBLIOGRAFA
211
GLOSARIO
215
12
INGENIERA DE SISTEMAS DE SOFTWARE
13
La complejidad
de los sistemas
de software
14
INGENIERA DE SISTEMAS DE SOFTWARE
1.1. Introduccin
Que el software es un elemento bsico en nuestra sociedad
actual como generador de servicios parece un hecho evidente. Que sus
costes de desarrollo (y, en muchos casos, de adquisicin) sean cada
vez ms altos respecto al hardware sobre el que se ejecuta tambin es
evidente aunque nos resistamos a aceptarlo en nuestra prctica cotidiana.
Que un sistema de software envejece sin necesidad de estropearse
(hacindose intil en un contexto dado) es un hecho al que nos hemos
acostumbrado a pesar de ser una gran paradoja en productos sin partes
mecnicas y con un coste de replicacin prcticamente nulo.
Basta echar una ojeada a nuestro alrededor para ver cmo estos
sistemas de software estn teniendo una importancia creciente,
responsabilizndose de los xitos y fracasos de muchos sistemas
basados en ellos y siendo tambin responsables de los xitos y fracasos
de las empresas que los construyen o utilizan.
Este Captulo va a profundizar en el concepto de sistema de software con el fin de entender cmo esos hechos acabados de mencionar
tienen su justificacin. Deseamos que, al final del Captulo, se disponga
de una mejor comprensin del papel que estamos haciendo jugar a los
sistemas de software y del que se deriva su complejidad actual.
Finalizaremos con una introduccin a la idea de ingeniera de
sistemas de software que da ttulo a la monografa. Deseamos aqu
15
La complejidad de los sistemas de software
16
INGENIERA DE SISTEMAS DE SOFTWARE
17
La complejidad de los sistemas de software
18
INGENIERA DE SISTEMAS DE SOFTWARE
La consolidacin (1975-1985).
El control de las actividades de desarrollo debera permitir
gestionar el proceso. Durante esta etapa aparecen mtricas
para estimar a priori el coste o el tamao del sistema; se difunde
el uso de mtodos de desarrollo. Con ello, el programador se
convierte en analista, diseador o gestor. Se vislumbra la idea
de ingeniero (software).
Hacia una ingeniera (1985-1995).
Aceptando una consolidacin de las tecnologas de software,
la mejora viene de la mano de un mejor conocimiento de
los procesos con el fin de incrementar la calidad de los
productos. Aparece una gestin sofisticada del proceso de
desarrollo ligada al control de riesgos y a la madurez de los
procesos.
A lo largo de estas etapas, han existido avances puntuales significativos tanto en la tecnologa empleada como en la propia percepcin
del proceso de desarrollo. En la Figura 1 hemos indicado los hitos ms
importantes de esta evolucin. No pretenda el lector comprenderlos
en este momento; sern descritos posteriormente. S queremos ofrecer
una visin general y hacer ver con ella la relacin existente entre ellos
y su importancia relativa; el progreso hacia la ingeniera de sistemas
de software ha sido acumulativo en los aos cubiertos por las etapas
mencionadas y no se puede entender ningn progreso sin la experiencia
obtenida de xitos y fracasos anteriores.
Analizados globalmente, estos hitos significativos en el desarrollo de la ingeniera de sistemas de software han ido intercalando el
nfasis sobre las tecnologas de desarrollo con el nfasis en la gestin
del proceso. En cada una de estas etapas se consigui un incremento
de la calidad del proceso de desarrollo.
Si inicialmente la esperanza de una mejora de calidad del producto se centraba en el empleo de nuevos lenguajes de programacin,
19
La complejidad de los sistemas de software
20
INGENIERA DE SISTEMAS DE SOFTWARE
A) La infraestructura de ejecucin.
Todo sistema de software requiere un procesador que
interprete o ejecute sus instrucciones y el apoyo de otros
programas que le ofrezcan una serie de servicios tiles
(como los ofrecidos por el sistema operativo).
Estos programas de apoyo o los intrpretes o ejecutores
requeridos constituyen una mquina virtual. Se denomina
virtual porque puede estar constituida por otros sistemas de
software y no necesariamente por una mquina fsica que
para muchos programas de aplicacin est oculta. Denominaremos infraestructura de ejecucin al conjunto de estas
mquinas virtuales.
La mayor parte de los sistemas de software actuales requieren
para su ejecucin de infraestructuras de ejecucin cada vez
ms complejas, incluyendo procesadores especializados,
sistemas operativos con funcionalidades determinadas (como
soporte a la distribucin), muchas veces satisfaciendo normas
internacionales, paquetes de aplicacin necesarios para su
ejecucin (como entornos de ventanas, bases de datos, etc.).
Como ejemplo, un programa que se ejecute utilizando los
servicios proporcionados por el sistema operativo (S.O.) para
la gestin de las operaciones de entrada-salida no tiene por
qu conocer la estructura del ordenador; el sistema operativo,
por el contrario, s lo requiere. En la Figura 2 podemos ver
un caso muy comn en el que un programa de aplicacin
(por ejemplo, uno de anlisis de requisitos de usuario) se
apoya en un paquete de uso horizontal muy extendido (como
una hoja de clculo) que, a su vez, requiere un entorno de
ventanas (como el conocido Windows) que se apoya en
un S.O. (como MS-DOS). Es el S.O. quien interacciona
con los recursos de entrada-salida (en una arquitectura tpica
de un ordenador personal).
21
La complejidad de los sistemas de software
B) El proceso de desarrollo.
No todos los sistemas de software se conciben y desarrollan
de la misma manera. Su desarrollo, desde las primeras ideas
sobre lo que deberan hacer y las restricciones de operacin,
hasta su entrega al usuario, pasan por una serie de fases. A
estas fases, junto con las que siguen una vez entregado el
producto al usuario hasta su retirada del mercado se les
denomina globalmente ciclo de vida.
Existen muchas maneras diferentes de concebir las fases,
las actividades que se realizan en ellas, las tcnicas utilizadas
para cubrir sus objetivos y los criterios por los que consideramos que esa fase ha terminado y debemos comenzar la
siguiente.
Gran parte de la actividad en ingeniera de sistemas de
software ha estado ligada a un mejor conocimiento del
22
INGENIERA DE SISTEMAS DE SOFTWARE
23
La complejidad de los sistemas de software
24
INGENIERA DE SISTEMAS DE SOFTWARE
25
La complejidad de los sistemas de software
1.5.1.
Con el fin de clasificar a los sistemas de software hemos seleccionado un conjunto de caractersticas relevantes de los sistemas de
software complejos. No queremos con ello decir que estas caractersticas sean fundamentales en todos los sistemas de software;
probablemente, para algunos de ellos constituyan un elemento bsico
en su desarrollo y mantenimiento, y para otros no lo sean. Las caractersticas consideradas son las siguientes:
A) Tamao. Que el tamao condiciona el desarrollo de un
sistema es algo que intuitivamente todos podemos suponer.
Ms dificil es acotar el concepto de tamao y caracterizar
en funcin de l los sistemas actuales.
La primera decisin reside en determinar a qu se aplica el
concepto de tamao. Durante mucho tiempo (y an hoy)
este concepto se aplica al cdigo fuente (escrito en un
lenguaje de programacin utilizado por el implementador).
Se han empleado diversas medidas basadas en contar las
lneas de cdigo fuente para estimar costes de desarrollo
(esfuerzo requerido).
El tamao final del sistema de software ha sido tambin
empleado para conocer los requisitos sobre la infraestructura
de ejecucin y/o comunicacin y, por comparacin con otros
sistemas, aspectos de prestaciones en tiempos de ejecucin.
No obstante lo anterior, en el desarrollo de un sistema de
software en el que se hayan empleado generadores de
26
INGENIERA DE SISTEMAS DE SOFTWARE
27
La complejidad de los sistemas de software
28
INGENIERA DE SISTEMAS DE SOFTWARE
1.5.2.
29
La complejidad de los sistemas de software
1)
2)
3)
30
INGENIERA DE SISTEMAS DE SOFTWARE
1.5.3.
31
La complejidad de los sistemas de software
32
INGENIERA DE SISTEMAS DE SOFTWARE
1.7. Resumen
En este primer Captulo hemos pretendido ofrecer una visin
global de lo que es un sistema de software, su clasificacin desde
diversas perspectivas y la idea de sistema de software complejo que
vamos a utilizar en el resto de la monografa.
La complejidad de los sistemas de software hace que, por un
lado, no sea posible desarrollarlos individualmente y, por otra, que se
requieran tecnologas de soporte desde su concepcin hasta su retirada
en el mercado.
33
La complejidad de los sistemas de software
En este contexto, la ingeniera de sistemas de software, enmarcada en la ingeniera de sistemas, pretende ofrecer un marco para
poder comprender el desarrollo y gestin de sistemas de software
complejos.
Estamos asistiendo en estos das a una polmica sobre la
verdadera naturaleza de la ingeniera de sistemas de software y su
consideracin como una disciplina real de ingeniera [3, 4]. En EE.UU.
esta polvareda se ha levantado relacionada con el acuerdo de algn
Estado en no aceptarla como profesin reconocida.
En todo caso, si de lo que se trata es de saber si existe un cuerpo
de doctrina transferible a los ingenieros de software que permita
desarrollar eficiente y controladamente un producto software, debemos
decir que el paso de una construccin artesanal a una ingeniera
predecible y fundamentada se est produciendo. La aparicin de textos
que combinan aspectos pragmticos con fundamentos tericos de
muchas de las prcticas empleadas [5], es un ndice de la evolucin de
esta disciplina. Esta monografa permitir a los lectores hacerse su
propia idea del estado de la misma.
34
INGENIERA DE SISTEMAS DE SOFTWARE
35
Modelos de ciclo
de vida
36
INGENIERA DE SISTEMAS DE SOFTWARE
2.1.1.
El factor humano
37
Modelos de ciclo de vida
38
INGENIERA DE SISTEMAS DE SOFTWARE
ellos fuertemente ligados a las etapas en las que se divida el desarrollo de un determinado sistema y que veremos posteriormente. Bajo
esta idea, cuando la actividad ligada a un perfil culminaba su trabajo
entraba en juego el siguiente (un modelo derivado de la cadena de
montaje en la que se inspiraba el desarrollo software). Era un modelo
basado en la divisin vertical del trabajo.
Los problemas derivados del modelo de desarrollo empleado clsicamente as como la disponibilidad de nuevas tecnologas de desarrollo,
estn haciendo obsoletos algunos de los perfiles convencionales. Esta
evolucin tiende a que cada componente del equipo de trabajo posea
una visin ms amplia del proceso de desarrollo aunque limitada a una
perspectiva concreta sobre el sistema en construccin. Slo con esa
visin global es posible actuar sobre aspectos globales del sistema.
Como ejemplo, un arquitecto software (encargado de determinar
la estructura global del sistema, el uso de componentes reutilizables,
la existencia de interfaces definidas, etc.) debe intervenir desde las
primeras etapas del desarrollo hasta el comienzo de la implementacin
del sistema. En otro ejemplo, una persona encargada de controlar las
diferentes versiones y bibliotecas de mdulos empleados extiende su
actividad sobre toda la duracin del desarrollo con el fin de asegurar la
consistencia entre las decisiones adoptadas.
Esta situacin implica la aparicin de un modelo horizontal de
divisin del trabajo que se superpone parcialmente con el vertical
mencionado anteriormente. A cada componente del equipo de trabajo
se le va a exigir un conocimiento mayor sobre la totalidad del desarrollo
aunque su actividad enfatice aspectos concretos.
Las consecuencias que ello tiene sobre la estructura del equipo
de trabajo son ms amplias de lo que parece a simple vista. Un equipo
humano formado por especialistas con formacin y actividades ms
horizontales, requiere de tcnicas de gestin y de interaccin distintas...
y una formacin diferente.
39
Modelos de ciclo de vida
2.1.2.
La organizacin
40
INGENIERA DE SISTEMAS DE SOFTWARE
41
Modelos de ciclo de vida
42
INGENIERA DE SISTEMAS DE SOFTWARE
Definicin de requisitos.
Diseo.
Implementacin.
Transferencia del producto.
Evolucin.
2.3.1.
Definicin de requisitos
43
Modelos de ciclo de vida
44
INGENIERA DE SISTEMAS DE SOFTWARE
45
Modelos de ciclo de vida
2.3.2.
Diseo
46
INGENIERA DE SISTEMAS DE SOFTWARE
47
Modelos de ciclo de vida
2.3.3.
Implementacin
48
INGENIERA DE SISTEMAS DE SOFTWARE
2.3.4.
49
Modelos de ciclo de vida
2.3.5.
Evolucin
50
INGENIERA DE SISTEMAS DE SOFTWARE
2)
3)
2.3.6.
51
Modelos de ciclo de vida
52
INGENIERA DE SISTEMAS DE SOFTWARE
53
Modelos de ciclo de vida
b)
hitos
PRINCIPALES
REVISIONES
Revisiones de documentos
Documento de diseo
arquitectnico (DDA)
Pruebas de aceptacin
Codificacin
cdigo
aprobacin
DDA
aprobacin
DDD
Revisiones de documentos y
Manual de usuario
Documento de transferencia
SW
Pruebas de sistema
Pruebas de integracin
Pruebas unitarias
Instalacin
TRANSFERENCIA
AL
CLIENTE
Diseo de mdulos
DISEO
DETALLADO Y
PRODUCCIN
aprobacin
DRU
DISEO
ARQUITECTNICO
aprobacin
DRS
Documento de requisitos
software (DRS)
Documento de requisitos de
usuario (DRU)
ENTREGABLES
Revisiones de documentos
Identificacin de requisitos de
usuario
ACTIVIDADES
Revisiones tcnicas
PRINCIPALES
ASPECTOS
DEFINICIN DE
REQUISITOS
SOFTWARE
DEFINICIN DE
REQUISITOS
DE USUARIO
FASES
54
INGENIERA DE SISTEMAS DE SOFTWARE
55
Modelos de ciclo de vida
56
INGENIERA DE SISTEMAS DE SOFTWARE
57
Modelos de ciclo de vida
58
INGENIERA DE SISTEMAS DE SOFTWARE
2.4.1.
59
Modelos de ciclo de vida
2.4.2.
60
INGENIERA DE SISTEMAS DE SOFTWARE
61
Modelos de ciclo de vida
62
INGENIERA DE SISTEMAS DE SOFTWARE
63
Modelos de ciclo de vida
b)
c)
d)
64
INGENIERA DE SISTEMAS DE SOFTWARE
65
Modelos de ciclo de vida
66
INGENIERA DE SISTEMAS DE SOFTWARE
b)
c)
b)
67
Modelos de ciclo de vida
c)
d)
68
INGENIERA DE SISTEMAS DE SOFTWARE
69
Modelos de ciclo de vida
La idea clave detrs del modelo es asegurar que los aspectos menos
conocidos o ms crticos sean realizados antes, en la suposicin de que
de poco sirve completar partes poco crticas si stas pueden verse
modificadas o invalidadas por las partes crticas. El uso de prototipos es
fuertemente promovido (aunque basado en prototipos desechables). En
este sentido, el mismo Boehm indica que la caracterstica esencial es la
orientacin hacia la identificacin y resolucin de riesgos [9].
Los primeros ciclos estn pensados para asegurar una correcta
comprensin del sistema y de sus requisitos, relegando cualquier
implementacin al momento en el que todos los factores de riesgo
hayan sido eliminados. En el Captulo 5 volveremos sobre la gestin
de riesgos dentro de las tcnicas de gestin.
No ha sido fcil utilizar en la prctica industrial este modelo. Las
dificultades estriban en las implicaciones resultantes de una gestin
del desarrollo muy diferente de la convencional y no slo en la
disponibilidad de tecnologas de software asociadas. Por otro lado, fue
pensado para proyectos muy grandes y no es evidente su utilidad para
sistemas pequeos dados los grandes recursos en gestin que requiere.
En la Figura 13 podemos ver un despliegue del modelo en espiral
en el que tres secuencias de desarrollo se solapan en el tiempo.
Comenzando con la parte ms arriesgada, los diseadores relegan
hasta los siguientes ciclos las partes con riesgo moderado o bajo.
Podemos observar tambin cmo en ciertos momentos es posible crear
algn prototipo heterogneo que incorpore elementos con diferentes
niveles de abstraccin.
Hemos representado en la Figura 13 dos posibles puntos de
interaccin con los usuarios. El primero implica la ejecucin de un
modelo parcial del sistema referente a las especificaciones de la parte
de menor riesgo del sistema de software; el usuario podra conocer
hasta que punto sus requisitos estn contemplados en lo realizado
hasta el momento. El segundo es un prototipo heterogneo en el que
70
INGENIERA DE SISTEMAS DE SOFTWARE
2.7. Resumen
Los modelos de ciclo de vida analizados en este Captulo
suponen un marco de referencia fundamental para gestionar y controlar
el proceso de desarrollo y evolucin.
71
Modelos de ciclo de vida
72
INGENIERA DE SISTEMAS DE SOFTWARE
73
Tecnologas
de software
74
INGENIERA DE SISTEMAS DE SOFTWARE
3.1. Introduccin
Hemos dedicado los dos Captulos anteriores a ofrecer un marco
general del desarrollo de sistemas de software; es hora de que nos
adentremos en las tcnicas que nos permiten su desarrollo con una
calidad adecuada.
Ni el tipo de sistema de software a desarrollar (ver Captulo 1) ni
los modelos de ciclo de vida (ver Captulo 2) son tan similares como
para permitir desarrollar cualquier sistema de software, empleando el
mismo tipo de tecnologa. Una de las principales funciones del ingeniero
de software es la de seleccionar las tecnologas que mejor se adecan
al producto a realizar y al proceso de desarrollo utilizado.
En este Captulo nos ser imposible describir en detalle las
decenas de tecnologas (lenguajes, herramientas, mtodos, etc.) que
se han desarrollado; ni siquiera podremos mencionar todas ellas. Las
limitaciones de espacio y, ms importante, la necesidad de presentar
grandes tendencias como nica forma de no perderse en los detalles,
nos aconseja seguir un esquema matricial; esto es:
1)
2)
75
Tecnologas de software
76
INGENIERA DE SISTEMAS DE SOFTWARE
77
Tecnologas de software
78
INGENIERA DE SISTEMAS DE SOFTWARE
requisitos al diseo y de ste a la implementacin, aprovechando las notaciones y herramientas disponibles y sabiendo
cmo dividir el trabajo entre los componentes del equipo
humano de desarrollo.
Los mtodos proporcionan una disciplina en el proceso de
refinamiento que gua al diseador a lo largo de varias fases,
desde la descripcin de los requisitos en lenguaje natural
hasta su completa especificacin. Posteriormente, a esa
especificacin se le aaden las decisiones de diseo
continuando el proceso de refinamiento hasta poder
implementar el sistema en un lenguaje convencional.
En este sentido, los mtodos no son independientes del
modelo de ciclo de vida elegido ya que tienen que soportar
el desarrollo a lo largo de algunas de sus fases y proporcionar
los heursticos de refinamiento asociados.
E) Directrices de aplicacin industrial. Las peculiaridades
de un dominio de aplicacin quedan reflejadas en
conjuntos de soluciones probadas y difundidas entre la
comunidad de diseadores para aspectos parciales de
los sistemas requeridos. El conocimiento del dominio de
aplicacin se concreta en conceptos, elementos, interconexiones y datos que solucionan aspectos concretos.
Estas soluciones toman la forma de mdulos ampliamente
utilizados y, por tanto, reutilizables, patrones de diseo
de gran aceptacin e incluso formas de utilizar los
lenguajes y herramientas adaptados al dominio de
aplicacin considerado.
En muchos dominios de aplicacin se han consolidado
bibliotecas de componentes (por ejemplo, funciones
matemticas o para realizar interfaces grficas)
reutilizables que simplifican y reducen el tiempo de
79
Tecnologas de software
80
INGENIERA DE SISTEMAS DE SOFTWARE
81
Tecnologas de software
82
INGENIERA DE SISTEMAS DE SOFTWARE
83
Tecnologas de software
3.3.1.
Notaciones
84
INGENIERA DE SISTEMAS DE SOFTWARE
85
Tecnologas de software
3.3.2.
86
INGENIERA DE SISTEMAS DE SOFTWARE
87
Tecnologas de software
3.3.3.
Mtodos de desarrollo
88
INGENIERA DE SISTEMAS DE SOFTWARE
2)
3)
4)
89
Tecnologas de software
3.3.4.
90
INGENIERA DE SISTEMAS DE SOFTWARE
91
Tecnologas de software
92
INGENIERA DE SISTEMAS DE SOFTWARE
gracin hablamos de integracin conceptual cuando las herramientas estn aisladas pero juegan un papel perfectamente definido
dentro del soporte a un mtodo concreto. No olvidemos que,
generalmente, un sistema CASE soporta un conjunto de mtodos
concretos:
A) Integracin visual o de presentacin. La integracin
visual se refiere al hecho de que las herramientas se
presentan al usuario con una interfaz nica desde la que
puede acceder a cualquiera de ellas. Tpicamente se
apoyan en entornos de ventanas normalizados (de
facto) con una apariencia comn (botones, barras de
herramientas, formas de navegar por la informacin, etc.).
Estos entornos de ventanas permiten gestionar la creacin,
movimiento, borrado, e intercambio de informacin entre
ventanas.
A partir de estos entornos de ventanas se disea la interfaz
grfica del entorno de desarrollo. Desde la interfaz grfica
se puede llamar a todas las herramientas del entorno. Existen
herramientas software que facilitan la creacin casi
automtica de estas interfaces grficas.
Tngase en cuenta que por disponer de integracin visual
no tiene por qu existir ninguna relacin entre las
herramientas a las que se llame. La interfaz grfica slo
conoce el nombre y algunos parmetros de configuracin
de la herramienta pero no su funcin ni si es posible usarla
en ese estadio del desarrollo.
B) Integracin de datos. Por integracin de datos se
entiende la capacidad de las herramientas para acceder
a una estructura de datos comn. Los datos comunes
contienen la informacin asociada al sistema en desarrollo. Los datos se albergan en un elemento denominado
93
Tecnologas de software
94
INGENIERA DE SISTEMAS DE SOFTWARE
95
Tecnologas de software
96
INGENIERA DE SISTEMAS DE SOFTWARE
3.3.5.
El ltimo de los componentes tecnolgicos mencionados anteriormente que cada vez est tomando ms importancia es el
denominado directrices de aplicacin industrial. Este componente
aporta al desarrollo de un sistema de software el conocimiento concreto
sobre el dominio de aplicacin. Con l es posible emplear soluciones,
reutilizar componentes, y aprovechar la experiencia que, sobre ese
dominio de aplicacin, ha acumulado la organizacin y los individuos
implicados en su desarrollo.
Todos los componentes anteriores estn basados en el uso de
elementos relativamente genricos; pueden emplearse en el diseo
97
Tecnologas de software
de muchos tipos distintos de sistemas de software. Lo que ahora buscamos son soluciones particulares en un dominio concreto.
Desde esta ptica, es responsabilidad de los desarrolladores,
a partir del conocimiento del problema a resolver, emplear de la mejor
manera posible los componentes de la tecnologa de software seleccionada adaptndolos a las necesidades de nuestro problema
concreto.
La experiencia que una empresa posee en el desarrollo de
sistemas se consolida en un conocimiento estructurado en directrices
o guas de aplicacin industrial. Este conocimiento y experiencia se
posibilita an ms cuando se integra en los mtodos, notaciones,
herramientas y formas de razonar sobre el sistema, es decir,
complementa y da un sentido prctico al resto de los componentes de
una tecnologa de software. Esta es una de las razones que justifican
el tiempo necesario para que una tecnologa de software madure.
En resumen, este componente est ligado a dos aspectos
bsicos: aprovechar componentes previamente diseados y tiles para
una aplicacin concreta (ligado a la reusabilidad) y aprender de la
experiencia anterior. Seguidamente, veremos cmo se aplican.
3.3.5.1.
Componentes reutilizables
98
INGENIERA DE SISTEMAS DE SOFTWARE
3.3.5.2.
99
Tecnologas de software
3.4.1.
100
INGENIERA DE SISTEMAS DE SOFTWARE
101
Tecnologas de software
102
INGENIERA DE SISTEMAS DE SOFTWARE
3.4.2.
103
Tecnologas de software
104
INGENIERA DE SISTEMAS DE SOFTWARE
3.5. Resumen
El anlisis efectuado en este Captulo por cada uno de los
componentes de una tecnologa de software nos ha permitido obtener
una idea global del estado en el que se encuentra cada una de ellas.
Estos componentes, obviamente, no son independientes. La situacin
puede describirse de la siguiente manera:
A) Las notaciones empleadas comnmente (lenguajes de especificacin, diseo, codificacin, prueba, etc.) no permiten
describir el sistema de manera progresiva a lo largo del ciclo
de vida. En la prctica, es necesario combinar varias de
105
Tecnologas de software
106
INGENIERA DE SISTEMAS DE SOFTWARE
107
Tecnologas de software
108
INGENIERA DE SISTEMAS DE SOFTWARE
109
Tecnologas
para desarrollo
de sistemas
de tiempo real
110
INGENIERA DE SISTEMAS DE SOFTWARE
4.1. Introduccin
Aunque a lo largo del Captulo 3 hemos presentado diversas
tecnologas aplicables a diferentes tipos de sistemas de software,
queremos en este Captulo dedicar especial atencin a los sistemas
de tiempo real. Ello nos servir tambin para entender la relacin entre
los diferentes componentes de una tecnologa de software y as poder
profundizar en alguna concreta.
Los Sistemas de Tiempo Real estn teniendo una importancia
creciente utilizndose en muchos campos de la actividad humana y
constituyendo uno de los elementos bsicos para el control de
actividades crticas [17]. Esta situacin ha hecho que muchos de los
desarrollos de nuevas tecnologas de software tengan como objetivo
facilitar el desarrollo de Sistemas de Tiempo Real.
Revisaremos en este Captulo la problemtica general de su
diseo, las caractersticas generales de las tcnicas que se han ideado
para su desarrollo y la posible evolucin de las mismas. Siendo conscientes de la necesaria brevedad del Captulo, animamos al lector
interesado a profundizar en estas tcnicas a partir de las referencias
contenidas en el presente Captulo.
4.1.1.
Definiciones bsicas
111
Tecnologas para desarrollo de sistemas de tiempo real
minados. Como consecuencia, su ejecucin debe satisfacer restricciones temporales cuyo incumplimiento supone el funcionamiento
incorrecto del sistema.
En otras palabras, cuando se recibe algn evento (mensaje o
dato) desde el exterior del sistema (por ejemplo, desde una lnea de
comunicacin) o se lee algn valor de un dispositivo externo (por
ejemplo, un sensor de un sistema fsico), el STR debe reaccionar
ejecutando algunas acciones en un intervalo de tiempo predefinido. La
correccin, por tanto, de un STR no depende slo del valor de los
datos de salida sino tambin del instante en el que se producen.
Si estas restricciones no se satisfacen, sus resultados empiezan
a perder validez para el usuario o se llega incluso a consecuencias
catastrficas en el sistema sobre el que se pretende actuar.
Un campo clsico de aplicacin de los Sistemas de Tiempo Real
es el de los sistemas de control. Su importancia justifica que les
dediquemos especial atencin en este Captulo. No obstante, muchos
sistemas de tiempo real no pertenecen a los denominados sistemas de
control. Hay otro gran grupo de STR cuya misin es monitorizar un sistema
fsico externo (por ejemplo, capturando datos de l como ocurre en los
sistemas de adquisicin de datos). En muchos casos, nos encontramos
con sistemas de tiempo real hbridos en los que se monitoriza y controla
un sistema fsico externo.
El objetivo de un Sistema de Control es hacer que la evolucin
dinmica de un sistema fsico externo (sistema controlado) evolucione
segn nuestros deseos. El sistema de control se considera de tiempo
real en el sentido de que la actuacin sobre el sistema controlado debe
efectuarse dentro de restricciones temporales estrictas.
La actuacin del STR sobre el sistema controlado se efecta
leyendo datos de algunas magnitudes fsicas del mismo y generando a
partir de ellas seales de actuacin que modifican el comportamiento
112
INGENIERA DE SISTEMAS DE SOFTWARE
del sistema controlado. En funcin de estas seales, el sistema controlado evoluciona con lo que las nuevas lecturas que haga el STR sern
diferentes haciendo que el sistema de control acte de nuevo sobre el
sistema controlado repitindose el ciclo.
El ciclo de lectura de seales, clculo y actuacin se repite cclicamente. El comportamiento del sistema controlado evolucionar segn
su propia dinmica y de la actuacin del STR. Es importante tener en
cuenta que no basta repetir el ciclo mencionado: debe repetirse en
plazos dependientes de la dinmica del sistema; de otra forma, no se
podra garantizar que el sistema evolucione segn nuestros deseos.
La Figura 21 representa la forma genrica de un Sistema de
Tiempo Real en el que podemos ver cmo las salidas (en funcin del
tiempo) son funciones de las entradas (eventos externos recibidos en
un instante anterior) y salidas (generadas tambin en otro instante anterior). En la figura se ha representado tambin un caso concreto de STR:
un Sistema de Control. Obsrvese la existencia del sistema controlado
que es el motivo de la existencia del sistema de control de tiempo real.
En la Figura 21 podemos ver cmo el sistema de control obtiene
del sistema controlado unos datos de monitorizacin y algunas variables
empleadas para el control y, posiblemente, informacin del operador.
Con ello, elabora las seales de actuacin y, eventualmente, otros datos
de salida para poder representar la evolucin dinmica.
Un ejemplo tpico de un sistema de control es un controlador remoto
de la temperatura de un horno de fundicin de aceros especiales que
acta en funcin de la temperatura del mismo. El control de la temperatura
debe ser muy estricto no slo en los valores permitidos sino en los tiempos
en los que esta temperatura debe mantenerse dado que, en caso
contrario, se alteraran las propiedades del acero resultante.
El sistema de control (controlador) puede leer los sensores de
temperatura del horno cada cierto tiempo. ste, en funcin de los valores
113
Tecnologas para desarrollo de sistemas de tiempo real
114
INGENIERA DE SISTEMAS DE SOFTWARE
115
Tecnologas para desarrollo de sistemas de tiempo real
4.1.2.
Restricciones temporales
116
INGENIERA DE SISTEMAS DE SOFTWARE
2)
3)
117
Tecnologas para desarrollo de sistemas de tiempo real
ciones y puede que con ello, sea ms aceptado por el usuario final. En
un STR es necesario asegurar el cumplimiento de todos los plazos
siempre y no casi siempre. Asegurar que estos plazos se cumplen
puede llevar a sacrificar prestaciones globales.
En algunos sistemas de software se suelen determinar las
prestaciones requeridas en base a estadsticas del tiempo de respuesta
de determinadas actividades (por trmino medio, las actividades
requerirn un determinado tiempo de ejecucin por debajo de un cierto
umbral). Sin embargo, en un STR lo importante es que se cumplan las
restricciones temporales para todas las actividades y no slo
determinados valores estadsticos.
Como ejemplo, un programa de clculo numrico que para la
resolucin de sistemas de ecuaciones lineales necesite realizar
inversiones de matrices de 1.000 x 1.000 nmeros complejos, puede
que requiera los menores tiempos de ejecucin posibles para que pueda
abrirse paso en el mercado; para ello, puede ser necesario disponer
de algoritmos especiales para tratamiento de matrices u obligar al
usuario a ejecutarlo sobre un supercomputador. Pero la validez de los
datos de salida (la solucin del sistema) no depende del instante en el
que se producen ni por ello pierden validez.
4.1.3.
Evolucin dinmica
118
INGENIERA DE SISTEMAS DE SOFTWARE
119
Tecnologas para desarrollo de sistemas de tiempo real
120
INGENIERA DE SISTEMAS DE SOFTWARE
A este problema se le conoce generalmente como de explosin de estados y ha motivado la aparicin de tcnicas de
manejo de diagramas de estado jerrquicos (en varios
niveles).
C) La planificacin de los recursos del sistema. El uso de
la capacidad de procesamiento disponible (una o varias
CPUs) debe repartirse entre todas las actividades que
intervienen. Esta distribucin deber asegurar el
cumplimiento de las restricciones temporales establecidas.
Este problema conlleva la necesidad de determinar cundo
una actividad debe comenzar o reanudar su ejecucin y cul
es el orden entre todas ellas. Si es posible encontrar una
ordenacin que respete los requisitos temporales, decimos
que el sistema es planificable.
D) La prueba del sistema. Probar que un STR satisface sus
requisitos temporales es algo que se hace clsicamente
actuando sobre el cdigo. Es en ese momento en el que
podemos asegurar que sobre una plataforma de ejecucin
concreta (hardware y software), la ejecucin y planificacin
de las actividades se realiza cumpliendo los requisitos
temporales establecidos en la especificacin.
Desgraciadamente, las tcnicas de prueba habituales obligan
a incluir cdigo adicional al sistema que se va a probar
afectando a los tiempos de ejecucin reales y, por tanto, a
la validacin del sistema. Adems, las tecnologas de
software convencionales no permiten trasladar esta prueba
a las fases iniciales.
E) Adecuacin de la infraestructura de ejecucin. La
ejecucin de cualquier sistema de software requiere de una
plataforma de ejecucin (recurdese el Captulo 1). Para
121
Tecnologas para desarrollo de sistemas de tiempo real
122
INGENIERA DE SISTEMAS DE SOFTWARE
123
Tecnologas para desarrollo de sistemas de tiempo real
4.3.1.
124
INGENIERA DE SISTEMAS DE SOFTWARE
125
Tecnologas para desarrollo de sistemas de tiempo real
126
INGENIERA DE SISTEMAS DE SOFTWARE
127
Tecnologas para desarrollo de sistemas de tiempo real
128
INGENIERA DE SISTEMAS DE SOFTWARE
2)
3)
4)
5)
6)
7)
129
Tecnologas para desarrollo de sistemas de tiempo real
4.3.2.
Notacin SA/RT.
La Figura 27 describe los elementos bsicos de una
extensin de las notaciones clsicas de anlisis estructurado
adaptada a STR conocida como SA/RT.
La figura describe uno de los primeros niveles de descripcin
del modelo lgico de un STR (en una situacin real no
apareceran todos los elementos grficos representados en
el mismo nivel; las interfaces con el exterior slo aparecen
en el diagrama de contexto) en el que podemos distinguir
los siguientes elementos grficos:
a) Flujos continuos y discretos. En los STR es necesario
representar flujos de informacin discretos en los que la
informacin slo est presente en un momento (por ejemplo,
un mensaje enviado desde una entidad a otra) y flujos
130
INGENIERA DE SISTEMAS DE SOFTWARE
131
Tecnologas para desarrollo de sistemas de tiempo real
132
INGENIERA DE SISTEMAS DE SOFTWARE
Notacin Statemate.
Ya hemos mencionado que Statemate emplea tres
notaciones inter-relacionadas: diagramas de actividad,
diagramas de mdulos y diagramas de estado extendidos.
La Figura 28 representa un diagrama de actividad y un diagrama de estados asociado muy sencillo correspondiente a un
modelo de un cajero automtico. En ella podemos ver la estructura. Como vemos, existen dos grandes estados: conectado y
desconectado. Cuando est en estado conectado puede estar
en espera o en servicio (uso de la estructura jerrquica entre
estados) y as contina la descripcin a otro nivel.
133
Tecnologas para desarrollo de sistemas de tiempo real
134
INGENIERA DE SISTEMAS DE SOFTWARE
4.3.3.
4.3.3.1.
Con independencia de la necesidad de razonar sobre la correccin de las transformaciones de datos como en cualquier otro tipo de
sistema de software, lo que es especficamente propio de los sistemas
de tiempo real es el razonamiento temporal.
135
Tecnologas para desarrollo de sistemas de tiempo real
2)
3)
136
INGENIERA DE SISTEMAS DE SOFTWARE
4.3.3.2.
137
Tecnologas para desarrollo de sistemas de tiempo real
138
INGENIERA DE SISTEMAS DE SOFTWARE
4.3.4.
b)
139
Tecnologas para desarrollo de sistemas de tiempo real
c)
d)
2)
3)
4)
140
INGENIERA DE SISTEMAS DE SOFTWARE
4.3.5.
Directrices industriales
141
Tecnologas para desarrollo de sistemas de tiempo real
Algoritmos de planificacin. Existe mucha experiencia acumulada y bien documentada sobre los tipos de planificacin
de procesos ms adecuado a cada tipo de sistema de tiempo
real.
2)
142
INGENIERA DE SISTEMAS DE SOFTWARE
3)
Arquitecturas de STR concretos. Al nivel de diseo arquitectnico se han propuesto estructuras que la experiencia dicta
como las ms adecuadas con el fn de reutilizarlos en diseos
posteriores. An as, los conceptos de reusabilidad no se
aplican fcilmente a STR y sigue siendo una lnea de
investigacin abierta.
4.4. Resumen
Este Captulo se ha centrado en las tecnologas de software
que nos permiten el desarrollo de sistemas de tiempo real. En l hemos
pretendido enfocar la atencin en los aspectos especficos de estos
sistemas y cmo influyen en el desarrollo de tecnologas de software
especficas.
A lo largo del Captulo hemos utilizado los requisitos temporales
como elemento motriz de todos los aspectos planteados: su descripcin,
anlisis, relacin con aspectos de procesamiento de informacin, etc.
No es posible condensar en un Captulo todas las tecnologas
existentes para STR y hemos preferido apoyarnos en dos de ellas
destacando dos ideas fundamentales:
1)
2)
143
Tecnologas para desarrollo de sistemas de tiempo real
144
INGENIERA DE SISTEMAS DE SOFTWARE
145
5
Gestin del
desarrollo
del software
146
INGENIERA DE SISTEMAS DE SOFTWARE
5.1. Introduccin
Una de las consecuencias directas del incremento de complejidad
de los sistemas de software (recurdese el Captulo 1) es que su tamao
hace prcticamente inabordable su desarrollo por una persona o incluso
por un grupo reducido de stas. Derivada de esta misma complejidad,
ningn componente del equipo de trabajo puede dominar todos los
detalles implicados en el desarrollo siendo la causa de la especializacin
del equipo humano con diferentes perfiles. Esta especializacin ha
estado histricamente ligada a la tecnologa y al modelo de ciclo de
vida con el que se desarrollaba el producto.
La utilizacin de un modelo de ciclo de vida (cualquiera de los
descritos en el Captulo 2) supone que el desarrollo del producto pasa
por una serie de fases en las que se realizan unas actividades, se
generan unos documentos y se requiere un tiempo y unos recursos
para su realizacin. La calidad del producto final depender de cmo
se efecten esas actividades.
Pues bien, el objetivo de la gestin del desarrollo de un producto
de software consiste en la utilizacin de la forma ms eficaz posible de
los recursos humanos y materiales asignados para conseguir el
producto en los plazos temporales y con la calidad adecuada. Debemos
gestionar, por tanto, tanto el producto como el proceso.
Por gestin del producto nos referimos a los procedimientos
necesarios para convertir unas necesidades expresadas informalmente
147
Gestin del desarrollo del software
148
INGENIERA DE SISTEMAS DE SOFTWARE
149
Gestin del desarrollo del software
5.2.1.
Conceptos bsicos
150
INGENIERA DE SISTEMAS DE SOFTWARE
151
Gestin del desarrollo del software
152
INGENIERA DE SISTEMAS DE SOFTWARE
5.2.2.
153
Gestin del desarrollo del software
Funcional.
Pretende conocer si el cdigo satisface la funcionalidad
requerida sin preocuparse de cmo lo hace. A esta tcnica
se la suele conocer como de caja negra porque no le
preocupa cmo el mdulo realiza su funcin sino comprobar
que la relacin entre entradas y salidas es la deseada.
Para este tipo de pruebas se parte de la identificacin de las
funciones requeridas y su asociacin a los mdulos del
sistema que se supone que las implementan. Seguidamente,
se generan los datos de prueba que comprobarn si estas
funciones son realmente realizadas por el software. Esta
generacin de datos de prueba puede hacerse ayudada por
herramientas de software.
El problema bsico ligado a esta tcnica estriba en la dificultad
de asociar las funciones incluidas en un mdulo a los requisitos
de usuario, dado que esa relacin se suele perder en la fase
de diseo. En este sentido, una de las ventajas de las tcnicas
de anlisis y diseo orientado a objetos con respecto a las
estructuradas reside en que en las primeras esa relacin se
mantiene mejor hasta la fase de implementacin.
El segundo de los problemas es la dificultad en seleccionar
un conjunto de casos de prueba que sean representativos y
154
INGENIERA DE SISTEMAS DE SOFTWARE
Estructural.
Se basa en explorar el cdigo del programa para conocer si
realiza correctamente las especificaciones del diseo
detallado. A esta tcnica se la conoce como de caja
blanca.
Explorar el cdigo completo de un sistema no es sencillo en
programas reales ya que las posibles combinaciones de
valores con la estructura del programa impiden disponer de
un conjunto de pruebas manejable. Al menos se debera
asegurar que:
Todas las sentencias del programa se ejecutan al menos
una vez durante alguna de las pruebas.
Todas las bifurcaciones del programa se ejecutan al menos
una vez.
Todos los fragmentos del programa que finalicen en una
transferencia de control a otra parte del programa son ejecutadas al menos una vez.
Aunque cumplir estas condiciones no implica que se ha
probado todo el cdigo, s que permite incrementar la
confianza en el diseo efectuado. El grado de cobertura mide
el porcentaje del cdigo probado respecto del total.
155
Gestin del desarrollo del software
2)
5.2.3.
156
INGENIERA DE SISTEMAS DE SOFTWARE
157
Gestin del desarrollo del software
5.3.1.
Conceptos bsicos
158
INGENIERA DE SISTEMAS DE SOFTWARE
b)
c)
d)
e)
f)
manual de instalacin,
g)
h)
i)
159
Gestin del desarrollo del software
b)
Documentacin de diseo.
c)
d)
e)
160
INGENIERA DE SISTEMAS DE SOFTWARE
161
Gestin del desarrollo del software
162
INGENIERA DE SISTEMAS DE SOFTWARE
163
Gestin del desarrollo del software
5.3.2.
2)
164
INGENIERA DE SISTEMAS DE SOFTWARE
5.4. Mtricas
El proceso de planificacin del desarrollo de cualquier sistema
debe hacerse partiendo de una estimacin del trabajo a realizar.
Slo a partir de ello es factible conocer los recursos necesarios y el
tiempo necesario para su realizacin.
Una mtrica es una medida efectuada sobre algn aspecto
del sistema en desarrollo o del proceso empleado que permite,
165
Gestin del desarrollo del software
5.4.1.
166
INGENIERA DE SISTEMAS DE SOFTWARE
167
Gestin del desarrollo del software
C) Robustez.
Por robustez de un programa se entiende la ausencia de
fallos en su ejecucin con diferentes datos de entrada
durante intervalos de tiempo predeterminados.
La robustez de un programa est ligada a la aparicin de
problemas durante su ejecucin. Generalmente, el nmero
168
INGENIERA DE SISTEMAS DE SOFTWARE
5.4.2.
Las mtricas mencionadas en la seccin anterior estaban orientadas a conocer la complejidad del producto (con algn valor indirecto
como el tamao) para poder estimar los recursos necesarios para su
realizacin. Hemos mencionado tambin que, segn se vayan acumulando datos y se analicen estadsticamente, las estimaciones sern cada
vez mejores. Esto nos servir para planificar mejor futuros desarrollos.
Existen otros tipos de datos que se pueden tomar durante el desarrollo
de un producto de software y que no estn ligados al producto sino a los
procesos implicados. El anlisis de cmo estos procesos se realizan a partir
de medidas tomadas en el desarrollo es la base para su ulterior mejora.
Algunos de los elementos a medir son:
A) Distribucin del esfuerzo en cada una de las fases con objeto
de poder estimar los recursos necesarios. Obsrvese que
esta medida es complementaria a las de tamao mencionadas
169
Gestin del desarrollo del software
5.5.1.
b)
170
INGENIERA DE SISTEMAS DE SOFTWARE
171
Gestin del desarrollo del software
Experiencias de productividad (lneas de cdigo documentadas por persona y da) extradas de proyectos
anteriores de similar complejidad.
b)
c)
d)
e)
172
INGENIERA DE SISTEMAS DE SOFTWARE
5.5.2.
Gestin de riesgos
173
Gestin del desarrollo del software
174
INGENIERA DE SISTEMAS DE SOFTWARE
1)
2)
175
Gestin del desarrollo del software
B) Resolucin de riesgos.
Las actividades que genricamente hemos denominado de
anlisis de riesgos nos permiten conocer, cuantificar y
priorizar los posibles riesgos. Eso ha sido til para mejorar
el proceso de planificacin temporal y la asignacin de
recursos. No obstante, el desarrollo de un proyecto es un
proceso dinmico en el que la planificacin inicial debe
contrastarse continuamente con el desarrollo real.
176
INGENIERA DE SISTEMAS DE SOFTWARE
2)
5.5.3.
177
Gestin del desarrollo del software
178
INGENIERA DE SISTEMAS DE SOFTWARE
179
Gestin del desarrollo del software
Seleccin del equipo humano en funcin no slo de los conocimientos tcnicos requeridos sino de su capacidad para
formar un equipo conjuntado durante el desarrollo del
proyecto.
b)
c)
d)
e)
180
INGENIERA DE SISTEMAS DE SOFTWARE
181
Gestin del desarrollo del software
182
INGENIERA DE SISTEMAS DE SOFTWARE
183
Gestin del desarrollo del software
184
INGENIERA DE SISTEMAS DE SOFTWARE
5.8. Resumen
Este Captulo concentra los aspectos de gestin del desarrollo
de software de forma complementaria a los aspectos tecnolgicos
descritos en los Captulos anteriores (3 y 4).
Los aspectos de gestin estn fundamentalmente ligados a los
procesos necesarios para el desarrollo de cualquier sistema de software
dado un modelo de ciclo de vida en una organizacin determinada. Lo
que con ello se busca, por tanto, es disponer de unos procedimientos
asentados en la experiencia y adaptados al tipo de organizacin, tamao
del proyecto y tipo de sistema que permitan controlar el desarrollo por
un grupo de trabajo.
A lo largo de este Captulo se han presentado diversas tcnicas
empleadas para la gestin del desarrollo cuya importancia debe evaluarse
de forma global. Individualmente, afectan a aspectos muy concretos, pero
es su estrecha relacin la que permite controlar el proceso de desarrollo.
185
Gestin del desarrollo del software
186
INGENIERA DE SISTEMAS DE SOFTWARE
187
La mejora
del proceso
y la adopcin de
nuevas tecnologas
de software
188
INGENIERA DE SISTEMAS DE SOFTWARE
6.1. Introduccin
La mayor parte de los sistemas de software no cubren las
expectativas planteadas, no satisfacen totalmente los requisitos de los
usuarios, necesitan mucho ms tiempo para finalizar su desarrollo que
lo planeado inicialmente y su coste es claramente superior.
Esta situacin se deriva de dos grupos fundamentales de problemas:
1)
2)
189
La mejora del proceso y la adopcin de nuevas tecnologas de software
190
INGENIERA DE SISTEMAS DE SOFTWARE
191
La mejora del proceso y la adopcin de nuevas tecnologas de software
1)
2)
192
INGENIERA DE SISTEMAS DE SOFTWARE
2)
193
La mejora del proceso y la adopcin de nuevas tecnologas de software
3)
El paso desde uno de los niveles al siguiente se consigue mediante la incorporacin de nuevos procesos (o mejora de los preexistentes)
ligados a algunas reas consideradas clave. La Figura 42 indica las
reas clave que deben ser alcanzadas en cada uno de los niveles para
poder pasar al siguiente. Obviamente, cada nivel implica la aceptacin
de los procesos empleados en los niveles anteriores.
Si fijamos la atencin en el nivel 2, vemos que los aspectos que
aparecen han sido mencionados en el Captulo 5 como parte de la
gestin del proyecto. La existencia de niveles superiores indica, sin
embargo, que con ello no es suficiente.
Estos movimientos son lentos. De algunas experiencias
publicadas podemos decir que pasar del nivel 1 al 3 puede requerir
entre tres y cuatro aos. Lo importante, detrs del establecimiento de
un programa de mejora del desarrollo de software no es conocer el
nivel de la organizacin de forma aislada, o alcanzar uno predeterminado como un objetivo en s mismo, sino la cultura de mejora
194
INGENIERA DE SISTEMAS DE SOFTWARE
195
La mejora del proceso y la adopcin de nuevas tecnologas de software
196
INGENIERA DE SISTEMAS DE SOFTWARE
6.3.1.
197
La mejora del proceso y la adopcin de nuevas tecnologas de software
6.3.2.
198
INGENIERA DE SISTEMAS DE SOFTWARE
199
La mejora del proceso y la adopcin de nuevas tecnologas de software
200
INGENIERA DE SISTEMAS DE SOFTWARE
6.3.3.
2)
201
La mejora del proceso y la adopcin de nuevas tecnologas de software
3)
6.3.4.
La formacin requerida
202
INGENIERA DE SISTEMAS DE SOFTWARE
6.4. Resumen
En este Captulo hemos ofrecido un marco de mejora de la
ingeniera de sistemas de software desde una doble perspectiva: la
mejora de los procesos y la mejora de la tecnologa. Ambas
perspectivas no son independientes; histricamente, han estado
imbricados con mayor nfasis en unas etapas u otras a favor de cada
uno de ellos.
La ingeniera de sistemas de software puede considerarse embebida en un avance simultneo e interdependiente de la tecnologa que
permiten desarrollar los productos y los procesos que lo facilitan en
una organizacin determinada.
No existe, sin embargo, una acumulacin de tecnologas
inservibles. Muy al contrario, existen problemas tcnicos no resueltos
203
La mejora del proceso y la adopcin de nuevas tecnologas de software
204
INGENIERA DE SISTEMAS DE SOFTWARE
205
Referencias
206
INGENIERA DE SISTEMAS DE SOFTWARE
207
Referencias
208
INGENIERA DE SISTEMAS DE SOFTWARE
209
Referencias
210
INGENIERA DE SISTEMAS DE SOFTWARE
211
Bibliografa
212
INGENIERA DE SISTEMAS DE SOFTWARE
Bauer, F.L.:
Boehm, B. W.:
Booch, G.:
Brooks, F.:
Hall, A.:
Hoare, C.A.R.:
Parnas, D.L.:
Rumbaugh, J.,
M. Blaha,
W. Premerlani,
F. Eddy &
W. Lorensen:
Sang, H.:
Thayer, R. H. &
A. D. McGettrick
(Eds.):
213
Bibliografa
214
INGENIERA DE SISTEMAS DE SOFTWARE
215
Glosario
216
INGENIERA DE SISTEMAS DE SOFTWARE
217
Glosario
218
INGENIERA DE SISTEMAS DE SOFTWARE
219
Glosario
220
INGENIERA DE SISTEMAS DE SOFTWARE
221
Glosario
222
INGENIERA DE SISTEMAS DE SOFTWARE
223