We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Incorporando administrado repositorios de información para generar documentación on-demand

00:00

Formal Metadata

Title
Incorporando administrado repositorios de información para generar documentación on-demand
Title of Series
Part Number
29
Number of Parts
173
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language
Production PlaceBilbao, Euskadi, Spain

Content Metadata

Subject Area
Genre
Abstract
Todd Waits - Incorporando administrado repositorios de información para generar documentación on-demand Generar documentación de forma dinámica es relevante para los ingenieros de software porque ellos interactúan con la data en el mismo donde está localizada. Es también relevante para los clientes porque la documentación se puede presentar en un formato organizado y claro. En esta presentación, hablaremos de cómo usar un proceso unificado para generar dinámicamente la documentación de diversas fuentes de data incluyendo los wikis y los sistemas de rastreo de incidencias. Idealmente, nosotros como ingenieros deberíamos interactuar solamente con una Fuente de información que nos dara como resultado una documentación vigente y correspondiente al estado actual de un sistema. En el Presente, el cliente recibe documentos incompletos y sin actualización dando una incorrecta impresión del estado vigente de un Sistema. Usando un proceso unificado para generar documentación de solo una Fuente de data permite presentar al cliente lo que se merece: artefactos actualizados y completos dando el real y mas reciente estado de un Sistema. El resto de esta presentación se enfocara en cómo lograr este Sistema.
Keywords
51
68
Thumbnail
39:40
108
Thumbnail
29:48
InformationSystem administratorWeb pageRepository (publishing)Lecture/Conference
Physical systemMultiplication sign
XMLUML
InformationWordRepository (publishing)Computer animation
InformationBitRevision controlWordComputer fileMultiplication signRepository (publishing)Program flowchart
CodeInformationMathematicsType theoryIncidence algebraControl systemCausalityPhysical systemProjective planeRevision controlCartesian coordinate systemLattice (order)Source codeComputer fileClient (computing)TrailComputer animationProgram flowchart
CodeInformationIncidence algebraSoftware testingTask (computing)Probability density functionFunctional (mathematics)Physical systemProjective planeRevision controlCASE <Informatik>Social classWordWeb pageSource codeComputer fileClient (computing)Computer animation
CodeInformationIncidence algebraPoint (geometry)PlastikkarteTrailWikiDiagramComputer animation
Incidence algebraComputer fileTrailWebsiteDifferent (Kate Ryan album)Multiplication signWikiComputer animation
CodeImplementationCombinational logicPhysical systemSoftware bugWikiRight angleComputer animation
CodeBitPresentation of a groupEndliche ModelltheorieComputer animation
RoutingCodeFunctional (mathematics)Mobile appComputer animation
CodeSoftware frameworkComputer animation
CodeVariable (mathematics)Functional (mathematics)Projective planeRoutingCartesian coordinate systemComputer animation
Computer animation
CodeInformationIncidence algebraPhysical systemProjective planeElectronic mailing listTrailWikiXML
CodeInformationMathematicsSemiconductor memoryIncidence algebraTask (computing)Sheaf (mathematics)Physical systemProjective planeConfiguration spaceInternetworkingWeb pageCartesian coordinate systemClient (computing)TrailMultiplication signWikiRepository (publishing)
Medical imagingProjective planeComputer animation
CodeInformationComputer clusterFunction (mathematics)SI-EinheitenUniqueness quantificationContent (media)Physical systemProjective planePresentation of a groupPoint (geometry)outputWordWeb pageFile formatReflection (mathematics)Computer fileClient (computing)View (database)WebsiteDifferent (Kate Ryan album)Single-precision floating-point formatWritingWikiWeb 2.0Repository (publishing)Software developerComputer animation
Entonces, gracias por venir. Específicamente, hablo de incorporando administrados repositorios de información para generar documentación on demand. Y la próxima página fue un
requerimiento del departamento legal, entonces, va a ser muy rápido. Ok, entonces, ¿qué haces con un problema como documentación? Tenemos un problema con documentación. Muchas veces no lo hacemos o no está actualizado. Entonces,
esta documentación causa confusión y problemas en un proyecto y tenemos que hacer algo porque estamos haciendo ahorita no está funcionando. Entonces, por fin de la presentación, voy a usar, bueno, dar un ejemplo de código de un sistema que uso y ahí se puede bajar
lo de aquí. Entonces, la documentación. En la manera de pienso documentación, hay artefactos de documentación. ¿Y qué son esos artefactos? Esos artefactos son los
archivos de Word, son los archivos de Markdown o PDF o HTML o PowerPoint. He recibido documentación en PowerPoint de requerimientos y no me gusta usar PowerPoint. Si alguien en su
PowerPoint para documentar los requerimientos, tenemos que hablar con esta persona. Entonces, todos esos artefactos que son, son nuestros repositorios de información y esos repositorios
de información son la documentación. La problema que usando artefactos como archivos de Word, como nuestra documentación es que toda la información es, bueno, creamos repositorios
de información nuevos cada vez que creamos un documento, una versión de un documento. Entonces, bueno, vamos a hablar de eso un poquito. Y si no tenemos cuidado, esos artefactos que tenemos muchos artefactos o tres versiones de un documento en un archivo
de Word, todos estos artefactos causan confusión para el equipo, para el cliente, para los managers, para la persona que está leyendo, bueno, no leyendo, guiando el proyecto. Hay confusión por todos. Entonces, en estos repositorios de información,
esos artefactos de documentación, ¿qué son los tipos y los fuentes de información? Necesitamos los datos del proyecto, el nombre del proyecto, ¿qué vamos a hacer? Los requerimientos para cómo la aplicación va a funcionar. También los puntos del contacto,
cosas que parecen que son fáciles, pero esa información cambia durante un proyecto. Entonces, si no tenemos esta información actualizada, otra vez va a causar confusión.
Necesitamos una definición del éxito, diseños del proyecto. Y de las fuentes, tenemos el sistema de rastreo de incidencias, puede ser un fuente, puede ser el código, puede ser una wiki o también las reuniones con el equipo. Y todos estos tipos y fuentes
de información son importantes en nuestra documentación. Pero, otra vez, hablamos de versiones de nuestra documentación. Muchas veces, la sistema de control de versiones de nuestros documentos es así. Tenemos un archivo y este archivo tiene un nombre.
Es el nombre del proyecto, el tipo de documento, con la fecha en que este documento se empezó. Y bueno, hicimos una revisión, entonces tenemos esto, pero se revisó un segundo,
y yo lo hizo. Pero ahora es final, ya final, con corregido, pero ya final. Y esta es la versión que entregamos al cliente. ¿Cuántos han visto nombres de archivos así? Siempre, siempre. Entonces, este tipo de control de versiones de nuestra documentación,
otra vez causa confusión y nos va a dar problemas. Si queremos algo que sea útil, tiene que ser utilizado. Y qué significó en eso es, es algo que queremos es la información.
No queremos documentos, queremos información. Y la información, si queremos que esta información sea útil, tenemos que usarlo. Entonces, esta información tiene que estar
en un lugar donde vamos a trabajar con esta información. Un ejemplo es el código. Y documentación para el código. Hay muchas herramientas para esta documentación. Hay Sphinx, EpiDoc, Docsagen, PDoc. Esas herramientas se puede documentar su código
ahí adentro del código, donde está trabajando con el código. Entonces, si hacemos un clas en Python, podemos poner la documentación de este clas en el comentario del código. Y si cambiamos el código, podemos tener, bueno, hay funciones ahí en Sphinx, no sé
de los otros, pero en Sphinx, cuando compila el código, puede poner los tests, las pruebas para el código ahí en el comentario. Y cuando compile el código, va a hacer las pruebas
cuando compila. Y si falla los tests ahí en el comentario, va a fallar el compila. Entonces, sabe que, oh, necesito actualizar la documentación ahí adentro del comentario. Y para el ingeniero que está haciendo el código, es muy fácil porque la documentación
está ahí donde está trabajando. Y he visto en mi trabajo con los equipos con quienes trabajo yo que si no es fácil, si la información no está donde están
trabajando, no lo va a actualizar, nunca. Y también si hay muchos artefactos que tenemos, no vamos a actualizar estos artefactos. Oh, si lo actualizamos, el cliente va a tener una versión y el equipo tiene otro. Entonces, en este, ¿qué versión define
el éxito? ¿Qué vamos a hacer? Porque nuestro cliente piensa que, oh, el proyecto va a ser sí y el equipo dice, oh, pero no puede ser sí porque tenemos esto y eso y eso y eso. Entonces, vamos a cambiarlo y vamos a actualizar la
documentación por nuestro equipo, pero no la demos al cliente. Entonces, a lo menos tenemos que tener y, bueno, a lo menos tenemos que hablar con nuestro cliente y a lo peor, puedo ser bien malo. Entonces, tenemos que
tener un solo fuente para generar artefactos para el consumo de la información. En vez del cliente, el cliente no tiene que saber todos
de los datos del proyecto que está en el sistema de estrella de incidencias, no tiene que saber todos los páginas de un wiki, pero lo que necesitan ellos para entender es un solo fuente, un artefacto que siempre está actualizado. Y si tiene un PDF que está viejo, este PDF
debe tener el lugar donde se puede ir para bajar una versión actualizada.
Y otra vez queremos mantener la información donde está trabajando y donde van los ingenieros para requerimientos o tareas. Y en los equipos míos no van a archivos de Word, nunca, nunca. Usualmente usamos cosas
como el rastreo de incidencias para poner los requerimientos allí o tarjetas como Agile, los historias. O tal vez a veces uno wiki, y uno wiki puede tener información de como los puntos de contacto o una resumen del
proyecto, una definición del éxito. Y aquí en la wiki es la información que, bueno, digo yo los datos narrativos de un proyecto y estos datos son importantes como la información del código es importante.
Y bueno, la cosa que quiero yo, que yo solo quiero escribir una vez. Si tengo que escribir la misma cosa tres veces en repositorios
diferentes, no me gusta, no me gusta. Entonces tengo un interno allí en donde trabajo en que ya no usamos archivos de Word para esta documentación. Nosotros usamos el rastreo de incidencias para los requerimientos y
la wiki para los narrativos datos. Entonces eso es lo que decimos, sí, los requerimientos son las tres. Y así, usamos fog bugs. Entonces esos
ejemplos van a usar fog bugs, pero los principios son lo mismo. Sin, bueno, no importa qué sistema usa, se puede usar los principios. He hecho esto con JIRA y Confluence, pero bueno, la implementación no fue
bueno, entonces no lo tengo en código ahorita. Pero aquí tenemos los requerimientos. Puedes ver estos ahí con el llave. Son mis requerimientos. Y esos datos narrativos, otras, son las páginas de la wiki. Y para
combinar todo junto, uso Flask y Python. ¿Cuántas personas usan Flask o sabe cómo usar Flask? Ok, entonces voy a hablar un poquito de Flask para
entender el código que voy a mostrar. Entonces con Flask hay rutas, routes, lógica de negocios y los modelos de presentación. Entonces hizo un Flask Hola Mundo. Entonces para este ejemplo hay dos routes y voy a
definir ahí con app.route y éste va a localhost. Y el código de éste es todo el código. El app.route es de decorator. Éste define que la función
Hola va a ajustar cuando vamos a ese lugar. Entonces podemos ir y vamos a ver eso y voy a mostrar. Entonces ahí está toda la aplicación ahí. Y si
vamos acá. Ahí, Hola Mundo. Y es muy fácil para usar Flask. Es micro
framework. Y el código para eso solo es sí. Y éste es todo. Éste es todo el código para esta aplicación. Y el otro es este route. Entonces vamos a tener un
proyecto y éste es el variable de proyecto y define que cuando ajustamos esta función que pasamos este variable a la función. Entonces sí. Vamos allí. Ahí está. Fácil. Entonces ok. Ahí está. Ok. Entonces tenemos así.
Hablé de esto y esto y esto. Y ahora el código. Entonces estos principios de
Flask son lo mismo. Entonces voy a hablar de cómo hizo el código. Y otra vez se puede ir aquí para bajarlo. Y qué vamos a hacer. Vamos a usar Flask para bajar la información y mostrar un lista de los proyectos. Y cuando vamos
a un proyecto vamos a bajar la información de las wikis y también de los requerimientos dentro de la sistema de rastreo de incidencias. Entonces aquí, sí. Aquí funciona.
Entonces éste es vivo. Funciona. Estoy usando un repositorio, un sistema de rastreo que está en el internet. Y cuando voy a este proyecto, a este doctor, entonces está bajando toda la información que necesita.
No hay un repositorio allí con esta aplicación porque todo esta información está en memoria, está en el cliente. Y hice esto porque quiero que esta información siempre
está actualizado de qué está en la sistema de rastreo de incidencias y en la wiki. Si algo cambia aquí, debe cambiar. Bueno, vamos a hacer esto. Pero una vez. Entonces en el código
tenemos esto, que es nuestra aplicación de Flask. Y tenemos dos routes. Y en el primero necesitamos un list de proyectos. Y uso este código para conseguir esto.
Entonces solo necesito el proyecto, un ID, a la persona que está en cargo del proyecto. Y esa información de este proyecto. Y cuando tengo esto y alguien va a este
proyecto, a este lugar en la aplicación, entonces necesitamos información de los tareas también de los wikis. Y otra vez uso eso para hacer esto. Los requerimientos aquí.
Y necesito esta información para mostrarlo en el web. Y también la información de la wiki. Y tengo esta configuración en la cual se puede definir que secciones de la wiki quiere mostrar.
Muchas veces tenemos muchas páginas de una wiki que no necesitamos mostrar en cada documento que tenemos. Entonces se puede definir esto aquí en esta configuración. Y aquí está.
A Lore Mipsum. Más que nada porque no te da la imagen de cómo de verdad suelen ser cosas en realidad. Digo, a lo mejor si tienes un proyecto que puedes enseñar vivo tuyo, un público, para ver cómo es esto en realidad. ¿Cómo se cambia? No, no sé cómo se cambia, sino cómo es un hecho con esto.
Sí, porque eso es Lore Mipsum. Exactamente, porque es Lore Mipsum y como que muy bien, tres títulos, pero... Debo... ahorita no, porque el equipo... uso esto en mi equipo y el equipo nada está público.
Entonces... Yo solo le cuento si por si acaso tengas una cosa que sea pública para verlo en... Voy a hacer esto. Sí, los puedes pasar a ver. Sí, voy a hacer esto. Funcionando. Sí, voy a hacer esto para que todos puedan ver cómo funciona y cómo va a aparecer.
Para ver si sea útil para su equipo. Exactamente. Gracias. Otras preguntas. Porque, bueno, explicó muy básicamente el código, entonces si hay más preguntas
puedo explicar más, pero por eso es más o menos todo. Lo importante para mí por esta presentación
son los principios de cómo pensamos en documentación, cómo pensamos de dónde vamos a poner la información y dónde está esta información que sea útil para la persona que está usando un sistema así.
Y en nuestros equipos, cómo vamos a tener una antena donde todos estamos escribiendo esta información y actualizando la documentación. Pero sí, hay preguntas.
Yo tengo una pregunta, bueno, igual es más una reflexión o cómo o qué opinas sobre un tema. Yo soy un true believer de que tiene que haber un único punto de información y que solo se modifica ahí porque si no, no tiene ningún sentido y no acabas actualizando, entonces acaba todo desactualizado y demás. Lo que pasa es que sí que he trabajado a veces con grandes corporaciones en las que tienen una manía
por la documentación como bastante... Aunque a veces, aunque esa documentación no se la acabe leyendo a nadie pero necesitan tener un documento Word que explique esto y tal. Yo considero que para el equipo de desarrollo depende de los proyectos, startups y demás,
wikis, web y demás, funciona muy bien, pero cuál es tu punto de vista cuando estos clientes o estas corporaciones requieren esos documentos y sabes que tu equipo de desarrollo al final va a estar trabajando en la wiki y va a acabar de... Entonces, yo lo único que he visto que ha funcionado en algún proyecto es tener alguien dedicado
única y exclusivamente a la documentación, entonces era para saber qué opinas o si has tenido algún ejemplo alguna vez. Sí, lo mismo. Donde trabajo yo estoy trabajando con el gobierno, entonces ellos no van a usar un wiki, necesitan un archivo. No ha sucedido nada sin ese archivo, entonces necesitamos esto.
Pero todavía usamos este sistema en nuestro interno y por eso, ¿qué hago yo? Pongo un pedazo de información de este documento no está actualizado ahora.
Entonces, si quieres saber lo más actualizado está aquí y pongo un lugar donde está y se puede ir a ese lugar para bajar un nuevo archivo. Entonces, siempre usamos el Jenkins para crear esas documentaciones en la misma manera que lo hacemos con nuestro código.
No podemos hablar de eso ahorita, pero entonces, ¿cómo se dice como un disclaimer?
No sé, bueno, un aviso. Pongo un aviso en el documento que explica que este documento fue generado por este sistema
y la información actualizada está aquí. No hay una solución perfecta, pero es lo que hacemos nosotros.
Siempre, siempre. No escribimos, no creo un archivo de Word de mano, nunca. Uso cosas como Pandoc. Es una herramienta que se puede usar con archivos de Word, Markdown, HTML, todos los formatos
y se puede cambiarlo en otros formatos. Entonces, se puede tener un Word y después tener un HTML.
O se puede tener Markdown y después tener un archivo de Word. Entonces, uso eso para generar artefactos diferentes y esos artefactos es que pongo en el website
y se puede ir a ese lugar para bajarlo, lo más actualizado. Gracias. ¿Otras? ¿Alguna pregunta más? Me gustaría saber a mí qué documentación normalmente se entrega a los clientes.
¿Qué es lo que solicitan los clientes en la documentación? ¿Qué información se entrega a los clientes de documentación? ¿La información está entregada a los clientes? ¿Qué es lo que se indica en esa documentación?
¿Qué quieren saber de la documentación de los clientes? El contenido de esa documentación. Para los clientes, el contenido de documentación usualmente es un resumen de qué vamos a hacer, a los requerimientos, qué son los requerimientos específicamente para la aplicación, el proyecto,
qué es la definición del éxito por el proyecto. Entonces, tenemos que hacer esto y eso y eso, pero estas cosas no tenemos que hacer
porque no podemos hacerlo en este tiempo o en este proyecto. Y también a veces pongo un diccionario para explicar cuando yo digo esta palabra, este es lo que significa en este sentido, en este proyecto.
Cosas así es lo que pongo aquí y también este es bueno no solamente para los clientes que tienen que firmar y decir, sí, es lo que dijo que quiero que haga usted. También es para miembros del equipo que son nuevos y están empezando en un proyecto
y puede dar a ellos, lea la documentación y ahí está qué estamos haciendo y pueden verlo y consumirlo en un artefacto todo en vez de leer una página aquí, página aquí,
página aquí. Todas las páginas de Wiki y los requerimientos son buenos para actualizar y mantener la información, pero para leerlo y consumir la información no es muy fácil de tener todos esos repositorios pequeños.
Necesita una cosa, un artefacto que contiene todos esos repositorios diferentes. Vale, gracias. ¿Alguna pregunta más?
Yo no tengo mucha experiencia, no me queda muy claro, solo un poquito la idea. He entendido la salida de datos y que los datos estén centralizados, pero en sí como es la entrada de datos, siempre se hace a través, bueno entiendo la modificación,
pero la entrada de datos siempre es el sistema, cambiar los repositorios. Entonces la pregunta es, aún con eso siempre tiene que escribir los datos, entonces tiene
que escribirlo con archivos normales y tiene que usar ese sistema, tiene que escribirlo. ¿Es lo que está diciendo? Entonces sí, siempre tenemos que escribir la información, pero con esto podemos escribirlo una vez, en un lugar, que otra problema que tenía que, bueno, tenemos un resumen
de un proyecto y tengo que usar ese resumen en dos documentos, entonces ¿por qué tengo que escribirlo aquí y después moverlo, mudarlo acá para otro documento?
Entonces tengo dos documentos diferentes, de temas diferentes, pero los dos tienen ese resumen y si cambio uno, tengo que actualizar la otra, entonces sí puedo tener
un lugar donde aquí es el resumen para este proyecto y solo vamos a actualizar este resumen y después todos estos documentos, cuando cambio este resumen, van a actualizar
con el resumen correcto, en vez de tengo que actualizar aquí, aquí, aquí, aquí, solo tengo que actualizar en un lugar, pero sí, siempre tenemos que escribirlo, pero ojalá que solo estamos escribiendo una vez, en vez de muchas veces.
Vale, pues muchas gracias, Todd. Gracias.