В чем проблема?

Источник: iqb

What's the Problem?
автор: Norm Carr, Tim Meehan and A List Apart
перевод: Александр Качанов

Одна из главных проблем при создании любого веб-сайта, о которой меньше всего говорят и пишут, это проблема того, как решить, определить и выразить словами то, что именно мы собираемся построить и для чего. Какую проблему мы собираемся решить? Кто нуждается в этом решении? Для чего вообще создается веб-сайт?

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

Удивительно, но веб-разработчики с большой неохотой перенимают методы и подходы, которые приняты в других сферах программирования и которые позволяют решить возникающие проблемы. В особенности на критических стадиях проекта нам могут помочь определенные методы, принятые в сфере проектировании программного обеспечения (software engineering).

Знакомьтесь - "use cases"

В особенности нам пригодится метод под названием "use cases" (варианты использования). Варианты использования позволяют просто и быстро определить и описать цели проекта. Этот метод успешно применяется многими программистами для определения на начальной фазе разработки целей приложения. Нет никаких причин веб-разработчикам отказываться от этого метода. Даже проект, который на первый взгляд кажется очень простым, может в дальнейшем превратиться в неповоротливого монстра, если вовремя не определиться с задачами и целями.

Так что же такое «варианты использования»?

Для того, чтобы определить варианты использования, нам необходимо рассмотреть два понятия и то, как они соотносятся друг с другом:

  • пользователи, актеры , действующие лица (actors)
  • цели (goals)

Актерами считаются все те, кто (или что) будут пользоваться вашим веб-сайтом, а также все те, кем (или чем) ваш веб-сайт будет пользоваться. Цели, это то, что один, несколько или все действующие лица стремятся добиться. Если уж говорить до конца, то каждый вариант использования должен описывать определенную цель и действующих лиц, которые будут выполнять определенные действия для достижения этой цели.

Актёры (actors) - это внешние объекты для нашего сайта. Мы их не создаем и не управляем ими. Они играют определенные роли (roles) на нашем сайте, выполняя задачи для достижения своих целей. Самым очевидным действующим лицом на нашем сайте в большинстве вариантов будет "посетитель сайта". У него возможно будет несколько целей, как то купить на сайте наш "супертовар", или например проверить состояние своего счета, назначить встречу, скачать программу, или просто почитать новости, которые мы опубликуем. Действующими лицами вовсе необязательно должны быть люди. В случае, если мы разрабатываем систему распространения информации по сети, действующими лицами на нашем сайте будут "сервера-потребители", выкачивающие от нас данные.

Вне зависимости от частных случаев, "варианты использования" (use cases) описывают цели, которые достигаются актерами при выполнении определенных задач.

Переходим к практике

Любой weblog позволяет его владельцам высказать свои мысли по определенной теме, а посетителям weblog-а - прочитать эти мысли и, возможно, оставить свои замечания. Очевидными актерами такого сайта-weblog-а являются "авторы" и "посетители". Авторы играют роль создателей контента, а посетители - роль читателей и комментаторов. Цели такого проекта - "давать информацию" и "получать информацию".

После небольшого мозгового штурма мы определили, что в числе задач "актеров" нашего сайта будут - чтение новости, создание, редактирование и удаление новости, комментирование новости, синдикация новости и кое-какие административные задачи, например, управление доступом, создание новых пользователей и раздача привилегий. Некоторые из этих задач будут выполнять все актеры, а некоторые будут отданы только одному актеру. Все они могут быть включены в один вариант использования, который мы назовем "Публикация" ("Publish Weblog").

Ниже представлена диаграмма, которая описывает отношения между "актерами" и их целями:

Диаграммы "вариантов использования" помогают думать о проекте в разрезе отношений или взаимозависимостей (dependencies) между "актерами" и тем, что они делают. Например, вполне возможно, что "посетители" (visitors) и "авторы" (authors) хотят иметь возможность отыскать в weblog-e уже опубликованную новость:

В нашей диаграмме оба актера - посетитель и автор - могут вести поиск по сайту. Однако, физически невозможно искать то, что еще не опубликовано, поэтому вариант "Поиск" (Search Content) зависит от варианта "Публикация" (Publish Weblog).

В нашем проекте мы решили для поиска воспользоваться возможностями Google. Google в таком случае становится актером в варианте "Поиск" (Search Content), а сам вариант зависит от актера Google. Задачей актера Google будет вывод результатов поиска.

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

Только польза

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

Как в случае с любым фундаментальным понятием, чем лучше мы понимаем варианты использования, тем легче нам будет выполнять нашу дальнейшую работу, тем тщательнее и правильнее она будет выполнена. Варианты использования представляют собой контекст (context), живо рисующий нам, где, в каком месте проекта находится каждый его определенный элемент. Благодаря чему мы можем уверенно принимать решения на протяжении всего процесса проектирования и разработки.

Назначение «вариантов использования» не в том, чтобы полностью описать то, что на сайте будет и как он будет построен. Нет, варианты описывают цели и назначения сайта, т.е. то, какие проблемы мы с его помощью решаем. Определитесь с целями, у вас быстро выстроятся все остальные элементы фундамента. Кроме того:

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

Разработка проектов с помощью вариантов это определенный образ мышления, ну и метод, конечно. Определившись с актерами проекта и их целями, легче достигнуть ясности и понимания в команде. Чем раньше и чем прочнее будет заложен фундамент понимания между членами команды, тем быстрее вы сможете принимать решения в дальнейшем, и тем проще вам будет вести проект к реальной цели. О "вариантах использования" можно написать сотни строк, но лучше всего об этом написал Alistair Cockburn [1].

[1] Writing Effective Use Cases. Alistair Cockburn. Addison-Wesley, 2001. ISBN 0-201-70225-8


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=2280