2008-10-17 112 views
20

'Metáfora' parece ser uno de los preceptos menos entendidos de XP (Programación Extrema) aunque se supone que es (¿uno de?) El más importante.
Es difícil de agarrar y supuestamente 'la bombilla sobre su cabeza cuando la recibe'. La metáfora parece ser un frente para 'la programación es un arte místico' ... los otros son relativamente fáciles de seguir. He leído bastantes libros y luego algunos ... pero sigue siendo confuso.¿Qué es una metáfora en el contexto de XP?

  1. Entonces, ¿cómo identifico una metáfora para el sistema en desarrollo?
  2. ¿Cómo sé si es bueno? ¿Qué hace que una buena metáfora sea buena? edición-aclaración: ¿Puede una mala metáfora hacer más daño que bien?
  3. ¿Qué habilita?
  4. ¿Cómo me hago bueno encontrando metáforas ... o mejor de lo que soy actualmente?

Respuesta

5

Hay un documento here. Sin embargo, un buen ejemplo es éste

 
The metaphor has two purposes. The first is the communication described above. A user 
ought to have an easier time speaking and giving examples about a “chameleon” than 
about a window that changes transparency. A second reason is that the metaphor is 
supposed to contribute to the team’s development of a software architecture. 

En cuanto a encontrar uno, la búsqueda de lo ideal es una metáfora de su proyecto debe ser algo muy fácil. Lo que quiero decir con eso es que la metáfora debe ser algo trivial que cualquiera pueda entender, incluso alguien sin ningún conocimiento técnico o incluso ninguna idea sobre su sistema en particular (como el ejemplo del Camaleón).

En cuanto a algunos de los beneficios (levantado directamente del papel)

 
- The metaphor has been helpful in figuring out the overall design of the program. 
- The metaphor has helped the team find a common vocabulary. 
- We often use the metaphor in conversations with each other. 
- We often use the metaphor in conversations with our customer. 
- The metaphor is useful in helping everyone reach agreement about our 
requirements. 
+0

Bueno, el papel parece haber descartado la metáfora como 'casi aceite de serpiente' :) ¿Podría ser que no sabían o no entendían el concepto? – Gishu

+0

Consulte mi respuesta a continuación - http://stackoverflow.com/a/26769973/48767, que aclara algunos de los hallazgos del documento de Tomayko y Herbsleb. En mi opinión, el experimento no se enmarcó correctamente, ya que no se deben usar metáforas en el vacío. – Michael

3

La idea de una metáfora en la programación extrema es el desarrollo de una visión común de cómo funciona el programa. En el mejor de los casos, una metáfora es una simple descripción evocativa de cómo funciona el programa.

De Agile Business Coach:

metáforas son una poderosa enseñanza herramientas. Se usan en un gran número de campos . El objetivo de una metáfora es crear un puente de entendimiento: La persona tratando de explicar una nueva idea o concepto los intentos de encontrar una marco común de referencia entre sí y la persona que están explicando la idea a. A continuación, explican la nueva idea utilizando el marco común de referencia

Ahora a sus preguntas.

Entonces, ¿cómo identifico una metáfora para el sistema en desarrollo?

Una buena metáfora puede proporcionar rápidamente suficiente información para comprender a un nivel alto el dominio y el funcionamiento de un sistema. Como ejemplo, podemos decir "este programa funciona como una colmena de abejas, saliendo para el polen y devolviéndolo a la colmena" como una descripción para un sistema de recuperación de información basado en agentes. Por lo tanto, debe buscar analogías con situaciones del mundo real, ya que es más probable que se entiendan más rápidamente y todos puedan obtener el mismo ritmo con respecto a la funcionalidad del sistema.

¿Cómo sé que es una buena? ¿Qué hace que una buena metáfora sea buena?

La idea es utilizar un sistema común de nombres o analogías para asegurarse de que todos entiendan cómo funciona el sistema y dónde buscar la funcionalidad que está buscando, o para encontrar el lugar adecuado para poner la funcionalidad que está a punto de agregar Una metáfora es más buena ya que más usuarios en presencia de una metáfora obtienen una visión y comprensión inmediata del sistema.

¿Qué es lo que permite?

Permite una comprensión global mínima rápida del propósito del sistema y el funcionamiento basado en una terminología común que todos puedan entender más fácilmente.

¿Cómo obtengo buenos en metáfora hallazgo ... o mejor de lo que soy actualmente?

Con práctica y mejoras continuas. Asegúrese de que cada iteración se muestre a una masa significativa de personas para evaluar la eficacia de la metáfora. En el camino aprenderás mucho y escribirás rápidamente buenas metáforas. Lo considero un ejercicio viviente casi porque las personas con más experiencias de vida pueden proporcionar metáforas más significativas sin siquiera darse cuenta de que lo están haciendo.

Consulte aquí para obtener un artículo detallado sobre XP que también cubre metaphors.

0

Las metáforas permiten que el equipo tenga una comprensión común del proyecto. Es una herramienta útil para superar la barrera de la falta de comunicación que casi cualquier equipo tiende a tener debido a los diferentes antecedentes/perspectivas. No tiene que usarlos, pero es útil, especialmente cuando trabaja en un área o en un tipo de aplicación con la que sus desarrolladores no tienen experiencia previa. Para mí, un buen ejemplo de metáfora es la famosa imagen tree swings. Los desarrolladores nunca trabajaron para ofrecer el "giro del neumático" porque nunca se encontró la metáfora adecuada. En este sentido, el concepto de metáfora es un poco similar al concepto de Visión en RUP pero, por lo que yo entiendo, se enfoca más en el aspecto técnico del desarrollo.

En respuesta a sus preguntas:

  1. intentar encontrar algo a lo que se describe el sistema muy bien. Si intentara hacer eso, trataría de describir los componentes principales por separado.
  2. Ver si se pega. Si todos entienden inmediatamente de lo que estás hablando, funciona. Si no es así, prueba con otra cosa. Tienes que ver una "chispa de reconocimiento" en los ojos del equipo.
  3. El uso de la metáfora permite a todos ver la arquitectura de la aplicación/aplicación desde la misma perspectiva.
  4. Realmente depende de tu forma de pensar. Las metáforas son poéticas y "suaves"; puede que nunca quieras volverte bueno con ellas :) Sugeriría leer más libros de "ficción" ya que ayudan a tu mente a obtener más información sobre las metáforas

Y recuerda - una metáfora no podría extenderse indefinidamente. No esperes que sean ideales.

9

Metáfora es algo que empiezas a usar cuando tu madre te pregunta en qué estás trabajando e intentas explicarle los detalles. Cómo lo encuentras es muy específico del proyecto. Use su sentido común o encuentre al tipo de su equipo que sea bueno para explicarle cosas técnicas a los clientes de una manera que sea fácil de entender.

Lo que sugiere XP en mi opinión son los siguientes:

  • tratar de diseñar un sistema que es fácil de explicar el uso de analogías de la vida real. Sus sistemas son complejos, trate de usar un diseño, donde la relación y las interacciones entre los subcomponentes sean claras y se asemejen a algo que las personas con sentido común ya han visto.
  • Usa las analogías en todas las comunicaciones: código fuente, planificación de reuniones, hablar con los usuarios o abandonar a Dios, escribiendo documentación. Si encuentra que los conceptos que utiliza no se ajustan a alguna área, trate de encontrar una metáfora mejor.

Si tiene problemas para introducir una metáfora, quizás el problema esté en otra parte. Es posible que tenga un diseño que no sea apto para XP, o que tenga una cultura empresarial en la que, por ejemplo, los desarrolladores utilicen un idioma diferente al de los profesionales de marketing. Ambos atributos del proyecto pueden vivir fácilmente y llevar su proyecto al éxito, pero será más difícil aceptar XP a menos que realice un cambio en estas áreas.

+3

¿Qué es un 'diseño no apto para XP'? – Gishu

1

Aquí es a summary from an experience report we published at the Agile conference hace unos años.

The paper goes into a lot more detail, pero para resumir, en nuestra experiencia había 5 rasgos clave que garantizan una buena metáfora:

  1. representa un solo punto de vista.
  2. Ofertas con un solo tipo de estructura.
  3. Brinda una guía clara sobre las decisiones de diseño.
  4. Arroja luz sobre las propiedades del sistema.
  5. Aprovecha una experiencia compartida.

Corolario: Incluso una buena metáfora todavía requiere una explicación.

La idea básica es que quieres contar una historia que te permita capturar la esencia de una "carga de información". Cuanto más específico puedas mejorar, tendrás múltiples metáforas en tu sistema. Lo más importante es evitar estirar demasiado la metáfora. En última instancia, es un mecanismo de comunicación y memoria para recordar información más detallada que se decidió y discutió durante una conversación más profunda.

¿Puede una mala metáfora hacer daño? Solo cuando no tienes la "carga útil de información" para respaldarlo. Una metáfora en realidad no se sostiene por sí misma. Entonces, una metáfora es tan mala o dañina como las historias que la acompañan. Mientras lo tengas en mente, deberías estar bien.

Cuestiones relacionadas