{"id":25,"date":"2012-03-03T15:49:13","date_gmt":"2012-03-03T22:49:13","guid":{"rendered":"http:\/\/blog.netcom.mx\/?p=25"},"modified":"2012-06-30T10:19:38","modified_gmt":"2012-06-30T17:19:38","slug":"leccion-4-la-historia-de-usuario","status":"publish","type":"post","link":"http:\/\/blog.netcom.mx\/?p=25","title":{"rendered":"LECCI\u00d3N 4:   La historia de usuario"},"content":{"rendered":"<blockquote><p>El objetivo es convertir las necesidades de negocio del cliente o usuario en historias de usuario lo suficientemente sencillas como para que se puedan transformar posteriormente en tareas de desarrollo para el equipo.<\/p><\/blockquote>\n<p>Una historia de usuario describe funcionalidad que ser\u00e1 \u00fatil para el usuario, o el comprador, de un sistema software. Por definici\u00f3n, las historias de usuario no suelen ni deben tener el nivel de detalle que tiene la especificaci\u00f3n de un requisito tradicional. Se recomienda que las historias de usuario se escriban en un espacio reducido, y que el soporte f\u00edsico, normalmente un post-it o una tarjeta, tenga apenas una frase.<!--more--><\/p>\n<p>Ron Jeffries comentaba que una historia no es s\u00f3lo una descripci\u00f3n de una funcionalidad, normalmente en un post-it, una historia de usuario adem\u00e1s est\u00e1 formada por tres partes:<br \/>\nCreaci\u00f3n de la tarjeta (o post-it). Una descripci\u00f3n escrita con un t\u00edtulo asociado que sirve como identificaci\u00f3n del requisito. Tambi\u00e9n puede contener la estimaci\u00f3n, el valor de negocio que tiene la historia para el usuario, etc.<\/p>\n<p>Conversaci\u00f3n. El di\u00e1logo llevado a cabo entre el equipo y el cliente para aclarar los detalles y las dudas que puedan surgir sobre la historia de usuario. Esta es la parte m\u00e1s importante de la historia de usuario. En el caso de estar usando post-it, estas aclaraciones (o confirmaciones) se podr\u00edan especificar a la vuelta del mismo.<\/p>\n<p>Confirmaci\u00f3n. Selecci\u00f3n de las pruebas que se realizar\u00e1n para comprobar que la historia de usuario se ha completado con \u00e9xito.<\/p>\n<p>Las historias de usuario, frente a mostrar un \u201cc\u00f3mo\u201d, s\u00f3lo dicen el \u201cqu\u00e9\u201d. Es decir, muestran funcionalidad que ser\u00e1 desarrollada, pero no c\u00f3mo se desarrollar\u00e1. Por ello, cosas como que \u201cel software se escribir\u00e1 en C++\u201d no es una buena historia de usuario.<\/p>\n<p>Recomendaci\u00f3n Una historia de usuario deber\u00eda ser peque\u00f1a, memorizable, y que pudiera ser desarrollada por un par de programadores en una semana.<\/p>\n<p>Aparte de por su manejabilidad y como herramienta para la interacci\u00f3n con el cliente, las historias de usuario han tomado un gran protagonismo en las metodolog\u00edas \u00e1giles ya que<\/p>\n<ul>\n<li>Favorecen la participaci\u00f3n del equipo en la toma de decisiones.<\/li>\n<li>Se crean y evolucionan a medida que el proyecto avanza.<\/li>\n<li>Son peticiones concretas y peque\u00f1as.<\/li>\n<li>Contiene la informaci\u00f3n imprescindible.<\/li>\n<li>Apoyan la cooperaci\u00f3n, colaboraci\u00f3n y conversaci\u00f3n entre los miembros del equipo.<\/li>\n<li>Informaci\u00f3n contenida en la historia de usuario<\/li>\n<\/ul>\n<p>A continuaci\u00f3n vamos a ver las partes m\u00e1s comunes que se suelen encontrar en una historia de usuario. La historia de usuario est\u00e1 compuesta por:<br \/>\n<img decoding=\"async\" src=\"http:\/\/blog.netcom.mx\/wp-content\/uploads\/2012\/03\/historia_de_usuario.png\" alt=\"Historia Usuario\" \/><br \/>\n<strong>ID<\/strong>: Identificador de la historia de usuario.<\/p>\n<p><strong>T\u00cdTULO<\/strong>: T\u00edtulo descriptivo de la historia de usuario.<\/p>\n<p><strong>DESCRIPCI\u00d3N<\/strong>: Descripci\u00f3n sintetizada de la historia de usuario. Si bien el estilo puede ser libre, la historia de usuario debe responder a tres preguntas: \u00bfQui\u00e9n se beneficia? \u00bfQu\u00e9 se quiere? y \u00bfCu\u00e1l es el beneficio? Por ello, algunos autores recomiendan redactar las historias de usuario seg\u00fan el formato:<br \/>\nComo (rol) quiero (algo) para poder (beneficio)<\/p>\n<p><strong>ESTIMACI\u00d3N<\/strong>: Estimaci\u00f3n del coste de implementaci\u00f3n en unidades de desarrollo (estas unidades representar\u00e1n el tiempo te\u00f3rico de desarrollo\/hombre que se estipule al comienzo del proyecto).<\/p>\n<p><strong>VALOR<\/strong>: Es dado por el cliente. El Manifiesto \u00c1gil deja claro que una de nuestras prioridades debe ser entregar software que funciona. \u00c9ste, adem\u00e1s, maximizar\u00e1 el valor y la satisfacci\u00f3n percibida por el cliente. El valor determinar\u00e1, junto con el tiempo, el orden con el que las historias de usuario van a ser implementadas.<\/p>\n<p><strong>DEPENDENCIAS<\/strong>: Una historia de usuario no deber\u00eda ser dependiente de otra historia, pero en ocasiones es necesario mantener la relaci\u00f3n. En este apartado se indicar\u00edan los IDs de las tareas de las que depende una tarea.<\/p>\n<p><strong>PRUEBAS DE ACEPTACI\u00d3N<\/strong>: Pruebas consensuadas entre el cliente y el desarrollador y que el c\u00f3digo debe superar para dar como finalizada la implementaci\u00f3n del requerimiento. Tambi\u00e9n se las suele denominar &#8220;criterios de aceptaci\u00f3n&#8221;.<\/p>\n<p>Las historias de usuario son com\u00fanmente usadas en las metodolog\u00edas \u00e1giles como Scrum o XP.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: right;\"><em>Copyright \u00a9 2012 Kybele Consulting\u00a0<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El objetivo es convertir las necesidades de negocio del cliente o usuario en historias de usuario lo suficientemente sencillas como para que se puedan transformar posteriormente en tareas de desarrollo para el equipo. Una historia de usuario describe funcionalidad que ser\u00e1 \u00fatil para el usuario, o el comprador, de un sistema software. Por definici\u00f3n, las [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-25","post","type-post","status-publish","format-standard","hentry","category-gestion-agil"],"_links":{"self":[{"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=\/wp\/v2\/posts\/25","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25"}],"version-history":[{"count":7,"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=\/wp\/v2\/posts\/25\/revisions"}],"predecessor-version":[{"id":55,"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=\/wp\/v2\/posts\/25\/revisions\/55"}],"wp:attachment":[{"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.netcom.mx\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}