Sunteți pe pagina 1din 241

Cenfotec 2010

Vistazo a la Ingeniera del software


Ignacio Trejos Zelaya

Profesor Asociado, Instituto Tecnolgico de Costa Rica
Rector y profesor, Centro de Formacin en Tecnologas de Informacin
(Cenfotec)
Con agradecimientos a: Lilliana Sancho, Julio Crdoba, Johann Granados,
Gabriela Romn, Laura Coto, Laura Valenzuela, Priscilla Garbanzo, Patricia
Zamora, Herbert Barrientos, Carlos Vargas, Mario Agero, Mara Eugenia Ucrs,
Priscilla Chaves, Daniel Alvarado
Cenfotec 2010
the only standards worth sharing are the
highest ones
Keith Jarrett, 1994
Cenfotec 2010
Obviar el diseo
Cenfotec 2010



Competitividad y calidad
Cenfotec 2010
Competitividad factores principales
Conocimiento de los mercados: habilidad para acceder
informacin sobre el mercado, para identificar mejoras de
infraestructura, y para mejorar las destrezas de mercadeo;
Calidad en el producto/servicio: la habilidad para
satisfacer demanda por parte de consumidores mejor
informados, con mayor conocimiento sobre calidad;
Eficiencia del sector pblico: capacidad de mejorar el
papel desempeado por el sector pblico en apoyo del
sector productivo;
Productividad: la necesidad de una mayor eficiencia en el
uso de capital humano y fsico.
ICCI-2. Diagnstico del cluster de T.I. en Costa Rica
Cenfotec 2010


Contexto de la Ingeniera del software

Informtica
Software y Tecnologa
Cenfotec 2010
Qu es la Informtica?
La informtica comprende las disciplinas que tienen
que ver con la informacin y su procesamiento por
medios automticos
Cenfotec 2010
El software
El software consiste de
programas, datos,
documentacin y
procedimientos operativos
mediante los cuales los
sistemas computacionales
son tiles al ser humano.
Ejemplo: Cajero automtico
Cenfotec 2010
Tipos de software
Los productos de software pueden ser
desarrollados para un cliente en particular, para un
mercado general o para formar parte de un sistema
hardware/software.
Los productos de software pueden ser:
Genricos desarrollados para ser vendidos a
una variedad de clientes
A la medida desarrollados para un cliente
especfico, de acuerdo con sus necesidades o
especificaciones
Empotrados parte de un sistema mayor, con
interfaces hacia hardware y restricciones
severas de recursos
Cenfotec 2010
Aspectos a considerar
El software es un producto mental, es abstracto.
Se desarrolla, no se fabrica. Los defectos se
introducen en el anlisis, el diseo o la
construccin.
No se deteriora con el tiempo.
Muchas veces se hace artesanalmente y a la
medida.
Cuando falla, no es (fcilmente) sustituible.
Cenfotec 2010
Impacto del software
El software es central para la Tecnologa de la
informacin.
La TI ofrece gran potencial para mejorar e innovar
las empresas y viabilizar nuevos productos y
servicios.
Cenfotec 2010
Demanda de tecnologa
Mundialmente, la demanda por TI crece
Las aplicaciones de TI son variadas:
Computadoras en empresas e instituciones
Computadoras en oficinas y hogares
Microprocesadores incrustados en aparatos
domsticos y otras aplicaciones empotradas
Internet, comercio digital, servicios pblicos
Dispositivos mviles
La TI est cambiando a las sociedades modernas
Cenfotec 2010
Demanda de tecnologa
Webservice
Webservice
Webservice
Webservice
Cenfotec 2010
Importancia del software
Las economas de todas naciones desarrolladas
dependen del software. Muchas economas en
desarrollo tambin dependen del software.
Cada vez hay ms sistemas controlados por
software.
El gasto en desarrollo de software representa una
fraccin significativa del PIB de todos los pases
desarrollados, aunque es menor en los menos
desarrollados.
Veamos cmo la TI y el software impactan la
economa de un pas en desarrollo: India.
Sommerville
Cenfotec 2010


Contexto de la Ingeniera del software

Ingeniera
Disciplinas informticas
Ingeniera del software
Cenfotec 2010
Qu es una ingeniera?
La ingeniera nace tanto de la prctica (fabrica) como
de la teora (ratiocinatio). La prctica es una facilidad
mecnica, desarrollada mediante el estudio y el
ejercicio. La teora es la capacidad de describir y
explicar el objeto diseado.

Marcus Vitruvius Pollio, circa 25 AC
Cenfotec 2010
La ingeniera es ...
el arte de dirigir las grandes fuentes de poder en
la Naturaleza para el uso y la conveniencia del
Hombre - Thomas Tredgold, 1828.
la aplicacin de principios cientficos a la
conversin ptima de los recursos naturales en
estructuras, mquinas, productos, procesos y
sistemas para el beneficio de la Humanidad
Encyclopdia Britannica, 1990.
Cenfotec 2010
Mary Shaw, 1990
Crear soluciones eficaces respecto del costo ... La Ingeniera
no es solamente acerca de la resolucin de problemas; es
acerca de resolver problemas con un uso econmico de los
recursos, incluyendo el dinero. ... a problemas prcticos ... La
Ingeniera trata de problemas prcticos cuyas soluciones
importan a gente fuera del dominio ingenieril los clientes. ...
mediante la aplicacin de conocimiento cientfico ... La
Ingeniera resuelve problemas de una manera particular:
aplicando ciencias, matemtica y anlisis de diseos. ... a la
construccin de cosas... La Ingeniera hace nfasis en las
soluciones, que usualmente son artefactos tangibles. ... al
servicio de la Humanidad. La Ingeniera sirve no solo al
cliente inmediato, sino que desarrolla tecnologa y pericia que
apoya a la sociedad.
Cenfotec 2010
Educacin


Ciencia de la Computacin
versus
Ingeniera
(en Sistemas,
del software,
en Telemtica,
etc.)
Cenfotec 2010
Ciencia
Los futuros cientficos, quienes aadirn a nuestro
cuerpo de conocimientos, deben aprender:
Lo que es cierto (cuerpo de conocimiento
organizado acerca de los fenmenos de inters)
Cmo confirmar o refutar modelos del mundo
Cmo extender el conocimiento acerca de lo que
es cierto en su campo
Parnas
Cenfotec 2010
Ingeniera
Los futuros ingenieros, quienes disearn productos dignos
de confianza, deben aprender
Lo que es cierto y verdadero de su especialidad (el
cuerpo organizado de conocimientos)
Cmo aplicar ese cuerpo de conocimientos
Cmo aplicar un rea ms amplia de conocimientos,
necesaria para construir productos completos que
funcionan en ambientes realistas
La disciplina de anlisis y diseo que debe seguirse para
cumplir con las responsabilidades atinentes a aquellos
que construyen productos para otros
Parnas
Cenfotec 2010
Cenfotec 2010
Cenfotec 2010
Cenfotec 2010
Evolucin de las ingenieras
virtuosos y amateurs talentosos
intuicin y fuerza bruta
progreso azaroso
transmisin casual
uso extravagante de materiales
manufactura para uso, no para
venta
artesanos hbiles
procedimientos establecidos
refinamiento pragmtico
capacitacin en mecnica
casual
preocupacin por costos y
disponibilidad de materiales
manufactura para vender
ciencia
produccin
comercial
artesana
ingeniera profesional
profesionales educados
anlisis y teora
progreso basado en ciencia
clase profesional educada
nuevas aplicaciones
posibilitadas por anlisis
segmentacin de mercado
por variedad de productos
Mary Shaw
Cenfotec 2010
Evolucin de la Ingeniera Civil
ciencia
produccin
comercial
artesana
ingeniera profesional
Siglo primero: arquitectura romana
1700: Esttica
1700: Resistencia de materiales
1750: Propiedades de
los materiales
1850: Anlisis completo
de un puente
Mary Shaw
Cenfotec 2010
Cenfotec 2010
Los ingenieros
Un ingeniero aplica conocimiento terico y
cientfico en el diseo y construccin de artefactos
de valor econmico para utilizacin prctica.
El fundamento terico permite verificar, mediante
clculos sistemticos y antes de construir el
artefacto, que el diseo satisfar las
especificaciones, las restricciones tcnicas y las
limitaciones de recursos.
Adquieren responsabilidad ante los clientes y el
pblico.
Cenfotec 2010
Una profesin - Slo una?
Personas, organizaciones y sociedades dependen
del correcto funcionamiento de la tecnologa de
informacin
El cambio constante del entorno y del conocimiento
exige una actualizacin profesional continua
Hay responsabilidades ante la sociedad, las
organizaciones y la profesin
Cenfotec 2010
Cenfotec 2010
Las disciplinas informticas
Sistemas de
informacin
Informtica
Ciencia de la
Computacin
Ingeniera de
computadoras
Ingeniera
del software
Ingeniera
Telemtica
Tecnologa
de informacin
Ing. Elctrica
y Electrnica
Cenfotec 2010
Espacio informtico
Aspectos
Organizacionales
y Sistemas de
Informacin
Tecnologas de
aplicacin
Mtodos de
Software y
tecnologas
Infraestructura
de sistemas
Hardware de
computadoras y
arquitectura
Teoras
Principios
Innovacin
Aplicacin
Implantacin
Configuracin
Cenfotec 2010
(Ciencia de la) Computacin
Aspectos
Organizacionales
y Sistemas de
Informacin
Tecnologas de
aplicacin
Mtodos de
Software y
tecnologas
Infraestructura
de sistemas
Hardware de
computadoras y
arquitectura
Teoras
Principios
Innovacin
Aplicacin
Implantacin
Configuracin
Cenfotec 2010
Ciencia de la Computacin?
La (Ciencia de la) Computacin trata de la teora y de los
fundamentos.
Qu es automatizable?
Qu es computable?
Qu puede computarse eficientemente?
Cmo pueden comprenderse los fenmenos
computacionales?
Cules conceptos fundamentan las disciplinas de
diseo de sistemas computacionales?
Cules conceptos matemticos y lgicos son tiles
para formular modelos y teoras de los fenmenos
computacionales?
Cmo describir los cmputos (lenguajes y
paradigmas)?
Cenfotec 2010
Sistemas de Informacin
Aspectos
Organizacionales
y Sistemas de
Informacin
Tecnologas de
aplicacin
Mtodos de
Software y
tecnologas
Infraestructura
de sistemas
Hardware de
computadoras y
arquitectura
Teoras
Principios
Innovacin
Aplicacin
Implantacin
Configuracin
Cenfotec 2010
Sistemas de informacin?
Las carreras de Sistemas de informacin tienen
que ver con:
Adquisicin, puesta en marcha y administracin
de recursos y servicios de Tecnologa de la
informacin (la funcin de sistemas de
informacin).
Desarrollo y evolucin de infraestructuras de
tecnologa y sistemas para su uso en procesos
organizacionales (desarrollo de sistemas).
Requieren formacin en Administracin de
negocios.
Cenfotec 2010
Ingeniera de Computadoras
Aspectos
Organizacionales
y Sistemas de
Informacin
Tecnologas de
aplicacin
Mtodos de
Software y
tecnologas
Infraestructura
de sistemas
Hardware de
computadoras y
arquitectura
Teoras
Principios
Innovacin
Aplicacin
Implantacin
Configuracin
Cenfotec 2010
Ingeniera de computadoras?
La Ingeniera de computadoras comprende la ciencia y la
tecnologa de la especificacin, anlisis, diseo,
construccin, implementacin y mantenimiento de sistemas
computacionales modernos y de equipo controlado por
computadoras.
Los ingenieros de computadoras tienen una comprensin
profunda de la operacin y del diseo de los sistemas
computacionales, con componentes de hardware y
software, ms all de una apreciacin del funcionamiento o
uso de estos.
Los ingenieros de computadoras disean hardware,
software, redes, instrumentos y equipos computadorizados
para resolver problemas tcnicos en diversas reas de
aplicacin.
Cenfotec 2010
Ingeniera del software
Aspectos
Organizacionales
y Sistemas de
Informacin
Tecnologas de
aplicacin
Mtodos de
Software y
tecnologas
Infraestructura
de sistemas
Hardware de
computadoras y
arquitectura
Teoras
Principios
Innovacin
Aplicacin
Implantacin
Configuracin
Cenfotec 2010
Ingeniera del software?
La ingeniera del software se ocupa de las teoras, mtodos
y herramientas para el desarrollo profesional de software:
comprende todos los aspectos de la produccin de
software
se ocupa de los problemas prcticos de desarrollar e
implantar software til
Los ingenieros del software adoptan un enfoque sistemtico
y organizado para realizar su trabajo y utilizan tcnicas y
herramientas apropiadas, dependiendo del problema por
resolver, las restricciones del desarrollo y los recursos
disponibles.
Sommerville
Cenfotec 2010
Tecnologa de la Informacin
Aspectos
Organizacionales
y Sistemas de
Informacin
Tecnologas de
aplicacin
Mtodos de
Software y
tecnologas
Infraestructura
de sistemas
Hardware de
computadoras y
arquitectura
Teoras
Principios
Innovacin
Aplicacin
Implantacin
Configuracin
Cenfotec 2010
Tecnologa de la informacin?
Asegurar que los sistemas y las tecnologas de informacin de las
organizaciones trabajan apropiadamente y son seguros, confiables,
disponibles, etc.
Evaluar y seleccionar productos de hardware, software y
comunicaciones apropiados para una organizacin.
Integrar productos con las necesidades e infraestructura
organizacionales.
Instalar, adaptar y mantener las aplicaciones para los usuarios de la
organizacin.
Actualizar, mejorar, mantener, reemplazar sistemas de cmputo y
comunicaciones.
Capacitar y apoyar a la gente que usa la TI en la organizacin; resolver
problemas de configuracin y uso.
Satisfacer necesidades humanas que surgen del uso de la TI.
Desarrollar tecnologas digitales habilitadas por la Web para los
propsitos informativos de las organizaciones.
Cenfotec 2010
Ingeniera Telemtica
Aspectos
Organizacionales
y Sistemas de
Informacin
Tecnologas de
aplicacin
Mtodos de
Software y
tecnologas
Infraestructura
de sistemas
Hardware de
computadoras y
arquitectura
Teoras
Principios
Innovacin
Aplicacin
Implantacin
Configuracin
Cenfotec 2010
Ingeniera Telemtica?
La Telemtica se centra en:
Transporte y distribucin de informacin
Infraestructura para la computacin distribuida
Cenfotec 2010



Caracterizacin y evolucin de la Ingeniera del
software
Cenfotec 2010
IEEE Computer Society
La aplicacin de la Ingeniera al software: la
aplicacin de enfoques sistemticos, disciplinados
y cuantificables al desarrollo, operacin y
mantenimiento del software.
Aquella rama de la Ingeniera que se ocupa del
desarrollo, operacin y mantenimiento del
software.
IEEE Computer Society
Cenfotec 2010
McDermid, 1991
Ingeniera del software es la ciencia y el arte de
especificar, disear, implementar y evolucionar
con economa, oportunidad y elegancia
programas, documentacin y procedimientos
operativos mediante los cuales los sistemas
computacionales son tiles al ser humano.
McDermid, Software Engineers Reference Book
Cenfotec 2010
Finkelstein y Kramer, 2000
la rama de la Ingeniera de sistemas que trata del
desarrollo de grandes y complejos sistemas intensivos en
software. Se enfoca en:
las metas del mundo real de tales sistemas, as como los
servicios que estos proveen y las restricciones sobre
ellos
la especificacin precisa del comportamiento y la
estructura de los sistemas, y la implementacin de estas
especificaciones
las actividades requeridas a fin de desarrollar un
aseguramiento de que se han satisfecho las
especificaciones y las metas del mundo real
la evolucin de tales sistemas en el tiempo y a travs de
familias de sistemas
los procesos, mtodos y herramientas para el desarrollo
de sistemas intensivos en software de una manera
econmica y oportuna.
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
Evolucin de la programacin
2000
1980
1950
1970
1990
1960
Programar
de cualquier
manera
Programar
en pequeo
Programar
en grande
Programar
en el mundo
Mary Shaw
Cenfotec 2010
Evolucin de la abstraccin
2000
1980
1950
1970
1990
1960
Programar
de cualquier
manera
Programar
en pequeo
Programar
en grande
Programar
en el mundo
trozos arquitectnicos
herencia
tipos abstractos de datos
objetos
estructuras de datos
mnemnicos, macros
tipos en los lenguajes
tipos abstractos de datos
Mary Shaw
Cenfotec 2010
Sinopsis cronolgica
Especificaciones
simples de entrada y
salida
nfasis en
algoritmos
Estructuras y tipos
de datos
Programas
ejecutan una vez y
terminan
Sistemas con
especificaciones
complejas
nfasis en
integracin y
administracin de
sistemas
Bases de datos
longevas
Ensambles de
programas ejecutan
continuamente
1960 + 5
Programar
de cualquier
manera
1970 + 5
Programar
en pequeo
1980 + 5
Programar
en grande
Mnemnicos, uso
de prosa precisa
nfasis en
pequeos programas
Representar
estructura,
informacin
simblica
Comprensin
elemental del flujo
de control
Software integrado
con hardware
nfasis en
administracin,
mejora de procesos,
estructura del sistema
Abstracciones para
diseo de sistemas
(cliente-servidor,
objetos, etc.)
Sistemas muy
interactivos,
multimedios
1990 + 5
Programar
en el mundo
Mary Shaw
Cenfotec 2010
Evolucin del desarrollo de software
ciencia
produccin
comercial
artesana
ingeniera profesional
1965..1989: mtodos estructurados de
desarrollo de software
1965..1970: algoritmos y estructuras de datos
1960..1980: anlisis sintctico
1961..1995: semntica de lenguajes de programas
1970..1987: modelos de datos
1968..1993: verificacin y clculo de programas
1974.. : especificacin y refinamiento formal
1978..: concurrencia, paralelismo y distribucin
ejemplos aislados: algoritmos,
estructuras de datos, mtodos
y herramientas de compilacin,
diseo de bases de datos,
protocolos
Mary Shaw (actualizado por ITZ)
1987 CMM, ISO 9000
1993 arquitecturas
1994 patrones de diseo
1995 marcos de problema
1997 UML y OCL
1998..2004 SWEBOK
2002 MDA, MDD
2003..2004 SEEK, curric.
2005 SOA, BPM
Cenfotec 2010
Capas de la Ingeniera del software
Enfoque de la ingeniera del software, Pressman
Cada capa apoya o da soporte a las que se encuentra bajo ella. (A
continuacin se explica cada una de ellas.)
El objetivo de la Ingeniera del software es lograr productos o servicios
de calidad aplicando un buen proceso de desarrollo, apoyado por
adecuados mtodos y herramientas.
Pressman
Cenfotec 2010
Capas de la Ingeniera del software
Calidad. Debe descansar sobre un empeo de la
organizacin por lograr la calidad. La gestin total
de la calidad y las filosofas similares fomentan una
cultura continua de mejoras de procesos que
conduce al desarrollo de enfoques cada vez ms
robustos para la Ingeniera del software.
Pressman
Cenfotec 2010
Capas de la Ingeniera del software
Proceso. El fundamento de la Ingeniera del
software es la capa de proceso. El proceso define
un marco de trabajo para un conjunto de reas
clave, las cuales forman la base del control de
gestin de proyectos de software y establecen el
contexto en el que se aplican los mtodos tcnicos,
se producen resultados de trabajo, se establecen
hitos, se asegura la calidad y el cambio se
administra adecuadamente.
Pressman
Cenfotec 2010
Capas de la Ingeniera del software
Mtodos. Los mtodos de la Ingeniera del
software indican cmo construir tcnicamente el
software. Los mtodos abarcan una gran gama de
tareas que incluyen: anlisis de requerimientos,
diseo y especificacin (en diversos niveles),
construccin de programas, pruebas y
mantenimiento. Estos mtodos dependen de un
conjunto de principios bsicos que gobiernan cada
rea de la tecnologa e incluyen actividades de
modelado y otras tcnicas descriptivas.
Pressman
Cenfotec 2010
Capas de la Ingeniera del software
Herramientas. Las herramientas de la Ingeniera
del software proporcionan un soporte automtico o
semi-automtico para el proceso y los mtodos, a
estas herramientas se les llama herramientas
CASE (Computer-Aided Software Engineering).
Pressman
Cenfotec 2010
La mejor carrera en Estados Unidos
crecimiento anual
Cenfotec 2010
Y en Costa Rica
CINDE
Demanda proyectada, sector SERVICIOS
Perodo 2007
Disciplina
Nmero de
puestos
Call Center / Servicio al cliente 1,500
Call Center / TI / Soporte tcnico 1,000
TI / Desarrollo de software 1,250
Administracin (principalmente alrededor de contabilidad y
finanzas) 1,000
Ingenieras (Electrnica, Mecnica, Industrial, Produccin) 250
Total 5,000
Cenfotec 2010
Papeles del Ingeniero del software
Determinacin, anlisis y especificacin de requerimientos.
Especificacin y diseo de sistemas, programas y componentes de
software.
Construccin de programas y componentes.
Anlisis y revisin crtica de especificaciones, modelos, programas y
planes.
Planificacin, diseo y ejecucin de pruebas de validacin.
Administracin de la configuracin y de la calidad.
Documentacin tcnica.
Valoracin de riesgos de un proyecto de software.
Planificacin bsica de proyectos de software.
Diseo y aplicacin de programas de capacitacin.
Diseo, construccin, manipulacin y afinamiento de bases de datos.
Estudio, experimentacin y asimilacin de informacin sobre nuevas
tecnologas de informacin y tcnicas aplicables al desarrollo de
software.
Cenfotec 2010
Analista
Capta, documenta y
valida lo que el
usuario desea
Especifica el sistema
segn los
requerimientos del
usuario
Valida que el usuario
acepte la
especificacin
Registrar Cliente
Crear Cuenta
<<uses>>
Cajero
Crear Cuenta Corriente
<<extends>>
Cenfotec 2010
Diseador
Disea la arquitectura e
interfaces entre
componentes
Documenta el diseo y lo
verifica
Planea pruebas de
integracin y del sistema
CD
artista
compannia
Video
argumento
director
Socio
cedula
nombre
telefono
Producto
titulo
annoProduccion
precioAlquiler
alquila
Alquiler
fechaAlquiler
fechaDevolucion
: Cliente
Sistema
1: introducirNumeroTarjeta(numTarjeta)
Retirar Dinero del Cajero Automtico
Curso Tpico de Eventos
1. Este caso de uso empieza cuando
un cliente introduce su tarjeta en el
cajero
2. El sistema pide la clave de
identificacin
3. El cliente introduce la clave
4. El sistema presenta las opciones
disponibles
5. El cliente selecciona la operacin de
Retiro
6. El sistema pide la cantidad a retirar
7. El cliente introduce la cantidad
requerida
8. El sistema procesa la peticin y,
eventualmente, da el dinero solicitado
9. El sistema devuelve la tarjeta y
genera un recibo
10. El cliente recoge el dinero, el recibo
y la tarjeta y se va
2: introducirClave(clave)
3: seleccionarOpcion(numOpcion)
4: introducirCantidad(monto)
Cenfotec 2010
Programador
Verifica los diseos y
especificaciones
Codificacin de
componentes
Ejecuta plan de pruebas
Integra sus componentes
con los dems
Cenfotec 2010
Administrador de proyectos
Planea y dirige el
desarrollo de proyectos
de software donde
participa un equipo de
profesionales
Participa en todas las
etapas del ciclo de
desarrollo de software
Responsable de que el
desarrollo del proyecto
se haga en el tiempo
programado y dentro del
presupuesto estimado
Cenfotec 2010
Desarrollador de aplicaciones para Internet
Especifica sistemas
interactivos sobre Internet
Disea y programa dichos
sistemas
Interacta con
especialistas de otras
disciplinas (diseo
grfico, mercadeo,
negocios)
Cenfotec 2010



Estado actual del desarrollo de software
Cenfotec 2010
Estado actual
Las sociedades dependen crecientemente de la
tecnologa de informacin
Internet ha provocado una enorme demanda de
nuevas aplicaciones innovadoras y urgentes
Hay aplicaciones de seguridad crtica gobernadas
por software
Se produce software de variada calidad
heursticamente
Frecuentemente se recurre a tercerizar
(outsourcing)
Es global
Cenfotec 2010
Estado actual
Se ha avanzado comparativamente ms rpido
que las ingenieras establecidas

Hay mucho por hacer: llevar la teora (existe!) a la
prctica, responsabilidades y garantas,
estndares, manuales, etc.
Cenfotec 2010
Estudio GAO (USA), 1979
0
5 0 0 , 0 0 0
1 , 0 0 0 , 0 0 0
1 , 5 0 0 , 0 0 0
2 , 0 0 0 , 0 0 0
2 , 5 0 0 , 0 0 0
3 , 0 0 0 , 0 0 0
3 , 5 0 0 , 0 0 0
P
a
g
a
d
o
,

n
o

e
n
t
r
e
g
a
d
o
E
n
t
r
e
g
a
d
o
,

n
o

u
s
a
d
o
A
b
a
n
d
o
n
a
d
o
,

r
e
e
l
a
b
o
r
a
d
o
U
t
i
l
i
z
a
d
o

d
e
s
p
u

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

S-ar putea să vă placă și