INGENIERÍA DEL SOFTWARE - UNID · Un ejemplo es el seguimiento de un ciclo de vida, como vimos en...

16
INGENIERÍA DEL SOFTWARE

Transcript of INGENIERÍA DEL SOFTWARE - UNID · Un ejemplo es el seguimiento de un ciclo de vida, como vimos en...

INGENIERÍA DEL SOFTWARE

INGENIERÍA DEL SOFTWARE

1

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, automóviles,

software de computadora,

etcétera.

razasar.jimdo.com-

INGENIERÍA DEL SOFTWARE

2

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.

INGENIERÍA DEL SOFTWARE

3

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

INGENIERÍA DEL SOFTWARE

4

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

INGENIERÍA DEL SOFTWARE

5

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

INGENIERÍA DEL SOFTWARE

6

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.

INGENIERÍA DEL SOFTWARE

7

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.

INGENIERÍA DEL SOFTWARE

8

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.

INGENIERÍA DEL SOFTWARE

9

¿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).

INGENIERÍA DEL SOFTWARE

10

¿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

INGENIERÍA DEL SOFTWARE

11

¿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).

INGENIERÍA DEL SOFTWARE

12

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.

INGENIERÍA DEL SOFTWARE

13

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. 13, No.1. Sitio

Web: http://www.revista.unam.mx/vol.13/num1/art16/#up

INGENIERÍA DEL SOFTWARE

14

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

INGENIERÍA DEL SOFTWARE

15

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.