Está en la página 1de 38

Ingeniera de Software

Introduccin a la Ingeniera de
Software

Agenda
1- Generalidades de la Ingeniera de
Software.
2- Problemas con la Ejecucin de Proyectos
Grandes.
3- Qu se Requiere?.
4- Caractersticas de la Ingeniera de
Software.
5- Conclusiones.

Ingeniera de Software

Si usted quiere contratar la construccin de su


casa:
Qu le exigira al Producto (casa)?
Qu le exigira al Proyecto?

Software e Ingeniera de software


La ley de las consecuencias imprevistas
Una tecnologa tiene efectos profundos e
inesperados en otras tecnologas
Nuevas tecnologas: Ingeniera gentica.
Expansin de tecnologas existentes:
telecomunicaciones.
Fin de tecnologas antiguas: impresin

Papel evolutivo del software


Tiene un papel dual
1. Producto: Transformacin de
informacin, produccin, manejo,
adquisicin, modificacin, despliegue,
transmisin.
2. Vehiculo para entrega del producto:
Control de computadoras (sistemas
operativos), comunicacin (redes),
control de otros programas (utilerias)

Software
El software se forma con:
1.

2.
3.

Las instrucciones.
Las estructuras de datos.
Los documentos que describen la operacin.

El software tiene caractersticas diferentes al


hardware
1.
2.
3.

El software se desarrolla, no se manufactura.


El software no se desgasta pero si se deteriora
La mayora de software aun se construye a
medida

Hardware vs. Software

La naturaleza cambiante del


software
Actualmente existen 7 categoras del
software:
1.
2.
3.
4.
5.
6.
7.

Software de sistemas.
Software de aplicacin.
Software cientfico y de ingeniera.
Software empotrado.
Software de lnea de productos.
Aplicaciones basadas en web.
Software se I.A.

La naturaleza cambiante del


software
Retos nuevos
1.
2.
3.
4.

Computacin ubicua: inalmbrica, distribuida


Alimentacin de la red: www
Fuente abierta: cdigo libre.
Nueva economa: punto-com

Software heredado
Es el software viejo pero que sigue
operando: es costoso en mantenimiento y
riesgoso en su evolucin.
Poca calidad: diseos imposibles de
extender, cdigo complicado,
documentacin escasa.
No obstante, estos sistemas son el soporte
de las funciones centrales de los negocios
y son indispensables para la empresa

Evolucin del Software


El software de computadora evoluciona a
travs del tiempo, sin importar su dominio
de aplicacin, tamao o complejidad.
Se da cuando:

corrigen errores.
adapta a nuevos cambios.
cliente solicita nuevas caractersticas.
reingeniera.

Ingeniera de Software
Qu es la Ingeniera de Software?
La Ingeniera de Software es el rea de
las ciencias de la computacin que trata
con la construccin de sistemas de
software, los cuales son tan grandes y
complejos que se construyen con
equipos de ingenieros [Ghezzi 91].
Construccin
multi-persona
de
software multi-versiones [Parnas
87].

Proceso de Software
Es un proceso definido paso a paso, que facilita la
especificacin, el diseo, la implementacin y las
pruebas de una solucin de software, para un
conjunto de requisitos explcitos, de modo
eficiente y eficaz
Esto requiere que al empezar el proceso se tengan:
-

Objetivos claros.
Planes para lograr los objetivos.
Procedimientos que implementan los planes.
Procedimientos de monitoreo y control de los planes.
Un ambiente conducente al logro de los objetivos.

Ingeniera de Software (cont...)


Analice el problema antes de plantear una solucin.
No se debe plantear una solucin en busca de un
problema. Escenario comn.

Separe los problemas complejos en sub-problemas ms


simples.

Asegrese que las relaciones entre los sub-problemas estn


acotadas.

No evite el cambio, adminstrelo.


Especifique y controle la calidad del producto que se
est desarrollando.

Hay que desarrollar una visin compartida del


proyecto entre todos los involucrados.

Ingeniera de Software (cont...)


Centrarse en los usuarios y los clientes.
Se debe tener en cuenta:

Los objetivos y necesidades de los usuarios y de los clientes.

La dedicacin de los usuarios/clientes al proyecto para realizar funciones de


contraparte.

El feedback peridico que el usuario/cliente espera tener, de parte del


equipo desarrollador.

Que distintos usuarios y/o clientes pueden tener requisitos encontrados


(contradictorios), y que requieren ser alineados.

El esfuerzo* de probar Los escenarios de prueba simulados involucran


tiempo de los usuarios y a veces se requieren pruebas masivas.

El esfuerzo de aprender y de usar (incluir las actividades sin computador).

El agrado/desagrado de uso del software.

Esfuerzo*: Costo y tiempo (asociado al desarrollador y/o cliente) vinculado a


la realizacin de una tarea.

Ingeniera de Software (cont...)


Disee algo implementable:

Con tecnologa accesible/disponible.

Con costos aceptables.

Con plazos adecuados.

Con una buena relacin costo/beneficio.

Ingeniera de Software (cont...)


El diseo casi siempre requiere de una
contraparte vlida (cliente y/o usuario)
que opine sobre:

Modelo de proceso/negocio que se propone


con la solucin de software.
Factibilidad
(tcnica/social/econmica/operativa) de
ponerlo en produccin en las instalaciones
del cliente.

Agenda
1- Generalidades de la Ingeniera de
Software.
2- Problemas con la Ejecucin de
Proyectos Grandes.
3- Qu se Requiere?.
4- Caractersticas de la Ingeniera de
Software.
5- Conclusiones.

Ingeniera de Software (cont...)


La Ingeniera de Software tiene que ver principalmente
con
la
concepcin,
diseo,
implementacin
y
mantenimiento de sistemas grandes o complejos,
donde:

Software debe ser terminado a tiempo y dentro del


presupuesto.
Software debe tener niveles de desempeo,
uptime y usabilidad aceptables.
Software debe ser correcto, confiable, mantenible,
escalable, flexible y robusto.

Ingeniera de Software (cont...)


Qu es un Proyecto Grande?

Windows NT 4.0 tiene entre 6 y 10 millones de lneas de cdigo.


El Software del bombardero B2 tiene 3.5 millones.
Un switch telefnico tpico tiene 2 millones.

Para tener una idea de lo que es 1 milln de lneas de


cdigo (1MLOC):
13.000 pginas (75 lneas por pgina).
26 tomos de 500 pginas c/u.

Para contratar a sus programadores, Microsoft les pide que


hayan escrito cdigo (que est en produccin) de al menos
20.000 lneas.

Comprender y administrar soluciones de esa magnitud


requiere de ayuda extra, requiere de Ing. de Software.

Cul es el Problema ?
A pesar de que la industria del software es hoy en da uno
de los motores de la economa mundial, numerosos
problemas an persisten...
El desarrollo del hardware siempre aventaja al software
asociado a l.
La demanda por nuevos productos y soluciones no puede ser
satisfecha (diversidad de escenarios donde deben proveer
servicio).
El software no es confiable por naturaleza (y somos cada vez
ms dependientes de l).
Los proyectos raramente terminan en las fechas previstas.
Los proyectos raramente terminan costando lo previsto.
Proyectos terminados que jams se usan.
Proyectos que se usan pero usuarios altamente insatisfechos.
Costo exorbitante de mantenimiento.

Cul es el Problema ? (cont...)


En casos extremos ...
Quiebra del productor del software.
Quiebra de los clientes que dependen del producto.
Prdida de vidas humanas.

Historias de Horror....

El Bank of America proyect US$23 M para un

proyecto a 5 aos. Se termin gastando mas de


US$60 M para finalmente abandonar el proyecto.
Prdidas totales estimadas en ms de US$1000 M.

Historias de horror ...


AllState (seguros) comenz en 1982 un proyecto de

automatizacin integral de sus operaciones de 5 aos


de duracin y US$8 M de presupuesto. Fue abandonado
en 1993 despus de gastar US$100 M.

Blue Cross (isapre norteamericana) perdi ms de US$60


M en pagos incorrectos debido a un error en el software
por el que haban pagado mas de US$200 M.
El 4 de Julio de 1996 un cohete Ariadne se desvi de su
curso y explot a 3700 m de altura. Causa: error de
software. Parte de las conclusiones de la comisin
investigadora afirma ...

Particularidades de Sistemas
Grandes
Escala: una sola persona no puede entenderlo todo.
Complejidad:
Requiere trabajo de equipo.
Problemas de manejo de gente, coordinacin, egos,
motivacin, recambios de personal (en ambos
lados), cambios de expectativas (en ambos lados),
etc.
Cambio: durante y despus del desarrollo inicial.

Vida: aos y dcadas.


Especificaciones imprecisas: ambigedad,
contradicciones, requisitos cambiantes.

Agenda
1- Generalidades de la Ingeniera de
Software.
2- Problemas con la Ejecucin de Proyectos
Grandes.
3- Qu se Requiere?.
4- Caractersticas de la Ingeniera de
Software.
5- Conclusiones.

Qu se requiere ?
Burocracia (til y efectiva, tedioso pero
vital)
Manejo formal del proceso de desarrollo.
Documentacin formal detallada tanto interna
como externa:
puede pensarse en trminos de contratos
cliente/productor, etc.

Trazabilidad.
de quin es este cdigo?
cundo se agreg esta parte?

Manejo de configuracin y control de versiones.

Qu se requiere ? (cont...)
Anlisis cuidadoso del problema
interactuando con el usuario

Diseo cuidadoso usando principios que


han demostrado ser tiles
abstraccin, ocultamiento, modularizacin, etc.

Implementacin cuidadosa
Pruebas rigurosas
procedimientos bien definidos de antemano

Planificacin de largo plazo (mantenimiento)

Qu se Requiere ? (cont...)
Ms que cdigo: En un proyecto de software
se genera, adems del cdigo, muchos otros
documentos ...
Requisitos formales
Diseo de alto nivel
Diseo detallado
Plan y bateras de pruebas (tests)
Documentacin de usuario
Documentacin de desarrolladores
Estudios de factibilidad
Informes de marketing
Planes de mantenimiento
Informes de errores y correcciones
etc.

Qu se Requiere? (cont...)
Ingeniero de Procesos

Ingeniero de Calidad
Analista de Requisitos
Diseador de Software

Programador
Verificador-Tster
Gerente de Proyecto
Gestor de Configuracin del Software

Agenda
1- Generalidades de la Ingeniera de
Software.
2- Problemas con la Ejecucin de Proyectos
Grandes.
3- Qu se Requiere?.
4- Caractersticas de la Ingeniera de
Software.
5- Conclusiones.

Caractersticas de la Ingeniera
Ataca problemas prcticos reales
La gente realmente quiere o necesita resolver
estos problemas.

Genera soluciones razonables


En trminos de eficacia, eficiencia, tiempos de
desarrollo, costos, etc.

Tiene su base en la ciencia


Sus resultados son o deberan ser repetibles.
Usa modelos matemticos.
Es rea tcnica bien entendida.

Caracterst. de la Ingeniera
(cont...)
Codifica el conocimiento
La experiencia de generaciones se escribe en
enormes manuales y se organiza para ser
reutilizada.

Establece responsabilidad profesional


Cdigo de conducta.

tica profesional.
Acreditacin y monitoreo por parte de una
sociedad profesional.

Caract. de la Ing. de Software


No es posible aplicar directamente metodologas
usadas en la ingeniera de otros productos, porque
hay varias diferencias importantes ...

El software no se manufactura sino que se


desarrolla o crea.
Control de calidad de distinta naturaleza.
Recursos humanos de distinta naturaleza.
Estructura de costos radicalmente distinta.

El software no se desgasta (idealmente)...


... pero sufre de envejecimiento.

Caract. de la Ing. de Software


(cont...)
La mayora de los proyectos implican partir
casi de cero (no hay catlogos de
componentes a disposicin de los
ingenieros).
Falencias ms importantes (detectadas):
Procesos no son repetibles.
Modelos no aportan descripciones precisas.
Existe poca confiabilidad, tanto en el proceso como en
el producto.
No se comparte la experiencia (codificacin y reuso).
Hay una falta de entrenamiento continuo de los
profesionales.

Principios de la I.S.
Herramientas

Metodologas
Mtodos y Tcnicas
Principios
Principio: Proposiciones o verdades que rigen el desarrollo.
Mtodo: Gua general que gobierna la ejecucin de una actividad.
Tcnica: Mecanismos y recursos del desarrollo.
Metodologa: Conjunto de mtodos y tcnicas.
Herramientas: Soportan la aplicacin de metodologas.

Evolucin de la I.S.
OS 360 IBM : Sistema grande , se crea
el trmino INGENIERIA DE SOFTWARE
70

Futuro

Desarrollo terico,
Mtodos, Tcnicas,
Herramientas
70: Crisis del Software. Se buscan
soluciones a los problemas de la I.S.
50-60: Creacin de los lenguajes de alto nivel

Conclusiones ....
Proceso de desarrollo de software
Para mejorar la situacin es necesario mejorar el
proceso.
Para mejorar el proceso es necesario hacerlo
visible, definirlo y medirlo.
- . La IS tiene mucho que decir ac.

Administracin y control de proyectos de


software involucra:
Uso de mtricas, recursos y tiempos.
Manejo del riesgo.
Manejo de los cambios (Software Configuration
Management).
Control de la calidad.

Conclusiones .... (cont...)


Anlisis y especificacin de requisitos
No queremos software que no se use.
No queremos usuarios descontentos.

Diseo de software
- Queremos diseos que respeten los requisitos.
- Queremos diseos realistas.

Verificacin y validacin
Queremos productos confiables.
Queremos productos que satisfagan las
especificaciones.

Apoyo del computador


Queremos hacer todo esto de la manera ms eficiente
posible.

También podría gustarte