Должен ли проектный документ содержать обсуждение плюсов / минусов данного дизайна или он должен быть сосредоточен на фактах и ​​обосновании?


13

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

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

Тем не менее, некоторые из проектных решений, с уважением, являются очень плохими решениями с учетом требований проекта. Хотя есть и хорошие.

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

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

Вопросов:

  • Должен ли проектный документ придерживаться необработанных фактов («это дизайн») и обоснования («вот почему это дизайн») или его также следует использовать для указания на исправные проблемы с дизайном, которые могут быть проблематичными для будущие разработчики?
  • Если проектный документ не должен использоваться для сбора этой информации, какой тип документа должен ее фиксировать, а какой еще должен быть записан с обсуждением обоснований, компромиссов и известных проблем дизайна (которые не являются дефектами, так как дефекты отслеживаются используя другие инструменты)?

1
Проектные документы не являются подходящим местом для такой критики, но важно, чтобы эти проблемы были переданы через некоторые соответствующие средства.
Роберт Харви

1
@ Роберт. Мне кажется, что это очень похоже на ответ, хотя, возможно, я остановлюсь на том, что вы считаете подходящими.
Томас Оуэнс

Ошибки, возможно, или запросы на комментарий. Проектные документы должны пройти (более или менее) формальный процесс пересмотра. Разрешение людям отмечать такой документ критикой кажется противоречащим этому процессу, если только вы не используете что-то вроде «маржинальных комментариев» в документе Word (их можно отключить, показывая «официальный» документ).
Роберт Харви

Ответы:


7

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

Там, где я сейчас работаю, обычно есть отдельный документ «Design decicions», чтобы отслеживать все важные и важные решения. Часто отформатированный с абзацем, описывающим проблему (например, «Некоторые файлы необходимо перенести с сервера определенным пользователям в конце каждого цикла обработки, есть много способов сделать это ...»), таблица со столбцами » описание решения »(например,« переместить файлы через FTP »),« плюсы »(например,« легко управлять пользователями »),« минусы »(например,« недостаточно безопасно для соответствия ABC-XYZ ») и заключение, что объясняет, почему было выбрано конкретное решение (например, «FTP не будет использоваться, поскольку он не сможет соответствовать определенным требованиям соответствия»). Проектный документ обычно ссылается только на выбранное решение,


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

2
@ Томас Оуэнс: дерзай! Здесь хорошо работает, и мне тоже нравится. :) Я не думаю, что вы можете «украсть» это, потому что я знаю, что люди в других компаниях делают подобные вещи, это вряд ли «новое»;)
FrustratedWithFormsDesigner

5

Должен ли проектный документ придерживаться необработанных фактов («это дизайн») и обоснования («вот почему это дизайн») или его также следует использовать для указания на исправные проблемы с дизайном, которые могут быть проблематичными для будущие разработчики?

Это не «или-или».

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

Преимущества одного документа? Люди могут прочитать это.

Недостатки одного документа? Несколько. В основном это устаревает.

Преимущества нескольких документов? Никто.

Недостатки нескольких документов? Пожалуйста, ознакомьтесь с принципом СУХОГО и грамотного программирования. Несколько документов означает несколько источников ошибок. Каждый документ не согласен с другим и не согласен с кодом. Это довольно очевидно. Это путь безумия.


Избегайте заламывания рук.

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

Если вы чувствуете, что необходимо представить плюсы и минусы, сделайте это кратко и точно.

Сосредоточьтесь на том, что есть.

Держите то, что не до голых костей.

Если вы выполнили тесты, изучили или действительно изучили альтернативы, запишите это. Но если вы просто рассматриваете альтернативы, минимизируйте это.

Это не должно быть вашей личной историей суда и скорби.

  • Была проблема? Починил это? Прошло несколько недель? Действительно боролись? Едва интересный анекдот. Это исправлено в коде. Предыдущие версии, неправильные версии, версии с ошибками и низкоэффективные версии не имеют значения. В лучшем случае они блог-фураж.

  • Все еще есть проблемы? Не фиксированная? Это означает, что есть альтернативы. Документируйте это.


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

"проблемы, с которыми я столкнулся"? По сути не имеет значения. Код является решением, проблема, как правило, просто комментарий. «обнаружено во время профилирования» означает, что оно исправлено, поэтому оно в прошлом и не имеет никакого отношения к делу. Не используйте это как упражнение «ведение журнала».
С.Лотт

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

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

1
@ Томас Оуэнс: учтите, что вы уникальны, а все остальные ленивы. «Я не могу представить никого, кто этого не делает». Вам нужно встретиться с большим количеством людей и увидеть, как мало информации отражено в документации. Например. 100 вопросов StackOverflow - каждый день - на тривиальные ответы. Еще. Люди не читают и задают совершенно глупые вопросы. Я могу только повторить то, что наблюдал за последние 3 десятилетия. Люди не читают. Ваш опыт может быть другим. Вы просили совета. Я дал это тебе.
С.Лотт

2

В процессе принятия решения есть 3 важных факта:

  • Что было опробовано и не сработало (и почему это не сработало, потому что вы нацелены на движущуюся цель)
  • Что
  • Что может быть (просто ожидание реализации X ...)

Однако, кроме «Что есть», все остальные смущают читателя и мешают ей взламывать систему.

Мне нравится идея захвата двух других, хотя они менее интересны для изучения системы, они могут сэкономить время при ее изменении.

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


1

Да. Проектный документ должен объяснять преимущества, риски и предположения, связанные с описываемым дизайном. Проектный документ имеет несколько целей:

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

  2. Сообщите дизайн нетехническим людям, работающим над проектом.

  3. Помощь в планировании, распределении ресурсов, оценке затрат и других видах планирования.

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

  5. Часто является одним из результатов, требуемых по контракту.

(Возможно, есть и другие, но это хорошее начало.)

Каждой из этих целей хорошо соответствует проектный документ, который четко объясняет, почему этот проект был выбран и каковы связанные риски:

  1. Очень важно, чтобы все в команде знали, каковы риски и преимущества, чтобы они могли работать вместе, чтобы избежать этих рисков и наилучшим образом использовать преимущества проекта.

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

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

  4. Даже когда риск больше не является проблемой, часто полезно документировать его, потому что он может помочь объяснить ситуацию во время создания проекта. Это может позволить сопровождающему решить что-то вроде: «Хорошо, тогда они сделали это так, потому что ... но это больше не проблема, поэтому я могу заменить этот код на более простую и быструю реализацию». То же самое касается выгод, конечно.

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

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

Вот запись в блоге о написании проектной документации, которая может оказаться вам полезной.


0

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

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


Это не обязательно вещи, которые можно исправить, но большинство из них - «ошибки», которые многие люди могут упускать из виду, или области, которые не совсем очевидны, как они связаны. Чувствительный ко времени подход - хорошая идея. Этому приложению около 5 лет, и тогда у него просто был доступ к различным инструментам и технологиям, и об этом нужно помнить, независимо от того, какой подход я использую,
Томас Оуэнс

0

Я лично не включил бы это в проектную документацию. В проектном документе должно быть указано, как оно есть, а не почему.

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


Вся документация и знания хранятся в документах Word, электронных таблицах Excel, диаграммах Visio или Rational и презентациях PowerPoint, которые имеют версии. Мне нужно будет либо добавить в проектный документ, либо создать новый документ с инструментом и версией, которые есть в хранилище документов для проекта.
Томас Оуэнс

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

0

Я согласен с вами по поводу обоснования в проектной документации.

Тем не мение,

в процессе обновления проектного документа, написанного кем-то другим, я оставался бы скромным и не пытался догадаться, почему такое решение было принято.

Так,

Я бы вставил обоснование только об изменениях, которые вносятся в конструкцию во время обслуживания.


Определенно это последнее предложение. Я не знаю, почему Джим, Боб и Стив решили разработать свое приложение таким образом, поэтому я даже не собираюсь пытаться его рационализировать. Я могу, однако, убедиться, что определенный модуль или компонент связан с требованием (ями), а также рационализировать решения, которые я принял.
Томас Оуэнс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.