Вы находитесь на странице: 1из 68

INF 2720 A

TEMA 1
La Ingeniera del Software

Introduccin

Introduccin
Termino de la Ing. Del SW

Acuado en 1968 Respuesta -> Desarrollar software de calidad a tiempo dentro del presupuesto

Introduccin
Los desarrolladores de SW

No fueron capaces de definir objetos concretos Predecir recursos necesarios Manejar las expectativas de los clientes

Ingeniera del Software


Ingeniera
La y aplicacin La ingeniera ingeniera es es el la desarrollo disciplina que utiliza del conocimiento cientfico y tecnolgico todo tipo de recursos, sea humano, de para satisfacer las natural, necesidades de lay conocimiento, fsico, financiero sociedad, dentro de los condicionantes de informacin, fsicos, econmicos, humanos y para crear y dirigir con ciencia y arte, sistemas fsicosculturales. y sociales sustentables que proveen de bienes y servicios, Fuente: MIT Engineering School; EUAy el mediante el conocimiento Massachusetts Institute de of Technology o MIT perfeccionamiento los atributos y relaciones de dichos recursos, apoyada en las matemticas, ciencias naturales y ciencias sociales con el fin de elevar la calidad de vida de la humanidad.

Software
Instrucciones (programas de computo) que cuando se ejecutan proporcionan las caractersticas, funcin y desempeo buscados; Estructuras de datos que permiten que los programas manipulen en forma adecuada la informacin; Informacin descriptiva tanto en papel como en formas virtuales que describen la operacin y uso de los programas Fuente: Roger Pressman

Un Ingeniero (para no olvidar)


Capaz de construir un producto de alta calidad
Usa componentes ya elaborados Integra, restricciones de tiempo y presupuesto

Enfrenta
Problemas mal definidos Soluciones parciales

Se apoya en mtodos Para evaluar soluciones

Los Ingenieros
Que trabajan con diseos

Puentes, casas, maquinas, etc.

Han resuelto en forma satisfactoria retos

Los ingenieros de SW

1. No han tenido xito 2. Se han investigado los problemas de construir y entregar a tiempo sistemas de SW complejos

Complejidad y Cambio

1. Los sistemas software son Su complejidad inherentede se deriva de cuatro complejos elementos:

La complejidad del dominio del problema, La dificultad de administrar proceso de desarrollo, 2. Para seguir siendo el tiles La flexibilidad que se puede alcanzar a travs del necesitan: software y Evolucionar con las Los problemas que plantea la caracterizacin del necesidades de discretos. los comportamiento de sistemas
Brooks, F. April 1987. No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer vol. 20 (4), p. 12.

usuarios finales y el ambiente de destino

Complejidad y Cambio
Complejidad del dominio del problema
Cuando los problemas del mundo real se desean resolver con modelos de sistemas computacionales, trae consigo una cantidad indefinida de requisitos que compiten entre s y algunas veces se contradicen. Dar funcionalidad a un sistema es difcil e incluso comprender los requerimientos como: facilidad de uso, rendimiento, costo, capacidad de supervivencia, fiabilidad, son parte de la complejidad externa que infiere determinantemente en la complejidad interna del sistema. Bajo este contexto nace la importancia de la relacin entre desarrolladores y usuarios del sistema. Habitualmente los usuarios tienen dificultades en expresar sus necesidades e ideas. Esto se da en ocasiones por falta de conocimiento del mbito de cada uno de los grupos. Los usuarios y los desarrolladores tienen perspectivas diferentes sobre la naturaleza del problema. Contar con herramientas que permitan plasmar estos requisitos de forma clara para ambos grupos es uno de los retos de la Ingeniera de Software.

Complejidad y Cambio
Dificultad de administrar el proceso de desarrollo
Es difcil contar con un sistema donde su caracterstica sea la simplicidad en el desarrollo del software. La mayora de los grandes sistemas contienen un alto nmero de cdigo que impide dar un mantenimiento ptimo a los programas . Cuando los equipos de desarrollo son grandes y heterogneos la administracin de las actividades se hace complicada debido a que se desarrollan por muchos equipos de trabajo. Hoy en da, tanto el hardware como el software, deben ser capaces de contar con una arquitectura abierta, reusabilidad, facilidad de reconfiguracin, aplicacin de estndares y diseo modular. Estas caractersticas permiten escribir menos cdigos y poder reutilizar el software, en un software diferente al que fue diseado originalmente. La adicin debe ser transparente para el sistema receptor.

Complejidad y Cambio
La flexibilidad que se puede alcanzar a travs del software
El software ofrece la flexibilidad al desarrollador para expresar y representar procesos triviales y complejos del conocimiento humano en un sistema computacional. Esta propiedad no debe producir cambios en los procedimientos y prcticas de las entidades.

El sistema debe ser suficientemente flexible para incorporarse a las actividades de las entidades y hacerlas ms eficientes, sin causar gastos que eleven el precio de los sistemas.
Por ejemplo, una organizacin puede tener una diversidad de sistemas de comunicacin en su estructura organizacional, el sistema computacional de apoyo a la administracin debe ser lo suficientemente flexible para trabajar y/o compatibilizar con cualquier sistema de comunicaciones (transmisin de datos) existente. Por lo tanto, el software no debe forzar al cliente a comprar sistemas de comunicaciones adicionales para poder operar sin problemas.

Complejidad y Cambio
Los problemas que plantea la caracterizacin del comportamiento de sistemas discretos

En una aplicacin de gran tamao existe cientos o hasta miles de variables, as como ms de un flujo de control. El conjunto de todas estas variables, sus valores actuales y la administracin del sistema son procesos que constituyen el estado actual de la aplicacin. Al ejecutarse el software en computadoras digitales, se tiene un sistema con estados discretos. Pequeos cambios en las entradas siempre producirn cambios consecuentemente pequeos en las salidas. Por el contrario, los sistemas discretos por su propia naturaleza tienen un nmero finito de estados posibles. Todos los eventos externos a un sistema de software tienen la posibilidad de llevar a ese sistema a un nuevo estado y ms an, la transicin de estado a estado no siempre es determinista. En las peores circunstancias, un evento externo puede corromper el estado del sistema, porque sus diseadores olvidaron tener en cuenta ciertas interacciones entre eventos.

Fallas de la Ingeniera de Software

Fallas relacionadas con SW

1.

2.
Ejemplos

3. .

.
. n.

Los Sistemas SW
Creaciones complejas

Realizan muchas funciones


Logran muchos objetivos diferentes
Muchos componentes

Participan diferentes disciplinas

software

Es una herramienta para la resolucin de problemas de ingeniera

software

Programas Archivos de configuracin Documentacin de la estructura


del sistema Manuales de instalacin y uso Sitios web con informacin y actualizaciones

Caractersticas y evolucin del software

Caractersticas y evolucin del software


Un poco de historia Los principios de la evolucin:
Desarrollar el hardware Reducir costos de procesamiento y almacenamiento

Dcada de los ochenta:


Desarrollo de la microelectrnica Mayor potencia de clculo y reduccin de costos

Objetivo actual: mejorar la calidad de las soluciones


software

Caractersticas y evolucin del software


1959 - 1965
Orientacin por lotes Distribucin limitada Software a medida

1965 - 1975
Multiusuario Tiempo real Bases de datos Software como producto Mayores gastos de mtto.

1975 - 1989
Sistemas distribuidos Inteligencia Artificial Hardware de bajo costo Impacto en el consumo Redes rea local y global Gran demanda

1989 Potentes sistemas de sobremesa Tecnologa de objetos Sistemas expertos Redes neuronales Cliente/servidor Tecnologas de Internet.

Caractersticas y evolucin del software


TIPOS DE SOFTWARE

Productos genricos Sistemas producidos por una organizacin y que se venden


en el mercado abierto

Sistemas gestores de bases de datos, procesadores de


texto, paquetes grficos,...

La organizacin controla la especificacin Productos personalizados Desarrollados especficamente para un cliente Aplicaciones de negocio, sistemas de control de almacenes,
ventas, compras, control de procesos de fabricacin,...

El cliente controla la especificacin de la aplicacin

Caractersticas y evolucin del software


Pero aumentan

Los problemas del desarrollo de software:


Incapacidad de atender a la demanda Incapacidad de mantener el software existente

Caractersticas y evolucin del software


El software desde una perspectiva industrial
& El valor del software: de elemento aadido a principal
elemento de costo

& El desarrollo del software:

Caractersticas y evolucin del software


Algunas preguntas:

Por qu se tarda tanto? (y casi siempre ms de lo previsto) Por qu la productividad es tan baja? Por qu cuesta tanto? Por qu siempre quedan errores sin localizar?

Qu es la ingeniera del software?

Ingeniera del Software

Si usted quiere la construccin de su casa: Qu le exigira al Producto? (casa) Qu le exigira al Proyecto?

Ingeniera del Software

Eso es vlido para cualquier casa?

Ingeniera del Software

Ingeniera del Software no es sinnimo de Desarrollo de Software....

Ingeniera del Software


Qu es la Ingeniera de Software? rea de las ciencias de la computacin, trata con la construccin de sistemas de software, los cuales son tan grandes y complejos, se construyen con equipos de ingenieros [Ghezzi 91].

Construccin multi-persona de software multiversiones [Parnas 87]. Implica el uso de tcnicas y prcticas ingenieriles para alcanzar un resultado previsible, en trminos de proyecto y de producto...

Ingeniera del Software


Producir mejor software: de una forma ms rpida y econmica, as como tomar mejores decisiones institucionales

Necesita:

Localizacin de fuentes de conocimiento Reutilizacin de experiencias Mejorar los procesos de desarrollo del software

Ingeniera del Software


Para no olvidar

Es el rea de la informtica o ciencias de la computacin ofrece Mtodos y Tcnicas para Desarrollar y Mantener Software de calidad para todo tipo de sistemas de software

Ingeniera del Software


Conociendo:
La Ingeniera del Software es el establecimiento y uso de principios robustos de la ingeniera a fin de obtener econmicamente software que sea fiable y que funcione eficientemente sobre mquinas reales (Fritz Bauer)

Ingeniera del Software


Otras definiciones Disciplina para producir software de calidad desarrollado sobre las agendas y costos previstos y satisfaciendo los requisitos.
S. Schach 1990, Software Engineering

La aplicacin de mtodos sistemticos, disciplinados y cuantificables para el desarrollo, operacin y mantenimiento de software; esto es, la aplicacin de la ingeniera al software.
IEEE 1993

Ingeniera del Software

Ingeniera del Software


Esta restringido por presupuesto y tiempo de entrega

Recopila datos, organiza en informacin, formaliza conocimiento

Se apoyan de mtodos empricos para evaluar los beneficios de alternativas diferentes

Es una actividad de adquisicin de conocimiento

Qu es la Ingeniera del Software?


Dirigida por una fundamentacin Conocimiento Toma de decisiones Restricciones, personal, tiempo y presupuesto

Capta el contexto Cambios en funcin de la decisin

Cambios en cualquier momento

Ingeniera del Software


Ingeniera de software
Objetivos Aumentar la productividad

Mejorar la calidad

Suministrar las bases para su construccin

Facilitar el control

Definir una disciplina para garantizar produccin y mantenimiento

Una ingeniera muy joven, necesita:


Definirse a s misma: Cules son las reas de
conocimiento que la comprenden?

Definir los procesos: que intervienen en el desarrollo,


mantenimiento y operacin del software

De las mejores prcticas: extraer modelos de cmo


ejecutar esos procesos para evitar los problemas de la crisis del software

Definir criterios unificadores: para las tareas de


requisitos, pruebas, gestin de la configuracin, etc.

Necesita estandartes tiles, porque

Agrupan lo mejor y ms apropiado de las buenas


prcticas y usos del desarrollo de software.

Engloban los conocimientos. Proporcionan un marco para implementar


procedimientos de aseguramiento de la calidad.

Proporcionan continuidad y entendimiento entre el


trabajo de personas y organizaciones distintas.

Necesita un Proceso de Software


Es un proceso definido paso a paso, 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, empezar el proceso con:

Objetivos claros.
Planes para lograr los objetivos. Procedimientos que implementan los planes. Procedimientos de monitoreo y control de los planes.

Un ambiente conveniente al logro de los objetivos.

Crisis Del software

Naturaleza y problemas del desarrollo de software


El software como elemento lgico. Se desarrolla, no se fabrica:

Calidad del diseo.


Costos ms importantes en la ingeniera Gestin especial de los proyectos Se deteriora con el mantenimiento Desarrollo a medida (ausencia de componentes) La crisis del software: problemas que aparecen en el desarrollo del software;
al desarrollar, mantener y atender la demanda de nuevas aplicaciones.

Naturaleza y problemas del desarrollo de software


Sin tiempo para recoger datos histricos

Planificacin y estimaciones imprecisas

Dificultad de mantener el software existente

Insatisfaccin del cliente

Calida d

Baja productividad

Naturaleza y problemas del desarrollo de software

Causas de la crisis del software


Naturaleza lgica del software Mala gestin de los proyectos (ausencia de datos, deficiente comunicacin, ...) Ausencia de entrenamiento formal en nuevas tcnicas (programadores vs. ingenieros de
software) Resistencia al cambio Mitos del software:
MITOS DE LOS DESARROLLADORES MITOS DEL CLIENTE - Programa funcionando = fin del trabajo - Calidad = el programa se ejecuta sin errores - Entrega al cliente: programa funcionando - Requisitos establecidos como una declaracin general de objetivos - Flexibilidad del software ante los cambios

MITOS DE GESTIN
- Uso de estndares - Uso de herramientas - Mala planificacin: aumento de programadores

Por qu crisis del software?

Estimacin de desarrollo y costos impreciso No se corresponde la productividad del software con la demanda Insatisfaccin y desconfianza del cliente, debido a un psimo control de calidad No mantenimiento. Deteccin de un fallo no implica una sustitucin del mdulo No documentacin .

Situacin Actual

Hoy

Situacin Actual
Responder las siguientes preguntas entre dos personas (10 minutos para esta tarea)

Caracterizar la situacin del uso de las TICs

Situacin Actual
An se habla de desarrollar SW El desarrollo del software no ha acabado de salir de la
fase artesanal

Dedicamos nuestros esfuerzos de hoy a arreglar lo que


se hizo mal ayer (ojo)

prisa patolgica, estimaciones no realistas (falta de


planificacin), desorganizacin nos lleva a:
Procesos software normalmente improvisados Si se han especificado, no se siguen rigurosamente Organizacin reactiva (resolver crisis inmediatas)

Situacin Actual

Si hay plazos rgidos se sacrifican


funcionalidad y calidad del producto para satisfacer el plan

No existen bases objetivas para juzgar


la calidad del producto

Qu debemos hacer?

Hablar de la industria del SW Producir software de calidad Reutilizacin de experiencia acumulada de proyectos nfasis en la adopcin de las mejores prcticas reconocidas por la industria, incorporndolas a los procesos de desarrollo

Artesano

Ingeniero

Qu debemos hacer?
Mejorar los procesos de desarrollo del software para obtener como resultado mejores productos software
Mejora de los procesos software Aumento de los niveles de calidad

Aumento de la competitividad

Qu debemos hacer?

Planificar el trabajo Hacer el trabajo de acuerdo con el plan Esforzarse en producir productos de calidad

Ingeniera de Software: mbitos de Estudios

mbitos de Estudios
Modelizacin del software: Mtodos y Tcnicas; para diferentes tipos de arquitecturas o sistemas de software Software: Estructurado y orientado a objetos Tecnologa: CASE Computer Aided Software Engineering , Igeniera de Software Asistida por Computacin. Reutilizacin del Software: Re-ingeniera Cualidad del software. Mtricas Gestin de procesos Gestin de proyectos

Qu se requiere?
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?
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?
Ingeniero de Procesos Ingeniera de Calidad Analista de Requisitos

Diseador de Software
Programador

Gerente de Proyecto
Gestor de Configuracin del Software

Caractersticas de la Ingeniera

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.

Caractersticas de la Ingeniera
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.

Caractersticas de la Ingeniera

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.

Caractersticas de la Ingeniera
La mayora de los proyectos implica 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) Hay una falta de entrenamiento continuo de los profesionales

Conclusiones

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 de esto. 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
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 de la computadora Queremos hacer todo esto de la manera ms eficaz y eficiente posible.

Continuara

Вам также может понравиться