А как вообще документируют историю исправлений и план разр.?
От: FDSC Россия consp11.github.io блог
Дата: 01.05.07 17:13
Оценка:
Люди! Подскажите мне...
Какие есть способы записи изменений в программе (т.е. того, что изменено и почему изменено), записей обнаруженных багов.

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

Интересует как теория, так и впечатления от применения этой теории.



Кто-нибудь составляет план тестирования по уже готовому коду, что бы проверить соответствие ожиданий и реальности именно по коду (а не по ТЗ)?



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

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

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



03.05.07 10:17: Перенесено из 'Философия программирования'
Re: А как вообще документируют историю исправлений и план ра
От: Gaperton http://gaperton.livejournal.com
Дата: 02.05.07 09:31
Оценка: 30 (4) +1
Здравствуйте, FDSC, Вы писали:

FDS>Люди! Подскажите мне...

FDS>Какие есть способы записи изменений в программе (т.е. того, что изменено и почему изменено), записей обнаруженных багов.

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

FDS>Понятное дело, что одним комментарием к ревизии в SVN дело, наверное, не ограничивается...

FDS>Интересует как теория, так и впечатления от применения этой теории.


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

Таким образом, task tracker и система контроля версий являются основной и наиболее достоверной документацией к системе. Пользуясь ими, всегда можно определить автора каждой строки кода, найти чекин, которым она было добавлена, понять, частью каких изменений она является, и получить детальное описание причин появления этой правки. Без подобной системы поддерживать legacy-код практически невозможно, а любой код становится рано или поздно legacy, поэтому внедрение task-tracker + VCS + процедур с ними связанных мы рассматриваем как первый необходимый шаг для организации разработки, не зависящий от применяемых процессов разработки.

FDS>Кто-нибудь составляет план тестирования по уже готовому коду, что бы проверить соответствие ожиданий и реальности именно по коду (а не по ТЗ)?

Бывало, но только для наиболее критичных кусков, так как это очень трудоемко (это обыкновенно разделяемый код, кторый используется в десятках разным мест). Также следует обратить внимание на автоматизированное unit- и системное тестирование, которое должно являться частью процесса разработки и проводится автоматически при ночных билдах. Один из возможных вариантов — запретить закрывать задачи в трекере без наличия чекина успешно работающих unit-тестов c адекватным тестовым покрытием — хотя бы по метрике "строки кода".

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


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


FDS>Вопрос: как в начале разработки описать, что мы собираемся сначала сделать такую-то структуру классов, а затем видоизменить её в другую структуру классов в такой-то последовательности при этом тестируя сначала то-то и то-то, а потом то-то и то-то? Ээ, предполагается, что не словами, а если и словами, то как-то структурировано, что бы можно было понять общий замысел архитектора.


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

Насчет планов — правильный подход при составлении планов — "от тестов". Опишите и сгруппируйте тестовые сценарии, выделяйте тесты уровня модуля, системные тесты, а также тест-кейсы среднего уровня — функционалные тесты, которые свзяывают несколько модулей воедино для выполнения некоторого набора осмысленных функций. Описание сценариев (use cases, user stories, etc), из которых вы получите тест-кейсы среднего уровня, является входной информацией для проверки дизайна, разработки тестов, и разработки общего плана. Ваш план сильно выиграет, если вы будете держать группировку задач в нем от тестов среднего уровня. Это упростит вам управление приоритетами (только сценарии имеют прямую связь с приоритетами — именно они являются связующим звеном), сделает план верхнего уровня читабельнее и устойчивее к изменениям, уменьшит процент ошибок интеграции и риск провала проекта в конце.
Re: А как вообще документируют историю исправлений и план ра
От: ZevS Россия  
Дата: 02.05.07 09:40
Оценка: 1 (1)
Здравствуйте, FDSC, Вы писали:

Software configuration management
Re[2]: А как вообще документируют историю исправлений и план
От: FDSC Россия consp11.github.io блог
Дата: 02.05.07 10:58
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Комментарий к коммиту в системе контроля версий, описывающий суть изменений, с обязательным указанием в теле комментария номера (или ссылки на) задачи или описания ошибки в системе контроля работ (task tracker). От задачи или ошибки в трекере будет ссылка на проектную документацию/требования, или будет прикреплена информация и переписка по поводу ошибки, начиная с момента ее обнаружения.


А что это за системы? Можно какую-нибудь свободно распространяемую например (если такая есть)?

G>Таким образом, task tracker и система контроля версий являются основной и наиболее достоверной документацией к системе. Пользуясь ими, всегда можно определить автора каждой строки кода, найти чекин, которым она было добавлена, понять, частью каких изменений она является, и получить детальное описание причин появления этой правки. Без подобной системы поддерживать legacy-код практически невозможно, а любой код становится рано или поздно legacy, поэтому внедрение task-tracker + VCS + процедур с ними связанных мы рассматриваем как первый необходимый шаг для организации разработки, не зависящий от применяемых процессов разработки.


Возникает вопрос: представим себе, что я хочу узнать о некоторой строке кода дополнительную информацию и откуда она взялась. Значит, я должен найти каким-то (непонятным мне образом) в task tracker информацию об этой строке, и там уже будет ссылка на файлы и соотв. ревизию в SVN, например. Не слишком ли это долго? Т.е. скажем, если я хочу узнать, что изменилось в классе с предыдущей версии и почему, то я должен 1. найти сделать сравнение исходников нескольких версий 2. прочитать кучу связанной с ними документации. При этом я могу не найти нужную мне информацию, связанную с классом, в данной версии, потому что она, скажем, относится к более ранним изменениям.
Проще говоря, как автоматизировать получение о некотором классе программы всей информации, связанной с некоторым куском кода, что бы не пришлось сравнивать десяток различных ревизий между собой и искать всю документацию начиная с основания проекта (что бы всё это делалось само)?


G>Если вы заранее знаете, что структура классов будет изменена в следующей итерации — спроектируйте сразу структуру для следующей итерации, после чего в первой итерации реализуйте необходимое подмножество. Так лучше.


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

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


Есть в сети где-нибудь пример такого плана?
Re[3]: А как вообще документируют историю исправлений и план
От: Gaperton http://gaperton.livejournal.com
Дата: 02.05.07 11:19
Оценка: 30 (3)
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, Gaperton, Вы писали:


G>>Комментарий к коммиту в системе контроля версий, описывающий суть изменений, с обязательным указанием в теле комментария номера (или ссылки на) задачи или описания ошибки в системе контроля работ (task tracker). От задачи или ошибки в трекере будет ссылка на проектную документацию/требования, или будет прикреплена информация и переписка по поводу ошибки, начиная с момента ее обнаружения.


FDS>А что это за системы? Можно какую-нибудь свободно распространяемую например (если такая есть)?


Мы применяем связку Subversion (контроль версий) + JIRA (лучший в мире трекер) + Confluence (вики-портал интегрирующийся с JIRA).

G>>Таким образом, task tracker и система контроля версий являются основной и наиболее достоверной документацией к системе. Пользуясь ими, всегда можно определить автора каждой строки кода, найти чекин, которым она было добавлена, понять, частью каких изменений она является, и получить детальное описание причин появления этой правки. Без подобной системы поддерживать legacy-код практически невозможно, а любой код становится рано или поздно legacy, поэтому внедрение task-tracker + VCS + процедур с ними связанных мы рассматриваем как первый необходимый шаг для организации разработки, не зависящий от применяемых процессов разработки.


FDS>Возникает вопрос: представим себе, что я хочу узнать о некоторой строке кода дополнительную информацию и откуда она взялась. Значит, я должен найти каким-то (непонятным мне образом) в task tracker информацию об этой строке, и там уже будет ссылка на файлы и соотв. ревизию в SVN, например. Не слишком ли это долго? Т.е. скажем, если я хочу узнать, что изменилось в классе с предыдущей версии и почему, то я должен 1. найти сделать сравнение исходников нескольких версий 2. прочитать кучу связанной с ними документации. При этом я могу не найти нужную мне информацию, связанную с классом, в данной версии, потому что она, скажем, относится к более ранним изменениям.


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

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

Насчет изменений — любая система контроля версий дает тебе возможность посмотреть изменения от версии к версии. Короче, читай мануалы.

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


Это вполне адекватно делается через связку, которую я тебе описал. Просто надо хорошо понимать, как она работает, и представлять ее возможности.

G>>Если вы заранее знаете, что структура классов будет изменена в следующей итерации — спроектируйте сразу структуру для следующей итерации, после чего в первой итерации реализуйте необходимое подмножество. Так лучше.


FDS>А если я не могу спроектировать точную структуру классов для следующей итерации, а сама её реализация, даже её части, существенно затруднит написание первой версии проекта?

FDS>Как мне быть тогда?
Тогда забей, и делай так, как можешь. Один хрен потом править.

FDS>Скажем, я могу получить при написании первой версии важную информацию о необходимой структуре всей системы. Т.е. первая версия заодно используется как исследовательское приложение ко второй, более сложной


Это нормально, так бывает. В этом случае надо максимально урезать функционал первой версии, чтобы оставить только высокорискованные части — пусть она будет прототипом. Возможно, будет целесообразно собрать несколько простых прототипов на выброс, чтобы проверить те или иные решения. Зависит от конкретики, короче.

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


FDS>Есть в сети где-нибудь пример такого плана?


Боюсь что нет . Этот подход мы придумали у себя в команде недавно — в результате серии безуспешных попыток спланировать проект на годовой срок, да так, чтобы полному идиоту было понятно, чем люди заняты, плюс — чтобы ресурсное планирование делалось нормально. В сети (и в литературе) рекомендуют бить задачи вернего уровня либо по модулям системы, либо по фазам цикла разработки. Это вообще полный отстой — получаются либо хрупкие, либо невменозные и малопонятные планы. В первом случае бывает что планы рассыпаются на части — их приходится постоянно править, а во втором часто проект накрывается в конце несмотря на то что все постоянно рапортуют прогресс — а ручки то вот они.
Re[2]: А как вообще документируют историю исправлений и план
От: ZevS Россия  
Дата: 02.05.07 12:42
Оценка: 6 (1)
Здравствуйте, ZevS, Вы писали:

Здесь — довольно пространное описание процесса на русском.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.