Проектирование программных продуктов
Актуальность темы "шаблонного" проектирования
Современный мир сложно представить себе без мобильного или стационарного девайса. Они созданы для облегчения каждодневных, операционных и других потребностей отдельных людей или определенных сообществ и групп.
Сами по себе девайсы – не более чем куски высококачественного пластика с добавлением металлических элементов. Но вот их "начинка" во многом является тем преимуществом, которое позволяет им выйти в лидеры профильных рынков или занять свою коммерческую нишу.
Почему же вопросы применения эффективных шаблонов проектирования при последующей разработке программных продуктов становятся особенно актуальны именно сейчас?
Объяснение может основываться на целой совокупности факторов, основные из которых связаны с:
- происходящими изменениями в самом бизнесе и обществе;
- изменением роли информационных технологий;
- изменением корпоративной культуры и сменой парадигмы стиля управления.
По результатам опроса руководителей информационных служб было получено представлений о наиболее существенном изменении роли информационных технологий для бизнеса.
Создание "более совершенных" процессов стоит на первом месте и получило специальное название "слияние бизнес-процессов". Фактически в результате такого слияния осуществляется преобразование бизнеса с помощью объединения ранее существовавших автономных процессов (например, поставка, сбыт, управление клиентами) на основе интенсивного использования возможностей IT.Однако именно существующие информационные системы, наряду с корпоративной культурой, являются одним из важнейших ограничений на пути таких преобразований – часто из-за ошибок, допущенных при их проектировании и последующей эксплуатации.
К числу характерных изменений бизнеса, которые оказывают существенное влияние на использование информационных технологий, относятся:
- глобализация бизнеса, связанная с необходимостью объединения различных данных;
- динамика слияний и поглощений, приводящая к объективно необходимой интеграции различных информационных систем;
- развитие адаптивного стиля бизнеса – переход к модели, основанной на гибком реагировании на потребности рынка. Этот стиль связан с признанием неизбежности и непредсказуемости изменений во внешней среде. Компании, принявшие такую модель, связывают достижение успеха с осуществлением таких преобразований в бизнес-процессах и организационной структуре, которые могли бы оперативно и адекватно подстраиваться под происходящие изменения;
- сокращение характерных длительностей бизнес-процессов и последующая виртуализация бизнеса.
Последний фактор нуждается в более подробном рассмотрении. Сейчас активно обсуждаются такие понятия, как "Интернет вещей", "цифровая трансформация бизнеса".
Под ними понимается способность и возможность к реализации бизнес-инициатив с широким использованием интеграции между сотрудниками отдельно взятого предприятия, клиентами, партнерами, материальными объектами, задействованными в формировании результата деятельности организации.
На практике фактически это означает следование следующим основным принципам:
- Концентрация на основных компетенциях.
- Максимально возможная передача непрофильной деятельности внешним поставщикам услуг (аутсорсинг).
- Систематическая разработка и реализация инноваций.
- Расширение полномочий нижестоящих менеджеров – иерархическая структура управления "раздается вширь".
- Активность в образовании альянсов, в том числе частичное сотрудничество с конкурентами.
- Максимальное использование опыта и способностей всех сотрудников.
Современные условия осуществления бизнеса характеризуются существенным сокращением времени выполнения всех процессов. Операции должны занимать секунды вместо дней, сроки жизни продуктов снижаются с десятилетий до десятков месяцев, преобразования в организациях становятся все более частыми и реализуются в течение нескольких месяцев вместо нескольких лет, требовавшихся ранее.
Изменения в окружающей бизнес-среде все чаще происходят за более короткие промежутки времени, чем организация способна отреагировать. Это и является причиной того, что время, требующееся для перехода на новые бизнес-процессы и для реализации бизнес-стратегии, является новым "узким местом".
С другой стороны, при планировании инвестиций в IT критичным становится факт существенного сокращения характерного времени изменения для бизнес-процессов и организационной структуры компании – с 10 лет до порядка 3 лет, с перспективой дальнейшего сокращения до полутора-двух лет. В связи с этим наблюдается очевидное несоответствие между временными рамками краткосрочного планирования IT в рамках годовых бюджетов и реализацией крупных IT-проектов – таких как внедрение ERP-систем, требующее 2–3 лет.
Понятие "Предприятие реального времени" (RTE – RealTimeEnterprise) было предложено для отражения стиля осуществления бизнеса, когда "актуальная на каждый момент времени информация о критичных для бизнеса процессах используется для получения конкурентных преимуществ за счет постоянного сокращения задержек в управлении". Само это определение не содержит никакого упоминания об информационных технологиях, так как характеризует прежде всего основную деятельность компании. Однако нет сомнения в том, что достижение данной цели возможно только на основе широкого использования IT.
На сегодня организации столкнулись с увеличением количества данных реального времени, используемых для управления компаниями, т.е. данных о деятельности организации, получаемых с запаздыванием всего в несколько часов. Акцентируем внимание на том, что речь идет о управлении предприятия в целом (продажи, доставка, склад, управление и т.д.), а не об управлении отдельными процессами.
Основной критический фактор для обеспечения функциональности предприятия реального времени будет связан с оперативным развитием коммуникационных возможностей. Это потребует как революционных изменений в одних подсистемах, например широкого внедрения беспроводных технологий или обеспечения изменения пропускной способности по запросу, так и существенного увеличения пропускной способности или качества традиционно используемых каналов связи. Другими важными технологиями в свете развития такого стиля ведения бизнеса будут являться электронный документооборот, взаимодействие и обмен сообщениями в реальном времени, системы позиционирования/слежения за объектами по меткам, хранилища данных реального времени и т.п. Ведущие производители аппаратного и программного обеспечения, такие как Microsoft, IBM, Oracle, выступили в последнее время со стратегическими инициативами, направленными на поддержку новых стилей ведения бизнеса, включая RTE. Концепция предприятия реального времени базируется на интеграции практически всего, что связано с деятельностью организации:
- инфраструктуры;
- систем;
- информации;
- процессов;
- людей.
Основой этого являются информационные технологии, в более широком смысле – архитектура предприятия в целом.
Другое важное следствие – предпосылки к реализации сервис-ориентированной архитектуры (SOA). Суть этого понятия составляет все более модульная реализация прикладных систем и доступность отдельных функций, реализуемых этими системами, в виде сервисов (услуг) для других информационных систем. Технологической основой такого взаимодействия между системами по принципу предоставления друг другу услуг является технология web-сервисов, влияние которой на будущую архитектуру IT предприятий можно сравнить разве что с влиянием Интернета на мировые коммуникации.
Успешная реализация этих принципов основана на широком использовании возможностей и средств информационных систем организации. Критическим условием для обеспечения работы информационных систем является определенный уровень развития IT-архитектуры. В противном случае цели бизнеса просто не будут достигнуты из-за ограничений в технологии и несовместимости между информационными системами разных участников процесса.
Вначале фокус применения IT был связан с "кусочной" автоматизацией отдельных наиболее понятных или же выгодных в ближайшей перспективе операций. При этом основной эффект достигался за счет сокращения времени или стоимости выполнения существующих функций. Сейчас же на первый план выходит возможность изменения самого бизнеса или деловых процессов организации за счет внедрения соответствующих сервисов или продуктов.
На сегодня существует множество разнообразных способов и подходов к реализации качественного программного обеспечения, способного оправдатьлюбые, самые смелые ожидания. Трудно выделить какой-то единый фактор, который будет являться определяющим на пути достижения конечного успешного результата от внедрения и эксплуатации программного обеспечения. При этом существуют характеристики, которые вносят весомый вклад в создание успешных информационных систем настоящего и будущего:
- Возможность модификации. Гибкость.
- Сопровождаемость.
- Соответствие определенным требованиям.
- Простота освоения.
Часть этих факторов –взаимозависимые и оказывают влияние на другие характеристики разрабатываемого программного обеспечения. Некоторые из них на данном этапе развития сферы информационных технологий являются фундаментальными. Основным фактором, по ряду параметров, является гибкость, которая обеспечивает надежность и качество разрабатываемого программного обеспечения. По определению, ненадежность и низкий уровень качества разработки препятствует ее гибкости и уменьшает ее. Создаваемая архитектура, которая в последующем будет препятствовать внесению необходимых изменений, в итоге сведет на нет и отработанный процесс разработки, и качественную архитектуру. Данный постулат предопределяет важность формирования адекватной целевой архитектуры и необходимость отражения в ней тех характеристик, которые критичны для конкретного программного продукта. Откуда же появляется "оптимальная" архитектура?
Архитектура – это проявление человеческих знаний.
Разработка программного обеспечения – наукоемкий труд, который влечет за собой процесс обучения: обучения методологиям, пониманию желаний заказчика, общению с разработчиками требований к продуктам, наиболее эффективным способам разработки решений (от практических методик до подбора вариантов), а также совместной работе.
Наиболее важным и значимым этапом в создании архитектуры программных продуктов является стадия проектирования, которая является началом пути любой разработки. Учитывая этот факт, будет неразумно и безответственно заранее принимать все самые важные решения касательно развития информационной системы. С другой стороны, при завершении проекта мы получаем наибольшее количество знаний, но и наименьшую возможность применения их на практике, так как продукт, по сути, уже разработан.
От процесса архитектуре нужно временное "пространство" и время на обучение, что само по себе не приемлет спешки в начале работы. Ни в коем случае нельзя рассматривать процесс как готовый продукт в самом начале его создания.
Понимание наиболее правильных и оптимальных решений, как правило, приходит во время попыток классифицировать наиболее значимые факторы и рассуждать о них.
То, что вы можете построить, находится в прямой зависимости от того, как вы будете это строить; а то, как вы будете это строить, напрямую зависит от специфических конструктивных особенностей и ограничивается ими. Эта тесная взаимосвязь между архитектурой и процессом означает, что разработчики архитектуры должны мыслить за пределами технологий. В связи с этим значимость шаблонов проектирования, эффективность которых проверена на большом временном интервале и большом количестве разработанных систем, только повышается. Шаблоны проектирования не говорят о том, как надо развивать продукт, –они задают рамки, очерченные определенными потребностями, в которых становится возможным развить продукт в соответствии с заложенными в него ожиданиями и потребностями пользователей. Применение шаблонов проектирования позволит создать гибкие и надежные продукты, которые могут стать базисом последующего инновационного и успешного развития любой компании.
Применение шаблонов проектирования – это достаточно важный выбор не столько специалистов в области анализа или разработки программных продуктов, сколько руководства, которое должно отдавать себе отчет в том, что использование паттернов задает определенный уровень сложности, который должны поддерживать и развивать специалисты. В награду за это компания получит продукт, который сможет быстро реагировать на изменяющиеся внутренние и внешние условия функционирования предприятия и приносить этим прибыль организации.