div.main {margin-left: 20pt; margin-right: 20pt}Планирование сайта с помощью UML
(часть 1)
Steve Franklin and
WebReview ©
перевод, Александр Качанов
Обычно веб-сайты представляют собой сложные и динамические
структуры. На их разработку выделяют короткое время, чтобы
сайт как можно быстрее заработал и давал эффект. Часто
разработчики сразу же садятся за написание кода, даже не
обдумав, что они собираются создавать, и как они это
собираются сделать. Код для сервера часто пишется с листа,
таблицы в базах данных создаются по мере надобности, и в итоге
иногда архитектура системы начинает развиваться в совершенно
непредсказуемом направлении. Однако с помощью простого
моделирования и строгого подхода к программированию можно
сделать процесс разработки в гораздо более гладким и
гарантировать, что созданную web-систему будет просто
поддерживать в дальнейшем.
UML (Unified Modeling Language) - унифицированный язык
моделирования - это язык, с помощью которого описываются
системы. Следовательно этот язык может замечательно помочь вам
описать и отобразить вашу будущую систему. Данная статья
продемонстрирует некоторые способы, с помощью которых,
используя язык UML, вы можете моделировать свои web-сайты.
Язык UML может быть очень сложным в усвоении, но некоторыми
частями UML пользоваться очень легко, а это поможет вам
создавать лучшие системы в меньшие сроки. В качестве примера
мы возьмем приложение, которое было описано в статье "Создание WML-приложения".
Поскольку в данной статье мы не будем вдаваться в специфику
языка UML, я предлагаю вам ознакомиться с отдельной статьей
под названием "Что нужно знать о UML", в которой как в
справочнике описаны некоторые термины и знаки языка. В выноске
к статье перечислены ссылки на ресурсы, из которых можно
почерпнуть более глубокие знания как о UML, так и о достойных
примерах его использования в дизайне.
Стадия планированияВне
зависимости от того, строите ли вы систему с нуля, переносите
ее на другую платформу или улучшаете ее функциональность, с
самого начала требуется составить план, чтобы гарантировать
принятие правильного решения. Когда вы работаете в группе,
состоящей из нескольких человек, ясное понимание плана
движения вперед и четкое распределение работы становятся
просто неоценимыми. Постарайтесь основательно разобраться в
следующих аспектах системы на стадии планирования:
Кто будет пользователями системы, и каковы будут роли
этих пользователей
Требования приложения
Взаиморасположение страниц и порядок перемещения между
ними
Инструменты и технологии, которые будут использоваться
на сайте
Знайте своих пользователейВажно
знать, какие типы пользователей будут работать с вашей
системой. И не только потому, что для анализа системы вам
придется беседовать с представителями этих пользователей
(анкеты, письма, личные беседы и т.д.), но и потому, что часто
вам придется моделировать систему так, чтобы в ней работали
пользователи с различными ролями и привилегиями. Классифицируя
пользователей и изучая их требования, вы узнаете такие
сведения, которые скажут вам, как надо строить базу данных,
какие ограничения обеспечить, как сгруппировать страницы, как
организовать обучение и помощь, какая специфическая информация
должна быть на сайте, а кроме того - ваши знания о
пользователях могут быть интересны и вашим рекламодателям.
Рис. 1: Иерархия исполнитель-роль
На представленном выше рисунке изображены несколько групп
пользователей (называемые на языке UML "исполнителями" (actors), которые будут работать с
web-сайтом. В данном случае самый общий тип пользователя
("Пользователь сайта" - Site user) расположен вверху
диаграммы. Сплошная стрелка обозначает отношение обобщения, то есть у нас имеются две более
специфические категории пользователей: посетители-гости и
зарегистрированные пользователи. Характеристики, которые будут
общими у обеих групп пользователей, будут приписаны
исполнителю "пользователь сайта", а привилегии, специфичные
для посетителей-гостей и зарегистрированных пользователей,
будут приписаны более мелкой соответствующей роли. В
зависимости от используемой программы, вы можете прямо в
диаграмме создавать описания и прикреплять их к определенному
исполнителю, т.е. вам нет необходимости создавать отдельно
диаграмму и отдельно документы, ее описывающие. В данном
приложении помимо прочего пользователи делятся на посетителей,
подключившихся к сайту по беспроводной связи, и
администраторов. Обе эти группы - дальнейшая подразделение
группы зарегистрированных пользователей, в системе у них будут
различные функции.
Определите требованияУточните,
что именно вы собираетесь построить, прежде чем начнете
работу. Хоть вас и будет мучить соблазн выяснять это по мере
написания кода, гораздо более эффективно - провести "мозговой
штурм", нарисовать пару схем и записать все на бумаге. Часто
нерентабельно писать подробную спецификацию требований к
сайту, но вы обязаны хотя бы приблизительно набросать пару
диаграмм и написать пару строк о том, какие функции будет
выполнять сайт. Вот именно здесь и приходят на помощь блочные
диаграммы. Рассматривайте блоки-действия как пакет функций -
как нечто, что обычно соответствует странице сайта, приложению
или действию, осуществляемому на сайте (например: проверка
пароля посетителя, изменение настроек пользователя или
удаление устаревших пользователей). Следующий рисунок
представляет собой краткую диаграмму блоков-действий, с
помощью которой планируется web-сайт. Обратите внимание, что
на данной диаграмме не показаны все действия, предусмотренные
в нашем приложении - обычно для описания всей функциональности
будущего сайта создается несколько диаграмм.
Рис.2: Диаграмма блоков-действий
Даже с помощью такой простой диаграммы как эта, можно
запросто описать огромный объем информации. Например,
отношение включения ("include"), показывает, что два определенных
действия включают в себя одну и туже функцию аутентификации
пользователя. Отношение расширения ("extend") указывает, что страница с
информацией о погоде может выдаваться как в HTML так и в
WML-формате. Отношение обобщения ("generalization") показывает, что для выдачи
конкретных страниц будет использовать более общая процедура,
под называнием "выдача HTML-страницы" или "выдача
WML-страницы" с целью обеспечить единство внешнего вида и
поведения всех страниц на web-сайте.
Также диаграмма показывает, что посетители подключенные к
сайту по беспроводной связи, будут иметь доступ к тем его
разделам, которые не будут видны для других посетителей. В
данной диаграмме только эта группа пользователей может
посмотреть отчеты о дорожной обстановке. Мы посчитали, что
отчеты о дорожной обстановке понадобятся лишь людям,
находящимся в пути, и потому нам нет нужды прилагать усилия по
генерации страниц в каких-то иных форматах, кроме формата WML.
Следовательно, действие "Выдать отчет о дорожной обстановке"
не нужно расширять (extend) вариантами WML или HTML страниц,
оно может напрямую включить (include) действие "Создать
WML-страницу".
Как правило все эти диаграммы и блоки-действия
сопровождаются какими-то краткими описаниями. Есть несколько
статей, где обсуждается то, как создаются диаграммы с
блоками-действиями и как пишутся к ним объяснения (например,
статья Алистер Кокбёрн - "Шаблон блоков-действий" - Alistair Cockburn's Use Case Template). Если
вкратце, то вы обычно описываете, что должно произойти внутри
блока-действия, кто этим действие будет пользоваться, как оно
будет вызываться, как останавливаться, и какие варианты
результатов действия могут получиться.
Спланируйте страницыВо время
работы над блоками-действиями у вас сформируются некоторые
представления по поводу того, каких и сколько страниц
понадобится создавать для сайта. Возможно еще до начала работу
у вас будут хорошие идеи о некоторых из страниц, однако с
помощью блочных диаграмм вы сможете взглянуть на проблему с
другой точки зрения. Нужно ли посетителю сайта столько много
страниц? Не слишком ли много функций возложено на эту
страницу? Трудно ли перемещаться по сайту? Скажем, трудно ли
попасть с первой страницы на одну из часто выполняемых
функций? Найдите ответы на все эти вопросы в блочных
диаграммах, т.е. до того, как вы начнете делать наброски своих
страниц и создавать прототип сайта.
После того, как вырисуется в общих чертах диаграмма
блоков-действий, можно приступать к грубой прикидке структуры
сайта. Для этого опять-таки можно воспользоваться языком UML.
Кто-то скажет, что страницы и файлы нужно моделировать с
помощью инструмента, где используются компонентные диаграммы.
Лично я нахожу, что с инструментами, где используются
классовые диаграммы, работать проще (см. следующий рисунок).
Рис. 3: Диаграмма страниц
На данной диаграмме все функции сайта были распределены на
несколько областей:
/ - корень сайта
/common/ - общие функции, изображения, скрипты, таблицы
стилей и так далее
/maps/ - изображения карт и направлений
/traffic/ - отчеты о дорожной обстановке
/weather/ - отчеты о погоде
Данный рисунок также показывает, какие параметры передаются
между страницами. Переменная regionId - самая главная, так как
она обозначает район, в котором заинтересован пользователь
(будь то код округа, города или провинции). С помощью
переменной regionId вы передаете информацию о регионе между
страницами, таким образом пользователь сможет перейти от
отчета о погоде к отчету о дорожной обстановке в том же самом
регионе. Что касается каталога common, то здесь вы видите, что
область состоит из целого пакета (package), а не из отдельных файлов. Это
просто прием укрощения хаоса в диаграмме, так как пакеты будут
взаимно использовать большинство, если не все, файлы,
расположенные в каталоге /common/.
Данная диаграмма очень полезна для планирования сайта, так
как она помогает избежать путаницы. Кроме того она служит вам
шаблоном, которым вы будете пользоваться при создании других
web-сайтов с такой же структурой.
Выберите инструментыДля
маленьких сайтов выбрать инструменты и технологии достаточно
просто. В особенности в тех случаях, когда важную роль играет
стоимость проекта, возможны лишь несколько комбинаций -
Apache, MySQL или PostgreSQL, PHP или Perl или JSP/сервлеты.
Самым популярным решением обычно оказывается комбинация Apache
+ PHP + MySQL, а наличие дешевых хостингов с этой комбинацией
только подталкивает к ее использованию. Более мощным
web-сайтам требуется оценивать и проверять инструменты более
тщательно, прежде чем вкладывать в них свои время и силы.
Более подробное обсуждение по оценке и выбору сервера
приложений можно найти в статье "Выберите правильный сервер приложений
J2EE". На следующем рисунке показана примерная
компонентная диаграмма, с помощью которой описывается
архитектура сайта. Данная простая диаграмма пожалуй подойдет
для описания многих web-сайтов, работающих сейчас в Сети.
Следовательно ее не придется каждый раз воссоздавать заново,
так как в ней нет какой-либо интересной, специфической или
уникальной информации.
Рис. 4: Диаграмма архитектуры
Мы не будем описывать весь цикл разработки программного
продукта в данной статье, но важно отметить, что именно теперь
модно начинать создавать макет сайта и прототипы страниц.
Запишите на будущее пару идей по структуре сайта и организации
его страниц, так как в конечном счете вам захочется создать
какой-то общий код, генерирующий меню, боковые панели и общую
компоновку страниц, чтобы использовать его в других сайтах.
Кроме того, если вы переносите проект на новые инструменты и
технологии, прототипы помогут выяснить вам, насколько дизайн
осуществим при данных условиях, и насколько ваша команда
подготовлена к использованию новых инструментов.
|