Ciclo de vida del software

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál es el propósito principal del ciclo de vida del software?

  • Desplegar programas sin comprobación previa.
  • Crear programas de manera ineficiente.
  • Desarrollar programas de mejor calidad de manera más eficiente. (correct)
  • Ignorar los requerimientos del usuario.

¿Qué aspecto se debe documentar en un proyecto de software, independientemente de si es desarrollado por una persona o un equipo?

  • Todos los procesos siguiendo una estructura y normas establecidas. (correct)
  • Solo el código fuente.
  • Ningún aspecto, ya que la documentación es opcional.
  • Únicamente la interfaz de usuario.

¿Cuál es una de las razones para documentar un proyecto de software?

  • Dificultar la planificación y realización de cambios.
  • Asegurar que el nuevo equipo se adapte más fácilmente al proyecto. (correct)
  • Limitar la autonomía de los usuarios del software.
  • Aumentar los malentendidos con el cliente.

¿Qué aspecto es importante incluir en la documentación para facilitar su entendimiento y uso?

<p>Ejemplos contextualizados que aclaren explicaciones e indicaciones. (B)</p> Signup and view all the answers

¿Por qué es importante indicar claramente la fecha de edición y la versión del programa en la documentación?

<p>Para evitar confusiones derivadas de usar una documentación obsoleta o incorrecta. (B)</p> Signup and view all the answers

¿Cuál es una de las ventajas de usar un sistema de control de versiones en el desarrollo de software?

<p>Registrar los cambios, creación o eliminación de archivos. (C)</p> Signup and view all the answers

En el contexto del control de versiones, ¿qué significa 'trazabilidad'?

<p>La capacidad de rastrear los cambios realizados en el código a lo largo del tiempo. (D)</p> Signup and view all the answers

¿Qué es 'man' en sistemas operativos como GNU/Linux?

<p>Una aplicación de línea de comandos para acceder a manuales de referencia. (A)</p> Signup and view all the answers

Si quieres obtener información sobre la sección 5 del manual de 'passwd', ¿qué comando usarías?

<p>$ man 5 passwd (C)</p> Signup and view all the answers

¿Qué función tiene la sección 'SINOPSIS' en las páginas del manual de 'man'?

<p>Describir la sintaxis del comando. (A)</p> Signup and view all the answers

¿Cuál es el propósito principal de MediaWiki?

<p>Desarrollar la documentación de un proyecto de software de manera colaborativa y centralizada. (D)</p> Signup and view all the answers

¿Cuál es el formato utilizado para escribir las páginas en MediaWiki?

<p>Wikitexto, un lenguaje de marcas basado en HTML. (B)</p> Signup and view all the answers

En MediaWiki, ¿cómo se nombran las páginas que no pertenecen al espacio de nombres principal?

<p>Prefijo del espacio:Tema de la página. (C)</p> Signup and view all the answers

¿Cuál es el propósito de las plantillas en MediaWiki?

<p>Ser insertadas en otras páginas de la wiki. (A)</p> Signup and view all the answers

¿Qué diferencia hay entre incluir una plantilla 'por referencia' en MediaWiki frente a incluirla 'por sustitución'?

<p>Por referencia, la plantilla se mantiene dinámica; por sustitución, no. (C)</p> Signup and view all the answers

¿Cuál es el propósito principal de Javadoc?

<p>Generar documentación técnica en formato HTML a partir de archivos Java comentados. (D)</p> Signup and view all the answers

¿Cómo deben estar escritos los comentarios para que Javadoc los tome en cuenta?

<p>En un formato específico, comenzando con <code>/**</code> y terminando con <code>*/</code>. (C)</p> Signup and view all the answers

¿Qué etiqueta se usa en Javadoc para indicar el autor de una clase o interfaz?

<p>@author (B)</p> Signup and view all the answers

¿En el contexto de los sistemas de control de versiones, qué es un 'repositorio'?

<p>Un espacio de almacenamiento donde se guardan los archivos con el código fuente, metadatos e información asociada. (A)</p> Signup and view all the answers

¿Qué ocurre si dos programadores modifican el mismo archivo del repositorio y tratan de subir sus cambios?

<p>Se produce un conflicto que debe ser resuelto por los usuarios. (C)</p> Signup and view all the answers

En el contexto de control de versiones, ¿qué representa una 'rama'?

<p>Un flujo de trabajo paralelo a partir del desarrollo principal. (D)</p> Signup and view all the answers

¿Cuál de las siguientes NO es una herramienta de control de versiones?

<p>MediaWiki. (A)</p> Signup and view all the answers

¿Qué ventajas ofrece el modelo de ramificación flexible de Git?

<p>Tener ramas dedicadas a diferentes tareas y fusionarlas o eliminarlas cuando sea necesario. (C)</p> Signup and view all the answers

En Git, ¿dónde se almacenan los archivos para modificarlos?

<p>En el directorio de trabajo. (A)</p> Signup and view all the answers

¿Qué función cumple el 'área de preparación' (staging area) en Git?

<p>Almacena los cambios que se realizarán sobre el repositorio en la próxima confirmación. (B)</p> Signup and view all the answers

Si un archivo ha sido modificado en el directorio de trabajo, pero aún no se ha añadido al área de preparación, ¿en qué estado se encuentra?

<p>Modificado (modified). (D)</p> Signup and view all the answers

¿Qué comando de Git se utiliza para añadir el contenido de un archivo al área de preparación?

<p>add (A)</p> Signup and view all the answers

¿Qué comando de Git muestra el estado del área de preparación, indicando archivos y carpetas con diferencias?

<p>status (D)</p> Signup and view all the answers

¿Cuál es el propósito principal de GitHub?

<p>Ser una plataforma líder en desarrollo colaborativo de software. (B)</p> Signup and view all the answers

Para los estudiantes de informática, ¿cuál es uno de los beneficios clave de usar GitHub?

<p>Construir un portafolio digital para mostrar a posibles empleadores. (B)</p> Signup and view all the answers

¿Qué ofrecen las cuentas Pro de GitHub?

<p>Repositorios privados ilimitados e integración con herramientas de desarrollo. (D)</p> Signup and view all the answers

¿Qué significa CI/CD en el contexto de GitHub?

<p>Integración continua/Entrega continua. (A)</p> Signup and view all the answers

En el contexto de CI/CD, ¿qué implica el concepto de 'Integración Continua' (CI)?

<p>Probar e integrar los cambios de código automáticamente en un repositorio compartido. (D)</p> Signup and view all the answers

¿Qué herramienta permite automatizar la detección e indetificar conflictos y realizar la pruebas de funcionalidad por cada cambio en un repositorio en Github?

<p>Github Actions (C)</p> Signup and view all the answers

Signup and view all the answers

Flashcards

¿Qué es el ciclo de vida del software?

Serie de procesos que determinan el desarrollo, mantenimiento y uso del software.

¿Qué es un documento de requisitos?

Documento consensuado con el cliente que define los requisitos del proyecto para evitar malentendidos.

¿Qué es la documentación homogénea?

Tener un estándar y plantillas para asegurar una documentación consistente.

¿Por qué incluir la versión en la documentación?

Indicar la fecha de edición y la versión del programa para evitar confusiones.

Signup and view all the flashcards

¿Qué son las modificaciones del software?

Corrección de errores, mejoras o ampliaciones para adaptar el programa a las nuevas necesidades.

Signup and view all the flashcards

¿Qué es la reversión de cambios?

Poder volver a estados anteriores del proyecto rápidamente, ya que los cambios quedan registrados

Signup and view all the flashcards

¿Qué es 'man' en sistemas operativos?

Aplicación de línea de comandos para acceder a manuales de referencia en sistemas operativos.

Signup and view all the flashcards

¿Qué hace 'man passwd'?

Muestra la ayuda de un comando específico en la sección 1 de los manuales.

Signup and view all the flashcards

¿Qué es MediaWiki?

Aplicacion web colaborativa y centralizada para generar documentación de un proyecto Software.

Signup and view all the flashcards

¿Quién puede editar en MediaWiki?

El contenido de un sitio implementado con MediaWiki puede mantenerlo cualquier usuario

Signup and view all the flashcards

¿Qué es Wikitexto?

Un lenguaje de marcas basado en HTML para escribir páginas en wikis.

Signup and view all the flashcards

¿Qué es Javadoc?

Herramienta de Oracle para generar documentación técnica en formato HTML a partir de archivos de código Java.

Signup and view all the flashcards

¿Qué es el área de preparación en Git?

área intermedia donde se almacenan los cambios que se realizarán sobre el repositorio la próxima vez que se lance una orden de confirmación

Signup and view all the flashcards

¿Qué es el Directorio de Git (Git directory) o repositorio?

Contiene el proyecto, sus metadatos y el registro histórico de los cambios.

Signup and view all the flashcards

¿Qué es un archivo no modificado en Git?

Un archivo que no ha sufrido ningún cambio después de obtenerlo del repositorio.

Signup and view all the flashcards

¿Qué es un archivo modificado en Git?

Archivo que ha sufrido cambios pero aún no se ha preparado para la confirmación.

Signup and view all the flashcards

¿Qué hace el comando 'branch' en Git?

Enumera, crea o elimina ramas.

Signup and view all the flashcards

¿Qué hace el comando 'checkout' en Git?

Cambia de rama o restaura archivos a su versión del repositorio.

Signup and view all the flashcards

¿Qué hace el comando 'fetch' en Git?

Descarga objetos y referencias de otro repositorio.

Signup and view all the flashcards

¿Qué es CD(Continuous Delivery) en el modelo de Github?

Publica nuevas versiones del producto tan pronto como están disponibles, acorta los tiempos del desarrollo y implementación

Signup and view all the flashcards

¿Qué es una cuenta Pro de GitHub?

Permite a desarrolladores individuales y equipos gestionar los proyectos de manera centralizada, con repositorios privados ilimitados y gran integracion con el proyecto

Signup and view all the flashcards

¿Que beneficios otorga Github?

Permite la colaboración, el versionado y la gestion de los proyectos.

Signup and view all the flashcards

Study Notes

Introducción

  • Desde la concepción hasta el desuso, el software pasa por procesos que determinan su desarrollo, mantenimiento y uso
  • Este conjunto de procesos se denomina ciclo de vida del software, mejorando la calidad y eficiencia de los programas
  • Los modelos de ciclo de vida del software (cascada, espiral, prototipos) comparten aspectos clave, la recolección y análisis de requerimientos del usuario, la especificación de lo que debe hacer el programa, la implementación o desarrollo, la comprobación del buen funcionamiento, el despliegue y explotación en un entorno real, y el mantenimiento para adaptarse o corregir errores
  • Cada aspecto genera documentación relevante, como manuales de instalación, usuario o diseño interno
  • En las fases de implementación y mantenimiento, existen copias del programa, requiriendo un control de versiones para evitar la pérdida de cambios recientes o el uso de versiones antiguas
  • Tanto la documentación como el control de versiones son críticos en el ciclo de vida del software

Documentación del Software

  • Es esencial establecer procedimientos de documentación en proyectos de software, independientemente del tamaño o complejidad
  • Un proyecto con documentación accesible y de calidad evita problemas
  • Un documento consensuado con el cliente sobre los requerimientos evita malentendidos sobre el cumplimiento de las funciones pactadas en el producto final
  • Facilita la planificación y ejecución de modificaciones (ej. debido a cambios en la moneda de un país) al tener documentación interna para los desarrolladores
  • Facilita la incorporación de un nuevo equipo si parte del equipo abandona el proyecto
  • Un buen manual de usuario o de administración incrementa la autonomía del usuario, disminuye consultas y aumenta la satisfacción
  • La falta de documentación suele deberse a plazos de entrega ajustados por mala planificación, falta de cultura empresarial y la percepción de los desarrolladores de que es un trabajo tedioso
  • Al redactar documentación se debe tener en cuenta que sea entendible para el colectivo al que va dirigida, estructurar bien el documento incluyendo un índice para encontrar la informacion rápido, definir un estandar para conseguir homogeneidad y escribir una buena introducción que permita al lector saber que va a encontrar en ese documento
  • Es muy importante incluir ejemplos contextualizados que aclaren explicaciones, acompañar el texto de esquemas y capturas de pantalla con instrucciones precisas, usar un formato estándar de archivo fácil de mantener e indicar la fecha de edición de la documentación y la versión del programa relacionada, documentar lo necesario y revisar la vigencia de los documentos
  • Es fundamental que la documentación sea accesible y permita la participación de los usuarios en su actualización

Control de Versiones

  • Durante la vida de un programa, se realizan modificaciones para correcciones de errores, mejoras o adaptaciones a nuevas necesidades o clientes
  • Controlar las modificaciones puede ser complejo, especialmente en aplicaciones de gran tamaño con varios desarrolladores
  • Es buena práctica crear copias antes de modificar archivos, para revertir si es necesario
  • El control de cambios es imprescindible para el desarrollo ordenado de un proyecto, saber en qué versión se trabaja y qué desarrollador modificó cada versión, ya que ayuda a volver a versiones anteriores si es necesario
  • Un sistema de control de versiones facilita volver a estados anteriores del proyecto, favorece la concentración de los equipos y permite la trazabilidad de los cambios

Instalación de Git y prueba de funcionamiento

  • Instalación, creación de un repositorio y pruebas de funcionamiento en una máquina real o virtual como Ubuntu Desktop
  • Los pasos son: instalar Git y configurar usuario/email, crear subdirectorio "proyecto", y crear un repositorio dentro, usando status para ver su información
  • Creación de un archivo, moverlo del directorio al área de ejecución, y al repositorio.
  • Primero, instalar Git y configurar usuario y correo:
    admin01@cliente:~$ sudo apt install git
    admin01@cliente:~$ git config --global user.name pol
    admin01@cliente:~$ git config --global user.email [email protected]
    
  • Si el nombre tiene espacios, encerrar entre comillas dobles el nombre:
    git config --global user.name “Pol Green”
    
  • Segundo, asegurar estar en el directorio de usuario antes de crear el directorio:
    admin01@cliente:~$ cd ~
    admin01@cliente:~$ mkdir proyecto
    
  • Tercero, se crean repositorios dentro del directorio del proyecto:
    admin01@cliente:~$ cd proyecto
    admin01@cliente:~/proyecto$ git init
    
  • Inicializa un repositorio Git vacío en /home/admin01/proyecto/.git/
  • Ejecutar ls -a:
    admin01@cliente:~/proyecto$ ls -a
    .git
    
  • Usar status para ver la información:
    admin01@cliente:~/proyecto$ git status
    
  • Aparece que estás en la rama master y que no se ha hecho ningún commit
  • Cuarto, para este ejemplo, se ha creado el index.html:
    admin01@cliente:~/proyectos nano index.html
    
  • Al consultar el estado (git status) indica que index.html no se está rastreando
    admin01@cliente:~/proyecto$ git status
    
  • Para pasar el archivo a seguimiento ("área de preparación") usar:
    admin01@cliente:~/proyecto$ git add index.html
    
  • Consultando el estado (git status) de nuevo, figura ahora
    admin01@cliente:~/proyecto$ git status
    
  • Para incluir el archivo en el repositorio usar commit -m <miv1> indicando la versión
    admin01@cliente:~/proyecto$ git commit -m v1
    
  • Para consultar el histórico de la versión, ejecutar log:
    admin01@cliente:~/proyecto$ git log
    

Documentación de Software

  • La unidad enfatiza la utilidad, baja frecuencia y consideraciones clave al redactar la documentación en el software
  • En este punto, la sección se centra en las herramientas de documentación internas y externas más usadas

Man

  • Es la aplicación de línea de comandos más usada para acceder a manuales de referencia en sistemas UNIX, BSD, MAC OS o GNU/Linux

  • Los manuales de referencia se clasifican del 1 al 8

    • Programas ejecutables y órdenes del Shell
    • Llamadas del sistema (funciones del núcleo)
  • Llamadas a Biblioteca (funciones de biblioteca)

  • Archivos especiales, normalmente de configuración

  • Formatos de archivo y convenios

  • Juegos

  • Miscelánea (macros y convenciones)

  • Órdenes de administracion del sistema (normalmente solo para root)

  • Al usar Man, busca ayuda en orden en las secciones, no busca en más secciones a no ser que se indique manualmente.

  • La sintaxis básica de esta aplicación es:

    man [<opciones de man>] [[<sección>] <página>]
    
  • Comandos y explicación

    • $man password - Muestra la ayuda sobre el comando password de la sección 1 -$man 5 password - Muestra el formato del archivo /etc/password de la seccion 5
    • $man -a password - Muestra sucesivamente la ayuda localizada en cada una de las secciones que coinciden con password -$man -f password - Imprime las descripciones cortas de password encontradas en todas las secciones
    • $man -k password - imprime las descripciones cortas de todas las entradas que coincidan con "password" independientemente de la sección
    • $man man - Muestra la ayuda sobre el comando man, de la sección 1
  • Las páginas del manual se almacenan en /etc/manpath.config conteniendo las secciones nombre, sinopsis, configuración, descripción, opciones, estado de salida.

  • Muestra la sintaxis del propio man

    man [opciones de man] [[sección] página...]
    man -k [opciones de apropos] regexp...
    man -K [opciones de man] [sección] term...
    man -f [whatis opciones] página...
    man  -1 [opciones de man] fichero...
    man -w|-W [opciones de man] página...
    
  • Puede usarse cualquiera de las lineas, el texto en negrita debe teclearse, corchetes indican que su contenido es opcional, el caracter "|" separa el argumento que tenga, y el texto que se subrayada indica que tiene que substituirse en cada argumento.

  • Como alternativa a man están info, servir HTML a través de HTTP o acceder a una página en Internet.

MediaWiki

  • Es una aplicación web que ofrece una wiki para desarrollar la documentación de un proyecto de software colaborativa y centralizada
  • MediaWiki es una plataforma libre de código abierto que permite tener una documentación multilenguaje, actualizable y de confianza
  • El contenido es mantenido por cualquier usuario o solo los permitidos en la política de grupos y usuarios
  • Cuando un contenido se actualiza, guarda el estado anterior
  • Almacena información en una base de datos, y el contenido multimedia en el sistema de archivos
  • Se muestra la información al usuario la información, el contenido multimedia y el de la base de datos
  • Se alojan las páginas y se agrupan por tipo dentro de los espacios de nombre y para identificar la pagina Prefijo del espacio
  • Las páginas se escriben en formato Wixtext
  • Tiene un formato WYSIWYG
  • Formato y explicación
    • == Título 1 ==, === Título 2 ===, ==== Título 3 ====, ===== Título 4 ===== - Encabezados de diferentes niveles
    • ''Texto'' - Texto en cursiva
    • '''Texto''' - Texto en negrita
    • '''''Texto''''' - Texto en negrita cursiva
    • [[Página]] - Enlace a una página interna, es decir, de la misma wiki
    • [[Página|Título]] - Enlace con nombre alternativo a una página interna
    • URL - Enlace externo
    • [URL Título] - Enlace externo con nombre alternativo
    • * Texto, ** Texto - Elementos de una lista no numerada
  • # Texto, ## Texto - Elementos de una lista numerada
  • :Texto, ::Texto - Párrafos sangrado
  • ---- - Línea horizontal
  • ~~~ - Firma con enlace
  • ~~~~ - Firma con fecha
  • [[Image:imagen]] - Inserta una imagen
  • [[Image:imagen|thumb]]- Inserta una miniatura
  • {{subst:Plantilla}} - Sustitución
  • {{Plantilla}} - Por referencia
  • Adicional a los formatos propios del wikitexto es posible utilizar algunas etiquetas HTML
  • Las plantillas son un tipo especial de páginas insertadas de dos maneras:
    • Por substitución: Se hace una copia y se de desvincula, la informacion de la pagina no varía
    • Por referencia: Se incluye dinámicamente, cada vez que se accede
  • Se añaden los parámentros de nombre y valor con la sintaxis
    {{Plantilla|parámetro1=valor1|parámetro2=valor2|parámetro3=valor3…}}
    

Javadoc

  • Es una herramienta de Oracle para generar documentación técnica
  • Normalmente en formato HTML
  • A partir de archivos escritos en lenguaje Java
  • Los comentarios tiene que estar justo en la declaración de una clase
  • Los comentarios tienen que estar escritos en un orden establecido
    • El comentario empreza con una linea delimitadora, a resto de lineas del comentarios empieza con *
    • EL comentario tiene un bloque que contiene la descripción del elemento al que precede, el comentario que contiene la descripción al que precede tiene una descripcion corta u otra mas larga
    • Además, tiene un segundo bloque, separado del anterior con una linea que contiene un solo *
  • Las tablas pueden ser:
    • @author, que indica el autor de las clases e interfaces
    • @version, que indica la versión de las clases y interfaces
    • @param, que indica el nombre y la descripción de los parámetros, en orden del método o constructor
    • @return, que describe le valor que devuleve el mñetodo
    • @exception, que indica el nombre de una excepción
    • @throws, que indica el nombre de una excepción que se puede lanzar en un método
    • @see, que aconseja consultar alghun otro recurso
    • @deprecated, que indica que un elemento no deberia usarse
  • Para generar las documentaciones con el comando javadoc o con una herramienta IDE ( Integrated Development Environment)

Integración de Git con GitHub

  • Introducción
  • Crear un repositorio local y despues de haber practicado con los comandos básicos para tener un control de versiones cada vez que se cambia algo
  • Publicar ese repositorio
  • Crear una cuenta de usuario en el repositorio
  • Claves de resolución
    • Verificar que tu repositorio git que has utilizado en las actividades anteriores esta en funcionamiento
    • Crear una cuenta de usuario Github y crear un repositorio nuevo
    • Crear un token de acceso personal
    • Hacer Push desde el repositorio local al de GitHub
    • Utilizar una segunda maquina con un segundo usuario para clonar el repositorio de GitHub llamado proyecto y trabajarlo de forma local
  • Se utiliza la misma maquina virtual Ubuntu Desktop para extender este caso práctico
  • Para las soluciones, verificar que Git funciona correctamente y lanzar el comando status debes devolverte algo similar a esto:
    admin01@cliente:~/proyecto$ git status
    En la rama master
    nada para hacer commit, el árbol de trabajo está limpio
    

Git Hub

  • Para crear uno, crear una cuenta de GitHub en la web si es que la tienes
  • Si quieres añadir un repositorio a tu cuenta debes entrar en el la seccion de repositories y darle click a New
  • El nombre del repositorio se llama proyecto, es una opción que hay en la captura
  • Para crear un token de acceso personal, entrar en tu cuenta github y darle a configuración de tu perfil, ir a la barra lateral izquierda, darle a ajustes de Desarrollador y luego al acceso personal
  • Dale a el bóton
    • Generar un nuevo toque
    • Escribe el nombre del token, indaca su vida útil y marca la casilla de verificación
    • Por ultimo de click al bóton General Toker
    • Copia tu token en sitio seguro
  • Para hacer Push desde el repositorio local, tienes que ejecutar el comando que ha aparecido:
    git remote add origin https://github.com/primer_usuario/proyecto_git
    
  • Para las etiquetas

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Software Development Lifecycle
15 questions
Software Development Lifecycle (SDLC)
5 questions

Software Development Lifecycle (SDLC)

CharismaticSerpentine5245 avatar
CharismaticSerpentine5245
Use Quizgecko on...
Browser
Browser