Как вы справляетесь с дизайном в Scrum? У вас все еще есть хорошо написанные проектные документы для каждой итерации? Вы просто делаете заметки о дизайне с использованием диаграмм UML? Или у вас просто хорошо прокомментированный код?
Каждая итерация может включать изменение дизайна, поэтому я просто хотел узнать, как люди это запоминают, чтобы новые разработчики легко разбирались в предметной области и включались в нее как можно быстрее.
Ответы:
только то, что это схватка, не означает, что каждый спринт меняет все!
Scrum - это делать то, что необходимо (но не более) . Вам все еще нужно сделать дизайн, и вам все равно нужно документировать. Его просто сумма не установлена, ни как это сделать.
Частью планирования каждого спринта является решение того, что нужно сделать. Если что-то в отставании нужно спроектировать, потому что это влияет на другие вещи, то вам нужно добавить конкретную задачу для процессов проектирования и сделать это до выполнения задачи.
источник
Мне есть что сказать по этой теме. Я видел много случаев, когда компании / команды / люди говорят, что используют Agile-подход к программному обеспечению, но в действительности они хотят пожинать плоды, которые обещают Agile-методы, не придерживаясь принципов.
Чтобы быстрая итерация работала, вы должны выполнить тестовую разработку (я не сказал, что вам нужно неохотно делать TDD). В TDD ваши тесты выражают дизайн и предназначение кода (когда они говорят, что «код - это документация», то, что они должны говорить, это «тесты - это документация»). При написании модульных тестов, которые выражают ваше понимание имеющейся функции, вы явно указываете, что, по вашему мнению, должен делать код. Затем вы пишете код, который делает это. Затем вы реорганизуете этот код так, чтобы он придерживался хороших архитектурных принципов "Red-Green-Refactor".
Запуск ваших модульных тестов с каждой проверкой (или даже перед каждой проверкой) подтверждает, что написанный вами новый код не нарушает ожидаемую функциональность в какой-либо другой области приложения. Это обеспечивает сеть безопасности, которая позволяет вам без промедления менять код. По мере того, как ваше понимание требований возрастает, вы можете изменить тест, чтобы отразить эти новые знания. Настоящий дизайн заключается в юнит-тестах. Все остальное (включая код, который не описан) является ложью.
Вот некоторые рекомендуемые чтения
Это хорошие места для начала, чтобы узнать, как по-настоящему подходить к гибкой разработке.
источник
Scrum - это методология управления проектами, а не методология разработки программного обеспечения. Скрам обычно используется в сочетании с гибкой методологией. В этом и заключается ваш ответ.
источник
Существует не так много предварительного дизайна, как часто меняются требования. Таким образом, проектирование до уровня класса, как правило, пустая трата времени. Тем не менее, может стоить набросать архитектурные решения более высокого уровня.
Проблема с созданием проектных документов для работы в тяжелых условиях заключается в том, что они устаревают почти сразу после их создания. Поэтому лучше всего работает документация высокого уровня, которая вряд ли полностью изменится за короткое время.
источник
Scrum - это итеративная и инкрементная модель, основанная на гибких значениях . Это означает, что у вас нет отдельной фазы проектирования. Идея состоит в том, что вы должны постоянно иметь дело с дизайном, так же, как вы постоянно имеете дело с анализом, внедрением, тестированием и интеграцией на протяжении всего проекта.
Вам нужно немного планирования, чтобы это работало. Введите совещание по планированию спринта , где команда оценивает задачи для спринта впереди. Большинство людей не понимают, что это не только оценочная встреча, но и проектная работа. Например, задачей может быть «Добавить код для новой модели автомобиля». Вы еще не можете оценить это, вам нужно знать немного больше. Таким образом, команда обсуждает дизайн и предлагает широкое решение («Автомобиль подкласса?») И добавляет это как напоминание к задаче. Вам редко нужно больше формальностей, чем это. Теперь у вас есть идея, как решить проблему. У вас еще нет всех деталей, и это хорошо, вы достаточно знаете дизайн, чтобы иметь возможность сделать комфортную оценку. Без необходимости создавать какие-либо диаграммы вообще (на данный момент).
Для реальной физической документации я рекомендую создать обзорную схему системы на стене, чтобы все могли ее увидеть. В обзор должны быть включены только самые важные классы и модули, и его редко нужно обновлять. Также очень полезно создать несколько диаграмм состояний для наиболее важных классов в системе. Посыпьте несколько избранных диаграмм последовательности типичных сценариев использования, чтобы люди могли быстро увидеть, как все связано. Я предполагаю, что вы можете генерировать диаграммы иерархии классов из своего кода, так что эта проблема легко решается.
Обратите внимание, что все диаграммы создаются после фактической реализации. Это согласуется с «рабочим программным обеспечением над всеобъемлющей документацией» и своевременным проектированием.
И да, читаемый код - это определенно документация.
источник
Общая архитектура проекта и высокоуровневый дизайн будут выполняться вне групп разработчиков, когда владельцы проекта создают истории.
Должно быть достаточно общего дизайна, записанного в любой форме, чтобы увидеть взаимосвязь между историями и ожиданиями клиентов.
Часть дизайна, необходимого для каждой истории, будет выполнена при планировании и согласовании с владельцем продукта во время планирования.
Основная часть усилий по разработке истории будет сделана в спринте.
Если история не определена достаточно для оценки, тогда в текущем спринте может быть выделено временное поле, чтобы выполнить достаточно проектных работ, чтобы можно было создать соответствующую историю для более позднего спринта.
источник
Насколько я понимаю, вы делаете дизайн более высокого уровня с предварительными требованиями, которые вы соберете в начале проекта. Вы хорошо документируете этот дизайн.
Затем, когда вы на самом деле реализуете требование, вы меняете дизайн нижнего уровня по мере необходимости, но избегаете изменения дизайна более высокого уровня.
Ну, так мне все объяснили пять минут назад ...
источник
Сегодня в сообществе Eclipse существует раскол между традиционными инструментами UML, ориентированными на MDD, в котором модель управляет кодом / разработкой, и Omondo, который считает, что итерации должны управлять процессом разработки, а не только моделью.
Я согласен с ними, потому что MDD - это дерьмо, а UML - действительно отличный способ, потому что стандартизировать, чтобы общаться с другими членами команды.
источник