вторник, 25 сентября 2007 г.

Документы, с которыми мы работаем

Волей случая (не самого приятного, надо отметить) я ознакомился с несколькими документами, на основе которых у нас ведется разработка. Увиденное вдохновило меня на этот опус.

Не хочу сказать, что все очень уж плохо. Нет. Но однозначно, форма и содержание документов требует доработки, чтобы с документами можно было эффективно работать.

Начну от печки. Для чего мы пишем всю эту литературу? В первую очередь, чтобы показать клиенту, что мы понимаем, чего он от нас хочет. Это естественно. После того, как клиент убедился, что его требования где-то записаны, встает второй вопрос: нужно договариваться о цене/стоимости. Оценка производится опять же по документации, ранее утвержденной с клиентом. Ну, и наконец, надо бы изготовить эту игрушку. Поскольку для небольших проектов очень редко удается получить время на разработку архитектуры, разработка ведется все по той же документации. Думаю, картина ясна.

Какую имеем проблему: все эти варианты использования предполагают разные формы представления информации, а мы пользуемся одной. Если посмотреть на любой (не побоюсь этого слова) процесс, то окажется, что между клиентом и девелопером информация меняет свое представление как минимум один раз (даже в ХР, где представитель заказчика с требованиями в голове чуть ли не спит со своими девелоперами). И это не спроста! Давно известно, что заказчик и исполнитель по-разному видят разрабатываемый продукт, и поделать с этим ничего нельзя. Задача аналитика как раз и состоит в том, чтобы связать эти два лагеря и при этом обеспечить минимальные потери при передаче информации. Если совсем уж обобщить, то можно представить весь процесс разработки, как работу по превращению мыслей клиента в код с учетом ограничений внешней среды. Задача всех участников при этом - не давать информации теряться и искажаться, насколько это возможно. И аналитик - дирижер этого оркестра, следящий за чистотой звука всех инструментов.

Что в на входе? Разработчики хотят подробностей реализации. Заказчик тоже гораздо охотнее делится своими соображениями по поводу отдельных формочек и кнопочек, чем глобальным видением продукта. А многие этого видения просто не имеют, поскольку начинают бизнес “по образу и подобию”, не представляя зачастую всей бизнес-модели. Им кажется, что взяв сайт “как у Васи” и улучшив “ту кнопочку” и “эту формочку”, они тут же вырвутся вперед Васи и вобще планеты всей. Да и зачем разработчикам знать, откуда ноги растут? Клиент ведь уже знает все формочки и кнопочки, он все сам расскажет. Аналитик, поставленный в нужную позу этими двумя лагерями и подгоняемый жестким оценочным цейтнотом (где ваше предложение? мы уже получили миллион предложений от ваших конкурентов!), идет на поводу у обстоятельств и выдает документ с подробным списком формочек и описанием работы кнопочек на каждой из них, построенный на материалах допросов заказчкиа.

Что в результате? Во-первых у всех участников забега создается иллюзия полноты требований. Еще бы, ведь каждая кнопочка расписана! Благодаря этому заказчик считает, что анализ закончен, и очень удивляется необходимости в дальнейшем отвечать на вопросы. Благодаря этому же разработчик дает оценку, предполагая, что все требования уже устаканены и забывая, что нет ничего постоянного в этом мире. Во-вторых, когда приходит время обобщать и рисовать архитектуру, выясняется, что документ, прекрасно понимаемый в частях (в пределах описания одной формочки на паре страниц), совершенно не пригоден для понимания в целом. Выясняется, что для разработки архитектуры требуется несколько иная форма представления, а это требует дополнительного анализа, а времени уже нет: заказчик торопит, он уже хочет видеть те самые формочки, которые ему обещали. И, наконец, в четвертых! Самое главное! Читать медленно! Клиент склонен забывать о том, что он говорил, и, если у нас нет задокументированной концепции продукта, нам хана! Что будет стоить поменять положение кнопочки на форме? Или даже добавить кнопочку? Или перекрасить? А что будет стоить добавить новую роль, о которой клиент умолчал, потому что считал ее наличие само собой разумеющимся, или потому что забыл, но он ведь об этом не скажет. Или что будет стоить добавить/изменить целый процесс, который не был затронут (ведь, как правило, описание формочки затрагивает только часть процесса)? Это может вылиться с десятки формочек и сотни кнопочек! Причем я не утрирую!

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

Почему же нам не начинать с концепции? Может быть на это нужно много времени? Нет! Это требует гораздо меньше времени, чем описание пары формочек с кнопочками, и экономит в дальнейшем время на описание тех же формочек за счет отсутствия необходимости повторять одно и то же многократно. Возможно, это не очевидно, так же, как упреждающее написание тестов в ХР (немного сноровки - и время, потраченное на написание теста перед кодом возвращается сторицей, но даже у бывалых руки то и дело тянуться написать код раньше), но опыт говорит, что это так.

Что делать? Вывод напрашивается сам собой - двигаться последовательно, как рекомендует великий UP (да и другие процессы тоже). Поэтому ниже я позволю себе дать несколько рекомендаций начинающим аналитикам в плане последовательности построения документов. Сразу оговорюсь, что мои рекомендации неприменимы на этапе “быстрой оценки”. Речь идет только о случаях, когда мы уговорили клиента сделать подробный анализ требований.

Продолжение следует...

2 комментария:

Unknown комментирует...

От имени Сереги:

serg@nixsolutions.com, 2007/09/21 11:41:

линки в тему:

1.
Что такое хорошее ТЗ на сайт?: http://webmascon.com/topics/planning/22a.asp
2.
Writing Good Requirements - The Big Ten Rules: http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/
3.
Всякое разное по написанию Business Rules и Requirements: http://tynerblain.com/blog/category/requirements/requirements-models/specs/
4.
Вопросы аналитику: http://blog.shumoos.com/archives/125

Unknown комментирует...

От имени Никла:

Alexey Nikolayev, 2007/09/21 17:52:

Всё это хорошо... ведь как говорили древние “Если бы у меня была возможность написать только один документ по требованиям, я бы выбрал Vision” (с) Д. Леффингуэл, Д. Уидрик, «Принципы работы с требованиями к ПО. Унифицированный подход».

Не совсем последовательно: аналитик вроде бы в оценочном цейтноте, и при этом умудряется настрочить спеку “с формочками”. Откуда у него время?

Если клиент хочет “как у васи”, то вероятность наладить с ним обсуждение на уровне концепции зачастую стремится к нулю, хотя и не всегда.

Если речь идёт о web-сайте, то обсуждение и будет в основном крутится вокруг кнопочек, шняжек и логотипчегов “василькового цвета” (с). Потому что для сайта они решают. Vision сайта без макетов страниц и вариантов дизайна - фуфло. “В речи большинства людей “дизайн” означает облицовку, но это совершенно не так. Дизайн — это основа и душа любого человеческого творения” (с) Steve Jobs, (с) Dark ;-) Я подозреваю, что пляска от дизайна (а не от печки) имеет место быть. У нас одна из проблем в делании web-проектов как раз в том, что мы пытаемся шибко продумывать концепции и потеем, выдумывая волшебные framework’и, в то время как надо быренько, но кретивненько, да на коленке клепать и выкладывать, клепать и выкладывать, что-то откусывать и что-то добавлять по мере кристализации концепции. Как говорят апологеты одностраничного е-бизнеса: “А вы сначала убедитесь что это кому-то нужно”.

А разве “как лучше делать подробный анализ” и есть наша самая большая проблема? Вернее так: а мы вообще с ней столкнулись в текущем цикле? У нас именно вопрос успешной “быстрой оценки” является самым болезненным. Так вот как раз для неё умение слабать хороший Vision за два часа (час, 5 минут) и является решающим.