2008-10-17 5 views
20

«Метафора», по-видимому, является одной из наименее понятных заповедей XP (Extreme Programming), хотя она должна быть (одна из?) Самой важной.
Трудно понять и, возможно, «лампу над головой, когда вы ее получите». Метафора кажется фронтом для того, чтобы «программирование было мистическим искусством». Остальным относительно легко следовать. Я прочитал немало книг, а затем некоторые ... но он остается туманным.Что такое метафора в контексте XP?

  1. Как определить метафору для разрабатываемой системы?
  2. Как я знаю его хороший? Что отличает хорошую метафору? edit-clarification: Может ли плохая метафора принести больше вреда, чем пользы?
  3. Что это такое?
  4. Как мне получить метафору, находящуюся ... или лучше, чем я сейчас?

ответ

5

Бумага here. Но хороший пример это один

 
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. 

Что касается нахождения одного, в идеале найти метафору для вашего проекта должно быть что-то очень легко. Я имею в виду, что метафора должна быть чем-то тривиальным, что любой может понять, даже кто-то, у кого нет технических знаний или даже какой-либо идеи о вашей системе в частности (например, пример Chameleon).

Что касается некоторых льгот (сняты непосредственно из бумаги)

 
- 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

Хорошо, что бумага, похоже, отклонила метафору как «почти масло Снейка» :) Может быть, они не знали или не понимали концепцию? – Gishu 2008-10-17 16:34:15

+0

См. Мой ответ ниже - http://stackoverflow.com/a/26769973/48767, в котором разъясняются некоторые выводы из статьи Томайко и Хербслеба. По-моему, эксперимент был неправильно сформулирован, так как вы не должны использовать метафоры в вакууме. – Michael 2015-06-03 17:50:55

3

Идея метафоры в экстремальном программировании заключается в разработке общего видения того, как работает программа. В лучшем случае метафора представляет собой простое запоминающееся описание того, как работает программа.

От Agile Business Coach:

Метафор являются мощным учением инструментов. Они используются в большом количестве полей . Цель метафоры заключается в создать мост взаимопонимания: людей пытаются объяснить новую идею или концепции пытается найти общий отсчета между собой и человеком, которого они объясняющие идеи. Затем они объясняют новую идеи, используя общую систему ссылки

Теперь на ваши вопросы.

Как определить метафору для Система в стадии разработки?

Хорошая метафора может быстро предоставить достаточно информации для понимания на высоком уровне домена и функционирования системы. В качестве примера мы можем сказать, что «эта программа работает как куст пчел, выходит на пыльцу и возвращает ее в улей» в качестве описания для поисковой системы на основе агентов. Таким образом, вы должны стремиться к аналогам с реальными ситуациями в мире, поскольку их, скорее всего, легче понять, и каждый может получить одинаковые темпы в отношении функциональности системы.

Как узнать его хороший? Что делает хорошей хорошей метафорой?

Идея состоит в том, чтобы использовать общую систему имен или аналогий, чтобы быть уверенными в том, что все понимают, как работает система и где искать нужную функциональность, или найти нужное место для размещения функциональность, которую вы собираетесь добавить. Метафора более хороша, так как все больше пользователей в присутствии метафоры получают немедленное представление и понимание системы.

Что это такое?

Это обеспечивает быстрое минимальное глобальное понимание системной цели и функционирования на основе общей терминологии, которую каждый может понять легче.

Как получить хорошо метафора нахождения ... или лучше, чем я в настоящее время?

С практикой и постоянными улучшениями. Убедитесь, что каждая итерация показана значительной массе людей для оценки эффективности метафоры. По пути вы многому научитесь и быстро напишите хорошие метафоры. Я считаю это живым упражнением почти потому, что люди с большим жизненным опытом могут предоставить более значимые метафоры, даже не осознавая, что они это делают.

См. Здесь подробную статью о XP, которая также охватывает metaphors.

0

Метафоры позволяют команде иметь общее представление о проекте. Это полезный инструмент для преодоления барьера, связанного с недоразумением, который, как правило, имеет почти любая команда из-за разных факторов/перспектив. Вам не обязательно использовать их, но это помогает, особенно когда вы работаете в какой-либо области или на каком-либо типе приложений, у ваших разработчиков нет предшествующего опыта. Для меня хорошим примером метафоры является знаменитое изображение tree swings. Разработчики никогда не работали над тем, чтобы «размахивать», потому что правильная метафора так и не была найдена. В этом смысле концепция метафоры немного похожа на концепцию Vision в RUP, но, насколько я понимаю, она больше ориентирована на техническую сторону развития.

В ответ на вопросы:

  1. Попробуйте найти то, что вам описывает систему красиво. Если я попытаюсь сделать это, я попытаюсь описать основные компоненты отдельно.
  2. Посмотрите, придерживается ли оно. Если все сразу поймут, о чем вы говорите, это работает. Если это не так - попробуйте что-то еще. Вы должны увидеть «искра признания» в глазах команды.
  3. Использование метафоры позволяет всем видеть архитектуру приложения/приложения из той же перспективы.
  4. Это действительно зависит от того, как вы думаете. Метафоры являются поэтическими и «мягкими» - вы, возможно, никогда не захотите с ними поправиться :) Я бы предложил читать больше книг типа «фантастика», поскольку они помогают вашему мнению получить больше информации для метафор

И помните, - метафора не могла растянуться бесконечно. Не ожидайте, что они будут идеальными.

9

Метафора - это то, что вы начинаете использовать, когда ваша мать спрашивает, над чем вы работаете, и пытаетесь объяснить ей детали. Как вы находите, это очень специфично для проекта. Используйте свой здравый смысл или найдите парня в своей команде, который хорошо разбирается в технических вопросах для клиентов таким образом, который легко понять.

Что XP предполагает, на мой взгляд, являются следующие:

  • Попробуйте разработать систему, которая легко объяснить с помощью реальных аналогий. Ваши системы сложны, попробуйте использовать дизайн, где отношения и взаимодействия между субкомпонентами ясны и напоминают то, что люди с здравым смыслом уже видели.
  • Используйте аналогию во всех сообщениях: исходный код, планирование встреч, разговор с пользователями или Бог оставить, написание документации. Если вы обнаружите, что используемые вами понятия не подходят для какой-либо области, попробуйте найти лучшую метафору.

Если у вас возникли проблемы с метафорой, возможно, проблема в другом месте. У вас может быть дизайн, не подходящий для XP, или у вас может быть культура компании, где, например, разработчики используют другой язык, чем маркетологи. Оба атрибута проекта, с которыми вы легко можете жить, и нести свой проект к успеху, но будет сложнее охватить XP, если вы не внесете изменения в эти области.

2

Ну, я исследовал вопрос чуть более дня и придумал немного лучше (чем когда я разместил вопрос), возьмите метафоры. Это оказалось немного длиннее .. поэтому не включил его здесь и опубликовал в моем блоге. JFYI.

http://madcoderspeak.blogspot.com/2008/10/who-moved-my-metaphor.html

1

Вот a summary from an experience report we published at the Agile conference несколько лет назад.

The paper goes into a lot more detail, но в итоге, в нашем опыте было 5 ключевыми чертами, которые делают для хорошей метафоры:

  1. Представляет один вид.
  2. Предлагает только один тип структуры.
  3. Дает четкие указания относительно проектных решений.
  4. Направляет свет на свойства системы.
  5. Приводит к общему опыту.

Следствие. Даже хорошая метафора по-прежнему требует объяснения.

Основная идея заключается в том, что вы хотите рассказать историю, которая позволяет вам запечатлеть суть «информационной полезной нагрузки». Чем более конкретным вы можете быть лучше, тем больше у вас будет метафоры в вашей системе. Самое главное, не слишком сильно растягивать метафору. В конечном счете это механизм связи и памяти для вызова более подробной информации, которая была решена и обсуждена во время более углубленного разговора.

Может ли вредная метафора навредить? Только когда у вас нет «информационной полезной нагрузки», чтобы вернуть ее. Метафора действительно не стоит сама по себе. Таким образом, метафора настолько же плоха или вредна, как и истории, которые идут с ней. Пока вы это помните, все должно быть в порядке.

Смежные вопросы