Introducción a la Ingeniería de Software. FAQ 1.Que es software? 2.Que es la Ingeniería de Software? 3.Cual es la diferencia entre Ingeniería de Software.

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Ciclo de vida de desarrollo de software
IDENTIFICAR NECESIDADES, PROBLEMAS U OPORTUNIDADES
Metodologías ágiles.
CICLO DE VIDA DEL DESARROLLO DE SOFTWARE
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
ANÁLISIS DE REQUERIMIENTOS
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Resolución de Problemas Algoritmos y Programación
Modelos de Proceso del Software
Análisis y Diseño de Aplicaciones Ingeniería de Software
Administración de Procesos de Pruebas
Versión 2004 Enrique Bañuelos Gómez
M.S.C. Ivette Hernández Dávila
Contenido Crisis del Software Mitos del Software
 EL MODELO INCREMENTAL.:  EL MODELO EN ESPIRAL:  viene a suplir el problema de no poder retroceder en las fases de desarrollo del software.  : no.
Propuesta de una metodología para el desarrollo de proyectos informáticos empleando la herramienta para el diseño automatizado GeneXus Autor: Dipl.-Ing.
PROCESO DE DESARROLLO DE SOFTWARE
DISEÑO DE SOFTWARE 1ª. Parte
 Docentes ◦ Jonathan Erlich  ◦ Ariel Glikman   Organización de la materia ◦ Idesmaimonides.wikidot.com.
Ingenieria de software
Ciclo de Vida del Software Paradigmas de Desarrollo
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
Unidad VI Documentación
Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
Ingeniería de Software
Ingeniería del Software
INGENIERÍA DE SOFTWARE
Tema 1: Introducción a la Ingeniería de Software
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
Desarrollo de Software II Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto - Diciembre 2008 Ing. Oswaldo Solarte Pabón.
PRESENTACIÓN Este trabajo se desarrolla sobre el tema de competencias, y basado en el Marco de Fundamentacion Conceptual Especificaciones de la Pruebas.
Análisis y Diseño de Aplicaciones
INGENIERIA DE SOFTWARE
Docente: Lic. M. Alina Vargas García Horario: Lunes 20:05 – 21:25 Miércoles 20:05 – 21:25 Gestión: 2011.
Capitulo 1 Roger S. Presman
Ciclo de vida de un sistema
Procesos de Desarrollo de Software
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
 Sara Isabel Osorio Alcaraz Ana Isabel Vallejo Grisales 10 Informática 1.
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
Conceptos sobre GESTIÓN DE PROYECTOS
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Ingeniería de Requerimientos
PROCESOS DE DESARROLLO DE SOFTWARE
Actividades en el Proceso de desarrollo de Software
Modelo Prescriptivos de proceso
Ingeniería del Software I
problemas de la calidad del software
Estructurar tus ideas para hacerlas realidad
Ciclo de Vida del Software
Omar de Jesús Rosales hernández
Ingeniería en Informática F UNDAMENTOS DE C OMPUTACIÓN B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
INGENIERIA DE SOFTWARE
Proceso de desarrollo de Software
Ing del Software Libre1 Ingeniería del Software Libre y Modelos de Calidad Instructora: Ing. Erika Veliz Correo Electrónico:
¿Qué es la Ingeniería De Software? Ingeniería de Software.
CONCEPTO DE CICLO DE VIDA 1 En los departamentos de Sistemas se debe definir un marco de referencia común que debe ser:  Pueda ser empleado por todos.
Fundamentos de Computación
Las fases del ciclo de la vida de desarrollo de sistemas
Software de Comunicaciones
Modelo de procesos de software
ELO-329: Diseño y Programación Orientados a Objetos1 Proceso de Desarrollo de SW Agustín J. González ElO329: Diseño y Programación Orientados a Objeto.
Verificación y Validación del Software
Entregables del Proyecto
Gestión del Alcance del Proyecto
Transcripción de la presentación:

Introducción a la Ingeniería de Software

FAQ 1.Que es software? 2.Que es la Ingeniería de Software? 3.Cual es la diferencia entre Ingeniería de Software y Ciencias de la Computación? 4.Cual es la diferencia entre Ingeniería de Software e Ingeniería de Sistemas? 5.Que es un proceso de software? 6.Que es un modelo de proceso de software? 7.Que son los métodos de Ingeniería de Software?

Software (Pressman): 1.Instrucciones (programas de computadora) que cuando se ejecutan proporcionan la función y el rendimiento deseados. 2.Estructuras de datos que permiten a los programas manipular adecuadamente la información. 3.Documentos que describen la construcción y uso de programas

Características del Software (Pressman) 1.El software se desarrolla, no se fabrica a.Los costes se centran en ingeniería, no en fabricación b.Los proyectos software no se pueden gestionar como procesos de fabricación 2. El software no se estropea: no es susceptible a males del entorno. 3. El software se deteriora. Durante su vida sufre cambios (mantenimiento), por lo que es posible de introducir nuevos defectos

Los productos de software: 1.No cumplen con los requisitos del usuario. 2.Son susceptible frecuentemente a romperse. 3.Es caro. 4.Es difícil de modificar, depurar y mejorar. 5.A menudo es entregado tarde. 6.Tiene a utilizar recursos no óptimos. La Crisis del Software

1.Problemas cada vez más grandes, 2.La falta de una formación adecuada en ingeniería de software, 3.El aumento de la falta de habilidades, 4.Baja productividad. Factores que contribuyen a la Crisis del Software

Programas vs Productos de Software ProgramasProductos de Software Usualmente pequeños en tamañoTamaño grande El autor es su único usuarioGran número de usuarios Un desarrolladorEquipo de desarrolladores Carece de interfaz de usuario adecuada Interfaz bien diseñada Pérdida de la documentaciónBuena documentación / Manuales de usuario Desarrollo Ad hocDesarrollo sistemático

Arte Profesión / trabajo Ingeniería Experiencia Esotérica Uso sistemático de la experiencia pasada y Bases Científicas Tecnología Tiempo Uso no organizado de la experiencia Evolución de la Ingeniería en el Tiempo

Ingeniería de Software: Una actividad de resolver problemas Ingeniería de Software Colección de técnicas, metodologías y herramientas para ayudar con la producción de: 1.Un software de alta calidad 2.Con un presupuesto dado 3.Antes del plazo determinado 4.Mientras el cambio se produce

Ingeniería de Software: Una actividad de resolver problemas

Ingeniería de Software “IEEE Standard Glossary of Software Engineering Terminology” (Stad ) ha desarrollado una definición más completa para ingeniería del software: “La aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo, operación y mantenimiento del software”.

1.Adquirir habilidades para desarrollar programas grandes. 2.El crecimiento exponencial del nivel de complejidad y dificultad con el tamaño. 3.El enfoque ad hoc se rompe cuando el tamaño del software incrementa Una espina de experiencia es mejor que todo un desierto de advertencia. ¿Por qué estudiar Ingeniería de Software?

Ingeniería de Software: Una actividad de resolver problemas Para resolver un problema se usa: 1.Técnicas (métodos): Procedimientos formales para producir resultados usando alguna notación bien definida (ej. técnicas de programación) 2.Metodologías (Proceso y Modelos): Colección de técnicas aplicadas a través del desarrollo de software y unificado bajo un enfoque filosófico (Iterativo, incremental, RAD, RUP, XP, etc.) 3.Herramientas: instrumentos o sistemas automatizados para llevar a cabo una técnica

Ingeniería de Software: Una actividad de resolver problemas Capas de la Ingeniería de Software. Pressman

CIENCIA VS INGENIERÍA Ciencias de la Computación: Demuestra teoremas sobre algoritmos, diseños de lenguajes, define los esquemas de representación del conocimiento. Tiene tiempo infinito...

CIENCIA VS INGENIERÍA Ciencias de la Computación: Supone que las técnicas, metodologías y herramientas se van a desarrollar. Investigan en los diseños de cada una de estas componentes, y demuestra teoremas que especifican que hacen lo que se pretende hacer. También diseñan lenguajes que nos permiten expresar las técnicas. Para hacer todo esto, un científico de la computación tiene a su disposición una cantidad infinita de tiempo.

CIENCIA VS INGENIERÍA Ingeniería de Software Desarrolla una solución para un problema específico de aplicación para un cliente. Utiliza computadores, lenguajes, herramientas, técnicas y métodos Ingeniero de Software: Trabaja en múltiples dominios de aplicación, tiene sólo 3 meses Mientras los cambios se producen en los requisitos y la tecnología disponible

CIENCIA VS INGENIERÍA Ingeniería de Software 1.La única duda para el ingeniero de software es: cómo estas herramientas, técnicas y metodologías se pueden utilizar para resolver el problema en cuestión. 2.Lo que tienen que preocuparse es cómo hacerlo bajo la presión del tiempo de una fecha límite. 3.Además tienen que preocuparse por un presupuesto que podría limitar la solución y, a menudo, el uso de herramientas. 4.Las buenas herramientas de ingeniería de software pueden costar muchos dólares

CIENCIAS VS INGENIERÍA CUSTOMER COMPUTER SCIENCE SOFTWARE ENGINEERING Theories Computer Functions Problem Tools and Techniques to Solve Problem

INGENIERÍA DE SOFTWARE VS INGENIERÍA DE SISTEMAS Ingeniería de Sistemas Se ocupa de todos los aspectos del desarrollo de sistemas basados en computadores, incluyendo el hardware, software y la ingeniería de procesos. La Ingeniería de Software es parte de este proceso, en términos de arquitectura, control, bases de datos en el sistema (Diseño, integración y despliegue)

CIENCIA VS INGENIERÍA Modelado: Modelar los objetos es una tarea difícil El buen modelado de objetos implica el dominio de conceptos complejos, la terminología y las convenciones. También requiere una experiencia considerable y, a veces subjetiva en un proceso fuertemente basado en la experiencia.

CIENCIA VS INGENIERÍA Modelado Cuidado con la falsa creencia de que: 1.La tecnología puede sustituir a la habilidad y, 2.Esa habilidad es un reemplazo para el pensamiento.

CIENCIA VS INGENIERÍA Modelado Muchas organizaciones se sienten frustrados con la falta de calidad de sus sistemas. Sin embargo, la causa de este problema es a menudo la falsa creencia de que una herramienta puede ser un sustituto para el conocimiento y la experiencia en la comprensión y el uso de técnicas de desarrollo.

CIENCIA VS INGENIERÍA Tenga en cuenta Ser capaz de utilizar una herramienta no significa que usted entiende las técnicas subyacentes, y la comprensión de las técnicas no significa que usted entiende el problema.

CIENCIA VS INGENIERÍA Tenga en cuenta En el análisis final, las organizaciones y los profesionales deben reconocer que las metodologías, herramientas y técnicas no representan los valores añadidos del proceso de modelado de objetos.

CIENCIA VS INGENIERÍA Tenga en cuenta Por el contrario, el valor real que se agrega, es el pensamiento y la idea de que sólo el analista puede proporcionar.

CIENCIA VS INGENIERÍA

Algunas deficiencias comunes en el desarrollo de software son: 1.Escasa o tardía validación con el cliente. 2.Inadecuada gestión de los requisitos. 3.No existe medición del proceso ni registro de datos históricos. 4.Estimaciones imprevistas de plazos y costos. 5.Excesiva e irracional presión en los plazos. 6.Escaso o deficiente control en el progreso del proceso de desarrollo. 7.No se hace gestión de riesgos formalmente. 8.No se realiza un proceso formal de pruebas. 9.No se realizan revisiones técnicas formales e inspecciones de código. Factores que afectan la Calidad del Software

Complejidad El sistema es tan complejo que ningún programador puede entenderlo. La introducción de una solo corrección de error puede hacer que otro se genere Cambios La "Entropía" de un sistema de software se incrementa con cada cambio: Cada cambio implementado erosiona la estructura del sistema lo cual hace que el siguiente cambio sea aún más costoso ("Segunda Ley de la Dinámica de Software"). Conforme pasa el tiempo, el costo de implementar un cambio será demasiado alto, y el sistema entonces no podrá soportar la tarea prevista.

Por que el software es tan complejo El dominio del problema es difícil El dominio del problema es a veces difícil, simplemente porque no somos expertos en ello. 1.Es decir, puede que no sea un desafío intelectual, sino porque usted no es un experto en ella, hay que aprenderlo. 2.Si unimos esto con el aprendizaje de varios dominios de problemas, y eso es lo que usted tendrá que hacer como ingeniero de software, y el problema se hace evidente.

Por que el software es tan complejo El proceso de desarrollo es muy difícil de gestionar Uno de los supuestos que los administradores han hecho en el pasado, es que el desarrollo de software puede ser gestionado como un conjunto de pasos en forma lineal, por ejemplo: Especificación de Requisitos, seguido de Diseño de Sistemas seguido de Ejecución seguido de pruebas y de entrega. En realidad esto no es tan fácil. Desarrollo de software no se sigue un proceso lineal. Es altamente no lineal. Hay dependencias entre la forma en que se diseña un sistema y la funcionalidad. Por otra parte, y eso hace que sea muy difícil, algunas de estas dependencias no se pueden formular a menos que pruebe el diseño.

Por que el software es tan complejo El software ofrece una flexibilidad extrema Podemos cambiar casi todo lo que hemos diseñado en el software. Si bien es difícil de cambiar el diseño de una lavadora, es muy fácil de cambiar el programa antes de ejecutarlo.

Por que el software es tan complejo El software es un sistema discreto (formas particulares de codificación) Cuando usted está sentado en un avión en un asiento de la ventana, y oprime un botón para llamar a la azafata para tomar una bebida, no espera que el sistema de un giro y usted termine en la tierra.

Por que el software es tan complejo El software es un sistema discreto (formas particulares de codificación) Esto puede suceder con los sistemas digitales. Una de las razones: 1.Si bien se puede descomponer el sistema en subsistemas (Azafata, Control de Vuelo), si usted no sigue las buenas reglas de diseño, que podrían haber utilizado alguna variable global para cada uno de estos subsistemas. 2.Una de estas variables utilizadas por el subsistema de control de vuelo podrían haber sido sobrescritos por el módulo de Azafata.

El proceso de software Propósito: producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas.

El proceso de software

El proceso de software no es único. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de software.

El proceso de software A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos: 1.Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software. 2.Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación. 3.Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente. 4.Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.

El proceso de software Además de estas actividades fundamentales, Pressman menciona un conjunto de “actividades protectoras”, que se aplican a lo largo de todo el proceso del software. Ellas se señalan a continuación: 1.Seguimiento y control de proyecto de software. 2.Revisiones técnicas formales. 3.Garantía de calidad del software. 4.Gestión de configuración del software. 5.Preparación y producción de documentos. 6.Gestión de reutilización. 7.Mediciones. 8.Gestión de riesgos.

El proceso de software Pressman caracteriza un proceso de desarrollo de software con los siguientes elementos:

El proceso de software Pressman caracteriza un proceso de desarrollo de software con los siguientes elementos: 1.Un marco común del proceso: actividades que son aplicables a todos los proyectos de software, con independencia del tamaño o complejidad. 2.Un conjunto de tareas: colección de tareas de ingeniería del software, hitos de proyectos, entregas y productos de trabajo del software, y puntos de garantía de calidad, que permiten que las actividades del marco de trabajo se adapten a las características del proyecto de software y los requisitos del equipo del proyecto. 3.Las actividades de protección, tales como garantía de calidad del software, gestión de configuración del software y medición, abarcan el modelo del proceso. Las actividades de protección son independientes de cualquier actividad del marco de trabajo y aparecen durante todo el proceso.

Modelos de proceso software Sommerville define el modelo de proceso de software como: “Una representación simplificada de un proceso de software, representada desde una perspectiva específica. Por su naturaleza los modelos son simplificados, por lo tanto un modelo de procesos del software es una abstracción de un proceso real.” Los modelos genéricos no son descripciones definitivas de procesos de software; sin embargo, son abstracciones útiles que pueden ser utilizadas para explicar diferentes enfoques del desarrollo de software.

Modelos de proceso software Algunos modelos son: 1.Codificar y corregir 2.Modelo en cascada 3.Desarrollo evolutivo 4.Desarrollo formal de sistemas 5.Desarrollo basado en reutilización 6.Desarrollo incremental 7.Desarrollo en espiral

Métodos de Ingeniería de software Enfoques estructurados para el desarrollo de software que incluyen modelos de sistema, notaciones, reglas, consejos de diseño y orientación de procesos. 1.Descripción del Modelo 2.Reglas 3.Recomendaciones 4.Proceso de orientación

The evolution of the laws of software evolution Software evolution deals with the process by which programs are modified and adapted to their changing environment. Meir M. Lehman

Tipos de Software Programas de tipo S ("determinable"): 1.Problema puede plantearse formalmente y completamente. 2.Aceptación: Es el programa correcto de acuerdo a sus especificaciones? 3.Este software no evoluciona. 4.Un cambio a la especificación define un nuevo problema, por lo tanto, un nuevo programa

Tipos de Software Programas de tipo P ("solución de problemas") 1.Declaración imprecisa de un problema del mundo real 2.Aceptación: Es el programa de una solución aceptable al problema? 3.Este software es probable que evolucione continuamente porque la solución no es nunca perfecta, y se puede mejorar debido a los cambios del mundo real y por lo tanto los cambios de problemas

Tipos de Software Programas de tipo E ("Embedded") 1.Un sistema que se convierte en parte del mundo que modela 2.Aceptación: depende totalmente de opinión y el juicio 3.Este software es inherentemente evolutivo 4.Cambios en el software y en el mundo se afectan entre sí

Actividades Extraclase 1.Lectura Leyes de la evolución del software (Lehman) – Control de Lectura 2.Lectura 2 Gestión de la Evaluación del Software - Archivos Legacy 3.Presentaciones Modelos de Procesos de Software (Conceptualización, Fases, Actividades, ventajas, desventajas) Lineal Secuencial (Cascada) Construcción de Prototipos DRA Evolutivo: Incremental Evolutivo: Espiral XP Scrum FDD RUP MSF Lean Software Development