<?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>usecase.ru - вариант использования &#187; Разработка ПО</title>
	<atom:link href="http://www.usecase.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.usecase.ru</link>
	<description>Все о технологиях программирования</description>
	<lastBuildDate>Fri, 03 Sep 2010 06:13:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Кто виноват? Часть 2</title>
		<link>http://dev.usecase.ru/2010/04/01/182/</link>
		<comments>http://dev.usecase.ru/2010/04/01/182/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 07:37:35 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[О жизни]]></category>
		<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/?p=182</guid>
		<description><![CDATA[Я уже писал в заметке &#171;Кто виноват?&#187; о том, как следует реагировать на те ситуации, когда подчиненные не выполняют с должным качеством поставленные задачи. Сейчас я хочу осветить вопрос постановки задач. Зачастую, задачи для подчиненных ставятся &#171;сверху&#187; &#8211; руководство просто ставит исполнителя перед фактом &#8211; есть задача, есть сроки, должен  быть такой результат и т.п. [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2010/03/17/163/' rel='bookmark' title='Permanent Link: Кто виноват?'>Кто виноват?</a></li>
<li><a href='http://dev.usecase.ru/2010/02/26/104/' rel='bookmark' title='Permanent Link: Пример построения варианта использования (use case) системы. Часть 1'>Пример построения варианта использования (use case) системы. Часть 1</a></li>
<li><a href='http://dev.usecase.ru/2009/12/18/21/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Процесс разработки ПО'>Проектирование бизнес-приложения: Процесс разработки ПО</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-164" title="guilty" src="http://www.usecase.ru/wp-content/uploads/weisser-ring_11-106x150.jpg" alt="" width="106" height="150" />Я уже писал в заметке &laquo;<a rel="bookmark" href="http://dev.usecase.ru/2010/03/17/163/">Кто  виноват?</a>&raquo; о том, как следует реагировать на те ситуации, когда подчиненные не выполняют с должным качеством поставленные задачи. Сейчас я хочу осветить вопрос постановки задач.</p>
<p>Зачастую, задачи для подчиненных ставятся &laquo;сверху&raquo; &#8211; руководство просто ставит исполнителя перед фактом &#8211; есть задача, есть сроки, должен  быть такой результат и т.п. Иногда бывает и такое, когда руководство ставит &laquo;размытые&raquo; задачи &#8211; нечетко сформулированные (&laquo;ну, ты сам потом разберешься&#8230;&raquo;). В результате, исполнитель не всегда справляется с поставленными задачами.</p>
<p>Что же делать, чтобы более эффективно управлять и выполнять задания? Это должна быть работа двух сторон &#8211; того, кто ставит задачу, и того, кто ее исполняет.</p>
<p>Руководитель при постановке задачи обязательно должен согласовать ее содержание и сроки с исполнителем. При этом должно быть получено не формальное, а реальное подтверждение от исполнителя того, что задача полностью понятна и поставленные сроки соответствуют оценочным со стороны исполнителя. Исполнитель же должен при необходимости скорректировать постановку задач и сроки исполнения. Так же могут быть озвучены риски, которые могут возникнуть в процессе выполнения задачи. Если риски могут существенно скорректировать сроки, то необходимо дать две оценки по срокам: пессимистичная (с учетом всех рисков) и ожидаемая (если все пойдет по графику).</p>
<p>Часто бывает, что при реализации достаточно сложной задачи возникают непредвиденные ситуации (срабатывают неизвестные на момент старта работ риски). Иногда, в процессе реализации задачи приходит понимание, что задача оказалась намного сложнее, чем казалось при первоначальной оценке.  В этом случае исполнителю необходимо докладывать руководителю о том, что произошло и как это повлияло на сроки. В сложных ситуациях так же следует подготовить для руководства различные варианты исправления ситуации и их влияние на сроки реализации задачи.</p>
<p>Теперь, если вернуться к нашему правительству и руководству страны, хочется спросить у них: А как работает наше правительство и президент? Не похоже на подобный вариант работы, если слишком часто возникают вопросы о должностном соответствии того или иного чиновника. Им бы учиться у коммерческих организаций управлению задачами и ресурсами.</p>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2010/03/17/163/' rel='bookmark' title='Permanent Link: Кто виноват?'>Кто виноват?</a></li>
<li><a href='http://dev.usecase.ru/2010/02/26/104/' rel='bookmark' title='Permanent Link: Пример построения варианта использования (use case) системы. Часть 1'>Пример построения варианта использования (use case) системы. Часть 1</a></li>
<li><a href='http://dev.usecase.ru/2009/12/18/21/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Процесс разработки ПО'>Проектирование бизнес-приложения: Процесс разработки ПО</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2010/04/01/182/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Кто виноват?</title>
		<link>http://dev.usecase.ru/2010/03/17/163/</link>
		<comments>http://dev.usecase.ru/2010/03/17/163/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 06:55:22 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[О жизни]]></category>
		<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://dev.usecase.ru/?p=163</guid>
		<description><![CDATA[В последнее время в новостях постоянно слышу высказывания нашего текущего президента Медведева о том, что по возникшим проблемам &#171;будут найдены виновные и сделаны соответствующие выводы&#187;. Мне кажется, что это не конструктивный метод реагирования на возникшие проблемы. Конструктивный метод, на мой взгляд, заключается в следующем: Необходимо проанализировать сложившуюся ситуацию и понять причины возникновения проблемы. Проблемы могут [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2010/04/01/182/' rel='bookmark' title='Permanent Link: Кто виноват? Часть 2'>Кто виноват? Часть 2</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-164" title="guilty" src="http://www.usecase.ru/wp-content/uploads/weisser-ring_11-106x150.jpg" alt="" width="106" height="150" />В последнее время в новостях постоянно слышу высказывания нашего текущего президента Медведева о том, что по возникшим проблемам &laquo;будут найдены виновные и сделаны соответствующие выводы&raquo;. Мне кажется, что это не конструктивный метод реагирования на возникшие проблемы.</p>
<p>Конструктивный метод, на мой взгляд, заключается в следующем:</p>
<ol>
<li>Необходимо проанализировать сложившуюся ситуацию и понять причины возникновения проблемы. Проблемы могут быть вызваны внешними причинами (поставщик задержал поставку оборудования, случился форс-мажор и т.п.) и внутренними (руководитель на одном из уровней управления не выполнил своевременно необходимые действия, работник неправильно оценил плановые сроки реализации и поэтому сдвинулись конечные сроки и т.п.).</li>
<li>Определить план устранения проблемы на основе выявленных причин и реализовать его в жизнь. Следует учесть, что в план устранения может войти как устранение проблемы (замена сотрудника, подрядчика или поставщика, изменение задачи или даже отказ от реализации), так и отсутствие реагирования на проблему, если стоимость устранения проблемы окажется выше, чем ее неустранение, невозможно устранить проблему в приемлемые сроки или срок устранения сопоставим с имеющимися плановыми сроками.</li>
<li>Сделать выводы на будущее и спланировать предотвращение подобных ситуаций в будущем.</li>
</ol>
<p>Одним словом, необходимо качественно применять проектное управление и заранее применять <a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D1%81%D0%BA-%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%BC%D0%B5%D0%BD%D1%82" target="_blank">Риск-менеджмент</a>. К сожалению, в России с управлением проектами по устоявшимся методологиям (например, <a href="http://ru.wikipedia.org/wiki/PMBOK" target="_blank">PMBoK</a>) дела обстоят очень плохо &#8211; очень немногие организации готовы внедрять и использовать такие методологии.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<h1 id="firstHeading" class="firstHeading">Риск-менеджмент</h1>
</div>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2010/04/01/182/' rel='bookmark' title='Permanent Link: Кто виноват? Часть 2'>Кто виноват? Часть 2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2010/03/17/163/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример построения варианта использования (use case) системы. Часть 1</title>
		<link>http://dev.usecase.ru/2010/02/26/104/</link>
		<comments>http://dev.usecase.ru/2010/02/26/104/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:13:49 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/?p=104</guid>
		<description><![CDATA[В статьях Проектирование бизнес-приложения: Анализ и Проектирование бизнес-приложения: Анализ 2 я показал подход к возможному способу анализа функциональности системы. Теперь следует более подробно осветить этот процесс на основе примера. Возьмем для примера интернет-магазин по продаже книг для небольшого издательства. От заказчика (коммерческого директора Василия) поступило следующее письмо: Уважаемые разработчики, наш отдел маркетинга предложил создать собственный [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2010/04/01/182/' rel='bookmark' title='Permanent Link: Кто виноват? Часть 2'>Кто виноват? Часть 2</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="ThinkingMan" src="http://individual.utoronto.ca/xander/images/ThinkingMan_Rodin_328x284.jpg" alt="" width="98" height="85" />В статьях <a href="http://dev.usecase.ru/2006/07/17/12/">Проектирование  бизнес-приложения: Анализ</a> и <a href="http://dev.usecase.ru/2006/07/19/16/">Проектирование  бизнес-приложения: Анализ 2</a> я показал подход к возможному способу анализа функциональности системы. Теперь следует более подробно осветить этот процесс на основе примера.</p>
<p>Возьмем для примера интернет-магазин по продаже книг для небольшого издательства.</p>
<p>От заказчика (коммерческого директора Василия) поступило следующее письмо:</p>
<blockquote><p><em>Уважаемые разработчики, наш отдел маркетинга предложил создать собственный интернет-магазин по продаже книг &#8211; это позволит повысить прибыль. Прошу разработать и согласовать со мной техническое задание на интернет-магазин.</em></p></blockquote>
<p>Данное письмо подразумевает выполнение первого этапа работ &#8211; анализ потребностей заказчика и формирование технического задания (ТЗ). Любая работа требует организации и контроля. Для этого руководитель подразделения, где обитают разработчики, аналитики и другие спецы, назначает руководителя проекта. Руководитель проекта формирует команду проекта.</p>
<p>В команду проекта должны войти следующие роли:</p>
<ul>
<li>руководитель проекта &#8211; отвечает за организацию работ, координирование и контроль действий каждого члена команды;</li>
<li>аналитик &#8211; отвечает за сбор информации, ее обработку и выдачу технического задания на систему;</li>
<li>архитектор &#8211; составляет общее видение архитектуры системы и определяет возможность реализации того или иного сценария работы системы.</li>
</ul>
<p>Рассмотрим работу самой главной роли на этапе анализа &#8211; работу аналитика.</p>
<p>Первоначально аналитик должен определить заказчика проекта (в нашем случае это коммерческий директор Василий). Далее определяется рабочая группа со стороны заказчика, в которую должны входить ключевые заинтересованные лица: сам коммерческий директор Василий, начальник отдела розничных продаж Светлана, начальник отдела доставки Максим, начальник склада Роман.</p>
<p>Следующим шагом аналитик должен провести интервью с заинтересованными лицами. Чтобы интервью прошли эффективно, необходимо подготовиться &#8211; собрать информацию по имеющимся аналогам системы у конкурентов и/или почерпнуть информацию из специализированной литературы, если аналогов недостаточно.</p>
<p>Интервью могут быть очными (рабочая группа собирается в одном помещении) или в электронном виде (например, электронными письмами). Первоначальная встреча обязательно должна быть очной &#8211; на ней закладывается основная концепция системы. В ходе интервью должны быть разработаны бизнес-процессы работы системы, собраны требования к ней. Не стоит сразу заниматься очень подробным описанием &#8211; на первых интервью необходимо собрать только основную высокоуровневую информацию. После каждого интервью необходимо согласовать с рабочей группой полученную и обработанную информацию &#8211; создать документ, описывающий бизнес-процессы и требования.</p>
<p>В результате наших первых встреч с рабочей группой был <a href="http://www.usecase.ru/docsamples/visionsample/" target="_blank">получен документ</a> по следующему шаблону: <a title="Шаблон  документа-концепции" href="../templates/visiontemplate/">Шаблон документа-концепции</a></p>
<p>После согласования первой версии документа необходимо по полученным высокоуровневым параметрам системы подобрать бесплатные или коммерческие аналоги системы. Если аналог найден, то задача в некоторой степени упрощается &#8211; далее будет производиться внедрение системы и ее настройка под требования заказчика. Если удовлетворяющего аналога нет или стоимость и/или трудоемкость внедрения превысит стоимость и трудоемкость разработки своими силами, то принимается решение о разработке новой системы или отказ от системы вообще.</p>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2010/04/01/182/' rel='bookmark' title='Permanent Link: Кто виноват? Часть 2'>Кто виноват? Часть 2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2010/02/26/104/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Небольшая реорганизация</title>
		<link>http://dev.usecase.ru/2010/02/04/88/</link>
		<comments>http://dev.usecase.ru/2010/02/04/88/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:31:51 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[О жизни]]></category>
		<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://dev.usecase.ru/?p=88</guid>
		<description><![CDATA[Произвел небольшую реорганизацию на блоге. Теперь есть две рубрики &#8211; &#171;О жизни&#187; и &#171;Разработка ПО&#187;, которые заимели свои поддомены http://life.usecase.ru/ и http://dev.usecase.ru/ соответственно. Основной http://www.usecase.ru/ будет содержать обе рубрики. В первой рубрике я буду публиковать то, что меня волнует, но не связано с работой. Во второй же буду писать исключительно о делах околопрограммистских &#8211; от разработки [...]


]]></description>
			<content:encoded><![CDATA[<p>Произвел небольшую реорганизацию на блоге. Теперь есть две рубрики &#8211; &laquo;О жизни&raquo; и &laquo;Разработка ПО&raquo;, которые заимели свои поддомены <a title="http://life.usecase.ru/" href="http://life.usecase.ru/">http://life.usecase.ru/</a> и <a title="http://dev.usecase.ru/" href="http://dev.usecase.ru/">http://dev.usecase.ru/</a> соответственно. Основной <a href="http://www.usecase.ru/">http://www.usecase.ru/</a> будет содержать обе рубрики.</p>
<p>В первой рубрике я буду публиковать то, что меня волнует, но не связано с работой. Во второй же буду писать исключительно о делах околопрограммистских &#8211; от разработки до управления разработкой. Так же в дальнейшем я могу дополнить список рубрик интересующими меня темами.</p>


<p></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2010/02/04/88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проектирование бизнес-приложения: Процесс разработки ПО</title>
		<link>http://dev.usecase.ru/2009/12/18/21/</link>
		<comments>http://dev.usecase.ru/2009/12/18/21/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 08:27:04 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/?p=21</guid>
		<description><![CDATA[Итак, архитектура системы создана. Теперь необходимо воплощать полученные идеи в жизнь. Но торопиться здесь тоже не стоит. Первоначально необходимо определить последовательность реализации требований. Первыми пойдут требования для построения разработанной архитектуры &#8211; будем строить скелет системы. Далее должны идти требования от наиболее важных к наименее важным. Для каждого требования должны быть созданы задачи на реализацию, а [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2006/12/07/18/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Управление требованиями'>Проектирование бизнес-приложения: Управление требованиями</a></li>
<li><a href='http://dev.usecase.ru/2007/05/03/20/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Построение архитектуры'>Проектирование бизнес-приложения: Построение архитектуры</a></li>
<li><a href='http://dev.usecase.ru/2006/07/17/12/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Анализ'>Проектирование бизнес-приложения: Анализ</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Итак, архитектура системы создана. Теперь необходимо воплощать полученные идеи в жизнь. Но торопиться здесь тоже не стоит.</p>
<p>Первоначально необходимо определить последовательность реализации требований. Первыми пойдут требования для построения разработанной архитектуры &#8211; будем строить скелет системы. Далее должны идти требования от наиболее важных к наименее важным. Для каждого требования должны быть созданы задачи на реализацию, а для каждой задачи должна быть проставлена оценочная трудоемкость реализации.</p>
<p>При планировании реализации не следует убеждать себя в том, что мы реализуем все требования в первой версии системы. Часто бывает, что появляются неучтенные факторы, которые отодвигают выпуск системы. К тому же часто заказчик системы на этапе сбора требований не всегда четко представляет конечный результат, а проверка реализации дает коррективы в требования. Так же возникают ситуации, когда требования меняются, например, из-за изменений в законах.</p>
<p>Чтобы упростить процесс разработки следует разбить весь проект на итерации. При этом каждая итерация должна продолжаться от одной до четырех недель (в зависимости от сложности подлежащих реализации требований). По итогам каждой итерации должно выполняться тестирование, а для ключевых выпусков (beta, release candidate) осуществляться демонстрация заказчику в целях получения отзывов о системе.</p>
<p>Теперь вернемся к программированию. Каждый программист получает задачу и приступает к ее реализации. Первоначально программист должен еще раз проверить оценочную трудоемкость и при необходимости откорректировать ее. Далее он должен реализовывать задачу в максимально короткие сроки с наивысшим качеством.</p>
<p>Что значит &laquo;реализовывать задачу в максимально короткие сроки с наивысшим качеством&raquo;?  А значит это следующее:</p>
<ol>
<li>Программист должен сосредоточиться на одной задаче и целиком посвятить себя ей до завершения работ. Редкие люди могут делать одновременно два дела, а частое переключение не позволяет работать эффективно.</li>
<li>Программист не должен самостоятельно додумывать нечетко описанные требования или задачи &#8211; для этого есть аналитики и архитекторы, в обязанность которых входит получение однозначных, непротиворечивых и полных требований к системе.</li>
<li>Если поставленная задача не является типовой, то ее следует обсудить в команде разработки (например, за чашкой чая) &#8211; часто кто-нибудь уже реализовывал подобную задачу в своей практике или знает уже частично или полностью реализованное решение (часто бывает проще купить какой-то компонент, чем изобретать велосипед и платить за это лишние деньги).</li>
<li>Когда выбран вариант реализации, то его следует обсудить с архитектором и коллегами по команде, т.к. иногда решение может не вписываться в архитектуру или негативно влиять на соседние компоненты системы, разрабатываемые коллегами.</li>
<li>Реализация задачи должна обязательно сопровождаться тестирование. Наиболее эффективном способом является автоматизированное юнит-тестирование (unit tests) и проверка покрытия кода (code coverage). Но и о ручной проверке так же не следует забывать, т.к. не всегда программист может учесть в юнит-тесте всю необходимую проверку.</li>
</ol>
<p>Итак, задача реализована. Что дальше? Дальше наиболее оптимальным вариантом является проверка написанного кода тим-лидером или другим программистом (желательно, более опытным для проверки эффективности реализации, а менее опытному для повышения уровня). По результатам проверки задача может быть отправлена на доработку по замечаниям.</p>
<p>После реализации задачи она должна передаваться на документирование и функциональное тестирование.</p>
<p>Документирование подразумевает создание как минимум двух документов:</p>
<ol>
<li>инструкции пользователя &#8211; полное руководство по использованию системы с точки зрения пользователя.</li>
<li>инструкции администратора &#8211; полное руководство по установке, настройке и поддержанию системы в работоспособном состоянии.</li>
</ol>
<p>Функциональное тестирование состоит из:</p>
<ol>
<li>Создания тестов для проверки требований. Обычно создаются комплексные тесты, проверяющие несколько требований.</li>
<li>Проверки инструкций на достаточность, легкую воспринимаемость и соответствие требованиям и тестам.</li>
<li>Проведение тестов по установке, настройке и использованию системы.</li>
</ol>
<p>По результатам проводимых тестов задачи могут отправляться на доработку или приниматься решение о выпуске стабильного или промежуточного дистрибутива системы.</p>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2006/12/07/18/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Управление требованиями'>Проектирование бизнес-приложения: Управление требованиями</a></li>
<li><a href='http://dev.usecase.ru/2007/05/03/20/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Построение архитектуры'>Проектирование бизнес-приложения: Построение архитектуры</a></li>
<li><a href='http://dev.usecase.ru/2006/07/17/12/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Анализ'>Проектирование бизнес-приложения: Анализ</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2009/12/18/21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>О русских программистах</title>
		<link>http://dev.usecase.ru/2009/09/17/51/</link>
		<comments>http://dev.usecase.ru/2009/09/17/51/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 13:33:40 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/?p=51</guid>
		<description><![CDATA[Вот этот пост Андрея Колесова натолкнул меня на рассуждения о наших программистах. Я уже достаточно давно начал руководить разработкой, но начинал простым программистом. По прошествии многих лет все ощущения от работы как программиста и как руководителя успели систематизироваться. Думаю, что сейчас я готов поделиться ими. На самой заре 90-х прошлого века я занялся программированием как [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2008/09/04/37/' rel='bookmark' title='Permanent Link: Ничего лишнего'>Ничего лишнего</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Вот этот <a href="http://itblogs.ru/blogs/kolesov/archive/2009/09/16/54326.aspx" target="_blank">пост Андрея Колесова</a> натолкнул меня на рассуждения о наших программистах.</p>
<p>Я уже достаточно давно начал руководить разработкой, но начинал простым программистом. По прошествии многих лет все ощущения от работы как программиста и как руководителя успели систематизироваться. Думаю, что сейчас я готов поделиться ими.</p>
<p>На самой заре 90-х прошлого века я занялся программированием как хобби. Это было интересно, увлекательно. Этакий драйв. Информации по программированию было недостаточно. Были программистские журналы, были какие-то книжки, но они давали лишь пример решения каких-то специфичных задач, а зачастую вообще ничего не давали &#8211; авторы писали &laquo;мусор&raquo;. Поэтому у меня все задачи, которые я себе ставил, носили скорее исследовательский характер. При решении этих задач я часто изобретал &laquo;велосипед&raquo;.</p>
<p>Следует отметить, что желание стать профессиональным программистом сподвигло меня на поиск интересной специальности для обучения в институте (на самом деле, в университете). Мне как раз стало интересно направление систем автоматизированного проектирования (САПР) &#8211; перспективное, сложное и интересное направление. Реклама сотрудников института сработала и я поступил на соответствующий факультет. Но правда жизни оказалась не такой радужной &#8211; на факультете САПР готовили не программистов, а инженеров, которые иногда могут автоматизировать свои расчеты в этих системах САПР. Какое же это было разочарование для меня! Итогом этого разочарования стало то, что я просто бросил институт, не окончив обучения.</p>
<p>Ближе к концу 90-х я занялся программированием профессионально. Это не значит, что до этого я был ламером &#8211; наоборот, технические знания были достаточно высокие. Просто я стал получать деньги за то, что так нравится.</p>
<p>Итак, устроившись на работу я попал в коллектив программистов. Вполне понятно, что ранее полученные знания были лоскутными и не давали полной картины, как можно их применять в реальной работе на реальных проектах. Именно эту информацию мне хотелось получить у своих коллег. К сожалению, ни достаточной культуры ведения проектов, ни хороших технических знаний я не нашел &#8211; все были почти такими же зелеными юнцами, как и я (при этом контора была одним из лидеров на рынке). В других организациях ситуация была, а зачастую и остается до сих пор такой же плачевной.</p>
<p>В этот момент я принял два ключевых решения для себя: продолжить обучение в институте именно по направлению программирования и самостоятельно обучаться всем премудростям программирования на основе открытых источников (книги и Интернет). Сказано &#8211; сделано: восстановился в институте, но на другом факультете, и начал впитывать и анализировать информацию отовсюду, откуда только было можно.</p>
<p>Обучение в институте показало, что в институте не готовят профессиональных программистов. Да, были занятия, которые корелировались с программированием (правда, в таком убогом виде, что это невозможно применять в реальности), а по методологиям разработки, можно сказать, вообще ничего не было (за исключением одного из предметов, но там было все настолько обще и скудно в теории, что на практике это, опять же, невозможно применять). В итоге, успешно окончив институт, я отказался от предложения поступить в аспирантуру &#8211; не видел, что она могла бы мне дать, да и что я мог бы принести реально полезное в нашу &laquo;науку&raquo;. Ну а разочарование в нашей системе образования оказалось настолько огромным, что сильно сказывается и сейчас.</p>
<p>С самообразованием повезло значительно лучше &#8211; я профессионально вырос, мог выполнять работу архитектора. При этом изучил различные методологии (класса Agile и Rigorous &#8211; строгие), которые стал применять и адаптировать в своей команде. Как мне кажется, я получил очень хорошие знания и научился применять на практике знания от технических до методологических. Как это часто бывает с самообразованием, часто приходилось учиться на своих ошибках, но это лучше, чем ничего.</p>
<p>В процессе работы я часто сталкивался с тем, что в команду приходят новые люди. Зачастую, они оканчивали хорошие институты, да еще и с хорошими оценками. Но мое понимание текущей ситуации в образовании не позволяло все принимать за чистую правду &#8211; ни красный диплом, ни громкое имя ВУЗа не давали гарантии того, что реклама соискателя на рабочее место окажется правдой. В итоге приходилось выбирать наиболее адекватных (с необходимыми техническими знаниями, со способностью обучаться и с возможностью легко и бесконфликтно встроиться в рабочий коллектив). Ну а дальше начинался долгий процесс обучения и тонкой настройки.</p>
<p>Отдельно расскажу о тех, кто приходил ко мне на собеседования и не получил &laquo;счастливый билет&raquo;. Самооценка у соискателей очень завышена (возможно, что в этом тоже виноват миф об &laquo;отличных русских программистах&raquo;). Зачастую, приходят совершенно неподготовленные люди, получившие базовые знания о языке программирования и верящие в то, что они могут творить чудеса. При этом они не могут выполнять работу в коллективе, не могут проанализировать задачу и затребовать недостающую информацию. Так же очень часто (около 90% от общего количества) встречаются и те, кто при недостатке информации или наличии противоречий в задании выбирает собственное решение, которое не согласовывает с коллегами (иногда после такого приходится очень долго выправлять ситуацию, чтобы устранить результаты такого &laquo;творчества&raquo;).</p>
<p>Исходя из выше сказанного я могу отметить основные параметры, по которым можно оценивать разработчиков, а начинающим (а иногда и профессиональным) разработчикам готовиться к взрослой жизни:</p>
<ol>
<li>Разработчик должен понимать, что разработка &#8211; это не только умение программировать, но и коллективная работа. От каждого конкретного разработчика зависит общий успех проекта. В данном случае действует правило: подвел один &#8211; пострадали все.</li>
<li>У разработчика должен быть внутренний стимул к самостоятельному развитию, обучению. Нет ничего хуже, если человек остановился в развитии и не пытается получать и активно применять информацию в работе.</li>
<li>Необходимо знать, какие методологии используются при разработке (класса Agile и Rigorous &#8211; строгие, например RUP или MSF). Просто знать названия недостаточно, необходимо понимание самих процессов в команде и какие документы должны готовиться при этом. Следует так же учитывать, что в каждой команде присутствует своя адаптация того или иного процесса разработки (хуже, когда ее нет).</li>
<li>Необходимо понимать, что в большинстве случаев поставленная задача или уже была решена кем-то в подобной ситуации, или при решении задачи можно использовать уже разработанное другими (дополнительные компоненты и фрэймворки). Чтобы не изобретать велосипед, необходимо посоветоваться с коллегами (может, кто припомнит какое-либо решение, свое или чужое), изучить внутреннюю документацию по проекту или поискать в Интернете.</li>
<li>Иногда определенное решение задачи может повлиять негативно на другие компоненты разрабатываемой системы. Чтобы измежать этого, требуется обязательно консультироваться с разработчиками &laquo;соседних&raquo; компонентов и архитекторами на предмет совместимости решения и системы.</li>
<li>Если разработчик делает оценку задачи, то он должен всесторонне проанализировать ее. При этом должны быть определены риски (придуманное в первом приближении решение может не удовлетворять требованиям к производительности или новая технология может сильно затянуть разработку или вообще остановить ее) и пути их устранения, основные направления решения и альтернативные варианты, каким образом будет проводиться тестирование. Часто разработчик оценивает некий идеальный вариант, даже не закладывая время на тестирование и отладку. Из-за этого он срывает сроки и подводит своих коллег.</li>
<li>После выполнения задачи любой разработчик должен проанализировать результаты своей работы и сделать выводы. Иногда, полученное решение является удовлетворительным на текущий момент, но в дальнейшем потребует переработки. Для этого можно вести список потенциально проблемных мест в решении, чтобы заранее предотвращать возможные негативные последствия, а не ждать, когда гром грянет.</li>
</ol>
<p>Видите, что я описал параметры для разработчиков, а не программистов? Дело в том, что разработчиком может быть как программист, так и тестировщик и архитектор, одним словом, создатель системы. Ну а данные параметры применимы ко всем &#8211; они универсальны.</p>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2008/09/04/37/' rel='bookmark' title='Permanent Link: Ничего лишнего'>Ничего лишнего</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2009/09/17/51/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ничего лишнего</title>
		<link>http://dev.usecase.ru/2008/09/04/37/</link>
		<comments>http://dev.usecase.ru/2008/09/04/37/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 17:39:40 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/?p=37</guid>
		<description><![CDATA[Постоянно сталкиваюсь с такой проблемой: разработчики очень часто придумывают дополнительные задания для поставленных задач зачастую &#171;додумывая&#187; что-то вместо заказчика. При этом на такие дополнительные работы уходит иногда приличная доля времени. Вот правила, которые я стараюсь донести до каждого члена команды разработки: Никогда не делайте работу сверх той, что определена заданием (я могу и не заплатить [...]


]]></description>
			<content:encoded><![CDATA[<p>Постоянно сталкиваюсь с такой проблемой: разработчики очень часто придумывают дополнительные задания для поставленных задач зачастую &laquo;додумывая&raquo; что-то вместо заказчика. При этом на такие дополнительные работы уходит иногда приличная доля времени.</p>
<p>Вот правила, которые я стараюсь донести до каждого члена команды разработки:</p>
<ol>
<li>Никогда не делайте работу сверх той, что определена заданием (я могу и не заплатить за такую &laquo;доработку&raquo;).</li>
<li>Если возникают неоднозначности или что-то непонятно, то обратитесь как можно раньше к тому, кто помог бы разрешить все вопросы (часто разработчик может неправильно &laquo;додумать&raquo; задачу).</li>
<li>После получения задания проконсультируйтесь с аналитиком или другим ответственным за требования лицом по поводу реализации, разрисуйте полностью свое решение, чтобы всем было понятно, что в результате получится (реализация должна соответствовать ожиданиям заказчика). Когда решение согласовано со всеми заинтересованными лицами, его можно задокументировать и приложить к проектной документации.</li>
</ol>


<p></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2008/09/04/37/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Команда vs группа</title>
		<link>http://dev.usecase.ru/2008/09/04/34/</link>
		<comments>http://dev.usecase.ru/2008/09/04/34/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 16:14:07 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/?p=34</guid>
		<description><![CDATA[Очень часто я встречаю непонимание различий между командой и группой. В то же время эти различия принципиальны. Итак, что же такое группа? Группа &#8211; это некоторое количество людей, выделенных для решения какой-то одной задачи. В группе каждому исполнителю может ставиться индивидуальная или групповая подзадача, которая входит в основную. Зачастую, каждый член группы ощущает себя индивидуалом [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2008/09/04/37/' rel='bookmark' title='Permanent Link: Ничего лишнего'>Ничего лишнего</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Очень часто я встречаю непонимание различий между командой и группой. В то же время эти различия принципиальны.</p>
<p>Итак, что же такое группа? Группа &#8211; это некоторое количество людей, выделенных для решения какой-то одной задачи. В группе каждому исполнителю может ставиться индивидуальная или групповая подзадача, которая входит в основную. Зачастую, каждый член группы ощущает себя индивидуалом и стремиться к решению поставленных перед ним задач.</p>
<p>Команда базируется на понятии группы, но каждый член команды осознает, что поставленные перед ним задачи важны не столько для него самого, сколько для решения единой общей задачи, поставленной перед командой.</p>
<p>Очень часто руководители ограничиваются созданием группы и не мотивируют создание единой команды. Это зачастую чревато огромной неэффективностью работы членов группы из-за плохой мотивированности на результате. В результате возможны срывы сроков, плохая коммуникация, неудовлетворительный результат и т.д.</p>
<p>Одной из главных задач руководителей является создание команды, т.е. мотивирование каждого члена группы на достижение поставленных задач именно перед группой. В данном случае личные результаты каждого члена группы будут менее приоритетны по сравнению с результатами группы (команды).</p>
<p>Что же необходимо сделать для создания команды?</p>
<ol>
<li>Объяснить цели (стратегические, тактические, оперативные), которые команда достигает при решении поставленных задач.</li>
<li>Нацелить каждого члена команды на совместное решение поставленных задач.</li>
<li>Дать понимание всем членам команды того, что каждый из них является ответственным лицом за свои обязательства перед командой.</li>
<li>Обеспечить отличные способы коммуникации между членами команды (регулярные встречи, оперативные звонки и письма с оперативными ответами, частое личное общение и т.п.).</li>
<li>Дать понимание того, что в некоторых случаях исполнитель должен проявлять инициативу.</li>
</ol>
<p>Но создание команды &#8211; это треть дела! Самое главное &#8211; сохранить ее в процессе работы. Для этого необходимо поддерживать перечисленные выше задачи в актуальном состоянии, а так же выполнять дополнительную работу:</p>
<ol>
<li>оперативно решать возникающие проблемы,</li>
<li>регулярно получать состояние о продвижении в решении поставленных задач,</li>
<li>мотивировать различными способами активную работу членов команды (часто хватает поднятия морального духа сообщением о реальных успехах команды и ее продвижением в работах, так же хорошо действует персональное развитие и обучение каждого члена команды),</li>
<li>постоянно мониторить психологическое состояние каждого члена команды, предупреждая возникновение внутренних и внешних конфликтов.</li>
</ol>
<p>По данной теме советую так же почитать статью &laquo;<a title="Группа или команда?" href="http://www.e-xecutive.ru/knowledge/review/780086/" target="_blank">Группа или команда?</a>&laquo;.</p>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2008/09/04/37/' rel='bookmark' title='Permanent Link: Ничего лишнего'>Ничего лишнего</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2008/09/04/34/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проектирование бизнес-приложения: Построение архитектуры</title>
		<link>http://dev.usecase.ru/2007/05/03/20/</link>
		<comments>http://dev.usecase.ru/2007/05/03/20/#comments</comments>
		<pubDate>Thu, 03 May 2007 08:42:21 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/2007/05/03/20/</guid>
		<description><![CDATA[Построение архитектуры следует начинать с анализа базовой функциональности (базовых требований). На основе этого необходимо определить наиболее подходящую модель архитектуры (обычно N-уровневая &#8211; N-layer, часто распределенная &#8211; N-tier). При этом следует учитывать, что архитектура должна включать только то, что определено базовыми требованиями. Не следует делать что-то на будущее развитие, если это не определено текущими требованиями. Можно [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2006/07/19/16/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Анализ 2'>Проектирование бизнес-приложения: Анализ 2</a></li>
<li><a href='http://dev.usecase.ru/2005/10/11/3/' rel='bookmark' title='Permanent Link: С чего начать проектирование бизнес-приложения'>С чего начать проектирование бизнес-приложения</a></li>
<li><a href='http://dev.usecase.ru/2006/07/11/11/' rel='bookmark' title='Permanent Link: Построение архитектуры приложений'>Построение архитектуры приложений</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Построение архитектуры следует начинать с анализа базовой функциональности (базовых требований). На основе этого необходимо определить наиболее подходящую модель архитектуры (обычно N-уровневая &#8211; N-layer, часто распределенная &#8211; N-tier). При этом следует учитывать, что <span id="more-20"></span>архитектура должна включать только то, что определено базовыми требованиями. Не следует делать что-то на будущее развитие, если это не определено текущими требованиями. Можно определить базовые требования будущих версий и строить архитектуру текущей версии таким образом, чтобы она не шла вразрез с модификациями архитектуры будущих версий, но не более.</p>
<p>На этапе анализа основную функциональность системы мы делили на функциональные модули. При построении архитектуры системы следует так же придерживаться такого же разбиения на модули. Каждый модуль будет представлять собой один или несколько бизнес-сервисов, т.е. сервисов, осуществляющих поддержку бизнес-операций в системе. Такое разбиение позволит при дальнейшем развитии системы легко заменять один модуль на другой, новый, расширенный или исправленный.</p>
<p>Проектирование интерфейса взаимодействия бизнес-сервиса с другими компонентами системы следует проектировать на основе функций (бизнес-операций) бизнес-сервиса, определенных на этапе анализа. При дальнейшем расширении функциональности бизнес-сервиса желательно не менять ранее определенный интерфейс взаимодействия, а только расширять его новыми методами, т.к. какие-то бизнес-сервисы могут использовать ранее определенные методы (функции). При расширении функциональности оптимально делать версионность интерфейса взаимодействия и версионность сущностей бизнес-сервиса.</p>
<p>Каждый бизнес-сервис может выступать в роли &laquo;подчиненного&raquo; сервиса для другого бизнес-сервиса, чтобы последний мог получать данные из первого и оперировать ими. Например, бизнес-сервис бухгалтерии может использовать информацию о работающих сотрудниках из бизнес-сервиса отдела кадров. Некоторые бизнес-сервисы могут осуществлять агрегацию нескольких бизнес-сервисов (объединение с целью упрощения взаимодействия). При этом возможна частичная или полная трансформация данных.</p>
<p><a class="imagelink" title="Модульная архитектура" href="http://www.usecase.ru/wp-content/uploads/2007/05/arch.png"><img id="image26" src="http://www.usecase.ru/wp-content/uploads/2007/05/arch.png" alt="Модульная архитектура" width="436" /></a></p>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2006/07/19/16/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Анализ 2'>Проектирование бизнес-приложения: Анализ 2</a></li>
<li><a href='http://dev.usecase.ru/2005/10/11/3/' rel='bookmark' title='Permanent Link: С чего начать проектирование бизнес-приложения'>С чего начать проектирование бизнес-приложения</a></li>
<li><a href='http://dev.usecase.ru/2006/07/11/11/' rel='bookmark' title='Permanent Link: Построение архитектуры приложений'>Построение архитектуры приложений</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2007/05/03/20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проектирование бизнес-приложения: Управление требованиями</title>
		<link>http://dev.usecase.ru/2006/12/07/18/</link>
		<comments>http://dev.usecase.ru/2006/12/07/18/#comments</comments>
		<pubDate>Thu, 07 Dec 2006 10:52:44 +0000</pubDate>
		<dc:creator>Stanislav Pilipenko</dc:creator>
				<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.usecase.ru/2006/12/07/18/</guid>
		<description><![CDATA[Следующим шагом после анализа является фиксирование требований к системе и управление ими. Требования могут быть функциональные и нефункциональные. Нефункциональные требования фиксируют параметры приложения, которые не относятся к выполняемым им функциям &#8211; это обычно какие-либо технические характеристики: ограничение на какую-либо операционную систему, технологию, требования к интерфейсу и т.п. Функциональные требования описывают функции системы и определяют ограничения [...]


Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2007/05/03/20/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Построение архитектуры'>Проектирование бизнес-приложения: Построение архитектуры</a></li>
<li><a href='http://dev.usecase.ru/2009/12/18/21/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Процесс разработки ПО'>Проектирование бизнес-приложения: Процесс разработки ПО</a></li>
<li><a href='http://dev.usecase.ru/2006/07/19/16/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Анализ 2'>Проектирование бизнес-приложения: Анализ 2</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Следующим шагом после анализа является фиксирование требований к системе и управление ими. Требования могут быть функциональные и нефункциональные.</p>
<p>Нефункциональные требования фиксируют <span id="more-18"></span>параметры приложения, которые не относятся к выполняемым им функциям &#8211; это обычно какие-либо технические характеристики: ограничение на какую-либо операционную систему, технологию, требования к интерфейсу и т.п.</p>
<p>Функциональные требования описывают функции системы и определяют ограничения на них. Они строятся на основе ранее проведенного анализа и первоначально могут полностью соответствовать результатам модульного анализа.</p>
<p>Зачастую, заказчик в момент обследования не может вспомнить каких-то нюансов бизнес-процессов, необходимых для корректной автоматизации. Так же бывает, что заказчик меняет некоторые требования в процессе разработки. Чтобы уменьшить риски при реализации того или иного требования (функции системы), необходимо научиться управлять требованиями.</p>
<p>Первым делом переводим все выявленные функции будущего приложения в требования. Иногда некоторые требования следует разбить на несколько более мелких, т.к. какая-то часть требования может быть существенной (влияющей на архитектуру), а другие просто определяют несущественные расширения функций системы.</p>
<p>Следующим шагом будет являться простановка приоритетов для каждого требования. Этот процесс следует проводить совместно с заказчиком и архитекторами (инфраструктуры и приложения).</p>
<p>Для начала необходимо выявить базовые требования, без которых невозможно будет построить базовую архитектуру приложения. Обычно эти требования фиксируются и практически не изменяются до момента выпуска версии. Изменение данных требований зачастую может носить фатальные последствия для приложения и проекта в целом.</p>
<p>Далее расставляем приоритеты на остальные требования в зависимости от их важности с учетом того, что они могут достаточно серьезно повлиять на архитектуру приложения.</p>
<p>Составленный список требований необходимо тщательно согласовать с заказчиком. Чем выше приоритет у требования, тем внимательнее заказчику необходимо проверить его на полноту и корректность. Если в высокоприоритетное требование будут вноситься существенные требования в процессе разработки приложения, то это может существенно изменить архитектуру приложения и увеличить время и стоимость разработки. Чем раньше будет найдена и исправлена ошибка, тем меньшая стоимость будет у нее.</p>
<p>В процессе построения приложения требования могут изменяться (практически все проекты подвержены этому). В зависимости от приоритета требования и степени его реализации следует производить переоценку его приоритетности и возможности реализации в измененном виде на текущей стадии создания приложения. Возможны варианты, когда изменения в требования настолько существенны, что объем работ по модификации приложения может оказаться достаточно большим. В таких случаях изменение требования переносят на последующую версию или начинают процесс практически с начала.</p>


<p>Похожие статьи:<ol><li><a href='http://dev.usecase.ru/2007/05/03/20/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Построение архитектуры'>Проектирование бизнес-приложения: Построение архитектуры</a></li>
<li><a href='http://dev.usecase.ru/2009/12/18/21/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Процесс разработки ПО'>Проектирование бизнес-приложения: Процесс разработки ПО</a></li>
<li><a href='http://dev.usecase.ru/2006/07/19/16/' rel='bookmark' title='Permanent Link: Проектирование бизнес-приложения: Анализ 2'>Проектирование бизнес-приложения: Анализ 2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://dev.usecase.ru/2006/12/07/18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
