[go: up one dir, main page]

0% encontró este documento útil (0 votos)
55 vistas8 páginas

UF2406.Conceptos Importantes

El documento describe el ciclo de vida del desarrollo de aplicaciones, abarcando desde la definición del software hasta las metodologías y modelos de desarrollo, como el modelo en cascada y ágil. Se enfatiza la importancia de la ingeniería del software para abordar la crisis del software de las décadas de 1960 y 1970, estableciendo un enfoque sistemático para la planificación y desarrollo de sistemas. Además, se detallan las fases del desarrollo, la importancia de los requisitos y las pruebas, así como los enfoques metodológicos utilizados en la programación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
55 vistas8 páginas

UF2406.Conceptos Importantes

El documento describe el ciclo de vida del desarrollo de aplicaciones, abarcando desde la definición del software hasta las metodologías y modelos de desarrollo, como el modelo en cascada y ágil. Se enfatiza la importancia de la ingeniería del software para abordar la crisis del software de las décadas de 1960 y 1970, estableciendo un enfoque sistemático para la planificación y desarrollo de sistemas. Además, se detallan las fases del desarrollo, la importancia de los requisitos y las pruebas, así como los enfoques metodológicos utilizados en la programación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

UF2406: El ciclo de vidad del desarrollo de

aplicaciones.

CONCEPTO DESCRIPCIÓN
Software Instrucciones que cuando se ejecutan desempeñan una determinada
función, pero software no es sólo un programa que funciona, que es lo
más importante, sino también la estructura de datos sobre la que opera y
la documentación resultado del proceso de desarrollo y la que describe
cómo se tiene que utilizar el programa.

Crisis del El proceso de desarrollo del software en sus inicios se planteó como un
software trabajo “artesanal” donde cada desarrollador se ponía a programar sin una
planificación previa ni unas mínimas normas.
La crisis del software se refiere a los problemas significativos que
surgieron en el desarrollo de software durante las décadas de 1960 y
1970. Este término describe las dificultades que enfrentaban los proyectos
de software, como:

• Sobrecostos: Los proyectos excedían los presupuestos iniciales.


• Retrasos: Las entregas se realizaban mucho más tarde de lo
planeado.
• Baja calidad: El software no cumplía con las expectativas de los
usuarios.
• Dificultad de mantenimiento: Los sistemas eran complejos y
difíciles de actualizar.
• Falta de metodologías: No existían procesos estandarizados para
gestionar proyectos grandes.

La crisis llevó a la creación de la ingeniería de software como una


disciplina formal para abordar estos desafíos y mejorar la planificación,
diseño y desarrollo de sistemas complejos.

Ingeniería del La ingeniería del software es una disciplina que aplica principios,
software métodos y técnicas de ingeniería para el diseño, desarrollo,
mantenimiento y gestión de software.
Su objetivo principal es regular de alguna manera el desarrollo del
software, es decir establecer de manera clara las tareas que hay que
realizar para crear aplicaciones informáticas que sean confiables,
eficientes y adaptables, utilizando un enfoque sistemático y
cuantificable.

1
Esta disciplina incluye varias etapas, como el análisis de requisitos,
diseño del sistema, desarrollo, pruebas, implementación y
mantenimiento. Además, se basa en el concepto de ciclo de vida del
software, que abarca desde la concepción del proyecto hasta su
mantenimiento y actualización.
Fases del Análisis de requisitos (o especificación): Se identifican las necesidades
desarrollo del del cliente y los objetivos del software.
software
Diseño: Se crea la arquitectura del sistema, definiendo cómo funcionará y
cómo se verá.

Programación (implementación): Se escribe el código y se desarrolla el


software basado en el diseño.

Pruebas: Se verifica que el software funcione correctamente y cumpla con


los requisitos.

Despliegue (implantación): El software se pone en funcionamiento para


los usuarios finales.

Mantenimiento: Se realizan actualizaciones, correcciones y mejoras


según sea necesario.

Modelos del • Modelo en cascada o ciclo de vida clásico.


proceso de • Modelo de proceso incremental.
ingeniería • Modelo de proceso evolutivo.
• Modelo de proceso especializado.
• Modelo de desarrollo ágil.
Modelo en Es el primer ciclo de vida que surgió. Enfoque secuencial para el desarrollo
cascada del software. Poco flexible ante cambios inesperados. Uso recomendable
(waterfall) o en proyectos pequeños o con requisitos estables
ciclo de vida Cada fase del proyecto debe completarse antes de pasar a la
clásico siguiente, sin posibilidad de retroceder..
Para evitar que se propaguen los errores se establece un proceso de
revisión al completar una fase, antes de comenzar a la siguiente.

Descripción: Proceso lineal y secuencial donde cada fase debe


completarse antes de pasar a la siguiente.

2
Ventajas: Estructura clara, ideal para proyectos con requisitos bien
definidos.
Desventajas: Poco flexible frente a cambios; difícil retroceder si surgen
errores.
Uso recomendado: Proyectos pequeños o con requisitos estables.

Modelo de Descripción: El software se desarrolla en incrementos o versiones,


proceso añadiendo funcionalidad en cada iteración. En la versión en cascada el
incremental producto no se entrega al cliente hasta que esté completamente
terminado, en el modelo incremental se van haciendo distintos
entregables funcionales que se van mejorando en cada una de las
versiones siguientes. En cada una de las versiones se trabaja con el
modelo en cascada-
Ventajas: Permite entregar partes funcionales rápidamente; más flexible
que el modelo en cascada.
Desventajas: Puede ser difícil gestionar múltiples incrementos.
Uso recomendado: Proyectos donde se pueden priorizar funcionalidades.

Modelo Descripción: Desarrollo iterativo que permite crear prototipos y refinar el


evolutivo software con base en retroalimentación.
Ventajas: Ideal para proyectos con requisitos poco claros; mejora
continua.
Desventajas: Puede ser costoso y difícil de gestionar.
Uso recomendado: Proyectos innovadores o con alta incertidumbre.

Modelo Descripción: Diseñado para necesidades específicas, como el modelo


especializado orientado a objetos o basado en componentes.
Ventajas: Adaptado a contextos particulares; puede optimizar recursos.
Desventajas: Requiere experiencia y herramientas específicas.
Uso recomendado: Proyectos con requisitos únicos o complejos.

Modelo de Las metodologías ágiles son enfoques de gestión de proyectos que se


desarrollo ágil centran en la flexibilidad, la colaboración, la mejora continua y la
entrega de valor en ciclos cortos. Tanto Scrum como Kanban son dos de
las metodologías ágiles más populares, aunque tienen enfoques distintos.

Scrum: es un marco de trabajo (framework) que proporciona una


estructura para gestionar proyectos complejos. Se basa en ciclos de
trabajo cortos y fijos llamados sprints (generalmente de 2 a 4 semanas)
durante el cual un equipo de desarrollo trabaja para completar un
conjunto de tareas o funcionalidades del software. Es comúnmente
utilizado en el desarrollo de software.

Kanban: Ayuda a identificar cuellos de botella. Trabaja con paneles


visuales que se utilizan para gestionar el flujo de trabajo continuo en
proyectos. Estos paneles ayudan a organizar las tareas y mejorar la
eficiencia al proporcionar una representación clara de las etapas en

3
proceso. Cada panel Kanban se divide en columnas que representan
diferentes estados del trabajo, como “Por hacer”, “En progreso” y
“Completado”

Requisitos Son las necesidades y las expectativas del cliente final sobre el software
que se va a construir. Definen lo que es software debe hacer y cómo debe
comportarse.
Básicamente se dividen en dos categorías principales:
los requisitos son las descripciones formales de las necesidades y
expectativas que deben cumplir el software o el sistema que se va a
construir

Requisitos funcionales: Describen las funciones específicas que el


software debe realizar.

Ejemplo: "El sistema debe permitir a los usuarios registrarse y acceder con
un nombre de usuario y contraseña."

Requisitos no funcionales: Detallan las características de calidad del


sistema, como rendimiento, seguridad, usabilidad, etc.

Ejemplo: "El sistema debe responder a las solicitudes en menos de 2


segundos."

Esta etapa es crucial porque establece la base para el diseño, desarrollo y


pruebas del software. Una mala definición de requisitos puede llevar a
problemas en fases posteriores del proyecto.

Metodología La metodología establece las tareas concretas que hay que llevar a cabo,
cómo se debe realizar cada tarea, con qué herramientas…
Una metodología puede seguir uno o varios modelos del ciclo de vida.
El ciclo de vida es el modelo general que se sigue para el desarrollo del
software, indica qué es lo que hay que obtener a lo largo del desarrollo del
proyecto, pero no cómo. El cómo lo establece la metodología.

4
Ciclo de vida → indica qué queremos obtener al desarrollar el proyecto
Metodología → cómo lo vamos a obtener: tareas, herramientas.

Enfoques Los enfoques metodológicos en programación son estrategias o marcos


metodológicos que guían el desarrollo de software para hacerlo más eficiente, organizado
y efectivo.
• Enfoque estructurado
• Enfoque orientado a objetos.

Enfoque Se basa en dividir el problema en partes más pequeñas y resolverlas de


estructurado manera secuencial. Se usan diagramas de flujo, pseudocódigo y
estructuras como bucles y condicionales.
Ejemplo: programación en lenguaje C o Pascal.

Enfoque La programación orientada a objetos es un paradigma de programación


orientado a que define cómo diseñar y escribir código. Considera que una aplicación
objetos informática está constituida por diferentes objetos que interactúan
entre sí. Organiza el software en "objetos" que representan entidades
del mundo real. Se usan clases, herencia, encapsulación y polimorfismo.
Ejemplo: Lenguajes como Java, Python o C++.

UML Lenguaje de Modelado Unificado.


Es utilizado para representar, diseñar y documentar los componentes de
un sistema, especialmente en proyectos orientados a objetos. UML incluye
diagramas como casos de uso, clases, secuencia estándar visual para
modelar sistemas de software, actividades, entre otros, que ayudan a
visualizar y entender cómo funciona un sistema.

Herramientas Las herramientas CASE (Computer-Aided Software Engineering) son


CASE aplicaciones diseñadas para apoyar el desarrollo de software en
diferentes etapas, como análisis, diseño, implementación y pruebas.
Estas herramientas automatizan tareas repetitivas y mejoran la
productividad del equipo.
Las herramientas CASE suelen incluir soporte para UML, ya que este es un
lenguaje ampliamente utilizado para modelar sistemas.

Draw.io, aunque no es una herramienta CASE en sí misma, si es una


opción gratuita que ofrece apoyo en el desarrollo del software, ya que
permite crear diagramas como casos de uso, clases, secuencia, etc. Esto
es importante en la etapa de diseño del software, aunque no automatiza
procesos como lo harían las herramientas CASE completas.

Pruebas La tarea de pruebas es una de las tareas principales del proceso del
software y tiene como objetivo fundamental la deteccción de defectos
que se han cometido inadvertidamente durante el proceso de
construcción del software.

5
El objetivo de esta tarea es la detección de defectos y no la
demostración de que el software no tiene defectos.

Un caso de prueba consiste básicamente en indicar qué datos de entrada


vamos a suministrar al programa, qué datos de salida se deben obtener y
para qué desemos llevar a cabo este caso de prueba, por ejemplo, para
determinar que se cumple un determinado requisito.

Puntos de vista El objetivo de las pruebas puede percibirse desde dos puntos de vista:
de las pruebas:
validación y Validación: las pruebas deben comprobar que el producto es el que
verificación quiere el cliente. Se conocen también como pruebas de aceptación de
usuario.

Verificación: las pruebas deben comprobar que el producto está


construido correctamente, es decir, que lo que hace lo hace bien.

Estrategia de Las pruebas siempre comienzan probando pequeñas porciones de


aplicación de software y se va incrementando de manera progresiva el alcance de la
las pruebas prueba. Al software se le pasará secuencialmente los siguientes tipos de
pruebas:
• Pruebas de unidad
• Pruebas de integración
• Pruebas de sistema
• Prueba de validación

Pruebas de Se comienza probando módulos individuales de software. En el caso de


unidad programación orientada o objetos, se probarán cada una de las clases por
separado. Para ello será necesario probar, para cada uno de los métodos
no triviales de la clase, que su comportamiento es el adecuado.

Prueba de Se hacen para comprobar que todas las clases de las que consta el
integración software funcionan correctamente cuando cooperan entre ellas para
realizar las tareas encomendadas por el software.

Prueba del Es el proceso de prueba de un sistema integrado de hardware y software


sistema para comprobar si cumple con los requisitos especificados (tanto los
(system testing) funcionales como los no funcionales). Se realiza para evaluar el sistema
completo, integrado y funcionando como un todo asegurando que todas
las partes del sistema trabajen juntas de manera correcta.
.
Se centra en las entradas y salidas del sistema, sin examinar el código
interno (pruebas de caja negra).

Prueba de El objetivo de la prueba de validación, también llamada prueba de


validación aceptación es determinar si el software es considerado válido por parte

6
del usuario y si este está preparado para su implantación en el entorno del
usuario.
La consideración de validez del software se debe basar en una serie de
criterios de validación o aceptación previamente establecidos, que deben
formar parte de la especificación de requisitos del software.
En este tipo de pruebas participa activamente el usuario, el cuál debe
ejecutar las pruebas ayudado por el equipo de pruebas. Este tipo de
pruebas es la fase final del proceso software mediante la cual el usuario
da su aceptación para que el software pase a sus uso o explotación.

Pruebas de caja El objetivo es crear casos de prueba que permitan revisar todos los
negra requisitos funcionales de un programa. Existen diferentes técnicas de
diseño de casos de prueba de caja negra:
• Particiones o clases de equivalencia: en esta técnica se deben
identificar una serie de clases de equivalencia o tipos de valores
que se deben asignar a los datos de entrada del programa.
• Análisis de los valores límites: es complementaria a las clases de
equivalencia. La diferencia es que en lugar de elegir cualquier valor
que esté dentro de la clase de equivalencia se elige el que está
justo en los límites de la clase y los casos de prueba se generan
teniendo en cuenta no sólo los valores de entrada sino también los
de salida.
• Conjetura de errores: se elabora una lista con los errores comunes
que suelen comenter los desarrolladores y los casos de prueba se
generan teniendo en cuenta esa lista.

Pruebas de caja El objetivo es crear casos de prueba que permitan revisar detalles
blanca internos del software.
Se utiliza una técnica que recibe el nombre de prueba de trayectoria o de
ruta básica. Esta técnica permite generar una métrica llamada
complejidad ciclomática de McCabe, que es un número entero que
indica el número de caminos independientes que hay en el código, y, en
consecuencia, el número mínimo de casos de prueba que hay que
ejecutar para garantizar que se recorren todas las sentencias del código al
menos una vez.
Se debe representar el código que se va a probar en un grafo de flujo.
La complejidad ciclomática se representa con V(G)
Un nodo predicado (NP) es el que tiene una bifurcación.
Una región es una zona cerrada del grafo, se debe incluir también la región
externa.
Fórmulas para calcular la complejidad ciclomática:
• V(G) = nº de regiones del grafo.
• V(G) = A – N + 2 (aristas – nodos + 2)
• V(G) = NP + 1 (nodos predicado + 1)

Si la complejidad ciclomática es mayor de 10 la probabilidad de defectos


en el módulo o en el programa crece bastante si dicho valor no se debe a

7
sentencias case-of o similares. En caso de un V(G) elevado es
recomendable dividir el módulo complejo en varios módulos para reducir
la complejidad del software.

Error, defecto Error es una equivocación humana que ocurre durante el desarrollo del
(bug) y fallo software, el defecto, también llamado bug, es la manifestación de ese
error en el código, es una imperfección o anomalía en el software y la fallo
es la revelación del defecto al utilizar el sistema en tiempo de ejecución.

Error (humano) → Defecto (en el software) → Fallo (comportamiento


incorrecto observable).

Muchas veces se utiliza bug (coloquial) para referirse a cualquier


problema, error o defecto que causa un comportamiento inesperaado o
incorrecto.

Ejemplo:
Error: un programador escribe mal una condición lógica incorrecta en el
código.
Defecto: una función devuelve un resultado incorrecto debido a una
fórmula mal implementada.
Fallo: el sistema se bloquea al intentar realizar una operación específica.

Proceso de Se puede decir que la depuración es el resultado de un caso de prueba


depuración exitoso porque el objetivo de las pruebas debe ser encontrar defectos en el
software y tras la detección de un defecto se debe acometer esta tarea.

Generación de La documentación de las pruebas es conveniente para una buena


informes de las organización de estas y para asegurar su reutilización.
pruebas
Se deben documentar tanto el diseño de las pruebas como el resultado o
ejecución de las mismas.

También podría gustarte