Guilherme Siqueira Simões https://sg.com.mx/ en Guía de Práctica Ágil https://sg.com.mx/buzz/ponencias/sg-virtual-13/guia-de-practica-agil <span class="field field--name-title field--type-string field--label-hidden">Guía de Práctica Ágil</span> <div class="field field--name-field-evento field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Evento</h3> <ul class='links field__items'> <li><a href="/buzz/evento-sg/sg-virtual-13" hreflang="und">SG Virtual #13</a></li> </ul> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 10/25/2017 - 16:18</span> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Conferencista(s)</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> </ul> </div> <div class="text-formatted field field--name-field-embedded-multimedia field--type-text-long field--label-hidden field__item"><p><iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Sum-XxVKDzo" width="560"></iframe></p> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><span>El objetivo de la ponencia es presentar la Guía de Práctica Ágil, creado por una asociación entre PMI y Agile Alliance. La guía proporciona herramientas, guías de situación y una comprensión de los diversos enfoques ágiles disponibles para permitir mejores resultados. </span></p> <p><span>Se presentará de manera breve los principales puntos tratados por la Guía de Práctica Ágil: </span></p> <ul> <li>Introducción a la agilidad.&nbsp;</li> <li>Selección del ciclo de vida adecuado para un proyecto. -</li> <li>Creación de un entorno ágil&nbsp;</li> <li>Entrega de valor continua&nbsp;</li> <li>Consideraciones organizacionales.</li> </ul> <p><span>La guía es especialmente útil para los administradores de proyectos acostumbrados a un entorno más tradicional al adaptarse a un enfoque más ágil.</span></p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Acerca del conferencista</div> <div class="field__item"><p><span>Guilherme Siquiera Simões es socio director de FATTO Consultoría y Sistemas, especializado en las áreas de medición, estimación y requerimientos de proyectos de software.&nbsp;</span></p> </div> </div> <div class="shariff" data-services="[&quot;twitter&quot;,&quot;facebook&quot;,&quot;linkedin&quot;,&quot;reddit&quot;]" data-theme="colored" data-css="min" data-orientation="horizontal" data-twitter-via="RevistaSG" data-mail-url="mailto:info@sg.com.mx" data-backend-url="https://shariff.sg.com.mx/" data-lang="en"> </div> Wed, 25 Oct 2017 21:18:19 +0000 Ivett Sanchez 7863 at https://sg.com.mx La ingeniería de requerimiento en el proceso ágil https://sg.com.mx/buzz/ponencias/sg-virtual-12/la-ingenieria-de-requerimiento-en-el-proceso-agil <span class="field field--name-title field--type-string field--label-hidden">La ingeniería de requerimiento en el proceso ágil</span> <div class="field field--name-field-evento field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Evento</h3> <ul class='links field__items'> <li><a href="/buzz/evento-sg/sg-virtual-12" hreflang="und">SG Virtual #12</a></li> </ul> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/users/guilhermesimoes" lang="" about="/users/guilhermesimoes" typeof="schema:Person" property="schema:name" datatype="" class="username">guilherme.simoes</a></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 05/12/2017 - 13:59</span> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Conferencista(s)</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> </ul> </div> <div class="text-formatted field field--name-field-embedded-multimedia field--type-text-long field--label-hidden field__item"><p><iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/sDtrT3HYSqI" width="560"></iframe></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><iframe frameborder="0" height="320" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/n1wF9C3IKFrDUT" style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" width="560"></iframe></p> <div style="margin-bottom: 5px;"><strong><a href="//www.slideshare.net/RevistaSG/la-ingeniera-de-requerimiento-en-el-proceso-gil" target="_blank" title="La ingeniería de requerimiento en el proceso ágil">La ingeniería de requerimiento en el proceso ágil</a> </strong> de <strong><a href="https://www.slideshare.net/RevistaSG" target="_blank">Software Guru</a></strong></div> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Un error muy común de varias personas es creer que en un proceso ágil de desarrollo de software la Ingeniería de Requerimientos es innecesaria. Aunque se cambie: la ejecución de la disciplina, las técnicas aplicadas, el momento de ejecución del trabajo y el perfil de los responsables; la disciplina de requerimientos sigue siendo fundamental para el éxito en los proyectos. </p> <p>El objetivo de esta ponencia es demostrar como La Ingeniería de Requerimientos es aplicada en el contexto ágil, utilizando el proceso Scrum a manera de ilustración.</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Acerca del conferencista</div> <div class="field__item"><p>Guilherme Siquiera Simões es socio y director de FATTO Consultoría y Sistemas,<br /> donde actúa como consultor e instructor en servicios de consultoría y capacitación de medición, estimación y requerimientos de proyectos de software. Autor de los libros "Análise de Pontos de Função: Medição, Estimativas e Gerenciamento de Projetos de Software" y "Engenharia de Requisitos: Software Orientado ao Negocio", ambos publicados en Brasil.</p> <p>Tiene más de 20 años de experiencia en el desarrollo de sistemas. Graduado en Ciencias de la Computación, Pos-graduado en Gestión Empresarial, certificado como experto en Puntos de Función por el IFPUG y el COSMIC, como director de Proyectos por el PMI y Ingeniero de Requerimientos (CPRE-FL) por el IREB.</p> </div> </div> <div class="shariff" data-services="[&quot;twitter&quot;,&quot;facebook&quot;,&quot;linkedin&quot;,&quot;reddit&quot;]" data-theme="colored" data-css="min" data-orientation="horizontal" data-twitter-via="RevistaSG" data-mail-url="mailto:info@sg.com.mx" data-backend-url="https://shariff.sg.com.mx/" data-lang="en"> </div> Fri, 12 May 2017 18:59:31 +0000 guilherme.simoes 7212 at https://sg.com.mx La Importancia de la Ingeniería de Requerimientos https://sg.com.mx/revista/54/la-importancia-la-ingenier-requerimientos <span class="field field--name-title field--type-string field--label-hidden">La Importancia de la Ingeniería de Requerimientos</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/images/pen-idea-bulb-paper.jpg" width="1280" height="856" alt="" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/47654" lang="" about="/user/47654" typeof="schema:Person" property="schema:name" datatype="" class="username">ana2lp</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 05/03/2017 - 01:17</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/54" hreflang="und">SG #54</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/revista/secciones/requerimientos" hreflang="und">Requerimientos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p dir="ltr"><span>La ingeniería de requerimientos es una de las disciplinas fundamentales de la ingeniería de software y proporciona información para la mayoría de las demás disciplinas. Este artículo presenta resultados de investigaciones que fundamentan de manera cuantitativa esta cuestión. El propósito es demostrar las consecuencias del descuido de la disciplina de requerimientos: retrasos en el cronograma y costo adicional, nivel alto de defectos en el software y principalmente la entrega de un software que no satisface las necesidades del cliente. &nbsp;</span></p><h3 dir="ltr"><span>Fallos famosos</span></h3><p dir="ltr"><span>Para ilustrar, a continuación se muestran casos famosos de fallos en proyectos de software relacionados con algún tipo de discapacidad en el ejercicio de la ingeniería de requerimientos. </span></p><h4 dir="ltr"><span>La sonda espacial Mars Climate Orbiter (MCO)</span></h4><p dir="ltr"><span>La MCO fue una sonda espacial cuyo objetivo principal era estudiar el clima de Marte. Fue lanzada en diciembre de 1998, alcanzando Marte nueve meses y medio después. Al entrar en la órbita de Marte, la sonda fue destruida en la atmósfera debido a un error de cálculo en la maniobra. El error fue causado porque el software responsable del cálculo de ruta de entrada esperaba datos usando el sistema de medidas imperial (libras fuerza) y recibió datos en sistema métrico universal (newtons). No se sabe si la NASA proporcionó la especificación equivocada al proveedor que desarrolló el software o si hubo una falla del proveedor en el levantamiento de requerimientos.</span></p><h4 dir="ltr"><span>Misil antibalístico Patriot </span></h4><p dir="ltr"><span>Durante la Guerra del Golfo, los Estados Unidos usaron un sistema de defensa con misiles antibalísticos llamado Patriot. El 25 de febrero de 1991 este sistema falló y no interceptó el misil Scud lanzado por Irak que mató a 28 militares y lesionó otros 98. </span></p><p dir="ltr"><span>La raíz de la falla fue que el software original del sistema utilizaba datos de las señales del radar para calcular la ruta del Patriot y trabajaba con una precisión de fracciones por segundo. Para hacer frente a misiles de más alta velocidad, se creó una subrutina para manejar el tiempo con mejor precisión (más decimales). Sin embargo, esta subrutina no fue aplicada a todas las partes necesarias del software lo que generó una acumulación de fallas de precisión; y después de cierto tiempo, el sistema se quedaba ineficaz. No fue sólo un fallo de programación, fue también un fallo de evaluación en el impacto del cambio.</span></p><h4 dir="ltr"><span>Cohete Ariane 501</span></h4><p dir="ltr"><span>El 1996, el cohete Ariane 501 fue lanzado y unos 37 segundos después del despegue, se desvió del curso esperado para después explotar. Fue el primer lanzamiento de la serie Ariane 5. La pérdida del cohete y su carga ascendieron a una pérdida de más de 370 millones de dólares. La comisión de investigación señaló que la falla había estado en el sistema de referencia inercial, el cual había sido reutilizado de la serie Ariane 4. El problema fue que el Ariane 5 estaba diseñado para transportar más carga, lo que implica otros estándares de trayectoria y velocidad diferentes, y esto no se tomó en cuenta al realizar el diseño y pruebas pertinentes.</span></p><h4 dir="ltr"><span>Archivo Virtual FBI</span></h4><p dir="ltr"><span>A principios del 2000, el FBI comenzó el desarrollo de un software llamado Virtual Case File (VCF) que permitiría el intercambio de información de casos entre los agentes. Originalmente se estimó que el desarrollo tomaría 3 años. Después de la tragedia del 11 de septiembre de 2001 el FBI recibió fuertes críticas por no anticipar el ataque; las evidencias estaban expuestas, el error fue no enlazarlas entre sí. Ante esto, se decidió aumentar la prioridad del VCF y extender su alcance. Cinco años y 170 millones de dólares después, el sistema no había podido ser terminado y se canceló su desarrollo. La investigación a cargo determinó que las principales causas de fracaso fueron:</span></p><ul><li dir="ltr"><p dir="ltr"><span>Cambios frecuentes en los requerimientos. El proveedor alegó que el FBI adoptó la filosofía de trabajo de: "Yo sé lo que quiero después de ver el producto."</span></p></li><li dir="ltr"><p dir="ltr"><span>Alta rotación de gestión (también contribuyó a los cambios frecuentes).</span></p></li><li dir="ltr"><p dir="ltr"><span>Aumento descontrolado del alcance, con requerimientos agregados incluso cuando el proyecto ya estaba retrasado.</span></p></li></ul><h3 dir="ltr"><span>El principal motivo de fracaso</span></h3><p dir="ltr"><span>De acuerdo con cifras del Project Management Institute (PMI) [1], el 47% del fracaso de los proyectos es causado por una deficiencia en el ejercicio de la ingeniería de requerimientos. Algunos casos comunes:</span></p><ul><li dir="ltr"><p dir="ltr"><span>El producto se entrega sin cumplir con los requerimientos necesarios, sin identificar varios de ellos.</span></p></li><li dir="ltr"><p dir="ltr"><span>La entrega final es un producto que no satisface al cliente, aunque a tiempo y dentro del presupuesto.</span></p></li><li dir="ltr"><p dir="ltr"><span>El proyecto incorpora requerimientos que no deben estar en el alcance. </span></p></li><li dir="ltr"><p dir="ltr"><span>La estimación de costo/esfuerzo se hace en base a un alcance equivocado ya que no considera algunas áreas funcionales y procesos de negocio. </span></p></li><li dir="ltr"><p dir="ltr"><span>Fallas de comunicación sobre requisitos, lo que resulta en la entrega de un producto defectuoso.</span></p></li><li dir="ltr"><p dir="ltr"><span>Cambios innecesarios debido a la falta de atención por comprender correctamente las necesidades del cliente al principio.</span></p></li></ul><h3 dir="ltr"><span>Una de las principales causas de defectos</span></h3><p dir="ltr"><span>Los defectos pueden surgir en cualquier etapa del ciclo de vida del proyecto, siendo el más común aquellos insertados durante la construcción, donde el producto construido tiene un comportamiento diferente al especificado. </span></p><p dir="ltr"><span>Asimismo, un número &nbsp;significativo de defectos se origina a partir de los requerimientos. &nbsp;Pero, ¿La calidad no es cumplir con los requerimientos? ¿Cómo sería posible ello? Simple, basta que la especificación no represente correctamente las necesidades del usuario. </span></p><p dir="ltr"><span>Según, Capers Jones [2], 1 de cada 5 posibles defectos se origina en los requerimientos, y estos pueden ser hasta el 60% del total de errores en el proyecto según explica Pohl [4]. La problemática es que estos sólo se detectan en etapas avanzadas del proyecto, a menudo cuando se aprueba el producto. Por otro lado, Leffingwell [5] acota que en proyectos complejos la fuente más común de errores son los requerimientos. Esto último se refleja en los resultados mostrados por Jones y Bonsignour [3] que se capturan en la tabla 1 donde se muestra la tasa potencial de defectos por punto de función segregados por la fuente del defecto y estratificado de acuerdo al tamaño del sistema.</span></p><div dir="ltr"><table><colgroup><col width="156" /><col width="156" /><col width="156" /><col width="156" /></colgroup><tbody><tr><td rowspan="3"><br /><br /><p dir="ltr"><span>Origen del Defecto</span></p></td><td colspan="3"><p dir="ltr"><span>Tamaño del sistema (en puntos de función)</span></p></td></tr><tr><td><p dir="ltr"><span>100</span></p></td><td><p dir="ltr"><span>1,000</span></p></td><td><p dir="ltr"><span>10,000</span></p></td></tr><tr><td colspan="3"><p dir="ltr"><span>Defectos potenciales (bugs/PF)</span></p></td></tr><tr><td><p dir="ltr"><span>Requerimiento</span></p></td><td><p dir="ltr"><span>0.75</span></p></td><td><p dir="ltr"><span>1.00</span></p></td><td><p dir="ltr"><span>1.25</span></p></td></tr><tr><td><p dir="ltr"><span>Arquitectura</span></p></td><td><p dir="ltr"><span>0.10</span></p></td><td><p dir="ltr"><span>0.25</span></p></td><td><p dir="ltr"><span>0.50</span></p></td></tr><tr><td><p dir="ltr"><span>Diseño</span></p></td><td><p dir="ltr"><span>1.00</span></p></td><td><p dir="ltr"><span>1.25</span></p></td><td><p dir="ltr"><span>1.50</span></p></td></tr><tr><td><p dir="ltr"><span>Código fuente</span></p></td><td><p dir="ltr"><span>1.70</span></p></td><td><p dir="ltr"><span>1.75</span></p></td><td><p dir="ltr"><span>2.00</span></p></td></tr><tr><td><p dir="ltr"><span>Material de pruebas</span></p></td><td><p dir="ltr"><span>1.50</span></p></td><td><p dir="ltr"><span>1.85</span></p></td><td><p dir="ltr"><span>2.00</span></p></td></tr><tr><td><p dir="ltr"><span>Documentación</span></p></td><td><p dir="ltr"><span>0.65</span></p></td><td><p dir="ltr"><span>0.70</span></p></td><td><p dir="ltr"><span>0.75</span></p></td></tr><tr><td><p dir="ltr"><span>Base de datos</span></p></td><td><p dir="ltr"><span>2.00</span></p></td><td><p dir="ltr"><span>2.75</span></p></td><td><p dir="ltr"><span>3.00</span></p></td></tr><tr><td><p dir="ltr"><span>Website</span></p></td><td><p dir="ltr"><span>1.50</span></p></td><td><p dir="ltr"><span>1.75</span></p></td><td><p dir="ltr"><span>2.00</span></p></td></tr><tr><td><p dir="ltr"><span>Total</span></p></td><td><p dir="ltr"><span>9.20</span></p></td><td><p dir="ltr"><span>11.30</span></p></td><td><p dir="ltr"><span>13.00</span></p></td></tr></tbody></table></div><p><span><span>&nbsp;</span></span></p><p dir="ltr"><span>Tabla 1. Defectos en potencial por tamaño de sistema y origen.</span></p><p dir="ltr"><span>Los defectos originados en requerimientos son más difíciles de eliminar por métodos tradicionales: pruebas y análisis estático. Esto se debe a que cuando se aprueba la especificación con un requerimiento defectuoso, los casos de prueba son elaborados a partir del comportamiento equivocado.</span></p><p dir="ltr"><span>Adicionalmente, los cambios en requerimientos tienden a una densidad de defectos mayor, debido a que típicamente son tratados a toda prisa. Y son más difíciles de eliminar porque “saltan” el control de calidad del proyecto. Por ejemplo, un crecimiento del 10% en el alcance del proyecto implica un aumento del 12% en el número de defectos.</span></p><h3 dir="ltr"><span>El costo de reparación de los defectos</span></h3><p dir="ltr"><span>La industria del software tiene un gran potencial para explotar las ganancias de eficiencia. Según Boehm [6] del 40 al 50% del esfuerzo en los proyectos de software se gasta en la corrección de defectos. Uno de los factores que contribuyen para esta ineficiencia es que al corregir un defecto existe un 20-50% de posibilidades de introducir otro error al software [7].</span></p><p dir="ltr"><span>Pohl [4] sostiene que la mayoría de los errores originados en los requerimientos se detecta en las etapas avanzadas del proyecto. Él afirma que una parte significativa de estos errores se identifica durante la validación por el cliente. El esfuerzo de encontrar y corregir un defecto después de la entrega, suele costar a menudo 100 veces más que corregirlo cuando todavía se está desarrollando los requerimientos. Como se observó en los casos citados, los errores detectados con el software en operación pueden causar daños en varios órdenes de magnitud mayor al costo de corrección del defecto.</span></p><p dir="ltr"><span>El objetivo es desarrollar el producto correcto en el primer intento. De esta manera, se reducen los errores en las primeras etapas del proyecto en donde se puede mitigar con mayor intensidad la reanudación. El método de ensayo y error, además de ser más caro y demorado, crea insatisfacción en el cliente. Por lo que se busca es evolucionar en la calidad del trabajo con requerimientos para lograr un impacto positivo en el costo, el tiempo y la satisfacción del proyecto.</span></p><p dir="ltr"><span>Referencias</span></p><ol><li dir="ltr"><p dir="ltr"><span>PMI - Project Management Institute. PMI’s Pulse of the Profession: Requirements Management - A Core Competency for Project and Program Success, 2014.</span></p></li><li dir="ltr"><p dir="ltr"><span>C. Jones. Software Defects Origins and Removal Methods, 2012.</span></p></li><li dir="ltr"><p dir="ltr"><span>C. Jones, O. Bonsignour. The Economics of Software Quality. Addison-Wesley, 2012.</span></p></li><li dir="ltr"><p dir="ltr"><span>K. Pohl, C. Rupp. Requirements Engineering Fundamentals. Rocky Nook Computing, 2011.</span></p></li><li dir="ltr"><p dir="ltr"><span>D. Leffingwell. “Calculating the Return on Investment from More Effective Requirements Management”. American Programmer 10(4); 13-16; 1997. </span></p></li><li dir="ltr"><p dir="ltr"><span>B. Boehm &amp; V. Basili, V. “Software Defect Reduction Top &nbsp;10 List”. Computer 34(1). IEEE, 2001.</span></p></li><li dir="ltr"><p dir="ltr"><span>F. Brooks. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley, 1995.</span></p></li></ol><p><span style="font-size: 13.008px;">&nbsp;</span></p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p dir="ltr"><span>Guilherme Siqueira Simões es socio de FATTO Consultoría y Sistemas, donde actúa en consultoría y entrenamiento en medición, estimación y requisitos de software. Es graduado en Ciencias de la Computación por la UFES, posgraduado en Gestión Empresarial por el IEL/UFES, certificado como experto en Puntos de Función por IFPUG y COSMIC, Director de Proyectos (PMP) por PMI e Ingeniero de Requisitos por IREB.&nbsp;</span><a href="mailto:guilherme.simoes@fattocs.com">guilherme.simoes@fattocs.com</a></p><p>&nbsp;</p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label">Tags</h3> <ul class='links field__items'> <li><a href="/buzz/tags/requerimientos" hreflang="und">Requerimientos</a></li> </ul> </div> Wed, 03 May 2017 06:17:27 +0000 ana2lp 7265 at https://sg.com.mx https://sg.com.mx/revista/54/la-importancia-la-ingenier-requerimientos#comments ¿Gestión de Riesgos: cómo manejar las incertidumbres del proyecto? https://sg.com.mx/buzz/ponencias/sg-virtual-11/gestion-de-riesgos-como-manejar-las-incertidumbres-del-proyecto <span class="field field--name-title field--type-string field--label-hidden">¿Gestión de Riesgos: cómo manejar las incertidumbres del proyecto?</span> <div class="field field--name-field-evento field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Evento</h3> <ul class='links field__items'> <li><a href="/buzz/evento-sg/sg-virtual-11" hreflang="und">SG Virtual #11</a></li> </ul> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/users/guilhermesimoes" lang="" about="/users/guilhermesimoes" typeof="schema:Person" property="schema:name" datatype="" class="username">guilherme.simoes</a></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 09/26/2016 - 08:46</span> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Conferencista(s)</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> </ul> </div> <div class="text-formatted field field--name-field-embedded-multimedia field--type-text-long field--label-hidden field__item"><p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Y0HwwNDXzwA" width="560"></iframe></p> <p><iframe frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/wPY4jI0t1K1kEa" style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" width="595"></iframe></p> <div style="margin-bottom: 5px;"><strong><a href="//www.slideshare.net/RevistaSG/gestin-de-riesgos-cmo-manejar-las-incertidumbres-del-proyecto" target="_blank" title="¿Gestión de Riesgos: cómo manejar las incertidumbres del proyecto?">¿Gestión de Riesgos: cómo manejar las incertidumbres del proyecto?</a> </strong> de <strong><a href="//www.slideshare.net/RevistaSG" target="_blank">Software Guru</a></strong></div> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>MOTIVACIÓN<br /> La gestión de proyectos está siempre relacionada a muchas incertidumbres. Durante todo su desarrollo el proyecto está sujeto a eventos inciertos que pueden impactarlos. Estos representan riesgos y su gestión está directamente relacionada a alcanzar los objetivos del proyecto, buscando eliminar o minimizar la probabilidad de ocurrencia de eventos negativos y aumentar la probabilidad de eventos positivos, o sus impactos en el proyecto.<br /> OBJETIVO<br /> El objetivo de esta ponencia es abordar:<br /> • ¿Por qué gestionar riesgos?<br /> • ¿Qué es el riesgo?<br /> • Objetivos de la gestión de riesgos<br /> • Principales conceptos<br /> • Ciclo de la gestión de riesgos</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Acerca del conferencista</div> <div class="field__item"><p>Guilherme Siqueira Simões es socio de la FATTO Consultoría y Sistemas, donde actúa en consultoría y entrenamiento en medición, estimación y requisitos de software.</p> </div> </div> <div class="shariff" data-services="[&quot;twitter&quot;,&quot;facebook&quot;,&quot;linkedin&quot;,&quot;reddit&quot;]" data-theme="colored" data-css="min" data-orientation="horizontal" data-twitter-via="RevistaSG" data-mail-url="mailto:info@sg.com.mx" data-backend-url="https://shariff.sg.com.mx/" data-lang="en"> </div> Mon, 26 Sep 2016 13:46:51 +0000 guilherme.simoes 6735 at https://sg.com.mx Los Niveles de Granularidad del Requerimiento Funcional https://sg.com.mx/revista/51/los-niveles-granularidad-del-requerimiento-funcional <span class="field field--name-title field--type-string field--label-hidden">Los Niveles de Granularidad del Requerimiento Funcional</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/images/levels.jpg" width="414" height="283" alt="" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 07/08/2016 - 12:27</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/51" hreflang="und">SG #51</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/revista/secciones/requerimientos" hreflang="und">Requerimientos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> <li><a href="/buzz/autores-sg/carlos-v-zquez" hreflang="und">Carlos Vázquez</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Como la mayoría de los lectores de SG saben, todo software posee dos dimensiones de requerimientos: funcional y no funcional. Los requerimientos funcionales (RF) describen el comportamiento del software para proporcionar tareas y servicios a sus usuarios; estos tipos de requerimientos están relacionados a lo que el software debe hacer. Los requerimientos no funcionales (RNF) están relacionados al cómo las funcionalidades del software serán entregadas a sus usuarios y pueden incluir aspectos de calidad, técnicos, ambientales y organizacionales.</p><p>Teniendo en cuenta un sistema de cajero automático de un banco se podría suponer los siguientes ejemplos para los dos tipos de requerimientos:</p><ul><li>RF: Consultar saldo de la cuenta corriente (el qué).</li><li>RNF: Toda transacción debe ser completada en un máximo de 30 segundos (el cómo).</li></ul><p>Aunque no sea una regla, el RF se acostumbra manifestar de manera explícita en el software, es un comportamiento que se puede determinar claramente en qué parte del software está. El RNF, por lo contrario, se acostumbra manifestar de manera general, se aplica a todo o casi todo el software.</p><p>Para la Ingeniería de Requerimientos los dos tipos son igualmente relevantes: ambos deben ser identificados, analizados, especificados, modelados y gestionados. Sin embargo, hay algunas diferencias entre estos dos tipos de requerimientos que valen la pena comentar por separado. Este artículo se enfocará en los RF, con el objetivo de presentar sus niveles de granularidad y su importancia en el trabajo de la Ingeniería de Requerimientos.</p><h3>Los niveles de granularidad</h3><p>Continuando con el ejemplo del sistema de cajero automático, las siguientes descripciones podrían estar presentes en su especificación de requerimientos:</p><ol><li>Realizar transacciones con la cuenta corriente.</li><li>Transferir una cifra de una cuenta corriente para otra cuenta corriente.</li><li>Validar la tarjeta y la contraseña del cliente.</li><li>Garantizar que la suma de todas las transacciones del cliente en el día no puede ser superior a $5,000.</li></ol><p>Aunque estos cuatro ejemplos sean casos válidos de RF, es posible percibir que el nivel de detalle (o granularidad) entre ellos es distinto. Lo más frecuente es que una especificación presente los requerimientos en distintos niveles de granularidad.</p><p>El nivel de granularidad es la mayor o menor amplitud de la descripción del comportamiento esperado para el software en una especificación funcional. Esto está relacionado al tipo de objetivo asociado al requerimiento. La Figura 1 ilustra la relación entre estos objetivos y el nivel de granularidad, utilizando una clasificación de tres niveles (agregado, usuario, subfunción) propuesta por Cockburn (2000) para casos de uso y generalizada por los autores para requerimientos funcionales. Esta clasificación no significa que el proceso de la ingeniería de requerimientos deba utilizar una estrategia de desarrollo por descomposición funcional.</p><p><img src="/sites/default/files/images/stories/sg51/granularidad.jpg" alt="" width="263" height="381" /></p><p>Figura 1. Niveles de granularidad.</p><div id="_idContainer003"><h3>Nivel de usuario</h3><p>El requerimiento a nivel de objetivo de usuario es aquel que:</p><ul><li>Abarca una única tarea bajo la responsabilidad de un único individuo;</li><li>Es realizado en el momento en que el usuario posee todo lo que es necesario para que la tarea sea completada hasta el límite de su responsabilidad en el flujo operativo donde está contenida.</li></ul><p>Al final de la tarea el usuario alcanza su propósito, está satisfecho y no hay nada más que necesite hacer. Una vez que el requerimiento fue completado, todo lo que debería de realizarse para tratar un evento externo fue realizado. Esta tarea es casi siempre parte de un proceso de negocio que puede tener un flujo operativo más amplio y por esto puede aún no estar completa. Sin embargo, la perspectiva relevante en este caso no es del proceso de negocio, es de la tarea.</p><p>En general, si un trabajo involucra más de un individuo es porque hay más de una tarea presente en el contexto. Hay excepciones como un retiro en la cuenta corriente en la sucursal del banco donde dos individuos participan: la caja del banco que solicita e informa datos para el retiro y el cliente que informa la contraseña.</p><p>Esta es la granularidad del ejemplo 2 (“Transferir una cifra de una cuenta corriente para otra cuenta corriente.”). Es una única tarea (seguramente compuesta por varios pasos y reglas), bajo la responsabilidad de un único individuo que al final de todos los pasos está satisfecho con el objetivo alcanzado: una cifra fue transferida a otra cuenta corriente.</p><h3>Nivel agregado</h3><p>El requerimiento en este nivel agrega varios requerimientos a nivel de objetivo de usuario en una única especificación de más alto nivel. Tanto más alto sea su nivel, más generales son sus objetivos y para que un objetivo de nivel más alto sea alcanzado, otros objetivos de nivel más bajo deben ser alcanzados primero.</p><p>Este tipo de requerimiento está relacionado a objetivos más generales y su amplitud está asociada a objetivos colaborativos o asociados a procesos de negocio de alto nivel. No es relativo a una única tarea, por lo contrario, agrega un conjunto de tareas de uno o más usuarios. Esta es la granularidad del ejemplo 1 (“Realizar transacciones con la cuenta corriente.”).</p><p>¿Cuáles son las tareas asociadas a este tipo de requerimiento? Tal vez sean obvias para los lectores de la especificación (los interesados) o tal vez aún no sean conocidas. Sin embargo, es sabido que hay actividades a realizar para levantar (refinar) este requerimiento. Lo que importa es que ya está claro que este requerimiento está dentro del alcance del software a ser desarrollado.</p><p>Sin embargo, algunos RF de este tipo poseen patrones que eliminan la necesidad de proporcionar más detalles. Un ejemplo clásico son los formularios CRUD (Create, Read, Update, Delete) para que el usuario pueda mantener datos por medio del software. Es muy común que esto sea expresado como: “El sistema debe mantener productos.”. Hay un conocimiento tácito entre los interesados que el verbo “mantener” agrega las tareas del CRUD. Por lo tanto queda claro a todos los lectores que el software debe permitir al usuario realizar las siguientes tareas: agregar, modificar, eliminar y consultar datos de producto.</p><h3>Nivel de subfunción</h3><p>Estos requerimientos son pedazos de requerimientos con objetivo de usuario; están relacionados a un conjunto de pasos o a reglas de una o más tareas de los usuarios.</p><p>El requerimiento en nivel de subfunción que representa un conjunto de pasos describe el cambio de datos en los dos sentidos entre el usuario y el software; y entre el software y los requerimientos de almacenamiento. Este es el caso del ejemplo 3 (“Validar la tarjeta y la contraseña del cliente.”). Cada tipo de transacción que utiliza la cuenta corriente (ej.: retiro, transferencia, pago, etc.) exige el mismo conjunto de pasos descrito por el ejemplo 3, que se podría suponer como:</p><ul><li>Verificar si la tarjeta es válida.</li><li>Verificar si la transacción elegida es compatible con el tipo de tarjeta.</li><li>Verificar si la contraseña informada es correcta.</li><li>Incrementar el control de errores de contraseña en caso que la contraseña informada sea incorrecta.</li><li>Cambiar a cero el control de errores de contraseña en caso que la contraseña informada sea correcta.</li></ul><p>Validar la tarjeta y contraseña del cliente no es el objetivo del cliente al utilizar el sistema de cajero automático, sin embargo son pasos necesarios y intermediarios para alcanzar su objetivo: por ejemplo, hacer un retiro.</p><p>El requerimiento en el nivel de subfunción que está relacionado a reglas, en general se vincula a las leyes que gobiernan el negocio y describen de manera que complementan los procesos de negocio. También llamadas muchas veces como reglas de negocio. La regla puede describir políticas corporativas, reglamentos gubernamentales o estándares de la industria por los cuales el software debe estar subordinado.</p><p>Este es el caso del ejemplo 4 (“Garantizar que la suma de todas las transacciones del cliente en el día no puede ser superior a $5,000.”). Las reglas de negocio muchas veces son compartidas entre varios RF, hasta entre distintos productos de software en la empresa.</p><h3>Importancia de la granularidad</h3><p>En una visión simplificada se puede decir que hay dos momentos clave donde una especificación de requerimientos es necesaria:</p><p>&nbsp; A. Proporcionar una visión amplia del software (y tal vez aún no profunda).</p><p>&nbsp; B. Proporcionar una visión profunda del software (de una parte o del todo).</p><p>El caso A es muy común en etapas tempranas de proyectos. El objetivo en este momento es primero obtener una visión amplia del alcance, por ejemplo: para planificar el proyecto, estimar un orden de magnitud de costo o plazo, o hacer un análisis de factibilidad. Un documento de visión es un ejemplo de documento que cumple este propósito. Especificar los RF en el nivel agregado es suficiente y más adecuado a este caso. El costo para obtener información y especificar en un nivel de granularidad más bajo puede significar desperdicio de esfuerzo para detallar lo que no es necesario.</p><p>Entonces el documento de requerimientos para el propósito A, tendrá la mayoría de los RF especificados en el nivel agregado. Es posible también que haya especificaciones en el nivel de usuario o subfunción, esto no es un error. A veces puede ser interesante especificar los RF más críticos (no todos o la mayoría) en un nivel más detallado, ya sea para facilitar la comprensión del alcance por el interesado o permitir una estimación con menos incertidumbre.</p><p>El principal propósito para especificar requerimientos en niveles agregados es establecer áreas de proceso objeto de informatización y/o automatización para que las necesidades de negocio queden resueltas.</p><p>Si el objetivo de la especificación es proporcionar una visión profunda de parte o de todo el software, por ejemplo para iniciar su desarrollo, la existencia de RF en el nivel agregado puede significar que varias decisiones sobre el alcance todavía siguen pendientes. Es decir, hay trabajo de levantamiento que debe ser hecho.</p><p>Para el propósito B, el nivel de granularidad más adecuado es del objetivo del usuario pues es el único que proporciona una definición de alcance del software de manera inequívoca; no hay dudas sobre lo que es abarcado. Esto es también el único nivel de descripción de procesos que puede ser estandarizado y consecuentemente es el nivel utilizado por todos los métodos de medición de tamaño funcional adherentes a la norma ISO/IEC 14143.</p><p>Consecuentemente, para el propósito B, lo más común es que un documento de requerimientos tenga los RF especificados en su mayoría con el objetivo de usuario. RF en el nivel agregado puede estar presente sólo cuando es el caso de que esté claro a todos los interesados que tareas son abarcadas por este RF.</p><p>La definición de un requerimiento en el nivel de subfunción es adecuada cuando el comportamiento especificado es común y compartido por varias otras tareas que el software entrega a los usuarios. Esto hace con que la especificación de requerimientos sea más fácil de modificar en respuesta a cambios, pues disminuye la redundancia de información al evitar describir el mismo conjunto de pasos o reglas más de una vez. También ayuda a alcanzar una especificación más consistente.</p><h3>Conclusión</h3><p>Aunque el concepto de los niveles de granularidad del requerimiento funcional sea sencillo, en términos prácticos se percibe que muchos ingenieros de requerimientos no están atentos a esto cuando elaboran las especificaciones. Tener en cuenta los niveles de granularidad ayuda a definir el esfuerzo adecuado para ser dedicado a la elaboración de la especificación y también a alcanzar una especificación de requerimientos de mejor calidad.</p><p>El estándar 830 de la IEEE presenta los siguientes criterios para evaluar la calidad de una especificación de requerimientos: correcta, completa, clara (no ambigua), consistente, modificable, priorizada, verificable, trazable.</p><p>Siendo el propósito de la especificación proporcionar una visión profunda del alcance, estar atento al nivel de granularidad del RF permite que:</p><p>• Se descubra que la especificación puede no estar completa cuando hay RF agregados.</p><p>• Se proporcione la comprensión del alcance sin ninguna ambigüedad con respeto a las tareas que el software entregará cuando se enfoca el RF con objetivo de usuario.</p><p>• Se genere un documento de requerimientos más fácil de mantener y consecuentemente más consistente al especificar los RF adecuados con objetivo de subfunción.&nbsp;</p><p>Referencias</p><ol><li>A. Cockburn. Writing Effective Use Cases. Addison-Wesley, 2000.</li><li>COSMIC Measurement Manual: 4.0.1. Common Software Measurement International Consortium, 2015.</li><li>IEEE Std. 830–1998: IEEE Recommended Practice for Software Requirements Specifications. IEEE Computer Society, 1998.</li><li>Function Point Counting Practices Manual. Release 4.3.1. IFPUG, 2010.</li><li>C. Vazquez, G. Simões &amp; R. Albert. Análise de Pontos de Função, Medição, Estimativas e Gerenciamento de Projetos de Software. Saraiva, 2013.</li><li>C. Vazquez, G. Simões. Engenharia de Requisitos: Software Orientado ao Negócio. Brasport, 2016.</li></ol></div></div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Fri, 08 Jul 2016 17:27:01 +0000 sg 6564 at https://sg.com.mx https://sg.com.mx/revista/51/los-niveles-granularidad-del-requerimiento-funcional#comments Prototipos: Un Juguete muy Valioso https://sg.com.mx/buzz/ponencias/sg-virtual-9/prototipos-un-juguete-muy-valioso <span class="field field--name-title field--type-string field--label-hidden">Prototipos: Un Juguete muy Valioso</span> <div class="field field--name-field-evento field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Evento</h3> <ul class='links field__items'> <li><a href="/buzz/evento-sg/sg-virtual-9" hreflang="und">SG Virtual #9</a></li> </ul> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/users/guilhermesimoes" lang="" about="/users/guilhermesimoes" typeof="schema:Person" property="schema:name" datatype="" class="username">guilherme.simoes</a></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 08/03/2015 - 13:49</span> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Conferencista(s)</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> </ul> </div> <div class="text-formatted field field--name-field-embedded-multimedia field--type-text-long field--label-hidden field__item"><p><strong>NOTA: Por cuestiones tecnicas de la herramienta, lamentablemente no se muestra la presentacion en la grabacion. Te ofrecemos una disculpa por las molestias que pueda ocasionar.</strong></p> <p style="text-align: center;"><iframe frameborder="0" height="315" src="https://www.youtube.com/embed/eVgisWycO5Y?list=PLnLzwYW6HOC6YdlPlUIat8oS5R3iGCkF7" width="560"></iframe></p> <p style="text-align: center;"><iframe frameborder="0" height="315" marginheight="0" marginwidth="0" scrolling="no" src="//es.slideshare.net/slideshow/embed_code/key/lPPCRz2vfie7ra" style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" width="560"></iframe></p> <div style="margin-bottom: 5px;"><strong><a href="//es.slideshare.net/RevistaSG/prototiposun-juguete-muy-valioso" target="_blank" title="Prototipos:Un juguete muy valioso">Prototipos:Un juguete muy valioso</a> </strong> from <strong><a href="//www.slideshare.net/RevistaSG" target="_blank">Software Guru</a></strong></div> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p style="text-align: left;">La presentación comenta sobre prototipos en el desarrollo de software, enfocando: - Definición de prototipado - Beneficios de los prototipos - Planeación del prototipo - Enfoques posibles de los prototipos: -- Alta y baja fidelidad -- Desechable y evolutivo - La sesión de prototipado - Cuidados al prototipar</p> </div> <div class="shariff" data-services="[&quot;twitter&quot;,&quot;facebook&quot;,&quot;linkedin&quot;,&quot;reddit&quot;]" data-theme="colored" data-css="min" data-orientation="horizontal" data-twitter-via="RevistaSG" data-mail-url="mailto:info@sg.com.mx" data-backend-url="https://shariff.sg.com.mx/" data-lang="en"> </div> Mon, 03 Aug 2015 18:49:07 +0000 guilherme.simoes 5984 at https://sg.com.mx Contratación de Software Basada en Resultados https://sg.com.mx/revista/47/contratacion-software-basada-resultados <span class="field field--name-title field--type-string field--label-hidden">Contratación de Software Basada en Resultados</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/images/contract.png" width="640" height="350" alt="" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 05/25/2015 - 00:19</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/47" hreflang="und">SG #47</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/secci%C3%B3n-revista/outsourcing" hreflang="und">Outsourcing</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>El sector de Tecnologías de la Información se ha visto muy afectado por el movimiento de &nbsp;externalización de las empresas. Gran parte del desarrollo y mantenimiento de los sistemas ya no se hace más internamente.</p><p>Sin embargo, esta medida trajo efectos secundarios inesperados (y no deseados) para muchas organizaciones que han adoptado esta iniciativa. Uno de los problemas se refiere a las prácticas de contratación de estos servicios de terceros. En las secciones siguientes se comentan las formas más comunes de la contratación de servicios de desarrollo de software.</p><h3 dir="ltr">La contratación por hora-hombre</h3><p>En esta forma de contratación, también conocida como body shopping, el cliente contrata a profesionales para la asignación en el desarrollo de software, generalmente en conjunto con su propio equipo, algunas veces con varios proveedores de mano de obra, y utiliza su infraestructura logística interna. La remuneración del proveedor se calcula basándose en el nivel de cualificación y experiencia de los profesionales que trabajan, en las horas trabajadas y otros gastos posibles.</p><p>En este tipo de contrato, la remuneración del proveedor está orientada a los procesos "internos" a la producción de software. El precio final de un proyecto se determina a partir de consideraciones tales como: la cantidad de trabajo que requiere, el perfil y la cantidad de profesionales movilizados para su aplicación, y la complejidad de la gestión. El control de precios está en manos del proveedor, que en teoría, tiene más experiencia en estos aspectos técnicos del proyecto que el cliente, cuya actividad económica tiende a ser diferente al desarrollo o mantenimiento de software.</p><p>Este modelo es fácil de administrar y proporciona una gran flexibilidad tanto para el cliente y como para el proveedor. Una vez que se hayan establecido las relaciones comerciales, el cliente es capaz de ser más ágil en el cumplimiento de los picos de demanda del servicio. En el caso de que exista cambio de las necesidades, no es necesario renegociar el contrato con el proveedor. Sin embargo, aumentar el alcance provoca un &nbsp;incremento del trabajo (horas), así como del costo del proyecto. Es justo que haya remuneración al proveedor por este esfuerzo adicional, ya que la gestión del alcance es responsabilidad directa del cliente.</p><p>El aspecto más crítico de este tipo de contratación, es que el cliente es responsable por la gestión del equipo de servicio, incluyendo la productividad del proveedor. Esto requiere un nivel de competencia que puede no estar disponible internamente. Además, la remuneración del proveedor no está vinculada a los resultados producidos, &nbsp;sólo al número de horas realizado. No hay incentivo para que el proveedor mantenga o aumente los niveles de productividad y calidad, lo que debería ser parte de su responsabilidad. El incentivo es negativo: en cuanto más esfuerzo se demande por parte del &nbsp;proveedor, mayor será la remuneración. ¡Y esta es la antítesis de la productividad!</p><p>Otro obstáculo está relacionado con las garantías de servicio. Si la asignación implica más de una empresa, es muy difícil aislar las responsabilidades de cada empresa y exigir la garantía. El cliente paga por un servicio y también por cualquier mantenimiento posterior &nbsp;correctivo asociado a éste.</p><h3 dir="ltr">Contratar a un precio fijo</h3><p>Este tipo de contratación, también conocido como fixed price, favorece el enfoque de proyecto con un comienzo y un final bien definidos (y por supuesto, del alcance). Además, este modelo requiere un mayor nivel de organización del cliente y del proveedor. Si los requisitos están mejor definidos hay menos posibilidades de fricción entre las partes.</p><p>Sin embargo, es probable que el proveedor no tenga mucha información, no domine el problema o no dedique tiempo para un análisis detallado de los requisitos para la preparación de su propuesta de negocio. Como resultado, habrá un subdimensionamiento o sobredimensionamiento del presupuesto presentado. Cuando la competencia es intensa, es probable que el primer caso se produzca.</p><p>Ambos casos son indeseables. En el primero, el proveedor tendrá dificultades para atender al cliente. Si los requisitos no están bien definidos, es probable que se cree un callejón sin salida y una nueva negociación comercial tendrá que ser considerada. Aunque los requisitos hayan sido bien definidos, el presupuesto por el proveedor puede haber sido insuficiente y la calidad del producto se vea seriamente afectada o incluso el proyecto no pueda ser completado.</p><p>En este modelo hay una transferencia del riesgo del cliente al proveedor, y surgen los cuestionamientos con respecto al riesgo del alcance (¿los cambios serán alojados sin coste adicional?) y de la productividad (¿cuál es el nivel de control sobre los vectores que afectan el trabajo?). El precio propuesto por los proveedores debe tener en cuenta estos riesgos.</p><p>El uso de este enfoque se complica cuando se asume que los requisitos no cambiarán (o habrá poco cambio) después del inicio del proyecto. El entorno de una organización se es dinámico, los requisitos también lo son. En cuanto más larga sea la duración del proyecto, es más probable que hayan cambios en los requisitos. Aparte es difícil de estimar cómo estos cambios afectan el presupuesto original del proveedor. De acuerdo con [7] más de 2% de los requisitos cambian mensualmente después de la fase de requisitos. En este caso, es probable que sea necesaria una renegociación. Si esto ocurre, el cliente no tendrá la misma condición original, ya que dependiendo de qué fase el proyecto esté, no hay competencia, ni una unidad para comparar el precio originalmente acordado con los precios cobrados de acuerdo a las nuevas características solicitadas.</p><p>En este modelo de contratación, el control sobre la cantidad a pagar lo tiene el proveedor. Es muy común que la formación de precios se efectúe en términos de la estructura de descomposición del proyecto de trabajo, la cantidad de las horas y el perfil de profesionales asignados a esa actividad. Esto también ocurre con la contratación por hora-hombre, el control está bajo quienes poseen los conocimientos técnicos de ingeniería de software y la aplicación de sus disciplinas.</p><h3 dir="ltr">Un modelo alternativo de contratación</h3><p>Con el tiempo, algunas organizaciones comenzaron a experimentar con formas alternativas de contratación de servicios de software que promovían una mejor distribución de los riesgos y resultados. En el modelo hora-hombre, la productividad del trabajo es un problema de gestión del cliente, cuando debería ser preocupación del proveedor. La administración del alcance también es responsabilidad del cliente, ya que el proveedor no tiene control sobre los requisitos. En el modelo de precio fijo, la productividad es responsabilidad del proveedor, lo que es justo, ya que este es responsable del proceso de trabajo. Sin embargo, cualquier cambio o incertidumbre de los requisitos, que es responsabilidad del cliente, impacta este modelo de contrato.</p><p>Por lo tanto, un modelo de contratación óptimo sería la remuneración de acuerdo con las unidades de resultado del servicio realizado. Esto promueve el balance de riesgos y responsabilidades entre cliente y proveedor. En este caso, la productividad es &nbsp;responsabilidad del proveedor, ya que existe un riesgo de lesiones si hay retraso en las unidades de producción. Además, en el caso de que exista un aumento en el alcance, se debe construir más unidades para el servicio y el proveedor es remunerado por ello.</p><p>El gran desafío de este enfoque es encontrar una unidad que sea reconocida de manera inequívoca, uniforme y consistente tanto para el cliente como para el proveedor. Ejemplos de unidades podrían ser: pantallas, informes, tablas, casos de uso, líneas de código, stored procedures, webservices, puntos de función, entre otros. Pero no todas estas unidades cumplen con los criterios para ser reconocidos por el cliente y el proveedor de forma consistente.</p><p>Al analizar las unidades de carácter más técnico, no se tiene en cuenta la visibilidad de estas por parte del cliente. La relación (si existe) entre las líneas de código, por ejemplo, y algo de valor tangible al cliente es muy débil. El cliente no siempre tiene toda la experiencia para atribuir valor a un servicio que involucró a escribir un cierto número de líneas de código. A menudo, una de las razones para la externalización es precisamente la búsqueda de un proveedor con más conocimientos especializados en un tema, que no es de interés para el cliente y no le generará interés de tener dominio.</p><p>Al analizar algunas unidades menos técnicas, tales como pantallas, tablas, informes, casos de uso o los puntos de función, estos tienen unidades que son fácilmente reconocidas y comprendidas por ambas partes. La cuestión ahora es encontrar una definición consistente para esta unidad. En el caso de las pantallas, tablas, informes y casos de uso, no hay definición normalizada. A pesar de que hay buenas prácticas, y hacen uso del sentido común para definir lo que debería ser o no un caso de uso o una pantalla, estas unidades no son suficientes para ser utilizadas como una unidad de medida de contratos. En un extremo el cliente puede manejar el servicio de todo el sistema si se especializa en solo un caso de uso para minimizar el costo; en caso contrario, &nbsp;el proveedor puede dividir la especificación del sistema en casos de uso para aumentar su remuneración.</p><p>El tamaño funcional puede ser considerado una unidad viable de medida en los contratos, precisamente porque son una medida de carácter no técnico, con una definición estándar, y consistente.</p><p>Por otra parte, la contratación de los servicios basado en los resultados entregados, permite al cliente tener más control sobre los costos.</p><h3 dir="ltr">La medición funcional del software</h3><p>La medición funcional mide el software mediante la cuantificación de sus tareas y servicios, es decir, las características que el software proporciona al usuario. En resumen, mide los requisitos funcionales del software.</p><p>La idea es que la medición funcional sea:</p><ul><li dir="ltr">Lo suficientemente simple para reducir al mínimo el costo adicional del proceso de medición.</li><li dir="ltr">Una medida consistente entre los diversos proyectos y organizaciones.</li></ul><p>El resultado de la medición es llamado tamaño funcional y a menudo expresado en una unidad llamada punto de función (PF).</p><p>Hay cinco métodos de medición funcional estándares: IFPUG (ISO/IEC 20926), NESMA (ISO / IEC 24570), Mark II (ISO / IEC 20968), COSMIC (ISO/IEC 19761) y FISMA (ISO/ IEC 29881).</p><h3 dir="ltr">Modelo de costos</h3><p>Un modelo para la prestación de servicios de software basado en el tamaño funcional puede ser representado por las fórmulas siguientes, que en la práctica son similares.</p><p>Esfuerzo = Tamaño x Tasa de entrega (1)</p><p>En esta primera fórmula, el esfuerzo del proyecto que se ejecutará es estimado (en horas) teniendo en cuenta el tamaño (en puntos de función) y una tasa de entrega pre-definida (horas por puntos de función). Esta tasa es definida, de acuerdo con el proveedor y un estudio de &nbsp;productividad del cliente basado en una muestra histórica de proyectos ya implementados. El costo del proyecto se deriva simplemente de la multiplicación del esfuerzo calculado por un valor de horas acordado entre el cliente y el proveedor.</p><p>Costo = Tamaño x Precio por Unidad (2)</p><p>En esta segunda fórmula el costo del proyecto se calcula directamente con el tamaño funcional multiplicado por el precio unitario de este. Para establecer el precio que se ofrece, los proveedores deben tener en cuenta todo el proceso de trabajo definido por el cliente en el Request for Proposal.</p><p>Ambas fórmulas son equivalentes, ya que el esfuerzo se puede convertir en costos, como en el precio unitario es definido (o debería ser definido) según la productividad esperada para el contrato.</p><p>Al igual que las características de los servicios que se exigen en el contrato, el modelo puede ser refinado (y por lo general esto se hace) con el uso de diferentes indicadores de &nbsp;la tasa de entrega (H/PF) o el precio de la unidad ($/PF), calibrado para especificidades de cada tipo de servicio.</p><p>Para organizaciones grandes los procesos de contratación son a menudo largos y costosos. Por lo tanto, el modelo descrito anteriormente se aplica generalmente no en un proyecto individual, sino a un volumen de puntos de función predefinidos para ser utilizados en varios proyectos durante un período por lo general de doce o más meses. &nbsp;Este volumen se determina normalmente basado en los proyectos previstos por el área de sistemas en la planificación estratégica.</p><p>A medida que el tamaño funcional se realice con base a la vista externa del usuario, en contraste con una vista interna de la ingeniería de software, el cliente ejerce el control efectivo y la gestión de contratación. El perfil de los profesionales movilizados o la cantidad de horas trabajadas dejan de ser factores definitivos para el análisis. Se trata de un modelo en el que el tamaño funcional no cumple el papel de la estimación de esfuerzo o costo, sino de prescribir la cantidad que se pagará independientemente de su costo o esfuerzo real.</p><p>Al igual que los contratos de precio fijo, este modelo tiene riesgos. Sin embargo, con una mejor distribución. Las consideraciones acerca de la complejidad del trabajo en sus diversas dimensiones (excepto alcance de las funciones solicitadas y entregadas al usuario), y el perfil y la cantidad de profesionales asignados serán consideradas cuando se defina el precio por unidad ($/PF) o la tasa de entrega (H/PF).</p><p>El precio unitario, junto al tamaño funcional, prescribe la forma en la que el proveedor será recompensado por cada servicio prestado.</p><p>En un análisis específico de cada &nbsp;proyecto entregado, la recompensa (o esfuerzo) aumenta o disminuye en comparación con lo realmente realizado. Este modelo utiliza como base el precio medio (o promedio de productividad) para la derivación del costo. Dado que hay una buena definición de los parámetros de precios, estas variaciones entre los proyectos tienden a anularse entre sí cuando se considera el conjunto de proyectos llevados a cabo en un horizonte de tiempo más largo (por ejemplo, un año).</p><h3 dir="ltr">Beneficios del modelo propuesto</h3><p>Una de las razones para usar el modelo propuesto es que el vocabulario de la medición funcional utiliza la terminología y define elementos de análisis que son independientes de la tecnología utilizada para desarrollar el software. El proceso de medición sólo tiene en cuenta la perspectiva de negocio como se entiende y es válida para el cliente. La eliminación de estos tecnicismos facilita la comprensión entre las partes y es un motor importante para la comunicación entre cliente y proveedor.</p><p>Otra de las ventajas de este método, especialmente para el sector público, es que contratos remunerados por el tamaño funcional permiten auditoría externa de todos los pagos hechos. Algo que no puede ser hecho en un contrato por hora-hombre. Verificar horas trabajadas después del pago es muy difícil. &nbsp;</p><p>Para los contratos basados en los puntos de función, el fraude es fácilmente detectado por la auditoría. A medida que la medición &nbsp;funcional refleje funcionalidades entregadas por los proyectos, no hay manera de que sean falsificados.</p><h3 dir="ltr">Service Level Agreements (SLAs)</h3><p>En este modelo hay interés directo de los proveedores para maximizar el flujo de las demandas entregadas, ya que implica un aumento de los ingresos. Para el cliente esto también es beneficioso, ya que proporciona más capacidad de respuesta a las necesidades de software de la organización.</p><p>Como también hay interés por parte del proveedor para entregar un servicio de calidad, ya que las correcciones implican repetición del trabajo, sin los ingresos asociados, el costo impacta a la rentabilidad del contrato.</p><p>Pronto podremos ver una convergencia de intereses en ambos lados para una rápida entrega y una mejor calidad del servicio entregado. Sin embargo, no se puede prescindir de los Acuerdos de Nivel de Servicio (Service Level Agreements), específicamente en plazo y calidad.</p><p>Cuando hay un retraso en la entrega del servicio, incluso si el cliente tiene la previsibilidad del saldo a pagar, este retraso puede resultar en pérdida de oportunidades para el negocio. Lo mismo se aplica a los defectos, aunque no hay costo adicional para las correcciones, esto puede afectar la fecha de entrega de una solución o incluso provocar un daño muy grande al negocio si la manifestación del defecto ocurre después del despliegue del software. Por lo tanto, es una buena práctica, el uso de SLA’s en los contratos basados en la medición funcional.</p><h3 dir="ltr">Dificultades comunes</h3><p>Una dificultad para la adopción del modelo de contrato basado en el tamaño funcional es la poca madurez en proyectos en muchas organizaciones. Para aquellos que están en un modelo basado en hora-hombre, existe un gran impacto para promover este cambio. La contratación por el tamaño funcional consiste en trabajar enfocado en proyectos, lo que implica una buena planificación y evaluación del alcance. Sin embargo, la falta de planificación, documentación y visibilidad de los resultados producidos es común en contratos por hora-hombre.</p><p>Otro cuidado es no copiar modelos de costos de otras organizaciones, sin la calibración necesaria de sus parámetros con datos históricos propios. Cuando se utilizan parámetros de otras organizaciones (o precio unitario), los costos de la contratación pueden elevarse &nbsp;o los proveedores serán oprimidos hasta llegar al punto de &nbsp;rescindir el contrato.</p><p>Otra dificultad está relacionada con las mediciones, que deben centrar exclusivamente en las necesidades del negocio. Para aquellos que están involucrados en la implementación, a menudo hay una dificultad en la abstracción de la implementación y esto se refleja en una medición a menudo incorrecta (y por lo general, más grande).</p><h3 dir="ltr">Conclusión</h3><p>El modelo de contratación de servicio de software por resultados ha sido madurado principalmente en Brasil y Corea del Sur durante los últimos quince años. En varios casos fueron percibidos &nbsp;mejora de productividad, mejora de la calidad de la documentación de requisitos y resultados entregados con nivel de satisfacción más alto. &nbsp;&nbsp;</p><p dir="ltr"><strong>Referencias</strong></p><ol><li dir="ltr">Vazquez, C. E.; Simões, G. S; Albert, R. M., “Análise de Pontos de Função: Medição, Estimativas e Gerenciamento de Projetos de Software”. &nbsp;13ª ed., São Paulo-Brasil: &nbsp;Editora Érica, 2013.</li><li dir="ltr">International Function Point User Group. <a href="http://ifpug.org">http://ifpug.org</a></li><li dir="ltr">United Kingdom Software Metrics Association. <a href="http://uksma.co.uk">http://uksma.co.uk</a></li><li dir="ltr">Common Software Measurement International Consortium (COSMIC). <a href="http://cosmicon.com">http://cosmicon.com</a></li><li dir="ltr">NESMA. <a href="http://nesma.org">http://nesma.org</a></li><li dir="ltr">Finnish Software Measurement Association (FISMA) <a href="http://fisma.fi">http://fisma.fi</a></li><li dir="ltr">C. Jones. &nbsp;“Conflict and Litigation Between Software Clients and Developers”, Software Productivity Research, Versión 10 . abr. 2001</li></ol><p>&nbsp;</p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p dir="ltr">Guilherme Siquiera Simões es socio y director de FATTO Consultoría y Sistemas, donde actúa como consultor e instructor en servicios de consultoría y capacitación de medición, estimación y requisitos de proyectos de software. Es autor del libro "Análise de Pontos de Função: Medição, Estimativas e Gerenciamento de Projetos de Software", el más vendido en Brasil sobre este tema.</p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Mon, 25 May 2015 05:19:38 +0000 sg 5879 at https://sg.com.mx https://sg.com.mx/revista/47/contratacion-software-basada-resultados#comments Gestión de Requerimientos: El talón de Aquiles de los Proyectos https://sg.com.mx/buzz/ponencias/sg-conferencia-y-expo-2015/gestion-de-requerimientos-el-talon-de-aquiles-de-los <span class="field field--name-title field--type-string field--label-hidden">Gestión de Requerimientos: El talón de Aquiles de los Proyectos</span> <div class="field field--name-field-evento field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Evento</h3> <ul class='links field__items'> <li><a href="/buzz/evento-sg/sg-conferencia-y-expo-2015" hreflang="und">SG Conferencia y Expo 2015</a></li> </ul> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/users/guilhermesimoes" lang="" about="/users/guilhermesimoes" typeof="schema:Person" property="schema:name" datatype="" class="username">guilherme.simoes</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 04/22/2015 - 16:03</span> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Conferencista(s)</h3> <ul class='links field__items'> <li><a href="/buzz/autores/guilherme-siqueira-simoes" hreflang="und">Guilherme Siqueira Simões</a></li> </ul> </div> <div class="text-formatted field field--name-field-embedded-multimedia field--type-text-long field--label-hidden field__item"><p><iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/DSyjdvhANxcBBL" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" width="595"></iframe></p> <div style="margin-bottom:5px"><strong><a href="//www.slideshare.net/RevistaSG/s05-gestion-requerimientosguilhermesimoes" target="_blank" title="Gestión requerimientos">Gestión requerimientos</a> </strong> from <strong><a href="//www.slideshare.net/RevistaSG" target="_blank">Software Guru</a></strong></div> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Un bajo desempeño en la Gestión de Requerimientos tiene un impacto desastroso sobre el éxito de un proyecto. Según el PMI, el 47% de los proyectos que fracasan tienen como causa fundamental una Gestión deficiente de sus Requerimientos. A pesar de toda su importancia, esta área de conocimiento es comúnmente descuidada en la formación de los profesionales.</p> <p>El propósito de esta presentación es abordar:<br /> - ¿Qué es la Gestión de Requerimientos?<br /> - La relación de la Gestión de los Requerimientos con la Gestión de Proyectos<br /> - ¿Cuál es la importancia de la Gestión de Requerimientos para los proyectos?<br /> - Las dificultades comunes en la Gestión de Requerimientos<br /> - Los principales procesos de Gestión de Requerimientos<br /> - El nuevo programa de certificación del PMI: Professional in Business Analysis (PMIPBA)</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Acerca del conferencista</div> <div class="field__item"><p>Guilherme Siquiera Simões es socio y director de FATTO Consultoría y Sistemas,<br /> donde actúa como consultor e instructor en servicios de consultoría y capacitación<br /> de medición, estimación y requerimientos de proyectos de software. Autor del libro<br /> "Análise de Pontos de Função: Medição, Estimativas e Gerenciamento de Projetos de<br /> Software", el más vendido en Brasil sobre este tema.</p> <p>Tiene más de 20 años de experiencia en el desarrollo de sistemas. Graduado en Ciencias de la Computación, Pos-graduado en Gestión Empresarial, certificado como experto en Puntos de Función por el IFPUG, como director de Proyectos por el PMI y Ingeniero de Requerimientos (CPRE-FL) por IREB.</p> </div> </div> <div class="shariff" data-services="[&quot;twitter&quot;,&quot;facebook&quot;,&quot;linkedin&quot;,&quot;reddit&quot;]" data-theme="colored" data-css="min" data-orientation="horizontal" data-twitter-via="RevistaSG" data-mail-url="mailto:info@sg.com.mx" data-backend-url="https://shariff.sg.com.mx/" data-lang="en"> </div> Wed, 22 Apr 2015 21:03:43 +0000 guilherme.simoes 5746 at https://sg.com.mx