You are on page 1of 52

Ingeniera de Software I

Materia Semestral correspondiente a 2do. Ao

Correlativa Algoritmos Datos y Programas

Teora: Marrero Luciano


Prctica: Emanuel Nucilli

Docentes

Bibliografa
2002. Pfleeger Shari Lawrence. Ingeniera de software. Teora y prctica. Prentice Hall. 2005. 2006. Sommerville Pressman Ian. Ingeniera Ingeniera de de software. Addison Wesley. Roger. Software. Un enfoque prctico. Mc Graw

Hill.

Aprobacin de cursada
1 parcial con dos recuperatorios. Opcin a rendir :
1 parcialito (Practica 1 y 2) Si se aprueba, se toma como aprobado el ejerc. del parcial que corresponda a esas prcticas 1 parcialito (Practica 3 y 4) Si se aprueba, se toma como aprobado el ejerc. del parcial que corresponda a esas prcticas

Aprobacin de la materia: - Promocin: 2 parciales tericos - final terico-prctico.

Temas a desarrollar
1

Conceptos de ingeniera de software.


2

Requerimientos.

Modelos de proceso.
4

Calidad

Qu es ingeniera de software?

El Software
Se diferencia del hardware porque es un elemento lgico, ===> tiene caractersticas diferentes. El software se desarrolla, no se fabrica como otros productos ===> + costo en la ingeniera que en la produccin. A pesar de haber una tendencia importante de construccin por componentes, aun se construyen a medida

El software no sigue una curva clsica de envejecimiento. Es inmune a los males que desgastan al hardware.

El problema no est en el tiempo de operacin, sino en los cambios.

Qu es el Software?
Es el producto que disean y construyen los Ingenieros de software . Esto abarca programas que se ejecutan dentro de una computadora , documentacin asociada y datos que se necesitan para que el producto opere de manera correcta. No est restringido por materiales, o gobernado por leyes fsicas o procesos de manufactura.

Desde

Hasta

El software se ha insertado en nuestra vida cotidiana Como profesionales de la computacin, usamos nuestro conocimiento para ayudar a resolver problemas .
Por lo que, es esencial entender la naturaleza del problema que queremos resolver

Existen dos tipos de productos de software

Productos genricos

Productos personalizad os

Categoras de Software
De sistemas ( sirve a otros programas) De gestin ( proceso de informacin comercial ) Cientfico (algoritmos de manejo de nmeros) Empotrado ( reside en memoria) De tiempo real ( coordina/analiza/controla sucesos del mundo real ) Basados en la Web ( sitios) De Inteligencia artificial ( uso de algoritmos no numricos para resolver problemas complejos)

Evolucin del Software

(1950-60) Hardware de propsito general, con continuos cambios. Software a medida.. Procesamiento batch. Desarrollo sin planificacin => DOCUMENTACION INEXISTENTE.

(1960-70) Multiprogramacin Multiusuario Minicomputadoras. Tiempo real. Bases de datos. Lenguajes. Nace el producto software" => "MANTENIMIENTO DE SOFT"

IBM 360

Minicomputadoras

(1970-90) Complejidad. .Microprocesadores. Redes. Procesos distribuidos. PC. Software de aplicacin en todas las reas. Baja espectacular del costo del hardware => PRODUCTIVIDAD

(1990-2000) Tecnologas O.O. Procesamiento paralelo. Recurso de procesamiento ilimitado. Capacidad de aprendizaje del usuario es un lmite => "INGENIERA". (2000-act) Aplicaciones WEB. Sistemas Expertos. Reconocimiento de Patrones. Redes Neuronales. Cdigo abierto. => COMUNICACION Y DISTRIBUCION

Fallas

Fallas
Explosin del Arianne 5. Explota a poco de salir por prdida total de informacin de guiado y altitud. El origen es un error de especificacin y diseo en el software del sistema de referencia inercial. Falla del misil Patriot. Mal clculo del tiempo desde el comienzo debido a errores aritmticos. En unas 100 horas acumulaba 0.34 segundos de error. Platforma Sleipner A. Produca petroleo y gas en el Mar del Norte. Una falla en las paredes submarinas originada en un error en anlisis de elementos finitos e insuficiente refuerzo.

Mitos

Mitos
M Mi gente dispone de las herramientas de

desarrollo de software mas avanzadas, les compramos las computadoras ms modernas.


R Se necesita mucho ms que las

computadoras modernas. Las herramientas CASE podran ser de mucha ms ayuda

Mitos
M Si

fallamos en la planificacin, podemos aadir mas programadores y adelantar el tiempo perdido.

R El desarrollo de software no es un

proceso mecnico como la fabricacin: Brooks dice aadir gente retrasa mas

Mitos
M Una declaracin general de los objetivos es suficiente para comenzar a escribir los programas. Podemos dejar los detalles para mas adelante.

R Una mala definicin inicial es la principal


causa del mal trabajo. Es esencial una descripcin formal y detallada del mbito de la informacin, funciones, comportamiento, etc. Estas caractersticas solo pueden determinarse despus de una exhaustiva comunicacin entre el cliente y el analista.

Mitos
M Los

requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fcilmente, ya que el software es flexible.

R Es verdad que los requisitos cambian,

pero el impacto del cambio varia segn el momento en que se introduzca.

Mitos
M Una vez que escribimos el programa y

hacemos que funcione, nuestro trabajo ha terminado.


R Alguien dijo que cuanto mas pronto se comience a escribir cdigo, mas se tardara

en terminarlo.

Mitos
M Hasta que no tengo el programa

ejecutndose, realmente no tengo forma de comprobar su calidad.


R Desde el principio del proyecto se puede aplicar uno de los mecanismos mas

efectivos para garantizar la calidad del software : la revisin formal.

Mitos
M Lo nico que se entrega al terminar el

proyecto es el programa funcionando.


R Un programa que funciona es solo una parte de una configuracin del software que incluye muchos elementos.

Qu es la Ingeniera de Software?
Disciplina de la ingeniera que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la especificacin del sistema incluyendo la evolucin de ste luego que se comienza a ejecutar.

Qu es la Ingeniera de Software?
Disciplina de la ingeniera que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la especificacin del sistema incluyendo la evolucin de ste luego que se comienza a ejecutar.

Qu es la Ingeniera de Software?
Richard Fairley propone:
La Ingeniera de Software es la disciplina tecnolgica y de administracin que se ocupa de la produccin y evolucin sistemtica de productos de software que son desarrollados y modificados dentro de los tiempos y costos estimados.

La Ingeniera de Software surgi como reaccin a las dificultades de desarrollar software sobre la base de habilidad, experiencia o intuicin individuales. La aplicacin de mtodos sistemticos y repetibles permite la produccin y evolucin de software por organizaciones distribuidas geogrficamente y en el tiempo. La aplicacin de estndares facilita la integracin, reusabilidad mantenimiento de los productos.

La cuantificacin rigurosa de recursos, procesos y productos es una precondicin para optimizar productividad y calidad. La metrificacin y el control estadstico de procesos son claves en Ingeniera de Software.

Un Ingeniero de Software debe cumplir contratos en tiempo y costos como es normal en obras de Ingeniera. Ello presupone la capacidad de medir, estimar, planificar y administrar proyectos.

La Ingeniera de Software se ocupa de todo el ciclo de vida de un producto, desde su etapa inicial de planificacin y anlisis de requerimientos hasta la estrategia para determinar cundo y cmo debe ser retirado de servicio.

Cmo naci la Ingeniera de Software?

En los aos 60, con la sofisticacin creciente de los sistemas de software crecieron tambin las dificultades para desarrollarlos o adaptarlos. Las dificultades desbordaban los recursos tcnicos de una heterognea clase profesional. => CRISIS DEL SOFTWARE

Cmo naci la Ingeniera de Software?

El valor estratgico del software llev a la Organizacin del Tratado del Atlntico Norte a organizar conferencias que tuvieron carcter fundacional para la Ingeniera de Software (Garmish 1968 y Roma 1969).

El propsito de estas conferencias fue identificar la raz de los problemas que enfrentaba la incipiente industria del software y sentar las bases de procesos sistemticos, repetibles y confiables. En la reunin de Roma se comenz a utilizar la expresin Ingeniera de Software.

Evolucin de la Ingeniera de Software


Era funcional
Aos 60

Se estudia cmo explotar la tecnologa para hacer frente a las necesidades funcionales de las organizaciones
Aparece la necesidad de desarrollar software en tiempo, planeado y controlado. Se introduce el modelo de ciclo de vida en fases. La importancia de la productividad en el desarrollo de software se incrementa sustancialmente. Se ponen en prctica varios modelos de costos.

Era de control
Aos 70

Era de costos
Aos 80

Evolucin de la Ingeniera de Software

Era de calidad

Se intensifica la necesidad de que el producto tenga atributos que satisfagan las necesidades explcitas e implcitas del usuario: mantenibilidad, confiabilidad, eficiencia, usabilidad

Qu conocimientos debe tener un Ingeniero de Software?


El Ingeniero de Software debe tener una combinacin de conocimientos cientficos, metodolgicos, tecnolgicos y administrativos. El Ingeniero debe estar familiarizado con la aplicacin de mtodos formales: lgica, estadstica, simulacin y con el uso de notaciones de modelizacin, especificacin, diseo, programacin

El Ingeniero debe poder aplicar metodologas de documentacin, anlisis, especificacin, diseo, implementacin y prueba. Debe conocer las ventajas y limitaciones de cada notacin y cada tcnica. Debe saber cmo y cundo aplicarlas.

El Ingeniero debe conocer las tecnologas y productos: sistemas operativos, lenguajes, herramientas CASE, bases de datos, sistemas generadores de interfaces, bibliotecas de cdigo.

El Ingeniero debe conocer tcnicas de administracin de proyectos: planificacin, anlisis de riesgos, control de calidad, seguimiento de proyectos, control de subcontratistas, etc.

En los ltimos aos se observa una especializacin de los ingenieros de software por dominio de aplicacin o por actividad

Participantes en el Desarrollo del Software

Miembros del Equipo de Desarrollo del Software

Qu es un proceso ?
Cuando se crea un producto o prestamos un servicio, siempre se sigue una secuencia de pasos o tareas para lograrlo. Se puede pensar al conjunto de tareas como un proceso. En general dicho proceso involucra un conjunto de herramientas y tcnicas. Cuando el proceso implica la construccin de algn producto, nos referimos al proceso como un ciclo de vida.

Proceso

Es el conjunto de mtodos, tcnicas y prcticas que guan a los ingenieros de software en el desarrollo y evolucin de software

Proceso, Ciclo de vida, Paradigma


El PROCESO DE DESARROLLO DE SOFTWARE es tambin llamado CICLO DE VIDA DEL SOFTWARE o PARADIGMA DE DESARROLLO DE SOFTWARE

Proceso, Ciclo de vida, Paradigma


ACTIVIDADES GENRICAS:

Especificacin del software Desarrollo del software Validacin del software Evolucin del software
EXISTEN DISTINTOS PARADIGMAS DE DESARROLLO DE SOFTWARE

You might also like