Está en la página 1de 9

Ingeniería del Software

PEC 1: Introducción a la Ingeniería del Software y la Orientación a Objetos


Preguntas del Módulo 1
Pregunta 1 (15% puntuación)
En los apuntes hemos visto tres métodos de desarrollo de software:
● Ciclo de vida clásico
● Ciclo de vida iterativo e incremental
● Desarrollo ágil
Haz una comparativa de los tres métodos en referencia a estos conceptos:
● Colaboración con el cliente
● Adaptación a los cambios
● Conocimiento de la solución
Comparativas
Ciclo de vida clásico – Colaboración con el cliente
En el ciclo de vida clásico no es posible ir colaborando con el cliente ya que se trabaja
en etapas al ser un ciclo de vida corto cada una de las etapas se ha planificado y cada
una sabe cuál es su trabajo.
Ciclo de vida clásico – Adaptación a los cambios
En ciclo de vida clásico es poco tolerante a los cambios ya que, si realizamos un cambio
este afectara a las siguientes etapas en el desarrollo, con lo cual el proyecto se verá
afectado lo podría producir retrasos u otros inconvenientes.
Ciclo de vida clásico – Concomiendo de la solución.
En el ciclo de vida clásico es posible conocer la solución ya que son proyectos de muy
poca duración en los cuales está claro que se va a hacer y como lo debemos hacer por
ejemplo si vamos a una cadena de montaje de coches sabemos que el objetivo es tener
un coche, pero para poder llegar al objetivo final es necesario que pase por las diferentes
líneas de montaje.
Ciclo de vida iterativo e incremental - Colaboración con el cliente
En el ciclo de vida incremental es posible la colaboración con el cliente ya nos puede
aportar ideas de como el piensa que será el proyecto a medida que avance se podrá ir
implementados cambios siempre estos cambios se tendrán que hacer cuando se termine
una etapa y no implique una gran modificación.

Ciclo de vida iterativo e incremental - Adaptación a los cambios


En el ciclo de vida incremental siempre se está en constante cambio a medida que
vamos pasando etapas es posible que se realice algún cambio que nos aporte alguna
solución a nuestro proyecto.
Ciclo de vida iterativo e incremental - Concomiendo de la solución.
En el ciclo de vida incremental no es posible conocer la solución hasta que no esté a
punto de finalizar el proyecto ya que es posible que en cada fase se produzca algún
cambio que no se tenía previsto al inicio del proyecto.
Desarrollo ágil - Colaboración con el cliente
En el ciclo de vida ágil facilitan la colaboración con el cliente y las respuestas al cambio
permitiendo cambios de planificación de las diferentes áreas, se puede dar prioridades
sin afectar a otras áreas significativamente.
Desarrollo ágil - Adaptación a los cambios
En el ciclo de vida ágil está en constante cambio y estos cambios se van a adaptando a
medida que el proyecto va avanzando.
Desarrollo ágil - Concomiendo de la solución.
No es posible conocer una solución ya que, al estar en constante cambio la solución no
se sabrá hasta que el proyecto esté terminado.

Pregunta 2 (20% puntuación)


Según el Project Management Institute (PMI) las actividades que se llevan a cabo en un
proyecto se pueden clasificar en función del punto de vista del ciclo de vida del
proyecto. De este modo,
aparecen actividades de:
● Iniciación
● Planificación
● Ejecución
● Seguimiento y control
● Cierre
Analiza las siguientes tareas que se llevan a cabo en un proyecto, e indica a cuál de las
actividades anteriores pertenece cada una:
1. Definir el marco en el que se basará la implementación de la solución.
2. Preparar un juego de pruebas de datos para usar en el ciclo de pruebas.
3. Definir el conjunto de requisitos que se desarrollará en cada iteración.
4. Implementar las tareas.
5. Compilar las lecciones aprendidas.
6. Definir las personas que formarán parte del proyecto.
7. Entrevistar a los usuarios del futuro producto para recoger los requisitos.
8. Definir el calendario de entregas parciales y entrega final.
9. Realizar las reuniones de presentación de los resultados de cada iteración.
10. Calcular la desviación del proyecto
● Iniciación
Definir el marco en el que se basará la implementación de la solución.
Definir el conjunto de requisitos que se desarrollará en cada iteración.
Definir las personas que formarán parte del proyecto.
Entrevistar a los usuarios del futuro producto para recoger los requisitos.

● Planificación
Definir el calendario de entregas parciales y entrega final.
Realizar las reuniones de presentación de los resultados de cada iteración.

● Ejecución
Implementar las tareas.
Compilar las lecciones aprendidas.
Calcular la desviación del proyecto

● Seguimiento y control
Preparar un juego de pruebas de datos para usar en el ciclo de pruebas.
● Cierre

Pregunta 3 (15% puntuación)


Una de las fases del desarrollo del software que tiene mucho peso en todo el ciclo de
desarrollo de software es la fase de construcción y pruebas, y en concreto, la gestión de
la configuración y los cambios.
En esta fase aparecen algunos conceptos que hay que conocer. Haz una descripción
breve de los conceptos que aparecen a continuación (si es necesario, puedes buscarlos
para tener más información). Debes describir cada concepto brevemente, en dos o tres
líneas.
● Sistema de control de versiones
Un sistema de control de versiones es donde podemos ir registrando todos los cambios
hechos en uno o más proyectos, guardando así versiones del proyecto a medida que
vamos desarrollando o cuando hemos acabado con el proyecto y necesitaríamos hacer
alguna mejora.
● Git
Es un software para controlar las versiones diseñado por Linus Torvalds pensado para la
eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando se
tiene un gran número de archivos de código fuente sirve para llevar un control que se
han hecho y cuando, permite deshacer cambios al proyecto, devolver versiones, gestiona
el trabajo de grupos.
● Commit
Es la confirmación de un conjunto de cambios provisionales de forma permanente lo
que implica que estos cambios serán visibles para todos los usuarios.
● Continuous integration
Consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible
para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y
ejecución de pruebas de todo un proyecto, el proceso suele ser cada cierto tiempo de
horas.
● Continuous delivery
Es una práctica de desarrollo de software mediante la cual se preparan automáticamente
los cambios en el código y se entregan a la fase de producción. Se utiliza para el
desarrollo de aplicaciones modernas.
● Semantic Versioning
Es la forma por la cual podemos identificar la versión de nuestro software usando un
patrón específico y estándar, para que cualquiera que se interese en nuestro software y
vea el historial de versiones vea cuánto se ha mejorado a través de cada una de las
actualizaciones.

● Alpha and Beta versions


- Versión Alpha
Es la primera versión del programa en la cual los desarrolladores generalmente prueban
el software utilizando técnicas de caja blanca. Luego, otro equipo de pruebas realiza una
validación adicional mediante técnicas de caja negra o caja gris.
- Versión Beta
Es la segunda versión que tenemos del programa generalmente comienza cuando el
software está completo, pero es probable que contenga una serie de errores conocidos o
desconocidos. El programa generalmente tendrá muchos más errores que el software
completado, la velocidad o los problemas de rendimiento, y aún puede causar bloqueos
o pérdida de datos. 
● Release
Es cuando lanzamos la primera versión del software estable ya terminado y listo para
ser entregado, donde las copias pueden estar firmadas digitalmente lo que a los usuarios
les permite verificar la integridad y la autenticidad del software adquirido.
● Release candidate
Es una versión Beta que después de varias pruebas se ha decidido que está lista para ser
lanzada ya que los errores que pueda tener no son importantes, las características del
software han sido diseñadas, codificadas, probadas a través de ciclos de pruebas en los
cuales con se han producidos errores importantes.
● Deployment
El despliegue nos indica que el software una vez terminado, tenemos que instalar,
configurar, realizar pruebas esto dependerá del tipo de hardware se va a utilizar la
compatibilidad y los posibles fallos que nos podamos encontrar.

Preguntas del Módulo 2


Pregunta 4 (10% puntuación)
Unos de los conceptos que hemos visto en este módulo son los siguientes (apartado
2.3):
● Atributo
● Asociación
● Clase asociativa
Tenemos un modelo con dos clases de objetos: la clase Persona y la clase Libro
electrónico.
Indica por cada uno de los requisitos que se listan abajo, como modelarías la
información que se solicita: como un atributo, como una asociación o como una clase
asociativa. Indica, también, las clases del modelo de dos clases que hemos descrito
(Persona y Libro electrónico) que se ven afectadas.
- Una persona adquiere un libro electrónico.
- Un libro electrónico ocupa 200 kb.
- Una persona ha puntuado el libro electrónico con una nota de 7 sobre 10.
- Una persona ha descargado 10 libros electrónicos.
- Un libro electrónico pertenece a la misma temática que otro libro electrónico.
Compra

Persona Libro electrónico


Nombre Titulo
Id Usuario Temática
Contraseña Tamaño
Correo Puntuación
Numero de
Descargas

Tarjeta de Crédito
Número De tarjeta
Fecha caducidad
Contraseña

Pregunta 5 (10% puntuación)


Supón un sistema orientado a objetos con una clase abstracta Persona que tiene una
subclase concreta Agente. Supón que la clase Persona tiene el atributo email y que la
clase Agente tiene el atributo dirección. Tenemos también una clase Comercio con una
operación op1 que recibe una instancia a1 de tipo Agente:
1. Indica las visibilidades que puede tener el atributo dirección si queremos que no sea
accesible desde op1?
▢ Pública ▢ Protegida ▢ Privada
Queremos crear una operación enviarMailAAgente que, como su nombre indica, envía
un mensaje al Agente destinatario pasado como parámetro a1.
2. ¿Si queremos que la operación esté en la clase Comercio, indica las visibilidades que
puede tener el atributo email de la clase Persona?
▢ Pública ▢ Protegida ▢ Privada
3. ¿Si queremos que la operación esté en la clase Agente, indica las visibilidades que
puede tener el atributo email de la clase Persona?
▢ Pública ▢ Protegida ▢ Privada
4. ¿Si queremos que la operación esté en la clase Persona, indica las visibilidades que
puede tener el atributo email si queremos que sea accesible a la clase Persona?
▢ Pública ▢ Protegida ▢ Privada

Pregunta 6 (30% puntuación)


Supón que queremos modelar, utilizando orientación a objetos, un sistema de gestión
muy básico de ofertas de trabajo y de candidatos.
Una oferta tiene un título, una descripción, una fecha de publicación y una fecha de
inicio de la oferta. Las ofertas pueden ser de tipo temporal (una oferta de trabajo para un
puesto temporal), para las que se deberá saber la fecha de finalización y el salario
ofertado; o de tipo indefinido (una oferta para un contrato indefinido), para las que hay
que saber el salario ofertado, que puede tomar un valor mínimo y/o un valor máximo.
Los candidatos tienen nombre, apellidos y una fecha de nacimiento. Un candidato puede
tener al menos un currículum y como máximo tres. De los currículums sabemos el
título, la fecha de creación, la fecha de (la última) modificación y el texto del
currículum (que por ahora podemos considerar que es sólo una cadena de texto).
Cuando un candidato se inscribe a una oferta de trabajo, lo hace en una fecha concreta e
incluye un currículum de los disponibles para presentar conjuntamente con la
inscripción.
a. (15%) Haz una lista de todas las clases que puedas identificar. Para cada clase, indica
si es abstracta o no y, en caso de que sea una subclase, de qué otra clase lo es. Además,
para cada clase, haz una lista de sus atributos. Para aquellos que sean opcionales y/o
multivaluados, indícalo al lado de su nombre.
b. (15%) Haz una lista de todas las asociaciones y clases asociativas que identifiques.
Para cada asociación, utiliza la siguiente plantilla sustituyendo las palabras entre
paréntesis por lo que corresponda (y eliminando los paréntesis): ○
(nombreAssociación): Asocia cada instancia de (Clase 1) con (ninguna o una / una y
sólo una / cualquier número de) instancia/as de (Clase 2) y cada instancia de (Clase 2)
con (ninguna o una / una y sólo una / cualquier número de) instancia/as de (Clase1).
Clase Asociativa Inscribe Oferta
Fecha Inscripción
Currículo
Oferta Trabajo
Candidato

Clase Abstracta Clase


Oferta Trabajo Candidatos
Atributos
Titulo Nombre

Descripción Apellido
Oferta Indefinido
Oferta Temporal Fecha de Nacimiento
Fecha Publicación Salario Ofertado
Fecha de Finalización Curriculums
Fecha Inicio Valor Máximo
Salario Ofertado
Valor Mínimo
Atributos

Subclase Clase
Curriculum
Titulo
Fecha de Creación
Fecha de Modificación
Texto
Numero de curriculum
Atributos
Atributo Multivaluado

También podría gustarte