Итерационная модель
Альтернативой последовательной модели является так называемая модель итеративной и инкрементальной разработки (англ. iterative and incremental development, IID), получившей также от Т. Гилба в 70-е гг. название эволюционной модели. Также эту модель называют итеративной моделью и инкрементальной моделью[4].
Модель IID предполагает разбиение жизненного цикла проекта на последовательность итераций, каждая из которых напоминает «мини-проект», включая все процессы разработки в применении к созданию меньших фрагментов функциональности, по сравнению с проектом в целом. Цель каждой итерации — получение работающей версии программной системы, включающей функциональность, определённую интегрированным содержанием всех предыдущих и текущей итерации. Результат финальной итерации содержит всю требуемую функциональность продукта. Таким образом, с завершением каждой итерации продукт получает приращение — инкремент — к его возможностям, которые, следовательно, развиваются эволюционно. Итеративность, инкрементальность и эволюционность в данном случае есть выражение одного и то же смысла разными словами со слегка разных точек зрения[3].
По выражению Т. Гилба, «эволюция — прием, предназначенный для создания видимости стабильности. Шансы успешного создания сложной системы будут максимальными, если она реализуется в серии небольших шагов и если каждый шаг заключает в себе четко определённый успех, а также возможность «отката» к предыдущему успешному этапу в случае неудачи. Перед тем, как пустить в дело все ресурсы, предназначенные для создания системы, разработчик имеет возможность получать из реального мира сигналы обратной связи и исправлять возможные ошибки в проекте»[4].
Подход IID имеет и свои отрицательные стороны, которые, по сути, — обратная сторона достоинств. Во-первых, целостное понимание возможностей и ограничений проекта очень долгое время отсутствует. Во-вторых, при итерациях приходится отбрасывать часть сделанной ранее работы. В-третьих, добросовестность специалистов при выполнении работ всё же снижается, что психологически объяснимо, ведь над ними постоянно довлеет ощущение, что «всё равно всё можно будет переделать и улучшить позже»[3].
Различные варианты итерационного подхода реализованы в большинстве современных методологий разработки (RUP, MSF, XP).
Спиральная модель (англ. spiral model) была разработана в середине 1980-х годов Барри Боэмом. Она основана на классическом цикле Деминга PDCA (plan-do-check-act). При использовании этой модели ПО создается в несколькоитераций (витков спирали) методом прототипирования.
Каждая итерация соответствует созданию фрагмента или версии ПО, на ней уточняются цели и характеристики проекта, оценивается качество полученных результатов и планируются работы следующей итерации.
На каждой итерации оцениваются:
риск превышения сроков и стоимости проекта;
необходимость выполнения ещё одной итерации;
степень полноты и точности понимания требований к системе;
целесообразность прекращения проекта.
Важно понимать, что спиральная модель является не альтернативой эволюционной модели (модели IID), а специально проработанным вариантом. К сожалению, нередко спиральную модель либо ошибочно используют как синоним эволюционной модели вообще, либо (не менее ошибочно) упоминают как совершенно самостоятельную модель наряду с IID[3].
Отличительной особенностью спиральной модели является специальное внимание, уделяемое рискам, влияющим на организацию жизненного цикла, и контрольным точкам. Боэм формулирует 10 наиболее распространённых (по приоритетам) рисков:
Дефицит специалистов.
Нереалистичные сроки и бюджет.
Реализация несоответствующей функциональности.
Разработка неправильного пользовательского интерфейса.
Перфекционизм, ненужная оптимизация и оттачивание деталей.
Непрекращающийся поток изменений.
Нехватка информации о внешних компонентах, определяющих окружение системы или вовлеченных в интеграцию.
Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
Недостаточная производительность получаемой системы.
Разрыв в квалификации специалистов разных областей.
ERP (англ. Enterprise Resource Planning, планирование ресурсов предприятия) — организационная стратегия интеграции производства и операций, управления трудовыми ресурсами, финансового менеджмента и управления активами, ориентированная на непрерывную балансировку и оптимизацию ресурсов предприятия посредством специализированного интегрированного пакета прикладного программного обеспечения, обеспечивающего общую модель данных ипроцессов для всех сфер деятельности[1][2]. ERP-система — конкретный программный пакет, реализующий стратегию ERP.
Концепция ERP сформулирована в 1990 году аналитиком Gartner как видение развития методик MRP II и CIM (англ.), в начале — середине 1990-х годов появилось несколько успешных тиражируемых ERP-систем для крупных организаций, наиболее известные — разработки компаний Baan (англ.), Oracle, PeopleSoft, SAP, JD Edwards[3], сформировался рынок услуг по внедрению ERP-систем с участием компаний большой четвёрки, в 2000-е годы произошла консолидация поставщиков, появилось значительное количество ERP-систем для малого и среднего бизнеса, наиболее известными поставщиками которых стали Sage Group и Microsoft[4].
Внедрение ERP-системы считается фактически необходимым условием для публичной компании и, начиная с конца 1990-х годов, ERP-системы, изначально внедрявшиеся только промышленными предприятиями, эксплуатируются большинством крупных организаций вне зависимости от страны, формы собственности, отрасли[5].
Ключевые принципы:
В качестве характеристической особенности ERP-стратегии отмечается принципиальный подход к использованию единой транзакционной системы для подавляющего большинства операций и бизнес-процессов организации, вне зависимости от функциональной и территориальной разобщённости мест их возникновения и прохождения, обязательность сведе́ния всех операций в единую базу для последующей обработки и получения в реальном времени сбалансированных планов[20].
Тиражируемость, то есть возможность применить один и тот же программный пакет для разных организаций (возможно, с разными настройками и расширениями), фигурирует как одно из обязательных условий ERP-системы[21]. Одной из причин повсеместного использования тиражируемых ERP-систем вместо разработки на заказ указывается возможность внедрения лучших практик посредством реинжиниринга бизнес-процессов согласно решениям, применённым в ERP-системе[22]. Однако, встречаются и упоминания интегрированных систем, разработанных для отдельной организации на заказ как ERP-систем[23].
Необходимость всеобъемлющего применения ERP-системы в территориально-распределённых организациях требует поддержки в единой системе множества валют и языков[24]. Более того, необходимость поддерживать несколько организационных единиц (несколько юридических лиц, несколько предприятий), несколько различных планов счетов, учётных политик, различных схем налогообложения в едином экземпляре системы оказывается необходимым условием для применения в холдингах, транснациональных корпорациях.
Применимость в различных отраслях накладывает на ERP-системы, с одной стороны, требования к универсальности, с другой стороны — поддержку расширяемости отраслевой спецификой. Основные крупные системы включают готовые специализированные модули и расширения для различных отраслей (известны специализированные решения в рамках ERP-систем для машиностроительных и обрабатывающих производств, предприятий добывающей промышленности,розничной торговли, дистрибуции, банков, финансовых организаций и страховых компаний, предприятий электросвязи, энергетики, организаций сектора государственного управления, сферы образования, медицины и других отраслей).
Система управления взаимоотношениями с клиентами (CRM, CRM-система, сокращение от англ. Customer Relationship Management) — прикладное программное обеспечение для организаций, предназначенное для автоматизации стратегий взаимодействия с заказчиками, в частности, для повышения уровня продаж, оптимизации маркетинга и улучшения обслуживания клиентов путём сохранения информации о клиентах и истории взаимоотношений с ними, установления и улучшения бизнес-процедур и последующего анализа результатов.
CRM — модель взаимодействия, полагающая, что центром всей философии бизнеса является клиент, а основными направлениями деятельности являются меры по поддержке эффективного маркетинга, продаж и обслуживания клиентов.
Функции для поддержки этих бизнес-целей включают продажи, маркетинг, поддержку потребителей.
CRM-система может включать в себя:
Фронтальную часть, обеспечивающую обслуживание клиентов на точках продаж с автономной, распределенной или централизованной обработкой информации
Операционную часть, обеспечивающую авторизацию операций и оперативную отчетность
Хранилище данных
Аналитическую подсистему
Распределенную систему поддержки продаж: реплики данных на точках продаж или смарт-карты