Documente Academic
Documente Profesional
Documente Cultură
s
d
e
m
o
d
i
f
i
c
a
c
i
o
n
e
s
U
t
i
l
i
z
a
d
o
t
a
l
c
u
a
l
Va lo r p r o ye ct o s
US$
Estudio GAO
Cenfotec 2010
Estudio GAO
48%
29%
19%
3%
Entregado y nunca
usado
Pagado no entregado
Usado luego abandonado
o retrabajado
Usado despus de
cambios
Usado como fue
entregado
Cenfotec 2010
Status - nmeros
Por cada 6 proyectos nuevos de gran tamao,
otros 2 se cancelan
Re-trabajo afecta presupuesto total: 40% a 50%
presupuesto real
31% se cancelan antes de terminar
52.7% completados exceden 89% presupuesto
Standish Group, 1994
Cenfotec 2010
Chaos Report, 2004 (Standish Group)
0% 20% 40% 60% 80% 100%
PORCENTAJE
1994
1996
1998
2000
2004
A
O
Standish Group Chaos Report 2004
Resolucin de Proyectos de Aplicaciones de Software
Fallaron
Cuestionados
Exitosos
Cenfotec 2010
Por qu hubo mejoras?
La razn principal es que los proyectos se han
reducido en tamao. La utilizacin de desarrollo
iterativo, en oposicin al mtodo de cascada, que
obligaba a la definicin inicial de todos los
requerimientos del proyecto, ha permitido este
importante avance.
La mayora de los proyectos cuestionados en la
encuesta del 2004 tuvieron excesos de costo del
orden del 20%, una mejora de tres veces sobre los
resultados de 1994. Los excesos de costo totales,
incluyendo proyectos fracasados, se estableci en
el 43% en el 2004, versus un exceso del 180% en
1994.
Cenfotec 2010
Realidad reciente
51-100%
tarde
9%
101-200%
tarde
16%
Cancelados
29%
Ms de 200%
tarde
6%
A tiempo
26%
21-50% tarde
8%
Menos que
20% tarde
6%
R
e
s
u
l
t
a
d
o
s
d
e
8
,
0
0
0
p
r
o
y
e
c
t
o
s
Standish Group, 1999
Cenfotec 2010
Pero an es muy caro
En el Chaos Report del 2004 se estim en $55 mil
millones las prdidas en proyectos, contra un gasto
total de $255 mil millones. En 1994, la estimacin
fue de $140 mil millones en prdidas, $80 mil
millones de ellos en proyectos fracasados, de un
gasto total en proyectos de $250 mil millones.
Cenfotec 2010
Problemas, retos y oportunidades
Cenfotec 2010
Problemas del software
No satisface requerimientos
Toma mucho tiempo construirlo
Se cae, falla, pega
Difcil de estimar y planificar
Difcil de modificar y mantener
Poco porttil
Usa subptimamente los recursos
No se dan garantas
Cenfotec 2010
Keil, Cule, Lyytinen, Schmidt. 1998*
* 40 proyectos, en varios pases del mundo. CACM 41(11), 11.1998
Top 11
Cenfotec 2010
Problemas - naturaleza
Complejidad - conformidad
Complejidad - tamao, interaccin, forma
Establecer y estabilizar requerimientos
Maleabilidad y cambiabilidad
Invisibilidad e inmaterialidad
Carencia de suficientes teoras de dominios
Pobre comunicacin usuarios <-> tcnicos
Pobre alineamiento estratgico
Presin por producir aplicaciones
Cenfotec 2010
Fallas - hardware
Mortalidad infantil
Perodo de servicio
Regin de falla
T
a
s
a
d
e
f
a
l
l
a
s
Tiempo
Cenfotec 2010
Fallas - software (ideal)
Mortalidad infantil
Perodo de servicio
T
a
s
a
d
e
f
a
l
l
a
s
Tiempo
Cenfotec 2010
Fallas - software (real)
T
a
s
a
d
e
f
a
l
l
a
s
cambios
ideal
real
Tiempo
Cenfotec 2010
Nuevas consideraciones
Seguridad
Escalabilidad
Interoperabilidad
Portabilidad
Implantacin (deployment)
Rendimiento
Disponibilidad
Cenfotec 2010
Nuevos desafos
Nuevos patrones de uso
Nuevas expectativas de los usuarios
Competencia creciente
Tiempo: ciclo de vida acortado
Innovacin
Especificaciones cambiantes
Desarrollo basado en componentes
Integracin e interoperabilidad
Ajuste del proceso
Cenfotec 2010
Soluciones!
Cenfotec 2010
Soluciones intelectuales
Estructuracin
Descomposicin funcional
Estructuracin de datos y procesos
Descomposicin por objetos
Modularizacin y estratificacin
Abstraccin
Procedimental, funcional
Datos
Objetos
Cenfotec 2010
Soluciones tcnicas
Lenguajes de alto nivel
Sistemas y ambientes operativos
Sistemas de bases de datos
Redes, distribucin, Internet
Mtodos de programacin, anlisis y diseo
Modelaje visual
Desarrollo de requerimientos
Componentes y reutilizacin
Mtodos formales
Tcnicas de verificacin y validacin
Herramientas, automatizacin, 4GLs
IA y aplicaciones
Cenfotec 2010
Soluciones administrativas
Administracin de proyectos
Proceso: ciclos de vida, productos y actividades
Evaluacin de riesgos
Administracin de requerimientos
Manejo de configuracin
Estrategia informtica
Equipos de trabajo, ingeniera concurrente
Administracin de la calidad
Soporte automatizado
Medicin
Agilidad
Cenfotec 2010
Hitos en el desarrollo de software
- Mtodos de trabajo
Cenfotec 2010
Mtodo
Rene reglas y guas e incluye:
Conceptos para modelar
Notaciones y vistas
Proceso iterativo paso-a-paso
Heursticos
Reglas
Patrones
Cenfotec 2010
Evolucin de mtodos
Lenguaje y modelo computacional
Tcnicas de programacin
Tcnicas y notaciones de diseo
Tcnicas y notaciones de anlisis
Proceso anlisis diseo programa
Consultores
Libros
Catlogos de patrones
Herramientas
Cenfotec 2010
La jungla de los mtodos
Programacin estructurada por descomposicin
funcional
Programacin estructurada por los datos
Programacin por objetos
Programacin por eventos
Anlisis y diseo estructurados
Anlisis y diseo por objetos
Mtodos formales
Anlisis y diseo por aspectos
Diseo y construccin por agentes
Cenfotec 2010
Hitos en el desarrollo de software
- Proceso
Gracias a Priscilla Garbanzo
Cenfotec 2010
Procesos
Un proceso de software es un conjunto de
actividades, mtodos, prcticas y transformaciones
que la gente usa para el desarrollo y
mantenimiento de software y otros productos
asociados.
Cenfotec 2010
Define Quin debe hacer Qu, Cundo y Cmo
debe hacerlo
No existe un proceso de software universal. Las
caractersticas de cada proyecto (equipo de
desarrollo, recursos, etc.) exigen que el proceso
sea configurable
Qu es un proceso de desarrollo de
software?
Requerimientos nuevos
o modificados
Sistema nuevo
o modificado
Proceso de Desarrollo
de Software
Cenfotec 2010
Define Quin debe hacer Qu, Cundo y Cmo
debe hacerlo.
Proceso
Software
Actividades
(cmo,
cuando)
Roles
(quin)
Artefactos
(qu)
Personas
Ciclo de
vida
Herramienta
Notacin
Prcticas y principios
Paradigma
Proceso de desarrollo de software
Cenfotec 2010
Por qu importa el proceso?
Experiencia de proyectos con poca atencin en el proceso durante las
etapas tempranas
Porcentaje de
esfuerzo
Tiempo
Trabajo productivo
Proceso
Trabajo no productivo
Mc Connell
Cenfotec 2010
Atencin al proceso
Experiencia de proyectos que ponen atencin al proceso en etapas tempranas
de desarrollo.
Porcentaje de
esfuerzo
Tiempo
Trabajo productivo
Proceso
Trabajo no productivo
Mc Connell
Cenfotec 2010
Procesos / ciclos de vida
Catico
Cascada (lineal)
V-cycle
Espiral y variantes
Prototipos: exploratorio, experimental, evolutivo
Incremental, por fases
Contractual
gil
Cenfotec 2010
Cascada - V&V
Requerimientos
Anlisis
Diseo
Programacin
Pruebas
Operacin
Valid.
Valid.
Verif.
Verif.
Pr. Un.
Revalid..
Cenfotec 2010
Evolucin de necesidades
Davis et al., 1988
Cenfotec 2010
Mtricas de productividad
Davis et al., 1988
Cenfotec 2010
Verificacin y validacin
Necesidades del
Negocio
Definicin de
Requerimientos
Diseo del
Sistema
Construccin
Del Sistema
Verifica
Pruebas de
Aceptacin
Pruebas del
Sistema
Pruebas de
Integracin
Pruebas
Unitarias
Verifica
Verifica
Verifica
Valida
Valida
Valida
Valida
Valida
Valida
Valida
Valida
Revisiones
Estticas
Pruebas
Dinmicas
Cenfotec 2010
Ciclo (de vida) V
V-Model Software Development Life Cycle
LEGEND
SDLC
Phase
Baselined
Phase products
Feasibility
Study
Requirements
definition
Statement of
requirements
Project
initiation
Plans
Updated
requirements
Requirements
specification
Requirements
specification
Architectural
design
Design
specification
Detailed
design
Module
designs
Code
Coding
Operation
Project
phase out
Operational
software
Operational
test
Project
completion
Acceptance
test
Accepted
software
Tested
software
Integration
test
Integrated
software
Integration
Tested
modules
Unit
Test
Test data
Test cases
Test data
Test cases
Test data
Test cases
Test data
Test cases
Test data
Test cases
Integration
plan
Build
Files
Test data
Test cases
Review
Review
Walkthrough
Code Reading
Kasse & McQuaid, 2000
Cenfotec 2010
Ciclo V
Especificacin de
requerimientos
Especificacin de
requerimientos
Diseo
arquitectnico
Pruebas de
aceptacin
Pruebas de
integracin
Software
probado
Casos de prueba
Casos de prueba
Revisin
Revisin
Planes
Cenfotec 2010
Modelo en espiral
Cenfotec 2010
Ciclo de vida incremental
Definicin Bosquejo
de Requisitos
Asignar Requisitos
a los Incrementos
Disear la
Arquitectura del Sistema
Desarrollar Incrementos
del Sistema
Validar
Incrementos
Integrar
Incrementos
Validar Sistema
Sistema Incompleto
Sistema
Final
Cada incremento es un subproducto terminado
Cenfotec 2010
Desarrollo incremental
Davis et al., 1988
Cenfotec 2010
Modelo de desarrollo evolutivo
Cenfotec 2010
Desarrollo con reutilizacin
Cenfotec 2010
Desarrollo con reutilizacin
Bersoff & Davis, 1991
Cenfotec 2010
MSF: modelo de proceso para aplicaciones
Microsoft
Cenfotec 2010
Proceso MSF
Fsico
http://
Conceptual
Lgico
Objetos y servicios,
IU,BD lgica
Componentes,
IE, BD fsica
Escenarios
(casos de uso)
Microsoft
Cenfotec 2010
MSF: liberaciones versionadas
Versioned Releases
Time
F
u
n
c
t
i
o
n
a
l
i
t
y
Version 1
Version 2
Version 3
Microsoft
Cenfotec 2010
El RUP es incremental/iterativo
Imagen propiedad de Rational Corporation
Un producto
ejecutable
Cenfotec 2010
Fases e hitos del RUP
tiempo
Objetivos
(Visin)
Arquitectura
Capacidad
Operacional
Inicial
Liberacin
del Producto
Inception Elaboration Construction Transition
Cenfotec 2010
Iteracin
Phase iteration
Inception Elaboration Construction Transition
Cenfotec 2010
Proceso iterativo e incremental
Enfoque
Cascada
Enfoque
Iterativo e
Incremental
Cenfotec 2010
Grado de Finalizacin de Artefactos
Proceso iterativo e incremental
Cenfotec 2010
Proceso iterativo + V&V
R
D
C PU
PI
PA R
D
C PU
PI
PA R
D
C PU
PI
PA
iteracin
Cenfotec 2010
Hitos en el desarrollo de software
- Administracin del riesgo
Cenfotec 2010
Riesgos*
* Gracias a Jennier Solano y Carlos Vargas
Cenfotec 2010
Riesgos
Relacin entre incertidumbre, oportunidad y riesgo
Evento o accin
(Proyecto)
Eventos
desconocidos
(Incertidumbre)
Resultado
(Producto)
Favorable
(Oportunidad)
Desfavorable
(Riesgo)
Cenfotec 2010
Administracin del Riesgo
Cenfotec 2010
Componentes del riesgo
R = { (Si, Pi, Xi) }
Cenfotec 2010
Administracin del riesgo
SEI
Cenfotec 2010
Herramientas de administracin del riesgo
Carlos Vargas
Cenfotec 2010
Los ms importantes
Falta de compromiso de la administracin superior
con el proyecto
Incapacidad de obtener compromiso de los
usuarios
Incomprensin de los requerimientos
Keil, Cule, Lyytinen, Schmidt. 1998*
* 40 proyectos, en varios pases del mundo. CACM 41(11), 11.1998
Cenfotec 2010
Keil, Cule, Lyytinen, Schmidt. 1998*
* 40 proyectos, en varios pases del mundo. CACM 41(11), 11.1998
Top 11
Cenfotec 2010
Hitos en el desarrollo de software
- Modelaje
Cenfotec 2010
Qu es un modelo?
Un modelo es una abstraccin de algo, cuyo objetivo es
comprenderlo antes de construirlo; es la simplificacin
de la realidad, una proyeccin a escala de esta ltima.
Su objetivo es eliminar los detalles irrelevantes y
centrarse en uno o varios aspectos importantes a la vez.
Promueve el entendimiento a travs de los distintos
grupos por medio de lenguajes grficos o formales
para comunicar conceptos especficos.
Cenfotec 2010
Modelos y construccin
Casa del perrito
Casa de habitacin
Rascacielos
aeronutica, automovilstica, electrnica digital, ...
Cenfotec 2010
Construccin de una casa para Fido
Puede hacerlo una sola persona
Requiere:
Modelaje mnimo
Proceso simple
Herramientas simples
Cenfotec 2010
Construccin de una casa
Construida eficientemente y en un tiempo
razonable por un equipo
Requiere:
Modelaje
Proceso bien definido
Herramientas ms sofisticadas
Cenfotec 2010
Construccin de un rascacielos
Construida por un equipo que involucra especialistas
Requiere:
Modelaje en distintos niveles y perspectivas
Proceso muy bien definido
Herramientas sofisticadas
Especialistas
Administracin compleja
Cenfotec 2010
Modelos y vistas
Diagramas de Transicin
Casos de uso
El mundo
Diagrama de objetos
Diagrama de clases
Diagramas de Colaboracin
Diagramas de Secuencia
Vista arquitectnica.
Dividir un sistema en
subsistemas
ej. Paquetes
Vista dinmica.
(comportamiento)
Orden de acciones,
ej. diagrama de
secuencias.
Vista esttica.
(estructura)
Relaciones entre objetos
ej. diagrama de clases.
Modelos intermedios
El software
Cenfotec 2010
Datos de A
Componente A
del problema
Objeto A mapeado en
el modelo de anlisis
Objeto A modificado en estos modelos por
aspectos de diseo. Expandido en otros
Problema del
mundo real
Fase de anlisis
Modelo simplificado que capta la semntica
del dominio del problema en trminos de los
objetos relacionados y su representacin por
medio de diagramas que muestran su
estructura y comportamiento.
Fase de diseo
Modelos que representan el dominio de la
solucin. Afectados por aspectos de
especificacin e implementacin.
Diseo arquitectnico
Diseo detallado
fig. 5.6 Modelos en el anlisis y diseo.
Modelos y desarrollo
Cenfotec 2010
El modelo esencial Modelos de especificacin e
implementacin
Modelo del mundo
El mundo El software
Correspondencia
sistemtica
Modelo del software
Construido para entender. Interpretado
como una manifestacin de los hechos
Construido para especificar. Interpretado
como una descripcin del comportamiento
Variedades de modelos
Cenfotec 2010
El modelaje es central
Comunicar la estructura y comportamiento deseados para
el sistema
Visualizar y controlar la arquitectura del sistema
Comprender mejor el sistema en construccin: identificar
oportunidades de simplificacin y reutilizacin
Manejar el riesgo
Establecer correspondencia entre artefactos de diversas
actividades de desarrollo y diversos niveles de diseo
Distribuir el trabajo entre los miembros de un equipo
Planificar y asegurar la integracin de componentes,
subsistemas, artefactos
Cenfotec 2010
Hitos en el desarrollo de software
- Objetos y componentes
Cenfotec 2010
Objetos
Objetos renen estado (datos) y accin
(operaciones) en una sola entidad
Cmputo se realiza mediante colaboracin entre
objetos
Mejor correspondencia con realidad modelada
Uniformidad en todas las actividades de desarrollo
Cenfotec 2010
Separacin
Cenfotec 2010
Separacin
Cenfotec 2010
Separacin
Cenfotec 2010
Colaboracin - objetos
Atributos
limpiar
dibujarLinea
Atributos
dibujar
imprimir
mtodo
interno
actualizar
Atributos
insertar
estaLleno
mtodo
interno 1
eliminar
mtodo
interno 2
Atributos
insertar
estaLleno
mtodo
interno 1
eliminar
mtodo
interno 2
Flujo de datos
Flujo de control
Operacin del sistema
Cenfotec 2010
Componente (seguridad)
los componentes son muy
cercanos a los mdulos
con interfaces que
especifican su contrato
(Szypersky, 1997)
Este es un componente
para administrar la
seguridad de un sistema.
Usuarios, grupos,
derechos, etc.
Servicios de
Parametrizacin
Servicios de
Autorizacin
Servicios de
Autenticacin
Cenfotec 2010
Hitos en el desarrollo de software
-Administracin de requerimientos (requisitos)
Cenfotec 2010
Requerimientos
Delimitan el qu
Cmo obtenerlos
Cmo depurarlos y validarlos
Cmo especificarlos
Cmo administrarlos
Cmo ligarlos al resto del desarrollo
Cmo darles mantenimiento
Cenfotec 2010
Bueno!
Cenfotec 2010
Costo de los errores
Sistema
Cenfotec 2010
Qu es un requerimiento?
Una condicin o capacidad necesitada por un
usuario para resolver un problema (necesidad) o
lograr un objetivo.
Condicin o capacidad que debe ser cumplida o
poseda por un sistema o componente de un
sistema para satisfacer un contrato, estndar,
especificacin o cualquier otro documento formal
impuesto.
Una representacin documentada de una
condicin o capacidad.
Cenfotec 2010
Qu es Ingeniera de requerimientos?
Actividades para descubrir, documentar y mantener
un conjunto de requerimientos.
Tcnicas sistemticas y repetibles.
Necesidades de negocio y necesidades tcnicas.
Forma parte del proceso de desarrollo.
Cenfotec 2010
Procesos de Ingeniera de requerimientos
Adquisicin
Anlisis y
Negociacin
Documentacin Validacin
Necesidades del Usuario
Informacin de Dominio
Informacin de SI Existentes
Regulaciones
Estndares
Documento de
Requerimientos
Requerimientos
Aceptados
KO
OK
Cenfotec 2010
Hitos en el desarrollo de software
- Arquitectura
Cenfotec 2010
Arquitectura
La forma en que las partes trabajan en conjunto
para formar el todo [Beck 1994]
La estructura de los componentes de un
programa/sistema, sus interrelaciones, y los
principios y pautas que gobiernan su diseo ...
[Garlan 1995].
Es decir, la arquitectura delinea la estructura
general de un sistema.
Cenfotec 2010
Arquitectura - por qu
Desarrollo de repertorios de mtodos, tcnicas,
patrones y modismos para estructurar sistemas
complejos de software
Sacar provecho de dominios especficos para
proveer plataformas reutilizables (frameworks) para
familias de productos
Cenfotec 2010
Arquitectura - qu
Foco de atencin: organizacin general, control
global, protocolos (comunicacin, sincronizacin,
acceso a datos), asignacin funcionalidad a
elementos, distribucin fsica, composicin de
elementos, escala, rendimiento, eleccin entre
alternativas
Representacin: componentes y conectores
Complementar mtodos de diseo
Cenfotec 2010
Ejemplo de Arquitectura
Pantallas
Pginas
Gestor
Clase X
Clase
Administradora
de Xs
Acceso a
Datos
BD
Lgica del negocio Presentacin
Acceso a datos
Cenfotec 2010
Hitos en el desarrollo de software
-Reutilizacin
Cenfotec 2010
Reutilizacin*
Gracias a Jos A. Snchez
Cenfotec 2010
Reutilizacin
"la reaplicacin de una variedad de conocimientos
acerca de un sistema a otro sistema similar, con el
propsito de reducir el esfuerzo del desarrollo y
mantenimiento de este otro sistema
Biggerstaff
Cenfotec 2010
Reutilizacin de componentes
Mltiples Sistemas
Componentes
Reutilizados
Cenfotec 2010
Reutilizacin en arquitectura multicapas
Aplicacin 1 Aplicacin 2
Servicios de usuario
Servicios de negocio
Servicios de datos
Pueden ser
implementados como
servicios Web
Cenfotec 2010
Reutilizacin de clases: Herencia
+Persona()
+toString()
+antiguedad()
+enviarMail()
-nombre : String
-email : String
-ingreso : int
Persona
+Estudiante()
+toString()
-carrera : String
Estudiante
+Funcionario()
+toString()
+porcentajeAntiguedad()
-salarioBase : int
Funcionario
+Prof esor()
+toString()
-especialidad : String
Profesor
+Administrativo()
+toString()
-puesto : String
Administrativo
Cenfotec 2010
Reutilizacin de Clases: Composicin
BufferedReader InputStreamReader InputStream
1 1 1 1
String
Char Byte
Cenfotec 2010
Heurstica de la reutilizacin
La nocin de reutilizacin ha existido siempre
Experiencia: A un nuevo problema intentamos
aplicar las soluciones usadas en problemas
similares
Adaptacin: Ajustamos la solucin al nuevo
problema
Cenfotec 2010
Conocimiento reutilizable
Dominio de aplicacin
Requerimientos
Arquitectura o plantillas (templates)
Diseos
Cdigo
Documentacin
Planes
Herramientas, etc.
Cenfotec 2010
Ventajas de la reutilizacin
Reducir costos, riesgos y tiempo
Software de mayor calidad y confiabilidad
Facilita el mantenimiento
Creacin de sistemas complejos
Habilita el trabajo con prototipos
Cenfotec 2010
Metodologa y organizacin
Ingeniera de dominios versus Ing. de aplicaciones
Ingeniera de Dominios: Modelar el Dominio
Componentes
Arquitecturas
Ingeniera de Aplicaciones: Ensamblar Aplicaciones
Requerimientos (Arquitecturas, Componentes)
Demandar nuevos componentes
Cenfotec 2010
Hacer, reutilizar
Ing. Dominios vs Ing. Aplicaciones
Requerimientos
Proceso de
desarrollo
Aplicacin
Inventario
de
componentes
Generalizar
Mercado abierto
Conceptos
Sistemas existentes
Adquirir-adaptar
Desarrollar
Re-ingeniera
[Wooding 95]
Localizar,
adaptar
Reutilizar
Cenfotec 2010
Hitos en el desarrollo de software
- Servicios
- Arquitectura basada en modelos
Cenfotec 2010
SOA
Registro de
Servicios
Proveedor
Consumidor
de
Servicios
Publicacin
Bsqueda
Enlace y Consumo
Los mensajes viajan
en forma de documentos.
Cenfotec 2010
SOA
Registro de Servicios
Es un repositorio global que facilita la localizacin servicios
ofrecidos.
Normalmente toma la forma de un UDDI.
Los contratos de las operaciones ofrecidos por los
componentes son expuestos.
Proveedor
Un sistema o un componente de software que publica una
operacin con la descripcin de su acceso y los datos
requeridos.
Consumidor
Es la aplicacin o sistema que consume los datos ofrecidos
por el proveedor.
Cenfotec 2010
SOA y MDA
En MDA se procura mantener una arquitectura
comn de los datos que no se vea afectada por las
implementaciones particulares de las aplicaciones.
MDA se define en 3 pasos:
Modelo independiente de plataforma (PIM)
Transformar PIM en modelos especficos para
una plataforma (PSM)
Transformar el PSM en cdigo.
Cenfotec 2010
Aplicacin 2 Aplicacin 1
Pasos de la MDA
PIM
PSM PSM
Cdigo Cdigo
Transformacin Transformacin
Transformacin Transformacin
Cenfotec 2010
Modelos de Negocio
Del Diccionario al Servicio
PIM
PSM
Cdigo
PIM
Diccionario
Semntica
Descripcin del
Servicio
Semntica y metadatos
Formato
especfico
Cenfotec 2010
Estructura de una SOA empresarial
Apl. Apl. Apl. Apl.
UDDI
aplicacin
Administracin de
Proceso
SOAP / ESB
Servicio
Publicacin
Cenfotec 2010
SOA y EAI
La definicin de fachadas de servicios para las
aplicaciones crea un grid de servicios que
representa las funciones del negocio.
Apl. Apl. Apl. Apl.
Grid de Servicios
El Grid de servicios viene a
representar un nivel de
abstraccin integrador de la
lgica de negocios.
Es una medida importante de
cara a migrar sistemas viejos.
Cenfotec 2010
Mtodos formales
raz :: this:float -> result:float
pre :: this >= 0.0
post :: this == result * result
{-uAc}
Cenfotec 2010
Mtodos formales
Utilizan formalismos lgico-matemticos para
describir artefactos informticos
Permiten hacer precisas nociones que de otra
manera seran vagas
Posibilitan anlisis riguroso de especificaciones
Posibilitan la verificacin de diseos y cdigo
Cenfotec 2010
Mtodos formales
Meta: escribir cdigo correcto por construccin a
partir de especificaciones
Idea clave: modelos y semntica
Idea clave: refinamiento
Cenfotec 2010
Modelos
Describir el software (sistema, componente) de
manera abstracta
Describir la interaccin con el ambiente de manera
precisa
Describir la interaccin entre componentes de
manera precisa y abstracta
Posibilitar el anlisis de consistencia y completitud
Cenfotec 2010
Especificacin
Describir las propiedades estructurales y estticas
del estado mediante predicados y tipos de datos
abstractos: invariantes
Describir las operaciones mediante precondiciones
y postcondiciones
Describir ciclos de vida e interacciones mediante
lgebras de procesos o lgica temporal
Cenfotec 2010
Hitos en el desarrollo de software
- Herramientas
Cenfotec 2010
Herramientas
Modelaje visual
Anlisis esttico, de impacto de cambios
Verificacin formal
Manejo de configuracin, de versiones
Browsers y buscadores de componentes
Generadores de cdigo
Adaptadores de interfaces
Apoyo al refinamiento y la integracin
Generacin de casos de prueba
Anlisis de cobertura de pruebas
Modelos y medicin de rendimiento
Generacin de documentacin
Cenfotec 2010
Hitos en el desarrollo de software
- Mtricas
Cenfotec 2010
Mtricas
Calidad y productividad
Para qu medir?
Qu medir?
Cmo medir? Con qu?
Cundo y cada cunto?
Quin?
Tengo los datos, qu hago con ellos?
Cmo retroalimento mi proceso?
Cenfotec 2010
Hitos en el desarrollo de software
- Administracin de la calidad
Cenfotec 2010
Qu es calidad?
"La totalidad de las caractersticas de un producto o
servicio, que tienen que ver con su capacidad de
satisfacer necesidades enunciadas o implcitas"
ISO 8402
The International Standard Quality Vocabulary
Cenfotec 2010
Una definicin
Grado con el cual el cliente o usuario percibe que
el software satisface sus expectativas
IEEE 729-83
Cenfotec 2010
Es multidimensional
Debe
trabajar por
largo tiempo
Buen
rendimiento
Sin pulgas
ni defectos
Fcil de usar Adaptado a mis
necesidades
especficas
Ser capaz de usarlo
con UNIX o
Windows
Cenfotec 2010
5. Transcendente
(excelencia innata)
Reputacin
4. Basada en el producto
(obtener lo que se paga)
Mismo producto
ms caractersticas
2. Basada en el usuario
(adecuacin al propsito)
Visin del cliente
3. Basada en el proceso
(conforme a los requerimientos)
Satisfacer especificacin del cliente
1. Basada en el valor
(diseo s/ precio)
Calidad por costo
Calidad
Vistas de calidad - Garvin
Cenfotec 2010
Modelo de calidad ISO 9126
Cenfotec 2010
Cmo un factor
de abajo afecta
un factor a la
derecha
Cor-
recti-
tud
Utili-
zabili-
dad
Efi-
cien-
cia
Con-
fiabili-
dad
Inte-
gridad
Adap-
tabili-
dad
Exac-
titud
Ro-
bus-
tez
Correctitud
Utilizabilidad
Eficiencia
Confiabilidad
Integridad
Adaptabilidad
Exactitud
Robustez
Conflictos entre factores
M
c
C
o
n
n
e
l
l
Cenfotec 2010
Problemas serios de calidad
Empresa Total
Errores
Cdigo
(%)
Diseo
(%)
Requerim.
(%)
Logstica
(%)
A 4,319 8 22 51 19
B 488 3 19 66 12
C 1,292 7 11 57 25
Weinberg
Cenfotec 2010
Fuentes de defectos
Bender & Associates
Cenfotec 2010
Costos de reparar defectos
Requerimientos $ 45 (< 1 h./p.)
Diseo $ 450 (6 h./p.)
Codificacin $ 1,500 (20 h./p.)
Integracin $ 1,500 (20 h./p.)
Pruebas finales $ 45,000 (600 h./p.)
Entrega $450,000 (6,000 h./p.)
Hewlett-Packard 1991
Cenfotec 2010
Costo de correccin segn etapa
Cenfotec 2010
Trabajo y re-trabajo
requerimientos diseo programacin pruebas aceptacin
Cenfotec 2010
Deteccin tradicional
requerimientos diseo programacin pruebas aceptacin
Cenfotec 2010
Acumulacin de defectos
Anlisis de Reqs.
Diseo
Construccin
Pruebas
Especif.
correcta
PROBLEMA
Especif.
incorrecta
Diseo
correcto
Diseo
errneo
Diseo de
espec. errnea
Construccin
correcta
Construccin
errnea
Construy s/un
diseo errneo
Funciones
correctas
Errores
corregibles
Errores
incorregibles
Construy s/
ideas errneas
Problemas
ocultos
Davis
Cenfotec 2010
Correccin tarda de defectos es cara
Fase en que se
crea un defecto
Costo de
corregir
Requerimientos
Arquitectura
Diseo detallado
Construccin
Requerimientos
Arquitectura
Diseo detallado Construccin
Liberacin
50-200X
1X
Fase en que se corrige un defecto
50-200X
1X
McConnell
Cenfotec 2010
Administracin
Calidad
Ingeniera
Documentacin
Procedimientos
Estndares
Pruebas
Admin. proy.
Admin. Config.
Modelos de proceso
Mtodos de diseo
UML, SSADM, Yourdon
Calidad como parte del desarrollo
Cenfotec 2010
Corregir ms defectos ms temprano
McConnell
Fase en que se
crea un defecto
Costo de
corregir
Requerimientos
Arquitectura
Diseo detallado
Construccin
Requerimientos
Arquitectura
Diseo detallado Construccin
Liberacin
50-200X
1X
Fase en que se corrige un defecto
50-200X
1X
Arreglar ac
No ac
Cenfotec 2010
Filtrado de defectos
Cenfotec 2010
Deteccin localizada
requerimientos diseo programacin pruebas aceptacin
Cenfotec 2010
Ciclo-V
Kasse & McQuaid, 2000
Cenfotec 2010
Proceso iterativo + V&V
R
D
C PU
PI
PA R
D
C PU
PI
PA R
D
C PU
PI
PA
iteracin
Cenfotec 2010
Reducir costo de defectos
McConnell
Fase en que se
crea un defecto
Requerimientos
Arquitectura
Diseo detallado
Construccin
Requerimientos
Arquitectura
Diseo detallado Construccin
Liberacin
1X
Fase en que se corrige un defecto
1X
10X?
10X?
Costo de
corregir
Cenfotec 2010
Prevencin y deteccin temprana
Cenfotec 2010
Hitos en el desarrollo de software
- Mejoramiento de procesos
Cenfotec 2010
Inicial
Repetible
Definido
Administrado
Optimizante
Capacidad depende de los individuos
Disciplinado, controles bsicos
Estndar y consistente
Cuantificable y predecible
Mejorando continuamente
Administracin de configuraciones
Aseguramiento de calidad
Manejo de subcontratos
Seguimiento de proyectos
Planificacin de proyectos
Manejo de requerimientos
Revisiones
Coordinacin intergrupos
Ingeniera de producto
Administracin integrada
Programa capacitacin
Definicin proceso
Administracin de la calidad
Administracin cuantitativa proceso
Prevencin de defectos
Administracin cambio tecnolgico
Administracin cambio proceso
CMM
Cenfotec 2010
Visibilidad del proceso - CMM
Cenfotec 2010
Inicial
Repetible
Definido
Administrado
Optimizante
?
Efecto esperado
Cenfotec 2010
Efectos avance en CMM
Hersleb et al., 1997
Cenfotec 2010
Perfil de CoSQ CMM-nivel 1
Krasner, 1999
Cenfotec 2010
Perfil de CoSQ CMM-nivel 3
Krasner, 1999
Cenfotec 2010
CSC tendencias en calidad
McGarry &Decker, 2002
Cenfotec 2010
CSC tendencias en productividad
McGarry &Decker, 2002
Cenfotec 2010
BCS - reutilizacin
Bill Curtis, 2000
Cenfotec 2010
Raytheon predecibilidad del costo
Bill Curtis, 2000
Cenfotec 2010
Ericsson precisin del calendario
Bill Curtis, 2000
Cenfotec 2010
Tata mejoras en estimacin
Bill Curtis, 2000
Cenfotec 2010
Raytheon reduccin costo unidades
Bill Curtis, 2000
Cenfotec 2010
Telcordia reduccin costo pruebas
Bill Curtis, 2000
Cenfotec 2010
Telcordia satisfaccin de usuarios
Bill Curtis, 2000
Cenfotec 2010
CoSQ vrs. Mejoras en rendimiento
Krasner, 1999
Cenfotec 2010
Hitos en el desarrollo de software
- Agilidad
Cenfotec 2010
Cenfotec 2010
Principles behind the Agile Manifesto
Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.
Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
Business people and developers must work
together daily throughout the project.
Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.
The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.
Working software is the primary measure of
progress.
Agile processes promote sustainable development.
The sponsors, developers, and users should be
able
to maintain a constant pace indefinitely.
Continuous attention to technical excellence
and good design enhances agility.
Simplicity--the art of maximizing the amount
of work not done--is essential.
The best architectures, requirements, and designs
emerge from self-organizing teams.
At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.
Cenfotec 2010
Estructura de un proyecto XP
From Don Wells site http://www.extremeprogramming.org/
Cenfotec 2010
Scrum
Cenfotec 2010
Scrum
Cenfotec 2010
Scrum
Cenfotec 2010
Scrum
Cenfotec 2010
Hitos en el desarrollo de software
- tica y profesionalismo
Cenfotec 2010
Actitud profesional
Robert Binder explica a su hijo porqu su libro sobre Pruebas para
sistemas orientados a objetos es tan grande (1225 pginas) y ha tomado
tanto tiempo escribir:
Probar es complicado y yo soy un ingeniero. Asegurar que
las cosas trabajan bien es muy importante para los ingenieros.
Qu pensaras que pasara si nuestro arquitecto no hubiera
hecho nuestra casa suficientemente fuerte porque le dio
pereza? Podra caerse y lastimarnos. Supon que los
ingenieros de GM hubieran hecho solo unas cuantas pginas
de pruebas sobre el software que controla los frenos de
nuestro carro. Podran no funcionar cuando los necesitamos y
chocaramos. Por eso, cuando los ingenieros construimos
algo o respondemos una pregunta acerca de cmo construir
cosas, debemos estar seguros de que estamos en lo correcto.
Debemos asegurarnos que nada se nos escapa. Y esto
requiere mucho trabajo.
Cenfotec 2010
Estado de madurez profesional
Inexistente (0) Ad-hoc (1) Especfico (2) Maduro (3)
Cuerpo de conocimientos
Asociaciones profesionales
Cdigo de tica
Sistema educativo inicial
Acreditacin de programas de educacin
profesional
Desarrollo de habilidades profesionales
Educacin profesional
continua
Certificacin de
profesionales
Licenciamiento de profesionales
Cenfotec 2010
SWEBOK
Cenfotec 2010
Educacin
profesional inicial
Desarrollo de
habilidades
Certificacin
Licenciamiento
Desarrollo
profesional
individual
Status profesional
pleno
Infraestructura de
apoyo para la
profesin
Influencias de las
asociaciones
profesionales
Asociaciones
profesionales
Acreditacin
Cdigo de tica
Desarrollo
profesional
McConnell; Tripp