La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 Introducción a la Ingeniería de Software

2 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?

3 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

4 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

5 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

6

7

8 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

9 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

10 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

11 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

12 Ingeniería de Software: Una actividad de resolver problemas

13 Ingeniería de Software “IEEE Standard Glossary of Software Engineering Terminology” (Stad. 610.12-1990) 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”.

14 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?

15 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

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

17 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...

18 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.

19 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

20 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

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

22 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)

23

24 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.

25 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.

26 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.

27 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.

28 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.

29 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.

30 CIENCIA VS INGENIERÍA

31 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

32 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.

33 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.

34 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.

35 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.

36 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.

37 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.

38 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.

39 El proceso de software

40 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.

41 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.

42 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.

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

44 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.

45 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.

46 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

47 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

48 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

49 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

50 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

51 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í

52 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


Descargar ppt "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."

Presentaciones similares


Anuncios Google