TAI 2018. Bloque III. Desarrollo de sistemas - La web de emijrp
El Bloque III. Desarrollo de sistemas de las Oposiciones a TAI 2018 se compone de 10 temas.
Comparativa con el programa de TAI 2017:
- Tema 1-5: Igual.
- Tema 6: Dejan de nombrar C y C++.
- Tema 7: Igual.
- Tema 8: Cambian "Desarrollo web front-end y en servidor" por "Desarrollo web front-end y en servidor, multiplataforma y multidispositivo".
- Tema 9: Añaden "Conceptos de seguridad en el desarrollo de los sistemas".
- Tema 10: Añaden "Metodologías de desarrollo. Pruebas".
En esta página solo tomaré apuntes de lo que haya cambiado. Para lo demás me sirven los apuntes de TAI 2017 Bloque III.
Tabla de contenidos |
---|
1. Tema 8 1.1 Desarrollo web front-end y en servidor 1.1.1 Multiplataforma y multidispositivo 2. Tema 9 2.1 Conceptos de seguridad en el desarrollo de los sistemas 3. Tema 10 3.1 Metodologías de desarrollo 3.2 Pruebas 4. Fuentes 5. Referencias |
Tema 8
Tema 8. Aplicaciones web. Desarrollo web front-end y en servidor, multiplataforma y multidispositivo. Lenguajes: HTML, XML y sus derivaciones. Navegadores y lenguajes de programación web. Lenguajes de script.
Desarrollo web front-end y en servidor
Multiplataforma y multidispositivo
Por desarrollar.
Tema 9
Tema 9. Accesibilidad, diseño universal y usabilidad. Acceso y usabilidad de las tecnologías, productos y servicios relacionados con la sociedad de la información. Confidencialidad y disponibilidad de la información en puestos de usuario final. Conceptos de seguridad en el desarrollo de los sistemas.
Conceptos de seguridad en el desarrollo de los sistemas
Por desarrollar.
Tema 10
Tema 10. Herramientas CASE: características. Repositorios: estructura y actualización. Generación de código y documentación. Metodologías de desarrollo. Pruebas. Programas para control de versiones. Plataformas de desarrollo colaborativo de software.
Metodologías de desarrollo
- Desarrollo en cascada: también llamado modelo secuencial o modelo clásico, es aquel que ordena rigurosamente las etapas del ciclo de vida del software de forma secuencial. Cada etapa debe finalizar antes de pasar a la siguiente. Estas etapas serían las clásicas, análisis de requisitos, diseño, codificación, pruebas, despliegue y mantenimiento. Es poco flexible, ya que un fallo en las primeras etapas, por ejemplo en los requisitos, conlleva a repetir el proceso aumentando costes.
- Modelo de prototipos: mediante la construcción de un prototipo del producto, se logra una retroalimentación por parte del cliente, que ve resultados rápidamente y evalua el producto, permitiendo refinar los requisitos para la siguiente iteración.
- Desarrollo iterativo e incremental: se desarrolla el proyecto a través de repetir ciclos (iterativo) y en pequeñas porciones cada vez (incremental).
- Desarrollo en espiral: se llevan a cabo una serie de iteraciones en las que se determinan los objetivos, se hace análisis y reducción de riesgos, se desarrolla y prueba, y se planifica la próxima iteración. Tiene en cuenta explícitamente los riesgos que puedan surgir.
- Desarrollo ágil de software: está basado en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolucionan según las necesidades del proyecto. Cada iteración incluye: planificación, análisis de requisitos, diseño, codificación, pruebas y documentación.
- Scrum: se aplican buenas prácticas para trabajar colaborativamente, con desarrollo incremental, la calidad del resultado depende más de la auto organización del equipo que de los procesos, las fases del desarrollo se solapan. Los distintos ciclos (sprints) duran un mínimo de 2 semanas y un máximo de 1 mes. Al final de cada sprint se hace una revisión y una retrospectiva.
- Roles principales: product owner (ayuda que el equipo scrum trabaje desde la perspectiva de negocio), scrum master (elimina obstáculos), equipo de desarrollo (hace el producto).
- Roles auxiliares: stakeholder (clientes u otros beneficiados del desarrollo), administradores (establecen entorno para el desarrollo del proyecto).
- Crystal Clear:
- Programación extrema:
- Otros: desarrollo de software adaptativo (ASD), método de desarrollo de sistemas dinámicos (DSDM). Rational Unified Process RUP
Pruebas
Las pruebas de software son aquellas comprobaciones, automatizadas o no, que se realizan al software para verificar de forma objetiva y empírica que funciona correctamente y para evaluar su calidad.[1][2]
- Pruebas de caja blanca: se escogen distintas entradas que vayan a recorrer los múltiples flujos de ejecución del programa y se comprueba que las salidas son las esperadas. Estas pruebas están ligadas al código fuente y si este cambia, las pruebas de caja blanca deben modificarse para que incluyan los nuevos casos. Estas pruebas se pueden aplicar a nivel de unidad, integración y sistema. Las principales pruebas de caja blanca son: pruebas de flujo de control, de flujo de datos y de bifurcación.
- Pruebas de caja negra: consiste en proporcionar unas entradas y comprobar que las salidas son las esperadas, sin entrar a estudiar cómo funciona el sistema por dentro. Estas pruebas también pueden aplicarse a nivel de unidad, integración y sistema.
- Pruebas funcionales: basada en la ejecución, revisión y retroalimentación de las funcionalidades del software.
- Pruebas unitarias: comprueba el correcto funcionamiento de una unidad de código, por ejemplo una clase.
- Pruebas de componentes: un nivel algo más complejo que las pruebas unitarias, a nivel de módulo por ejemplo.
- Pruebas de integración: comprueba que los componentes funcionan juntos correctamente, comunicándose mediante sus interfaces.
- Pruebas de sistema: comprueba que el sistema en su totalidad cumple con la funcionalidad deseada.
- Pruebas de regresión: comprueba que cambios añadidos al sistema para corregir errores encontrados, no generen otros errores nuevos.
- Pruebas de aceptación: se valida que el sistema cumple con el funcionamiento esperado, el usuario determina su aceptación.
- Pruebas no funcionales: comprueban la disponibilidad, accesibilidad, usabilidad, seguridad, rendimiento, etc.
- Pruebas de compatibilidad: comprueba que el sistema funciona correctamente en distintos entornos (navegadores, sistemas operativos, máquinas virtuales, etc).
- Pruebas de usabilidad: comprueban que el sistema es usable de una forma sencilla, intuitiva, comprensible, por los usuarios.
- Pruebas de seguridad: comprueba que el sistema cumple los requisitos esperados en cuanto a seguridad.
- Pruebas de rendimiento: comprueba la eficiencia del sistema durante su funcionamiento. Las pruebas de carga miden el comportamiento del sistema con un número de peticiones o usuarios esperado. Las pruebas de estrés miden cuál es el número de peticiones o usuarios necesarios para que el sistema se sobrecargue y falle.
- Pruebas de escalabilidad: miden la capacidad del sistema para soportar mayores cargas, haciendo cambios que no sean drásticos en su configuración.
- Pruebas de mantenibilidad:
Algunas herramientas de pruebas:
- Bugzilla: herramienta web de reporte, gestión y seguimiento de errores.
- HP Quality Center: control de la calidad del software.
- HP Load Runner: medición del comportamiento de sistemas bajo carga.
- HtmlUnit: automatización de pruebas de páginas web.
- JMeter: proyecto de Apache para pruebas de carga y análisis de rendimiento de aplicaciones web.
- Selenium: pruebas para aplicaciones web.
- SoapUI: pruebas a aplicaciones con arquitecturas orientadas a servicios (SOA).
- Watir: automatización de pruebas sobre navegadores web.
Fuentes
- Para confeccionar estos apuntes se han utilizado en ocasiones artículos de Wikipedia.
Referencias
Oposiciones | |
---|---|
Apuntes TAI 2017 | Bloque I · Bloque II · Bloque III · Bloque IV |
Apuntes TAI 2018 | Bloque I · Bloque II · Bloque III · Bloque IV |
Exámenes | Análisis de exámenes |