1-Introduccion A La ISW PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 48

Introducción a la Ingeniería de Software

Andres Ramos Magna


ESTRUCTURA DE LA
PRESENTACIÓN
1- Generalidades de la Ingeniería de
Software.
2- Problemas con la Ejecución de Proyectos
Grandes.
3- ¿Qué se Requiere?.
4- Características de la Ingeniería de Software.
5- Conclusiones.
DONDE ESTAMOS INMERSOS
EL LADO B DEL SOFTWARE
INGENIERÍA DE SOFTWARE

- Si usted quiere contratar la construcción de su


casa:
Qué le exigiría al Producto (casa)?
Qué le exigiría al Proyecto?
INGENIERÍA DE SOFTWARE
¿Qué es la Ingeniería de Software?
“La Ingeniería de Software es el área de las ciencias de la
computación que trata con la construcción de sistemas de
software, los cuales son tan grandes y complejos que se
construyen con equipos de ingenieros [Ghezzi 91].”

“Construcción multi-
persona de software
multi-versiones [Parnas
87].”
PROCESO DE SOFTWARE

“ Es un proceso definido paso a paso, que


facilita la especificación, el diseño, la
implementación y las pruebas de una solución
de software, para un conjunto de requisitos
explícitos, de modo eficiente y eficaz”
PROCESO
PROCESO
DEFINAMOS UN PROCESO SIMPLE
• Definir entradas, salidas, controles y recursos de la
compra de una entrada de un concierto.
PROCESO DE SOFTWARE
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.
PRINCIPIOS DE INGENIERÍA DE
SOFTWARE (CONT...)
Analice el problema antes de plantear una solución.
No se debe plantear una solución en busca de un problema….
Escenario común.
PRINCIPIOS DE INGENIERÍA
DE SOFTWARE (CONT...)
Separe los problemas complejos en sub-problemas más simples.
■ Asegúrese que las relaciones entre los sub-problemas están acotadas.
PRINCIPIOS DE INGENIERÍA
DE SOFTWARE (CONT...)
No evite el cambio, adminístrelo.
PRINCIPIOS DE INGENIERÍA
DE SOFTWARE (CONT...)
Especifique y controle la calidad del producto que se está
desarrollando.
PRINCIPIOS DE INGENIERÍA
DE SOFTWARE (CONT...)
Hay que desarrollar una visión compartida del proyecto… entre
todos los involucrados.
ANALIZAR EL PROBLEMA NO
TODOS VEMOS LO MISMO
○ Analizar cuidadosamente estos
gráficos, que vemos?????
ANALIZAR EL PROBLEMA NO
TODOS VEMOS LO MISMO
QUIMERA
INGENIERÍA DE SOFTWARE
(CONT...)
Nunca pierdas de vista a los usuarios y a los clientes. Identifícalos y modélalos (casos de
uso) y chequea en forma permanente con ellos…. eso te dará una comprensión completa y
válida del problema.
Ten en cuenta:
■ Los objetivos y necesidades de los usuarios y de los clientes.
■ La dedicación de los usuarios/clientes al proyecto para realizar funciones de contraparte.
■ El feedback periódico 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.
■ Los temores/desconfianza del usuario…. Hay que ganarse su confianza.
■ 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


realización de una tarea.
INGENIERÍA DE SOFTWARE
(CONT...)
Diseñe algo implementable:
■ Con tecnología accesible/disponible.
■ Con costos aceptables.
■ Con plazos adecuados.
■ Con una buena relación “costo/beneficio”.

El diseño casi siempre requiere de una contraparte válida (cliente y/


o usuario) que opine sobre:
■ Modelo de proceso/negocio que se propone con la solución de software.
■ Factibilidad (técnica/social/económica/operativa) de ponerlo en producción en
las instalaciones del cliente.
ESTRUCTURA DE LA
PRESENTACIÓN
1- Generalidades de la Ingeniería de Software.
2- Problemas con la Ejecución de Proyectos
Grandes.
3- ¿Qué se Requiere?.
4- Características de la Ingeniería de Software.
5- Conclusiones.
INGENIERÍA DE SOFTWARE
(CONT...)

La Ingeniería de Software tiene que ver principalmente con la


concepción, diseño, implementación y mantenimiento de
sistemas grandes o complejos, donde:

■ Software debe ser terminado a tiempo y dentro del presupuesto.


■ Software debe tener niveles de desempeño, uptime y usabilidad
aceptables.
■ Software debe ser correcto, confiable, mantenible, escalable, flexible
y robusto.
INGENIERÍA DE SOFTWARE
(CONT...)
En proyectos grandes o complejos,
usualmente hay:
■ Rotación de personal (en ambos
bandos).
■ Requisitos cambiantes.
■ Cambios de tecnologías.
■ Etc.
INGENIERÍA DE SOFTWARE
(CONT...)

¿Qué es un Proyecto Grande?


INGENIERÍA DE SOFTWARE
(CONT...)
¿Qué es un Proyecto Grande?
• Windows NT 4.0 tiene entre 6 y 10 millones de líneas de código.
• El Software del bombardero B2 tiene 3.5 millones.
• Un switch telefónico típico tiene 2 millones.

Para tener una idea de lo que es 1 millón de líneas de código (1MLOC):


• 13.000 páginas (75 líneas por página).
• 26 tomos de 500 páginas c/u.

Para contratar a sus programadores, Microsoft les pide que hayan escrito
código (que esté en producción) de al menos 20.000 líneas.

Comprender y administrar soluciones de esa magnitud requiere de ayuda


extra, requiere de Ing. de Software.
¿CUÁL ES EL PROBLEMA ?
A pesar de que la industria del software es hoy en día uno de los motores de
la economía mundial, numerosos problemas aún 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 más
dependientes de él).
Los proyectos raramente terminan en las fechas previstas.
Los proyectos raramente terminan costando lo previsto.
Proyectos terminados que jamás se usan.
Proyectos que se usan pero usuarios altamente insatisfechos.
Costo exorbitante de mantenimiento.
¿CUÁL ES EL PROBLEMA ?
(CONT...)
En casos extremos ...

• Quiebra del productor del software.


• Quiebra de los clientes que dependen del producto.
• Pérdida de vidas humanas.

Historias de Horror....

• El Bank of America proyectó US$23 M para un proyecto a 5 años. Se terminó


gastando mas de US$60 M para finalmente abandonar el proyecto. Pérdidas
totales estimadas en más de US$1000 M.

• El bombardero B1 requirió US$ 1000 M más de lo proyectado para mejorar sus


sistemas de defensa.
HISTORIAS DE HORROR ...
• AllState (seguros) comenzó en 1982 un proyecto de automatización integral de
sus operaciones de 5 años de duración y US$8 M de presupuesto. Fue
abandonado en 1993 después de gastar US$100 M.

• Blue Cross (isapre norteamericana) perdió más de US$60 M en pagos incorrectos debido a
un error en el software por el que habían 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 comisión investigadora afirma ...

“... In the failure scenario, the primary technical causes are the Operand Error when converting
the horizontal bias variable BH, and the lack of protection of this conversion which caused
the SRI computer to stop”.
HISTORIAS DE HORROR ...
(CONT...)

• Entre 1987 y 1995 a lo menos 6 pacientes fueron


severamente heridos o muertos por un error en los
sistemas del Therac-25 (acelerador lineal usado para
administración de radioterapia)
COSTOS DE UN ERROR
Costo Relativo de corregir un error
1000
Costo de corregir error

100

10

Rquerimientos Diseño codigo prueba unidad prueba de sistema sistema operando


PARTICULARIDADES DE
SISTEMAS GRANDES
Escala: una sola persona no puede entenderlo todo.

Complejidad:
■ Requiere trabajo de equipo.
■ Problemas de manejo de gente, coordinación, egos, motivación, recambios de
personal (en ambos lados), cambios de expectativas (en ambos lados), etc.
Cambio: durante y después del desarrollo inicial.

Vida: años y décadas.

Especificaciones imprecisas: ambigüedad, contradicciones,


requisitos cambiantes.
ESTRUCTURA DE LA
PRESENTACIÓN

1- Generalidades de la Ingeniería de Software.


2- Problemas con la Ejecución de Proyectos
Grandes.
3- ¿Qué se Requiere?.
4- Características de la Ingeniería de Software.
5- Conclusiones.
¿ QUÉ SE REQUIERE ?

• Burocracia (útil y efectiva, tedioso pero vital)


– Manejo formal del proceso de desarrollo.
– Documentación formal detallada tanto interna como externa:
• puede pensarse en términos de contratos cliente/productor, etc.
– Trazabilidad.
• ¿de quién es este código?
• ¿cuándo se agregó esta parte?
– Manejo de configuración y control de versiones.
¿ QUÉ SE REQUIERE ?
(CONT...)
• Análisis cuidadoso del problema
– interactuando con el usuario
• Diseño cuidadoso usando principios que han
demostrado ser útiles
– abstracción, ocultamiento, modularización, etc.
• Implementación cuidadosa
• Pruebas rigurosas
– procedimientos bien definidos de antemano
• Planificación de largo plazo (mantenimiento)
¿QUÉ SE REQUIERE ? (CONT...)
Más que código: En un proyecto de software se genera,
además del código, muchos otros documentos ...

• Requisitos formales
• Diseño de alto nivel
• Diseño detallado
• Plan y baterías de pruebas (tests)
• Documentación de usuario
• Documentación 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
Diseñador de Software
Programador
Verificador-Téster
Gerente de Proyecto

Gestor de Configuración del Software


VISION DE DESARROLLO DE
SISTEMAS DE INFORMACIÓN
○ Pasos
● Como se construirá la
● Análisis solución?
● Diseño ● Como se contemplarán
● Construcción
● Verificación
los errores?
● Como se apoyarán a los
● Gestión
○ Preguntas usuarios del sistema?
● Cual es el problema a ● Originalmente ! separar
resolver? el que del como, este
● Cuales son las
características de los concepto ya no se
usuarios del sistema a analiza igual
construir?
ESTRUCTURA DE LA
PRESENTACIÓN
1- Generalidades de la Ingeniería de Software.
2- Problemas con la Ejecución de Proyectos
Grandes.
3- ¿Qué se Requiere?.
4- Características de la Ingeniería de
Software.
5- Conclusiones.
CARACTERÍSTICAS DE LA
INGENIERÍA
• Ataca problemas prácticos reales
– La gente realmente quiere o necesita resolver estos
problemas.

• Genera soluciones razonables


– En términos de eficacia, eficiencia, tiempos de desarrollo,
costos, etc.

• Tiene su base en la ciencia


– Sus resultados son “o deberían ser” repetibles.
– Usa modelos matemáticos.
– Es área técnica bien entendida.
CARACTERÍST. DE LA
INGENIERÍA (CONT...)
• Codifica el conocimiento
– La experiencia de generaciones se escribe en enormes
manuales (ej. Perry’s Handbook) y se organiza para ser
reutilizada.

• Establece responsabilidad profesional


– Código de conducta.
– Ética profesional.
– Acreditación y monitoreo por parte de una sociedad profesional.
CARACT. DE LA ING. DE
SOFTWARE
No es posible aplicar directamente metodologías usadas en la
ingeniería 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 mayoría de los proyectos implican partir casi de
cero (no hay catálogos de componentes a
disposición de los ingenieros).

• Falencias más 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 (codificación y reuso).
– Hay una falta de entrenamiento continuo de los
profesionales.
PRINCIPIOS DE LA I.S.
Herramientas
Metodologías
Métodos y Técnicas

Principios

Principio: Proposiciones o verdades que rigen el desarrollo.

Método: Guía general que gobierna la ejecución de una actividad.

Técnica: Mecanismos y recursos del desarrollo.

Metodología: Conjunto de métodos y técnicas .

Herramientas: Soportan la aplicación de metodologías.


EVOLUCIÓN DE LA I.S.

‘70 Futuro

Desarrollo teórico,
OS 360 IBM : Sistema “grande” , se creaMétodos, Técnicas,
el término INGENIERIA DE SOFTWARE Herramientas

‘70: Crisis del Software. Se buscan


soluciones a los problemas de la I.S.

‘50-60: Creación de los lenguajes de alto nivel


CONCLUSIONES ....
• Proceso de desarrollo de software
– Para mejorar la situación es necesario mejorar el proceso.
– Para mejorar el proceso es necesario hacerlo visible,
definirlo y medirlo.
- …. La IS tiene mucho que decir acá.
• Administración y control de proyectos de software
involucra:
– Uso de métricas, recursos y tiempos.
– Manejo del riesgo.
– Manejo de los cambios (Software Configuration
Management).
– Control de la calidad.
CONCLUSIONES .... (CONT...)
• Análisis y especificación de requisitos
– No queremos software que no se use.
– No queremos usuarios descontentos.
• Diseño de software
- Queremos diseños que respeten los requisitos.
- Queremos diseños realistas.
• Verificación y validación
– Queremos productos confiables.
– Queremos productos que satisfagan las especificaciones.
• Apoyo del computador
– Queremos hacer todo esto de la manera más eficiente
posible.
GRACIASSSS!!!! NOS VEMOS

También podría gustarte