Что такое метафора в контексте XP?
"Метафора" кажется одной из наименее понятных заповедей XP (Extreme Programming), хотя она должна быть (одна из?) Самой важной.
Трудно понять и якобы "лампочка над головой, когда ты ее получишь". Метафора, кажется, является фронтом для "программирования - мистическое искусство". Остальные относительно легки для понимания. Я прочитал довольно много книг, а затем несколько.. но это остается туманным.
- Итак, как мне определить метафору для разрабатываемой системы?
- Откуда я знаю, что это хорошо? Что делает хорошую метафору хорошей? Правка-уточнение: может ли плохая метафора принести больше вреда, чем пользы?
- Что это позволяет?
- Как мне научиться находить метафоры... или лучше, чем я есть сейчас?
6 ответов
Метафора - это то, что вы начинаете использовать, когда ваша мать спрашивает, над чем вы работаете, и вы пытаетесь объяснить ей детали. Как вы найдете это очень зависит от проекта. Используйте свой здравый смысл или найдите в своей команде парня, который умеет объяснять клиентам технические вещи так, чтобы их было легко понять.
На мой взгляд, XP предлагает следующее:
- Попробуйте разработать систему, которую легко объяснить с помощью реальных аналогий. Ваши системы сложны, попробуйте использовать дизайн, в котором отношения и взаимодействия между подкомпонентами ясны и напоминают то, что люди со здравым смыслом уже видели.
- Используйте аналогии во всех коммуникациях: исходный код, планирование совещаний, общение с пользователями или, если не так, написание документации. Если вы обнаружите, что используемые вами концепции не подходят для какой-либо области, попробуйте найти лучшую метафору.
Если у вас возникли проблемы с введением метафоры, возможно, проблема в другом. У вас может быть дизайн, не подходящий для XP, или у вас может быть культура компании, где, например, разработчики используют другой язык, нежели маркетологи. Оба атрибута проекта, с которыми вы можете легко жить и нести свой проект к успеху, но будет труднее принять XP, если вы не внесете изменения в этих областях.
Здесь есть бумага. Но хороший пример этого
Метафора имеет две цели. Первое - это сообщение, описанное выше. Пользователь должно быть легче говорить и приводить примеры о "хамелеоне", чем о окне, которое меняет прозрачность. Вторая причина заключается в том, что метафора Предполагается внести вклад в развитие команды архитектуры программного обеспечения.
Что касается поиска, в идеале поиск метафоры для вашего проекта должен быть чем-то действительно простым. Под этим я подразумеваю, что метафора должна быть чем-то тривиальным, что каждый может понять, даже тот, у кого нет технических знаний или даже каких-либо представлений о вашей системе в частности (например, пример Хамелеона).
Что касается некоторых преимуществ (снято прямо с бумаги)
- Метафора помогла выяснить общий дизайн программы. - Метафора помогла команде найти общий словарный запас. - Мы часто используем метафору в разговорах друг с другом. - Мы часто используем метафору в разговорах с нашим клиентом. - Метафора полезна для того, чтобы помочь всем прийти к соглашению о наших требования.
Идея метафоры в экстремальном программировании состоит в том, чтобы выработать общее представление о том, как работает программа. В лучшем случае метафора - это простое воспоминание о том, как работает программа.
Метафоры являются мощным обучающим инструментом. Они используются в большом количестве полей. Цель метафоры - создать мост понимания: человек, пытающийся объяснить новую идею или концепцию, пытается найти общую систему координат между собой и человеком, которому он объясняет идею. Затем они объясняют новую идею, используя общую систему координат
Теперь на ваши вопросы.
Итак, как мне определить метафору для разрабатываемой системы?
Хорошая метафора может быстро предоставить достаточно информации для понимания на высоком уровне предметной области и функционирования системы. В качестве примера мы можем сказать, что "эта программа работает как пчелиный улей, собирающий пыльцу и возвращающий ее в улей" в качестве описания системы поиска информации на основе агентов. Таким образом, вы должны стремиться к аналогиям с реальными ситуациями в мире, так как они с большей вероятностью будут поняты быстрее, и каждый может сходиться в том же темпе в отношении функциональности системы.
Откуда я знаю, что это хорошо? Что делает хорошую метафору хорошей?
Идея состоит в том, чтобы использовать общую систему имен или аналогий, чтобы быть уверенным, что все понимают, как работает система и где искать нужную функциональность, или найти подходящее место для размещения нужной вам функциональности. добавить. Метафора более полезна, так как большее количество пользователей в присутствии метафоры сразу получают представление о системе.
Что это позволяет?
Это обеспечивает быстрое минимальное глобальное понимание цели и функционирования системы на основе общей терминологии, которую каждый может понять проще.
Как мне научиться находить метафоры... или лучше, чем я есть сейчас?
С практикой и постоянными улучшениями. Убедитесь, что каждая итерация показана значительной массе людей для оценки эффективности метафоры. По пути вы многому научитесь и сможете быстро написать хорошие метафоры. Я считаю это живым упражнением почти потому, что люди с большим жизненным опытом могут предоставить более значимые метафоры, даже не осознавая, что делают это.
Смотрите здесь подробную статью о XP, которая также охватывает метафоры.
Ну, я исследовал вопрос чуть более дня и придумал немного лучше (чем когда я публиковал вопрос) восприятие метафор. Это оказалось немного длинным.. поэтому не включил его сюда и разместил в моем блоге. JFYI.
http://madcoderspeak.blogspot.com/2008/10/who-moved-my-metaphor.html
Вот краткое изложение опыта, который мы опубликовали на конференции Agile несколько лет назад.
В статье рассматривается гораздо больше деталей, но, резюмируя, в нашем опыте было 5 ключевых черт, которые дают хорошую метафору:
- Представляет один вид.
- Имеет дело только с одним типом структуры.
- Дает четкое руководство относительно проектных решений.
- Проливает свет на свойства системы.
- Привлекает общий опыт.
Следствие: даже хорошая метафора все еще требует объяснения.
Основная идея заключается в том, что вы хотите рассказать историю, которая позволяет вам уловить сущность "информационного наполнения". Чем конкретнее вы можете лучше, и у вас будет несколько метафор в вашей системе. Самое главное, избегайте чрезмерного расширения метафоры. В конечном счете, это механизм коммуникации и памяти для вызова более подробной информации, которая была решена и обсуждена в ходе более глубокого разговора.
Может ли плохая метафора причинить вред? Только когда у вас нет "информационного наполнения" для его поддержки. Метафора на самом деле не стоит сама по себе. Таким образом, метафора так же плоха или вредна, как и истории, которые сопровождают ее. Пока вы помните об этом, у вас все будет хорошо.
Метафоры позволяют команде иметь общее представление о проекте. Это полезный инструмент для преодоления барьера недопонимания, который, как правило, есть у любой команды из-за разного происхождения / перспектив. Вам не нужно их использовать, но это помогает, особенно когда вы работаете в области или в типе приложения, с которым ваши разработчики не имеют никакого опыта. Для меня хорошим примером метафоры является знаменитая картина с качелями деревьев. Разработчики никогда не работали над созданием "качелей", потому что правильная метафора так и не была найдена. В этом смысле концепция метафоры немного похожа на концепцию Vision в RUP, но, насколько я понимаю, она больше сфокусирована на технической стороне разработки.
Отвечая на ваши вопросы:
- Попробуйте найти что-то, что вам хорошо описывает систему. Если бы я попытался сделать это, я бы попытался описать основные компоненты отдельно.
- Посмотри, торчит ли он. Если все сразу поймут, о чем вы говорите, это сработает. Если это не так - попробуйте что-нибудь еще. Вы должны увидеть "искру признания" в глазах команды.
- Использование метафоры позволяет каждому увидеть приложение / архитектуру приложения с одной и той же перспективы.
- Это действительно зависит от того, как вы думаете. Метафоры поэтичны и "мягки" - вы, возможно, никогда не захотите с ними хорошо разбираться:) Я бы посоветовал прочитать больше книг типа "беллетристика", так как они помогают вашему уму получать больше информации для метафор.
И помните - метафору нельзя растягивать до бесконечности. Не ожидайте, что они будут идеальными.