<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://lib.custis.ru/index.php?action=history&amp;feed=atom&amp;title=Project_Metrics_for_Software_Development</id>
		<title>Project Metrics for Software Development - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://lib.custis.ru/index.php?action=history&amp;feed=atom&amp;title=Project_Metrics_for_Software_Development"/>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;action=history"/>
		<updated>2026-05-03T15:13:44Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11178&amp;oldid=prev</id>
		<title>BenderBot: 1 версия</title>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11178&amp;oldid=prev"/>
				<updated>2009-09-07T00:00:26Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;tr style='vertical-align: top;' lang='ru'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 00:00, 7 сентября 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='ru'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>BenderBot</name></author>	</entry>

	<entry>
		<id>https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11177&amp;oldid=prev</id>
		<title>StasFomin в 11:25, 6 сентября 2009</title>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11177&amp;oldid=prev"/>
				<updated>2009-09-06T11:25:24Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;amp;diff=11177&amp;amp;oldid=11161&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>StasFomin</name></author>	</entry>

	<entry>
		<id>https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11161&amp;oldid=prev</id>
		<title>BenderBot: 1 версия</title>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11161&amp;oldid=prev"/>
				<updated>2009-09-06T00:00:29Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;tr style='vertical-align: top;' lang='ru'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 00:00, 6 сентября 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='ru'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>BenderBot</name></author>	</entry>

	<entry>
		<id>https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11160&amp;oldid=prev</id>
		<title>StasFomin в 16:06, 5 сентября 2009</title>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=Project_Metrics_for_Software_Development&amp;diff=11160&amp;oldid=prev"/>
				<updated>2009-09-05T16:06:21Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;http://www.infoq.com/articles/project-metrics&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
C 2007 года, я участвовал в попытках померить успешность проектов по разработке ПО (с совершенно разными методами управления), чтобы отчитаться перед высшим руководством.&lt;br /&gt;
&lt;br /&gt;
Эта статья содержит некоторые выводы, которых я сделал пытаясь донести до широкой аудитории проблемы с которыми мы столкнулись, и как мы с ними пытались разобраться.&lt;br /&gt;
В основном статья концентрируется на метриках производительности, а не прогресса выполнения, т.к. я лично верю, что последние концентрируются только на настоящем и мало влияют на будущие достижения команды.&lt;br /&gt;
&lt;br /&gt;
Я рассматриваю метрики «прогресса» (объема выполненных работ) как путь, помогающий вашей команде достичь цели вовремя, однако если они не будут отражать производительность команды, шансы на улучшение уменьшаются.&lt;br /&gt;
Например, если проджект-менеджер будет пугать всех чем-то типа «Прогресс и Запланированные Сроки», то команда будет ломиться, нагоняя отставания без передыху и рефлексий — «что идет не так?», «как и что можно улучшить?» — ведь на это нет времени. Вот почему я считаю, что «метрики прогресса» полезны, но никак не достаточны.&lt;br /&gt;
&lt;br /&gt;
Должно быть вы помните знаменитую цитату — «Вы не можете управлять тем, что не можете измерить»&amp;lt;ref&amp;gt;&amp;quot;If you can't measure it, you can't manage it&amp;quot; —  Tom DeMarco . Controlling Software Projects: Management, Measurement and Estimation. ''Prentice Hall''. 1986&amp;lt;/ref&amp;gt;, а если компания не способна управлять проектом по разработке софта, как узнать, что и как можно было бы улучшить? И какой реальный выхлоп дало какое-нибудь изменение? Например, смена методик и практик разработки (кто-нибудь наверняка подумал «переход от Каскада к Аджайлу»…)?&lt;br /&gt;
&lt;br /&gt;
Целью индустрии разработки всегда были успешные софтверные проекты, однако измеряющие этот успех метрики невообразимо разношерстны.&lt;br /&gt;
Наборы метрик зависят от используемой методологии, и могут вообще не иметь ничего общего !&lt;br /&gt;
Мы столкнулись с этим в Hewlett Packard, когда был разнобой проектов, использующих различные методологии, так что высшее руководство получало коктейль из разных метрик.&lt;br /&gt;
&lt;br /&gt;
Да, товарищи аджайлисты, мы знаем, что ваши agile-проекты идеально метризуемы, причем данные собираются абсолютно легко и без отвлечения команды от конструктивного труда, однако набор этих метрик трудно как-то соотнести с проектами не погруженными в такие Agilе-практики, как ''velocity'' , ''cumulative flow'' и ''burndown''.&lt;br /&gt;
Что же делать, когда есть проекты как те, в которых все это есть, так и те, где нет?&lt;br /&gt;
&lt;br /&gt;
Управление процессом разработки софта требует определения мер над основными параметрами управления, что дает и контроль и направления для постоянного улучшения процесса.&lt;br /&gt;
&lt;br /&gt;
==Три ключевых метрики==&lt;br /&gt;
&lt;br /&gt;
После нескольких попыток и исследований как внутри компании, так и во внешнем мире, мы закончили эту возню с огромным набором предложенных метрик (порядка двадцати), но затем, в Agile-стиле, мы усадили команду экспертов для ретроспективы каждой предложенной метрики. Первым делом мы выкинули все метрики, основанные на «размерах» — проекта, артефактов, кода, дистрибутивов — все то, чем обычно рулят софтовыми проектами в больших компаний.&lt;br /&gt;
Мы просто жестко спросили себя — «хотим ли мы это мерить?».&lt;br /&gt;
&lt;br /&gt;
Ответ был — «нет», так как мы в первую очередь хотим набор простых метрик, не «про загрузку» команды, и при этом более полезных для определения командного опыта и производительности.&lt;br /&gt;
&lt;br /&gt;
Наконец мы решили «[[RuPedia:Принцип KISS|быть проще]]», и определили три ключевых IT-метрики:&lt;br /&gt;
;Трудозатраты (''Effort''): общее время на задачу построения работающего продукта или сервиса. Запланированное время мы назвали ''Planned Effort'', а реально затраченное время — ''Actual Effort''. Измерять можно в человеко-часах или днях, в зависимости от специфики проекта. ''Задача'' — это часть из необходимого множества действий, по выполнению работы иили решению проблемы, в общем, понятие достаточно общее как для каскадных, так и для agile-проектов, однако стоит понимать различия методологий по управлению задачами, в чем могут быть как плюсы, так и минусы.&lt;br /&gt;
&lt;br /&gt;
На следующем рисунке мы показали, как можно агрегировать эту метрику по всей команде.&lt;br /&gt;
[[Image:Cumulative Person Effort Visual Display and Actual Effort distribution per phase.jpg|center|framed|Диаграммы совокупных личных трудозатрат и распределения реальных затрат по фазам проекта]]&lt;br /&gt;
&lt;br /&gt;
''Effort'' («трудозатраты») — это впрямую наблюдаемая величина,&lt;br /&gt;
&lt;br /&gt;
которую можно агрегировать по задачам, назначенным разным людям или командам, ее можно вычислять для отдельных задач, вех или фаз.&lt;br /&gt;
&lt;br /&gt;
«Запланированные трудозатраты» (''Planned Effort'') устанавливают для работы по некоторой запланированной задаче, и уточняют при дальнейшем анализе или проектировании.&lt;br /&gt;
&lt;br /&gt;
«Совершенные трудозатраты» по некоторой задаче собирают при ее разработке, тестировании и техподдержке.&lt;br /&gt;
&lt;br /&gt;
Начинающие компании обычно наблюдают большие различия между «планом» и «фактом», далее, параллельно с тем, как команда набирается опыта, оценки и результат становятся все ближе.&lt;br /&gt;
Согласно нашему опыту, если за шесть месяцев оценки «плана» и «факта» так и не стали сходиться, команда должна провести ретроспективу, и найти причины этой проблемы, которые могут быть как внутри, так и вне команды.&lt;br /&gt;
Определение такого Ключевого Ограничения — прекрасное место для начальных изменений, как предложила Мери Поппендик&amp;lt;ref&amp;gt;Poppendieck and Poppendieck, Implementing Lean Software Development: From Concept to Cash, Addison Wesley Professional, 2003.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Производительность (''Productivity''): Определяется, сколько «простых задач» может быть выполнено за день. Производительность можно вычислять на разных уровнях: для отдельных участников, для роли или профиля, для фазы проекта или для проекта целиком.&lt;br /&gt;
Определение «простая задача» обычно всегда порождает жаркие споры: в конце концов мы определили это как я «время, необходимое кому-то чтобы выпустить и внедрить что-то объемом часов в пять» (разумеется, многие простые задачи могут быть и меньше, но мы зафиксировали именно пять часов).&lt;br /&gt;
&lt;br /&gt;
В соответствие с определением «число простых задач поставляемых за 8-часовой рабочий день» формула будет следующей:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;m&amp;gt;&lt;br /&gt;
Productivity = \frac{ \frac{Planned Effort}{5} }{Actual Effort} \cdot 8&lt;br /&gt;
&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На этом рисунке видно, как эту метрику можно суммировать по команде.&lt;br /&gt;
&lt;br /&gt;
[[Image:Productivity Visual Display (time).jpg|center|framed|Визуализация продуктивности (временная шкала)]]&lt;br /&gt;
&lt;br /&gt;
Очевидно, что с этой метрикой можно поспорить, и против нашего определения можно выдвинуть много разумных возражений, однако нам надо было найти какой-то устраивающий всех компромисс, ну как в&lt;br /&gt;
&lt;br /&gt;
любой приличной демократии.&lt;br /&gt;
&lt;br /&gt;
Как только мы получили такую метрику, сразу стало возможным мониторить «здоровье проекта» по неделям, месяцам, отдельным ресурсам и т.п.&lt;br /&gt;
&lt;br /&gt;
Метрика производительности «начинается» на уровне отдельной задачи, затем ее можно «свернуть» до уровня релиза, фазы, и целиком уровня проекта.&lt;br /&gt;
&lt;br /&gt;
[[Image:Productivity Visual Display (Waterfall vs Agile).jpg|center|framed|Визуализация продуктивности «Waterfall против Agile»]]&lt;br /&gt;
&lt;br /&gt;
Вот эта картинка показывает общую производительность по двум схожим выпускам одного продукта, где работала одна и та же команда, причем измеряли, используя одни и те же метрики.&lt;br /&gt;
&lt;br /&gt;
Сначала эта команда работала шесть месяцев использую привычный старый добрый ''Waterfall'' (сначала весь анализ, потом кодирование и только потом тестирование), затем после того, как они перешли на ''Agile'', был некоторый релиз, на который они также затратили более полугода.&lt;br /&gt;
&lt;br /&gt;
Померив нашей формулой оба релиза, мы обнаружили, то, что обычно предсказывает Agile-партия:&lt;br /&gt;
в Waterfall-подходе куча работы переносится с одной фазы в другую (например, из кодирования в тестирование), что в долгосрочной перспективе мешает команде выпускать качественный продукт, и тем самым уменьшает производительность, определенную предыдущей формулой, ибо куча времени тратиться на переключение контекста при возникшей «многозадачности».&lt;br /&gt;
&lt;br /&gt;
Та же команда с использованием принципов и практик Agile, таких как итеративная разработка, сконцентированность на требуемых свойствах, и уклонение от преждевременной разработки (в первую очередь атака на высокоприоритетные требования и технологические риски), смогла существенно увеличить свою продуктивность.&lt;br /&gt;
&lt;br /&gt;
Используя одинаковую метрику стало возможным мерить и предсказуемость выпуска (для Agile-проектов), и также улучшать точность оценок по мере развития проекта.&lt;br /&gt;
&lt;br /&gt;
;Качество (''Quality''): определяется числом серьезные, типичных, и маловажных дефектов обнаруженных за время жизни проекта. Оно помогает определить доброкачественность продукта для конечного пользователя. Каждая команда должна сама определить критерии «серьезности», «типичности» и «маловажности» для их конкретных проектов. Качество нужно отслеживать в течении всей жизни проекта, ведь чем позже пойман баг, тем больше вреда он нанесет проекту. На следующем рисунке показано, как агрегировать эту метрику по всей команде.&lt;br /&gt;
[[Image:Quality Visual Display.jpg|center|framed|Диаграмма ''Качества'']]&lt;br /&gt;
&lt;br /&gt;
Параллельно с регистрацией дефектов, мы также отслеживали производную метрику «удаление дефектов».&lt;br /&gt;
Это нужно, чтобы оценить, какой процент проблем мы нашли на поздних стадиях (эти проблемы очевидно обошлись нам дороже), по сравнению с рано найденными.&lt;br /&gt;
&lt;br /&gt;
Сравнивая наши ''Agile'' и ''Waterfall'' проекты по этому параметру, мы опять обнаружили интересные особенности.&lt;br /&gt;
&lt;br /&gt;
[[Image:Defect Removal Visual Display.jpg|center|framed|Диаграмма «Удаляемые Дефекты»]]&lt;br /&gt;
&lt;br /&gt;
На предущем рисунке видно, что в Agile-проекте более-менее постоянная частота дефектов на протяжении всего жизненного цикла, в то время как в Waterfall-типе проектов, наблюдается явный пик ближе к концу. Да, напомним, что информацию для этого сравнения мы собрали от двух разных, но примерно одинаковых по объему, релизов одного продукта, разработываемых одной и той же командой, но в разное время и с использованием этих двух подходов.&lt;br /&gt;
&lt;br /&gt;
Этот набор метрик постоянно собирался, анализировался, и использовался в отчетах.&lt;br /&gt;
&lt;br /&gt;
Мы собрали их всех на «приборной доске проекта» для целостного обзора, и чтобы публиковать и анализировать результаты с заинтересованными лицами.&lt;br /&gt;
&lt;br /&gt;
==Корреляции==&lt;br /&gt;
Наблюдались очевидные корреляции между этими метриками, см. следующую таблицу.&lt;br /&gt;
&lt;br /&gt;
{| border=1 style=&amp;quot;border-style:dashed; border-width:1px; border-color:orange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Metric 1&lt;br /&gt;
| Metric 2&lt;br /&gt;
| Положительная зависимость&lt;br /&gt;
| Отрицательная зависимость&lt;br /&gt;
|-&lt;br /&gt;
| Производительность (''Productivity'')&lt;br /&gt;
| Плотность выпущенных дефектов&lt;br /&gt;
| Высокая продуктивность вместе с высокой плотностью выпущенных дефектов это индикатор недостаточных для проекта запланированных трудозатрат на обеспечение качества. Хотя высокая производительность штука хорошая, нужно найти взаимовыгодный компромисс между производительностью и качеством, чтобы был оптимальный уровень производительности при достаточно хорошем качестве.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
* Высокая производительность с низкой плотностью выпущенных дефектов — хорошее, годное поведение. Тут команде имеет смысл поискать пути повышения производительности, сохраняя контроль-мониторинг над низким уровнем ошибок.&lt;br /&gt;
&lt;br /&gt;
* Высокая плотность ошибок при низкой производительности означает необходимость усиления раннего обнаружения проблем — путем настройки процессов тестирования, или даже его автоматизации.&lt;br /&gt;
|-&lt;br /&gt;
| Производительность (''Productivity'')&lt;br /&gt;
| Эффективность удаления дефектов&lt;br /&gt;
| Высокая производительнсоть при высокой эффективности удаления дефектов свидетельствует о хорошем балансе между производительностью и скоростью. Команда может попробовать дальнейшие улучшения производительсности, продолжая отслеживать эффективность удаления дефектов.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
* Высокая производительность с низким уровнем удаления дефектов означает, что вложения в процессы обеспечения качества (QA) недостаточны.&lt;br /&gt;
&lt;br /&gt;
* Высокая эффективность удаления дефектов при низкой продуктивности означает необходимость несколько большего внимания к качеству на протяжении всего цикла проекта.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Заключение ==&lt;br /&gt;
&lt;br /&gt;
''Guilherme Souto'', один из наших ПМов в бразильском исследовательском подразделении, предложил несколько кратких советов, чтобы помочь нам быть честными и рационально управлятся при внедрении метрик:&lt;br /&gt;
&lt;br /&gt;
* Метрики должны быть связаны с целями проекта или компании, чтобы было видно, чего мы достигли, на пути к ним.&lt;br /&gt;
* Метрики должны быть максимально интегрированы в ежедневные процессы, чтоыб избегать трат времени чисто на сбор данных.&lt;br /&gt;
* Нужно проверить, что выбранные метрики охватывают разные области, и в конце концов определяют, успешен ли был проект.&lt;br /&gt;
* Метрики, имеют смысл только в контексте остальных метрик, как слова, имеющие смысл только внутри предложения. Поэтому нужно по возможности избегать анализа метрик по отдельности.  Когда такое случается, команды слишком фокусируются на производительности, а нам приходиться выполнять роль злого следователя, рассматривая остальные переменные например, «а насколько сложен проект сам по себе?» или уровень качества производимого командой. И наконец, мы предостерегаем от совершенных нами ошибок, когда мы, ведомые изолированными метриками типа «производительность на фоне плановых сроков», жертвовали качеством и другими ресурсами.&lt;br /&gt;
* Бессмысленно использовать метрику. которую никак нельзя конструктивно использовать.&lt;br /&gt;
* Для метрик типа производительности, нужно определить целевые значения и диапазоны, чтобы команда их придерживалась, и в случае необходимости принимала корректирующие действия.&lt;br /&gt;
&lt;br /&gt;
Эти метрики предоставляют только частьь этой истории и их применимость для принятия решений зависио от понимания всей цепочтик событий, которая привела в какому-то изменению в командной тенденции. &lt;br /&gt;
Этот подход и определенный здесь набор метрик может не быть оптимальным решением для вашей команды, но мы пришли именно к этому и оно у нас работает. &lt;br /&gt;
Надеемся, это сработает и у некоторых наших читателей, но разумеется, гарантий дать не можем.&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Дополнительная литература==&lt;br /&gt;
&lt;br /&gt;
* 1. H T. Goranson, The Agile Virtual Enterprise: Cases, Metrics, Tools. ''Quorum Books''. 2003.&lt;br /&gt;
* 2. Dr. Cem Kaner, Software Engineer Metrics: What do they measure and how do we know? ''10th International Software Metrics Symposium''. 2004&lt;br /&gt;
* 3. Rüdiger Lincke, Jonas Lundberg, Welf Löwe: Comparing software metrics tools. ''International Symposium on Software Testing and Analysis''. 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{replicate-from-custiswiki-to-lib}}&lt;/div&gt;</summary>
		<author><name>StasFomin</name></author>	</entry>

	</feed>