Mostrando entradas con la etiqueta Metodología. Mostrar todas las entradas
Mostrando entradas con la etiqueta Metodología. Mostrar todas las entradas

DSN_XP y ADD

 Desarrollo impulsado por imbéciles

DSN_XP se encuentra con estas observaciones clásicas dentro del mundo del desarrollo de software, gracias al gentil aporte de @Ego Sum Tempestas

Original en inglés 

ADD

Las siglas y marcos se siguen acumulando. ¿Por qué?

Algunos dicen que es inmadurez: que el software es todavía una industria joven y que todos los cambios son el camino hacia algunos fundamentos verdaderos. Otros dicen que es porque a la gente del software le gusta inventar cosas y no pueden evitarlo. 
Bueno, digo esto: si vamos a tener docenas de modelos, también podemos tener algunos que sean honestos, aunque cínicos, con respecto a lo que realmente sucede la mayor parte del tiempo.

Desarrollo impulsado por imbéciles (ADD)

Cualquier equipo en el que el idiota más grande toma todas las decisiones importantes es un desarrollo impulsado por imbéciles (asshole driven development). Toda sabiduría, lógica o proceso se va por la ventana cuando el Sr. Imbécil (A) está en la habitación, haciendo cualquier cosa idiota y egoísta que crea que es mejor. Puede que haya reglas y procesos, pero el Sr. A los rompe y la gente los sigue de todos modos.

Desarrollo de disonancia cognitiva (CDD)

En cualquier organización donde existen dos o más creencias divergentes sobre cómo se debe crear el software. La tensión entre esas creencias, tal como se ha librado en varias reuniones y decisiones individuales de los jugadores de ambos lados, define el proyecto más que cualquier creencia individual en sí.

Cover Your Ass Engineering (CYAE) 

La fuerza impulsora detrás de la mayoría de los esfuerzos individuales es asegurarse de que cuando la mierda llegue al ventilador, ellos no tengan la culpa.

Desarrollo por negación (DBD)

Todo el mundo finge que hay un método para lo que se está haciendo y que las cosas van bien, cuando en realidad las cosas son un desastre y el proceso está en el suelo. Cuanto peor se ponen las cosas, más depende la gente de su negación de lo que realmente está sucediendo, o de su aislamiento en su pequeña parte del proyecto, para sobrevivir.

Metodología Get Me Promoted (GMPM)

Las personas escriben código y diseñan cosas para aumentar su visibilidad, satisfacer los caprichos de su jefe y acelerar su camino hacia un aumento o la oficina de la esquina, sin importar qué tan lejos de los objetivos establecidos lleguen sus esfuerzos. Esto incluye permitir que ocurran desastres para que las personas puedan ser héroes, escribir trucos que se vean geniales en el corto plazo pero que se desmoronen después de que el individuo haya seguido adelante, y centrarse más en la superficie del trabajo que en su valor.

DSN_XP y Alistair Cockburn en gratitud constante

 Metodología del software

Metodólogo Alistair Cockburn
DSN_XP entra en contacto con las ideas de Alistair mediante su familia de esquemas estratégicos para equipos de desarrollo de software o CRYSTAL CLEAR

Fuente de conocimientos

Metodología centrada en el potencial humano

Alistair se convierte en una fuente de conocimientos importantes para DSN_XP al poder tener como ejemplo a un investigador del software y metodólogo, todo un estudios de varios artefactos que ha ido estudiando y experimentando en su blog personal. 

Advanced Use Case

Alistair también se vuelve un referente como metodólogo en el uso avanzado de los casos de uso para el diseño de software. DSN_XP venía desarrollando una mirada similar desde nuestro método de modelando avanzado basado en casos de uso y el poder de abstracción que nos brindaba UML.

Manifiesto Agile

Alistair es uno de los mentores del manifiesto agile, de hecho, nuestros registros sobre la concepción del manifiesto y las fotografías que adornan nuestro blog fueron liberadas por el propio Alistair a la comunidad.

IC Agile y el modelado de competencias

Alistair promovió un modelo de certificación que respondía a las necesidades de la comunidad internacional en base a un diseño muy interesante sobre formación de sus estudiantes.

Scrum

Alistair abandona al equipo IC Agile y comienza su gira internacional mediante su capacitación  en Scrum

Corazón de la agilidad

El último esfuerzo metodológico realizado por Alistar se denomina el Corazón de la Agilidad y sintetiza todo el proceso observado a lo largo del tiempo y hasta la fecha, tanto del proceso de capacitaciones como el material pedagógico de entrenamiento.

DSN_XP y los métodos ágiles

 ¿Metodologías ágiles realmente diferentes?


Documento de posición para el taller OOPSLA 2003
Jens Coldewey
Consultoría Coldewey
correo electrónico: jens_coldewey@acm.org 
http://www.coldewey.com

Enfoques de una metodología

Además de considerar los procesos que una metodología supone utilizar, otro tema de interés para estudios es el modelo que subyace a la metodología. Aunque esto está estrechamente relacionado con el valor del sistema, el modelo no soporta juicio ético, como lo hace un sistema de valores.

Hay dos modelos populares para proyectos: el modelo de control y el modelo sistémico.  El modelo de control asume que hay roles de dirección centralizados en un proyecto, individuos capacitados que planifican y gestionan el proyecto. Estos roles incluyen el gerente de proyecto, el arquitecto, el jefe de programación, etc. Con este enfoque, el éxito y el fracaso del proyecto depende principalmente del desempeño de estos roles de control. Me referiré a estos roles como los "gerentes", aunque esto incluye todo tipo de gestión y control. 

Metodologías que utilizan este enfoque usualmente se concentran en los elementos que apoyan esta estructura:
  • Mejorar la comunicación entre los gerentes y los miembros del equipo operativo, como programadores.
  • Proporcionar estructuras de control y presentación de informes para permitir que los gerentes obtengan una buena imagen del estado del proyecto.
  • Asegurar que el trabajo operativo se realice de la manera más uniforme posible para facilitar la planificación, la predicción y control. Se supone que los miembros del equipo desempeñan determinados roles y se intercambian "recursos" capaces.
  • Clara separación de responsabilidades.
El último extremo de esta apreciación es Frederick Taylors, Scientific Management que estableció el terreno para el impulso económico del siglo pasado. La mayoría de los procesos tradicionales siguen este modelo.

Un enfoque alternativo es ver un proyecto como un sistema complejo. Los sistemas complejos tienen algunas características que las estructuras de comando y control no tienen: Su comportamiento es difícil de predecir y son muy flexibles. Controlar un sistema complejo no significa predecir y controlar cada acción única en él. Más bien significa comprender la estructura y las interrelaciones del sistema y configurarlos para que el sistema se adapte a las necesidades. 

El pensamiento sistémico proporciona el conjunto de herramientas apropiado para este tipo de enfoque.
Metodologías basadas en el pensamiento sistémico, ya sea de forma consciente o no, muestran algunas propiedades típicas:
  • Pocas reglas. La mayoría de las reglas establecen circuitos de retroalimentación y comunicación para asegurar que todas las partes del proyecto todavía se dirigen hacia el objetivo del proyecto.
  • La retroalimentación y la comunicación están diseñadas para ser lo más eficientes posible, en lugar de ser rastreable o controlable.
  • Pocos o ningún rol centralizado o jerárquico. Se asume que los miembros del equipo están bien capacitados, personas responsables que sean capaces de organizarse.

Comparación de los enfoques de las metodologías ágiles

La siguiente lista comprueba a qué enfoque pertenecen las diferentes metodologías ágiles:

Desarrollo de software adaptativo: ASD 

Es la única metodología que se basa explícitamente en la teoría de los sistemas adaptativos complejos, se limita a establecer un circuito de retroalimentación. ("Especular, colaborar, aprender") y configurar el entorno para un trabajo de proyecto eficiente. Un representante clásico del enfoque sistémico.

Metodologías Crystal:

El principal punto en común de todas las metodologías Crystal es un taller de verificación de los procesos al menos dos veces por incremento. Además, Cockburn ofrece siete principios a observar en un proyecto. Los roles y las organizaciones solo se proporcionan como sugerencias. Otro ejemplo de enfoque de sistemas

Método de desarrollo de software dinámico: DSDM

Define roles y responsabilidades explícitos como núcleo de la metodología. Se provocan bucles de retroalimentación para la entrega (entrega frecuente, todos los cambios son reversibles) pero no a nivel de proceso. Por tanto, DSMD utiliza un sistema de enfoque para dejar crecer el software pero un modelo de control para gestionar el proyecto.

Programación extrema: XP

Usa solo unas pocas reglas para configurar un entorno en el que el software puede crecer. Por tanto, la parte técnica utiliza claramente un enfoque de sistemas. En cuanto a la metodología XP mostró un desarrollo interesante en los últimos años. Aunque la metáfora de Kent Beck de "Aprender a conducir" apuntaba hacia un modelo de sistemas, declaraciones iniciales como "O haces todo como está escrito o no haces XP" a menudo se interpretaba como una señal para un modelo de control. Al darse cuenta de que estas declaraciones llevaron a XP en una dirección no deseada, la comunidad ahora acuerda la adaptación regular del proceso. Por lo tanto, XP puede ser considerada una metodología de sistemas en la actualidad.

Desarrollo impulsado por Funcionalidades: FDD 

Instala el rol de programador jefe y utiliza diseños basados en actualizaciones de frente al usario. Por lo tanto, FDD en mi percepción claramente utiliza un enfoque de control en lugar de utilizar una visión sistémica, aunque definitivamente es un proceso ligero.

Desarrollo Lean: 

La mayoría de las prácticas técnicas de LD son similares a lo que XP encontró útil, así que técnicamente LD también se basa en un modelo de sistemas. La gestión está muy centrada en auto organización y retroalimentación: indicadores para un modelo de sistema también.

Scrum: 

Define un ciclo de retroalimentación central como instrumento de control principal  que identifica a Scrum como metodología sistémica. Esto se suma al hecho de que scrum define pocos roles con el papel central del "Scrum Master" quien tiene la responsabilidad principalmente de facilitar el proceso en lugar del entregable.

Una conclusión sugerente

Sugiero definir el desarrollo ágil como una metodología basada en una visión sistémica del desarrollo de software. Esta visión conduce a los principios ágiles, así como a muchas metodologías ágiles.

Usar esta definición significaría reevaluar la comprensión actual de qué las metodologías son ágiles y las que no lo son. Según la lista anterior, esto reduciría el "completamente ágil" a metodologías como ASD, Crystal, XP en su forma actual, Lean Development y Scrum. DSDM se considerarían una metodología "técnicamente ágil" y la FDD se consideraría un proceso tradicional pesado.

DSN_XP y el método BOOCH

El método de Booch

DSN_XP en su versión 1.0 encuentra en el estudio de UML los modelos técnicos que eran utilizados por las metodologías que dieron soporte al lenguaje de modelado universal.

Metodología Booch

Fuente de conocimientos DSN_XP

El Método de Booch y su Influencia en DSN_XP 1.0

El desarrollo de software ha evolucionado a lo largo de los años, buscando siempre metodologías que permitan crear sistemas más eficientes, robustos y adaptables. En este contexto, el Método de Booch, con su enfoque en la orientación a objetos, ha dejado una huella significativa. En este artículo, exploraremos este método y su relevancia en el desarrollo de DSN_XP 1.0.

¿Qué es el método de Booch?

El Método de Booch es una metodología de desarrollo de software orientado a objetos creados por Grady Booch en Rational Software Corporation (posteriormente adquirido por IBM). Se centra en cuatro pilares fundamentales:

  • Abstracción: Simplificar la complejidad del sistema mediante la identificación de los aspectos esenciales.
  • Encapsulamiento: Ocultar los detalles de implementación y exponer solo las interfaces necesarias.
  • Modularidad: Dividir el sistema en componentes independientes e interconectados.
  • Jerarquía: Organizar los componentes en una estructura jerárquica para facilitar la comprensión y el mantenimiento.

Componentes Clave del Método

El método se compone de tres elementos principales:

  • Notación: Un lenguaje para representar los modelos del sistema (como UML).
  • Proceso: Las actividades que guían la construcción ordenada de los modelos.
  • Herramientas: Los artefactos que automatizan tareas y ayudan a detectar errores e inconsistencias en los modelos.

Modelos en el Diseño Orientado a Objetos

El diseño orientado a objetos, promovido por Booch, busca crear software resistente al cambio y con una expresión concisa. Se basa en la creación de varios modelos:

  • Modelo Lógico: Representa la estructura conceptual del sistema.
  • Modelo Físico: Describe la implementación física del sistema, incluyendo hardware y software.
  • Modelo Estático: Muestra la estructura del sistema en un momento dado.
  • Modelo Dinámico: Describe el comportamiento del sistema a lo largo del tiempo.

Filosofía y Principios del Diseño según Booch

Booch enfatiza la importancia de una etapa de análisis seguida por una de diseño. El diseño se define como una aproximación disciplinada para resolver un problema, guiando desde los requerimientos hasta la implementación.

Principios clave del diseño:

  • Crear una arquitectura interna clara y sencilla.
  • Equilibrar los requisitos en conflicto.
  • Utilizar modelos para razonar sobre las estructuras y facilitar la toma de decisiones.

Los modelos permiten simular y probar el sistema en condiciones controladas, identificando posibles fallos y realizando ajustes antes de la implementación.

Valores en la Construcción de Sistemas

La construcción de un sistema implica:

  • Satisfacer los requisitos funcionales.
  • Adaptarse a las limitaciones del entorno.
  • Cumplir con los requisitos implícitos y explícitos sobre la forma del artefacto.
  • Respetar las restricciones del proceso de diseño, como el tiempo, el coste y las herramientas disponibles.

El Ciclo de Vida Iterativo e Incremental

Booch recomienda el modelo iterativo e incremental para el ciclo de vida del software. Este enfoque permite refinar la arquitectura a través de iteraciones sucesivas y entregar incrementos funcionales del sistema.

DSN_XP 1.0 y la influencia del método de Booch

DSN_XP 1.0 reconoce la importancia de los modelos técnicos utilizados en las metodologías que dieron origen a UML. Se opone a dos extremos: la anarquía (falta de un ciclo de vida definido) y la dictadura (exceso de rigidez que sofoca la creatividad).

DSN_XP 1.0 promueve un proceso iterativo e incremental, donde se refina la arquitectura orientada a objetos a través de iteraciones sucesivas, incorporando la experiencia de cada iteración. Este enfoque permite converger hacia una solución que cumpla con los requisitos del usuario, siendo a la vez simple, confiable y adaptable.