Pregunta 17 Segundo Parcial

Pregunta 17 Segundo Parcial

de Victoria Marcela Alonso Borges -
Número de respuestas: 18

Hola, que tal?

Escribo ya que las respuestas a esta pregunta estaban muy confusas

La d es correcta en general si no hay file locking y mismo  dentro de las diapos, da un ejemplo de cuando no hay mecanismo de acceso, uno podría sobreecribir el trabajo del otro.

La b es correcta si se asume que hay file locking.

Por como se presenta el tema, la opción a no seria la única posible respuesta correcta



En respuesta a Victoria Marcela Alonso Borges

Re: Pregunta 17 Segundo Parcial

de Guillermo Maximiliano Franco Sunes -
Buenas, coincido con lo planteado y me adhiero a la consulta.
En respuesta a Guillermo Maximiliano Franco Sunes

Re: Pregunta 17 Segundo Parcial

de Maria de las Nieves Freira -
Hola a todos.
Trataré de aclarar las respuestas a la pregunta 17, que decía así:

1. En un sistema de control de versiones centralizado
a) los usuarios deben copiar en su espacio de trabajo cada uno de los componentes que quieren modificar.
b) no se permite que dos usuarios copien el mismo componente y trabajen cada uno en una versión distinta de aquel.
c) el sistema crea siempre en el espacio de trabajo de cada usuario una copia del repositorio master del proyecto.
d) si dos usuarios descargan y trabajan sobre el mismo componente, cuando cada uno termina y sube el componente modificado al repositorio, el último en subirse puede sobrescribir la versión del otro.

Creo que no hay duda de que la opción a) es verdadera y que la opción c) es falsa.
En cuanto a la opción b), como dice en la diapositiva

cuando NO hay un mecanismo de acceso, si dos desarrolladores tratan de cambiar el mismo archivo al mismo tiempo, uno podría podría sobreescribir el trabajo del otro. Precisamente para evitar esto, los sistemas de control de versiones centralizados proporcionan dos mecanismos de acceso posibles: el de file-locking y el de version merging. En el primero, no hay posibilidad de trabajar de forma concurrente e independiente sobre el mismo archivo; en el segundo, sí.
 
Y Sommerville dice que «los sistemas de control de versiones centralizados y distribuidos permiten el desarrollo independiente de componentes compartidos, de distinta manera» (Sommerville [10.a ed.], 2016, p. 737). Y pasa a explicar cada una.
Por lo tanto, la opción b) es incorrecta, porque los sistemas centralizados sí permiten que dos o más usuarios copien el mismo componente en su espacio de trabajo y lo modifiquen.

En particular, en el ejemplo que da Sommerville, explica que, si Alice y Bob trabajan sobre un mismo componente, si Alice ingresa (hace check-in) su componente [al repositorio] primero, cuando Bob ingresa el suyo después, se crea una nueva versión, «de forma tal que los cambios de Alice no se sobreescriban» (Sommerville [10.a ed.], 2016, p. 737). En el mismo sentido aclara a continuación: «Si una o más personas están trabajando sobre un componente al mismo tiempo, cada una debe extraer [hacer el check-out] el componente desde el repositorio. Si se ha extraído un componente, el sistema de control de versiones alerta a otros usuarios que también quieran extraerlo que el componente ha sido extraído por otra persona. El sistema también asegurará que, cuando los componentes modificados se ingresen, a las diferentes versiones se les asigne un identificador de versión distinto y que se almacenen por separado» (Sommerville [10.a ed.], 2016, p. 737).
Por tanto, la opción d) también es falsa, porque si dos usuarios descargan y trabajan sobre el mismo componente (esto ya excluye el mecanismo de file-locking), cuando cada uno termina y sube el componente modificado al repositorio, el sistema le asigna al último en subirse un identificador de versión distinto y lo almacena por separado para evitar que sobreescriba la versión del otro.

Espero haber despejado las dudas. Quedo a disposición por cualquier consulta adicional.

Saludos cordiales,
María
En respuesta a Maria de las Nieves Freira

Re: Pregunta 17 Segundo Parcial

de Martin Aram Ghazarian Agemian -

Hola María, 

Muy clara la respuesta, alcaro porque para mi fue y sigue siendo ambiguo y sigo pensando que la D también es válida, aunque tengo un tema de interpretación que con tu aclaración me quedó claro que la D está mal.

Vos hablas de sobreescribir la misma versión, yo entendía que la versión del server (llamale la última versión para fijar ideas) podía sobreescribirse, de tal manera que si Usuario1 hace un checkin del componente C y Usuario2 luego hace un checkin del componente C => cuando Usuario 3 obtenga la última versión del server del componente C obtendrá la del Usuario2, la útlima, por eso "sobreescribe en el server la versión", pero no es que perdes la versión que subió el usuario1.

El usuario 2 tendría la opción de "mergear" su versión con la del 1 cuando hace el checkin ya que está haciendo un checkin de una versión que no es la última, y tendrías potencialmente un conflicto.

Si estoy de acuerdo que a nivel de versiones en el repositorio quedaría el historial completo con una trazabilidad en la que un usuario podría obtener la versión que "checkineo" el usuario 1 y también el del 2.

Entendí sobreescribir como dejar la "útlima versión" disponible en el servidor, por eso entiendo que interpreté mal y puse la D, aunque iba a dejar sin contestarla porque sé que la A también es correcta.

Saludos,

Martín

En respuesta a Martin Aram Ghazarian Agemian

Re: Pregunta 17 Segundo Parcial

de Martin Aram Ghazarian Agemian -
Osea, lo leo y quedo más en la duda todavía, porque hacer un merge no es sobreescribir?
entiendo que si la pregunta decía algo más explicito como "se generan nuevas versiones" o "se pueden obtener todas las versiones que se hicieron check in" => ok... ahí yo por lo menos no tenía dudas.
Pero usar sólo la palabra "sobreescribir" y entender que es en su versión original que no se "borra", porque en realidad en un MAIN mergeas y obtenes tu última versión "sobreescribiendo" con un merge... claqro que no perdes la trazabilidad ni el historial.

Sólo quería agregar eso, me queda claro como lo encararon con la explicación de Maria, leyendo sólo la pregunta me genera esta ambiguedad, y yo la verdad no iba a poner ninguna porque para mi estaba bien la A y la D, y me la jugué por la D ya que no se podía hacer preguntas en el parcial.
En respuesta a Martin Aram Ghazarian Agemian

Re: Pregunta 17 Segundo Parcial

de Victoria Marcela Alonso Borges -
Estoy de acuerdo con Martin y propongo que se tomen correctas ambas opciones ( o todas, ya que muchos por entrar en la duda no respondieron ninguna ) .
A su vez si fuera algo no ambiguo, la explicación a la pregunta no requeriría enormes párrafos.. Es algo muy rebuscado
En respuesta a Martin Aram Ghazarian Agemian

Re: Pregunta 17 Segundo Parcial

de Maria de las Nieves Freira -
Hola, Martín.

Gracias por tu aclaración, que me permite entender cuál fue tu dificultad con la pregunta, que en este caso no se trata de un problema conceptual, sino de la interpretación del término sobrescribir.

En efecto, estamos tomando el significado de sobrescribir como «escribir encima de algo ya escrito» (según la RAE); y eso es lo que pasaría al subir una copia del componente con el mismo número de versión y perder la versión anterior. Así es como lo maneja Sommerville.

Tú entendés sobrescribir por que quede una versión como última disponible en el servidor, dejando de lado los cambios de la versión anterior. Entiendo por qué lo planteás, ya que es una situación posible —aunque algunos sistemas de control de versiones centralizados directamente no lo permiten (CVS y Subversion exigen que el segundo desarrollador primero mergee los cambios y resuelva los conflictos (si existen) antes de permitirle comitear)—, pero es distinto a sobrescribir. El problema con esta interpretación es que estaríamos llamando sobrescribir a subir o generar una nueva versión (incluso por merge), pero en ninguna de estas opciones se «escribe por encima» de la versión que subió otro antes. Y, además, dejaría sin sentido todo lo que plantea Sommerville.
Por tanto, no hay cambios en la corrección de esta pregunta.
Saludos cordiales,
    María
En respuesta a Maria de las Nieves Freira

Re: Pregunta 17 Segundo Parcial

de Martin Aram Ghazarian Agemian -
Bárbaro María.
Tengo clara la definición de la rae de la palabra sobreescribir creo que desde la escuela o la jardinera.

Te agradezco nuevamente por aclararmela y por tomarte tu tiempo para esto.

Por otro lado, sigo pensando que el tema no es la palabra de la rae de sobreescribir sino que se sobreescribe,cuando uno hace un merge sobreescribe una versión y además se hace una copia de la misma. Teniendo trazabilidad completa de los cambios pidiendo acceder a otra, de hecho tfs hace un snapshots y hace una copia de la versión original y sobreescribe la del server, eso no es sobreescribir sino copiar y "pisar" otra versión para generar una nueva

Pero me queda claro que se prefiere hacer énfasis en lo que dice la rae y no en empatizar por una posible interpretación,ya que no se aclara que se sobreescribe la versión original a mi entender en la pregunta.
Saludos.
En respuesta a Martin Aram Ghazarian Agemian

Re: Pregunta 17 Segundo Parcial

de Martin Aram Ghazarian Agemian -
Maria,
Para cerrar el hilo,
Tal como hablamos me queda claro porque la opción D es inválida.
Disculpas si te sentiste ofendida por mi respuesta, como te comenté no es ni fue la intención.

Gracias por tomarte tu tiempo para explicarme e intentar entender mi perspectiva.

saludos,
En respuesta a Maria de las Nieves Freira

Re: Pregunta 17 Segundo Parcial

de Santiago Guerra Boschiero -
Buenas, coincido con Martín, me parece que mas allá de la explicación, la pregunta es ambigua. Ni en el material brindado por ustedes, ni en OpenFing se hace todo este análisis, entiendo que se tiene que leer el libro, pero son conceptos que ustedes tampoco nos dejaron claros. Saludos!