Sie sind auf Seite 1von 7

Introducción a la Ingeniería de Software Segundo Parcial – 2010

• Cada pregunta múltiple opción contestada correctamente tiene un valor de 1,5 puntos. Esta parte consta de 20 preguntas, con
un total de 30 puntos.
• Los Ejercicios 21 a 23 tienen un valor de 30 puntos.

1. La Arquitectura de Software:
a. Define los subsistemas, interfaces y reglas de interacción entre estos
b. (a) y define la estructura del sistema, que consiste en las propiedades visibles internamente y
cómo se relacionan
c. (b) y depende fuertemente de los requerimientos funcionales y no funcionales
d. (c) y es fácil de modificar, una vez que el software ya fue construido

2. ¿Por qué es importante diseñar y documentar la Arquitectura de Software de manera explícita?


a. La arquitectura del sistema es generalmente la misma para sistemas con requerimientos
similares, pudiendo de esta manera ser reutilizada a gran escala
b. (a) e impulsa la comunicación entre los diferentes stakeholders, debido a que la presentación
de alto nivel del sistema puede utilizarse como punto de discusión
c. (b) y permite determinar desde etapas tempranas si es posible cumplir con los requerimientos
funcionales del sistema
d. (c) y los patrones de software son soluciones probadas a problemas de diseño, que resultan
aplicables solamente a sistemas en los cuales el problema que se plantea es el mismo que
plantea el patrón, y no requiere adaptación

3. ¿Qué conflicto surge al querer definir la arquitectura de un sistema que sea muy performante y
mantenible a la vez, y cómo se puede solucionar?
i. El uso de componentes de grano grueso mejora la performance, mientras que el uso de
componentes de grano fino mejora la mantenibilidad
ii. El uso de componentes de grano grueso mejora la mantenibilidad, mientras que el uso de
componentes de grano fino mejora la performance
iii. Una posible solución es utilizar diferentes estilos arquitectónicos para diferentes
componentes del sistema
iv. Ante esta situación, siempre conviene encontrar una solución arquitectónica en la que el
sistema sea más performante antes que mantenible
a. i y iii son correctas
b. ii y iv son correctas
c. i, iii y iv son correctas
d. ii y iii son correctas

4. Con respecto a los estilos arquitectónicos:


i. Una ventaja de Shared-Data es que ciertas actividades, como respaldos, seguridad, control de
acceso y recuperación, se encuentran centralizadas
ii. Una ventaja de Shared-Data es que cada subsistemas puede utilizar el modelo de datos que
mejor se adecúe a él
iii. En el modelo Pizarrón el consumidor no tiene que ir a buscar los datos de interés, mientras
que sí lo tiene que hacer en el Repositorio
iv. El modelo en Capas Jerárquicas facilita el mantenimiento, reutilización y portabilidad del
sistema
v. Con Tubos y Filtros el sistema se descompone según sus funcionalidades, donde los tubos
llevan a cabo las transformaciones, mientras que los filtros son los encargados de transferir el
flujo de datos
a. i, iv y v son correctas
b. ii, iii y v son correctas
c. i, iii y iv son correctas
d. Todas son correctas

Página 1
Introducción a la Ingeniería de Software Segundo Parcial – 2010

5. Con respecto a las Arquitecturas Distribuidas:


a. Un cliente fino ejecuta software de aplicación correspondiente a la capa de presentación, y
lógica de la aplicación correspondiente a la capa de procesamiento
b. El cliente grueso tiene la desventaja de que el procesamiento no queda distribuido,
sobrecargando al servidor
c. En una Institución Financiera con cientos de clientes y sucursales a lo largo del país, con
múltiples fuentes de datos volátiles, aplica utilizar un modelo Cliente-Servidor en 3 capas
d. Los browsers son un claro ejemplo de aplicación de un modelo Cliente-Servidor en 2 niveles,
con cliente grueso

6. Con respecto al diseño de un sistema:


i. Es una actividad creativa, que consiste en encontrar el diseño correcto que satisfaga los
requerimientos del sistema
ii. Pueden existir diferentes soluciones de diseño para el mismo sistema, el objetivo es encontrar
aquel que sea lo más simple posible, aunque no resulte muy eficiente
iii. El principio de modularidad consiste en considerar el comportamiento exterior de los
componentes, sin considerar los detalles internos de implementación
iv. El proceso de dividir y conquistar culmina cuando la complejidad y costo de seguir
particionando supera el beneficio de continuar dividiendo en piezas
v. Cumplir con el principio abierto-cerrado contribuye a la buena calidad de un diseño orientado
a objetos, cuyo objetivo es que las funcionalidades de un sistema sean fácilmente extensibles,
impactando en la menor cantidad de cambios posibles en el sistema

a. i, iv y v son correctas
b. ii, iii y v son correctas
c. iv y v son correctas
d. i, ii y iv son correctas

7. Con respecto a la V&V:


a. Uno de los objetivos es probar la ausencia de defectos, esto es, que el sistema no falla y está
libre de errores
b. Existen dos formas de detectar defectos: una es hacer que el software falle, la otra consiste en
probar formalmente que ya no existen más errores
c. La verificación se puede llevar a continuación de cualquier fase de desarrollo (análisis,
diseño, implementación), y consiste en evaluar si el sistema satisface las condiciones y
necesidades impuestas en un comienzo
d. La validación es llevada a cabo por el cliente, y su objetivo es comprobar que el sistema
cumple con los requerimientos funcionales y no funcionales del sistema

8. Respecto a los roles en la V&V:


a. Todas las pruebas del proceso de V&V son llevadas a cabo por los testers, debido a que el
desarrollador tiende a cometer los mismos errores al programar y al probarlo (“psicología de
prueba”)
b. Las pruebas unitarias y las de integración son llevadas a cabo por los desarrolladores, porque
son quienes conocen los requerimientos del sistema
c. Para evitar conflictos que puedan surgir entre los testers y desarrolladores, se recomienda
promover el trabajo es equipo, evaluando siempre al producto y nunca a la persona
d. Las pruebas de instalación se llevan a cabo en el ambiente de producción del sistema, previo
a la validación con el cliente

Página 2
Introducción a la Ingeniería de Software Segundo Parcial – 2010

9. Respecto a las pruebas unitarias:


i. El objetivo de las técnicas estáticas es analizar el producto (código) para comprobar su
correcto funcionamiento
ii. Si se utiliza una técnica de caja negra para verificar un software, entonces no es necesario
utilizar alguna de caja blanca ya que se estaría probando lo mismo varias veces
iii. Los casos se prueba sólo contribuyen a la detección de defectos, pero no a la localización de
las faltas
iv. El conjunto de Casos de Prueba Significativos contiene la mayor cantidad de casos de prueba
como sea posible, para de esta manera asegurar poder encontrar más defectos
v. Se considera que la prueba de unidad es más sencilla en sistemas OO debido a que los
métodos y objetos son más pequeños, a pesar de que las pruebas de integración son más
complejas

a. i y v son correctas
b. ii, iii y iv son correctas
c. iii, iv y v son correctas
d. i, iii y v son correctas

10. Respecto a las pruebas de integración:


a. Una de las desventajas de la estrategia por disponibilidad, es que resulta más complejo
identificar cuál es el origen de la falla, ya que se integran varios módulos a la vez
b. La estrategia Big Bang es recomendable para sistemas grandes, ya que se invierte menos
tiempo en realizar pruebas de integración por módulo
c. La estrategia Bottom-Up los módulos se van integrando a medida que están disponibles,
teniendo en cuenta siempre probar aquellos más críticos lo antes posible
d. Las pruebas no incrementales suelen ser más costosas que las incrementales ya que requieren
la implementación de una gran cantidad de drivers y stubs

11. Respecto a las pruebas de desempeño y el proceso de pruebas:


a. Las pruebas de estrés consisten en probar que el sistema no puede soportar una determinada
carga es un corto período de tiempo
b. (a) y en las pruebas de compatibilidad se intenta determinar que las interfaces no se
comportan de acuerdo a la especificación de requerimientos
c. A la hora de planificar las actividades de un proyecto de desarrollo, es mejor considerar más
tiempo y recursos para la fase de implementación y menos para la de verificación, ya que de
esta manera la cantidad de fallas que se encontrarán debería ser baja
d. (c) y es correcto suponer que cuánto más fallas se hayan encontrado hasta el momento, menor
será la probabilidad de continuar encontrando fallas a futuro

12. La siguiente jerarquía muestra una relación “usa” entre módulos. El módulo de “arriba” usa alguna
funcionalidad del módulo de “abajo”. La estrategia de integración es top-down. Además se sabe que el
módulo B es altamente crítico. El módulo A corresponde a una interfaz gráfica y se sabe este va a ser
el módulo con más pedidos de modificaciones para mejorar la interfaz. Elija la forma de trabajo más
adecuada según la estrategia de integración seleccionada, la alta criticidad del módulo B y la alta
probabilidad de cambios en el módulo A. Todos los módulos están prontos para ser testeados.

B C D

E F G

Página 3
Introducción a la Ingeniería de Software Segundo Parcial – 2010

a. Se testea el módulo B usando stubs de E y F y un driver de A. Luego se comienza con la


técnica top-down usando los módulos ya testeados y drivers en los casos necesarios.
b. Se testea el módulo A de forma independiente usando stubs de B, C y D. De esta manera
logro usar al módulo A para testear B adecuadamente; ya que A ya está testeado. Se testea el
módulo B usando stubs de E y F y el módulo A. Se sigue con la técnica top-down usando los
módulos ya testeados y drivers en los casos necesarios.
c. Se comienza testeando A usando stubs de C y D y el módulo B. De esta manera el módulo B
está bajo test desde el comienzo de la integración hasta el final de la misma, logrando un
mayor testing del mismo. Se sigue con la estrategia top-down siempre usando el módulo B y
nunca un stub del mismo.
d. Se testea el módulo B usando stubs de E y F y un driver de A. Luego se testea A usando stubs
de B, C y D. Debido a la disponibilidad de todos los módulos se continúa con una integración
usando la técnica big-bang.

13. Respecto a la liberación y mantenimiento del software:


a. La importancia de que la instalación del software sea simple, es debido al tiempo que
consume esta actividad en la primera puesta en producción, ya que el trabajo es mayor que en
otras liberaciones
b. Los sistemas legados son aquellos que se construyen de manera correcta desde la primera
liberación, y no requieren de cambios posteriores
c. Uno de las principales dificultades que surge con respecto al mantenimiento es la rotación de
personal, lo cual ocasiona que se invierta un gran esfuerzo en comprender el sistema antes de
poder comenzar a ejecutar los cambios
d. (c) y la importancia de contar con una documentación legible, correcta y completa para la
etapa de entrenamiento es debido a que contribuye en el soporte y solución de problemas

14. En el rejuvenecimiento del software:


a. El objetivo es intentar mejorar la calidad de un producto de software heredado
b. (a) y el objetivo de la ingeniería reversa es poder generar y/o actualizar la especificación y
diseño del software, a partir del código fuente
c. (b) y uno de los objetivos de la reestructura es transformar la arquitectura
d. (c) y la reingeniería consisten en aplicar primero una ingeniería directa, redocumentar, y
luego una ingeniería reversa

15. Con respecto al modelo de calidad de software del estándar la ISO/IEC 9126:
a. Presenta un marco conceptual que contribuye a la definición de los requisitos de calidad para
un producto de software dado
b. (a) y permite evaluar el cumplimiento o no de los requisitos de calidad durante todas las
etapas del desarrollo
c. (b) y la forma evaluación, métricas y niveles de puntuación se definen en cada organización
de manera independiente, de acuerdo a sus necesidades de información y medición
d. (c) y la característica “funcionalidad” establece un conjunto de atributos relacionados con
funciones que satisfacen necesidades explícitas o implícitas, y sus propiedades específicas

16. El análisis post-mortem de un proyecto de desarrollo de software:


a. Tiene por objetivo evaluar los productos, recursos y proceso de forma de identificar qué
anduvo bien, mal y por qué, para poder formular “lecciones aprendidas” y de esta forma
posibilitar el aprendizaje organizacional
b. (a) y en general se lleva a cabo justo antes de la fecha de liberación
c. (b) y en el caso de proyectos en fases, este análisis se puede llevar a cabo al finalizar cada
fase para aprovechar el aprendizaje en la fase siguiente
d. (a) y en general se lleva a cabo por lo menos pasados 3 meses de la fecha de liberación, para
contar con suficiente retroalimentación de la explotación del producto

Página 4
Introducción a la Ingeniería de Software Segundo Parcial – 2010

17. Con respecto al Modelo CMMI (Capability Maturity Model Integration):


a. Es un modelo para la mejora y evaluación de los procesos, aplicable sólo a los procesos del
ciclo de vida de desarrollo, pero no para la fase de mantenimiento
b. Consiste en un conjunto de actividades predefinidas para lograr una mejor calidad en los
productos de software
c. Define un estándar para mejorar la calidad de todo producto de software
d. Define cinco niveles de madurez por los cuales una organización va escalando, llegando a
que los procesos y métricas resultan cada vez más definidos, y obteniendo un software de
mayor calidad

18. Con respecto al proceso de calidad según Deming:


a. Las actividades de aseguramiento de la calidad son aquellas que se llevan a cabo durante la
ejecución de un determinado proceso, con el fin de evaluar el cumplimiento de los requisitos
de calidad definidos
b. El objetivo del Círculo de Deming es definir un conjunto de pasos a seguir para la
culminación exitosa de todo proceso de desarrollo de software
c. En la etapa “Actuar” del Círculo de Deming se evalúa si se cumplió con el plan y con los
objetivos planteados durante la planificación
d. En la etapa “Verificar” del Círculo de Deming se evalúa si se cumplió con el plan y con los
objetivos planteados durante la planificación

19. Con respecto a la Gestión de Configuración (SCM):


a. La configuración del Software son los elementos que componen la información producida
como parte de la etapa de implementación de todo proceso de desarrollo de software
b. (a) y su único objetivo es recuperar versiones antiguas
c. Su importancia radica en que permite controlar la evolución de todo producto de software,
administrar los requerimientos de cambio e implementarlos en forma consistente
d. (c) y en identificar los elementos de configuración, localizarlos, seleccionar la versión
apropiada, conocer su historia y el motivo de sus cambios

20. Dada la línea base “L” que contiene los elementos A, B, C y D:


i. Todos los elementos de configuración (A, B, C y D) fueron formalmente aprobados y
validados
ii. Sea A un elemento de tipo “Documentación-Requerimiento Funcional”, entonces los
cambios sobre este elemento no requieren aprobación formal, ya que fueron validados
tempranamente durante la etapa de análisis
iii. Se ejecutan cambios sobre los elementos A (A1) y C (C1), de los cuales A1 es aprobado y C1
es rechazado. Entonces la nueva línea base “L1”contiene los elementos A1, B, C1 y D
iv. Se ejecutan cambios sobre los elementos A (A1) y C (C1), y luego se ejecuta otro cambio
sobre A1 (A2), siendo todos estos cambios aprobados. Entonces la nueva línea base
“L2”contiene los elementos A1, A2, B, C1 y D
v. Se ejecutan cambios sobre los elementos A (A1) y C (C1), y luego A1 vuelve a cambiar
(A2), siendo todos los cambios aprobados. Entonces la nueva línea base “L2”contiene los
elementos A2, B, C1 y D

a. i, ii y iv son correctas
b. ii, iii y v son correctas
c. i y v son correctas
d. i, ii, iii y iv son correctas

Página 5
Introducción a la Ingeniería de Software Segundo Parcial – 2010

Ejercicio 21 (5 puntos)
En una organización de desarrollo se registra la dedicación a Desarrollo y Mantenimiento. El 7% se
destina a Desarrollo y el 93% a Mantenimiento. ¿Qué recomendaciones formularía a partir de esos datos?

Ejercicio 22 (10 puntos)

Caso de Uso “Comprar Madera”


Flujo Principal
1 – El cliente ingresa su usuario y su clave
2 – El sistema se comunica con el sistema central (envía usuario y clave ingresada) y despliega la
bienvenida al sistema
3 – El usuario elige la opción “Comprar madera”
4 – El sistema se comunica con el sistema central y este devuelve el precio por madera (cedro, roble)
5 – El usuario elige entre las maderas (cedro, roble).
6 – El sistema envía la información al sistema central y este devuelve el OK y el costo
7 – Fin CU

Flujos Alternativos
2A) (usuario, clave) inválidos – usuario reingresa
1- El sistema central envía mensaje “no ok” al sistema
2- El sistema despliega mensaje de error avisando del error al loguearse
3- El cliente ingresa la opción de continuar
4- Retorna al paso 1 del flujo principal

2B) (usuario, clave) inválidos – usuario deja el sistema


1- El cliente ingresa la opción de fin
2- Fin CU

2C, 4A, 6A) Sistema central caído 1


1- Fin CU

7A) Cliente compra más madera


1) Retorna al paso 5 del flujo principal

Se pide:
Parte a) Identificar todos los escenarios para testear según lo visto en el curso.
Parte b) Identificar todos los escenarios/condición que surgen de los escenarios de la parte a).

Página 6
Introducción a la Ingeniería de Software Segundo Parcial – 2010

Ejercicio 23 (15 puntos)

Dado el siguiente fragmento de código:

1 public Integer promedio(ArrayList<Integer> lista){


2 if (lista==null || lista.size()==0){
3 return null;
4 }
5 int prom = 0;
6 for(int index=0; index<lista.size(); index++){
7 prom = prom + lista.get(index).intValue();
8 }
9 prom = prom/lista.size();
10 return new Integer(prom);
11 }

Un camino es simple si es un camino ejecutable y no ejecuta dos veces una misma sentencia (a menos
que dicha sentencia sea una decisión {if, for, while, etc.}). El criterio de cubrimiento de caminos
simples se cumple cuando todos los caminos simples fueron ejecutados.

Parte a) Dibujar el grafo de flujo de control para el código presentado.


Parte b) Dibujar los caminos simples del grafo de la parte a).
Parte c) Brindar un caso de prueba que ejecute el camino más corto (en cantidad de aristas) de los
presentados en la parte b).
Parte d) Suponer que la sentencia 7 es ahora la siguiente:
prom = prom + lista.get(0).intValue();
Explique y justifique brevemente si cumplir con el criterio de cubrimiento de caminos simples asegura
que el defecto provoque una falla.

Página 7

Das könnte Ihnen auch gefallen