<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ИТ в действии! &#187; Практика</title>
	<atom:link href="https://kholodkov.ru/it/?feed=rss2&#038;tag=prakt" rel="self" type="application/rss+xml" />
	<link>https://kholodkov.ru/it</link>
	<description>коллекция ИТ-наработок: подходы, методики, практики, идеи, стратегии и др....</description>
	<lastBuildDate>Mon, 16 Oct 2017 15:50:19 +0000</lastBuildDate>
	<language>ru-RU</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.38</generator>
	<item>
		<title>Управленческий учет для небольшой IT-команды</title>
		<link>https://kholodkov.ru/it/?p=930</link>
		<comments>https://kholodkov.ru/it/?p=930#comments</comments>
		<pubDate>Tue, 28 Mar 2017 14:24:30 +0000</pubDate>
		<dc:creator><![CDATA[Холодков Антон]]></dc:creator>
				<category><![CDATA[IT-кейсы]]></category>
		<category><![CDATA[Новое]]></category>
		<category><![CDATA[uml2.ru]]></category>
		<category><![CDATA[Практика]]></category>

		<guid isPermaLink="false">http://www.kholodkov.ru/it/?p=930</guid>
		<description><![CDATA[1. Вводная На рынке IT-услуг работает множество небольших независимых команд (организованных групп разработчиков, аналитиков, консультантов и т.п.), которые уже не являются индивидуальными фрилансерами, поскольку выступают перед своими клиентами в качестве единой команды, но еще (или вообще) не являются полноценными фирмами, поскольку в них отсутствуют в законченном виде свойственные организациям «вспомогательные» процессы в следующих областях: работа [&#8230;]]]></description>
				<content:encoded><![CDATA[<h3><img style="padding: 0px; float: right; margin: 0px 10px 10px 10px;" src="/it/wp-content/uploads/2014/03/014_logo.png" alt="014_logo" />1. Вводная</h3>
<p>На рынке IT-услуг работает множество небольших независимых команд (организованных групп разработчиков, аналитиков, консультантов и т.п.), которые уже не являются индивидуальными фрилансерами, поскольку выступают перед своими клиентами в качестве единой команды, но еще (или вообще) не являются полноценными фирмами, поскольку в них отсутствуют в законченном виде свойственные организациям «вспомогательные» процессы в следующих областях: работа с кадрами, управленческий и финансовый учет, документооборот и т.п.</p>
<p>Не смотря на это, небольшим командам также приходится в той или иной мере развивать все эти процессы, в т.ч. заниматься их «внутренней автоматизацией». При этом очень важно найти разумный компромисс между функционалом и затратами ресурсов на создание таких «внутренних» IT-решений. Ведь никому не хочется, например, терять часы и деньги, вручную проводя взаиморасчеты между клиентами и членами команды. С другой стороны, никто не хочет тратить свое время и деньги на создание или внедрение «навороченных» систем вместо того, чтобы зарабатывать деньги на коммерческих проектах.</p>
<p>Представляя одну из таких команд, хочу поделиться своим опытом создания небольшой системы для управленческого учета внутри своей команды в формате «IT-кейса».</p>
<p><span id="more-930"></span></p>
<h3>2. Бизнес-цели, имеющиеся проблемы и ограничения</h3>
<p>Основные цели:</p>
<ol>
<li>Обеспечить полную прозрачность взаиморасчетов с клиентами</li>
<li>Обеспечить полную прозрачность взаиморасчетов внутри команды</li>
<li>Понимать в каждый конкретный момент времени кто, какие задачи и для кого выполняет</li>
<li>Обеспечить фиксацию внутренних и внешних формальных и неформальных договоренностей относительно сроков и оценочных (максимальных) трудозатрат на выполнение задач</li>
<li>Сократить «непродуктивные» трудозатраты на подготовку отчетной документации для клиентов (счета, акты, таймшиты и т.п.)</li>
<li>Иметь возможность анализировать финансовые результаты выполняемых работ</li>
</ol>
<p>Ограничения:</p>
<ol>
<li>Временные – готовность к использованию за 1-2 недели</li>
<li>Финансовые – чем дешевле, тем лучше</li>
<li>Функциональные – возможность «постепенного» наращивания функционала одновременно с использованием решения по мере улучшения понимания текущих и появления новых бизнес-требований к нему с минимальными «накладными расходами» на сам процесс внесения изменений (выпуск версий, тестирование, деплой и т.п.)</li>
</ol>
<h3>3. Идеи от IT</h3>
<p>Исходя из стоящих целей и имеющихся ограничений, рассматривались следующие альтернативные варианты:</p>
<ol>
<li>Использовать какое-то готовое решение из области «общего» учета (например, на базе 1С)</li>
<li>Использовать какое-то готовое решение из области автоматизации процессов разработки (например, Redmine)</li>
<li>Сделать что-то свое</li>
</ol>
<p>После рассмотрения «за» и «против» каждого из этих трех вариантов было принято решение остановиться на варианте «3».</p>
<p>Вариант «1» не устроил потому, что любое такое «готовое» решение пришлось бы дорабатывать под специфику наших задач, а трудозатраты на доработку с использованием малознакомой платформы едва ли оказались бы меньше создания подобного решения «с нуля» на базе отработанных технологий. Плюс к этому смущала необходимость изменения и наших процессов расчетов под логику, реализованную в решении.</p>
<p>Вариант «2» лучше подходил с точки зрения отражения специфики IT-команды, но финансово-расчетная часть функционала там либо отсутствовала, либо была недостаточно развита.</p>
<p>Как в случае «1», так и в случае «2» смущала также необходимость оплаты стоимости лицензий и наличие «в нагрузку» дополнительного функционала, который в обозримом будущем не требовался или уже был внедрен на базе других систем (например, работа с планами-графиками проектов из функционала Redmine уже реализована при помощи MS Project, а работа с проектными документами и внутренний портал взаимодействия при помощи Alfresco ECM).</p>
<p>В варианте «3» подкупала возможность сделать ровно то, что нужно сейчас и постепенно это развивать по мере расширения и изменения требований.</p>
<p>Что касается платформы для создания учетной системы «с нуля», то сначала я планировал сделать все в рамках внутреннего портала взаимодействия на базе Alfresco ECM, однако потом решил использовать MS Access. Access позволял сделать все несколько быстрее и, что самое главное, вносить изменения в функционал по мере необходимости практически одновременно с его использованием. Это позволяет с низкими накладными издержками отработать информационную модель и пользовательской интерфейс в реальной жизни. Потом при необходимости можно перенести уже отработанные технологические решения на более производительную платформу. С другой стороны, с учетом небольшого размера команды и, соответственно, небольших объемов обрабатываемых данных Access вполне подходит для этих целей.</p>
<h3>4. Концепция решения</h3>
<p>Итак, наше IT-решение для управленческого учета в небольшой IT-команде представляет собой файл Microsoft Access 2013, включающий в себя базу данных, а также набор форм, запросов и отчетов для работы с ней.</p>
<p>Центральной и наиболее сложной задачей при разработке подобных решений является создание информационной модели, отражающей существующие бизнес-объекты и процессы по работе с ними. При этом не существует единственно правильного решения данной задачи. Однако, недостатки любого предложенного варианта, не видные «невооруженным глазом» при проектировании, дадут о себе знать, как при разработке, так и при последующем использовании системы.</p>
<p>Несколько упрощенная информационная модель предлагаемого мною варианта приведена на схеме ниже.</p>
<p style="text-align: center;"><img src="/it/wp-content/uploads/2014/03/032814_1424_IT1.png" alt="Управленческий учет для небольшой IT-команды" /></p>
<p>Центральным элементом данной модели является «Проект». Проекты различаются по типам с точки зрения направленности (внутренние, внешние и пресэйлы), а также с точки зрения способа взаиморасчетов по ним (фиксированная оплата за согласованный объем работ – fixed price, оплата потраченных часов – time&amp;material, без оплаты – некоммерческие).</p>
<p>Каждый Проект связан с определенным Клиентом, при для одного Клиента могут выполняться несколько Проектов.</p>
<p>Модель позволяет производить начисления (биллинг) для Клиентов по Проектам двумя способами в зависимости от типа договора Проекта:</p>
<ul>
<li>На основании фактически потраченных часов (для T&amp;M проектов) – экземпляров сущности Трудозатраты</li>
<li>На основании выставленных счетов, отражающих этапы и условия расчетов из договора (для FP проектов) – экземпляров сущности Начисление</li>
</ul>
<p>Для детализации групп работ в рамках Проекта служит сущность Задача. Задача соотносится с элементарной или суммарной работой в иерархической структуре работ (WBS) данного проекта. Таким образом обеспечивается стыковка с календарно-сетевым и ресурсным планированием, производимым в Microsoft Project. Также Задача хранит в себе различные плановые оценки трудозатрат (первоначальную, согласованную с Клиентом и т.п.) и консолидирует фактические трудозатраты из связанных с ней экземпляров сущностей Трудозатраты.</p>
<p>Далее в рамках определенной Задачи создаются Назначения конкретным Ресурсам. Ресурс – это человек, член нашей команды. В будущем планируется также реализовать поддержку не только трудовых, но и материальных ресурсов. Каждый Ресурс имеет определенную стоимость (почасовая ставка).</p>
<p>Назначение представляет собой договоренность с определенным Ресурсом выполнить определенный объем работ (согласованная с Ресурсом оценка трудозатрат) во исполнение определенной Задачи. Например, по Задаче «Создание прототипа» могут быть созданы три Назначения:</p>
<ul>
<li>Подготовка функциональной спецификации – для аналитика Иванова</li>
<li>Разработка прототипа – для программиста Петрова</li>
<li>Тестирование – для тестировщика Сидорова</li>
</ul>
<p>В процессе выполнения Назначения исполнитель или руководитель проекта ежедневно фиксирует количество потраченных в этот день часов соответствующего Ресурса посредством создания экземпляра сущности Трудозатраты.</p>
<p>По факту выполнения Назначения руководитель проекта оценивает их качество и фиксирует в виде оценки выполнения. Эта оценка впоследствии используется при анализе эффективности Ресурсов.</p>
<p>Завершающими элементами бизнес-процессов и предложенной информационной модели являются платежи от Клиентов и для Ресурсов. Как и в реальной жизни, выделяются два вида платежей:</p>
<ul>
<li>Входящий платеж – любое поступление денежных средств в общий бюджет команды (расчетные счета, наличные), в частности, поступление по договору от Клиента</li>
<li>Исходящий платеж – любой расход денежных средств из общего бюджета команды, в частности, оплата работ Ресурса</li>
</ul>
<p>Платежи не ограничиваются расчетами между Клиентами и Ресурсами, а отражают абсолютно все финансовые расчеты команды (расходы на оборудование, оплата лицензий, реклама и т.п.). Это позволяет полностью контролировать финансы команды, в т.ч. текущие остатки денежных средств. Также для каждого платежа указывается соответствующая расходная или доходная статья, что позволяет формировать соответствующие управленческие отчеты о доходах и расходах.</p>
<p>Наконец, посредством сопоставления Начислений, Трудозатрат, Входящих и Исходящих платежей автоматически рассчитываются текущие балансы по Клиентам и Ресурсам (кто, кому и сколько должен в итоге).</p>
<h3>5. Задачи по реализации</h3>
<p>Для реализации концепции, описанной выше, были выполнены следующие работы.</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 415px;" />
<col style="width: 106px;" /></colgroup>
<tbody valign="top">
<tr style="background: #f2f2f2;">
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Наименование задачи</strong></td>
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Примерные трудозатраты, человеко-часов</strong></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Создание информационной модели, проектирование структуры базы данных и форм пользовательского интерфейса, обсуждение и согласование</td>
<td style="padding-left: 7px; padding-right: 7px;">8</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Создание таблиц в MS Access, наполнение справочников и ввод первоначальных данных</td>
<td style="padding-left: 7px; padding-right: 7px;">4</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Создание макросов данных в MS Access (реализация бизнес-логики на уровне базы данных)</td>
<td style="padding-left: 7px; padding-right: 7px;">4</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Создание форм в MS Access (реализация интерфейсной логики)</td>
<td style="padding-left: 7px; padding-right: 7px;">8</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Создание запросов и отчетов в MS Access (реализация аналитики)</td>
<td style="padding-left: 7px; padding-right: 7px;">8</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Тестирование, опытная эксплуатация и доработки</td>
<td style="padding-left: 7px; padding-right: 7px;">8</td>
</tr>
</tbody>
</table>
</div>
<p>Итого: 40 человеко-часов.</p>
<h3>6. Оценка затрат</h3>
<p>Затраты на создание решения в разрезе статей расходов приведены в таблице ниже.</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 141px;" />
<col style="width: 246px;" />
<col style="width: 120px;" />
<col style="width: 98px;" /></colgroup>
<tbody valign="top">
<tr style="background: #f2f2f2;">
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Статья расходов</strong></td>
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Наименование затраты</strong></td>
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Объем в количественных показателях</strong></td>
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Объем в стоимостных показателях</strong></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Оборудование</td>
<td style="padding-left: 7px; padding-right: 7px;">-</td>
<td style="padding-left: 7px; padding-right: 7px;">-</td>
<td style="padding-left: 7px; padding-right: 7px;">0 руб.</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Лицензии</td>
<td style="padding-left: 7px; padding-right: 7px;">Дополнительных лицензий помимо имеющихся MS Office не требуется</td>
<td style="padding-left: 7px; padding-right: 7px;">-</td>
<td style="padding-left: 7px; padding-right: 7px;">0 руб.</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Работы</td>
<td style="padding-left: 7px; padding-right: 7px;">Собственные трудозатраты по созданию решения (по ставке 1.200 руб. / за час)</td>
<td style="padding-left: 7px; padding-right: 7px;">40 человеко-часов</td>
<td style="padding-left: 7px; padding-right: 7px;">48.000 руб.</td>
</tr>
</tbody>
</table>
</div>
<p>Итого: 48.000 рублей.</p>
<h3>7. Оценка выгод</h3>
<h4>7.1. Прямой экономический эффект</h4>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 198px;" />
<col style="width: 302px;" />
<col style="width: 104px;" /></colgroup>
<tbody valign="top">
<tr style="background: #f2f2f2;">
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Наименование</strong></td>
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Алгоритм расчета экономического эффекта</strong></td>
<td style="padding-left: 7px; padding-right: 7px;" valign="middle"><strong>Объем в стоимостных показателях</strong></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px;">Сокращение трудозатрат на ведение управленческого учета</td>
<td style="padding-left: 7px; padding-right: 7px;">До внедрения решения ведение управленческого учета занимало у меня в среднем около 1 часа в день, т.е. около 20 часов в месяц.Данное решение позволило сократить трудозатраты на ведения управленческого учета в 2 раза, т.е. до 10 часов в месяц.</p>
<p>Экономический эффект в натуральных показателях равен 10 человеко-часам в месяц. По ставке 1.200 руб. в час – это 12.000 руб. в месяц.</td>
<td style="padding-left: 7px; padding-right: 7px;">12.000 руб. в месяц.</td>
</tr>
</tbody>
</table>
</div>
<p>Итого: 12.000 руб. в месяц.</p>
<h4>7.2. Косвенные выгоды</h4>
<ol>
<li>Повышение прозрачности взаиморасчетов</li>
<li>Уменьшение количества ошибок в расчетах</li>
<li>Повышение качества принимаемых решений за счет появления дополнительных аналитических инструментов</li>
<li>Улучшение взаимоотношений с клиентами за счет четкой и централизованной фиксации договоренностей о плановых сроках и трудозатратах на выполнение задач</li>
<li>Улучшение взаимоотношений внутри команды за счет четкой и централизованной фиксации договоренностей о плановых сроках и трудозатратах на выполнение назначений</li>
</ol>
<h3>8. Анализ эффективности</h3>
<p>Приведенные выше расчеты свидетельствуют о сроке окупаемости данного решения менее 4-х месяцев даже при рассмотрении только лишь прямого экономического эффекта.</p>
<p>Однако, с учетом того, что управленческий учет является центральной стратегически и тактически важной функцией в принципе, влияние косвенных выгод от создания решения по его автоматизации оказывается более выраженным, чем прямой экономический эффект.</p>
<p>Т.е. можно с уверенностью утверждать о высокой экономической эффективности данного решения.</p>
]]></content:encoded>
			<wfw:commentRss>https://kholodkov.ru/it/?feed=rss2&#038;p=930</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BPM-система в действии или как сделать много за мало</title>
		<link>https://kholodkov.ru/it/?p=785</link>
		<comments>https://kholodkov.ru/it/?p=785#comments</comments>
		<pubDate>Sun, 12 Apr 2015 16:43:57 +0000</pubDate>
		<dc:creator><![CDATA[Холодков Антон]]></dc:creator>
				<category><![CDATA[Бизнес-процессы]]></category>
		<category><![CDATA[Интеграция систем]]></category>
		<category><![CDATA[uml2.ru]]></category>
		<category><![CDATA[Практика]]></category>

		<guid isPermaLink="false">http://www.kholodkov.ru/it/?p=785</guid>
		<description><![CDATA[Занимаясь много лет автоматизацией бизнес-процессов, я не понаслышке знал, что такое ресурсные треугольники, квадраты, круги (шутка J) и прочие законы жанра. Если нужно сделать хорошее индивидуальное и функциональное решение под какую-то организацию, то почти всегда получается дорого. Если бюджет проекта составляет три копейки, то обычно получается очень сердито. Наверное, не будет слишком уж сильным невежеством [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style="margin-top:5px; margin-bottom:10px; margin-left:10px; margin-right:0px; padding:0px; float: right;" src="http://kholodkov.ru/it/wp-content/uploads/2012/04/bizagi_00.jpg" alt=""/>Занимаясь много лет автоматизацией бизнес-процессов, я не понаслышке знал, что такое ресурсные треугольники, квадраты, круги (шутка <span style="font-family:Wingdings">J</span>) и прочие законы жанра. Если нужно сделать хорошее индивидуальное и функциональное решение под какую-то организацию, то почти всегда получается дорого. Если бюджет проекта составляет три копейки, то обычно получается очень сердито.
</p>
<p>Наверное, не будет слишком уж сильным невежеством утверждать, что <strong><em>максимально</em></strong> возможный эффект для бизнеса от ИТ-решения, отнесенный к стоимости его разработки/внедрения &#8212; величина примерно одинаковая для решений разных вендоров, технологий, парадигм и т.п. Есть лишь только одна маленькая деталь – реальный эффект от ИТ-решения, как правило, существенно меньше максимального (<span style="text-decoration:line-through">часто</span> иногда он меньше нуля) и стремится к максимальному в том случае, если это правильное решение для конкретной компании и внедряется оно правильными людьми. Попытки внедрить 1С в компаниях, где нужен SAP приводят к печальным последствиям. Равно как и внедрение SAP в компаниях, где вполне подойдет 1С приводит к неадекватным расходам на внедрение и дальнейшее сопровождение и, в конечном счете, к тем же печальным последствиям (для ИТ-руководства). Ну, собственно, это философия ИТ.
</p>
<p><span id="more-785"></span></p>
<p>В силу наличия в голове описанных выше установок, я был настроен весьма скептически, когда впервые столкнулся с BPM-системами. Обещания разработчиков систем выглядели фантастически: комплексная автоматизация целых бизнес-процессов практически без программирования и с копеечной стоимостью лицензий. Здесь и далее я привожу в качестве примера систему BizAgi BPM Suite, хотя существует целый класс подобных систем под общим названием BPMS (Business Process Management System). Сразу возникали закономерные вопросы: для чего тогда существуют ИТ-подразделения, занимающиеся внедрением и стыковкой между собой систем разных классов и вендоров? Для чего существуют команды разработчиков почти на каждом предприятии, пишущие свои собственные системы «с нуля»? Для чего пользователям приходится ежедневно работать с десятком разных приложений? Ведь можно поставить одну BPM-систему «из коробки», посадить за нее продвинутого пользователя, который настроит в ней все бизнес-процессы компании, а другие менее продвинутые пользователи будут исполнять их в этой системе в соответствии со сделанными настройками! Конечно же, тогда я не поверил в то, что это возможно и был прав, но лишь отчасти…
</p>
<p>Позднее я понял, что существует огромная область для BPM-систем, в которой их применение может быть многократно эффективнее (по соотношению результат/стоимость), чем применение ИТ-системы любого другого класса. Также я обнаружил, что распространенность BPM-систем в России неадекватно мала по сравнению с масштабами бизнес-областей, для которых они являются оптимальным решением.
</p>
<p>В этой статье я приведу в качестве примера бизнес-кейс по внедрению BPM-системы и рассмотрю, для каких еще задач оправданно применение BPM-системы.
</p>
<h3>От общего к частному: бизнес-кейс по внедрению BPM-системы<br />
</h3>
<h4>Что за бизнес?<br />
</h4>
<p style="text-align: center"><img src="http://kholodkov.ru/it/wp-content/uploads/2012/04/bizagi_01.jpg" alt=""/><span style="font-size:14pt"><br />
		</span></p>
<p>Некоторая компания А занимается персонализированной печатью в промышленных масштабах. В качестве примера продукции можно привести ежемесячные счета для абонентов оператора связи или периодические выписки по счетам для клиентов банка. Компания А получает от своих клиентов базы данных, в которых содержатся списки получателей и информация, которая должна быть напечатана для каждого из них. Далее компания А проводит дополнительную обработку этих баз данных для печати, формирует макеты с расположениям выводимой информации на листах стандартных форматов, согласует эти макеты с заказчиками в виде образцов печати. После этого данные в согласованном виде распечатываются на высокопроизводительных цифровых промышленных принтерах, упаковываются в конверты (конвертование) для отправки по почте. В конверты по желанию заказчика могут вкладываться дополнительные материалы (рекламные листовки, буклеты и т.п.). Затем конверты укладываются в картонные короба и передаются в почтовую компанию или курьерскую службу для доставки получателям. После всех взаиморасчетов с клиентом за оказанные услуги заказ считается закрытым.
</p>
<h4>Какие есть проблемы?<br />
</h4>
<p>«Единицей» услуг, оказываемых компанией, является «заказ» &#8212; печать, упаковка и отправка определенного тиража для определенного клиента и здесь есть два важных обстоятельства:
</p>
<ol>
<li>Выполнение каждого заказа должно происходить в определенной технологической последовательности (по большей части стандартной), причем, в этот процесс на разных этапах вовлечено большое количество разных людей, разнесенных территориально (технологический офис, цеха, отдел продаж и т.п.).
</li>
<li>Одновременно в компании выполняется множество заказов, находящихся на разных стадиях исполнения.
</li>
</ol>
<p>Очевидно, что необходимо управлять всей этой массой выполняемых заказов. Например, планировать загрузку людей и оборудования, раздавать рабочие задания, контролировать качество, заниматься отслеживанием и восстановлением брака и т.п. В компании отсутствует интегрированная система управление производством. Диспетчеризация заказов производится частично вручную, частично с лоскутной автоматизацией.
</p>
<p>Этим обуславливаются следующие проблемы:
</p>
<ol>
<li>Высокие ручные трудозатраты на ведение сводной информации по выполняемым заказам, их статусам, плановым датам отдельных операций и т.п.
</li>
<li>Недостаточное качество и актуальность подобной информации. В целом, невозможно быстро и точно сказать какой заказ на какой стадии находится в данный момент, в чьей зоне ответственности и т.п.
</li>
<li>Дополнительные издержки, связанные с недостаточно эффективным использованием оборудования и трудовых ресурсов.
</li>
<li>Отдельные виды проблем с качеством.
</li>
<li>Прочие стандартные проблемы, связанные с недостаточной автоматизацией основных бизнес-процессов и процессов управления.
</li>
</ol>
<h4>Какое предложено решение?<br />
</h4>
<p>Внедрение BPM-системы BizAgi BPM Suite, в частности:
</p>
<ol>
<li>Описание бизнес-процесса выполнения типового заказа (и вариаций нетиповых заказов в качестве дальнейших направлений развития).
</li>
<li>Настройка данного бизнес-процесса в системе: сама схема процесса, схема данных и формы ввода данных, правила автоматического назначения исполнителей операций.
</li>
<li>Интеграция с системой 1С: получение из 1С исходных параметров заказа и передача в 1С информации о текущем статусе его выполнения.
</li>
<li>Интеграция с системой учета брака собственной разработки для передачи информации о браке между участниками бизнес-процесса.
</li>
<li>Выполнение заказов в рамках BPM-системы, накопление статистики по фактическим параметрам выполнения заказазов.
</li>
<li>Анализ и совершенствование выполнения бизнес-процессов (внесение соответствующих изменений в BPM-систему, в качестве дальнейших направлений развития).
</li>
</ol>
<h4>Как это выглядит?<br />
</h4>
<p>Описанный выше бизнес-процесс выполнения типового заказа, прорисованный в деталях в нотации BPMN, являющейся в настоящее время де-факто стандартом описания бизнес-процессов и поддерживаемой BizAgi BPM Suite:</p>
<p style="text-align: center"><a href="http://kholodkov.ru/it/wp-content/uploads/2012/04/bizagi_02.jpg" target="_blank"><img src="http://kholodkov.ru/it/wp-content/uploads/2012/04/bizagi_02s.jpg" alt=""/></a></p>
<p>Для работы в BPM-системе конечные пользователя (менеджеры и исполнители в настроенных бизнес-процессах) используют вэб-портал, с которым они взаимодействуют через браузер. В нем они непосредственно исполняют бизнес-процессы, получают сводную оперативную и аналитическую информацию в соответствии с правами доступа:</p>
<p style="text-align: center"><img src="http://kholodkov.ru/it/wp-content/uploads/2012/04/bizagi_03.jpg" alt=""/></p>
<p>Пользовательский интерфейс BPM-системы представляет из себя набор настраиваемых форм, которые привязываются к операциям бизнес-процесса и отображаются для получение и ввода данных при выполнении соответствующей операции:</p>
<p style="text-align: center"><img src="http://kholodkov.ru/it/wp-content/uploads/2012/04/bizagi_04.jpg" alt=""/></p>
<p>Формы в свою очередь получают и сохраняют информацию в базе данных BPM-системы. Информационная модель данных в BizAgi BPM Suite настраивается при помощи визуального редактора в соответствии с требованиями предметной области:</p>
<p style="text-align: center"><img src="http://kholodkov.ru/it/wp-content/uploads/2012/04/bizagi_05.jpg" alt=""/></p>
<p>Также можно увидеть как это функционирует &#171;в живую&#187; на моем демонстрационном стенде: <a href="http://demo.kholodkov.ru" target="_blank">demo.kholodkov.ru</a></p>
<h4>Какова стоимость данного решения?<br />
</h4>
<ol>
<li>Стоимость лицензий BizAgi Xpress – 20 лицензий – 70.000 рублей.
</li>
<li>Стоимость работ по внедрению – 150.000 рублей.
</li>
<li>Стоимость оборудования (1 виртуальный сервер на платформе VMware vSphere) – 20.000 рублей.
</li>
<li>Стоимость системного ПО (Microsoft Windows Web Server 2008 R2) – 20.000 рублей
</li>
</ol>
<p>Итого: 260.000 рублей.
</p>
<h3>От частного к общему: области применения BPM-систем<br />
</h3>
<p>У BPM-систем много «конкурентов» среди информационных систем других классов, при помощи которых те же самые бизнес-процессы могут быть автоматизированы иначе. В частности: учетные и интегрированные ERP-системы, системы электронного документооборота, корпоративные порталы взаимодействия, системы управления проектами и собственные разработки.
</p>
<p>Однако, как уже было отмечено выше, существует много областей, в которых применение BPM-систем является оптимальным (наиболее эффективным) решением. О целесообразности применения BPM-системы в конкретной организации можно судить по следующим признакам:
</p>
<ul>
<li>Деятельность организации имеет выраженный процессный характер в противоположность функциональному или проектному. Например, для конструкторского бюро, разрабатывающего новые виды ракетной техники, BPM-система будет малополезна в отличие, например, от хорошей комплексной системы управления проектами. А вот для кредитного агентства, рассматривающего заявки на получения кредитов, BPM-система может очень подходить в качестве средства автоматизации процессов рассмотрения заявок различных типов.
</li>
<li>В организации существуют процессы, растянутые во времени. Например, процесс приготовления блюда в ресторане занимается несколько десятков минут и вряд ли требует учета выполнения отдельных операций (нарезка картошки, жарка мяса и т.п.). Напротив, процесс поставки товаров из-за рубежа (заказ, оплата, транспорт, таможня и т.п.), длящийся дни и недели, &#8212; кандидат на исполнение в BPM-системе.
</li>
<li>В выполнение процессов вовлечено много людей, разнесенных географически. Очевидно, что если в процессе участвуют всего два человека, сидящих за соседними столами, то они смогут договориться и координировать совместную деятельность и без BPM-системы. Если же исполнителей много, то BPM-система реально облегчит управление, взяв на себя передачу «потока» и сопутствующей информации от процесса к процессу, от операции к операции, от человека к человеку.
</li>
<li>При выполнении процессов происходит обмен информацией между несколькими информационными системами. С точки зрения пользователя удобнее работать с одной информационной системой, однако на практике пользователям часто приходится получать и вводить информацию в различные системы: ERP-система, система электронного документооборота, CRM-система, корпоративный портал и т.п. В этом случае BPM-система может стать «единой точкой ввода и получения информации» пользователями при выполнении процессов. Сопутствующим извлечением и внесением данных в другие системы занимается «интегрирующая» BPM-система без участия пользователя.
</li>
</ul>
<p>Процессы, соответствующие перечисленный выше характеристикам («процессы для BPM-системы»), можно встретить во многих даже относительно небольших компаниях. Доля их в бизнесе может быть велика или мала. Также может быть высока или низка их важность для успеха организации.
</p>
<p>Исходя из этих двух факторов, можно сделать вывод о целесообразности внедрения BPM-системы в конкретной организации. Если «процессов для BPM-системы» в компании много и/или они являются ключевыми, то имеет смысл рассмотреть возможность внедрения BPM-системы. В остальных случаях лучше посмотреть в сторону систем из других классов.
</p>
<p>Наконец, приведем некоторые примеры отраслей и «процессов для BPM-системы» в них.
</p>
<table align="center">
<tr class="art_cap">
<td>
<p>Отрасль (сфера деятельности)</p>
</td>
<td>
<p>Процесс</p>
</td>
</tr>
<tr>
<td>
<p>Поставки и торговля</p>
</td>
<td>
<p>Процесс поставки партии товаров от поставщика</p>
<p>Процесс исполнения заказа на покупку от клиента</p>
</td>
</tr>
<tr>
<td>
<p>Управление недвижимостью</p>
</td>
<td>
<p>Процесс сдачи объекта недвижимости в аренду</p>
<p>Процесс продажи объекта недвижимости</p>
</td>
</tr>
<tr>
<td>
<p>Телеком</p>
</td>
<td>
<p>Процесс подключения услуги связи</p>
</td>
</tr>
<tr>
<td>
<p>Полиграфия</p>
</td>
<td>
<p>Процесс исполнения типового заказа персонализированной печати и почтовой рассылки</p>
<p>Процесс исполнения типового заказа неперсонализированной печати</p>
</td>
</tr>
<tr>
<td>
<p>Страхование</p>
</td>
<td>
<p>Процесс принятия и выплаты по убытку</p>
</td>
</tr>
<tr>
<td>
<p>Финансы</p>
</td>
<td>
<p>Процесс рассмотрения заявки и выдачи кредита</p>
</td>
</tr>
<tr>
<td>
<p>Информационные технологии</p>
</td>
<td>
<p>Процесс типового внедрения программного продукта</p>
</td>
</tr>
<tr>
<td>
<p>Государственное управление</p>
</td>
<td>
<p>Процесс предоставления госуслуги</p>
</td>
</tr>
</table>
<h3>Заключение<br />
</h3>
<p>Если Вы видите в своей организации «процессы для BPM-системы» и написанное выше для Вас интересно – предлагаю Вам рассмотреть возможность внедрения BizAgi BPM Suite. Это не потребует от Вашей организации никаких материальных затрат в том случае, если вы все же решите, что BPM-система Вам не нужна. Почему? Потому что, сотрудничая с нами, Вы платите только за результат, который Вас устраивает. Более подробную информацию Вы можете найти <a href="http://www.kholodkov.ru/bpm_process.html" target="_blank">здесь</a></p>
]]></content:encoded>
			<wfw:commentRss>https://kholodkov.ru/it/?feed=rss2&#038;p=785</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Бизнес-аналитика: достижение целей через понимание задач</title>
		<link>https://kholodkov.ru/it/?p=771</link>
		<comments>https://kholodkov.ru/it/?p=771#comments</comments>
		<pubDate>Wed, 20 Aug 2014 07:59:08 +0000</pubDate>
		<dc:creator><![CDATA[Холодков Антон]]></dc:creator>
				<category><![CDATA[Бизнес-процессы]]></category>
		<category><![CDATA[uml2.ru]]></category>
		<category><![CDATA[Практика]]></category>

		<guid isPermaLink="false">http://www.kholodkov.ru/it/?p=771</guid>
		<description><![CDATA[Емкость понятий «бизнес» и «аналитика», пожалуй, того же порядка, что и таких общих понятий, как «дружба», «работа», «отдых». Поэтому неудивительно то, что под понятие «бизнес-аналитика» подпадает весьма и весьма значительное количество видов деятельности. До настоящего момента я не встречал ни одного определения этого термина, в котором более или менее полно давалась бы его структура, т.е. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style="margin-top:5px; margin-bottom:10px; margin-left:10px; margin-right:0px; padding:0px; float: right;" src="http://kholodkov.ru/it/wp-content/uploads/2011/08/ba.jpg" alt=""/>Емкость понятий «бизнес» и «аналитика», пожалуй, того же порядка, что и таких общих понятий, как «дружба», «работа», «отдых». Поэтому неудивительно то, что под понятие «бизнес-аналитика» подпадает весьма и весьма значительное количество видов деятельности. До настоящего момента я не встречал ни одного определения этого термина, в котором более или менее полно давалась бы его структура, т.е. то из чего, собственно, бизнес-аналитика состоит, чем конкретно занимается бизнес-аналитик и т.п. Еще сложнее обозначить границы бизнес-аналитики, выделить ее среди таких понятий, как «менеджмент», «консалтинг», «информационные технологии».
</p>
<p>Вероятно, в силу этих причин в своей работе я регулярно сталкиваюсь либо с недопониманием того, что это такое и для чего это нужно, либо с искаженным понимаем, выделением лишь узкого спектра работ, входящих в это понятие, или же обозначением того, что к бизнес-аналитике явно не относится. Это побудило меня к тому, чтобы написать статью на тему бизнес-аналитики. Как я уже писал выше, пытаться давать определение и всеобъемлющую структуру этого термина – дело, на мой взгляд, малоперспективное. Вместо этого я попытаюсь обрисовать сие понятие с сугубо практической точки зрения с акцентом на то, чем бизнес-аналитика может быть полезна для организаций различных мастей и размеров.
</p>
<p><span id="more-771"></span>
<p>Итак, бизнес-аналитика &#8212; это, прежде всего, аналитика, т.е. представление некоторого явления нашей жизни (в нашем случае бизнеса, организации) в виде модели, отражающей его структуру, для облегчения понимания всеми заинтересованными сторонами. Пока понимание того, как работает бизнес или его отдельный компонент существует лишь в головах отдельно взятых сотрудников, этот бизнес находится в сильнейшей зависимости от этих сотрудников. Такой бизнес не может быть понят, и, соответственно, улучшен, развит, автоматизирован не только человеком со стороны, но и, зачастую, внутри организации. Он может быть весьма успешным до достижения им определенной «критической массы», которая для разных отраслей может составлять от нескольких десятков до нескольких сотен сотрудников. При росте сверх этих критических значений издержки от царящего хаоса начинают многократно превышать потенциальные затраты на формализацию и регламентацию, что заставляет руководство задуматься о бизнес-аналитике.
</p>
<p>Не смотря на наличие ключевого слова «аналитика», бизнес-аналитика – это не только анализ, но и синтез. Само по себе представление реального бизнеса в виде моделей пусть и полезно, поскольку повышает уровень понимания функционирования системы заинтересованными сторонами внутри и вне ее, но, как правило, не является самоцелью. В большинстве случаев бизнес-анализ направлен на совершенствование работы организации для достижения стоящих перед ней целей. Декомпозиция бизнеса до отдельных «осязаемых» элементов (например, операций бизнес-процесса) позволяет оценить их посредством различных методик (например, Activity Based Costing), предложить и сравнить варианты улучшения, скомпоновать все это «обратно» в новые организационные структуры, бизнес-процессы, архитектуру информационных систем и т.п. После чего реализовать улучшения в реальной жизни. Некоторые называют людей, занимающихся этим «бизнес-архитекторами», но по глубокому убеждению меня и большинства моих коллег любой бизнес-аналитик должен думать об этом и уметь делать это, а потому бизнес-проектирование является неотъемлемой частью бизнес-аналитики.
</p>
<p>Потребность в бизнес-аналитике в организации, как правило, не ограничивается отдельными фиксированными во времени проектами повышения прозрачности, уровня регламентации и автоматизации бизнес-процессов, оптимизации. Устойчивый результат может принести ведение этой деятельности на регулярной основе в рамках классического цикла Деминга по нескольким причинам. Во-первых, жизнь не стоит на месте, изменяются сильные и слабые стороны организации, появляются новые возможности и угрозы, что требует изменений на всех уровнях. Здесь, конечно же, весьма полезными оказываются имеющиеся модели деятельности организации. Во-вторых, каждый этап оптимизации при должной оценке его результатов дает стимулы и бесценную информацию для следующих шагов, которые могут быть сделаны на этом пути. Широкое распространение получили различные подходы «класса» Business Process Management (BPM), предусматривающие непрерывное циклическое совершенствование бизнес-процессов и приведение их в соответствие с меняющимися стратегическими целями организации. В качестве примера такого комплексного подхода, включающего в себя помимо методологии еще и ПО моделирования и автоматизации бизнес-процессов (Workflow Management System), можно привести «Business Process Excellence» компании IDS-Scheer.
</p>
<p>Тем не менее, проекты по бизнес-анализу не обязательно настолько глобальны. Вместо этого они могут решать конкретные, точечные задачи. Например, вы хотите внедрить систему электронного документооборота. Опишите сами или с привлечением внешнего бизнес-аналитика ваши бизнес-процессы по работе с документами, составьте техническое задание с вашими бизнес-требованиями к решению и передайте это в качестве вводной информации потенциальным поставщикам СЭД. Это поможет им достаточно точно рассчитать, а вам сравнить возможности, стоимости и сроки создания требующегося решения на различных программных платформах для выбора наиболее подходящего варианта.
</p>
<p>Бизнес-аналитика непосредственно граничит с системной аналитикой, если речь идет о создании программных систем. Границы весьма размыты и понимаются разными людьми по-разному. Я предпочитаю относить к бизнес-аналитике все то, что находится в классическом цикле разработки ПО «до» создания документа «техническое задание» (или, иначе говоря, формирования требований) включительно, а к системной аналитике то, что начинается с создания документа «технический проект (дизайн)» (проектирования решения).
</p>
<p>Бизнес-аналитики обычно участвуют в консалтинговых проектах (различного профиля) и разработке ПО. Однако, не следует смешивать эти понятия. Бизнес-анализ в данном случае выступает в качестве инструмента для создания интеллектуального продукта (в случае консалтинга) или программного продукта (в случае разработки ПО) в максимальной степени удовлетворяющего потребностям Заказчика.
</p>
<p>Осязаемым результатом работы бизнес-аналитиков являются различные документы: аналитические записки, модели и описания к ним, технические задания, регламенты, инструкции, отчеты об обследовании и т.п.
</p>
<p>Резюмируя, можно с уверенностью сказать, что областей приложения бизнес-аналитики поистине множество. Соответствующий инструментарий может успешно применяться для решения массы задач в организациях практически любых размеров, отраслей, систем управления и т.п. Результаты работы бизнес-аналитиков помогают в достижении бизнес-целей, удовлетворении потребностей клиентов и других заинтересованных сторон.
</p>
<p>Однако, найти хорошего бизнес-аналитика действительно непросто. По многолетнему опыту автора в реализации различных ИТ-проектов не более четверти людей, занимающихся бизнес-аналитикой, обладают необходимыми знаниями, способностями и навыками для того, чтобы не просто описать некоторую организационную систему «КАК ЕСТЬ», а придумать решение «КАК УЛУЧШИТЬ». Далее, не более четверти из той четверти имеют достаточно широкий кругозор в области менеджмента для того, чтобы взрастить это решение в системе бизнес- и функциональных стратегий, существующих в организации в формальном или неформальном виде, и обосновать его перед руководством заказчика, разговаривать с ним на одном языке. Если вам удалось найти такого действительно высокопрофессионального бизнес-аналитика, то это большая удача и такой специалист способен принести отдачу для бизнеса в десятки, сотни и тысячи раз превышающую его стоимость.</p>
]]></content:encoded>
			<wfw:commentRss>https://kholodkov.ru/it/?feed=rss2&#038;p=771</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разработка технического задания (ТЗ) на программный продукт с точки зрения заказчика</title>
		<link>https://kholodkov.ru/it/?p=530</link>
		<comments>https://kholodkov.ru/it/?p=530#comments</comments>
		<pubDate>Sun, 12 Feb 2012 07:27:09 +0000</pubDate>
		<dc:creator><![CDATA[Холодков Антон]]></dc:creator>
				<category><![CDATA[Разработка ПО]]></category>
		<category><![CDATA[uml2.ru]]></category>
		<category><![CDATA[Практика]]></category>

		<guid isPermaLink="false">http://kholodkov.ru/it/?p=530</guid>
		<description><![CDATA[За время своей работы мне удалось взглянуть на процесс разработки технических заданий на программные продукты с нескольких точек зрения. С точки зрения аналитика – непосредственного исполнителя работ, с точки зрения руководителя проекта со стороны исполнителя, организующего процесс создания ТЗ, с точки зрения руководителя группы разработчиков, реализующих эти самые ТЗ, а также с точки зрения заказчика [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style="margin-top:5px; margin-bottom:10px; margin-left:10px; margin-right:0px; padding:0px; float: right;" src="http://kholodkov.ru/it/wp-content/uploads/2011/02/021211_0827_1.png" alt=""/>За время своей работы мне удалось взглянуть на процесс разработки технических заданий на программные продукты с нескольких точек зрения. С точки зрения аналитика – непосредственного исполнителя работ, с точки зрения руководителя проекта со стороны исполнителя, организующего процесс создания ТЗ, с точки зрения руководителя группы разработчиков, реализующих эти самые ТЗ, а также с точки зрения заказчика системы, впоследствии принимающего решение по разработанному ранее ТЗ.
</p>
<p>Надо сказать, что у каждой из этих заинтересованных сторон свои требования и свое видение того, каким должно быть «хорошо написанное ТЗ». Например, у заказчика и исполнителя могут быть совершенно противоположные мнения на этот счет. Исполнитель может быть заинтересован в максимально подробном ТЗ для того, чтобы максимально формализовать свои обязательства по функционалу создаваемого решения. При этом заказчик, который точно не определился с параметрами будущей системы или у которого «ветер в голове», может требовать более общих формулировок, описания системы крупными мазками для того, чтобы потом попытаться включить в рамки оговоренного бюджета новые требования. Конечно же, при другом «менталитете» заказчика и исполнителя все может быть с точностью до наоборот. Сейчас мне хотелось бы остановиться именно на разработке ТЗ с точки зрения его заказчика, рассмотрев возможные ситуации, цели и тактики поведения.
</p>
<p>Для начала определимся с тем, какие факторы влияют на разработку ТЗ. Прежде всего, это степень понимания заказчиком требований. Как уже говорилось выше, в момент начала работы над ТЗ вы можете слабо себе представлять, какую именно систему вы хотите создать. В качестве исходных данных у вас могут быть разрозненные, часто противоречащие друг другу запросы от подразделений, заинтересованных в создании новой системы. Хорошо, если вашей ИТ-службе удалось структурировать их, разрешить противоречия и, тем самым, подготовиться к общению с подрядчиком. Если же нет, то лучший вариант &#8212; это сначала разработать очень общее ТЗ, крупными мазками описывающее видение системы, перечислить необходимые модули (подсистемы), не углубляясь в подробности их функционирования, и далее совместно с исполнителем работать над детализацией требований к ним. Последующие версии ТЗ можно оформлять в виде дополнений к первоначальному ТЗ или в виде т.н. «частных технических заданий» (ЧТЗ) на модули решения. Это даст вам время лучше понять что же вы хотите получить в итоге, мобилизовать на работу над проектом подразделения компании, собрать необходимую информацию, освоить основные понятия, если тематика создаваемого решения для вас нова. Также исполнитель сможет лучше познакомиться с деятельностью вашей компании.
</p>
<p><span id="more-530"></span></p>
<p>Немаловажным моментом является вероятность дрейфа требований. Компании меняются, подстраиваясь под внешние вызовы, причем, часто это происходит достаточно быстро. То, что разработано сегодня может отслужить свое и стать совершенно ненужным завтра в его первоначальном виде. Во избежании ненужных проблем в будущем это сразу надо проговорить с исполнителем и настраиваться на долгосрочное сотрудничество. Грамотный исполнитель в этих условиях может выбрать т.н. спиральную модель разработки ПО, в рамках которой ТЗ, фактически, разрабатывается на каждом новом витке спирали и описывает те изменения, которые должны произойти в следующей версии программного продукта. От написания громоздкого первоначального ТЗ в этом случае можно отказаться, ограничившись ТЗ на первую версию (итерацию).
</p>
<p>Ожидаемая длительность проекта, фактически, является одним из факторов дрейфа требований. За долгий срок даже в достаточно неповоротливой компании может многое измениться, например, появиться новое руководство с новым видением. Если же, напротив, проект небольшой и быстрый, то оптимальный вариант &#8212; разработать, согласовать и реализовать одно небольшое и достаточно детальное ТЗ.
</p>
<p>Значительное число участников проекта, создающих отдельные компоненты решения, требует большей детальности технических заданий, разрабатываемых ими, а также учета еще на этапе ТЗ спецификаций и особенностей реализации соседних модулей. Это поможет в дальнейшем минимизировать риски несостыковки модулей и, соответственно, избежать ненужных психологических и материальных затрат на переделку.
</p>
<p>Сложность задачи также оказывает влияние на подход к написанию ТЗ. Увы, задача может быть слишком сложной не только для заказчика, но и для исполнителя, который, казалось бы, имеет опыт в создании решений данного класса. Сложность обычно заключается в том, что создаваемое решение не является типовым и никто из участников проекта не может заранее предсказать результат его внедрения и использования в бизнесе. В этом случае очень важно грамотно разбить проект на этапы (шаги), подразумевая то, что каждый следующий шаг будет корректироваться по результатам, достигнутым на предыдущих. Соответственно и техническое задание будет разрабатываться в начале каждого этапа, опираясь на опыт предыдущего.
</p>
<p>Компании работают в реальной среде и часто им приходится иметь дело с новыми партнерами, с которыми ранее они не работали. Это же относится и к разработчикам ИТ-решений. Конечно, хорошо иметь исполнителя, который отлично знает все детали вашего бизнеса, понимает вас с полуслова и в котором вы уверены на все 100% (в этом случае от разработки ТЗ, вообще, можно отказаться), но в реальности это может оказаться совершенно неизвестная вам компания. В таком случае, конечно же, целесообразно начинать сотрудничество с небольших, по-возможности, проектов и с четких и детальных формулировок требований, указанных в ТЗ.
</p>
<p>Степень детальности ТЗ и разнесенность во времени его разработки, конечно же, не являются единственными моментами, важными для заказчика. Перед началом разработки ТЗ очень рекомендую определиться с его структурой, фактически, составить страницы с его содержанием, перечнем пунктов и подпунктов до начала работ по ТЗ, а не в процессе или после. При этом и вы и исполнитель договоритесь о том какие вопросы должны быть рассмотрены на данном этапе. Вы будете хорошо понимать, что получите в итоге, а исполнитель будет понимать, что вы от него ждете. Не смотря на кажущуюся простоту, это делается не всегда, даже для крупных и сложных проектов. В итоге ТЗ может получиться совершенно непотребным для дальнейшей работы.
</p>
<p>Как известно, существует множество методологий разработки программного обеспечения, отличающихся в числе прочего разной степенью формальности проектной документации. Тем не менее, ТЗ в явном или неявном виде присутствует в любой из них. При этом шаблоны этого документа могут существенно различаться для различных компаний и процессов разработки ПО. Будущий разработчик вашей системы может навязывать вам принятые у него шаблоны ТЗ, но в данном случае важно понимать, что, во-первых, ТЗ является важнейшим инструментом не только для исполнителя, но и для заказчика, который также имеет полное право определять его структуру. И, во-вторых, здравый смысл и основное назначение ТЗ, состоящее в формировании общего видения программного продукта заказчиком и исполнителем, не отменяет ни одна из методологий разработки.
</p>
<p>В настоящее время в РФ действует ГОСТ 34.602-89 «Техническое задание на создание автоматизируемой системы», который, не смотря на 89-й год своего создания, неплохо отражает общую структуру ТЗ. Тем не менее, для многих случаев, он является недостаточно детальным и хорошо описывающим специфику разработки современных программных продуктов.
</p>
<p>По своему опыту могу порекомендовать обратить внимание исполнителя на необходимость рассмотрения в ТЗ в числе прочих следующих вопросов:
</p>
<ul>
<li>Категории (роли) пользователей, работающих с системой &#8212; перечислить роли и кратко описать каким должностям из каких подразделений они соответствуют.
</li>
<li>Функционал системы &#8212; составить иерархическую структуру, в которой на верхнем уровне перечислены крупные модули (подсистемы), далее детализируемые до более мелких функциональных блоков и даже отдельных функций.
</li>
<li>Модель использования системы &#8212; сопоставить категории пользователей системы и используемые ими функциональные блоки, обозначенные выше.
</li>
<li>Сценарии использования системы при выполнении основных бизнес-процессов &#8212; наложить видение решения на реальные процессы, описать на каких этапах и каким образом оно будет использоваться. Не пожалейте времени на то, чтобы совместно с исполнителем наглядно схематически разрисовать сценарии хотя бы по основным бизнес-процессам и согласовать их с заинтересованными лицами.
</li>
<li>Прототипы пользовательского интерфейса &#8212; схематически изобразить, например, при помощи Microsoft Visio как будут выглядеть основные формы вашего будущего ПО.
</li>
<li>Логическая модель данных &#8212; изобразить основные сущности предметной области и взаимосвязи между ними. Это позволит вам и исполнителю разговаривать на одном языке с использованием общей терминологии.
</li>
<li>Источники данных и взаимодействие с другими системами &#8212; описать откуда будут загружаться первоначальные данные при внедрении системы и из каких внешних источников они будут поступать впоследствии.
</li>
</ul>
<p>К рассмотрению этих вопросов в ТЗ стоит подходить «без фанатизма» с учетом возможной неопределенности требований, описанной выше. Детальную их проработку можно оставить на более поздние этапы создания системы, но если вы хотя бы в общих чертах остановитесь на них при разработке ТЗ, то заставите исполнителя и себя лучше подумать над решением, которое пока еще существует только на бумаге и переделка которого пока еще не сопряжена с глобальными финансовыми и временными затратами.
</p>
<p>В заключении хотелось бы отметить, что по моему опыту самое лучшее ТЗ &#8212; это ТЗ написанное самим заказчиком или при самом активном участии заказчика, т.к. никто лучше сотрудников вашей компании не знает ваших потребностей, деталей работы и далеко не всегда это удается выяснить на интервью. Конечно, для этого необходимо иметь в штате достаточно квалифицированных ИТ-специалистов или воспользоваться услугами ИТ-консультанта. Полученное ТЗ можно использовать в составе тендерной документации для того, чтобы дать большому количеству потенциальных подрядчиков четкое понимание требуемого результата и получить от них предложения.
</p>
<p>Еще одно преимущество ТЗ разработанного собственными силами в том, что оно будет отражать исключительно ваши потребности, а не ограничения используемых исполнителем технологических платформ и имеющихся у него наработок для повторного использования. Конечно, исполнителю может потребоваться провести дополнительное обследование и разработать собственную проектную документацию, но все эти документы должны будут соответствовать требованиям в разработанном вами ТЗ. Если же какие-то из ваших требований окажутся нереализуемыми для конкретного исполнителя, то вы непременно об этом узнаете и сможете принять соответствующие решения.
</p>
<p>P.S. С радостью возьмусь за разработку ТЗ на программный продукт в удобном для Вас <a href="http://www.kholodkov.ru/prices.html">варианте сотрудничества</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://kholodkov.ru/it/?feed=rss2&#038;p=530</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разработка ПО: пример бизнес-процесса из практики</title>
		<link>https://kholodkov.ru/it/?p=130</link>
		<comments>https://kholodkov.ru/it/?p=130#comments</comments>
		<pubDate>Mon, 02 Mar 2009 14:26:58 +0000</pubDate>
		<dc:creator><![CDATA[Холодков Антон]]></dc:creator>
				<category><![CDATA[Бизнес-процессы]]></category>
		<category><![CDATA[Разработка ПО]]></category>
		<category><![CDATA[Практика]]></category>

		<guid isPermaLink="false">http://kholodkov.ru/it/?p=130</guid>
		<description><![CDATA[В индустрии разработки программного обеспечения (ПО) существуют много различных методологий разработки, которые представляют из себя достаточно концептуальные видения того, как следует реализовывать проекты по созданию ПО. В качестве примеров таких методологий можно привести: Rational Unified Process (RUP), Microsoft Solution Framework (MSF), Extreme Programming (XP), Agile, Capability Maturity Model Integration (CMMI) и многие другие. Разделяя важность [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img style="margin-top:5px; margin-bottom:10px; margin-left:10px; margin-right:0px; padding:0px; float: right;" src="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_first.jpg" alt="разработка ПО" />В индустрии разработки программного обеспечения (ПО) существуют много различных <em>методологий</em> разработки, которые представляют из себя достаточно концептуальные видения того, как следует реализовывать проекты по созданию ПО. В качестве примеров таких методологий можно привести: Rational Unified Process (RUP), Microsoft Solution Framework (MSF), Extreme Programming (XP), Agile, Capability Maturity Model Integration (CMMI) и многие другие.</p>
<p style="text-align: justify;">Разделяя важность методологии как основы для реальных бизнес-процессов, следует отметить разницу в понятиях <em>методология</em> и <em>бизнес-процесс</em>. Бизнес-процесс представляет из себя реализацию методологии, ее отдельных элементов или элементов нескольких методологий в конкретной организации при выполнении конкретных проектов и создании конкретных продуктов. Поэтому, создание бизнес-процесса разработки ПО на основе одной из существующих методологий является первой и важнейшей задачей компании, желающей заняться в том или ином виде созданием софта (для внешних заказчиков или своих внутренних нужд).</p>
<p style="text-align: justify;">Как показывает опыт автора, вполне возможно создать небольшую группу разработки и начать делать софт и без четкого описания бизнес-процесса. Однако, когда число участников такой &#171;неформальной&#187; команды становится больше пяти человек, то потери от отсутствия четкого регламента становятся несопоставимо большими по сравнению с затратами на регламентацию бизнес-процесса и специализированное ПО для его автоматизации. Потери в данном случае могут быть как прямыми (например, бесконечные переделки одной и той же функциональности по причине несоответствия требованиям заказчика), так и косвенными (например, ухудшение психологической атмосферы в коллективе, связанное с непониманием зоны своей ответственности каждым участником команды).</p>
<p style="text-align: justify;">В данной статье приводится пример бизнес-процесса разработки ПО, созданный автором на основе элементов нескольких методологий (наибольшее количество элементов взято из MSF) и собственного многолетнего опыта разработки и управления разработкой ПО. Данный бизнес-процесс ориентирован на ведение крупных проектов по разработке ПО на достаточно &#171;зрелой&#187; стадии, когда продукт уже может эксплуатироваться заказчиками и когда речь уже идет скорее о развитии и доработках функционала, а также устранении &#171;багов&#187;, нежели о разработке &#171;с нуля&#187; небольших программных продуктов.</p>
<p style="text-align: justify;"><span id="more-130"></span></p>
<h3>Содержание</h3>
<ul>
<li>
<div style="text-align: justify;"><a href="#raz-01">Ролевая модель</a></div>
</li>
<li>
<div style="text-align: justify;"><a href="#raz-02">Схема бизнес-процесса</a></div>
</li>
<li>
<div style="text-align: justify;"><a href="#raz-03">Участие ролей в операциях бизнес-процесса (выравнивание профилей загрузки ролей на всем протяжении проекта)</a></div>
</li>
<li>
<div style="text-align: justify;"><a href="#raz-04">Информационная модель бизнес-процесса</a></div>
</li>
<li>
<div style="text-align: justify;"><a href="#raz-05">Средства автоматизации бизнес-процесса</a></div>
</li>
</ul>
<h3 id="#raz-01">Ролевая модель</h3>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10" width="700">
<tr>
<td width="100" valign="middle">
<b>Наименование роли</b>
</td>
<td width="600" valign="middle">
<b>Зона ответственности</b>
</td>
</tr>
<tr>
<td valign="top">
Руководитель проекта
</td>
<td valign="top">
•	Формирование планов<br />
•	Контроль выполнения планов<br />
•	Организационная работа (в том числе и с Заказчиком)<br />
•	Концептуальная архитектура решения<br />
•	Часть аналитической работы
</td>
</tr>
<tr>
<td valign="top">
Руководитель группы
</td>
<td valign="top">
•	Оценка длительности и трудоемкости задач в процессе планирования<br />
•	Контроль выполнения планов группой<br />
•	Распределение работ внутри группы<br />
•	Концептуальная архитектура решения<br />
•	Часть аналитической работы<br />
•	Организация сбора требований заказчика<br />
•	Соответствие деятельности группы бизнес-процессу разработки<br />
•	Работа группы с заказчиком
</td>
</tr>
<tr>
<td valign="top">
Аналитик
</td>
<td valign="top">
•	Сбор требований заказчика<br />
•	Разработка ТП на функциональность<br />
•	Разработка планов тестирования<br />
•	Концептуальное тестирование функциональности<br />
•	Разработка пользовательской документации
</td>
</tr>
<tr>
<td valign="top">
Архитектор
</td>
<td valign="top">
•	Архитектура решения, и соответствие ее требованиям к решению<br />
•	Разработка РП на функциональность (определяет принципиальные моменты, в дальнейшем их детализирует в рамках РП Разработчик)<br />
•	Контроль качества кода, и соответствие его проектным решениям по архитектуре<br />
•	Репозиторий информации по архитектуре решения<br />
•	Участвует в формировании планов и оценке сложности и длительности задач<br />
•	Участвует в комплексном тестировании
</td>
</tr>
<tr>
<td valign="top">
Разработчик
</td>
<td valign="top">
•	Разработка РП (при участии Архитектора в процессе выработки принципиальных решений)<br />
•	Разработка функциональности<br />
•	Качество кода<br />
•	Исправление ошибок в коде<br />
•	Проведение первичного тестирования кода<br />
•	Участвует в комплексном тестировании кода
</td>
</tr>
<tr>
<td valign="top">
Тестер
</td>
<td valign="top">
•	Тестирование функциональности<br />
•	Написание Unit тестов<br />
•	Участвует в разработке планов тестирования
</td>
</tr>
<tr>
<td valign="top">
Билд-инженер
</td>
<td valign="top">
•	Сборка версии<br />
•	Выпуск версии (после тестирования)<br />
•	Подготовка сопроводительных документов к версии
</td>
</tr>
</table>
</div>
<p style="text-align: justify;">
<p style="text-align: justify;">Один специалист может выполнять несколько ролей, но с учетом определенных ограничений. Допускаются следующие сочетания ролей одним человеком.</p>
<p style="text-align: justify;">
<div align="center">
<table border="1" cellspacing="0" cellpadding="10" width="700">
<tr>
<td width="261" valign="middle">
</td>
<td width="77" valign="middle">
<b>Рук-ль проекта</b>
</td>
<td width="77" valign="middle">
<b>Рук-ль группы</b>
</td>
<td width="77" valign="middle">
<b>Аналитик</b>
</td>
<td width="77" valign="middle">
<b>Архи- тектор</b>
</td>
<td width="77" valign="middle">
<b>Разра- ботчик</b>
</td>
<td width="77" valign="middle">
<b>Тестер</b>
</td>
<td width="77" valign="middle">
<b>Билд- инженер</b>
</td>
</tr>
<tr>
<td valign="middle">
<b>Руководитель проекта</b>
</td>
<td valign="middle" bgcolor="#CCCCCC">
<b></b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
</tr>
<tr>
<td valign="middle">
<b>Руководитель группы</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" bgcolor="#CCCCCC">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
</tr>
<tr>
<td valign="middle">
<b>Аналитик</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" bgcolor="#CCCCCC">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
</tr>
<tr>
<td valign="middle">
<b>Архитектор</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" bgcolor="#CCCCCC">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
</tr>
<tr>
<td valign="middle">
<b>Разработчик</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" bgcolor="#CCCCCC">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
</tr>
<tr>
<td valign="middle">
<b>Тестер</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" bgcolor="#CCCCCC">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
</tr>
<tr>
<td valign="middle">
<b>Билд-инженер</b>
</td>
<td valign="middle" align="center">
<b></b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" align="center">
<b>+</b>
</td>
<td valign="middle" bgcolor="#CCCCCC">
<b></b>
</td>
</tr>
</table>
</div>
<h3 id="#raz-02">Схема бизнес-процесса</h3>
<p style="text-align: justify;">Основная схема бизнес-процесса приведена ниже. В ней принимают участие члены проектной команды согласно ролевой модели.</p>
<p style="text-align: justify;">Бизнес-процесс включает в себя пять групп (контуров) работ:
</p>
<ul>
<li>
<div style="text-align: justify;">Контур сбора требований </div>
</li>
<li>
<div style="text-align: justify;">Контур среднесрочного планирования </div>
</li>
<li>
<div style="text-align: justify;">Контур аналитических работ </div>
</li>
<li>
<div style="text-align: justify;">Контур разработки версии (итерация) </div>
</li>
<li>
<div style="text-align: justify;">Контур небольших доработок </div>
</li>
</ul>
<p style="text-align: center;"><a href="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_01.jpg" target="blank"><img title="Схема бизнес-процесса разработки" src="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_01s.jpg" alt="" /></a></p>
<h4>Контур сбора требований</h4>
<p style="text-align: justify;">Основной операцией в данном случае является процедура регистрации требований на доработку. Под требованием понимается в данном случае любое формально описанное условие, которому должно удовлетворять создаваемое решение.
</p>
<p style="text-align: justify;">В частности, требованиями являются:
</p>
<ul>
<li>
<div style="text-align: justify;">Ошибки, выявленные при внутреннем или внешнем (ПСИ) тестировании, в процессе эксплуатации решения</div>
</li>
<li>
<div style="text-align: justify;">Функциональные требования (доработки) </div>
</li>
<li>
<div style="text-align: justify;">Нефункциональные требования (ограничения, которым должно удовлетворять решение)</div>
</li>
</ul>
<p style="text-align: justify;">Требования могут поступать из различных источников, например:
</p>
<ul>
<li>
<div style="text-align: justify;">Представители Заказчика</div>
</li>
<li>
<div style="text-align: justify;">Тестеры в составе проектной команды</div>
</li>
<li>
<div style="text-align: justify;">Руководства компании</div>
</li>
</ul>
<p style="text-align: justify;">Все требования хранятся в Репозитории требований. Подробнее о требованиях (их атрибутах и жизненном цикле) написано в разделе «Информационная модель».
</p>
<p style="text-align: justify;">Зарегистрировать требование может любой участник проектной команды, заполнив необходимый набор полей. В дальнейшем все активности по разработке связываются с конкретными требованиями, на реализацию которых они направлены.
</p>
<p style="text-align: justify;">После регистрации требования выясняются основания для его реализации (ТЗ, договора и т.д.). Если оснований не обнаруживается, то требование отвергается или инициируется процесс внесения дополнений в договорные документы. Если основания есть, то требование может быть использовано в других контурах работ. Также требование может быть уточнено, если из его описания не понятно имеет оно основания или нет.
</p>
<p style="text-align: justify;">Все требования делятся на две группы с точки зрения подхода к их реализации:
</p>
<ul>
<li>
<div style="text-align: justify;">Мелкие доработки </p>
<ul>
<li>
<div style="text-align: justify;">o	длительность их реализации до 1 человеко-дня И</div>
</li>
<li>
<div style="text-align: justify;">o	не требуют аналитической проработки (написания Технического проекта)</div>
</li>
</ul>
</div>
</li>
<li>
<div style="text-align: justify;">Средние и крупные доработки </p>
<ul>
<li>
<div style="text-align: justify;">o	длительность реализации более человеко-дня ИЛИ</div>
</li>
<li>
<div style="text-align: justify;">o	требуют аналитической проработки (написания Технического проекта)</div>
</li>
</ul>
</div>
</li>
</ul>
<p style="text-align: justify;">Решение о реализации мелких доработок принимается руководителем группы путем назначения требования на соответствующего разработчика (Контур небольших доработок).
</p>
<p style="text-align: justify;">Реализация средних и крупных доработок происходит постадийно:
</p>
<ul>
<li>
<div style="text-align: justify;">Планируется реализация доработок и аналитических работ по их проработке (Контур среднесрочного планирования)</div>
</li>
<li>
<div style="text-align: justify;">Проводятся аналитические работы, по их результатам составляется Технический проект (ТП) на реализацию требования (Контур аналитических работ)</div>
</li>
<li>
<div style="text-align: justify;">В рамках детального планирования работ по разработке текущей версии выбираются проработанные требования с готовыми ТП и включаются в состав задач для рабочего проектирования и реализации в текущей версии (Контур разработки версии)</div>
</li>
</ul>
<h4>Контур среднесрочного планирования</h4>
<p style="text-align: justify;">В рамках контура сбора требований членами проектной команды путем проведения совещания принимается решение о реализации имеющих основания требований. Производится их приоритезация и решается, в какую именно версию должны попасть требования в зависимости от их приоритета.
</p>
<p style="text-align: justify;">Распределение требований происходит по нескольким следующим версиям с временным интервалом до полугода. В итоге составляется среднесрочный план, представляющий из себя список требований, которые планируется реализовать в следующих версиях. В карточке каждого запланированного требования помечается эта версия.
</p>
<p style="text-align: justify;">На основании среднесрочного плана по реализации требований производится детальное планирование аналитических работ по написанию ТП с постановкой задачи по их реализации.
</p>
<p style="text-align: justify;">Планы работ хранятся в Репозитории задач.
</p>
<h4>Контур аналитических работ</h4>
<p style="text-align: justify;">Согласно плану работ Аналитик производит аналитическую проработку требования и составляет документ с утвержденной структурой разделов – Технический проект с описанием логики реализации требования.
</p>
<p style="text-align: justify;">Технический проект, подготовленный Аналитиком, согласуется с:
</p>
<ul>
<li>
<div style="text-align: justify;">Руководителем проекта</div>
</li>
<li>
<div style="text-align: justify;">Руководителем группы</div>
</li>
<li>
<div style="text-align: justify;">Архитектором</div>
</li>
</ul>
<p style="text-align: justify;">После составления и согласования ТП требование помечается как готовое к включению в план разработки версии.
</p>
<p style="text-align: justify;">Технический проект, как и остальная документация хранится в Репозитории документации.
</p>
<h4>Контур разработки версии</h4>
<p style="text-align: justify;">Контур разработки версии представляет из себя одну итерацию разработки: от планирования работ по версии, до ее выпуска. После выпуска одной версии, начинаются работ по следующей версии.
</p>
<p style="text-align: justify;">При планировании работ по версии проектная команда просматривает требования, выбирая среди них те, которые:
</p>
<ul>
<li>
<div style="text-align: justify;">в соответствии со среднесрочным планом должны быть реализованы в рамках настоящей версии И</div>
</li>
<li>
<div style="text-align: justify;">по которым завершена аналитическая проработка (имеется согласованный ТП)</div>
</li>
</ul>
<p style="text-align: justify;">Также в состав работ по версии могут включаться требования, имеющие критичную важность и наивысший приоритет. В этом случае их аналитическая проработка планируется в рамках работ по версии. Однако это вариант не является основным.
</p>
<p style="text-align: justify;">После выделения требований, подлежащих разработке в рамках настоящей версии, составляется детальный план разработки этой версии, включающий в себя все виды работ.
</p>
<p style="text-align: justify;">Затем согласно плану Разработчик совместно с Архитектором (в части концептуальных архитектурных решений) на основании Технического проекта пишет Рабочий проект, в котором описывает реализацию соответствующего требования.
</p>
<p style="text-align: justify;">Рабочий проект, подготовленный Разработчиком, согласуется с:
</p>
<ul>
<li>
<div style="text-align: justify;">Архитектором</div>
</li>
<li>
<div style="text-align: justify;">Руководителем группы</div>
</li>
<li>
<div style="text-align: justify;">Руководителем проекта</div>
</li>
</ul>
<p style="text-align: justify;">После согласования рабочего проекта Разработчик приступает к его реализации, а Архитектор обновляет архитектурную модель решения в соответствии с Рабочим проектом.
</p>
<p style="text-align: justify;">Для достаточно крупных требований функционал в рамках одного требования (и, соответственно, Рабочего проекта) реализуется несколькими частями. После разработки одной части происходит ее автоматическое тестирование и проверка качества кода Архитектором. Если выявляются недочеты – Разработчик их устраняет.
</p>
<p style="text-align: justify;">После реализации всех частей одного требования Разработчик демонстрирует разработанный функционал Аналитику – происходит его концептуальное тестирование, т.е. тестирование на предмет соответствия потребностям пользователей. Если выявляются несоответствия потребностям пользователей, то происходит либо доработка Рабочего проекта и, затем, реализованного функционала либо сразу доработка функционала (в случае мелких замечаний, не требующих изменения Рабочего проекта и архитектурной модели).
</p>
<p style="text-align: justify;">В случае успешного концептуального тестирования Разработчик приступает к реализации следующего требования в соответствии с планом работ по версии.
</p>
<p style="text-align: justify;">Также после согласования новой функциональности Аналитик обновляет пользовательскую документацию на решение.
</p>
<p style="text-align: justify;">После того, как все доработки, запланированные в версии, реализованы Билд-инженер производит сборку версии. Билд-инженер, формирует Сопроводительный документ к версии, в котором:
</p>
<ul>
<li>
<div style="text-align: justify;">Описываются параметры версии (номер, дата выпуска, перечень файлов и др.) </div>
</li>
<li>
<div style="text-align: justify;">Перечисляются реализованные в версии требования (новый функционал, устраненные ошибки) </div>
</li>
<li>
<div style="text-align: justify;">Содержится информация о развертывании версии (последовательность действий) </div>
</li>
<li>
<div style="text-align: justify;">Если в рамках версии изменилась структура хранилищ данных, то в рамках этого документа прикладываются SQL-скрипты для перехода со старой структуры на новую </div>
</li>
</ul>
<p style="text-align: justify;">Собранная версия тестируется Тестером при участии Аналитика согласно плану тестирования, являющегося составной частью Технического проекта, разработанного Аналитиком. Выявленные ошибки регистрируются в Репозитории требований в виде требований с типом «Ошибка тестирования версии».
</p>
<p style="text-align: justify;">Выявленные ошибки устраняются Разрабочтиками, которые реализовывали соответствующий функционал, при необходимости модифицируется Рабочий проект и Архитектурная модель.
</p>
<p style="text-align: justify;">После того, как ошибки тестирования версии устранены тестирование повторяется. Версия выпускается в следующих случаях:
</p>
<ul>
<li>
<div style="text-align: justify;">Все «Ошибки тестирования версии» устранены</div>
</li>
<li>
<div style="text-align: justify;">Принимается решение о выпуске версии с рядом не устраненных ошибок</div>
</li>
</ul>
<p style="text-align: justify;">После того как принято решение о выпуске версии Билд-инженер готовит дистрибутивы и Сопроводительный документ (актуализирует его при необходимости) и передает его для развертывания.
</p>
<p style="text-align: justify;">После выпуска версии работы в рамках данной итерации считаются завершенными и начинается работа над следующей версией.
</p>
<h4>Контур небольших доработок</h4>
<p style="text-align: justify;">Небольшие доработки – доработки с длительностью реализации менее человеко-дня, не требующие написания Технического проекта и Рабочего проекта.
</p>
<p style="text-align: justify;">Все небольшие доработки делятся на две группы:
</p>
<ul>
<li>
<div style="text-align: justify;">С нормальным приоритетом – включаются в следующую основную версию.</div>
</li>
<li>
<div style="text-align: justify;">С критическим приоритетом – для них выпускается промежуточная версия путем внесения требуемых изменений в экземпляр с кодом текущей развернутой версии.</div>
</li>
</ul>
<p style="text-align: justify;">Решение о реализации мелкой доработки с нормальным приоритетом принимается Руководителем группы путем анализа загрузки разработчиков по группе. Наименее загруженные на реализации плановых доработок по версии Разработчики занимаются устранением мелких доработок с нормальным приоритетом.
</p>
<p style="text-align: justify;">После устранения мелких доработок с нормальным приоритетом они попадают в рабочую базу кода и выпускаются со следующей основной версией.
</p>
<p style="text-align: justify;">Решение о реализации мелкой доработки с критическим приоритетом принимается Руководителем проекта совместно с Руководителем группы. В этом случае Разработчик, наиболее хорошо знакомый с возникшей проблемой может быть временно переключен с плановых работ на ее устранение.
</p>
<p style="text-align: justify;">После устранения критических мелких доработок (одной или нескольких сразу) инициируется процедура выпуска промежуточной версии. Сборку осуществляет Билд-инженер, также он готовит Сопроводительный документ в котором указывает какой номер данной промежуточной версии и перечень критических мелких доработок устраненных в ней.
</p>
<p style="text-align: justify;">После выпуска промежуточной версии Разработчики вносят изменения, соответствующие критическим мелким доработкам, в основную рабочую версию.
</p>
<h3 id="#raz-03">Участие ролей в операциях бизнес-процесса</h3>
<p style="text-align: justify;">Одно из основных требований к бизнес-процессу разработки – равномерная загрузка всех членов проектной команды на всем протяжении разработки с учетом ее итеративного и последовательного (ТП, РП, реализация и т.д.) характера.
</p>
<p style="text-align: justify;">На схеме ниже в качестве примера приведено распределение работ при разработке версии с длительностью 8 недель. Рассмотрена вся проектная команда, задействованная во всех контурах работ.
</p>
<p style="text-align: center;">
<a href="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_02.jpg" target="blank"><img class="aligncenter" title="Профили загрузки ролей в процессе разработки" src="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_02s.jpg" alt="" /></a>
</p>
<p style="text-align: justify;">Ключевым элементом данного бизнес-процесса, проиллюстрированным на схеме, является независимое выполнение аналитических работ (Технический проект) и работ по разработке версии (Рабочий проект и реализация) друг от друга с целью обеспечения равномерной загрузки Аналитика на всей итерации разработки.
</p>
<p style="text-align: justify;">Также важным моментом является участие Разработчика, как в плановых работах по версии, так и в устранении мелких, в т.ч. высоко критичных замечаний.
</p>
<p style="text-align: justify;">Тестер на ранних стадиях итерации занимается тестированием предыдущей версии и регистрирует обнаруженные ошибки в Репозитории требований, позднее по мере готовности версии он переключается целиком на тестирование текущей версии.
</p>
<p style="text-align: justify;">Билд-инженер имеет невысокую загрузку на большей части итерации, поэтому, целесообразно совмещение этой роли с одной из следующих ролей: Разработчик, Руководитель группы, Архитектор.
</p>
<p style="text-align: justify;">Важнейшей задачей Архитектора помимо участия в написании Рабочих проектов и контроля технической стороны проведения разработки является также ведение Репозитория архитектуры – обновления его по мере разработки новой функциональности в соответствии с Рабочими проектами.
</p>
<p style="text-align: justify;">Руководитель проекта и Руководитель группы помимо задач по управлению проектом и группой соответственно занимаются аналитической работой, особенно концептуальным проектированием решения.
</p>
<h3 id="#raz-04">Информационная модель бизнес-процесса</h3>
<p style="text-align: justify;">Все виды информации в рамках бизнес-процесса разработки распределяются по пяти хранилищам (репозиториям):
</p>
<ul>
<li>
<div style="text-align: justify;">Репозиторий требований </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий архитектуры </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий документации </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий кода </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий задач (план работ) </div>
</li>
</ul>
<p style="text-align: justify;">Элементы в одном хранилище могут быть связаны с элементами в другом хранилище. Например, требования в репозитории требований могут быть связаны с компонентами из репозитория архитектуры, которыми они реализуются.
</p>
<p style="text-align: justify;">На схеме ниже показаны примеры содержимого репозиториев и взаимосвязи между ними. Затем в таблице дается краткое пояснение по содержимому репозиториев и описаны взаимосвязи между их элементами.
</p>
<p style="text-align: center;">
<a href="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_03.jpg" target="blank"><img class="aligncenter" title="Информационная модель бизнес-процесса разработки" src="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_03s.jpg" alt="" /></a>
</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10" width="700">
<tr>
<td width="100" valign="middle">
<b>Наименование репозитория</b>
</td>
<td width="600" valign="middle">
<b>Краткое описание</b>
</td>
</tr>
<tr>
<td valign="top">
Репозиторий требований
</td>
<td valign="top">
<p style="text-align: justify;">Иерархическая структура групп, содержащая требования к решению, являющиеся исходными основаниями для каких-либо работ по разработке:
</p>
<ul>
<li>
<div style="text-align: justify;">Функциональные требования (функции решения) </div>
</li>
<li>
<div style="text-align: justify;">Нефункциональные требования </div>
</li>
<li>
<div style="text-align: justify;">Ошибки (баг-трэкинг) </div>
</li>
</ul>
<p style="text-align: justify;">Группы могут быть вложенными. Требования вложенными быть не могут.
</p>
<p style="text-align: justify;">Каждое требование содержит следующую информацию:
</p>
<ul>
<li>
<div style="text-align: justify;">Наименование </div>
</li>
<li>
<div style="text-align: justify;">Краткое описание </div>
</li>
<li>
<div style="text-align: justify;">Текущий статус (отражает текущий этап жизненного цикла требования, см. ниже) </div>
</li>
<li>
<div style="text-align: justify;">Тип требования (Расширение / Ошибка) </div>
</li>
<li>
<div style="text-align: justify;">Источник (Кто сообщил о требовании) </div>
</li>
<li>
<div style="text-align: justify;">Основание (ссылки на договорные документы, ТЗ и иные обязательства) </div>
</li>
<li>
<div style="text-align: justify;">Приоритет </div>
</li>
<li>
<div style="text-align: justify;">Версия (в которой планируется реализовать требование) </div>
</li>
</ul>
<p style="text-align: justify;">Поле «Текущий статус», отражающее жизненный цикл требования, может иметь следующие значения:
</p>
<p style="text-align: center;">
<a href="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_04.jpg" target="blank"><img class="aligncenter" title="Жизненный цикл требования" src="http://kholodkov.ru/it/wp-content/uploads/artpic/003/003_04s.jpg" alt="" /></a>
</p>
<p style="text-align: justify;">Статусы требований меняются вручную соответствующими ролями по завершении этапов работ в соответствии с бизнес-процессом.
</p>
<p style="text-align: justify;">С каждым требованием могут быть ассоциированы элементы из следующих репозиториев:
</p>
<ul>
<li>
<div style="text-align: justify;">Репозиторий архитектуры – компоненты, реализующие данное требование</div>
</li>
<li>
<div style="text-align: justify;">Репозиторий документации – документы, описывающие данное требования (ТП, РП, тесты и др.)</div>
</li>
<li>
<div style="text-align: justify;">Репозиторий задач – задачи в плане работ, путем выполнения которых реализуется данное требование </div>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top">
Репозиторий архитектуры
</td>
<td valign="top">
<p style="text-align: justify;">Хранилище с описанием архитектуры. Включает в себя следующие элементы:
</p>
<ul>
<li>
<div style="text-align: justify;">Диаграмма компонентов 1-го уровня. На ней представлены слои, на которые разделено решение и среды, в рамках которых эти слои функционируют. Внутри слоя изображаются пакеты, из которых он состоит. </div>
</li>
<li>
<div style="text-align: justify;">Диаграммы компонентов 2-го уровня. Для каждого пакета на диаграмме первого уровня составляется одна диаграмма компонентов с перечнем компонентов, входящих в состав этого пакета. </div>
</li>
<li>
<div style="text-align: justify;">Описание компонентов. Для каждого компонента на диаграмме 2-го уровня готовится документ с описанием его интерфейсов и внутренней логики реализации. </div>
</li>
<li>
<div style="text-align: justify;">Справочник классов. Автоматически генерируемый по коду навигатор по классом, реализованным в системе. </div>
</li>
</ul>
<p style="text-align: justify;">С каждым пакетом или компонентом на моделях 2-го уровня в репозитории архитектуры могут быть ассоциированы элементы из следующих репозиториев:
</p>
<ul>
<li>
<div style="text-align: justify;">Репозиторий требований – требования, при реализации которого используется данный компонент. </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий документации – общие описания архитектуры, описания слоев, компонентов (интерфейсные и внутренние части), классов. </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий кода – ссылки на конкретные программные модули, реализующие данный компонент. </div>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top">
Репозиторий документации
</td>
<td valign="top">
<p style="text-align: justify;">Хранилище файлов различных типов, используемых как сами по себе (например, Договорные документы, Протоколы, Акты и др.), так и в связке с элементами из репозитория требований (ТП, РП) и репозитория архитектуры (описания компонентов, слоев).
</p>
</td>
</tr>
<tr>
<td valign="top">
Репозиторий кода
</td>
<td valign="top">
<p style="text-align: justify;">Весь код решения с поддержкой ветвления версий.
</p>
<p style="text-align: justify;">Для целей срочной реализации критических доработок в рамках Репозитория кода существуют два экземпляра кода решения:
</p>
<ul>
<li>
<div style="text-align: justify;">Рабочая версия – в ней производятся все доработки согласно плана работ по версии и мелкие доработки нормального приоритета. </div>
</li>
<li>
<div style="text-align: justify;">Текущая развернутая версия – эксплуатируемая в настоящий момент версия – в ней реализуются критические мелкие доработки и выпускается промежуточная версия каждый раз, когда возникает необходимость устранить какие-то принципиальные моменты не дожидаясь выпуска следующей версии. </div>
</li>
</ul>
<p style="text-align: justify;">После выпуска промежуточной версии, вносятся соответствующие изменения в Рабочую версию в полуавтоматическом режиме.
</p>
</td>
</tr>
<tr>
<td valign="top">
Репозитория задач (план работ)
</td>
<td valign="top">
<p style="text-align: justify;">План работ, содержащий задачи для всех участников проекта. Задачи связаны с требованиями, на реализацию которых они направлены. Также задачи связаны с CheckIn`ами кода, который создавался или модифицировался в рамках выполнения задачи.
</p>
</td>
</tr>
</table>
</div>
<h3 id="#raz-05">Средства автоматизации бизнес-процесса</h3>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10" width="700">
<tr>
<td width="200" valign="middle">
<b>Наименование программного продукта </b>
</td>
<td width="500" valign="middle">
<b>Способ использования в бизнес-процессе </b>
</td>
</tr>
<tr>
<td valign="top">
Microsoft Team Foundation Server (MS TFS)
</td>
<td valign="top">
<ul>
<li>
<div style="text-align: justify;">Репозиторий требований </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий задач </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий кода </div>
</li>
<li>
<div style="text-align: justify;">Репозиторий документов </div>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top">
Microsoft Visual Studio 2008
</td>
<td valign="top">
<ul>
<li>
<div style="text-align: justify;">Средство разработки кода</div>
</li>
<li>
<div style="text-align: justify;">Клиент для MS TFS</div>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top">
Microsoft Visio
</td>
<td valign="top">
<ul>
<li>
<div style="text-align: justify;">Репозиторий архитектуры (модели 1-го и 2-го уровней)</div>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top">
Doxygen
</td>
<td valign="top">
<ul>
<li>
<div style="text-align: justify;">Репозиторий архитектуры (справочник классов)</div>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top">
Microsoft Project
</td>
<td valign="top">
<ul>
<li>
<div style="text-align: justify;">Клиент для репозитория задач в TFS</div>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top">
Microsoft Office
</td>
<td valign="top">
<ul>
<li>
<div style="text-align: justify;">Средство создания документации</div>
</li>
</ul>
</td>
</tr>
</table>
</div>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>https://kholodkov.ru/it/?feed=rss2&#038;p=130</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
