С чего начать моделирование веб-приложения?

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

Мне было интересно, что я делаю во время, она показывает мне этапы процесса. Распознаю ли я варианты использования и моделирую ли их напрямую? Я описываю процесс в прозе? Как мне описать/транскрибировать процесс из реального мира в модель, которая затем станет основой для кода?

Как лучше всего начать новую разработку для вас? Какие-нибудь советы?


person bl4ckb0l7    schedule 27.01.2009    source источник


Ответы (6)


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

Проблема в том, что они платят за этот более низкий риск тремя способами:

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

Все это делает конечный результат более дорогим для клиента, демотивирует разработчика (кто хочет писать документы Word на 300 страниц? Серьезно!) прямо пропорциональна продолжительности проекта).

Обеим сторонам часто было бы лучше использовать подход T&M в сочетании с какой-либо формой методологии быстрого прототипирования с регулярными результатами или демонстрациями для клиента с интервалом не более 4-6 недель. Это направлено на управление ожиданиями. Если клиент видит, что что-то происходит, это успокаивает его и позволяет вам приступить к работе (вместо того, чтобы тратить время на собраниях, просматривая диаграммы Гантта).

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

Одна вещь, которую многие разработчики, кажется, также забывают, это то, что они подобны королевским подданным во Франции 15-го века. У них могут быть привилегии, даже богатство и множество привилегий, но они служат в угоду королю (или королеве), который может по прихоти обезглавить их. Под этим я подразумеваю, что в конечном счете власть принадлежит клиенту, а вы, как разработчик, существуете для того, чтобы облегчить его жизнь, а не наоборот.

Если клиент хочет розово-зеленый веб-сайт, разработанный на Cobol on Rails, работающий на виртуальном сервере Vax/VMS на iphone босса, то это то, что он получает. Теперь вы можете использовать свои знания и опыт, чтобы попытаться убедить их, что это не очень хорошая идея, но в конечном итоге, если они этого хотят, у вас есть два варианта: дать им это или уйти.

Слишком многие разработчики попадают в ловушку, давая людям то, что, по их мнению, они должны иметь, а не то, что они просят. БОЛЬШАЯ ОШИБКА. Часть процесса заключается в том, чтобы поддерживать каналы связи с клиентом открытыми, чтобы вы не сбились с пути, думая, что они чего-то хотят (или решили, что они должны что-то получить), когда они ожидают чего-то совершенно другого.

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

person cletus    schedule 27.01.2009

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

person Community    schedule 27.01.2009

Я могу искренне порекомендовать "Дизайн, ориентированный на предметную область" Эрика Эванса. В нем объясняется, как смоделировать проблемную область и в процессе установить вездесущий язык, с помощью которого вы и клиент можете ясно общаться о функциях приложения.

Кроме того, посмотрите, сможете ли вы найти инструмент быстрой разработки для вашей целевой платформы, чтобы вы могли быстро представить что-то своему клиенту для ранней обратной связи. Например, если вы используете Java EE, ознакомьтесь с Spring Roo, который поддерживает циклический обход.

person Andrew Swan    schedule 10.03.2011
comment
Отказ от ответственности: теперь я разработчик Spring Roo, хотя я не был им в то время, когда я сделал вышеупомянутое предложение. - person Andrew Swan; 06.06.2011

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

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

person Sergio    schedule 27.01.2009

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

После анализа снова поговорите с ней о том, что вы можете и не можете сделать, и предложите решения или улучшения.

person Megacan    schedule 27.01.2009

Клиент, скорее всего, сказал вам, чего он хочет, в первые 5 минут вашего разговора с ним. Все, что после этого, просто постельные разговоры.

person Community    schedule 27.01.2009
comment
разговоры с подушками...хотелось бы мне иметь таких клиентов - person inspite; 27.01.2009
comment
хахаха - мой источник для этого (я думаю, это страница 200) рефакторинга вашего программного обеспечения с прагматичной книжной полки - person ; 27.01.2009