Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Temas IS
Temas IS
SOFTWARE
Javier Martn
Centro Asociado de Mstoles /
Tres Cantos
UNED
Introduccin
TUTORIAS: JUEVES/VIERNES de 7 a 9
PLAN DE TRABAJO
Exposicin de los temas y mediante
transparencia, abundando en los puntos
ms importantes.
Resolucin de dudas
Propuesta y resolucin de ejercicios y
problemas
Temas
INTRODUCCIN
ESPECIFICACIN DEL SOFTWARE
FUNDAMENTOS DEL DISEO
SOFTAWARE
TCNICAS GENERALES DE DISEO
SOFTWARE
CODIFICACIN Y PRUEBAS
AUTOMATIZACIN Y PROCESO DE
DESARROLLO
INGENIERA DEL SOFTWARE Javi
Tema 1: INTRODUCCIN
MODELO EN CASCADA
MODELO EN V
MODELO EN CASCADA
10
MODELO EN CASCADA
11
12
MODELO EN CASCADA
13
MODELO EN V
14
MODELO EN V AMPLIADO
15
MODELO EN V
16
PROTOTIPOS
17
PROTOTIPOS RPIDOS
18
PROTOTIPOS RPIDOS
19
PROTOTIPOS EVOLUTIVOS
20
PROTOTIPOS EVOLUTIVOS
21
MODELO EN ESPIRAL
22
MODELO EN ESPIRAL
23
24
GESTIN DE CAMBIOS
25
GARANTA DE CALIDAD
Para evaluar la calidad son necesarias tcnicas de aplicacin de mtricas precisas tanto sobre los
productos software como a sus procesos de desarrollo.
McCall propone un esquema basado en valoraciones a 3 niveles:
FACTORES, valoracin significativa de la calidad en base a los criterios establecidos
CRITERIOS, aspectos de nivel intermedio que influyen en los factores de calidad
MTRICAS, mediciones puntuales de determinadas caractersticas del producto.
Entre los factores de calidad tenemos:
CORRECCIN, grado en que cumple con las especificaciones
FIABILIDAD, grado de ausencia de fallos
EFICIENCIA, reilacin entre la cantidad de resultados y los recursos requeridos
SEGURIDAD, dificultad para el acceso a datos por personas no autorizadas
FACILIDAD DE USO, esfuerzo requerido para el aprendizaje de la aplicacin
MANTENIBILIDAD. Facilidad para corregir el producto en caso necesario.
FLEXIBILIDAD, facilidad para modificar el producto
FACILIDAD DE PRUEBA, depende del esfuerzo requerido para comprobar su correccin o
fiabilidad
TRANSPORTABILIDAD, facilidad para adaptar el producto a otra plataforma
REUSABILIDAD, facilidad para usar partes del producto en otros desarrollos
INTEROPERATIVIDAD, facilidad del producto para trabajar con otros
26
27
REVISIONES
28
PRUEBAS
29
GESTIN DE CONFIGURACIN
CONFIGURACIN, disposicin de las partes que componen una cosa y le dan su peculiar
figura.
La CONFIGURACN SOFTWARE se refiere a la manera en que diversos elementos se
combinan para construir un producto software.
Se han de combinar todos los elementos que intervienen en el desarrollo:
Documentos del desarrollo
Cdigo fuente
Programas, datos y resultado de las pruebas
Manuales de usuario
Documentos de mantenimiento, informes de problemas y cambios
Prototipos intermedios
Normas particulares del proyecto
Dado que los elementos software van evolucionando a lo largo del desarrollo se requiere:
Control de versiones, almacenar de forma organizada las sucesivas versiones de cada
elemento de la configuracin.
Control de cambios, garantizar que las diferentes configuraciones del software se
componen de elementos compatibles entre s (lnea base).
30
NORMAS Y ESTNDARES
31
Tema 2:
ESPECIFICACIN DE SOFTWARE
32
MODELADO DE SISTEMAS
33
CONCEPTO DE MODELO
Un modelo conceptual es una abstraccin lgicomatemtica del mundo real que facilita la comprensin del
problema a resolver. Se trata de ofrecer una visin de lato
nivel, sin descender a explicar detalles concretos del
mismo. Indica QU hace el sistema y no CMO lo debe
hacer.
Los OBJETIVOS a cubrir con los modelos son:
34
35
36
ANLISIS
DE
REQUISITOS
DE
SOFTWARE
El anlisis es la fase de definicin del futuro sistema y tiene una importancia decisiva en
37
38
NOTACIONES
PARA
LA
ESPECIFICACIN
La especificacin es una descripcin del modelo del sistema a
desarrollar.
Se debe usar una notacin fcil de entender por el cliente:
39
40
41
42
43
MODELO DE SRD
1.
Introduccin
1.
Objetivo: objetivos, participantes, calendario,...
2.
3.
4.
5.
2.
Descripcin general
1.
2.
3.
4.
5.
6.
7.
44
MODELO DE SRD
3.
4.
Requisitos especficos, lista detallada y completa de los requisitos del sistema, indicando su grado de
cumplimiento (obligatorio, recomendable, opcional. No incluir aspectos de diseo o desarrollo, ni tampoco
soluciones particulares que no sean obligadas
3.
Requisitos especficos, QU debe hacer el sistema especificando el tratamiento de la
informacin.
4.
Requisitos de interfase, conexin con otros sistemas con los que interacta (bases de datos,
ficheros, SSOO,...).
5.
Requisitos de operacin, es decir, del interfaz de usuario
6.
Requisitos de capacidad, volumen procesador, tiempo respuesta, tamao ficheros. Se debe
cuantificar para el peor, el mejor y el caso ms habitual.
7.
Requisitos de verificacin, que debe cumplir el sistema para que se posible verificar su
correccin
8.
Requisitos de pruebas de aceptacin
9.
Requisitos de recursos, instalaciones y elementos necesarios para el funcionamiento del sistema
10.
Requisitos de documentacin
11.
Requisitos de transportabilidad, para adaptalo a otras plataformas
12.
Requisitos de calidad, que no hayan sido recogidos en otros apartados
13.
Requisitos de fiabilidad, imponiendo un lmite aceptable de fallos
14.
Requisitos de mantenibilidad
15.
Requisitos de seguridad, contra utilizacin indebida
16.
Requisitos de salvaguarda, para evitar consecuencias graves en equipos o en personas
APENDICES, para complementar el contenido del documento
45
46
47
48
49
50
51
Tema 3:
FUNDAMENTOS DEL DISEO DEL
SOFTWARE
52
CONCEPTO DE DISEO
53
54
ABSTACCIN, identificar los elementos significativos del sistema y abstraer la utilidad especfica de cada uno
ABSTRACCIONES FUNCIONALES, sirven para crear expresiones parametrizadas usando funciones o procedimientos
TIPOS ABSTRACTOS, junto con el tipo de datos se deben crear los mtodos que manejan estos datos
Comunicacin entre tareas, unas sern productoras de datos y otras consumidoras. Para evitar la corrupcin de datos
compartidos permitir slo concurrencia en lectura con semforos, monitores y regiones crticas
Interbloqueos (deadlock) cuando varias tareas esperan un evento que nunca se producir
55
DIAGRAMAS DE BLOQUES
CAJAS ADOSADAS
56
DIAGRAMAS DE ESTRUCTURA
(Yourdon)
Describen la estructura de los sistemas software como una
jerarqua de mdulos, reflejando slo su organizacin
esttica
RECTNGULO,
mdulo
LNEA, relacin
entre mdulos, el
superior utiliza el
mdulo inferior
ROMBO, opcional
ARCO, repetitiva
CIRCULO CON
FLECHA, envio de
datos o informacin
de control (correcto,
repetir, desconectar,
etc)
57
Y en los diagramas
HIPO de detalle
hay 3 zonas:
Entrada, Proceso y
Salida
58
DIAGRAMAS DE JACKSON
59
NOTACIONES ESTTICAS
60
NOTACIONES DINMICAS
61
Permiten un enfoque globalizado del diseo atendiendo a aspectos estticos (datos), dinmicos
(operaciones) y de estructura del sistema.
DIAGRAMAS DE ABSTRACCIONES, se contemplan dos tipos de abstracciones: las funciones y los tipos abstractos de
datos.
En una abstraccin se distinguen 3 partes:
NOMBRE, es su identificador
CONTENIDO, dnde se define la organizacin de los datos
OPERACIONES, para manejar el contenido de la abstraccin
Las abstracciones funcionales (funciones o procedimientos), slo tiene la parte de operacin.
El dato encapsulado tiene como el tipo abstracto contenido y operaciones, pero no permite declarar otras variables de su
mismo tipo.
62
Se emplea una terminologa distinta, pero las similitudes con los diagramas de abstracciones es muy grande,
excepto que:
1.
No existe nada equivalente a los datos encapsulados ni a las abstracciones funcionales en el modelo de
objetos
2.
63
1. INTRODUCCIN Para dar una visin general de todo el documento. Los contenidos de los apartados como en el SRD
1.2 mbito
1.4 Referencias
2. PANORMICA DEL SISTEMA, visin general de los requisitos funcionales y de otro tipo del sistema a disear
3. CONTEXTO DEL SISTEMA, si posee conexiones con otros
4.2 Descomposicin del sistema , primer nivel de descomposicin del sistema en sus componentes principales
5. DISEO DE LOS COMPONENTES, se procede a la decripcin detallada de l,os componentes mencionados en 4.2
5.n.5 Dependencias y su naturaleza: invocacin de operacin, datos compartidos, inicializacin, creacin, etc.
5.n.9 Proceso, algoritmos o reglas que utiliza el componente para realizar su funcin
5.n.l0 Datos, descripcin de los datos, su tipo, sus valores iniciales, se puede realizar con un diccionario de datos
6. VIABILIDAD y RECURSOS ESTIMADOS
7. MATRIZ REQUISITOS/COMPONENTES, se pone en las filas los requisitos y en las columnas los componentes
64
65
Tema 4:
TCNICAS GENERALES DE
DISEO SOFTWARE
66
TCNICAS DE DISEO
67
DESCOMPOSICIN
MODULAR
Los pasos a seguir son:
Identificar los mdulos
2.
Describir cada mdulo
3.
Describir las relaciones entre mdulos
Tipos de mdulos:
1.
Cdigo fuente, en el lenguaje de programacin usado
2.
Tabla de datos, para datos de inicializacin u otros
3.
Configuracin, se agrupa en un mdulo toda la informacin de configuracin en el
entorno de trabajo
4.
Otros: ficheros de ayuda en lnea, manuales, etc.
Una descomposicin modular debe poseer ciertas cualidades mnimas para que se
pueda considerar suficientemente vlida
Independencia fucional
Acoplamiento
Cohesin
Comprensibilidad
Adaptabilidad
1.
68
El grado de acoplamiento mide la interrelacin entre dos mdulos, segn el tipo de conexin y la
complejidad de la interfase:
FUERTE,
POR CONTENIDO, cuando desde un mdulo se pueden cambiar datos locales de otro
COMN, se emplea una zona comn de datos a la que tienen acceso varios mdulos
MODERADO,
DE CONTROL, la zona comn es un dispositivo externo al que estn ligados los mdulos,
esto implica que un cambio en el formato de datos afecta a todos estos mdulos
POR ETIQUETA, en ontercambio de datos se realiza mediante una referencia a la
estructura completa de datos (vector, pila, rbol, grafo, ...)
DBIL,
DE DATOS, viene dado por los datos que intercambian los mdulos. Es el mejor posible
SIN ACOPLAMIENTO DIRECTO, es el acoplamiento que no existe
69
Es necesario lograr que el contenido de cada mdulo tenga la mxima coherencia. Para que el n de
mdulos no sea demasiado elevado y complique el diseo se tratan de agrupar elementos afines y
relacionados en un mismo mdulo.
ALTA
MEDIA
BAJA
Si la descripcin no se refiere a algo especfico (Ej. Todos los errores), cohesin lgica
70
71
TCNICAS
DE DISEO
FUNCIONAL
La descomposicin
del sistema
se hace desde DESCENDENTE
un punto de vista funcional.
72
73
74
75
76
77
78
TCNICAS
DISEO
BASADO
EN ABSTRACCIONES
La idea es queDE
los mdulos
corresponden
a funciones
o a tipos abstractos de datos.
Los lenguajes que dan ms facilidades para la implementacin son los orientados a
objetos
79
Atributos
Operaciones
Palabra
Caracteres
Imprimir
Prrafo
Separador
Lnea salida
Iniciar prrafo
Poner palabra
Terminar prrafo
Separador de
prrafo
Lneas en blanco
Sangrado
Lnea
Sangrado
Palabras
Iniciar lnea
cabe palabra?
Poner palabra
Imprimir sin ajustar
Imprimir ajustada
80
TCNICAS
DE DISEO ORIENTADAS A OBJETOS
Es esencialmente igual al diseo basado en abstracciones, aadiendo la
herencia y el polimorfismo.
En la descomposicin modular del sistema cada mdulo contiene la
descripcin de una clase de objetos o de varias clases relacionadas entre
s.
PASOS:
Estudiar y comprender el problema a resolver
Desarrollar en lneas generales uan posible solucin, al menos
informal
Formalizar dicha estratega en trminos de clases, objetos y sus
relaciones:
81
TCNICAS
DE DISEO
DEalmacenar
DATOSinformacin de forma permanente y la
Muchas aplicaciones
necesitan
82
83
(a)
(b)
(c)
84
Tema 5:
CODIFICACIN Y PRUEBAS
85
Nos vamos a referir a las ltimas fases del ciclo de vida: codificacin,
pruebas de unidades, integracin y pruebas de sistema.
Cuando alguna de las pruebas no resulta positiva es necesario repetir la
codificacin o la integracin y probar de nuevo.
La fase de codificacin constituye el ncleo central en cualquiera de los
modelos y tiene una importancia fundamental ya que elabora los
programas fuente.
Previamente a la codificacin es necesario elegir el lenguaje que se
emplear as como la metodologa de programacin. Tambin se pueden
establecer en el equipo unas normas y un estilo de programacin comn,
lo que mejorar la coordinacin y facilitar el trabajo. Adems se
consigue facilitar el mantenimiento y mejorar la reusabilidad del software.
Cuando el resultado de las pruebas no sea satisfactorio ser necesario
modificar el cdigo, lo que podr introducir nuevos errores. Si la
programacin es estructurada ser ms fcil localizar la disfuncin y la
posterior modificacin y las pruebas del cdigo, dnde podemos
introducir puntos de test.
86
LENGUAJES DE PROGRAMACIN
Aunque los lenguajes han evolucionado mucho desde los aos 50 todava estn ms prximos a la mquina que al pensamiento humano. Los
lenguajes suelen adoptar los avances metodolgicos que se producen en el desarrollo del software. Ej.: C y C++
DESARROLLO HISTRICO, muchos han sido desarrollados con fines experimentales y muy pocos han llegado a ser utilizados industrialmente:
3 GENERACIN: programacin estructurada con declaracin de tipos. Los ltimos van asociados a otros paradigmas.
PASCAL, fue diseado para la enseanza de la programacin estructurada. Tipificacin rgida y no contempla la codificacin por separado
MDULA-2, descendiente de pascal, se incorpora la estructura de mdulo. Se mejora modularidad, concurrencia, abstraccin y ocultacin
C, desarrollado para la codificacin del UNIX. Flexible y potente. No hay restricciones sobre las operaciones con distintos tipos.
ADA, descendiente de pscal, mucho ms potente y complejo. Incorpora modularidad, abstraccin, ocultacin, concurrencia y
sincronizacin entre tareas.
LISP, lenguaje funcional usado en IA y sistemas expertos. Basado en listas admite recursividad. Maneja bien los smbolos
PROLOG, lenguaje lgico en que se construye una base de conocimiento basada en reglas a partir de la cual podemos inferir nuevos
hechos o reglas.
GENERADORES DE PROGRAMAS, son eficientes en un dominio de aplicaciones limitado. La mayora producen aplicaciones de gestin y
la salida va en cobol, aunque se han desarrollado herramientas CASE que generan programas en C++ o ADA.
OTROS: herramientas para la especificacin y verificacin formal de programas, lenguajes de simulacin, de prototipos, etc.
87
CORRUTINAS, tienen una estructura semejante a subprogramas pero con una transferencia del control
ms flexible. El avance en la ejecucin de las corrutinas se produce segn el avance entre ellas.
FORK-JOIN, es la propuesta de UNIX.
COBEGIN-COEND, entre estas palabras se inician todas las tareas y se finalizan. Es posible el
anidamiento.
PROCESOS; cada tarea se declara como un proceso y estos y se ejecutan concurrentemente. En algunos
casos es posible lanzar dinmicamente nuevos procesos una vez iniciado el programa.
PARA LA COMUNICACIN ENTRE TAREAS.
VARIABLES COMPARTIDAS
SEMFOROS
REGIONES CRTICAS
MONITORES
PASO DE MENSAJES
CSP
LLAMADA A PROCEDIMIENTOS REMOTOS
REDENZVOUS, DE ADA
88
DATOS SIMPLES. Para los eneros hay que tener en cuenta el rango posible y para los de coma flotante la
precisin. En ocasiones tambin permiten el manejo de complejos.
DATOS COMPUESTOS, son combinaciones de datos simples y compuestos ya definidos. Pueden ser
homogneos como los ARRAYS y heterogneos como los RECORDS o STRUCTS.
Nivel 0: sin tipos, no es posible declarar nuevos tipos y todos los datos deben pertenecer a tipos predefinidos
Nivel 1: tipado automtico, el compilador decide cul es el tipo ms adecuado para cada dato.
Nivel 2: tipado dbil, el compilador hace inferencias sobre los tipos y solo son posibles determinadas conversiones
Nivel 3: tipado semirgido, todos los datos deben ser declarados con su tipo
Nivel 4: tipado fuerte, aqu adems de declarar los tipos, el programador est obligado a hacer explcita cualquier
conversin de tipos.
ABSTRACCIONES Y OBJETOS.
CONSTANTES, en los lenguajes modernos se pueden declarar constantes simblicas, sin indicar
directamente su valor numrico.
COMPROBACIN DE TIPOS, se pueden distinguir 5 niveles:
Otros tipos simples son char y string, para el manejo de cadenas. Los tipos enumerados tambin pueden resultar
tiles, un tipo enumerado muy frecuente son los booleanos.
En ocasiones los lenguajes permiten utilizar subrangos.
ABSTRACCIONES FUNCIONALES
TIPOS ABSTRACTOS DE DATOS
OBJETOS
89
El lenguaje es uno de los elementos ms importantes de cualquier desarrollo y tiene una influencia
decisiva en la depuracin y el mantenimiento dela aplicacin. Criterios:
IMPOSICIN DEL CLIENTE, a veces para disminuir los costes de desarrollo y mantenimiento
que se producen cuando una empresa utiliza lenguajes diferentes.
TIPO DE APLICACIN, hay lenguajes orientados a un campo de aplicacin concreto.
90
ASPECTOS METODOLGICOS
Estos aspectos pueden mejorar la codificacin bajo determinados puntos de vista: claridad, manejo de errores eficiencia y
transportabilidad.
Normas y estilo, para conseguir un trabajo del equipo homogneo. Ejemplos:
Restricciones sobre el tamao del os mdulos, evitar anidamiento excesivo, no usar goto, etc.
Manejo de errores. Las causas de los errores pueden estar en el hardware o en el software, incluso de pueden producir por la
introduccin de datos incorrectos.
DEFECTO, incorreccin en el software. Pueden permanecer ocultos hasta que no se ejecutan determinadas partes del
programa
FALLO, elemnto del programa que no funciona correctamente, produciendo un resultado errneo
PREVENCIN DE ERRORES, consiste en detectar los fallos antes de que provoquen un error. Hay que evitar la
propagacin de errores y tener siempre a la salida un resultado correcto o una seal de fallo.
RECUPERACIN DE ERRORES, Cuando no es posible depurar todos los fallos es necesario hacer un tratamiento de
errores para devolver al programa a un estado vlido y evitar que el error se propague
1.
Deteccin del error
2.
Recuperacin del error. Se pueden usar dos esquemas en general:
1.
RECUPERACIN HACIA DELANTE, hay que programas un mecanismo de excepciones para que cuando se
detecte el error se corrija el estado y se contine correctamente la ejecucin.
2.
RECUPERACIN HACIA ATRS, corrige el estado no vlido restaurando el programa a un estado correcto
anterior,
Una transaccin es una operacin que puede terminar con xito o con fallo, en cuyo caso se aborta y se
restaura el estado de antes de comenzar dicha transaccin.
91
EFICIENCIA EN MEMORIA, en la fase de diseo se estudian las posibles alternativas y se opta por el
algoritmo que optimiza el uso dela memoria.
EFICIENCIA DE TIEMPO, es importante en el desarrollo de sistemas de tiempo real muy crticos. A
veces se mejora la eficiencia de tiempo a costa de ocupar ms memoria. En el diseo se estudian las
alternativas y se adopta el algoritmo ms rpido. Tcnicas de codificacin para aumentar la eficiencia
de tiempo:
TRANSPORTABILIDAD DEL SOFTWARE, no solo es rentable a corto plazo para obtener versiones para
diferentes plataformas, a medio y largo plazo facilita el mantenimiento y la adaptacin de la aplicacin a las
nuevas arquitecturas.
Utilizacin de estndares
Aislar las peculiaridades, colocndolas en mdulos separados. Se procurar evitar aquellos elementos no
consolidados y que pueden estar sujetos a futuros cambios o revisiones.
Las peculiaridades de los distintos tipos de computadores depende de la arquitectura y del sistema operativo
utilizado.
92
TCNICAS DE PRUEBAS
93
TCNICAS
DE dePRUEBAS
UNIDADES:
CAJA NEGRA
Las tcnicas de pruebas
unidades siguenDE
dos estrategias
fundamentales:
PRUEBAS DE CAJA NEGRA, se ignora por completo la estructura interna del programa y se
comprueba la correccin de entradas y salidas del programa.
Lo importante es la elaboracin de los casos de prueba con el objetivo de descubrir los errores e
incorrecciones. Mtodos:
94
95
96
97
ESTRATEGIAS DE INTEGRACIN
Se integran los mdulos del sistema para conformar el sistema completo. Causas de error:
Desacuerdos en el interfaz entre mdulos
Interaccin indebida entre mdulos
Imprecisiones acumuladas
Estrategias bsicas para la integracin:
INTEGRACIN BIG BANG, en un nico paso se integran todos los mdulos, de forma que todos los defectos se
manifiestan a la vez. Solo recomendable para sistemas pequeos.
INTEGRACIN DESCENDENTE, se parte de un mdulo principal P, que se prueba con mdulos de andamiaje,
los cuales van siendo sustituidos por los verdaderos de forma progresiva por niveles. Los mdulos de andamiaje;
El trabajo de elaborar estos mdulos puede ser aprovechado para hacer un prototipo y mostrar al cliente un
avance del programa. Inconvenientes:
INTEGRACIN ASCENDENTE, se codifican por separado y en paralelo todos los mdulos del nivel ms bajo.
Para probarlos se codifican mdulos gestores o conductores que los hacen funcionar independientemente o en
combinaciones sencillas. Las ventajas son:
La Integracin Sandwich consiste en realizar integracin ascendente con los mdulos de nivel ms bajo y
descendente con los de nivel ms alto.
98
99
PRUEBAS
DE
SISTEMA
Se trata de probar el sistema completo para ver si realmente cumple las
especificaciones.
Se suelen emplear estrategias de caja negra. Podemos distinguir diferentes clases
de pruebas:
PRUEBAS DE RECUPERACIN, para comprobar la capacidad del sistema
para recuperarse ante fallos
PRUEBAS DE SEGURIDAD, par comprobar los mecanismos de proteccin
ante un acceso no autorizado
PRUEBAS DE RESISTENCIA, para comprobar el comportamiento del sistema
ante situaciones excepcionales
PRUEBAS DE SENSIBILIDAD, para comprobar el tratamiento que da el sistema
a ciertas singularidades relacionadas casi siempre con los algoritmos
matemticos utilizados
PRUEBAS DE RENDIMIENTO, para comprobar las prestaciones del sistema
que son crticas en tiempo
PRUEBAS ALFA Y BETA. Los usuarios tambin deben intervenir en las pruebas
finales del sistema
Pruebas alfa, son las primeras pruebas que se realizan en un entorno controlado
donde el usuario tiene el apoyo de alguien del equipo de desarrollo
Pruebas beta, los usuarios trabajan con el sistema en un entorno real y sin ayuda,
anotando los problemas que se le presentan
100
Tema 6:
AUTOMATIZACIN DE PROCESO
DE DESARROLLO
101
ENTORNOS
DE
DESARROLLO
SOFTWARE
Entorno se refiere al contexto dentro del cual se desarrolla una determinada
102
103
104
HERRAMIENTAS DE SOFTWARE
Herramientas clsicas.
Editor de texto.
Compilador
Montador de enlaces. Construye ejecutables combinando varios ficheros objeto.
Gestor de librera. Combina ficheros objeto en una librera.
Herramienta MAKE. Automatiza la actualizacin de los ficheros a partir de otros.
Intrprete interactivo. Casi Constituye un entorno de programacin completo (si lo es se debe clasificar a nivel de banco de trabajo y no de herramienta). Engloba
funciones equivalentes a las de edicin, compilacin, montaje y ejecucin.
Compilador/Intrprete. Procesador de un lenguaje interpretado de forma no interactiva.Incluye un compilador a cdigo intermedio y un intrprete de ejecucin de dicho
cdigo intermedio con todas las libreras de soporte. No incluye funciones de editor de programas.
Depurador absoluto. Ejecuta el programa de forma controlada. Resulta incomodo de usar ya que hace referencia a posiciones de memoria y a los registros del
procesador.
Depurador simblico. Realiza una funcin anloga al anterior pero con referencia al cdigo fuente por lo que es ms cmodo de usar.
Herramientas evolucionadas.
Editores orientados al lenguaje. Son editores de estructura.
Herramienta MAKE automtica. Se incorpora la funcin MAKE al compilador.
Manejador de versiones. Almacena de forma organizada y eficiente una serie de versiones del mismo elemento software. Se suelen usar desde las utilidades MAKE al
recompilar una aplicacin en desarrollo.
Procesadores/Analizadores de cdigo fuente. Grupo en que se pueden incluir diferentes herramientas que procesan el texto fuente para obtener mediciones, generar
tablas de referencias, encolumnar etc. Estas funciones podran estar incorporadas en los compiladores.
Procesadores de documentos. No son especficos del desarrollo pero son un soporte fundamental.
Herramientas de control de pruebas. Ayudan a la realizacin de pruebas unitarias o de
integracin.
Herramientas de control de cambios. Ayudan a la realizacin del desarrollo y al mantenimiento de aplicaciones.
Procesadores de ficheros de texto.
Herramientas de 4 generacin.
Hojas de clculo. Procesadores de documentos
Gestores de bases de datos Lenguajes de 4 generacin.
Generadores de programas.
105
ENTORNOS INTEGRADOS
Integracin de datos. Significa que la informacin almacenada en el entorno es gestionada de manera uniforme, con independencia de las transformaciones
que se hagan con cada elemento de informacin. Debe de conseguir:
Interoperatividad entre herramientas.
No redundancia de datos
Consistencia de datos.
Paso de datos de una herramienta a otra.
La integracin de datos puede conseguirse de diversas maneras:
Transferencia directa de datos de una herramienta a otra. Eficiente pero poco flexible. Complicada para integrar muchas herramientas diferentes.
Transferencia mediante ficheros. Es la ms sencilla. Existe un formato normalizado (CDIF).
Transferencia basada en comunicacin. Alternativa a la anterior y puede ser usada en sistemas distribuidos y en sistemas abiertos.
Repositorio comn. Se utiliza en los entornos modernos con un grado de integracin elevado.
Integracin de control. Consiste en la combinacin flexible de funciones para cumplir con las particularidades del proceso y actividades que hay que
informatizar. El mayor grado se consigue cuando desde una herramienta se puede invocar funciones de otra herramienta. Exige como paso previo la
integracin de los datos.
Integracin de la presentacin. Trata de realizar la interaccin con el usuario de manera uniforme, con cierta independencia dela funcin o herramienta en
uso. Para ello se deben conseguir los objetivos de un sistema amigable:
Limitar el nmero de formas de interaccin diferentes.
Usar formas de interaccin y presentacin adecuadas al modelo mental que el usuario tiene del entorno.
Satisfacer los tiempos de respuesta esperados y dar indicacin del avance del proceso en caso de tratamiento de larga duracin.
Mantener informacin til a disposicin del usuario.
Integracin del proceso. Consiste en que las herramientas se combinan de manera que apoyan o fuerzan el uso de una metodologa de desarrollo definida. Este
modo exige una buena integracin de control y datos. El proceso de desarrollo puede definirse en base a los siguientes elementos.
Un paso del desarrollo es una unidad de trabajo concreta que produce un resultado (por ejemplo revisin del DDD).
Un suceso o evento es un condicin que ocurre durante la ejecucin de un paso y que puede desencadenar la ejecucin de una accin asociada
(compilacin de un mdulo).
Una restriccin del desarrollo es una limitacin que debe cumplirse.
Un buen grado de integracin del proceso exige que todo los pasos, eventos y restricciones que definen de forma natural la metodologa de desarrollo a utilizar,
sean representables y tratables dentro del entorno.
106
107
Un banco de trabajo debe integrar las herramientas necesarias para dar soporte a un determinado perfil profesional o actividad general
de desarrollo. Un banco de trabajo debe de conseguir:
Integracin de la presentacin
Integracin de control
Integracin de datos (preferentemente con repositorio comn).
Segn la actividad soportada, tendremos distintos bancos o equipos de trabajo, entre ellos:
Equipos de anlisis y diseo: Herramienta CASE o CASE superior. Corresponde al entorno asociado a la metodologa. Muchos de
ellos cubren las dos fases (anlisis y diseo), mientras que otros slo cubren una. El repositorio comn almacena todos los
elementos definidos en la metodologa soportada.
Entorno de programacin. Es el banco de trabajo para la actividad de codificacin pudindose extender al diseo detallado y a las
pruebas de unidades.
Equipo de verificacin y validacin: Capaz de facilitar las tareas de inspeccin y pruebas de mdulos y sistemas. Suelen estar
ligados al entorno de programacin. Pueden incluir funciones de:
Anlisis esttico, con evaluacin de mtricas de calidad y generacin de matrices o grafos de llamadas entre funciones y mdulos.
Generacin de tablas de referencias cruzadas.
Gestin de pruebas, automatizando la realizacin de ensayos.
Equipo de construccin de interfaz del usuario. Permite definir cmodamente el esquema de dilogo con el usuario, as como los
elementos de interaccin.
Equipo de gestin de configuracin. Permite almacenar diferentes versiones de los elementos del proyecto, definir distintas
configuraciones y controlar los cambios sucesivos.
Equipo de ingeniera inversa. Debe facilitar la extraccin de informacin de diseo, los elementos abstractos a partir de un cdigo
o sistema software existente.
Equipo de gestin de proyectos. Facilita la confeccin de planes de trabajo, con la asignacin de tiempos y recursos a diferentes
tareas, y el seguimiento de su realizacin.
108
Deben de ser capaces de soportar todas las actividades del ciclo de vida de desarrollo siguiendo un modelo definido. Un entorno global de
estas caractersticas se designa como IPSE, ICASE o ISEE. La caracterstica principal que distingue un entorno de esta clase de un
banco de trabajo amplio es el soporte explcito de un modelo global de desarrollo. El entorno debe poseer las caractersticas de
integracin del proceso, adems de las de integracin de datos, control y presentacin.
Para conseguir este nivel de integracin es necesario contar con un modelo formal del proceso de desarrollo. A diferencia de las
metodologas parciales de anlisis y diseo, este modelo suele construirse a medida de cada empresa productora de software. Un
ISEE de uso general deber permitir:
Construir la definicin formal del modelo del proceso de desarrollo.
Asegurar la aplicacin prctica del modelo definido.
Aunque no existen entornos ISEE disponibles si existen esquemas generales de arquitectura de entornos orientados al proceso, que en
algunos casos han dado lugar a colecciones de herramientas que facilitan las funciones deseadas. Algunas son:
PCTE (Portable Common Tool Environment). Es una arquitectura de entorno integrado, basada en un repositorio comn. Su
elemento principal es la definicin de interfaz de acceso al repositorio. Sobre l pueden operar herramientas que automaticen las
actividades previstas en el modelo del proceso. Existen implementaciones de repositorio que cumplen con la especificacin PCTE, y
tambin algunas colecciones de herramientas como las del proyecto PACT.
ESF (Eureka Software Factory). Define otro modelo de arquitectura, cuyo elemento central de integracin es el denominado
software bus, que es un interfaz normalizado para la interconexin de herramientas. Se distinguen dos clases de herramientas:
servidores y herramientas de interaccin. Los servidores pueden realizar las funciones de repositorio, tanto centralizado como
distribuido, y suministrar servicios o funciones automatizadas. Las herramientas de interaccin permiten la comunicacin con los
usuarios, que pueden acceder a los repositorios y a los servicios a travs de ellas.
Modelo NIST/ECMA. Contempla una estructura fija, compuesta por elementos que proporcionan una integracin de datos, basada
en un repositorio comn, integracin de presentacin mediante un soporte global de interfaz de usuario, e integracin del control,
basada en la gestin de procesos y mensajes. El entorno puede particularizarse para un modelo de desarrollo determinado instalando
sobre estos elementos fijos una coleccin de herramientas.
Ante la ausencia de productos CASE listos para usar se debe de tomar el enfoque de combinar productos para construir un entorno global.
109