Está en la página 1de 13

CENTRO UNIVERSITARIO TECNOLÓGICO

ASIGNATURA:

Auditoria en informática

TEMA:

S7. Tarea 1: Investigación de Calidad de software y desarrollo


ágil

CATEDRATICO:

Ing. Claudio Gutiérrez

ESTUDIANTE:

Yahely Nicolle Membreño Paz

NUMERO DE CUENTA

62011318

FECHA:

01, diciembre del 2023


Introducción

En el presente informe se dan a conocer una serie de preguntas para investigar


relacionados con el tema de desarrollo ágil es una forma de crear software que se
basa en la entrega rápida y frecuente de versiones funcionales del producto, en
lugar de seguir un plan fijo y detallado.

Las metodologías de desarrollo de software se pueden clasificar en dos grandes


grupos: las metodologías tradicionales y las metodologías ágiles.
Realice la siguiente investigación:

1. En qué consiste el desarrollo ágil?


El desarrollo ágil es una forma de crear software que se basa en la entrega
rápida y frecuente de versiones funcionales del producto, en lugar de seguir
un plan fijo y detallado. El desarrollo ágil se caracteriza por la colaboración
entre los miembros del equipo, la adaptación a los cambios, el aprendizaje
continuo y el enfoque en el valor para el cliente. El desarrollo ágil se compone
de varios métodos o marcos de trabajo, como Scrum, Kanban, XP, etc., que
comparten los mismos principios y valores establecidos en el Manifiesto Ágil.
El desarrollo ágil busca mejorar la calidad, la eficiencia y la satisfacción del
software mediante la aplicación de prácticas como la integración continua,
las pruebas automatizadas, el despliegue continuo, el trabajo en equipo, el
feedback rápido y la mejora continua. El desarrollo ágil es importante porque
permite a los equipos responder mejor a las necesidades y expectativas de
los clientes, reducir los riesgos y los costos, y entregar soluciones
innovadoras y competitivas.

2. Describa las diferentes metodologías de desarrollo de software


utilizadas en la actualidad
Las diferentes metodologías de desarrollo de software utilizadas en la
actualidad se pueden clasificar en dos grandes grupos: las metodologías
tradicionales y las metodologías ágiles.

Las metodologías tradicionales son aquellas que siguen un proceso lineal


y secuencial, donde cada fase del ciclo de vida del software se realiza una
sola vez y se debe completar antes de pasar a la siguiente. Estas
metodologías se basan en una planificación detallada y exhaustiva desde el
inicio del proyecto, y requieren una documentación extensa y formal. Algunas
de las metodologías tradicionales más conocidas son:
• La metodología cascada, que es la más antigua y simple, y consiste
en dividir el proyecto en etapas fijas y ordenadas: análisis, diseño,
implementación, pruebas y mantenimiento. Esta metodología tiene la
ventaja de ser fácil de entender y seguir, pero tiene el inconveniente
de ser rígida e inflexible ante los cambios, y de no involucrar al cliente
hasta el final del proyecto.
• La metodología de prototipo, que es una variación de la cascada, y
consiste en crear una versión preliminar y simplificada del software,
llamada prototipo, para validar los requisitos y el diseño con el cliente.
Esta metodología tiene la ventaja de permitir obtener feedback rápido
y mejorar la satisfacción del cliente, pero tiene el inconveniente de
generar expectativas falsas, aumentar los costos y el tiempo, y
dificultar la documentación y el mantenimiento.

Las metodologías ágiles son aquellas que siguen un proceso iterativo e


incremental, donde el software se desarrolla en pequeñas entregas o
iteraciones, que se revisan y mejoran continuamente. Estas metodologías se
basan en la adaptación al cambio, la colaboración con el cliente, y la entrega
de valor. Algunas de las metodologías ágiles más populares son:

• La metodología Scrum, que es la más utilizada y reconocida, y


consiste en organizar el trabajo en equipos auto-organizados y
multidisciplinares, que realizan ciclos de trabajo cortos y fijos,
llamados sprints, donde se entregan incrementos funcionales del
software. Esta metodología tiene la ventaja de ser flexible y eficiente,
de fomentar la comunicación y la calidad, y de maximizar el valor para
el cliente, pero tiene el inconveniente de requerir un alto compromiso
y disciplina, de generar incertidumbre y presión, y de depender de la
experiencia y la madurez del equipo.
• La metodología Kanban, que es una adaptación de Scrum, y
consiste en visualizar el flujo de trabajo en un tablero, donde se limita
el número de tareas que se pueden realizar simultáneamente, y se
optimiza el tiempo de entrega. Esta metodología tiene la ventaja de
ser sencilla y transparente, de reducir el desperdicio y los cuellos de
botella, y de mejorar la productividad y la satisfacción, pero tiene el
inconveniente de no definir roles ni eventos, de no garantizar la calidad
ni el valor, y de depender de la colaboración y la autogestión del
equipo.

• La metodología DevOps, que es una integración de las prácticas de


desarrollo y operaciones, y consiste en automatizar y agilizar el
proceso de entrega y despliegue del software, mediante herramientas
y técnicas que facilitan la colaboración, la integración, las pruebas, el
monitoreo y la retroalimentación. Esta metodología tiene la ventaja de
acelerar el tiempo de mercado, de mejorar la calidad y la seguridad, y
de aumentar la innovación y la competitividad, pero tiene el
inconveniente de requerir un cambio cultural y organizacional, de
implicar una inversión inicial y un riesgo mayor, y de depender de la
coordinación y la confianza entre los equipos.

3. Describa un proceso para evaluar la calidad de software?


Un proceso para evaluar la calidad de software es un conjunto de actividades
que tiene como objetivo medir y mejorar el grado de cumplimiento de los
requisitos y las expectativas del cliente o usuario respecto al software. Un
posible proceso para evaluar la calidad de software es el siguiente:

• Definir los criterios y los estándares de calidad que se van a aplicar al


software, basándose en las normas y modelos de calidad existentes,
como ISO/IEC 25010, CMMI-DEV, etc. Estos criterios y estándares
deben especificar las características y los atributos que se van a
evaluar, así como las métricas y los métodos que se van a utilizar para
medirlos.
• Planificar y diseñar las actividades de evaluación de calidad, que
pueden incluir revisiones, inspecciones, auditorías, pruebas,
encuestas, etc. Estas actividades deben definir los objetivos, el
alcance, los recursos, los roles, los procedimientos, los criterios de
aceptación y los entregables que se van a generar.
• Ejecutar las actividades de evaluación de calidad, siguiendo el plan y
el diseño establecidos, y aplicando las herramientas y las técnicas
adecuadas para cada caso. Durante la ejecución, se debe recopilar y
registrar la información y los datos necesarios para medir la calidad
del software.
• Analizar y reportar los resultados de la evaluación de calidad,
comparando los datos obtenidos con los criterios y los estándares de
calidad definidos, e identificando las fortalezas, las debilidades, las
oportunidades y las amenazas del software. Los resultados deben
presentarse de forma clara, precisa y objetiva, utilizando gráficos,
tablas, indicadores, etc.
• Proponer y aplicar las acciones de mejora de calidad, basándose en
los resultados del análisis y en las buenas prácticas de la ingeniería
de software. Estas acciones pueden implicar la corrección, la
prevención o la optimización de los aspectos relacionados con la
calidad del software, tanto a nivel de producto como de proceso.

4. Describa las diferentes tecnologías para evaluar la calidad de software?


Algunas de las tecnologías más utilizadas son:

• Las herramientas de pruebas funcionales, que son aquellas que


permiten validar el comportamiento y la funcionalidad del software,
mediante la ejecución de casos de prueba que simulan las acciones y
los resultados esperados por el usuario. Algunas de las herramientas
de pruebas funcionales más populares son SoapUI, Selenium,
TestComplete, Katalon Studio, etc.
• Las herramientas de pruebas de rendimiento, que son aquellas que
permiten evaluar la capacidad y la eficiencia del software, mediante la
simulación de altas cargas de trabajo y la medición de parámetros
como el tiempo de respuesta, la utilización de recursos, la
escalabilidad, la estabilidad, etc. Algunas de las herramientas de
pruebas de rendimiento más conocidas son JMeter, LoadRunner,
Gatling, NeoLoad, etc.
• Las herramientas de seguimiento de defectos, que son aquellas
que permiten registrar, gestionar y resolver los errores o fallos
encontrados en el software, mediante la asignación de prioridades,
responsables, estados, comentarios, etc. Algunas de las herramientas
de seguimiento de defectos más usadas son Jira, Bugzilla, Mantis,
Redmine, etc.
• Las herramientas de prueba de APIs, que son aquellas que permiten
verificar la calidad y la interoperabilidad de las interfaces de
programación de aplicaciones (APIs), mediante la creación, la
ejecución y la validación de solicitudes y respuestas entre diferentes
sistemas o componentes. Algunas de las herramientas de prueba de
APIs más destacadas son Postman, Rest-Assured, Swagger,
Insomnia, etc.
• Las herramientas de pruebas de seguridad, que son aquellas que
permiten detectar y prevenir vulnerabilidades o amenazas en el
software, mediante la realización de análisis estáticos o dinámicos, la
exploración de puertos, la inyección de datos, la suplantación de
identidad, etc. Algunas de las herramientas de pruebas de seguridad
más relevantes son Nmap, OWASP ZAP, Burp Suite, Metasploit, etc.
• Las herramientas de pruebas entre navegadores, que son aquellas
que permiten comprobar la compatibilidad y la consistencia del
software en diferentes navegadores web, mediante la ejecución de
pruebas automatizadas o manuales en distintas versiones,
resoluciones, dispositivos, etc. Algunas de las herramientas de
pruebas entre navegadores más recomendadas son BrowserStack,
Sauce Labs, LambdaTest, CrossBrowserTesting, etc.
• Las herramientas de pruebas móviles, que son aquellas que
permiten asegurar la calidad y la usabilidad del software en
dispositivos móviles, mediante la ejecución de pruebas funcionales,
de rendimiento, de seguridad, de interfaz, etc. Algunas de las
herramientas de pruebas móviles más eficaces son Appium,
Espresso, XCTest, Robotium, etc.
5. En qué consisten las pruebas unitarias? Dar Ejemplos
Las pruebas unitarias consisten en escribir código para probar un
componente específico del software. Las pruebas manuales suelen requerir
más pasos y no son particularmente comunes, así que veamos el proceso
utilizando herramientas de automatización de pruebas unitarias.
Algunos ejemplos:
• Pruebas unitarias de la API
o Los sistemas modernos se basan en diferentes programas que se
comunican entre sí, a menudo a través de interfaces conocidas como
API. Por ejemplo, los desarrolladores pueden aumentar la eficiencia
probando los puntos finales mediante pruebas unitarias de una API
REST.

• Industria del automóvil


o El sector de la automoción ofrece una gran oportunidad para los
ejemplos de pruebas unitarias, así que considere las amplias
implicaciones. Nuestros vehículos dependen más que nunca del
código y pueden crear situaciones peligrosas si hay un mínimo
defecto. Las herramientas de pruebas unitarias pueden aislar el
código incluso antes de que el coche salga de la fábrica para
determinar si está limpio y reducir las posibilidades de que se
produzcan fallos en la carretera.

6. En qué consisten las pruebas integrales? Dar Ejemplos


Hay muchos tipos de técnicas de pruebas de software que puedes utilizar
para asegurarte de que los cambios en el código funcionen según lo
esperado. Sin embargo, no todas las pruebas son iguales. En este artículo
veremos en qué se diferencian algunas prácticas de pruebas.

Algunos ejemplos:
1. Pruebas unitarias
Las pruebas unitarias son de muy bajo nivel y se realizan cerca de la fuente
de la aplicación. Consisten en probar métodos y funciones individuales de las
clases, componentes o módulos que usa tu software. En general, las pruebas
unitarias son bastante baratas de automatizar y se pueden ejecutar
rápidamente mediante un servidor de integración continua.
2. Pruebas de integración
Las pruebas de integración verifican que los distintos módulos o servicios
utilizados por tu aplicación funcionan bien en conjunto. Por ejemplo, se puede
probar la interacción con la base de datos o asegurarse de que los
microservicios funcionan bien en conjunto y según lo esperado. Estos tipos
de pruebas son más costosos de ejecutar, ya que requieren que varias partes
de la aplicación estén en marcha.
3. Pruebas funcionales
Las pruebas funcionales se centran en los requisitos empresariales de una
aplicación. Solo verifican el resultado de una acción y no comprueban los
estados intermedios del sistema al realizar dicha acción.

A veces, se confunden las pruebas de integración con las funcionales, ya que


ambas requieren que varios componentes interactúen entre sí. La diferencia
es que una prueba de integración puede simplemente verificar que puedes
hacer consultas en la base de datos, mientras que una prueba funcional
esperaría obtener un valor específico desde la base de datos, según dicten
los requisitos del producto.
4. Pruebas de extremo a extremo
Las pruebas integrales replican el comportamiento de un usuario con el
software en un entorno de aplicación completo. Además, verifican que
diversos flujos de usuario funcionen según lo previsto, y pueden ser tan
sencillos como cargar una página web o iniciar sesión, o mucho más
complejos, como la verificación de notificaciones de correo electrónico,
pagos en línea, etc.

Las pruebas integrales son muy útiles, pero son costosas de llevar a cabo y
pueden resultar difíciles de mantener cuando están automatizadas. Se
recomienda tener algunas pruebas integrales clave y depender más de
pruebas de menor nivel (unitarias y de integración) para poder detectar
rápidamente nuevos cambios.
5. Pruebas de aceptación
Las pruebas de aceptación son pruebas formales que verifican si un sistema
satisface los requisitos empresariales. Requieren que se esté ejecutando
toda la aplicación durante las pruebas y se centran en replicar las conductas
de los usuarios. Sin embargo, también pueden ir más allá y medir el
rendimiento del sistema y rechazar cambios si no se han cumplido
determinados objetivos.
6. Pruebas de rendimiento
Las pruebas de rendimiento evalúan el rendimiento de un sistema con una
carga de trabajo determinada. Ayudan a medir la fiabilidad, la velocidad, la
escalabilidad y la capacidad de respuesta de una aplicación. Por ejemplo,
una prueba de rendimiento puede analizar los tiempos de respuesta al
ejecutar un gran número de solicitudes, o cómo se comporta el sistema con
una cantidad significativa de datos. Puede determinar si una aplicación
cumple con los requisitos de rendimiento, localizar cuellos de botella, medir
la estabilidad durante los picos de tráfico y mucho más.

7. Pruebas de humo
Las pruebas de humo son pruebas básicas que sirven para comprobar el
funcionamiento básico de la aplicación. Están concebidas para ejecutarse
rápidamente, y su objetivo es ofrecerte la seguridad de que las principales
funciones de tu sistema funcionan según lo previsto.

Las pruebas de humo pueden resultar útiles justo después de realizar una
compilación nueva para decidir si se pueden ejecutar o no pruebas más
caras, o inmediatamente después de una implementación para asegurarse
de que la aplicación funciona correctamente en el entorno que se acaba de
implementar.
Conclusión

• El desarrollo ágil es una forma de crear software que se adapta a los cambios
y al valor para el cliente, mediante la entrega rápida y frecuente de versiones
funcionales del producto. El desarrollo ágil se compone de varios métodos o
marcos de trabajo, como Scrum, Kanban, XP, etc., que comparten los
mismos principios y valores establecidos en el Manifiesto Ágil. Las
metodologías de desarrollo de software son aquellas que definen el proceso
y las actividades que se realizan para crear, entregar y mantener el software.
Existen diferentes tipos de metodologías de desarrollo de software, según el
grado de planificación, documentación, flexibilidad y participación del cliente
que requieren.
Bibliografía
• (s.f.). Obtenido de https://aprendeinformaticas.com/metodologia-de-
desarrollo-
agil/#:~:text=La%20Metodolog%C3%ADa%20de%20Desarrollo%20%C3%8
1gil%20es%20una%20forma,en%20lugar%20de%20la%20planificaci%C3%
B3n%20y%20documentaci%C3%B3n%20exhaustivas.

• (s.f.). Obtenido de https://holisticdesignlab.com/business-


analyst/metodologias-de-desarrollo-de-software-que-son/

• (s.f.). Obtenido de
https://es.wikiversity.org/wiki/Gesti%C3%B3n_de_calidad_del_software

• (s.f.). Obtenido de https://www.zaptest.com/es/que-son-las-pruebas-


unitarias-profundice-en-el-proceso-los-beneficios-los-retos-las-
herramientas-y-mucho-
mas#:~:text=Las%20pruebas%20unitarias%20consisten%20en,de%20auto
matizaci%C3%B3n%20de%20pruebas%20unitarias.

También podría gustarte