INGENIERÍA DEL SOFTWARE INGENIERÍA DEL SOFTWARE Sesión No. 2 Nombre: Procesos de ingeniería del software Contextualización La ingeniería de software actualmente es muy importante, pues con los avances tecnológicos se crean muchas cosas que funcionan y operan mediante aplicaciones informáticas, el uso de los medios mecánicos está dejando de ser muy frecuente, por lo que es importante conocer las propiedades que puede manejar un software, las aplicaciones más grandes y pequeñas de uso cotidiano y la forma en que se idean y desarrollan éstas para diferentes usos, ya sea dispositivos móviles, televisores inteligentes, software etcétera. razasar.jimdo.com- automóviles, de computadora, 1 INGENIERÍA DEL SOFTWARE Introducción al Tema Dentro de la forma en que se desarrollan aplicaciones y medios de programación, se ubica un importante procedimiento para su desarrollo y representación antes de la creación, en éste se pueden determinar los ciclos de vida de cada uno y los procesos por los que debe pasar para cumplir con la idea principal, los objetivos que debe efectuar y el uso de recursos que tendrá, definiendo un mínimo y un máximo para concretar el trabajo estipulado dentro de su código. 2 INGENIERÍA DEL SOFTWARE Explicación Ciclo de vida del software ¿Qué es un ciclo de vida en el software? Cualquier sistema secuencial tiene fases que dividen su complejidad y sus funciones, en el caso de la ingeniería de software, a este conjunto se le conocen como ciclo de vida de software. En éste de describen las fases en las que se divide el sistema para cumplir sus objetivos cada una de estas fases validan una función específica y verifican que los métodos utilizados sean los adecuados. Dependiendo de la finalidad del producto, se elige el modelo de ciclo de vida en algunos casos, las fases pueden ser bucles de realimentación, y se repiten más de una vez en el sistema, recibiendo aportes nuevos a los resultados y mejoras al momento de la ejecución. En la mayoría de los desarrollos de proyectos actuales es complicado ejecutar un modelo de ciclo de vida secuencial o hermética, así que en algunos desarrollos se implementan dos o más modelos de ciclo de vida haciendo adaptables las fases necesarias para su correcto funcionamiento. Figura 1. Sicilia, M. Factores del coste del ciclo de vida del software [Distribución del coste del ciclo de vida]. Recuperado de http://cnx.org/contents/82e48bb4-de56-44fd-b069- bf470491e5b7@4/Factores-del-coste-del-Ciclo-d 3 INGENIERÍA DEL SOFTWARE Es ciclo de vida del software puede ser muy costoso si las etapas principales no se analizan adecuadamente, ya que el siempre mantenimiento que abarca correcciones, mejores, optimizaciones y otros, puede llegar a abarcar hasta el 67 % del costo general del ciclo de vida, mientras que el análisis y diseño pueden abarcar tan solo un 6 o 7 % lo que perjudica su visión posterior. Procesos del ciclo de vida. Los procesos o etapas del ciclo de vida varían dependiendo del modelo de ciclo de vida que sea implementado, pero las etapas que están presentes en todos son: Análisis. Diseño. Codificación. Pruebas. Mantenimiento. Análisis: Es todo lo referente a la gestión de requerimientos del cliente, este presenta las necesidades que tiene y se crea una lista de requerimientos para su posible solución. Diseño: Una vez que el análisis de requerimiento ha sido realizado, procedemos a plasmar la información gráficamente en diagramas para poder entender cómo va a funcionar el sistema o la solución planteada, como vimos al inicio de este curso, hay soluciones que no requieren un sistema en sí, sin embargo, es recomendable realizar al menos un ciclo de vida simple antes de implantar un producto. Codificación: Es la interpretación a un lenguaje de programación, se elige el más óptimo y que más se adapte a los recursos con los que se cuenta. Pruebas: Antes de implementar el sistema en producción es necesario realizar pruebas con casos reales, aunque en producción siempre existirá un problema 4 INGENIERÍA DEL SOFTWARE no planeado, por eso es importante tener el control total al momento de lanzar el sistema. Mantenimiento: Algunas veces la etapa más costosa del proyecto, se refiere a las mejores y correcciones del sistema. Figura 2. Pes, C. ¿Qué es el ciclo de vida de un programa? [Etapas del ciclo de vida de un programa]. Recuperado de: http://www.carlospes.com/curso_de_ingenieria_del_software/01_03_ingenieria_del_softw are.php Ciclos de vida tradicionales Estos son ciclos que aún se utilizan para construir sistemas complejos, los cuales exigen de un análisis riguroso y formal, controles estrictos sobre el proceso, etcétera. Este ciclo de vida no es conveniente para los sistemas pequeños de escritorio, los ciclos de vida tradicionales, son; Ciclo de vida clásica o de cascada Ciclo de vida iterativo o incremental Ciclo de vida de prototipos Ciclo de vida en espiral. Ciclo de vida evolutivo 5 INGENIERÍA DEL SOFTWARE Figura 3. Alonso, F., Martínez. & Segovia, F. (2005). Introducción a la ingeniería de software: Modelos de desarrollo de programas [Modelo de ciclo de vida en espiral de Boehm] (p.113). España: Delta Publicaciones. Ciclos de vida para sistemas orientados a objetos Algunos sistemas necesitan ser menos herméticos y ser más modulares en su desarrollo, esto es porque suelen tener constantes cambios en algunas partes de su estructura o desarrollos no planeados posteriores después de su implementación, para ellos se implementan un ciclo de vida orientado a objetos. 6 INGENIERÍA DEL SOFTWARE Los ciclos de vida orientados a objetos son: Ciclo de vida fuente. Ciclo de vida de agrupamiento o clúster. Ciclo de vida PinBall. Figura 4. Muriel, J. (2012) Ciclos de vida orientados a objetos [Modelo Clúster]. Recuperado de: http://juanmurielc.blogspot.mx/ ¿Cuál es la diferencia entre el modelo tradicional y el modelo orientado a objetos? La diferencia entre los modelos de ciclo de vida no es nada más que el uso al que van dirigidos, mientras que el modelo tradicional se orienta en sistemas herméticos que necesitan ser desarrollados de manera secuencial, el modelo orientado a objetos permite su manipulación en cualquier etapa del proyecto aun ya implementado, pero los dos ciclos tienen como base las mismas fases. 7 INGENIERÍA DEL SOFTWARE Metodologías de desarrollo de software La metodología es un conjunto de conocimientos, herramientas y procedimientos para lograr un objetivo, en el desarrollo de software, las metodologías pueden seguir uno o varios ciclos de vida, cada una ocupa técnicas que desarrolla y mejora en base a la experiencia para adquirir un software de calidad. Concepto ¿Qué es una metodología de desarrollo de software? Se conoce como metodología de desarrollo al conjunto de conocimientos y herramientas para crear software de calidad, esta se clasifica según su objetivo, precisión de requisitos, estructura del sistema, y diseño. Un ejemplo es el seguimiento de un ciclo de vida, como vimos en temas anteriores, iniciamos con la etapa de análisis de requerimientos, seguida del diseño, posteriormente el desarrollo del sistema, y si continuamos con las etapas podemos ver que tiene una continuidad, aunque el ciclo de vida no sea secuencial o hermético, esta es la importancia de tener metodologías de desarrollo. 8 INGENIERÍA DEL SOFTWARE ¿Cómo se clasifican las metodologías de desarrollo de software? En el desarrollo de software, las metodologías se dividen en: Metodologías tradicionales o pesadas. Metodologías agiles. Metodologías hibridas. Evolución histórica ¿Cómo surge la metodología tradicional? La metodología tradicional o clásica surge al momento de la programación estructurada, es la primera metodología en desarrollarse, requiere de la etapa de análisis y diseño antes de la construcción del sistema, esto hace su implementación muy estricta. Su coste es muy alto al momento de implementar cambios y es poco flexible para algunos proyectos; esta metodología se centra en la documentación, esquemas, diagramas de planificación, entre otros. Algunos ejemplos de metodologías tradicionales son: Técnica de Modelado de Objetos (OMT, del inglés Object Modeling Technique) y Proceso Racional Unificado (RUP, del inglés Rational Unified Process). 9 INGENIERÍA DEL SOFTWARE ¿Cómo surge la metodología ágil? La metodología ágil surge de la necesidad de crear desarrollos flexibles y sencillos en periodos más cortos de tiempo que la anterior, además de que el cliente colabora para validar funcionalidades y requerimientos. Algunos ejemplos de metodologías agiles son: Programación Extrema (XP del inglés eXtreme Programming) y Scrum (su nombre proviene de un tipo de jugada del rugby). Figura 5. 8th annual state of agile survey (2014) Agile Methods & Practices [Agile Methodology Used]. Recuperado de: https://www.versionone.com/pdf/2013-state-of-agile-survey.pdf 10 INGENIERÍA DEL SOFTWARE ¿Cómo surge la metodología híbrida? La metodología hibrida surge de la a partir de la metodología ágil, ya que en los sistemas actuales se requiere mayor flexibilidad pero con la formalidad y secuencia de la metodología tradicional; es la unión de las mejores prácticas entre ambas. Las mismas empresas pueden crear su metodología hibrida como se adapte a sus necesidades, para incrementar su productividad. Un ejemplo de esta metodología es Proceso Unificado Esencial (EssUp del inglés Essential Unified Process). 11 INGENIERÍA DEL SOFTWARE Conclusión ¿Cuál es la importancia de las metodologías de desarrollo? Las metodologías de desarrollo de software son herramientas, fases y conocimientos que nos ayudan a cumplir los objetivos establecidos que van desde cada una de las fases del proyecto, hasta terminar el mismo, la metodología ágil nos permite tener más interacción con el cliente y poder regresar a etapas anteriores si existiera algún problema; mientras que la metodología tradicional es más estricta y sigue su proceso de forma secuencial. Pero también existe la metodología hibrida, que aún sigue en desarrollo y se adapta perfecto a los sistemas actuales, ya que está compuesta de las mejoras de la metodología tradicional y la metodología ágil. Hay que recordar que dependiendo del tamaño del sistema y los objetivos que va a cumplir se elige el modelo de ciclo de vida así como su metodología, lenguaje de programación , gestión de tiempos, entre otras. 12 INGENIERÍA DEL SOFTWARE Para aprender más Uso de la metodología ágil actual. • 8th Annual State of Agile Survey (2014). Version One, Sitio Web: https://www.versionone.com/pdf/2013-state-of-agile-survey.pdf Metodologías hibridas para el desarrollo software. • Jiménez Hernández E, Orantes Jiménez S. (2012). Metodologías híbridas para desarrollo de software: una opción factible para México. Revista Digital Universitaria, 1 de enero de 2012, Vol. Web: http://www.revista.unam.mx/vol.13/num1/art16/#up 13, No.1. Sitio 13 INGENIERÍA DEL SOFTWARE Actividad de Aprendizaje Instrucciones: Para que reafirmes los conocimientos que has adquirido en esta sesión, tendrás que realizar una actividad la cual consiste en realizar un mapa conceptual donde detalles las metodologías de desarrollo y su relación con los ciclos de vida. Deberás guardarlo en formato JPG, para subirlo a la plataforma de la asignatura. Es muy importante que tengas claros los conceptos de esta sesión, ya que más adelante harás uso de ellos de manera práctica. Para esta actividad se tomará en cuenta lo siguiente: Título Datos personales Mapa conceptual Ortografía y redacción Bibliografía 14 INGENIERÍA DEL SOFTWARE Bibliografía • Alonso, F., Martínez, L., & Segovia, F. (2005). Introducción a la Ingeniería del Software: Modelos de desarrollo de Programas. España: Delta Publicaciones. 15