Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nombre y Apellidos:
Josias Matos Batista
Matricula:
FN7105
Tema:
Informe unidad 6
Maestro:
Noemi Cuevas Sánchez
Materia:
Ingeniería de Software I
Fecha:
02/05/2022
Índice
Introducción.....................................................................................................................1
Desarrollo del software......................................................................................................2
Ciclo de vida......................................................................................................................2
Comunicación....................................................................................................................3
Planificación y análisis.......................................................................................................3
Estudio de viabilidad..........................................................................................................3
Análisis del sistema...........................................................................................................3
Diseño................................................................................................................................3
Codificación.......................................................................................................................3
Integración.........................................................................................................................4
Pruebas..............................................................................................................................4
Implementación.................................................................................................................4
Formación..........................................................................................................................4
Mantenimiento y Funcionamiento......................................................................................4
Documentación..................................................................................................................4
Pruebas de software..........................................................................................................5
Validación y Verificación en el desarrollo de software......................................................6
Tipos de pruebas...............................................................................................................7
En función de qué conocemos..........................................................................................7
Según el grado de automatización....................................................................................7
En función de qué se prueba.............................................................................................7
Diseño de casos de pruebas.............................................................................................8
Administración de pruebas................................................................................................8
Estrategia de pruebas........................................................................................................9
Herramientas de pruebas..................................................................................................9
Fundamentos Rational Functional Tester.......................................................................10
Arquitectura de Rational Functional Tester.....................................................................10
Script de pruebas funcionales.........................................................................................11
Grabación de un script.....................................................................................................12
Reproducción de un script...............................................................................................12
Revisión de los resultados...............................................................................................12
Gestión de la configuración de Sistemas de Software....................................................13
Definiciones.....................................................................................................................13
Conclusión.....................................................................................................................15
Introducción
En este trabajo trataremos de exponer los problemas que aparecen en el desarrollo de
sistemas software reales, y de los enfoques que se utilizan para abordarlos.
Comenzaremos introduciendo el tipo de sistemas con el que tratamos, y las diferentes
características que los hacen complejos y difíciles de abordar.
Luego hablaremos de una de las soluciones más utilizadas: la reducción de
complejidad mediante la limitación de los grados de libertad del sistema. Y de cómo se
concreta esta solución: el modelo en cascada del ciclo de vida de un programa.
Por último, nos centraremos en las etapas que constituyen este modelo en cascada,
poniendo de relieve los aspectos que nos han parecido más destacables en cada una
de ellas. Es uno de los modelos posibles. Hay otros muchos, como el modelo en
espiral, pero en cualquiera de ellos se hace patente que la complejidad surge de la
necesidad de coordinar económicamente un elevado número de personas, técnicas y
equipo. Es la complejidad de gestión del software.
1|Page
Desarrollo del software
Como puede leerse en [Grady, 1990], hoy por hoy no disponemos de herramientas, ni
siquiera de metodologías, que nos permitan transformar el software ordinario en otro
que sea fiable y fácilmente mantenible. En el campo del hardware, por el contrario, esta
anhelada situación está mucho más cerca de la realidad. Así, disponemos de chips que
son a la vez extremadamente complejos y muy fiables. Sin embargo, los sistemas
software medianamente grandes suelen estar "plagados" de errores, y realizar cambios
en ellos es, cuando menos, una tarea arriesgada.
Esta diferencia puede ser debida al hecho de que el desarrollo de hardware siempre ha
estado constreñido por limitaciones físicas (por ejemplo, densidad de integración). Así,
la evolución se ha hecho "paso a paso", añadiendo complejidad poco a poco en cada
uno de estos pasos, a medida que se lograba introducir más componentes en una
superficie dada. Pero el software no tiene este tipo de limitaciones, con lo que desde el
principio tenemos una gran cantidad de complejidad, que hemos de manejar de alguna
forma.
Por eso, el gran desafío con que se encuentra la gestión de proyectos software
consiste precisamente en limitar los productos que se desarrollan en esos proyectos a
unos niveles de complejidad aceptables y manejables. Dicho de otra forma, se
pretende reducir los grados de libertad en la producción de software para, al operar
dentro de unos ciertos márgenes, mantener la complejidad resultante lo más baja
posible.
Ciclo de vida
El ciclo de vida del desarrollo de software es la estructura que contiene los procesos,
actividades y tareas relacionadas con el desarrollo y mantenimiento de un producto de
software, abarcando la vida completa del sistema, desde la definición de los requisitos
hasta la finalización de su uso.
Se trata de evitar los costes de rectificar errores de implementación mediante un
método que permita a los programadores adelantarse para mejorar sus resultados
finales.
Este sistema de desarrollo, necesita de varios pasos imprescindibles para garantizar
que los programas ofrezcan una buena experiencia al usuario, seguridad, eficiencia,
estabilidad y fiabilidad de uso.
2|Page
Comunicación
Este es el momento en el que un cliente solicita un producto de software determinado.
Nos contacta para plasmar sus necesidades concretas y presenta su solicitud de
desarrollo de software.
Planificación y análisis
El desarrollo de software comienza con una fase inicial de planificación incluyendo un
análisis de requisitos. Nos fijamos en los requisitos que piden los clientes para estudiar
cuales están poco claros, incompletos, ambiguos o contradictorios. Se indaga en
profundidad y se hacen demostraciones prácticas incluyendo a los usuarios clave. Los
requisitos se agrupan en requisitos del usuario, requisitos funcionales y requisitos del
sistema. La recolección de todos los requisitos se lleva a cabo: estudiando el software
actual que tengan, entrevistando a usuarios y desarrolladores, consultando bases de
datos o mediante cuestionarios.
Estudio de viabilidad
Después de la recolección de requisitos, se idea un plan para procesar el software. Se
analiza que parte del software cubre los requisitos de cada usuario. Se investiga la
viabilidad financiera y tecnológica. Se utilizan algoritmos para saber si el proyecto de
software es factible o no.
Diseño
En esta fase ya se comienza a visualizar la solución con la ayuda de las anteriores
fases. Se hace un diseño lógico y otro físico. Se crean metadatos, diagramas o
pseudocódigos. La duración de esta fase varía de un proyecto a otro.
Codificación
Esta fase también denominada ‘fase de programación’ o ‘fase de desarrollo’ es en la
que elige el lenguaje de programación más conveniente, y se desarrollan programas
ejecutables y sin errores de manera eficiente. Nuestro enfoque es construir trozos de
funcionalidad. Por lo tanto, entregar unidades de funcionalidad concisa. Al final de esta
fase se puede obtener un PMV (Producto mínimo viable) o el software completamente
desarrollado y listo para implementarse.
3|Page
Integración
El Software puede necesitar estar integrado con bibliotecas, bases de datos o con otros
programas. Esta fase del SDLC integra el software con las entidades del mundo
exterior.
Pruebas
Esta fase junto con la fase de desarrollo entra en un ciclo continuo hasta que se
completan el desarrollo y las pruebas. Probamos, probamos y luego volvemos a probar
tanto como sea necesario hasta que la funcionalidad sea del 100%.
Además, se hacen evaluaciones para evitar errores, incluyendo la evaluación de
módulos, programas, productos, y finalmente evaluación con el cliente final. Encontrar
errores y su arreglarlos a tiempo es la clave para conseguir un software confiable y
eficiente.
Implementación
Aquí se instala el software, se evalúa la integración, la adaptabilidad, la portabilidad y
se instalan las configuraciones posteriores necesarias.
Formación
Esta es la fase más interesante, ¡La formación! La adopción del usuario es muy
importante y para ello ofrecemos capacitación inicial para cada usuario. Es importante
comprobar el nivel de uso, la experiencia de usuario y resolver cualquier dificultad que
pueda surgir a la hora de enfrentarse a un nuevo sistema o plataforma.
Mantenimiento y Funcionamiento
Por último, pero no menos importante el mantenimiento es uno de los elementos clave
de éxito de cualquier proyecto. En esta fase se minimizan pequeños errores, se
confirma el buen funcionamiento del software, su eficiencia y estabilidad. El proyecto ya
está completado y necesitamos monitorear y mantener de forma continua para
garantizar que el proyecto siga ejecutándose bien.
El software es efectivo cuando se usa de forma apropiada y por eso el mantenimiento y
la mejora de los productos de software es crucial para poder corregir defectos que
vayan surgiendo o para poder atender a los requisitos del software.
Documentación
La documentación es algo totalmente necesario para poder mantener un programa.
Incluso la persona que lo ha codificado se perderá con gran facilidad en un programa a
4|Page
los pocos meses de haberlo terminado. No sólo hay que documentar el código (las
conocidas líneas de comentario del programa), sino todas las etapas del ciclo de vida.
Especialmente es importante que todas las decisiones que se han tomado queden
claramente expuestas, así como las razones que han llevado a ellas.
Además, hay que generar la documentación de "caja negra", esto es, la que se refiere
no a aspectos internos del programa, sino a su manejo y características "externas".
Esto incluye normalmente un manual de usuario, para las personas que normalmente
van a utilizarlo (en el caso de que sea un programa directamente utilizado por
personas) y un manual de referencia técnica, donde se dan detalles de su instalación y
explotación, de cara al personal técnico encargado de estas tareas.
En el modelo en cascada hemos colocado la etapa de documentación al final, porque
es cuando se realizará la documentación definitiva, y especialmente los manuales "de
caja negra" de los que hemos hablado. Pero es conveniente ir preparándola a lo largo
de todo el desarrollo, según van realizándose las actividades a documentar.
Pruebas de software
Las pruebas de software (testing en inglés) son los procesos que permiten verificar y
revelar la calidad de un producto software antes de su puesta en marcha. Básicamente,
es una fase en el desarrollo de software que consiste en probar las aplicaciones
construidas.
Las pruebas de software se integran dentro de las diferentes fases del ciclo de vida del
software dentro de la Ingeniería de software. En este sentido, se ejecuta el aplicativo a
probar y mediante técnicas experimentales se trata de descubrir qué errores tiene.
Para determinar el nivel de calidad se deben efectuar unas medidas o pruebas que
permitan comprobar el grado de cumplimiento respecto de las especificaciones iniciales
del sistema.
Otros especialistas de pruebas manifiestan que las pruebas de software son
actividades claves para que los procesos de validación y verificación tengan éxito, ya
que ayudan a entregar el producto con la calidad suficiente para satisfacer las
necesidades del cliente y con la certeza de que el producto cumple las especificaciones
definidas. En este sentido, las pruebas pueden considerarse como un proceso que
intenta proporcionar confianza en el software y cuyo objetivo fundamental es demostrar
al desarrollador y al cliente que el software satisface sus requisitos.
La eficiencia consiste en conseguir el efecto deseado de la manera correcta, es decir,
sin desaprovechamiento de recursos, ni de tiempo ni de dinero. Por consiguiente, la
eficiencia está relacionada con dos conceptos: productividad y ausencia de pérdidas.
5|Page
Para conseguir esta eficiencia deseada durante el proceso de pruebas, se pueden
considerar los siguientes aspectos:
6|Page
Tipos de pruebas
La disciplina de pruebas es una de las más costosas del ciclo de vida software. En
sentido estricto, deben realizarse las pruebas de todos los artefactos generados
durante la construcción de un producto, lo que incluye especificaciones de requisitos,
casos de uso, diagramas de diversos tipos y, por supuesto, el código fuente y el resto
de productos que forman parte de la aplicación (por ejemplo, la base de datos), e
infraestructura. Obviamente, se aplican diferentes técnicas de prueba a cada tipo de
producto software.
A continuación, se describirá los tipos de pruebas en función de qué conocemos, según
el grado de automatización y en función de qué se prueba.
7|Page
En función de qué se prueba
a. Pruebas unitarias Se aplican a un componente del software. Podemos
considerar como componente (elemento indivisible) a una función, una clase,
una librería, etc. Estas pruebas las ejecuta el desarrollador, cada vez que va
probando fragmentos de código o scripts para ver si todo funciona como se
desea. Estas pruebas son muy técnicas.
b. Pruebas de integración
Consiste en construir el sistema a partir de los distintos componentes y probarlo
con todos integrados. Estas pruebas deben realizarse progresivamente. El foco
de atención es el diseño y la construcción de la arquitectura de software.
c. Pruebas de aceptación
Son las únicas pruebas que son realizadas por los usuarios expertos, todas las
anteriores las lleva a cabo el equipo de desarrollo. Consiste en comprobar si el
producto está listo para ser implantado para el uso operativo en el entorno del
usuario.
d. Pruebas funcionales
Este tipo de prueba se realiza sobre el sistema funcionando, comprobando que
cumpla con la especificación (normalmente a través de los casos de uso). Para
estas pruebas, se utilizan las especificaciones de casos de prueba.
e. Pruebas de rendimiento
Las pruebas de rendimiento se basan en comprobar que el sistema puede
soportar el volumen de carga definido en la especificación, es decir, hay que
comprobar la eficiencia (por ejemplo, se ha montado una página web sobre un
servidor y hay que probar qué capacidad tiene el estado de aceptar peticiones,
es decir capacidad de concurrencia).
8|Page
Administración de pruebas
Sin importar la metodología utilizada por un equipo de desarrollo, las pruebas
realizadas sobre el producto, ya sean unitarias, de integración o de sistema, reflejan si
los objetivos planteados a nivel de requerimientos son satisfechos por el producto
desarrollado. Este proceso, típicamente involucra el diseño e implementación de las
pruebas, su ejecución, el reporte de los defectos encontrados, la planeación de las
correcciones y la implementación de dichas correcciones.
Estos pasos no siempre están formalmente definidos y en muchas ocasiones se
encuentran en las cabezas de los miembros del equipo de trabajo quienes deciden en
un momento dado cómo manejar la información asociada a las pruebas y qué pasos
seguir durante este proceso.
Por otro lado, los responsables del proceso de pruebas deben considerar optimizar las
pruebas. Para ello, es necesaria la definición de una buena estrategia, es decir, definir
una serie de principios e ideas que puedan ayudar a guiar las actividades de pruebas.
Estrategia de pruebas
Existen distintas estrategias de pruebas, y dependiendo de su alineamiento con el
objetivo de las pruebas y con los propios proyectos, estas estrategias pueden tener
éxito o fallar. Otro punto a tener en cuenta es que no tiene por qué elegirse una sola
estrategia. Puede utilizarse una estrategia de manera dominante y utilizar otras de
complemento.
Algunos autores como Krutchen, Pressman, Pfleger, Cardoso y Sommerville afirman
que el proceso de ejecución de pruebas debe ser considerado durante todo el ciclo de
vida de un proyecto, para así obtener un producto de alta calidad. Su éxito dependerá
del seguimiento de una Estrategia de Prueba adecuada.
Herramientas de pruebas
Mediante la utilización de herramientas se puede conseguir reproducir cierto trabajo
previamente realizado, obteniendo resultados consistentes. Esta característica es
especialmente útil para confirmar que un defecto se ha arreglado, o para introducir
datos de entrada a pruebas.
Los principales beneficios que aporta el uso de herramientas como medio para llevar a
cabo el proceso de pruebas son:
- Reducir el trabajo repetitivo
- Mejorar la consistencia
- Facilitar las evaluaciones objetivas
- Facilitar el acceso a información relacionada con pruebas
9|Page
A continuación, se definen una serie de herramientas en base a su funcionalidad. Las
herramientas están clasificadas dependiendo de las áreas o actividades de pruebas a
las que se enfocan. La mayoría de las herramientas comerciales pueden usarse para
diferentes funciones. Por ejemplo, una herramienta de gestión puede proporcionar
soporte para la gestión de pruebas, gestión de la configuración, gestión de incidencias
y gestión de los requisitos y trazabilidad.
1. Herramientas de soporte para la gestión de pruebas
La gestión de pruebas se aplica sobre el conjunto del ciclo de vida de desarrollo
del software, por lo que una herramienta de gestión de pruebas debería de ser la
primera en usarse en el proyecto.
2. Herramientas de soporte para pruebas estáticas
Las herramientas de las que se habla en este apartado pueden dar soporte a las
actividades de prueba descritas en el apartado relativo a las pruebas estáticas.
3. Herramientas de soporte para la especificación de pruebas
Estas herramientas dan soporte a actividades de pruebas tales como el análisis
de pruebas, el diseño de pruebas o la implementación de pruebas.
4. Herramientas de monitorización y rendimiento
Las herramientas descritas en esta sección soportan pruebas que pueden
llevarse a cabo durante el propio proceso de pruebas o después de la liberación
del sistema.
10 | P a g e
que son referenciados por las aplicaciones son almacenados automáticamente en un
mapa de objetos de prueba al crear el script.
11 | P a g e
o Para la generación de pruebas automatizadas, IBM Rational Performance
Tester
o Herramientas de desarrollo, IBM Rational Application Developer
Grabación de un script
Antes de iniciar el proceso de grabación, asegúrese de haber configurado el entorno de
pruebas y la aplicación a probar. Durante el proceso de grabación, se puede agregar
comandos controlados por datos a fin de crear un pool de datos para probar otros
valores durante el proceso de reproducción, y puntos de verificación para probar el
estado de un objeto de la GUI.
Reproducción de un script
Al reproducir un script de prueba funcional se repite las acciones registradas y
automatiza el proceso de pruebas de software. Con la automatización, puede probar
cada nueva construcción de su aplicación más rápido y más bien que por las pruebas
de forma manual. Esto disminuye el tiempo de prueba y aumenta la cobertura y
consistencia.
Existen dos fases generales en la reproducción de un script:
- En la fase de desarrollo de pruebas, se reproducen scripts para verificar que
funcionan tal como se pretendía, utilizando la misma versión de la aplicación que
se somete a prueba y que se utiliza para grabar. Esta fase valida el
comportamiento que se espera de la aplicación.
- En la fase de pruebas de regresión se reproducen scripts para comparar la
última compilación de la aplicación que se somete a prueba con la línea base
establecida durante la fase de desarrollo de prueba. La prueba de regresión
identifica las diferencias que puedan haber surgido desde la última compilación.
Puede evaluar estas diferencias para determinar si se trata de defectos o de
cambios.
Para reconocer los objetos de prueba durante la reproducción, RFT utiliza el
reconocimiento de pesos de las propiedades del objeto. La siguiente figura explica que
durante el proceso de reproducción, RFT puede reconocer un objeto aún si tiene dos
propiedades diferentes con respecto a los encontrados en la línea base.
12 | P a g e
Revisión de los resultados
En esta etapa, se analiza el resultado de la prueba a partir del test log que se generó al
finalizar el proceso de reproducción. Durante la revisión, se determinará la causa de los
warnings y errores encontrados. Por defecto, el archivo del test log se mostrará en
formato HTML con 3 secciones en el panel izquierdo: resultado de errores, resultado de
warnings y puntos de verificación. En la sección de la derecha, se describen con más
detalle los errores y warnings generados, y un enlace para visualizar la página de
Comparación de Puntos de Verificación.
Definiciones
Versión
Instancia de un artefacto software (puede ser un sistema entero) que difiere de alguna
manera de otras instancias del mismo artefacto (ej. guía docente 2009/2010, guía
docente 2010/2011).
Revisión
13 | P a g e
Versión de un artefacto (puede ser un sistema software) cuyo objetivo es reemplazar a
una o más versiones anteriores (ej. Windows 7 es una revisión de Windows Vista).
Variante
Versión de un artefacto (puede ser un sistema software) que se añade a las versiones
existentes sin reemplazarlas (ej. Windows Phone es una variante de Windows).
Item de configuración
Artefacto o conjunto de artefactos susceptible de poseer varias versiones. (ej. diagrama
de clases, código de una clase, archivo .jar)
Entrega
Versión de un item de configuración (puede ser un sistema entero) que se distribuye a
los clientes. (ej. Windows Vista no debió nunca ser una entrega).
Configuración de un sistema software
Dado un sistema software donde sus artefactos poseen diferentes versiones (tanto
revisiones como variantes), una configuración es una selección de una versión por
cada artefacto perteneciente al sistema.
Línea base (baseline)
Conjunto de versiones concretas de los diferentes items de configuración, que
constituyen un estado significativo y claramente identificado en la evolución de un
producto (ej. primer prototipo para pruebas reales, primer documento estable de
requisitos).
Gestión de la Configuración
Proceso encargado de identificar los artefactos y características de tales artefactos que
constituyen la configuración de un sistema y analizar dicha configuración en distintos
puntos del tiempo con el objetivo de controlar sistemáticamente los cambios en la
configuración y mantener así la integridad y trazabilidad del sistema.
Traza
Relación existente entre dos items de configuración (e.j. un requisito y las clases que lo
implementan, una clase y sus casos de prueba).
Trazabilidad Software
Creación y gestión de trazas entre artefactos software sujetos a evolución (ej. ligar
requisitos con artefactos de diseño y código más casos de prueba).
14 | P a g e
Conclusión
Si no ha utilizado un sistema de gestión de configuración de software o no está
familiarizado con el concepto, es posible que se pregunte si es adecuado utilizar la
gestión de configuración de software en su proyecto. La automatización de las pruebas
es una tarea de desarrollo de software. Cada vez que se crea un script de prueba, ya
sea mediante grabación o codificación, se genera un archivo que contiene códigos.
Una vez creado, desarrollado o editado, dicho código se convierte en un activo de
prueba valioso.
Un entorno en equipo presenta el riesgo de perder el código que está en
funcionamiento o de estropear los scripts de prueba sobrescribiendo los archivos. Un
sistema de gestión de configuración de software facilita la forma de evitar este riesgo.
Cada vez que se modifica un archivo, se crea una versión nueva y el archivo original se
reserva.
Para aquel equipo que sea nuevo en la gestión de configuración de software,
encontrará todas las características esenciales para mantener versiones de los scripts
de prueba en la interfaz de Functional Tester. Esta integración simplifica el uso y la
adopción de la gestión de configuración de software.
15 | P a g e