Академический Документы
Профессиональный Документы
Культура Документы
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.
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
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.
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
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
Principio de los 80s Primeras horror stories Respuesta del DoD Engineering Institute.
Software
Historias de Horror
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)
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
primordial.
entender los requisitos del cliente p.e. Xtreme programming (programacin
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
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
efectos indirectos.
Perjuicios posteriores a la cada del sistema pe.
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
Cont(2)
Para muchos autores: proceso de desarrollo de software = ciclo de vida de software
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).
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
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
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.