Document 1
Document 1
Document 1
DESARROLLO DE SOFTWARE
Este documento está disponible en la Biblioteca Digital de la Universidad Católica Argentina, repositorio
institucional desarrollado por la Biblioteca Central “San Benito Abad”. Su objetivo es difundir y preservar
la producción intelectual de la Institución. La Biblioteca posee la autorización del autor para su
divulgación en línea
Cómo citar el documento: Maida, EG, Pacienzia, J. Metodologías de desarrollo de software [en línea].
Tesis de Licenciatura en Sistemas y Computación. Facultad de Química e Ingeniería “Fray Rogelio
Bacon”. Universidad Católica Argentina, 2015. Disponible en:
http://bibliotecadigital.uca.edu.ar/repositorio/tesis/metodologias-desarrollo-software.pdf [Fecha de
consulta:.........
Introduccion
Este trabajo tiene como prospectiva dos objetivos, el primero de ellos pretende brindar una
descripción del marco teórico de referencia de las metodologías de desarrollo ágil presentando
algunas como: XP, CRYSTAL, SCRUM. El segundo objetivo busca analizar algunas características
esenciales de estas metodologías para adaptarlas al contexto de la ingeniería del software. En
la comunidad de la ingeniería delsoftware, se está viviendo con intensidad un debate abierto
entre los partidarios de las metodologías tradicionales (referidas como “metodologías
pesadas”) y aquellos que apoyan las ideas emanadas del “Manifiesto Ágil”.
La presente tesis se orienta a realizar una contribución en el área de metodología para el
diseño, desarrollo y evaluación de software, necesarios para abordar proyectos con una
metodología diferente a la estructurada.
Actualmente las metodologías de ingeniería de software pueden considerarse como una base
necesaria para la ejecución de cualquier proyecto de desarrollo de software que se considere
serio, y que necesite sustentarse en algo más que la experiencia y capacidades de sus
programadores y equipo. Estas metodologías son necesarias para poder realizar un proyecto
profesional, tanto para poder desarrollar efectiva y eficientemente el software, como para que
sirvan de documentación y se puedan rendir cuentas de los resultados obtenidos.
El objetivo general de la puesta en práctica de una metodología del software es construir un
producto de alta calidad de una manera oportuna. Dicha selección implica un conjunto de
principios fundamentales que se deben seguir y cumplir. Estos incluyen actividades explícitas
para el entendimiento del problema y la comunicación con el cliente, métodos definidos para
representar un diseño, mejores prácticas para la implementación de la solución y estrategias y
tácticas sólidas para las pruebas.
Que entiende por metodologias de desarrollo
de software
Metodologias Metodologias
agiles tradicionales
Basadas en heurísticas Basadas en normas
provenientes de prácticas de provenientes de estándares
producción de código seguidos por el entorno de
desarrollo
Especialmente preparados Cierta resistencia a los
para cambios durante el cambios
proyecto
Impuestas internamente (por Impuestas externamente
el equipo)
Proceso menos controlado, Proceso mucho más
con pocos principios controlado, con numerosas
políticas/normas
No existe contrato Existe un contrato prefijado
tradicional o al menos es
bastante flexible
El cliente es parte del equipo El cliente interactúa con el
de desarrollo equipo de desarrollo
mediante reuniones
Grupos pequeños (<10 Grupos grandes y
integrantes) y trabajando en posiblemente distribuidos
el mismo sitio
Pocos artefactos Más artefactos
Pocos roles Más roles
Menos énfasis en la La arquitectura del software
arquitectura del software es esencial y se expresa
mediante modelos
Poca documentación Documentación exhaustiva
Muchos ciclos de entrega Pocos ciclos de entrega
Simplicidad: esto se refiere a hacer solo las cosas que sean absolutamente necesarias evitando
el desperdicio, elaborar las cosas de forma que sea fácil entender por otros y abordar solo
requisitos conocidos.
Coraje: se refiere al actuar sobre situaciones que pueden ser retadoras para el equipo, como,
por ejemplo:
Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para
el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el
aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo.
Kanban: Kanban se basa en la idea de que el trabajo en curso debería limitarse, y sólo
deberíamos empezar con algo nuevo cuando un bloque de trabajo anterior haya sido
entregado o ha pasado a otra función posterior de la cadena. La metodología Kanban utiliza
un mecanismo de control visual para hacer seguimiento del trabajo conforme este viaja a
través del flujo de valor. El Kanban implica que se genera una señal visual para indicar que
hay nuevos bloques de trabajo que pueden ser comenzados porque el trabajo en curso
actual no alcanza el máximo acordado. El aporte principal de Kanban a las metodologías
agiles es que a través de la implementación de tarjetas visuales, proporciona transparencia
al proceso, ya que su flujo de trabajo expone los cuellos de botella, colas, variabilidad y
desperdicios a lo largo del tiempo y todas las cosas que impactan al rendimiento de la
organización en términos de la cantidad de trabajo entregado y el ciclo de tiempo
requerido para entregarlo.
Como resultado, Kanban propicia la evolución incremental de los procesos existentes, una
evolución que generalmente está alineada con los valores de las metodologías agiles.
Kanban no genera una revolución radical de la forma en la que las personas trabajan, sino
que sugiere un cambio gradual.
Las principales ventajas de esta metodología es que es muy fácil de aplicar, actualizar y asumir por parte
del equipo. Además, se destaca por utilizar una técnica de gestión de las tareas muy visual y práctica, lo
que permite ver a simple vista el estado de los proyectos, así como también pautar el desarrollo del
trabajo de manera efectiva.
Calidad garantizada: todo lo que se hace debe salir bien en la primera instancia, no hay
margen de error.
Definir el flujo de trabajo de los proyectos: para ello, simplemente deberemos crear nuestro
propio tablero, que deberá ser visible y accesible por parte de todos los miembros del
equipo.
Cada una de las columnas corresponderá a un estado concreto del flujo de tareas, que nos
servirá para saber en qué situación se encuentra cada proyecto. El tablero debe tener
tantas columnas como estados por los que pasa una tarea, desde que se inicia hasta que
finaliza. A diferencia de SCRUM, una de las peculiaridades del tablero es que este es
continuo. Esto significa que no se compone de tarjetas que se van desplazando hasta que
la actividad queda realizada por completo. En este caso, a medida que se avanza, las
nuevas tareas se acumulan en la sección inicial, de manera que en las reuniones periódicas
con el cliente se priorizan y se colocan dentro de la sección que se estima oportuna.
Dicho tablero puede ser específico para un proyecto en concreto o bien genérico. No hay unas
fases del ciclo de producción establecidas sino que se definirán según el caso en cuestión,
o se establecerá un modelo aplicable genéricamente para cualquier proyecto de la
organización.
Visualizar las fases del ciclo de producción. Al igual que Scrum, Kanban se basa en el
principio de desarrollo incremental, dividiendo el trabajo en distintas partes. Esto significa
que no hablamos de la tarea en sí, sino que lo dividimos en distintos pasos para agilizar el
proceso de producción.
Normalmente cada una de esas partes se escribe en un post-it y se pega en el tablero, en la
fase que corresponda. Dicho post-it contiene, normalmente, la descripción de la tarea con
la estimación de horas, la información básica para que el equipo sepa rápidamente la carga
total de trabajo que supone. Además, se pueden emplear fotos para asignar responsables
así como también usar tarjetas con distintas formas para poner observaciones o indicar
bloqueos.
Al final, el objetivo de la visualización es clarificar al máximo el trabajo a realizar, las tareas
asignadas a cada equipo de trabajo , así como también las prioridades y la meta asignada.
Stop Starting, start finishing. Este es el lema principal de la metodología Kanban. De esta
manera, se prioriza el trabajo que está en curso en vez de empezar nuevas tareas.
Precisamente, una de las principales aportaciones del Kanban es que el trabajo en curso
debe estar limitado y, por tanto, existe un número máximo de tareas a realizar en cada fase;
no se puede abrir una nueva tarea sin finalizar otra.
De esta manera, se pretende dar respuesta al problema habitual de muchas empresas de
tener muchas tareas abiertas pero con un promedio de finalización muy bajo. Aquí lo
importante es que las tareas que se abran se cierren antes de empezar con la siguiente.
Control del Flujo. A diferencia de SCRUM, la metodología Kanban no se aplica a un único
proyecto, sino que mezcla tareas y proyectos. Se trata de mantener a los trabajadores con
un flujo de trabajo constante, las tareas más importantes en cola para ser desarrolladas y
un seguimiento pasivo para no tener que interrumpir al trabajador en cada momento.
Asimismo, dicha metodología de trabajo nos permite hacer un seguimiento del trabajo
realizado, almacenando la información que nos proporcionan las tarjetas.
Las tres reglas de Kanban
1. Mostrar el proceso
2. Limitar el trabajo en curso
3. Optimizar el flujo de trabajo
En las metodologías ágiles, Scrum en particular, el rol del Product Owner (PO) es asumido
frecuentemente por una persona con conocimientos sólidos respecto de los usuarios, el
mercado, la competencia y las tendencias de futuro para el dominio o el tipo de sistema que se
está desarrollando. El desafío del PO es construir una visión del producto y luego plasmarla en
historias de usuario (user stories), que le ayudarán a transmitir esa visión al equipo de
desarrollo que va a construir el software. En este trabajo se plantea la problemática vinculada a
la creación, priorización, validación y aceptación del producto obtenido a partir de las user
stories; para lo cual se requieren conocimientos técnicos para los que el PO no siempre está
preparado.
HABILIDADES ESPERADAS PARA EL PRODUCT OWNER
se propone un conjunto de habilidades esperadas que complementan el perfil. Las mismas se
exponen a continuación: Convertir conocimiento tácito en explícito: El conocimiento tácito se
trata del conocimiento personal o propio del individuo, este conocimiento se halla
profundamente imbricado en la mente de la persona y ampliamente relacionado con la
experiencia práctica de la misma. El conocimiento explícito, ese otro tipo de conocimiento,
caracterizado por ser más formal y sistemático, que puede ser transmitido al equipo de
desarrollo.
En la metodología Scrum, uno de los tres roles en los equipos es el denominado Producto
Owner (en adelante, PO). El PO en un proyecto gestionado con Scrum es responsable de
maximizar el valor del producto y el trabajo del equipo de desarrollo, también, es la única
persona responsable de administrar el backlog del producto. Por este motivo, es usual decir
que el PO necesita mirar en al menos dos direcciones al mismo tiempo. Por un lado, debe
comprender suficientemente bien las necesidades y prioridades de los interesados de la
organización, los clientes y los usuarios como para actuar como su voz y, por otro lado, debe
comunicarle al equipo de desarrollo qué producto software construir y el orden en el cual
construirlo (entre otros aspectos). El propósito del proyecto es estudiar algunos aspectos del rol
del Product Owner tal cual se lo desempeña en la industria, de modo de comparar las prácticas
industriales con la propuesta oficial del desempeño y función de ese rol en los equipos Scrum.
El enfoque metodológico consistió en la confección de un cuestionario, la realización de
entrevistas cualitativas a informantes claves, la recolección y preparación de datos para su
análisis. Los resultados permitieron dar respuesta a la mayoría de las preguntas de
investigación, el destaque de la importancia de las habilidades blandas como el trabajo en
equipo y la comunicación, el hecho de ver en la industria una alta fidelidad a la implementación
de las ceremonias dentro del marco de Scrum y que se observaron algunos problemas o
dificultades con los que un PO puede encontrarse, por ejemplo problemas de descoordinación
causado por fallas en la comunicación, o problemas al momento de manejar las expectativas y
presiones que llegan del lado del negocio y del equipo .
Cual es el rol de un buen scrum master
también indica como responsabilidades del Scrum Master: conocer el estado de las tareas,
identificar barrera y dependencias que impidan el flujo de Scrum y observar y resolver
conflictos personales.
Conclusiones
En algunas tesis revisadas, el criterio de selecciÛn de la metodologÌa, es bastante subjetivo. Por
ello se ha buscado de establecer una escala ordinal de valoraciÛn de la importancia de los
criterios de selecciÛn, hecho que contribuye a una mejora en el proceso de selecciÛn pero que
no desaparece el nivel de subjetividad inherente al proceso En tal sentido, los autores se
comprometen, en un primo artÌculo, a enfocar el problema desde el punto de vista del proceso
analÌtico jer·rquico
En esta nueva generación, las metodologías tradicionales de desarrollo de software fueron
quedado obsoletas en determinados sectores, en los que la propia demanda de los
usuarios es más rápida que la capacidad de producción de las empresas ancladas a las
viejas metodologías de gestión de proyectos de sistemas informáticos. Este gran impacto
en las tecnologías, ha generado la necesidad de encontrar y crear nuevas metodologías de
trabajo y gestión, que aseguren la entrega en tiempo y forma del producto. Esta necesidad
de calidad, eficiencia, flexibilidad y rapidez en la entrega de un producto informático se
volvió prioridad y en conjunto con su necesidad se crearon las nombradas Metodologías
Agiles. El mundo en general y la vida de las personas, día a día se vuelve más ágil en todos
sus aspectos, siendo prácticamente inevitable la evolución en los sistemas de información
para poder atacar ésta demanda.
https://repositorio.uca.edu.ar/handle/123456789/522
Amador Duran Toro, Beatriz Bernrdez Jiménez, “Metodología para el análisis de de requisitos
de sistemas de software versión 2.2”, Universidad de Sevilla, departamento de Lenguajes y
Sistemas informáticos, escuela Técnica superior de Ingeniería Informática, Diciembre de 2001.
Roger S.Pressman. “Ingeniería del Software: un enfoque práctico”, de segunda edición, Editorial
McGraw Hill. 1990. Manuel Díaz Rodríguez, Antonio Moña Gómez, “Ingeniería de Software
Especificación”, Departamento de Lenguajes de Ciencias de la computación, Universidad de
Málaga. Bruce I. Blum, “Software Engineering: A Holistic View”. Dorothy Graham, Erik Van
Veenendaal, Isabel Evans y Rex Black, “Foundations of Software Testing - ISTQB® Certification”.
2007. Duvall, Paul M., “Continuous Integration. Improving Software Quality and Reducing
Risk”. 2007. Hans Van Vliet, “Software Engineering. Principles and Practice”. Tercera edición.
2002. Ian Sommerville, “Software Engineering”. Sexta Edición. 2001. Ivar Jacobson, Grady
Booch y James Rumbaugh, “The Unified Software Development Process”. 1999. Kent Beck,
“Test-Driven Development by Example”. Kent Beck, Martin Fowler, “Planning Extreme
Programming”. 2000. Ken Schwaber, Mike Beedle, “Agile Software Development with
SCRUM”. 2008. Lawrence-Pfleeger y Shari, “Software Engineering: Theory and Practice”.
1998. Mitchel H. Levine, “Analyzing the Deliverables Produced in the Software Development
Life Cycle”. 2000. Pierre Bourque y Robert Dupuis, “Guide to the Software Engineering Body
of Knowledge”. 2004. Robert C. Martin, “Agile Software Development, Principles, Patterns,
and Practices”. Roger S. Pressman, “Software Engineering. A practitioner’s Approach”. Quinta
Edición. 2001. Ron Burback, “Software Engineering Methodology”. 1998. Tong Ka lok, Kent,
“Essential Skills for Agile Development”. Beck, K. “Extreme Programming Explained: Embrace
Change”. Boston: Addison-Wesley. 2000. Beck, K. Martin F. “Planning Extreme Programming”.
Boston: Addison-Wesley. 2001. Canós, J. H.; Letelier, P.; Penadés, M. C. “Metodologías ágiles
en el desarrollo del software”. Valencia: Universidad de Valencia. 2004. Cockburn, A. “Agile
Software Development”. Boston: Addison-Wesley. 2001. Cronin, G. “Extreme Solo: A Case
Study in Single Developer extreme Programming”. University of Auckland. 2003. Highsmith, J.
“Agile Software Development Ecosystems”. Boston: Addison-Wesley. 2002. Reynoso, C.
“Métodos heterodoxos en desarrollo del software”. Buenos Aires: Universidad de Buenos Aires.
2004. Metodologías de Desarrollo de Software Tesis Final – Cátedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computación
______________________________________________________________________ 113 | P á
g i n a Salo, J. H.; Abrahamson, P.; Ronkainen, J.; Warsta, J. “Agile Software Development”.
2002. Schwaber, K.; Beedle, M. “Agile Software Development with Scrum”. Nueva Jersey:
Prentice Hall. 2002. Wake, W. C. “Extreme Programming Explored”. Boston: Addison-Wesley.
2002. Boehm, Barry W., “A Spiral Model of Software Development and Enhancement”, IEEE
Computer, Vol.21, No 15, pp.61-72. Mayo 1988. Martin, J., “Rapid Application Development”,
Macmillan Inc., New York. 1991. Beck, Kent, “Extreme Programming Explained”, Addison-
Wesley the XP Series, 2000. Alistair Cockburn. “Balancing Lightness with Sufficiency”.
Septiembre 2000. Pérez S. Jesús, “Metodologías Ágiles: La ventaja competitiva de estar
preparado para tomar decisiones lo más tarde posible y cambiarlas en cualquier momento”.
Artículo de Agile Spain. Grupo ISSI, Metodologías Ágiles en el Desarrollo de Software, Artículo
de Grupo ISSI Noviembre 2003. Acebal F.César, Cueva L. Juan, “EXtreme Programming (XP):
un nuevo método de desarrollo de software, Articulo de Novática”. Letelier P., Penadés C.,
“Metodologías ágiles para el desarrollo de Software: eXtreme Programming (XP)”, Universidad
Politécnica de Valencia. Shenone M. Hernán, “Diseño de una metodología Ágil de Desarrollo
de Software”, Tesis de Grado en Ingeniería en Informática, Universidad de Buenos Aires.
Página de Microsoft: MSDN en Español, “Métodos Heterodoxos en Desarrollo de Software”,
Artículo de Carlos Reynoso – Universidad de Buenos Aires, Abril del 2004.
REFERENCIAS BIBLIOGR£FICAS [1] Avison, D. and G. Fitzgerald, (1995). Information Systems
Development: Methodologies, Techniques, and Tools. McGraw-Hill. [2] Brooks, Fred (1995). The
Mythical Man-Month: Essays on Software Engineering, Anniversary Edition. Ed. Addison
Wesley. 2da edition. [3] CanÛs, Joseph (2005). Métodologías Ágiles en el Desarrollo de
Software. Universidad PolitÈcnica de Valencia. [4] Derniame, J (1999). Software Process:
Principles, Methodology, Technology. Lecture Notes in Computer Science 1500 Springer 1999,
ISBN 3-540-65516-6 BibTeX [5] Dijkstra E (1976). A Discipline of Programming. Prentice Hall,
Universidad de Texas. [6] Georgiadou, E. (2003) Software Proces And Product Improvement: A
Historical Perspective. Cybernetics and Systems Analysis. Vol. 39, N.° 1 2003. [7] RÌos, Edgar y
Wilson Suntaxi (2008). Desarrollo de un sistema inform·tico para los procesos de cosecha y post
cosecha de la camaronera Pampas de Cayanca. Tesis de grado, Facultad de ingenierÌa de
sistemas, Escuela PolitÈcnica Nacional, Quito.