Здравствуйте, gandjustas, Вы писали:
LMA>>"Одно и тоже" подразумевают, что они оба будут писать C1.
G>Один сделает в одном методе одну ошибку, другой в этом же методе — другую.
Даже боюсь подумать какая у Вас в команде плотность дефектов (на тысячу строк кода), что Вас беспокоит такая ситуация!
Здравствуйте, Gaperton, Вы писали:
G>Мы, зная, что на тестирование-отладку у нас уходит 50% времени, поручаем ее обоим программистам. Получаем две системы с разным detailed design, в одной из которых примерно 20 ошибок, в другой — примерно 30. Что мы делаем дальше?
Ну, во-первых, мы должны получить не две системы, а две версии компонента (в концептуальном смысле, т.е. компоненты — это элементы, которые можно независимо друг от друга разрабатывать, покупать, обновлять и т.д.) или две версии набора компонентов (что зависит от масштаба). Дальше выбирается лучший из двух вариантов как можно меньшей по размеру части кода (такой размер будет продиктован детализацией спецификаций, которые, очевидно, одинаковые "на входе" у обоих программистов; в самом худшем случае — это будет компонент). Критерием лучшего варианта может быть "старая-добрая" метрика WTFs/min
Ключевой вопрос — какова должна быть степень детализации требований, а следовательно и размер "грануляции", которая оказывает в свою очередь влияние на количество багов (исходя из такого простого принципа, что множества багов каждого из них не будут равны). Естественно, тут важна граммотная проработка требований, совместные брифинги с привлечением обоих программистов (чтобы они шли "одним путем"), неслучайный подбор программистов в "пару" и здоровая конкуренция между ними... короче, все, что надо делать в любом случае — никуда не девается.
LMA>>Ну а еще "максимум 25%" хорошо согласуется с теми исследованиями на эту тему, что мне приходилось видеть. Ссылки на некоторые из них можно найти у того же Макконнелла в Code Complete.
G>Отлично. Допустим для целей нашей дискуссии, что это так и есть (цифра, кстати, на мой взгляд вполне правдоподобная). Теперь вопрос. У вас по замерам времени выяснилось, что это время — 40%. Вы — менеджер. У вас группа из 6 человек программистов. Ваши действия? Что лично вы делать будете? Каков будет план ваших мероприятий? В терминах конкретных действий, если можно.
Это всего-навсего означает, что на это тратится слишком много времени,
по сравнению с оптимальной величиной. Это означает одно из двух: нетипичный проект (например, требующий повышенной надежности — "ядрёные штучки" и т.д.) или означает неэффективность процесса тестирования.
Шаги по повышению эффективности я уже приводил в первом посте.