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

Ing. Freddy Gonzales Saji frego100@gmail.

com

Capitulo 1
Costo y Complejidad del Software

Objetivos
Conocer

los principios basicos de la Ingenieria de Software. Conocer las diferentes definiciones que involucran esta area. Comparacion de la ISW con otras disciplinas. Ver los temas asociados al costo y la complejidad del Software.

Definicin Ingeniera de Software


El

establecimiento y uso de principios de ingeniera robustos, orientados a obtener econmicamente software que sea fiable y funcione eficientemente sobre mquinas reales F.L. Bauer. Software Engineering. Information Processing 71., 1972

La disciplina tecnolgica y de gestin

que concierne a la produccin y el mantenimiento sistemtico de productos software desarrollados y modificados dentro de unos plazos estipulados y costes estimados. R. Fairley. Software Engineering Concepts. New York: McGraw-Hill, 1985.

La

aplicacin de un enfoque sistemtico, disciplinado y cuantificable del desarrollo, la operacin y el mantenimiento del software; esto es, la aplicacin de la ingeniera al software.

IEEE Std 610-1990

La construccin de sistemas de software que

funcionen no es una ciencia. Los as llamados cientficos en computacin nos tratan de convencer de que nuestros sistemas son en realidad grafos dirigidos, o n-tuplas de formas normalizadas, o autmatas de estados finitos. En lugar de aproximaciones acadmicas, lo que necesitamos es un conjunto de mtodos prcticos que traten con la naturaleza propensa a errores Segn Edward Nash Yourdon

El

desarrollo de sistemas posiblemente grandes para uso en entornos de produccin, en un perodo posiblemente largo, trabajado por las personas posiblemente muchos, y posiblemente pasando por muchos cambios, donde el desarrollo incluye la gestin, mantenimiento, validacin, documentacin, etc.

Bertrand Meyer

Que no es la ISW?

Ciencias de la Computacin

Fred Brooks: Un dicho acadmico es que Todo lo que se hace llamar ciencia no lo es. Astronoma, Fsica, Qumica son ciencias Ciencias Sociales, Ciencias Polticas, Ciencias de la Computacin no lo son El cientfico construye para aprender El ingeniero aprende para construir Lo que llamamos Ciencias de la Computacin es en realidad una disciplina de ingeniera. Nuestro trabajo es construir cosas, sean algoritmos, computadoras o sistemas

Fuente: Fred Brooks. The computer scientist as a Toolsmith II. Communications of the ACM, Marzo 1996.

Ingeniera de Sistemas
Atae a todos los aspectos del desarrollo de

sistemas basados en ordenadores, incluyendo el hardware, el software y la ingeniera de procesos La ingeniera del software es la parte de este proceso que atae al desarrollo de la infrastructura software, el control, las aplicaciones y las bases de datos del sistema. Software Engineering, Sommerville

Las diferencias (Programacin vs Ingeniera de Software):


Un

desarrollador vs. equipos de desarrolladores Sistemas simples vs. sistemas complejos Tiempo previsto de duracin corto vs. largo Sin stakeholders (desarrollador = usuario) vs. muchos stakeholders Construidos de cero vs. mucho reuso Poco mantenimiento vs. mantenimiento usualmente mayor al 60% de los costos originales

La Crisis del Software


Principio de los 80s Primeras horror stories Respuesta del DoD Engineering Institute.

Software

Historias de Horror

Algunas horror stories


Fracaso del Mariner I(1962) Fracaso por un carcter (~) en la especificacion del porgrama de control tuvireron que destruir la nave. Sobregiro del Banco de Nueva York(1985)
Sobregiro de 32 Millones Por Overflow

Accidente del un F18 (1986) Se estrello Giro descontrolado Una sentencia If sin else por creer innecesario.

Cont(1)

Therac-25: 6 personas expuestas a dosis masivas de radiacin (15000 a 20000 rads en vez de 200), se cree que 3 murieron por esta causa Arianne5: el cohete explot en su despegue. 500 millones de dlares. El cohete que al parecer no estaba asegurado, llevaba 4 satlites cuya explosin ocasiono prdidas totales por 1800 millones de dlares. Bug por overflow no tratado al mover un nmero de punto flotante de 64 bits a un entero con signo de 16 bits. Ni siquiera debera haber estado corriendo

Cont(2)

Problema en el Pentium (1994). Un error de punto flotante en el procesador Pentium le cost a Intel 475 millones de dlares. Aeropuerto de Denver: $ 193 millones, 400 carros, 21 millas de pistas. Slo una aerolnea lo lleg a usar. US$ 1,1 milln de dlares/da de retraso. Dic 93 Feb 95 (no todo por software)

Para que la Ingeniera de Software?


El

trmino ingeniera del software se populariz al final de los aos 60. Respuesta a la llamada crisis del software
Las

prestaciones del hardware aumentaban mucho ms rpido que las del software. El desarrollo de sistemas de software grandes resultaba muy insatisfactorio:
Entrega habitualmente retrasada (a veces por mucho) Presupuesto habitualmente excedido (a veces masivamente) calidad del producto final habitualmente baja:

Cont(1)
Las tcnicas utilizadas para software

unidesarrollador no escalan
Proyectos grandes necesitan un equipo la calidad de comunicacin entre los miembros

es un problema serio documentacin

La comunicacin con el cliente/usuario es

primordial.
entender los requisitos del cliente p.e. Xtreme programming (programacin

extrema): el cliente tiene representante en el equipo de desarrollo

Cont(2)
Necesidad de estimar el dinero, tiempo y

esfuerzo requeridos
Las estimaciones se basan principalmente en el

modelado del proyecto actual y su comparacin con proyectos anteriores. Queremos el trabajo? Cunto cobramos? Constructive Cost Model COCOMO. The mythical man month, Brooks, 1975: aadir recursos humanos a un proyecto de software atrasado lo atrasa ms

Cules son los desafos que enfrenta la Ingeniera de Software?


Sistemas heredados Sistemas antiguos pero valiosos, deben ser mantenidos y actualizados Heterogeneidad Los sistemas estn distribuido se incluyen diversos Hw y Sw Tiempo de Entrega Presin de tiempo para entregar el sw ms rpido Confianza Demostrar que el Sw puede ser confiable para los usuarios

Cules son los costos de la Ingeniera de Software?


Aprox. 60% de los costos son de desarrollo,

40% son de pruebas. Para el sw personalizado, los costos de evolucin a menudo exceden los de desarrollo Los costos varan dependiendo del tipo de sistema a desarrollar y los requerimientos de atributos de sistema, tales como performance y confiabilidad La distribucin de costos depende del modelo utilizado

Costo y Complejidad del SW


Cual es el costo del Software? Se pueden analizar tres tipos de Costos.
Costo Directo, para adquirir el software ya sea empaquetado o a medida. Costo Indirecto, para utilizar el software incluye instalacin, capacitacin, soporte tcnico, etc. Costo Oculto, ocasionado principalmente por las fallas del software

Costos Ocultos y Consecuencias por fallas del SW


Consecuencias inmediatas y efectos directos. Ocasionados mientras dura la cada de los sistemas pe. Sistema financiero de un banco Consecuencias a mediado y largo plazo y

efectos indirectos.
Perjuicios posteriores a la cada del sistema pe.

Empresa que opera aviones y software para el control.

Qu es un proceso de desarrollo?
Proceso:

Una serie de acciones u operaciones que conducen a un fin conjunto de las fases sucesivas de un fenmeno natural o de una operacin artificial (RAE) Proceso de desarrollo de software El conjunto de actividades, mtodos y prcticas utilizados en la produccin y evolucin de software.

Cont(1)
Un proceso de desarrollo de software puede

incluir.

Un modelo de ciclo de vida. divide el desarrollo en fases y prescribe las actividades que deben realizarse en cada fase proporciona criterios para determinar cundo cada fase de desarrollo ha terminado define los deliverables / artefactos / productos de cada fase consideracin de herramientas y equipamiento consideracin de personal y de su organizacin restricciones sobre las actividades, los

artefactos, las herramientas, el personal etc.

Cont(2)
Para muchos autores: proceso de desarrollo de software = ciclo de vida de software

Qu es un ciclo de vida de software?


El periodo de tiempo que comienza cuando se

concibe un software y concluye cuando el producto ya no est disponible para su uso. El ciclo de vida del software tpicamente incluye una fase de requisitos, una fase de diseo, una fase de pruebas, una fase de instalacin y aceptacin, una fase de operacin y mantenimiento, y, en ocasiones, una fase de retirada.

Cont(1)
Un modelo de ciclo de vida es una abstraccin

particular que representa un ciclo de vida de software. Un modelo de ciclo de vida se denomina con frecuencia un ciclo de vida de desarrollo software (SDLC, siglas inglesas).

IEEE Standard Terminology

Glossary

of

Soft.

Eng.

El modelado de software
El uso de modelos es tan antiguo como la

ingeniera
antes de construir el ente real, los ingenieros

construyen modelos y aprenden de ellos

Algunas caractersticas deseables de un

modelo abstracto comprensible preciso predictivo no muy caro de construir

El propsito de modelos
Ayudarnos a entender un problema complejo

mediante anlisis y simulacin Permitir la investigacin y comparacin de soluciones alternativas Facilitar la comunicacin de ideas sobre un problema o sobre su solucin Permitir la deteccin de errores y omisiones durante el diseo Para dirigir la implementacin
en la implementacin

particularidad del software el modelo se convierte

Modelos de Ciclo de Vida

Lecturas
A Future for Software Engineering? TWELVE SYSTEMS ENGINEERING ROLES

Conclusiones
La Ingeniera de Software es una disciplina de

ingeniera que comprende todos los aspectos de la produccin del sw Los productos de software consisten de los programas desarrollados y de su documentacin asociada Atributos escenciales del producto son mantenibilidad, confiabilidad, eficiencia y usabilidad El proceso de sw consiste de actividades involucradas en el desarrollo de productos de software.

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