Подтвердить что ты не робот

Как разрабатывать/планировать разработку веб-приложений?

Мне интересно узнать, как разрабатывать/планировать разработку веб-приложений в сценарии нескольких разработчиков.

Предполагая роль "Project Manager/Lead":

  • Какие "документы" необходимы для успешной разработки веб-приложений?
  • Какие UML-диаграммы необходимы и в какой степени?
  • На этапе проектирования/плана каждый из них, как и в случае использования, должен быть отображен?
  • Насколько подробны (глубина и ширина) диаграммы классов?

Если у вас есть полезные рекомендации по книге/веб-сайту, поделитесь им.


Последующие действия (добавлено 11/18/09): Что кодеры/разработчики используют в качестве руководства во время кодирования, т.е. Создания классов и их соответствующих методов и свойств?

Если нет полного (но изменяемого) списка классов с их методами и свойствами, разве эта неоднозначность не вызывает большой зависимости от знаний/опыта каждого кодера, что приводит к отклонениям в качестве кода/удобстве использования/ремонтопригодности?

4b9b3361

Ответ 1

  • Во всех случаях вы должны иметь исчерпывающую и актуальную информацию о точных требованиях. Это включает в себя functional и нефункциональные требования. Это может быть документ Word, электронная таблица или специализированная система требований. Вам просто нужно что-то, что позволяет вам отслеживать все требования и то, как они менялись со временем. Здесь хороший источник информации и обсуждения о документах Agile.
  • По моему опыту, примеры использования диаграмм оказались важными, поскольку диаграммы компонентов и развертывания также полезны. Классы и диаграммы последовательности также могут быть полезны, но в большинстве случаев я считаю, что их следует использовать в качестве основных изменчивых руководящих принципов, чем непременные требования к разработке. Классы и методы, как правило, могут быть изменены (особенно если вы используете TDD), и если вам действительно нужна диаграмма, лучше всего обновить ее после разработки кода, а не для того, чтобы привязать ваш код к диаграммам.
  • Я не думаю, что каждый класс должен быть нарисован. Я думаю, что диаграммы классов моделей могут быть полезны для отслеживания того, где находятся данные, и иногда также полезны некоторые диаграммы классов контроллеров и классов. Но в большинстве моих опытов требования и тестовые примеры были основным источником направления в том, как разрабатываются классы, и они реорганизуются по мере роста и изменения системы.
  • В классах моделей я не думаю, что обычно необходимы атрибуты. Если вы моделируете классы контроллера, обычно разумно включать как основные атрибуты, так и методы.

Ответ 2

В зависимости от типа и размера веб-приложения. Если вы делаете небольшой сайт электронной коммерции с корзиной покупок, вы, вероятно, потратите больше усилий на сторону дизайна и меньше на функциональность "приложения". И наоборот, если вы создаете большой внутренний веб-сайт со многими экранами ввода данных, большая часть вашего времени будет потрачена на бизнес-логику и правила данных.

Лично я не сторонник жестких спецификаций или процессов. Я настроюсь в соответствии с проектом и клиентом, чтобы четко сообщать.

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

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

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

Я также использовал Balsamiq Mockups в недавнем проекте, чтобы развернуть экраны веб-приложений, а макеты экрана стали важной частью спецификации проекта - очень быстро производить, и они передают много информации о том, как экраны должны работать, что довольно сложно передать в текстовом документе.

Наконец, полезно прочитать чтение Joel по функциональным спецификациям.

Ответ 3

Держите его как можно проще.

Первым шагом является документ, определяющий основные функции.

Лично говоря, поскольку веб-приложения почти всегда основаны на базе данных, я начинаю моделировать базу данных на основе требований к функциональности. Объекты на диаграмме ERM обычно отображают 1-1 с классами в диаграмме UML и уже показывают основные отношения.

Предполагая архитектуру MVC и хорошо документированный код, классы модели будут самодокументироваться по мере их развития (например, кислородный phpdocumenter).

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

Ответ 4

  • Требования - это один набор документов, который может включать в себя графику, документы Word, сообщения электронной почты и другие способы записи. Список того, что находится в среде разработки (IDE, контроль источника, отслеживание ошибок), стиль кодирования и рекомендации - это еще один набор документов, который может быть полезен при успешной разработке приложений. Существует план проекта, который представляет собой большую диаграмму Ганта и примечания к выпуску, которые представляют собой еще несколько документов, которые мы создаем.
  • Я не видел много диаграмм UML, отличных от того, что банда четырех на своем сайте объясняет некоторые шаблоны проектирования.
  • У нас есть запасные части для заполнения и оценки того, насколько сложна каждая история. Это может отличаться от используемого вами подхода. Благодаря нашему гибкому подходу может быть не так много дизайна/плана, как ваша ситуация.
  • Мы редко имеем диаграммы классов, хотя Visual Studio имеет браузер объектов, который удобен для просмотра того, что уже построено.

Где я работаю, мы, как правило, работаем парами для создания объектов домена и их членов, методов и свойств. Классы создаются по мере необходимости для рассказов или если мы очищаем или реорганизуем набор классов.

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

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

Там, где я работаю, на данный момент у нас есть 5 разработчиков, руководство по обеспечению качества, бизнес-аналитик, руководитель команды, архитектор и руководитель проектов. Мы используем Scrum, парное программирование и некоторые идеи TDD в нашей работе.

Мы используем Visual Studio 2008, Subversion, Центр качества HP, ASP.Net 3.5, Sitecore 6.0 и MS-SQL Server 2005.

Ответ 5

Все Использовать случаи должны быть хорошо детализированы, продолжение сотрудничества с клиентом всегда будет плюсом, но оно может прорасти непредвиденные случаи.

Если вы разрабатываете взаимодействие между различными серверами, которые будут опроса/push-сообщений в разное время, вам понадобится Диаграммы последовательности наверняка.

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

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