Subido por alexls12benya

Preguntas de examen - Ingeniería del Software

Anuncio
TEMA 1 - Introducción a la Ingeniería del Software
1. ¿Cuáles son las principales diferencias entre el hardware y el software?***
El hardware es la parte más física y externa de un dispositivo mientras que el software es todo lo
que ese dispositivo lleva en su interior (programas, código, aplicaciones…)
El software es desarrollado, mientras que el hardware es fabricado. El hw comienza a fallar después
de cierto tiempo, debido a los efectos acumulativos del entorno, pero el software no se ve afectado
por este factor. El software es personalizado y se desarrolla la mayoría de las veces desde cero,
mientras que en el caso del hw se pueden utilizar piezas construidas con anterioridad Por último, los
sistemas softwares están constantemente cambiando, y los productos hw son directamente
reemplazados.
El hardware es el conjunto de componentes físicos de los que está hecho un equipo, mientras que el
software es el conjunto de programas o aplicaciones, instrucciones y reglas informáticas que hacen
posible el funcionamiento de este equipo.
2. ¿Qué es la Ingeniería del Software?
La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y
técnicas que se utilizan en el desarrollo de programas informáticos, más conocidos como softwares
La ingeniería del software es una disciplina que estudia la creación de un software confiable y de
calidad, basándose en métodos y técnicas de ingeniería y brindando soporte operacional y de
mantenimiento.
3. ¿Qué ventajas aporta la Ingeniería del Software a la Ingeniería de Salud?
La ingeniería de software ha sido la cuna de disciplinas como la biotecnología y la bioinformática,
permitiendo a las ciencias clásicas como las matemáticas y la medicina avanzar a grandes pasos.
4. ¿Cuáles son los principales motivos de los errores en el desarrollo del software?
El software está constantemente sujeto a cambios, los cuales pueden introducir errores. Cuando
intentamos solucionar un problema en nuestro sistema, modificar o añadir funcionalidades,
podemos introducir más errores.
5. ¿Dónde y por qué se acuñó el término "crisis del software"?
En el año 1965, se produjo una entrega del sistema operativo S/360 en el que estaban implicados
1000 programadores, pero a la hora de probarlo se dieron cuenta de que la calidad y el rendimiento
estaban por debajo de los estándares establecidos, de que se estaban saltando algunas pruebas más
rigurosas se estaban entregando las nuevas máquinas sin el software crucial, además los clientes se
veían obligados a utilizar programas temporales más rudimentarios que los prometidos. A partir de
ahí el coste en hardware fue decreciendo y poco a poco fue aumentando el precio del software.
Grupo D→ Tras todos los problemas que tenía el desarrollo de software en los años 60,
precisamente en 1968 un grupo de ingenieros de computadores, managers de corporaciones e
incluso algunos oficiales militares se reunieron en Garmisch, Alemania para la primera conferencia
NATO de ingenieria de Software, en que trataron diferentes soluciones para el problema llamado
desde aquel entonces “crisis del software”.
Página 1
6.
¿Qué propone la Ingeniería del Software para resolver los problemas del desarrollo del
software?
A la hora de desarrollar un sistema software, se propone planificar los pasos para intentar minimizar
el número de cambios, de forma que si se tiene que hacer algún cambio o arreglo, este sea lo más
temprano posible para no entorpecer el posterior desarrollo y la aparición de múltiples errores tras
cada modificación.
Conforme se desarrolla el software, enmendar un error se vuelve más caro a nivel de programación,
ya que un cambio compromete cada vez un sistema más grande.
Lo que propone la ingeniería del Software es un enfoque organizado, sistemático y cuantificable de
forma que se resuelvan los problemas de los clientes. Por lo tanto, la ingeniería del Software
comienza en la primera reunión con el cliente para determinar lo que necesita y continúa aun
después de la entrega del resultado final, puesto que el software desarrollado necesitará
mantenimiento para adecuarse a los nuevos requerimientos.
7. ¿Qué problemas ha resuelto la Ingeniería del Software?
Los presupuestos y calendarios ya no se sobrepasan tras la Ingeniería del Software ya que el
desarrollo del Software se fue encareciendo y las entregas llevaban retraso.
Las características del software no se ajustaban a los deseos de los usuarios. Faltaba alguna
funcionalidad o los resultados no eran los esperados.
El software era muy difícil de mantener o modificar. El software entregado era tan complejo y mal
estructurado que los cambios eran difíciles de aplicar y suponían un alto riesgo de introducir nuevos
errores o hacer que otras funcionalidades dejarán de funcionar correctamente.
La ingeniería de software propone diseñar los programas más organizados, creando subrutinas en
vez de saltar de una parte a otra del código. Por lo tanto, no tenemos los tan conocidos códigos
espagueti.
También la ingeniería del software propone definir el problema inicial determinando la viabilidad
del proyecto, determinando los posibles riesgos a lo largo del proyecto y proponiendo planes de
acción para cada riesgo.
Por último, la ingeniería del Software tiene la vista a largo plazo, es decir, en los proyectos tenemos
en cuenta el mantenimiento del programa después de su entrega al cliente.
8.
¿Cuáles son las principales actividades incluidas en la Ingeniería del Software?
Página 2
Las principales actividades son :
•
La definición de las condiciones iniciales del proyecto tales como la viabilidad, los
requisitos técnicos y como se va a planificar todo
•
La construcción del software, que consta de un análisis previo de todas las características
requeridas por el cliente, el diseño, cómo va a ser implementado y finalmente comprobar la
calidad del producto mediantes pruebas y las valoraciones del cliente al respecto
•
El mantenimiento de un producto tras la finalización de su desarrollo ya que puede que esté
todavía en una fase alfa-beta y necesita un seguimiento hasta la formalización
•
Las principales actividades incluidas en la ingeniería del software son:
•
La definición: se establecen los objetivos esperados para el sistema, debemos saber qué
quiere el cliente y qué funciones debe tener el sistema para satisfacer sus necesidades. En
esta fase se incluye un estudio de viabilidad, requisitos y planificación.
•
La construcción: una vez que tenemos claro qué requisitos deben estar incluidos, pensamos
en cómo implementar una solución. Este proceso se divide en varias capas, en cada una se
hace una descripción más precisa que en la anterior, hasta llegar a la implementación final,
añadiendo detalles e incorporando tecnologías. Esta fase suele incluir el análisis, diseño,
implementación y calidad.
•
El mantenimiento: una vez desarrollado el software, testeado y validado, debemos
desplegarlo. Es decir, se pone en funcionamiento en su entorno final, donde es usado por los
usuarios reales. Debemos asegurarnos de que funcione bien, realizando un mantenimiento y
actualización.
9.
¿Ha resuelto la Ingeniería del Software todos los problemas del desarrollo del
software?¿Por qué?***
No, los sistemas están aún sujetos a muchos errores y casos no contemplados, para prevenirlos y
enmendarlos se han empleado técnicas de planificación y métodos de refactorización distintos.
10. ¿Qué es un atributo de calidad del software?Describe tres ejemplos.
Los atributos de calidad son una serie de propiedades que el proyecto software debe requerir para
verificar que se trata de un software de buena calidad. Tres ejemplos de estos atributos pueden ser la
eficiencia, la portabilidad del producto y cómo de fiable es.
Los atributos de calidad del software son propiedades medibles de un sistema que indican cómo de
bien se satisfacen las necesidades de los clientes. Algunos ejemplos de estos atributos serían la
disponibilidad, rendimiento y modificabilidad.
11. ¿Qué atributos de calidad del software son más importantes para los desarrolladores y
cuáles para los clientes y por qué?
•
Para los desarrolladores los atributos de calidad más importantes son:
La eficiencia, para emplear solo los recursos necesarios.
◦
El mantenimiento, ya que si estas personas son las que van a tener que responder
◦
ante un problema, qué menos que sea fácil y rápido de solventar
La reutilización, es importante que sea capaz de reutilizarse el producto sin
◦
deteriorarse
•
Para los usuarios los atributos de calidad clave son:
Página 3
◦
◦
◦
•
La usabilidad porque para ellos que sea fácil de usar es lo primordial la mayoría de
veces
La fiabilidad, que sea un producto el cual no comprometa la privacidad o
información de los usuarios
La eficacia porque el usuario prima que funcione tal y como espera que funcione
Para los desarrolladores son la portabilidad y que sea un producto fácil de mantener y
modificar (si el cliente quiere cambiar algo en un momento dado, que realizar este cambio
resulte fácil y que no entorpezca al resto del proyecto). Para los usuarios son la usabilidad
(que sea fácil de usar y de entender) y que no falle.
12. ¿Qué es un "stakeholder"? ¿Por qué son importantes?
Toda persona que se ve afectada por el producto software que vamos a desarrollar, desde la empresa
o cliente que nos contrata hasta los usuarios finales.
Los stakeholders son las personas y organizaciones que presentan algún tipo de relación con la
empresa o proyecto, de manera que influyen en él y cualquier decisión les afecta (directa o
indirectamente). A parte de los accionistas e inversores, serían también los trabajadores, socios,
competidores, proveedores y clientes. Son importantes porque son quienes garantizan estar
satisfechos con lo que se está desarrollando y si se están cumpliendo las necesidades. Involucrarlos
es muy importante para así evitar perjuicios a la empresa (económicos o de comunicación).
13. ¿Cuáles son los principales "stakeholders"?
•
Usuarios. Los usuarios son las personas que trabajarán directamente con el sistema en
funcionamiento cuando sea desplegado. Quieren que la funcionalidad del sistema se adapte
a sus necesidades, que el sistema sea fácil de usar y que aporte valor a su trabajo.
•
Clientes. Los clientes son las personas u organizaciones que han pedido que se desarrolle el
sistema. Se centran en los objetivos empresariales que debe cubrir el sistema. También son
conscientes de que el proyecto debe ajustarse al calendario y al presupuesto.
Página 4
•
Desarrolladores de software. El personal técnico que construye el sistema. Están interesados
en obtener los requisitos correctos para el sistema y construir un sistema que los cumpla.
Ellos son los expertos en los detalles técnicos del desarrollo.
•
Directores de desarrollo. Son las personas que dirigen la organización que está desarrollando
el software. Sus principales objetivos son satisfacer a los clientes y reducir los costes de la
organización.
14. ¿Un desarrollador en un proyecto, se considera un stakeholder del mismo?¿Por qué?
Sí, se puede considerar un stakeholder ya que se trata de un integrante del conjunto con cierto
interés en el proyecto y tiene asociada una función dentro del mismo.
Página 5
TEMA 2 - Procesos software
Este documento contiene 56 preguntas sobre el tema de procesos software
1. Describe un ejemplo de proyecto en el que consideras que el modelo en espiral sería
recomendable usarlo
Un ejemplo podría ser un software que se encargue de monitorizar a una empresa de taxis, donde
nos piden que se recoja información de los conductores, rutas que hacen, clientes que recojan…
Como es un proyecto a largo plazo que conlleva un gran tiempo y coste, nos conviene usar un
modelo en espiral, ya que es un modelo evolutivo que para cada iteración se irá asumiendo más
complejidad, por lo que lo iremos desarrollando progresivamente y reduciendo y corrigiendo los
errores en cada iteración.
2.
¿Cuál es la principal aportación del modelo en cascada frente a un proceso sin
modelo?¿Puedes dar un ejemplo de proyecto en el que se pudiera usar?***
Que aporta control y planificación a la hora de desarrollar el proyecto. El modelo en cascada se
suele usar para software con una baja complejidad, por lo que un ejemplo sería para un
software que se encargue de ver si un alumno ha suspendido o aprobado.
La principal aportación del modelo en cascada es que al tener una estructura muy clara y
precisa, permite establecer de manera eficaz y desde el principio el papel de cada integrante
en cada fase del proyecto.
3.
¿Cuáles son las actividades fundamentales del proceso en cascada?
Las actividades fundamentales son las actividades fundamentales del desarrollo, que son integración
y prueba del sistema.
Las actividades fundamentales son:
•
Determinar los requisitos del sistema
•
Definir los requisitos del software
•
Análisis del problema
•
Diseño del programa
•
Desarrollo de código
•
Comprobar el código mediante pruebas
•
Implantación del código
4.
¿Cuáles son las ventajas de documentar el diseño según el método en cascada?
Esto facilitará a personas que no han trabajado directamente en el desarrollo su comprensión,
mejorando así la comunicación entre el equipo de desarrollo y el cliente. También ayudará a una
futura reimplementación o arreglo de errores.
Página 6
5. ¿Cuál es el sentido en el método en cascada de hacer el proceso dos veces?
Es recomendable hacer el proceso una primera vez de forma rápida para testear y una segunda vez
que tome más tiempo. En caso de que encontremos fallos en la primera vez que lo hacemos,
podemos solucionarlos en la segunda.
6.
¿Qué actividades se proponen en el modelo en cascada para involucrar mejor al
cliente?
Documentando el proceso involucramos al cliente desde el principio y lo mantenemos siempre al
tanto. El cliente debe revisar y aprobar los resultados del software resultante del diseño previo y
revisar el software final para su aceptación.
7. ¿Para qué tipos de sistema es apropiado el modelo en cascada?
Para problemas con poca complejidad y baja tasa de innovación.
Para aquellos en los que el objetivo está muy bien definido o cuando los proyectos son de poca
envergadura.
8. ¿En qué proyectos se desaconseja el modelo en cascada? ¿Por qué?
En proyectos complejos o inventivos, ya que el ciclo de vida del modelo cascada empuja muchos
elementos difíciles y de alto riesgo hacia el final del proyecto.
9. ¿Por qué es difícil integrar los cambios en el modelo en cascada?
En este modelo los requisitos iniciales no deben cambiarse a lo largo del proyecto. Sin embargo, es
muy común, especialmente para el nuevo software, que los requisitos sufran muchas modificaciones
durante el desarrollo. Es por eso que, si cambian los requisitos en el medio del desarrollo, no
podremos integrar los cambios fácilmente.
10. ¿Por qué en el modelo en cascada se atacan los mayores riesgos al final?
En el modelo en cascada, la fase de prueba (testeo) no tiene lugar hasta casi el final y tras la fase de
implementación. Es por ello, que los riesgos (sobre todo los más grandes) no se ven hasta ese
momento. Un error de código o en los requisitos iniciales implicaría volver a las fases iniciales de
requisitos o de diseño del programa del proyecto (lo cual retrasa y vuelve más costoso el proyecto).
11. ¿Qué es una iteración en los modelos iterativos?
En los modelos iterativos se divide el proyecto en bloques temporales, llamados iteraciones, en las
que se llevan a cabo diferentes tareas. Cada iteración se repite hasta obtener un producto que
satisfaga las necesidades del cliente.
Bloques temporales que dividen el proyecto en distintas partes con diferentes actividades a realizar
para la atención temprana de posibles fallos. Estos bloques se repiten hasta la finalización del
proyecto.
12. ¿Qué es una entrega de iteración (iteration release)?
Un iteration release es una versión estable, integrada y probada parcial o completamente del
sistema. Al final de cada iteración, se entrega al cliente una versión mejorada o con mayores
funcionalidades del producto. Será el cliente quien evalúe este producto y o bien lo corrija o bien
proponga nuevas mejoras.
Página 7
13. ¿Por qué el desarrollo en iteraciones reduce los riesgos presentes en el modelo en
cascada?
En el modelo en cascada, es necesario tener los requisitos claros y bien definidos desde un principio
para poder lograr una ejecución exitosa, rápida y rentable y para pasar a la siguiente fase es
necesario completar la anterior. Sin embargo, en la práctica esto se complica, ya que los requisitos
no suelen estar tan bien definidos desde un inicio y un proyecto no siempre sigue el flujo secuencial
del modelo.
Dividir en iteraciones este proceso mejora los aspectos comentados anteriormente, ya que no es
necesario tener las ideas tan claras desde un principio (pueden ir puliéndose conforme se desarrolla
el proyecto), se hace posible la detección de errores pronto (reduciendo costes y tiempo) y se
facilita la identificación de funcionalidades (que falten, no funcionen correctamente o sean difíciles
de implementar).
Otro aspecto muy importante es que el uso de iteraciones promueve la mitigación temprana de los
riesgos, debido a que en las primeras etapas se enfrentan las tareas más difíciles y que conforman
mayor riesgo (arquitectura e integración).
Finalmente, comentar que al permitir una evolución simultánea del modelo y el software también se
evita que ambos puedan quedar obsoletos en el momento de su aplicación (un riesgo bastante
importante dado el creciente desarrollo de la tecnología actual).
14. ¿Por qué los modelos iterativos también se denominan incrementales?
Porque al final de cada iteración se entrega un producto mejorado y es el cliente quien propone
nuevas mejoras o correcciones, es decir, tras cada iteración el producto incrementa en
funcionalidades, características, etc. y cada vez se va obteniendo uno que se adecua más a aquel que
satisface las necesidades del cliente.
15. ¿Cuáles son las similitudes entre una iteración y el modelo en cascada?
Hablan con el cliente. Ambas hacen testing. En las iteraciones los pasos no son lineales.
Los pasos que se realizan en ambas son similares, pero la carga de trabajo en cada una se distribuye
de manera diferente. Además, en las iteraciones los pasos no se realizan de manera lineal como en
el modelo en cascada.
16. ¿Qué significa que un desarrollo sea dirigido por riesgos?
Al principio de cada iteración es necesario elegir el conjunto de requerimientos que se van a
implementar. Un desarrollo dirigido por riesgos es una estrategia que tiene en cuenta los riesgos y
aquellos requerimientos que mitigan los más importantes. De esta forma, los problemas más graves
surgen en la etapa de desarrollo (cuando todavía no se ha avanzado mucho en el proyecto y queda
tiempo y presupuesto para corregir los problemas).
17. ¿Cuáles son las ventajas y los inconvenientes de dirigir un proyecto por riesgos o que lo
dirija el cliente?
En una estrategia dirigida por el cliente es él quien decide qué requerimientos van a ser
implementados en la siguiente iteración.
•
Ventajas: No tiene ventajas que un cliente dirija un proyecto.
•
Desventajas: El equipo de desarrollo es el responsable de estimar cuánto tiempo van a
necesitar para implementar estos requisitos (posible error de cálculo) y además, pueden no
saber muy bien qué requisitos dan más valor al cliente (pudiendo dejar estos requisitos para
Página 8
el final con el riesgo de que no se acaben implementando). El cliente puede no entender los
riesgos asociados a cada requisito, dejando riesgos importantes para el final del proyecto.
En una estrategia dirigida por riesgos:
•
Ventajas:
Con este enfoque los riesgos más importantes y graves surgen en la fase de
◦
desarrollo, esto permite que se solucionen (normalmente) pronto y a menor coste, lo
que reduce el coste tanto de trabajo como económico a largo plazo.
•
Desventajas:
Al priorizar aquellos riesgos que son más significativos, pueden dejarse de lado
◦
requerimientos importantes para el cliente y al dejarlos para el final, puede darse la
situación de que no lleguen a implementarse (no satisfaciendo así las necesidades del
cliente).
18. ¿Qué ventajas aporta los plazos fijos (timeboxing) en las iteraciones?
Establecer unos plazos fijos para cada iteración permite la reducción de retrasos en el desarrollo. Si
durante una iteración se ve que no se pueden implementar todos los requisitos, se dejan algunos
para la siguiente, es decir, la iteración sigue con la misma duración. Esta estrategia permite
identificar si el número de requisitos en cada iteración es correcto o si por el contrario es necesario
reducirlo (para evitar una sobrecarga de los trabajadores).
19. ¿Por qué se recomienda que los plazos de las iteraciones sean cortos (generalmente de
pocas semanas)?
Dicha recomendación beneficia en la disminución de problemas que puedan ir surgiendo, ya sea,
problemas con el tiempo de entrega, con el cumplimiento de requisitos, presupuesto, integrantes del
grupos…etc. De esta forma al ser plazos de iteraciones cortos podremos solucionarlo de una forma
más sencilla y menos costosa.
Los plazos son cortos porque de esta manera, cada unas pocas semanas se tiene un producto final
(parcial) que puede ser presentado al cliente, quien nos dará feedback para volver a modificarlo.
20. ¿Qué se recomienda hacer si se ve que no se va a cumplir el plazo de una iteración?
El plazo de una iteración no puede alargarse, por lo que si se observa que no va a ser posible
completar los requerimientos propuestos en ese tiempo, deben descartarse algunos y dejarlos para la
siguiente iteración.
21. ¿Por qué no se permiten cambios durante las iteraciones si los modelos iterativos
presumen de adaptarse bien a los cambios?
En este tipo de modelos, se permiten cambios pero entre iteraciones, cuando el proyecto es
reevaluado tras la entrega de una nueva versión. Esto es así ya que los requisitos de cada iteración
están marcados y se realiza una planificación concreta para ellos. Cambiar o añadir tareas implica
tener que reorganizar toda la iteración, lo cual no se acepta en este tipo de modelos.
22. ¿Qué quiere decir que un desarrollo es evolutivo?
El desarrollo evolutivo implica que los requisitos, planes y estimaciones se actualizan y refinan a lo
largo del desarrollo. Las versiones iniciales de esos elementos no se consideran fijas, sino que
evolucionan en función de cómo se desarrolle el proyecto.
Página 9
23. ¿Cómo se lleva a cabo el análisis de requisitos evolutivos en los métodos iterativos?
La mayoría de los requisitos se identifican durante las primeras iteraciones y se presta especial
atención a los requisitos que más influyen en la arquitectura o que agregan más valor al cliente.
No obstante, se realiza un taller de uno o dos días en el que se vuelve a analizar los requisitos, como
respuesta a la nueva información obtenida y al feedback recibido de versiones anteriores. Aunque
es cierto que los requisitos se analizan de manera frecuente a lo largo del proyecto.
24. ¿Cuál es la relación entre las entregas incrementales y la involucración de los clientes?
Al realizar entregas incrementales el cliente está más involucrado en el proyecto, es decir, al
finalizar cada iteración se presenta una nueva versión al cliente, y es este quien determina si el
resultado es bueno o no y cuáles son las mejoras o nuevas funcionalidades que este debiera tener.
25. ¿Qué es un caso de uso en el Proceso Unificado? 2.4.1¿Cuál es su principal función?
2.4.2
El Proceso Unificado es un marco de desarrollo software dirigido por casos de uso. La idea es que
en cada iteración se cojan un conjunto de casos de uso para su desarrollo, por lo que son la “base”
del proceso unificado. Su finalidad es:
•
Que sean lo suficientemente precisos como para que sirvan de base desde el desarrollo hasta
la implementación.
•
Que sean entendibles para las personas sin entrenamiento técnico.
•
Mostrar con más detalle la interacción entre el sistema (caja negra) y el usuario (actores) en
cada uno de los modos que el usuario puede utilizar el sistema, pero sin mostrar los detalles
internos.
Los casos de uso son los actores más importantes y qué realiza el sistema por ellos. Su principal
función es ayudarnos a tener una primera solución e idea del costo del proyecto. Los requisitos
recogidos en los casos de uso deben ser claros y alineados con el proyecto, ya que se necesita la
credibilidad del coste, prioridades, riesgos, etc.
26. ¿Por qué no se deben incluir aspectos no funcionales en los casos de uso?
Los casos de uso son un refinamiento de los requisitos funcionales y en ellos únicamente pueden
describirse detalles funcionales y otros aspectos técnicos, es decir, en los casos de uso se va a hablar
de qué hace el sistema, no de cómo lo hace (aspectos no funcionales).
Los casos de uso son un refinamiento de los requisitos funcionales y surgen de la interacción del
sistema con el usuario. Deben expresar la funcionalidad de manera comprensible para las personas
sin formación técnica. Es por ello que únicamente pueden describirse detalles funcionales y otros
aspectos técnicos, dejando de lado los detalles de la interfaz gráfica de usuario.
27. ¿Por qué los casos de uso deben estar escritos en un lenguaje que entienda el cliente?
Los casos de uso deben estar escritos en un lenguaje entendible por el cliente, ya que es necesario
que capturen las necesidades de los usuarios y permitan que los stakeholders las entiendan
fácilmente, de forma que los clientes puedan verificar que la descripción hecha por el equipo de
desarrollo es correcta y cubre sus necesidades y expectativas.
28. ¿Cuáles son las principales fases del PU?***
Las principales fases son: inicio, elaboración, construcción y transición.
Página 10
29. ¿Cuál es el objetivo de las fases del PU? 2.4.5
Los objetivos de cada fase del PU son:
•
Fase de inicio, consiste en determinar los requerimientos iniciales del proyecto y lo que
prevemos conseguir (riesgos, restricciones, primeros modelos..etc).
•
Fase de elaboración, consiste en llevar a cabo el trabajo que hemos hecho en la fase inicial
y desarrollar la arquitectura del proyecto.
•
Fase de construcción, fase en la que el diseño se termina de desarrollar y se implementa
completamente consiguiendo su total funcionalidad.
•
Fase de transición, esta es la última fase en la que el cliente ha de ser capaz de usar el
producto sin ningún problema, además se plantean mejoras futuras.
30. ¿Cuáles son los flujos de trabajo definidos en el PU?
Los flujos de trabajo definidos en el PU son requisitos, análisis, diseño, implementación y prueba.
31. ¿Cuál es la relación entre los modelos de los distintos flujos de trabajo?
La relación entre los modelos de distintos flujos de trabajo es que cada uno es la entrada para la
construcción del siguiente. En cada flujo se van refinando los modelos, incluyendo cada vez más
detalles hasta llegar al modelo de implementación, que se puede compilar para ejecutar el software.
A esta relación entre modelos se le denomina “trace”.
32. ¿Cuál es la relación entre los casos de uso y los casos de prueba?
Los casos de prueba derivan de los casos de uso. Ambos abarcan la definición de los requisitos
funcionales del sistema, pero se diferencian en el nivel de profundidad al que llega.
Los casos de uso abarcan todas las posibles rutas que se pueden seguir para lograr el proyecto y los
casos de prueba son un refinamiento que comprueba el cumplimiento o no de los requisitos de uso y
la relación con el usuario (cubren más a fondo el software).
33. ¿Qué características fundamentales distinguen a los métodos ágiles de otros métodos
iterativos?
En los métodos ágiles:
•
Se favorece y potencia la comunicación y el feedback (entre equipo de desarrollo y
clientes).
•
Se da importancia a los programadores (el trabajo se realiza mejor si la gente está
contenta)
•
Se utilizan prácticas y herramientas sencillas: en las metodologías ágiles se busca hacer
siempre lo más simple, no solo a nivel de código y diseño, sino también con las prácticas y
herramientas que se utilizan.
•
Se utilizan procesos empíricos: se basan en medir constantemente los eventos variables y
responder de manera dinámica ante ellos (muy útil sobre todo en ambientes inestables y
sujetos a muchos cambios).
•
Se basa en seguir una serie de principios en vez de reglas estrictas.
•
Presentan un toque humano (disciplina sostenible), ya que las actividades deben ser
asequibles para el equipo y este tiene que estar dispuesto a realizarlas de nuevo, es decir, la
actividad tiene que proporcionar disfrute, una ganancia al equipo, motivación, etc.
Página 11
•
El equipo se ve como un sistema adaptativo complejo: son los equipos de desarrollo
quienes asumen las responsabilidades de gestión (autoorganización, gestión de los roles,
asignación de tareas, etc.) en lugar de que una única persona lo planifique todo.
34. ¿Qué tipo de comunicación se promueve en los métodos ágiles?
En los métodos ágiles se promueve la comunicación cara a cara, tanto con el equipo como con el
cliente.
35.
•
•
•
•
•
¿Cuáles son los principios del pensamiento Lean?***
1. Identificar el valor.
2. Mapear el flujo de valor.
3. Optimizar el flujo.
4. Establecer el sistema pull, esto significa que solo se empieza una tarea cuando haya una
demanda o pedido.
5. Buscar la perfección.
36. ¿Cuáles son los valores de Scrum?
•
Compromiso: el equipo Scrum se compromete a lograr sus objetivos y apoyarse
•
Enfoque: su enfoque principal es en el trabajo del sprint para hacer el mejor progreso hacia
esos objetivos.
•
Apertura: el equipo Scrum y los stakeholders son abiertos sobre el trabajo y los desafios.
•
Respeto: los miembros del equipo Scrum se respetan entre sí para ser personas capaces e
independientes.
•
Coraje: los miembro del equipo Scrum tienen el valor/coraje de hacer lo correcto y de
trabajar en problemas difíciles.
37. ¿Qué toma Scrum del empirismo?
El empirismo afirma que el conocimiento procede de la experiencia y en tomar las decisiones
basándonos en lo que observamos. En Scrum cada sprint es una oportunidad de observar
(inspeccionar) y adaptar el proyecto.
38. ¿Qué es un Sprint en Scrum?
Un sprint en scrum, también llamado iteración, es un determinado tiempo en el que desarrollamos el
proyecto o producto para obtener una primera versión del producto final que luego será presentado
al cliente para validar los user stories esenciales.
Es un periodo breve de tiempo en el que un equipo de Scrum trabaja para completar una cantidad de
trabajo establecida (el Sprint Backlog). El objetivo es conseguir un incremento de valor en el
producto o proyecto que se está construyendo.
39. ¿Cuánto puede durar un Sprint en Scrum?¿Puede cambiar su duración durante un
proyecto?
Puede durar un mes o menos, el Sprint es continuo por lo que no debe cambiar su duración durante
el proyecto.
Página 12
40. ¿Cómo y cuándo se decide qué historias de usuario se van a implementar en un sprint?
Es en el Sprint Planning cuando se decide qué historias de usuario se van a implementar en cada
sprint y es el equipo de desarrollo quien las selecciona (mediante un push de los ítems del Product
Backlog) según su capacidad de trabajo.
41. ¿Cómo puede finalizar un Sprint?***
Un sprint puede finalizar con un prototipo funcional del proyecto o un prototipo que aún necesita
algunos cambios.
Porque acaba el tiempo, llega al final del proyecto.
Puede finalizar porque se ha terminado el tiempo del sprint o porque no se puede lograr el Sprint
goal.
42. ¿Quienes integran un equipo Scrum?
Un equipo de Scrum está compuesto por un Scrum Master, un Product Owner y uno o más
desarrolladores.
43.
•
•
•
¿Cuál es la función del Product Owner?
Es el responsable de maximizar el valor del producto que resulta en cada sprint.
Se ocupa de tratar con los stakeholders, clientes y sponsors para determinar qué quieren.
Organiza y define el Product Backlog.
44. ¿En qué debe emplear su tiempo el Scrum Master?
El Scrum Master es el encargado de establecer correctamente la metodología Scrum y de mantener
al equipo enfocado y ayudarle en caso de que se atasquen en alguna tarea.
45. ¿Por qué se dice que en Scrum los equipos se auto dirigen y autoorganizan?
El Scrum Team es un equipo auto organizado porque cada uno de los constituyentes decide sobre
que hacer, cuando se hace y cómo. Puede ocurrir que existan pequeños grupos dentro del equipo
global. En ese caso, estos grupos se auto organizan y cada uno se enfoca en el mismo objetivo.
La adaptación a cambios en el proceso de desarrollo es una de las características que debe
prevalecer en técnicas Scrum, y esto se hace cada vez más difícil cuando la gente que forma el
Scrum Team no está auto organizada.
46. ¿Para qué sirve la reunión diaria?
La reunión diaria sirve para revisar el progreso que se ha hecho y planear las siguientes 24 horas.
47. ¿Qué información contiene el Product Backlog?
Una vez determinados los user stories, la información que contiene el product backlog es una lista
en orden de prioridades de las user stories que necesitamos desarrollar. Además, tendrá el sizing de
los user stories.
48. ¿Qué información contiene el Sprint Backlog?
El sprint backlog tiene la información primordial del sprint, es decir, la lista de objetivos del sprint,
los elementos del product backlog que se han escogido para este sprint y las características del
definition of done para este sprint.
Página 13
49. ¿Cuál es el propósito de usar un burn-down chart?
Su propósito es servir de referencia para saber si la cantidad de trabajo es mucha o poca según
avanza el sprint y, en consecuencia, añadir o quitar elementos del product backlog.
50. ¿Quién puede cancelar un Sprint?¿Y bajo qué circunstancias?
Sólo el Product Owner puede cancelar un Sprint en caso de que el objetivo del Sprint quedara
obsoleto, por ejemplo, si cambian las condiciones del mercado, la tecnología, la dirección de la
empresa.
51. ¿En qué consiste la programación por parejas?
La programación por parejas es un método de programación en el que dos personas trabajan juntas
en un mismo programa. La primera persona es el “conductor”, que escribe el código, y la otra es el
“navegante”, que revisa cada línea de código a medida que se escribe, comprobando si hay errores.
Suelen intercambiar sus papeles con regularidad.
52. ¿Dónde se pueden incluir restricciones impuestas de eficiencia en el producto en Scrum
para su validación?
Se pueden incluir en los criterios de aceptación (comprueban las user stories) y en el Definition of
Done (se comprueban al final de cada iteración).
53. ¿Quién se encarga de aportar valor al producto en Scrum?
El Product Owner
54. ¿Cuáles son los artefactos de Scrum?
Un artefacto representa un “trabajo” o un “valor” y contiene un “compromiso” (un objetivo a
cumplir). Existen 3 artefactos:
•
Para el Product Backlog es el Product Goal (el producto final que cubre las necesidades del
paciente)
•
Para el Sprint Backlog es el Sprint Goal (objetivo a obtener al final de cada sprint)
•
Para el Incremento es el Definition of Done (la mejora o nueva funcionalidad, el
“incremento”, se crea cuando se cumple el DoD)
55. ¿Cuáles son los eventos de Scrum?
Eventos: Sprint, Sprint Planning, Daily Scrum, Sprint Review y Sprint Retrospective.
El evento principal de Scrum es el Sprint y contiene al resto de eventos. El primero es el Sprint
Planning, donde el equipo de Scrum decide cuál es el Sprint goal, los ítems del Product Backlog
que se van a realizar en ese Sprint. Posteriormente, cada día se realizan Daily Scrum meetings, para
inspeccionar el progreso y planear el día siguiente.
El Sprint Review se realiza al final de cada Sprint para ver el incremento y recibir el feedback de
los stakeholders. El último evento es el Sprint Retrospective, donde el equipo de Scrum inspecciona
el proceso de desarrollo e identifica posibles problemas (mala comunicación, uso ineficiente de
herramientas, Definition of Done incompleto, etc.)
56. ¿Qué es el Definition of Done?
Es una descripción de las medidas de calidad requeridas para el producto. Puede incluir requisitos
como la seguridad, funcionalidad, etc., pruebas, organización, etc. En el momento en el que un item
Página 14
del Product Backlog cumple la definición descrita en en DoD, se crea un incremento (una nueva
funcionalidad añadida).
57. ¿Qué es una historia de usuario?
Las user stories o historias de usuario son explicaciones cortas, generales e informales de una
función de software desde la perspectiva de un usuario final o el cliente. Estas historias describen el
resultado que se espera, cómo va a proporcionar esta función valor al cliente y permiten dar a los
desarrolladores un contexto para que sepan qué compilan y con qué valor. Suelen responder a las
preguntas quién quiere la funcionalidad, cuál es la funcionalidad y por qué se necesita (el valor).
Página 15
Tema 3 - Gestión de proyectos
Este documento contiene 24 preguntas sobre el tema de gestión de proyectos.
1. What is a project?
Un proyecto es un conjunto de actividades interrelacionadas, realizadas por un grupo de personas
con el fin de producir un producto o servicio para un cliente en concreto.
2. What is the difference between a project and operations in an organization?
Los proyectos son trabajos temporales y únicos que buscan un resultado concreto (dar un producto
o un servicio al cliente) y son “tareas cerradas”, es decir, tienen un inicio y un fin (tienen un límite
temporal). Mientras que las operaciones son acciones continuas, repetitivas y estáticas, que no
tienen como objetivo producir nada, sino mantener y hacer sostenible el sistema. Un ejemplo de
operaciones podrían ser las tareas administrativas, el cobro a clientes, el pago a proveedores, etc. 3. What are the possible causes for a project to end?***
Un proyecto puede finalizar por 3 razones:
•
Se han cumplido los objetivos establecidos
•
Se concluye que no se pueden alcanzar los objetivos
•
Deja de existir la necesidad de ese proyecto
4. What are the main reasons that add complexity to the management of a project?
Tiempo, recursos, presupuesto, tamaño del proyecto y del equipo, número de dependencias con
otros proyectos y/o empresas, etc.
5. What is project management?
La gestión del proyecto hace referencia al conjunto de metodologías que se utilizan para planificar,
hacer un seguimiento y dirigir las tareas y recursos de un proyecto. Incluye aspectos como la
coordinación de procesos, las herramientas, los miembros del equipo y la habilidad para entregar
proyectos que cumplen y satisfacen los objetivos y necesidades del cliente.
6. What are the main process groups of Project Management according to the PMI?
Inicio, Planificación, Ejecución, Mantenimiento y control y Cierre.
7. What is the goal of the Project Initiation process group?*
El IPG está compuesto por esos procesos realizados para definir un nuevo proyecto habiendo
obtenido autorización para empezar el proyecto. El objetivo de este grupo es establecer lo que se va
a hacer en el proyecto, involucrando a los stakeholders para influir en esto. Si aun no se ha
realizado, se asignará al manager del proyecto.
8. What are the expected results from the Project Initiation process group?
Producir el Acta de Constitución del Proyecto, el documento que lidera el resto del desarrollo.
9. What is the Project Charter document?
Es un documento que autoriza formalmente la existencia de un proyecto y que proporciona a su
director la autoridad para aplicar recursos de la organización a las actividades del proyecto. En el
momento en que se aprueba un Project Charter, el proyecto se autoriza oficialmente.
Página 16
10. What is the information required to write the Project Charter?
1. Declaración del proyecto de trabajo: descripción del producto o servicio y cuál es el
resultado que se espera obtener.
2. Caso de negocio: describe si el proyecto es rentable o no
3. Acuerdos necesarios
4. Factores del entorno empresarial: condiciones y restricciones impuestas al proyecto sobre
las cuales no se tiene un control total (políticas, leyes, etc.)
5. Activos del proceso organizativo: información del día a día de la organización que pueden
afectar positiva o negativamente un proyecto (planes, procedimientos,, registros históricos,
lecciones aprendidas, etc de la empresa).
11. What is the Scope and Vision document?
Es un documento complementario al Project Chapter que incluye información extra útil para la
puesta en marcha del proyecto. El “scope” incluye una lista de características que deben
desarrollarse y el trabajo a realizar para ello. El “vision” es una descripción de alto nivel de
abstracción sobre los objetivos software del proyecto.
12. What is the information contained in the Scope and Vision document?
1. Objetivos del proyecto y del producto.
2. Características y requisitos del producto o servicio.
3. Criterios de aceptación del producto.
4. Límites del proyecto.
5. Requisitos y entregables del proyecto.
6. Restricciones del proyecto.
7. Supuestos preliminares del proyecto.
8. Riesgos iniciales definidos.
9. Principales hitos y su calendario.
10. Distribución del trabajo inicial.
11. Estimaciones de costos de alto nivel.
13. What is the product’s "Vision"?
Una descripción de alto nivel sobre los objetivos software principales del proyecto de manera
minimalista. Son unas pocas líneas en las que deben incluirse el propósito principal del nuevo
producto, su lugar en el mercado o en su entorno y las necesidades de los stakeholders.
14. What is the purpose of project planning?***
El objetivo del Project Planning es desarrollar un plan que permita ejecutar y controlar el proyecto.
15. What are the main activities to build a Project Plan?
1. Verificar el documento de definición: para asegurarnos de que toda la información es
correcta y válida.
2. Determinar qué hay que hacer: detalles sobre el enfoque del proyecto, los resultados que
se esperan y el trabajo necesario para completar el proyecto.
3. Determinar los criterios de aceptación: para tener criterios comunes que permitan evaluar
si los resultados de un proyecto son exitosos o no.
4. Determinar los recursos necesarios: incluye personas, tiempo, presupuesto, equipos e
instalaciones.
Página 17
5.
Adquisición de dichos recursos: gestionar la obtención de estos recursos para cuando sean
necesarios.
6. Estimación del trabajo: estimar los costes (tiempo, personal, etc.) que requiere la
realización de cada tarea o actividad.
7. Generar un horario: asignación de fechas límite y duración de cada actividad, fase y
proyecto final.
8. Actualizar roles y responsabilidades: si hay un nuevo rol en el proyecto se le debe asignar
una serie de responsabilidades, relacionarlo con un stakeholder y asignarlo a una persona en
concreto. Para cada actividad deben definirse las responsabilidades que tiene cada rol.
9. Actualizar la organización del proyecto: si hay cambios de personal, roles, departamentos,
organizaciones involucradas en el proyecto, etc.
10. Determinar los costes del proyecto y el presupuesto: incluye los recursos necesarios y el
“horario” (punto 7).
11. Determinar el sistema de control del proyecto: establece qué se va a controlar, cómo, con
qué frecuencia, cómo se informará, etc.
16. What is estimation?
Una estimación es una evaluación preliminar tentativa o aproximada del coste de un proyecto, es
decir, es un cálculo preliminar del coste, el tiempo o los recursos que requerirá una tarea futura de
un proyecto.
17. What is the difference between targets and estimations?
Un objetivo es una meta que se quiere alcanzar en el proyecto, en cambio una estimación es un
cálculo que se hace al principio del proyecto para establecer el coste, el tiempo o los recursos
necesarios.
18. What factors influence estimations?***
•
Los riesgos son un factor importante que influye en las estimaciones y deben tenerse en
cuenta al hacerlas. Del mismo modo, se harán suposiciones al calcular las estimaciones.
•
La experiencia de los trabajadores encargados de realizar la tarea es un factor importante, los
estimadores, ya que cuanto más experiencia tenga mayor será su implicación para llegar a
estas.
•
Las estimaciones deben estar basadas en datos medibles y procesos formales cuando sea
posible.
19. What is the PERT estimation used to compute an expected value?
Es una técnica de estimación que se aplica a tareas cortas (que tengan una duración menor a 2 días).
En ella se utiliza el mejor valor, el peor y el más probable.
20. How are estimations considered in Agile Methodologies?
Las técnicas de estimación ágil siguen la visión de simplicidad de las metodologías ágiles y no
utilizan grandes series históricas de registros de proyectos anteriores o técnicas estadísticas
complejas para estimar el tamaño de las historias de usuario.
Su estimación se basa en el criterio de miembros expertos del grupo, primandose así la
comunicación entre los miembros del equipo y la búsqueda de un consenso para determinar la
mejor estimación de cada historia de usuario.
21. When are large user stories acceptable in Agile-managed projects?
Página 18
Las historias de usuario grandes son aceptadas más hacia el final, ya que conviene comenzar con
tareas más pequeñas que tomen menos tiempo de realizar para así poder comenzar el proyecto. Si
inicialmente tengo una user story que me va a costar mucho trabajo y tiempo el proyecto queda
“parado” durante todo ese desarrollo.
22. How is Planning Poker used to develop estimations?
El product owner selecciona una user story y la lee en voz alta. Los desarrolladores le pueden hacer
cualquier pregunta sobre esta. Cuando no haya más preguntas, cada desarrollador elige una carta de
su mazo con su estimación, y todos muestran sus estimaciones. Si todas las estimaciones son
iguales, se le asigna a la historia de usuario. Si las estimaciones difieren, el desarrollador que haya
propuesto el valor más bajo y el del valor más alto justifica sus elecciones. Cuando hayan terminado
de exponer sus puntos de vista, todos los desarrolladores mantendrán una breve discusión y luego
comenzará una nueva ronda.
23. How is Team Estimation used to develop estimations?
Esta técnica se basa en el análisis de todas las decisiones tomadas por parte del equipo sobre la
complejidad (relativa) de las distintas historias de usuario. Se divide en dos partes:
1. Se ordenan las historias de usuario según su complejidad relativa
2. Se asigna una complejidad cuantificable (mediante el Scrum Poker) a cada historia de
usuario
Página 19
Tema 4 - Ingeniería de requisitos
Este documento contiene 25 preguntas sobre el tema de
1. ¿Qué es un requisito?***
Un requisito es una descripción de los servicios y restricciones de un sistema que se descubren
durante el proceso de la ingeniería de requisitos. También describen lo que los stakeholders
necesitan del sistema.
2. ¿Qué diferencia hay entre requisitos de sistema y de usuarios?***
Los requisitos de usuarios son declaraciones en lenguaje natural y en diagramas de los servicios que
debe brindar el sistema y las restricciones bajo las que debe funcionar. Se escriben en forma de user
stories y sin tecnicismos. Mientras que los requisitos del sistema son una especificación completa y
consistente del sistema, escrita en texto estructurado, detallando los servicios, lo que se
implementará y lo que no y sus restricciones.
3. ¿Cómo se documentan los requisitos en SCRUM?
Los requisitos en SCRUM se documentan a través del Product Backlog (lista de requisitos
funcionales (user stories) y no funcionales (definidos en DoD y criterios de aceptación) priorizados
por el Product Owner por su valor para el cliente).
4. ¿Qué es un requisito no funcional?
Un requisito no funcional son todas las restricciones y/o condiciones bajo las que tiene que trabajar
correctamente un sistema, es decir, son las características del software pero no determinan la
funcionalidad del sistema a desarrollar.
5. ¿Dónde se pueden incluir los requisitos no funcionales en SCRUM?
En el definition of done.
6.
¿Que es un requisito funcional?
Un requisito funcional describe lo que hace el producto, su funcionalidad y los servicios que
debe suministrar.
7.
•
¿Describe un ejemplo de requisito de eficiencia?***
El sistema debe de ser capaz de hacer N transferencias de datos en menos de X tiempo.
8. ¿Describe un ejemplo de requisito de fiabilidad?
Un sistema deberá tardar un máximo de x minutos para la recuperación de un fallo de caída total, en
la mayoría de los casos.
9.
•
•
¿Describe un ejemplo de requisito de seguridad?
Cada 24 horas se realizará una copia de seguridad de todos los datos del sistema en un
servidor ubicado en un edificio que no sea el sistema principal.
Las comunicaciones entre cliente y servidor se encriptaran.
Página 20
10. ¿A qué nivel de abstracción se puede definir un requisito?
Se puede definir a nivel de usuario (especificación a alto nivel) o del sistema (especificación
funcional).
11. ¿Qué diferencia hay entre un actor y un stakeholder?
Los actores son aquellos que interactúan directamente con el sistema (usuarios finales y gente que
interactúa con el sistema para conseguir los objetivos de los usuarios). Mientras que los
stakeholders incluyen a todas las personas y sistemas que no usan directamente el sistema, pero
afectan o se ven afectados por él y tienen cierta influencia sobre los requisitos.
12. ¿Qué papel juegan los actores (usuarios finales) y los stakeholders en los requisitos?*
De los actores se obtendrán los requisitos no funcionales para satisfacerlos, los stakeholders
definirán los requisitos funcionales.
13. ¿Qué es la Ingeniería de Requisitos?
Es el proceso para deducir, especificar y validar los requisitos de un sistema, se reúne a los
stakeholders y se obtienen y validan los requisitos.
14. ¿Cómo se relacionan los requisitos con otros aspectos de la ingeniería del software?
Existen algunos puntos en común entre los modelos de procesos de software:
1. La obtención y especificación de requisitos, en la que se definen las características globales del
sistema y las funciones que desean los usuarios.
2. Análisis de requisitos, en el que se construye un primer modelo del interior del sistema, un nivel
de abstracción muy alto y conceptos estrechamente ligados al dominio del negocio, comprensibles
para el usuario.
3. Diseño, en el que se construye un modelo del sistema mucho más cercano a las restricciones
técnicas y lógicas a las que debe enfrentarse el sistema, y más cercano a los conceptos informáticos
que al dominio del negocio.
4. Desarrollo, en el que se construye finalmente el sistema informático que lleva a cabo las
acciones esperadas por el sistema.
5. Pruebas, utilizadas para verificar si el sistema implementado responde a su especificación.
6. Despliegue, donde se pone en producción el sistema creado. Puede incluir la migración desde
sistemas anteriores y la formación de los usuarios.
15. ¿Qué técnicas se pueden aplicar para obtener requisitos?
Se pueden obtener requisitos a través de entrevistas, reuniones de equipo, la etnografía, los
escenarios (por ejemplo, casos de uso), prototipos.
16. ¿Cuándo se recomienda el uso de la técnica de Etnografía?
Es recomendable cuando el dominio es muy específico y no entendemos del tema, vamos al entorno
para saber donde va a estar implementado el software y cómo trabaja la gente.
17. ¿Qué formas hay de documentar requisitos?
Se pueden documentar desde la perspectiva de dominio del problema, especificando el
comportamiento externo del sistema y no los detalles sobre su arquitectura y diseño (documento de
definición del sistema). Se usa lenguaje natural.
Otra forma es especificar los requisitos de sistema y los requisitos de software que derivan de estos
(documento de requisitos del sistema).
Página 21
Estableciendo las bases para un acuerdo entre clientes y contratistas sobre lo que debe hacer el
producto y lo que no. Debe tener descripciones formales y estimación de costes, riesgo y tiempo
(SRS).
18. ¿Qué retos encontramos en la obtención de requisitos?
Uno de los retos es que los requisitos no sean ambiguos.
En el caso de los requisitos del dominio es muy probable que no entendamos la terminología que se
usa y que los especialistas no aclaren explícitamente los requisitos del dominio, ya que para ellos
está claro.
Sean validables. El cliente no sabe lo que quiere ni la dificultad que esto implica.
19. ¿Qué es un Storyboard?
Un storyboard, es un conjunto de ilustraciones presentadas de forma secuencial con el objetivo de
servir de guía para entender de una forma más gráfica una historia. En este caso un storyboard nos
permitirá comprender, planificar, previsualizar las historias de usuario de los casos de uso,
referencia a elementos del software…etc, de una forma más gráfica.
20. ¿Para qué sirve la validación de requisitos?
La validación de requisitos sirve para determinar si estos requisitos cumplen las especificaciones
del cliente cuando el producto ha sido terminado.
21. ¿Cómo se realiza la validación de requisitos en SCRUM?
Se comprueban los criterios de aceptación cumplidos y el DoD
22. ¿Qué se persigue con la priorización de los requisitos?
Se intenta decidir si un requisito es más importante que otro para hacerlo antes.
23. Describe una user story con dos criterios de validación.
User story: Como usuario quiero acceder a la agenda de especialidades médicas de forma segura
para usar sus funcionalidades.
Criterios de aceptación:
· El nombre de usuario debe existir en la base de datos, en caso contrario se mostrará un error de
inicio de sesión.
· La contraseña debe coincidir con la que el nombre de usuario tiene asociada en la base de datos,
en otro caso se mostrará un error de inicio de sesión.
24. Describe un par de criterios que se pueden usar en el DoD.
En el DoD van los requisitos no funcionales, como por ejemplo, que el tiempo de análisis de un
dispositivo médico no exceda los 3 minutos. Otro ejemplo es que una aplicación sea compatible con
Windows.
25. ¿Dónde se puede realizar la validación en SCRUM? Describe todos los posibles sitios.*
En el Sprint Review, donde los stakeholders hablan sobre la mejora de calidad del producto (El
incremento) y el Product Owner define el valor de este.
Página 22
Tema 5 - Modelado de sistemas
Este documento contiene 18 preguntas sobre el tema de modelado
1. ¿Qué es un modelo?***
Un modelo es una abstracción de la realidad que nos permite quedarnos con los aspectos más
relevantes de la misma.
2. ¿Qué vistas propone el modelo unificado?
Vista lógica: describe la estructura del software.
Vista de despliegue: muestra cómo los ejecutables y otros componentes de tiempo de ejecución se
asignan a las plataformas subyacentes o nodos informáticos.
Vista de proceso: aborda el aspecto concurrente del sistema en tiempo de ejecución.
Vista de implementación: proporciona la organización estática del software en términos de
empaquetado, estratificación y gestión de la configuración.
3. ¿Qué son los atributos en un diagrama de clases?
Los atributos son los elementos de la clase que almacenan los datos que son propios de dicha clase.
4. ¿Qué son las operaciones o métodos en un diagrama de clases?
Las operaciones son descripciones del comportamiento de los objetos.
5. ¿Qué significa que un atributo en un diagrama de clases sea protegido?
Quiere decir que solo se puede acceder al atributo desde una instancia de la misma clase o desde
una clase que especializa a esa clase.
6. ¿Qué significa que un atributo en un diagrama de clases sea público?***
Significa que se accede al atributo desde cualquier otra clase del modelo.
7. ¿Qué significa que un atributo en un diagrama de clases sea derivado?
Los atributos derivados son atributos cuyos valores se pueden calcular a partir de valores de
atributos relacionados.
8.
¿Qué diferencia hay entre una relación de composición y una de agregación en un
diagrama de clases?
En el caso de las composiciones, una parte no puede existir sin ser parte de un todo, si eliminamos
una clase, las que la componen también se eliminan. Mientras que en la agregación una parte puede
existir sin ser parte del todo.
9.
¿Qué diferencia hay entre una relación de agregación y una de especialización en un
diagrama de clases?
En la agregación hay una clase que representa el todo y se compone por instancias de otras clases
(las partes). En cambio, en la generalización se consideran objetos independientes aun cuando haya
enlaces frecuentes entre ellos. La agregación es una relación más fuerte.
10. ¿Qué diferencia hay entre una relación agregación y una de asociación en un diagrama
de clases?
Página 23
La relación de agregación indica que un objeto de una clase es parte de un objeto de otra clase que
es un todo. Mientras que la relación de asociación indica que un objeto de una clase tiene un objeto
de otra clase, si A tiene a la clase B, la clase B puede ser tratada como otro atributo de la clase A.
11. ¿Qué relación existe entre los mensajes y las líneas de vida (lifeline) en un diagrama de
secuencia?
Las líneas de vida aparecen siempre que el objeto esté vivo en la interacción, si este envía mensajes,
la línea de vida presenta activaciones (tiempo en el que el objeto está activo en la interacción).
12. ¿Qué tipos de mensajes existen en un diagrama de secuencia?
Los mensajes pueden ser:
•
Síncronos: el emisor del mensaje queda bloqueado hasta que el receptor le responda.
•
Asíncrono: no esperan respuesta, por lo que pueden o no tenerla.
•
Creación: designa la creación de otro objeto de línea de vida.
•
Borrar: designa la terminación de otra línea de vida.
•
Respuesta: mensaje de respuesta a una llamada de operación.
13. ¿Para qué se usa un actor en un diagrama de secuencia?
Los actores representan a los objetos o usuarios que van a interactuar entre sí durante la secuencia.
14. ¿Describe un ejemplo de automensaje en un diagrama de secuencia?
En el diagrama de secuencia de la pulsera de pulsos vemos que la central se envía un automensaje
para actualizar la alarma. Este mensaje es síncrono, pero la respuesta está implícita porque responde
eél mismo participante que recibe el mensaje. Grupo Q
15. ¿Qué diferencia existe entre una activación (trigger) y una guarda (guard) en una
transición en el diagrama de máquina de estados?***
La activación es la transición de un estado a otro, mientras que la guarda es la condición que debe
cumplirse para que se dé el trigger.
La guarda no define la activación, si no que define a dónde se va en el siguiente paso. El trigger lo
hace es producir la transición de un estado a otro.
16. ¿Es posible modelar transiciones de salida en un estado final de un diagrama de
máquina de estados?
No.
17. ¿Qué significa la expresión run-to-completion semantics en los diagramas de máquina
de estados?
Significa que una máquina de estado finaliza todas las acciones relacionadas con la recepción de la
ocurrencia de un evento antes de comenzar con la reacción a la ocurrencia de otro evento.
18. Describe un ejemplo en el que se modelen dos transiciones salientes de un estado en un
diagrama de máquina de estados*
Página 24
Tema 6 - Diseño software
Este documento contiene 20 preguntas sobre el tema de diseño
1. ¿Qué es una responsabilidad en el tema de diseño software?
Son las obligaciones de un objeto en términos de su comportamiento, y hay dos tipos: de conocer y
de hacer. Son asignadas a las clases durante el diseño y puede incluir la ejecución de varios
métodos.
2. ¿Qué aporta tener una alta cohesión?
La cohesión mide la relación entre las responsabilidades de un elemento. Tener una alta cohesión
quiere decir que un elemento tiene responsabilidades altamente relacionadas y no hace una excesiva
cantidad de trabajo.
3. ¿Qué conlleva una baja cohesión?
Una clase con baja cohesión conlleva a que sean difíciles de comprender, de reutilizar y mantener.
Son también delicadas, y, están sometidas constantemente a cambios. Estas clases hacen muchas
cosas que no están relacionadas y hacen una excesiva cantidad de trabajo.
4. ¿Qué aporta un bajo acoplamiento?
El acoplamiento es una medida que comprueba cómo de fuerte está conectado un elemento y si
depende de otros elementos. Si este acoplamiento es bajo, quiere decir que dicho elemento no
depende de muchos otros.
5. ¿Qué ocurre cuando el acoplamiento es alto?
Si una clase tiene un acoplamiento alto, quiere decir que depende de muchas otras clases. Estas
clases deben evitarse.
6. ¿Qué relación hay entre el acoplamiento y la cohesión?***
Si tenemos una clase con alta cohesión, las responsabilidades están centradas en esa misma clase,
que dependerá de pocas clases, con lo cual, tendremos bajo acoplamiento. Las clases con alta
cohesión normalmente tienen bajo acoplamiento porque cada una hace sus responsabilidades, sin
necesitar de las demás. Igualmente depende mucho del sistema en concreto, porque podemos tener
clases con muy alta cohesión y otras con baja cohesión que necesiten de otras clases.
7. ¿Qué mejora aporta usar el principio de information expert?***
El principio de information expert indica que la responsabilidad de la creación de un objeto o
implementación de un método recae sobre la clase que conoce toda la información necesaria para
crearlo, obteniendo así un diseño con mayor cohesión y la información se mantiene encapsulada,
disminuyendo así el acoplamiento.
8.
¿Qué relación hay entre el principio creator y las relaciones en el diagrama de clases de
composición?
En el caso del principio creator hay una clase B que tiene la responsabilidad de crear a la clase A.
Esta responsabilidad es asignada a B si cumple con una o más afirmaciones, entre las que se
encuentran que B agregue objetos de A, contenga objetos de A, guarde instancias de los objetos de
A, etc.
Página 25
Por otro lado, en el caso de la composicion, si B está compuesto por A, cuando se crea un objeto de
la clase B puede o no crearse uno de A (depende de la multiplicidad en la relación). Es decir, debe
crearse un objeto de B para que pueda crearse un objeto de la clase A.
En ambos casos, primero debe crearse el objeto de la clase B para que se pueda crear el de la clase
A. Si el creator cumple con varias de las afirmaciones puede ser conveniente elegir una relación de
asociación.
9. ¿Qué ventajas aporta usar el principio controller?
Un controlador es un componente de software que permite al sistema operativo y un dispositivo
comunicarse entre sí. Se encarga de la interacción con el usuario (por ejemplo: clicks de ratón,
teclas pulsadas) y de pasar esas interacciones a la Vista o el Modelo.
Este principio permite especificar las respuestas a sucesos o solicitudes de datos concretas,
permitiendo que entidades o arquitecturas externas lleven a cabo las acciones de control necesarias.
Las ventajas son:
•
Al automatizar las tareas se reduce el costo de mano de obra.
•
Es más fácil monitorear los procesos (más sencilla la detección de errores).
•
Ahorro en gastos de operación, mantenimiento, etc.
10. ¿Qué principio de SOLID aumenta la cohesión?¿Por qué?
El principio de responsabilidad única (SRP). Una clase o función debe centrarse en una única
responsabilidad y debe existir una única razón para cambiar. Por ello, todos los métodos deberían
tener una alta cohesión.
11. Describe el principio abierto-cerrado de SOLID. Pon un ejemplo en pseudo-código.
Expresa la necesidad de que ante un cambio de los requisitos, el diseño de las entidades existentes
permanezca inalterado, es decir, debe adaptarse a nuevas situaciones, sin modificar el código
existente y añadiendo nuevo código. Se puede conseguir por polimorfismo, dinámico (sin
especificar datos), o estático (datos explícitos).
12. ¿Qué consecuencias puede tener una violación del principio de sustitución de Liskov?
Las consecuencias que puede tener la violación de dicho principio son ocultar el comportamiento
heredado, redefiniendo métodos con implementaciones vacías o lanzando excepciones, modificar el
comportamiento heredado, redefiniendo métodos con semánticas incompatibles o lanzando
excepciones nuevas, modificar la clase base, para adaptarlas a las necesidades de la heredada, y para
redefiniar mas de lo que se extiende, se debe usar delegación, agregación o composición.
Si se viola el principio de sustitución de Liskov, quiere decir que la clase hijo no puede sustituir a la
clase padre. En consecuencia, se intenta arreglar modificando el código que funciona bien, ya que
buscamos ocultar o modificar el comportamiento heredado, o modificar la clase base. Así es como
el no cumplimiento del principio de sustitución conlleva al no cumplimiento del principio abiertocerrado.
13. ¿Qué ventajas aporta el principio de segregación de interfaces de SOLID?
Este principio permite agrupar a los clientes según sus necesidades y segregar la interfaz del sistema
en función de los clientes. Así un cliente no tiene que aprender de los métodos que no use y puede
usar solo el subconjunto de la interfaz que necesite.
Página 26
14. ¿Qué representa la arquitectura de un sistema?
Representa una vista general de cómo es el sistema, su organización, elementos estructurales e
interfaces.
15. ¿Cómo se organiza el patrón arquitectónico de tuberías y filtros? Pon un ejemplo de
uso.
Está dirigido por el flujo de datos. Estos datos se procesan incrementalmente conforme llegan.
Los filtros leen flujos de entrada, transforman localmente los datos, escriben flujos de salida y son
independientes, lo que quiere decir que no tienen estados compartido y que entre sí no se conocen.
Los filtros son equivalentes a los componentes.
Las tuberías, son los flujos de datos, y equivalen a los conectores.
Un ejemplo puede ser en la composición en lenguajes funcionales, por ejemplo Haskell.
Este patrón tiene componentes, que son los filtros, es decir, programas que leen flujos de entrada,
transforman localmente los datos y escriben flujos de salida. Los conectores son las tuberías, es
decir, los flujos de datos. Los componentes y conectores se organizan de manera que un filtro coge
la entrada (tubería), aplica un algoritmo y lanza la salida. Esta salida puede ser tomada como flujo
de entrada para otro filtro.
Un ejemplo de uso es el procesamiento de imágenes, donde el flujo de entrada es la imagen y el
filtro es una función de ajuste de contraste que devuelve la imagen ajustada. Este resultado puede
ser tomado por otro filtro que aplique la detección de objetos y devuelva la imagen resultante.
16. ¿Cómo se organiza el patrón arquitectónico de llamada y retorno funcional? Pon un
ejemplo de uso.
Está basado en la descomposición funcional del sistema.
En este caso, las subrutinas implementan tareas o subtareas, ofrecen una interfaz al exterior, y están
combinadas a través del flujo de control. Se corresponden a los componentes.
Las llamadas están de acuerdo con la interfaz, y se corresponden con los conectores.
La organización de este patrón consta de unos componentes que son subrutinas, resultantes de la
descomposición funcional del sistema, es decir, dividimos un programa según las tareas a realizar.
Los conectores son las llamadas a esas subrutinas, es decir, los argumentos.
Un ejemplo es la descomposición de la gestión de un pedido en subrutinas que hacen tareas
específicas, como el cálculo del precio, gestión de cobro y gestión de envío.
17. ¿Cómo se organiza el patrón arquitectónico de capas? Pon un ejemplo de uso.
Este patrón se organiza en niveles de abstracción, que son las capas. Cada capa se comunica
únicamente con las capas adyacentes y entre las capas hay interfaces definidas que definen su
interacción. Generalmente las capas más bajas proporcionan servicios de bajo nivel. Las capas son
los componentes y las interfaces son los conectores.
Un ejemplo es su uso en los protocolos de comunicación, donde tenemos las capas (desde abajo
hacia arriba) física, de enlace, de red, transporte, sesión, presentación y aplicación. Cada capa presta
servicios a su capa inmediatamente superior y demanda a la capa inmediatamente inferior, por
ejemplo, la capa de red presta servicios a la capa de transporte y demanda a la capa de enlace.
18. ¿Cómo se organiza el patrón arquitectónico de repositorio? Pon un ejemplo de uso.
Página 27
Los componentes de este patrón son los clientes y el repositorio, mientras que los conectores son los
flujos de datos. Se organiza de manera que tenemos un repositorio donde se manejan todos los datos
del sistema y al que acceden clientes que no se comunican entre sí (sólo a través del repositorio).
Un ejemplo de uso es almacenar todos los datos de los pacientes de un hospital en un repositorio
para que los distintos clientes (médicos especialistas, enfermeros, cirujanos, administrativos, etc.)
puedan acceder a ellos.
19. ¿Cómo se organiza el patrón arquitectónico de cliente-servidor? Pon un ejemplo de
uso.
La organización de este patrón consiste en uno o más clientes (componente) que se conectan a un
servidor (componente) para demandar servicios que los servidores ofrecen. Los conectores son los
flujos de datos, que pueden ser remotos o locales.
Un ejemplo de uso es cuando el navegador es el cliente y pide servicios a un servidor web (como
por ejemplo, google.com) a través de internet.
20. ¿Cómo se organiza el patrón arquitectónico de modelo-vista-controlador? Pon un
ejemplo de uso.
Este patrón cuenta con tres componentes, el modelo (gestiona los datos y operaciones del sistema),
la vista (representación visual del modelo) y el controlador (responsable de traducir las
interacciones del usuario a datos y pasarlas a la vista o al modelo). Estos tres componentes se
organizan de tal forma que el usuario interacciona con la vista y los datos llegan al controlador, este
procesa los datos y los transmite al modelo. Por ultimo, el modelo cambia, notifica al controlador y
se hacen los cambios en la vista.
Un ejemplo de uso es una aplicación de tienda on-line, donde el controlador recibe la acción
solicitada por el usuario y se lo transfiere al modelo, que se actualiza y lo comunica para que la
vista muestre lo correcto. Por ejemplo, si el usuario hace click en un producto, deben hacerse los
cambios necesarios en el modelo para que la vista se actualice y muestre el producto correcto.
Página 28
Tema 7 - Verificación y pruebas
Este documento contiene 17 preguntas sobre el tema de verificación y pruebas.
1. ¿Qué son las pruebas unitarias?
Son aquellas en las que se prueban unidades de programa individuales o clases de objetos. Se
centran únicamente en probar la funcionalidad de los objetos y/o métodos.
2. ¿Qué son las pruebas de componentes?
Son aquellas en las que se integran varias unidades individuales para crear componentes
compuestos. Se centran en probar las interfaces de los componentes.
3. ¿Qué son las pruebas de sistema?
Son aquellas donde algunos o todos los componentes de un sistema están integrados y el sistema se
prueba como un todo. Se centran en probar las interacciones de los componentes.
4. ¿Qué son las pruebas de release?***
Son pruebas en las que un equipo de prueba externo prueba una versión completa del sistema antes
de que se lance a los usuarios.
5. ¿Qué son las pruebas de usuario?
Son pruebas en las que los usuarios o usuarios potenciales de un sistema prueban el sistema en su
propio entorno.
6. ¿Qué técnicas para realizar pruebas unitarias conoces?
JUnit y Unittest. Son framework de automatización de pruebas que proporcionan clases de prueba
genéricas para crear casos de prueba específicos (permiten ejecutar todas las pruebas que se han
implementado e informar, a menudo de forma gráfica, sobre el éxito o fracaso de las pruebas).
7. ¿Qué diferencia hay entre pruebas de caja negra y pruebas de caja blanca?***
La caja blanca sabes el código, en la caja negra usas una interfaz.
8. ¿Qué son los caminos base en las pruebas unitarias?
Son los caminos independientes del código. El número de caminos base se calcula con la
complejidad ciclomática del grafo de flujo.
9. ¿Qué son las particiones de equivalencia en las pruebas?
Las particiones de equivalencia son las clases en las que se dividen los datos de entrada. Todos los
datos de una clase están relacionados y muestran un comportamiento común. El programa se
comporta de manera equivalente para cada miembro de la clase de equivalencia.
10. ¿Qué aportan las pruebas de interfaz?
Aportan garantizar una comunicación fluida y segura entre los componentes del software
11. ¿Qué son las pruebas alpha?***
Son pruebas de usuario que incluyen a los desarrolladores. Los usuarios trabajan con el equipo de
desarrolladores y prueban el software en el sitio del equipo de desarrollo. Se centra en ver que el
Página 29
sistema cumpla con las funcionalidades esperadas y que el usuario sea capaz de hacer lo que le
piden los desarrolladores.
12. ¿Qué son las pruebas beta?
Son pruebas de usuario que se hacen cuando el software se pone a disposición del usuario, puede
ser que el software se saque al mercado controlado o que sea una muestra gratuita. Se hace para que
el usuario experimente y detecte problemas.
13. ¿Qué son las pruebas de aceptación?
Son pruebas en las que el cliente prueba el sistema para decidir si está listo para ser aceptado y
desplegado en el entorno del cliente. Suelen ser pruebas para sistemas personalizados porque el
desarrollador va al entorno del cliente a instalar el software.
14. ¿Qué diferencia existe entre las pruebas de sistema y las de release?
Las pruebas de sistema las realiza el equipo de desarrollo y el objetivo es hacer un defect testing, es
decir, encontrar errores. En cambio, las pruebas de release son hechas por un equipo externo que
hace un validation testing, es decir, buscan verificar que el sistema cumpla con los requisitos y
funcione como se espera, no buscan errores.
15. ¿Qué diferencia existe entre las pruebas alpha y beta de usuario?
Durante las pruebas alpha, solo se prueban la funcionalidad y la usabilidad, mientras que durante las
pruebas beta, la usabilidad, la funcionalidad, la seguridad y la confiabilidad se prueban con la
misma profundidad.
En las pruebas Alpha se incluye a los desarrolladores, que trabajan con los usuarios en el sitio del
equipo de desarrollo. En cambio, las pruebas beta son hechas en el entorno del usuario, sin que el
desarrollador le pida que haga cosas específicas.
16. ¿Qué diferencia existe entre la generación de pruebas con las particiones de
equivalencia y los caminos base?
Las particiones de equivalencia es una caja negra y los caminos bases caja blanca.
17. ¿Pueden las pruebas garantizar la ausencia de errores?¿Por qué?
"Las pruebas pueden ser una forma muy efectiva de mostrar la presencia de errores, pero son
irremediablemente inadecuadas para mostrar su ausencia". - Dijkstra
Página 30
Descargar