Documentos de Académico
Documentos de Profesional
Documentos de Cultura
software
enrique barreiro
departamento de informática
universidade de vigo
un poco de historia
primeras décadas:
desarrollar el hardware
reducir costes de procesamiento y almacenamiento
década de los ochenta:
desarrollo de la microelectrónica
mayor potencia de cálculo y reducción de costes
objetivo actual: mejorar la calidad de las soluciones software.
software
programas
archivos de configuración
documentación de la estructura del sistema
manuales de instalación y uso
sitios web con información y actualizaciones
tipos de software
productos genéricos
sistemas producidos por una organización y que se venden en el mercado
abierto
sistemas gestores de bases de datos, procesadores de texto, paquetes
gráficos,...
la organización controla la especificación
productos personalizados
desarrollados específicamente para un cliente
aplicaciones de negocio, sistemas de control de tráfico aéreo, control de
procesos de fabricación,...
el cliente controla la especificación de la aplicación
Algunas preguntas:
¿Por qué se tarda tanto? (y casi siempre más de lo previsto)
¿Por qué la productividad es tan baja?
¿Por qué cuesta tanto?
¿Por qué siempre quedan errores sin localizar?
Planificación y estimaciones
imprecisas
Dificultad de mantener
el software existente
Insatisfacción del cliente
Calidad Baja productividad
definiciones
establecimiento y uso de principios de ingeniería robustos,
orientados a obtener software económico, fiable, eficiente y
que satisfaga las necesidades del usuario
disciplina que comprende todos los aspectos de la producción
de software, desde las etapas iniciales hasta el
mantenimiento:
“disciplina de ingeniería”: aplicación de teorías, métodos y
herramientas para solucionar problemas, y teniendo en cuenta
restricciones financieras y organizativas
“todos los aspectos de producción”: comprende procesos
técnicos del desarrollo y actividades como la administración de
proyectos, desarrollo de herramientas, métodos y teorías
actividad de
modelado
solución de problemas
adquisición de conocimiento
dirigida por una fundamentación
mejores técnicas de
control de calidad
mejores elementos
de programación
filosofía de coordinación,
control
y buena gestión
modelos
iniciador
<<subsistema>>
Enviar factura al comprador
Sistema de
iniciador visión
Hojear facturas
iniciador <<subsistema>>
Pagar factura
Vendedor
<<subsistema>> <<subsistema>>
Comprador <<extend>> Controlador del Controlador del
iniciador
brazo asidero
<<subsistema>>
Realizar transacción Sistema de identificación
Pagar recargo por saldo deudor de objetos
<<subsistema>>
papel (rol)
conjunto de responsabilidades en el proyecto o en el sistema
asociado con un conjunto de tareas y se asigna a un
participante
un mismo participante puede cumplir varios papeles
sistemas y modelos
sistema: realidad subyacente
modelo: cualquier abstracción de la realidad
productos de trabajo
artefacto o elemento que se produce durante el desarrollo (documento,
fragmento de software,...)
dos tipos:
producto de trabajo interno: producto para el consumo interno del proyecto (por
ejemplo, una revisión de la estructura de la base de datos, resultados de pruebas para el
gerente,...)
entrega: producto de trabajo para un cliente (especificación de requisitos, manual de
usuario, producto final,...)
ingeniería de requerimientos
ReservaBilletes
el cliente y los desarrolladores
definen el propósito y objetivos
del sistema
Viajero
CompraBillete resultado: descripción del
sistema en términos de
participantes (actores) y
funciones (casos de uso)
Anulación reserva actores: entidades externas
que interactúan con el
sistema (incluyen roles como
Nombre del caso de uso: CompraBillete usuarios finales u otros
Nombre del caso de uso: CompraBillete sistemas con los que
Actor participante:
Actor participante:
Iniciado por Viajero
Iniciado por Viajero
interactúa el sistema)
Precondición:
casos de uso: secuencias de
1.Precondición:
El Viajero se para frente al distribuidor automático de billetes eventos que describen todas
1. El Viajero se para frente al distribuidor automático de billetes las acciones posibles entre un
Flujo de eventos: actor y el sistema para una
2.Flujo de eventos:
El Viajero selecciona las estaciones de origen y destino función específica.
3.2.ElElDistribuidorDeBilletes
Viajero selecciona lasmuestra
estaciones de origen
el precio y destino
del billete
3. El DistribuidorDeBilletes muestra el precio del billete
4. El Viajero inserta una cantidad de dinero que, al menos, debe se acuerdan requisitos no
4. igual
ser El Viajero inserta
que el preciouna
del cantidad
billete de dinero que, al menos, debe funcionales. Por ejemplo:
5.ser igual que el precio del emite
El DistribuidorDeBilletes billeteel billete especificado al Viajero y
5. El DistribuidorDeBilletes
devuelve el cambio si es necesario emite el billete especificado al Viajero y el distribuidor de billetes debe
devuelve el cambio si es necesario estar disponible al menos un
Postcondición: 95% del tiempo
6.Postcondición:
El Viajero coge el billete y el cambio el distribuidor de billetes debe
6. El Viajero coge el billete y el cambio
dar respuesta en menos de un
Requisitos especiales: segundo después de
SiRequisitos
la transacciónespeciales:
no ser termina después de un minuto de seleccionada la transacción
Si la transacción no ser termina después
inactividad, el DistribuidorDeBilletes de un
devuelve todominuto de
el dinero
inactividad,
insertado el DistribuidorDeBilletes devuelve todo el dinero
insertado
análisis
se produce un modelo correcto, completo, consistente, claro,
realista y verificable
transformación de los casos de uso en un modelo que
describe por completo el sistema y que se usará en el diseño
descubrimiento y resolución con el cliente de ambigüedades
e inconsistencias en el modelo de casos de uso
Transacción
Transacción
da como resultado
da como resultado
cantidad pagada
cantidad pagada BilleteTren
BilleteTren
Saldo
Saldo
válido para
válido para
Zona
Papel Zona
Moneda Papel
Moneda
diseño
diseño del sistema
Gestión
Gestión facturas
facturas
comprador
comprador definición de los objetivos de diseño
descomposición del sistema en subsistemas
abordables por equipos
selección de estrategias para la construcción
(plataformas hardware y software,
almacenamiento de datos persistentes, control
de acceso,...)
Gestión
Gestión de
de planificación
planificación Gestión
Gestión de
de
de
de pagos
pagos cuentas
cuentas
resultado: descripción de las estrategias,
descomposición en subsistema
diseño de objetos:
definición de objetos e interfaces de
subsistemas, reestructuración del modelo de
IU
IU Solicitud
Solicitud
de
de pago
pago objetos para lograr los objetivos de diseño,
optimización del modelo para mejorar el
Comprador
Comprador rendimiento,...
Procesamiento
Procesamiento dede resultado: modelo de objetos detallado
solicitudes
solicitudes de
de pago
pago
diseño de interfaz
Solicitud
Solicitud
de
Confi
de
rmación
Confirmación
de pedidos
pedidos
Factura
Factura diseño de componentes
de pago
pago
diseño de la estructura de datos
diseño procedimental (algoritmos)
<<subsystem>> <<subsystem>>
Gestión Trabajos Gestión Sistema <<subsystem>>
Externos Mantenimientos
de Gestión
<<subsystem>>
Gestión Mantenimiento <<subsystem>>
Preventivo Gestión
Subgrupos-Instalaciones
<<subsystem>>
Gestión Máquinas
Subgrupo
Alta Instalaciones
<<subsystem>> <<subsystem>> <<include>>
Gestión Trabajos Gestión Sistema <<subsystem>>
Externos Mantenimientos
de Gestión
<<include>>
Baja Instalaciones
<<include>>
Validar Usuario
<<subsystem>> <<subsystem>> <<subsystem>> Administrador
Gestión Mantenimiento Validación Gestión <<include>> (from Validación Usuarios)
Correctivo Usuarios Instalaciones (from Validación Usuarios)
Modificación Instalaciones
<<subsystem>>
Gestión Mantenimiento <<subsystem>>
Preventivo Gestión Consulta Instalaciones
Operario
Subgrupos-Instalaciones
(from Vali dación Usuarios)
<<subsystem>>
Gestión Máquinas
Subgrupo
<<subsystem>>
Alta Características-Maq
Gestión <<include>>
Máquinas
<<include>>
Baja Características-Maq
<<include>>
Gestión Características Gestión Tareas Validar Usuario
Máquinas Máquinas Administrador
<<include>> (from Validación Usuari os)
(from Validación Usuarios)
Modificación Características-Maq
Consulta Características-Maq
Operario
(from Validación Usuarios)
Mostrar(Datos)
Cubrir_Datos()
Si no Existe
Comprobar()
<<include>>
Visualizar Resultado
Baja Características-Maq
<<include>>
Validar Usuario Construir
Administrador Datos no Correctos
<<include>> (from Validación Usuari os)
(from Vali dación Usuari os)
Fin Si
Fin Si
Consulta Características-Maq
Operario
(from Vali dación Usuarios)
formulario.
Administrador Validado
Post-Condiciones 1. Los datos de la nueva característica quedan
guardados si el proceso finaliza correctamente.
2. Los datos de la nueva característica no quedan
guardados si se produce algún error durante el
proceso.
Descripción 1. El sistema muestra el formulario de altas.
2. El usuario introduce los datos. Visualizar Seleccionar
Formulario Formulario
3. El sistema realiza la validación de los datos.
4. Si la característica ya existe [A].
5. Si los datos no son correctos [B].
6. El usuario selecciona la opción de Guardar.
Comprobar Introducir
7. El sistema guarda los datos.
Datos Datos
8. Si se guarda correctamente se visualiza un mensaje,
si hay algún problema el sistema avisa con un
mensaje de error. Datos Incorrectos Mensaje "Error
Excepciones El proceso se puede cancelar en cualquier momento.
Datos"
A. Si la característica ya existe se visualizan sus datos. Datos Correctos
B. Datos incorrectos, ir a punto 2.
Comprobar Existencia
de la Instalación
No Existe Seleccionar
Guardar
Modificación Características-Maq
Consulta Características-Maq
Operario
(from Vali dación Usuarios)
Registra-venta-de
Descrita-por
1
n
Especificacion
0..1 CatalogoDe
LineaDeVenta DelProducto
Productos Contiene
cantidad descripción
1 1..n precio
1 articuloID
1..n Utilizado-por
n
Contenida-en
Tienda
Abastece
Registra-completas dirección Articulo
nombre
1 1 n 1..n
1
Venta 1
n Alberga
fecha 1..n
Iniciado-por
hora 1 Registro 1 1 Encargado
Capturada-en
1
1
1 1
Pagada-mediante
Iniciada-por Registra-ventas-en
1 1
Pago 1
Cliente
cantidad Cajero
ODBC
Servidor SGBD
TCP/IP
Cliente
TCP/IP
Cliente
implementación
traducción del modelo de diseño (por ejemplo, del modelo de objetos)
en código fuente
incluye:
implementación de atributos y métodos de cada objeto
integración de todos los objetos para que funcionen como un solo sistema
pruebas
pruebas de unidad: comparación del modelo de diseño con cada objeto
y subsistema
pruebas de integración: combinaciones de subsistemas y comparación
con el modelo de diseño del sistema
pruebas del sistema: ejecución de casos típicos y excepcionales, y
comparación con el modelo de requerimientos
objetivo: descubrir la mayor cantidad posible de errores que se puedan
reparar antes de entregar el sistema
mantenimiento
mejoras en el sistema (nuevas funciones, facilidad de uso,...)
corrección de errores
adaptación a cambios en el entorno (hardware, software, legislación,...)
actividad más costosa del ciclo de vida de un producto software
proceso
conjunto ordenado de tareas, una serie de pasos que involucran actividades,
restricciones y recursos, que producen una salida determinada
proceso de software: conjunto de actividades necesarias para transformar los
requisitos de un usuario en un sistema software
características
tiene una serie de actividades principales
utiliza recursos, está sujeto a restricciones y genera productos intermedios y finales
compuesto por subprocesos que se encadenan de alguna forma
cada actividad tiene sus criterios de entrada y salida, que permiten conocer cuando
comienza y termina dicha actividad
existen principios orientadores que explican las metas de cada actividad
cuando implica la construcción de un producto, se suele llamar ciclo de vida
aportan consistencia y estructura sobre el conjunto de actividades, lo que
permite realizar la misma tarea correctamente de forma repetida
existen diferentes modelos de proceso
Requisitos
del usuario Sistema software
Proceso de desarrollo
de Software
Requerimentos
y Análisis
Diseño
Implementación
Pruebas
Mantenimiento
problemas
prisas del cliente (utilización del
prototipo como sistema final
Refinamiento Construcción pasar elecciones debidas al prototipo a
del prototipo del prototipo la implementación final (entorno,
sistema operativo,...)
estructura deficiente
Evaluación del evolución del proceso difícil de gestionar
prototipo por
herramientas y técnicas especiales
el cliente
poco adecuado para grandes sistemas
Hypertext
Date component display component
Tree display
component
Definición general de
requerimientos pasos
identificación y priorización de funciones y
servicios
Asignación de requerimientos
a incrementos definición de varios requerimientos que
proporcionan parte de la funcionalidad, según la
prioridad (los más importantes se entregan
Diseño de la arquitectura del
antes)
sistema definición detallada de requerimientos del
incremento y desarrollo con el proceso más
adecuado
Desarrollo de incrementos congelación de requerimientos de incrementos
del sistema desarrollados
puesta en explotación de los incrementos
Validar completados y entregados
incrementos
ventajas
Integrar puesta en marcha temprana
incrementos
los incrementos iniciales permiten refinar
requerimientos de incrementos posteriores
Validar satisfacción del cliente (bajo riesgo de fallo)
sistema
sistema final muy probado y con pocos fallos
problemas
sistema incompleto
incrementos relativamente pequeños
sistema completo
adaptación de requerimientos a incrementos del
tamaño apropiado
Sistema final identificación de recursos comunes a todos los
incrementos
PROGRESO
propuesto por Barry A TRAVÉS
Boehm DETERMINAR
OBJETIVOS,
DE LAS ITERACIONES EVALUAR ALTERNATIVAS,
ALTERNATIVAS Y IDENTIFICAR Y
RESOLVER RIESGOS
organización en ciclos RESTRICCIONES
Análisis de riesgos
primer ciclo: factibilidad
segundo ciclo:
requerimientos Análisis de riesgos
sectores Riesgo.
Proto- Prototipo 2
-
REVISIÓN tipo 1
definición de objetivos,
restricciones del producto Plan de Simulaciones, modelos,
.
y proceso, plan de requerimientos Concepto de pruebas comparativas
Plan de ciclo
administración,... de vida
operación
Requerimientos
de software
evaluación y reducción de
Diseño del Diseño
riesgos (por ejemplo, producto detallado
mejor definición de Plan de Validación de
requerimientos
desarrollo
requerimientos mediante
prototipos) Codificar
Plan de integración
Diseño de validación
desarrollo y validación: y prueba
y verificación Prueba de
elección de un modelo PLANIFICAR SIGUIENTE
unidad
para el desarrollo FASE Prueba de
integración
planificación: el proyecto Prueba de
se revisa y se decide si se -
aceptación
Requisitos
del usuario Sistema software
Proceso de desarrollo
de Software
casos
casos de
de la arquitectura de un sistema software se describe
uso mediante diferentes vistas del sistema en
construcción
conduce influida por diversos factores
guía necesidades de la empresa, tal y como las perciben los
usuarios y clientes
otros factores, como plataforma de explotación
(arquitectura hardware, sistema operativo, gestor de
arquitectura bases de datos, protocolos de comunicación,...),
componentes reutilizables, sistemas heredados,
requisitos no funcionales,...
es una vista del diseño completo con las
características más importantes resaltadas, dejando
los detalles de lado.
Capa específica
de la aplicación hay una constante interacción entre los casos de uso y
la arquitectura, que evolucionan en paralelo
los casos de uso deben encajar en la arquitectura cuando
se realizan
Capa general de la
la arquitectura debe permitir el desarrollo de todos los
aplicación
casos de uso requeridos
el arquitecto
realiza un esquema en borrador de la arquitectura que
no es específica de los casos de uso (por ejemplo, la
Capa
plataforma)
intermedia trabaja con un subconjunto de los casos de uso
principales del sistema, especificándolo en detalle y
realizándolo en términos de subsistemas, clases y
componentes
a medida que los casos de uso se especifican y maduran,
Capa de software se descubre más de la arquitectura, lo que a su vez lleva
del sistema a la maduración de más casos de uso
este proceso continúa hasta que se considera que se
dispone de una arquitectura estable
Fases
Flujos de trabajo Inicio Elaboración Construcción Transición
fundamentales
Requisitos
una iteración en la
fase de elaboración
Análisis
Diseño
Implementación
Prueba
iter #1 iter #2 --- --- --- --- --- iter #n-1 iter #n
Iteraciones
Bruegge, B., Dutoit, A.H., Ingeniería del Software Orientado a Objetos, cap. 1