INGENIERÍA DEL SOFTWARE

Anuncio
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
Descargar