You are on page 1of 40

Ingeniera de Software

Ingeniera de Software

Diapositiva 1

Objetivos

Definir la Ingeniera de Software y explicar su importancia. Discutir los conceptos de producto de software y proceso de software. Discutir los conceptos de responsabilidad profesional y principios de la IS Discutir los conceptos asociados a los diferentes enfoques de IS

Ingeniera de Software

Diapositiva 2

Ingeniera de Software

Ingeniera de Software Productos de Software Proceso de Software Qu es IS? Principios de la IS Modelos o Enfoques genricos de desarrollo de SW Resumen

Ingeniera de Software

Diapositiva 3

Ingeniera de Software

Las economas de los pases desarrollados dependen en gran parte del software. Mas y ms sistemas son actualmente controlados por software. La Ingeniera de Software concierne a teoras, mtodos y herramientas para el desarrollo profesional de software. El gasto en La Ingeniera de Software, representa un alto porcentaje del PIB de los pases desarrollados.

Ingeniera de Software

Diapositiva 4

Que es el Software
software es un programa que hace que un computador cumpla una tarea, cualquiera esta sea

dimensiones

es cdigo de algn lenguaje de programacin que puede ser intervenido por un programador es un proceso que se est ejecutando y que es "manipulado" por un usuario y ste interacta con l a travs de la interface la pantalla, los listados- de hecho esto es para el usuario el software.

As, la pregunta por el software no tendra una nica respuesta y quiz tenga tantas como puntos de vista se considere, no es una pregunta fcil de dilucidar.

Ingeniera de Software

Diapositiva 5

Que es el Software : Evolucin Histrica

Primeros aos

hardware sufri continuos cambios El software se vea simplemente como un aadido. La programacin era un arte, para el que existan pocos mtodos sistemticos El desarrollo de software se realizaba sin ninguna planificacin La mayora del software se desarrollaba y utilizaba por la misma persona u organizacin. La misma persona lo escriba, lo ejecutaba y si fallaba lo depuraba. Baja movilidad en el trabajo El diseo era un proceso implcito, ejecutado en la cabeza de alguien, y la documentacin no exista normalmente.

El software, en esta primera etapa, se vea como un apndice del hardware y la evolucin de este impeda pensar en el software como algo ms all que un programa. El software es cdigo, es un programa que alguien desarrollaba para que a travs de l se realizara una tarea simple y rutinaria.

Ingeniera de Software

Diapositiva 6

Que es el Software : Evolucin Histrica

La segunda era dcada de los 60 hasta finales de los 70.


La multiprogramacin Sistemas multiusuarios introdujeron nuevos conceptos de interaccin hombre-mquina...
La segunda poca se caracteriz por el uso de software como producto y la llegada de las "casas de software"...
programas de decenas de miles de sentencias fuente corregidos cuando se detectaran fallos se modifican por cambios en los requerimientos del usuario Se adaptaran a un nuevo hardware que se hubiera comprado. Estas actividades se llamaron colectivamente mantenimiento del software. Haba comenzado la crisis del software.

El software continua siendo un programa, quiz ms complejo, pero, adems, adquiere dimensiones de producto. El software es desarrollado, no es fabricado en un sentido clsico.

Ingeniera de Software

Diapositiva 7

Que es el Software : Evolucin Histrica

La tercera era comenz a mediados de los 70 y contina hoy.


Los sistemas distribuidos incrementan notablemente la complejidad de los sistemas informticos Redes de rea local y global Llegada y amplio uso de los microprocesadores y computadores personales

La cuarta era en software est ahora empezando...Ya, las tcnicas de la cuarta generacin para el desarrollo de software estn cambiando la forma en que algunos segmentos de la comunidad informtica construyen los programas de computadora. .
Se hace muy difcil seguir sustentando conceptos en que el software pueda ser visto exclusivamente como programa o como producto. la visin de software se ampla a la de una suerte de modelo del ambiente en que est inserto, ms an en muchos casos es un modelador de ese ambiente y en ese sentido esta visin es ms amplia que las anteriores.

Ingeniera de Software

Diapositiva 8

Productos de Software

Productos genricos.

Productos que son producidos por una organizacin para ser vendidos al mercado. Sistemas que son desarrollados bajo pedido a un desarrollador especfico .

Productos hechos a medida.

La mayor parte del gasto del software es en productos genricos, pero hay ms esfuerzo en el desarrollo de los sistemas hechos a medida.

Ingeniera de Software

Diapositiva 9

Caractersticas de los Productos de Software

Mantenibles.

Debe ser posible que el software evolucione y que siga cumpliendo con sus especificaciones. El software no debe causar danos fsicos o econmicos en el caso de fallos. El software no debe desperdiciar los recursos del sistema. El software debe contar con una interfaz de usuario adecuada y su documentacin.

Confiabilidad.

Eficiencia.

Utilizacin adecuada.

Ingeniera de Software

Diapositiva 10

Importancia de las caractersticas del producto

La importancia relativa de las caractersticas depende en el tipo de producto y en el ambiente en el que ser utilizado. En algunos casos, algunos atributos pueden dominar.

En sistemas de seguridad crticos de tiempo real, los atributos clave pueden ser la confiabilidad y la eficiencia.

Los costos tienden a crecer exponencialmente si son requeridos altos niveles de alguna caracterstica.

Ingeniera de Software

Diapositiva 11

Costes de Eficiencia.

Costos

Eficiencia

Ingeniera de Software

Diapositiva 12

El Proceso de Software

Conjunto estructurado de actividades requeridas para desarrollar un sistema de software.


Especificacin. Diseo. Validacin. Evolucin.

Las actividades varan dependiendo de la organizacin y del tipo de sistema a desarrollarse. Debe estar explcitamente modelado si va a ser bien administrado.

Ingeniera de Software

Diapositiva 13

Caractersticas del proceso


Entendible

Se encuentra el proceso bien definido y es entendible ?. El proceso es visible al exterior ?. Puede el proceso ser soportado por herramientas CASE ?. El proceso es aceptado por aquellos involucrados en el ?. Los errores del proceso son descubiertos antes de que se conviertan en errores del producto ? . Puede continuar el proceso a pesar de problemas inesperados ?. Puede el proceso evolucionar para cumplir con los objetivos organizacionales ?. Que tan rpido puede producirse el sistema ?.

Visible

Soportable

Aceptable

Confiable

Robusto

Mantenible

Rapidez

Ingeniera de Software

Diapositiva 14

Modelo de Ingeniera del Proceso

Especificacin - establecer los requerimientos y restricciones del sistema Diseo - Producir un modelo en papel del sistema Manufactura - construir el sistema Prueba - verificar que el sistema cumpla con las especificaciones requeridas Instalacin - entregar el sistema al usuario y asegurar su operacionalidad Mantenimiento - reparar fallos en el sistema cundo sea descubiertos

Ingeniera de Software

Diapositiva 15

Problemas en el Modelo del Proceso

Normalmente, las especificaciones son incompletas o anmalas No existe una distincin precisa entre la especificacin, el diseo y la manufactura Solo hasta que el sistema se ha producido se puede probar El software no se puede remplazar siempre durante el mantenimiento

Ingeniera de Software

Diapositiva 16

Qu es Ingeniera de Software

Ingeniera de Software

Diapositiva 17

Qu es Ingeniera de Software

Bsicamente la Ingeniera de Software es la aplicacin de la Ingeniera sus mtodos y tcnicas- al proceso de produccin de software. De acuerdo con Boehm, la ingeniera de Software incluye la aplicacin prctica del conocimiento cientfico en el diseo y construccin de programas para computadoras y la documentacin asociada requerida para desarrollarlos, operarlos y mantenerlos. Segn el libro de IEEE titulado "Standar Glossary of Software Engineering Terminology", en el cual se define como el enfoque sistemtico para el desarrollo de operacin, mantenimiento y eliminacin del software donde software se define como aquellos programas, procedimientos, reglas y documentacin posible asociada con la computacin, as como los datos pertenecientes a la operacin de un sistema de cmputo. La Ingeniera de Software es una disciplina pragmtica que confa en las ciencias de la computacin para obtener los fundamentos cientficos de la misma manera que las ramas de la ingeniera tradicional, como las ingenieras elctrica y qumica se valen de la fsica y de la qumica
Ingeniera de Software Diapositiva 18

Qu es Ingeniera de Software

La Ingeniera de Software surge como disciplina a fines de la dcada de los sesenta, cuando se hace presente los graves problemas existente en la produccin y, sobre todo, mantencin de software, situacin que se conoce como la "crisis del software". Las prcticas "artesanales" de programacin y la nula documentacin que se utilizaban en ese entonces hicieron crisis y determinaron que se pensara en el software como un problema que necesariamente debera ser abordado de manera ms sistemtica. El modelo bsico de esta sistematizacin corresponde a una variacin de un modelo desarrollado en la dcada de los treinta en los Laboratorios Bell, mtodo que en el mbito del software se conoce como el ciclo de vida tradicional.

Ingeniera de Software

Diapositiva 19

Principios Tcnicos de la Ingeniera de Software

Rigor y Formalidad
Siendo el desarrollo de software una actividad creativa, la tendencia natural es a la informalidad de las soluciones, siguiendo las corazonadas que surgen en cada momento. Pero, por otra parte el desarrollo de software es una actividad que exige un alto grado de rigurosidad en el resultado final, rigurosidad que si se pasa por alto puede llevar a que los resultados sean pobres

Separacin de intereses
Entre ms y mejores sean los puntos de vista que se considere para el desarrollo de un producto software, mejor sern las posibilidades de que ese producto sea adecuado en la solucin del problema Las personas involucradas en el uso del software tendrn visiones distintas, que de alguna manera deben ser analizadas separadamente con el fin de que la posterior integracin refleje aspectos propios de cada visin o, en caso de que no lo haga, la no inclusin de aquellos aspectos est claramente justificada.

Modularidad
La modularidad es un principio bsico que se utiliza en el diseo y construccin de cualquier producto de ingeniera. Para el caso del software tambin es un principio bsico El proceso de modularizacin busca alcanzar tres objetivos bsicos: capacidad de descomposicin de un sistema complejo; composicin a partir de componentes existentes y; comprensin del sistema, mirndolo en partes.

Ingeniera de Software

Diapositiva 20

Principios Tcnicos de la Ingeniera de Software

Abstraccin y Representacin
El mecanismo fundamental para el desarrolle de software es el dado por la dualidad de abstraccin y representacin. La abstraccin consiste en el proceso mediante el cual es posible identificar los aspectos importantes de un fenmeno ignorando los detalles y la representacin es el proceso que permite describir sobre algn formalismo estos aspectos importantes. El criterio que permite decidir que elementos deben ser considerados importantes depende del por qu se est realizando tal abstraccin

Anticipacin al cambio
El desarrollo como la posterior implantacin de software conlleva una dinmica de redefiniciones que afecta el sentido mismo del ambiente en que el software ha sido implantado aumentando, por lo mismo, la distancia entre la realidad y el modelo propuesto por el software lo que desactualiza a este ltimo aumentando la presin por modificaciones que permitan acortar esta distancia.

Generalidad
Esto corresponde a determinar, para cualquier problema, soluciones que no slo resuelvan el problema propuesto sino una clase de problemas similares. Es decir, mediante este tipo de solucin no slo resolvemos el problema especfico original, sino tambin podemos resolver, sin mayor costo, variaciones de aquel. La ventaja de esta forma general radica en que puede ser ms fcilmente reutilizada en otras aplicaciones

Incrementabilidad
Generalmente en el desarrollo de software los objetivos propuestos no pueden ser alcanzados directamente, ellos se van logrando mediante aproximaciones sucesivas, las cuales corresponden a incrementos realizados sobre la aproximacin anterior
Ingeniera de Software Diapositiva 21

Responsabilidad profesional

Los Ingenieros de software no solo deben considerar aspectos tcnicos. Deben tener una visin mas amplia, en lo tico, social y profesional. No existe estatutos para ninguno de estos aspectos.

Desarrollo de sistemas militares. Piratera. Que es mejor para la profesin de Ingeniero de Software.

Ingeniera de Software

Diapositiva 22

Aspectos ticos

Confidencialidad. Competencia. Derechos de propiedad intelectual. Mal uso de la computadora.

Ingeniera de Software

Diapositiva 23

Principios de la Ingeniera de Software

Aceptar la responsabilidad de tomar decisiones ingenieriles que sean consistentes con la seguridad, la salud y el bienestar pblico, y para detectar rpidamente los factores que puedan poner en peligro al pblico o al medio ambiente; evitar conflictos de inters, reales o percibidos, siempre que sea posible, y a comunicarlos a las partes afectadas cuando existan; ser honrado y realista definiendo exigencias o estimaciones basadas en los datos disponibles; rechazar sobornos en todas sus formas; mejorar la comprensin de la tecnologa, su uso apropiado, y las consecuencias potenciales;

Ingeniera de Software

Diapositiva 24

Principios de la Ingeniera de Software

mantener y mejorar nuestra competencia tcnica y slo emprender tareas tecnolgicas para otros si estamos calificados a travs del entrenamiento o la experiencia, o despus de la comunicacin completa de nuestras limitaciones; buscar, aceptar, y ofrecer una crtica honesta al trabajo tcnico, para reconocer y corregir errores, y para acreditar apropiadamente las contribuciones de otros;

tratar a todas las personas justamente sin tener en cuenta los factores como raza, religin, gnero, invalidez, edad, o nacionalidad;
evitar daos a otros, sus propiedades, reputaciones, o empleo por acciones falsas o malvolas; ayudar a los colegas y colaboradores en su desarrollo profesional y apoyarlos siguiendo este cdigo de tica.

Ingeniera de Software

Diapositiva 25

Modelos o Enfoques Genricos de Desarrollo de Software

Modelo Codificar y Fijar


(1) Escribir algn cdigo. (2) fijar los problemas en el cdigo. Separar en distintas fases de especificacin y desarrollo. Un modelo sirve de prototipo para la construccin del sistema final . La especificacin y el desarrollo estn intercalados Un modelo matemtico del sistema se transforma formalmente en la implementacin.

Modelo de Cascada

Prototipado

Desarrollo Evolutivo

Transformacin Formal

Desarrollo basado en Reutilizacin

Ingeniera de Software

Diapositiva 26

Modelos o Enfoques Genricos de Desarrollo de Software

Descripcin de Etapas Plan operativo.


Etapa donde se define el problema a resolver, las metas del proyecto, las metas de calidad y se identifica cualquier restriccin aplicable al proyecto.

Especificacin de requerimientos.
Permite entregar una visin de alto nivel sobre el proyecto, poniendo nfasis en la descripcin del problema desde el punto de vista de los clientes y desarrolladores. Tambin se considera la posibilidad de una planificacin de los recursos sobre una escala de tiempos.

Especificacin funcional.
Especifica la informacin sobre la cual el software a desarrollar trabajar.

Diseo.
Permite describir como el sistema va a satisfacer los requerimientos. Esta etapa a menudo tiene diferente niveles de detalle. Los niveles ms altos de detalle generalmente describen los componentes o mdulos que formarn el software a ser producido. Los niveles ms bajos, describen, con mucho detalle, cada mdulo que contendr el sistema.

Ingeniera de Software

Diapositiva 27

Modelos o Enfoques Genricos de Desarrollo de Software

Descripcin de Etapas Implementacin.


Aqu es donde el software a ser desarrollado se codifica. Dependiendo del tamao del proyecto, la programacin puede ser distribuida entre distintos programadores o grupos de programadores. Cada uno se concentrar en la construccin y prueba de una parte del software, a menudo un subsistema. Las pruebas, en general, tiene por objetivo asegurar que todas las funciones estn correctamente implementadas dentro del sistema.

Integracin.
Es la fase donde todos los subsistema codificados independientemente se juntan. Cada seccin es enlazada con otra y, entonces, probada. Este proceso se repite hasta que se han agregado todos los mdulos y el sistema se prueba como un todo.

Validacin y verificacin.
Una vez que el sistema ha sido integrado, comienza esta etapa. Es donde es probado para verificar que el sistema es consistente con la definicin de requerimientos y la especificacin funcional. Por otro lado, la verificacin consiste en una serie de actividades que aseguran que el software implementa correctamente una funcn especfica. Al finalizar esta etapa, el sistema ya puede ser instalado en ambiente de explotacin.

Mantencin.
La mantencin ocurre cuando existe algn problema dentro de un sistema existente, e involucrara la correccin de errores que no fueron descubiertos en las fases de prueba, mejoras en la implementacin de las unidades del sistema y cambios para que responda a los nuevos requerimientos. Las mantenciones seSoftware puede clasificar en: correctiva, adaptativa, perfectiva y Ingeniera de Diapositiva 28 preventiva.

Modelos o Enfoques Genricos de Desarrollo de Software

Ingeniera de Software

Diapositiva 29

Modelos o Enfoques Genricos de Desarrollo de Software

Ingeniera de Software

Diapositiva 30

Modelos o Enfoques Genricos de Desarrollo de Software

Ingeniera de Software

Diapositiva 31

Modelos o Enfoques Genricos de Desarrollo de Software

Ingeniera de Software

Diapositiva 32

Ventajas y Desventajas de los modelos

Modelo Etapas y Cascada


Las ventajas que presentan tanto el modelo de etapas y de cascada tiene relacin con la idea de postular un marco de trabajo claro, que reconoce y define las actividades involucradas en el desarrollo de software, permitiendo establecer relaciones de cooperacin entre ellas. Corresponden, tambin, a los mtodos ms usados en desarrollo de software y que han sido exitosos durante dcadas tanto en el desarrollo de grandes sistemas como en el de pequeos. Tanto el modelo de etapas como el de cascada, presentan algunas dificultades comunes. Por ejemplo, la especificacin de los problemas. Ambos mtodos asumen que el diseador puede distinguir entre lo que el sistema debe hacer y como el sistema lo har; pero algunos problemas no pueden ser divididos tan fcilmente para ser atacados desde este prisma. Por otro lado, generalmente los requerimientos son especificados al inicio del proyecto y, paradojalmente, cuando se tiene la claridad suficiente para definir precisamente lo que se quiere es cuando se est en las ltimas etapas del proyecto. Esto es consecuencia, en general, de que los clientes no estn familiarizados con la tecnologa, con lo cual producen requerimientos muy vagos, que son interpretados arbitrariamente por los desarrolladores. Otro factor importante es que estos mtodos asumen que una vez que los requerimientos han sido definidos entonces ellos no cambiarn ms. Pero, dependiendo de la complejidad de el proyecto, la implementacin final puede ocurrir meses o, eventualmente, aos despus de que los requerimientos han sido especificados; as, en las ltimas etapas del proyecto, los requerimientos pueden haber cambiado. Existira un nfasis en la elaboracin de documentos. El sistema completo es descrito y registrado en papel, cada etapa produce cierta cantidad de documentos. Por ltimo, se ha detectado que el enfoque lineal de estos mtodos no sera el adecuado para reflejar el proceso de desarrollo de software.

Ingeniera de Software

Diapositiva 33

Ventajas y Desventajas de los modelos

Modelo Prototipo
Las ventajas : reduccin de la incertidumbre y del riesgo, reduccin de tiempo y de costos, incrementos en la aceptacin del nuevo sistema, mejoras en la administracin de proyectos, mejoras en la comunicacin entre desarrolladores y clientes, etc. Desventajas : la dependencia de las herramientas de software para el xito ya que la necesidad de disminucin de incertidumbre depende de las iteraciones del prototipo, entre ms iteraciones existan mejor y esto ltimo se logra mediante el uso de mejores herramientas lo que hace a este proceso dependiente de las mismas. Tambin, no es posible aplicar la metodologa a todos los proyectos de software y, finalmente, la mala interpretacin que pueden hacer los usuarios del prototipo, al cual pueden confundir con el sistema terminado. Problemas Poca visibilidad en el proceso Los sistemas estn pobremente especificados Se requieren habilidades especiales. Aplicabilidad Para sistemas interactivos pequeos o medianos. Para partes de sistemas grandes (p.ej. la interfaz de usuario). Para sistemas de corta vida.

Modelo Evolutivo

Ingeniera de Software

Diapositiva 34

Modelos de Procesos Hbridos

Los sistemas grandes estn hechos usualmente de varios subsistemas. No es necesario utilizar el mismo modelo de proceso para todos los subsistemas. El prototipado es recomendado cuando existen especificaciones de alto riesgo. El modelo de cascada es utilizado en desarrollos bien comprendidos.

Ingeniera de Software

Diapositiva 35

Modelo de Proceso de Espiral


Determine objetivos alternativas y restricciones Evale alternativas, identifique y resuelva riesgos

Anlisis de Riesgos Anlisis de Riesgos Anlisis de Riesgos

REVISIN

Anlisis de Proto Riesgos tipo 3

Prototipo Prototipo 3 2

Prototipo Operacional

Plan de requerimientos Concepto de Plan del ciclo de vida Operacin

Simulaciones, modelos y benchmarks

Planea la siguiente fase

Requeri Diseo Diseo mientos de del Detallado SW Plan de Validacin de Producto Codificacin Desarrollo Requerimientos Prueba de Unidades Plan de Integracin Diseo Prueba de y Prueba V &V Prueba de Integracin Desarrolla y verifica Aceptacin el siguiente nivel Servicio del producto Ingeniera de Software Diapositiva 36

Fases del Modelo de Espiral

Planteamiento de Objetivos

Se identifican los objetivos especficos para cada fase del proyecto.

Identificacin y reduccin de riesgos.

Los riesgos clave se identifican y analizan, y la informacin sirve para minimizar los riesgos.

Desarrollo y Validacin.

Se elige un modelo apropiado para la siguiente fase del desarrollo.

Planeacin.

Se revisa el proyecto y se trazan planes para la siguiente ronda del espiral.

Ingeniera de Software

Diapositiva 37

Visibilidad de Procesos

Los sistemas de software son intangibles por lo que los administradores necesitan documentacin para identificar el progreso en el desarrollo. Esto puede causar problemas..

El tiempo planeado para entrega de resultados puede no coincidir con el tiempo necesario para completar una actividad. La necesidad de producir documentos restringe la iteracin entre procesos. .El tiempo para revisar y aprobar documentos es significativo.

El modelo de cascada es an el modelo basado en resultados mas utilizado.

Ingeniera de Software

Diapositiva 38

Resumen

La Ingeniera de software concierne a las teoras, mtodos y herramientas para el desarrollo, administracin y evolucin de productos de software. Los productos de software consisten de programas y documentacin. Los atributos de los productos son, mantenabilidad, dependabilidad, eficiencia y usabilidad. El proceso de software consiste en aquellas actividades involucradas en el desarrollo de software.

Ingeniera de Software

Diapositiva 39

Resumen

El modelo de cascada considera cada actividad del proceso como una actividad discreta. El modelo de desarrollo evolutivo considera actividades del proceso en forma concurrente. El modelo de espiral se basa en anlisis de riesgos. La visibilidad del proceso involucra la creacin de documentos o resultados de las actividades. Los Ingenieros de software deben tener responsabilidades ticas, sociales y profesionales.

Ingeniera de Software

Diapositiva 40

You might also like