Опубликован: 03.02.2016 | Доступ: свободный | Студентов: 1608 / 339 | Длительность: 07:40:00
Лекция 1:

Актуальное состояние области информационных технологий в части разработки аналитической архитектуры программного обеспечения

Лекция 1: 123 || Лекция 2 >

Обзор практик и стилей создания архитектуры и архитектурного проектирования программных продуктов

Как мы уже определились ранее, основной домен, для которого будут применяться методы и информация, приведенные в данном курсе - это область информационных технологий, а вернее та её часть, которая посвящена разработке программного обеспечения – программная инженерия.

Мы сконцентрируемся на процессах проектирования, но очень важно иметь представление о смежных с ним активностях – это процессы сбора и анализа информации.

Для начала необходимо однозначно и ясно понять:

  • Что требуется для разработки будущего программного продукта?
  • Как имеющийся набор информации преобразовать в программный продукт?

Требования к разрабатываемому программному продукту необходимо зафиксировать настолько полно, насколько это позволяет время, квалификация аналитиков, имеющаяся документация, пожелания стэйкхолдеров и экспертов области, для которой разрабатывается программное обеспечение.

Сделаем небольшое отступление и поясним коллегам, что тема сбора и анализа требований требует отдельного разговора (довольно длительного). В наших планах определена веха по созданию курса по этой тематике, поэтому здесь мы не будем заострять Ваше внимание на данной активности, и вернемся к ней позже. При наличии интереса мы рекомендуем ознакомиться с книгой "классика" данного направления программной инженерии К.Вигерса "Разработка требований к программному обеспечению".

Важность проводимого анализа области решений позволяет лучше понять суть задач, ответы на которые должна предоставить разрабатываемая система. При этом в этих ответах должны быть учтены условия и ограничения процесса, в которых будет применяться программный продукт. Если же достижение результатов затруднительно, тогда необходимо выработать альтернативный способ его получения.

Традиционно, если речь идет о "популярной" области человеческой активности, то для разработки можно найти достаточное количество знаний и информации, но иногда необходимо потратить дополнительные усилия на выработку решений, которые должны быть обоснованы для данного времени и актуальных условий выполнения процессов, с целью достижения заданных результатов.

Как правило, решений несколько. Их различия состоят в характеристиках, которые впоследствии будут определять процессы создания, развития и масштабирования разработанного на их базисе программного обеспечения.

В связи с этим, важно комплексно проанализировать преимущества и недостатки всех разработанных решений и затем выбрать то из них, которое наиболее оптимально для данного проекта/процесса.

После того, как определены способы решения основных поставленных задач с условием специфических ограничений, следующим этапом должен быть выбор принципа организации программного продукта. Он должен позволить синтезировать все определенные ранее решения в единый структурный комплекс информационного продукта.

Вот тут мы подошли к понятию архитектуры программного обеспечения, которая по сути своей и является таким системным комплексом, а процесс её создания – архитектурное проектирование.

Оптимальная архитектура программного продукта должна учитывать не только требования к будущему функционалу системы, что, безусловно, важно, но более критичны требования, касающиеся нефункциональных/качественных аспектов разрабатываемой программы.

В данной области уже накоплен определенный успешный опыт образцов архитектур и архитектурного проектирования, которые объединены в шаблоны проектирования (design patterns).

Каждый из шаблонов (более подробно будут рассмотрены в специальной лекции) представляет собой универсальный свод информации, использование которого предполагает определенную свободу действий в выработке и принятии решений, на которые оказывают достаточно сильное влияние "внешние" факторы.

Архитектурные решения - это соглашения, учитывающие и удовлетворяющие различные точки зрения, "силы", принципы, как технического, так и не технического характера. Подобное равновесие уникально для каждого отдельного случая. Но достигнутый баланс должен быть достаточно устойчивым и долговечным.

В выработку и создание архитектурных шаблонов большой вклад внес другой классик программной инженерии Алистер Коуберн.

В своих работах он представил 15 шаблонов архитектурного проектирования. Специфика состоит в том, что в них преимущественно описываются именно факторы "внешнего" влияния на архитектуры, чем составляющие программной инженерии.

Несмотря на подобное "гуманитарное" содержание его работ, в них приведены 3 стиля применения шаблонов, которые являются общеупотребительными в процессах проектирования:

  • Статическое использование шаблонов:
    • Разработка архитектуры происходит перед началом разработки кода будущего программного продукта. Данный шаблон реализуется от начала и до конца при разработке определенной функциональности программы.
    • При применении этого шаблона используется больше времени и ресурсов на ранних стадиях с тем, чтобы получить экономию при последующем сопровождении и доработке;
  • Эволюционное использование шаблонов;
    • Использование этого шаблона направлено на равномерное распределение ресурсов по стадиям проекта разработки программы. В этом случае уменьшаются "вложения" в начале проекта, что способствуют получению более быстрых начальных результатов в виде функциональности, но требуются дополнительные инвестиции при внедрение шаблона на стадии сопровождения/доработки;
    • Такой подход приводит к тому, что позднее потребуются доработки архитектуры и исправление допущенных ошибок, возникновение которых неминуемо. Этот шаблон подразумевает применение процессов рефакторинга и реинжиниринга при сопровождении и развитии системы.
  • Неиспользование шаблонов:
    • Использование данного шаблона оправдано только для небольшого числа проектов. Например, при работе над старым кодом, в случае крайне ограниченных ресурсов/сроков в сочетании с невысокими требованиями к качеству/сопровождаемости программного продукта.

Выбор стиля использования шаблонов делается на основании политики, организации, имеющихся ресурсов и требований. Он должен утверждаться системным архитектором на основании противоречивых данных о будущем проекта.

Когда же речь заходит о практиках проектирования, то важно определиться с эталонной методологией создания архитектуры программного продукта, в соответствии с которой в дальнейшем будет идти развитие продукта. Методология должна поддерживать создание эталонной, определенной архитектуры программного продукта, соотносящейся с архитектурой организации, в которой планируется его использование. Здесь возникает задача создания моста между архитектурой программного продукта, архитектурным проектированием и архитектурой организации.

В дальнейшем, когда мы будем освещать тему уровней архитектуры мы представим тезис взаимосвязи этих понятий.

Основная сложность в создании такого мостика заключается в необходимости создания централизованной системы реализации бизнес-процессов организации, которая могла бы поддерживать их различное представление. Именно взаимосвязанные представления различного уровня восприятия бизнес–процессов формируют, в конечном итоге, целостную архитектуру, как программного обеспечения, так и программного продукта.

Речь идет не просто о регламентах и эталонных моделях, так и остающихся после создания "на бумаге", а о том, как они будут реализованы в действительности. Между теоретическими документами, описывающими информационные процессы, и их практической реализацией не должно быть "разрыва", как между теорией и практикой.

Документация должна отражать только актуальное состояние архитектурных объектов и процессов разрабатываемого программного продукта.

Потенциальный "разрыв" в осознании актуального состояния архитектуры может привести к недопониманию при передаче информации между пользователями и ИТ-специалистами (аналитиками, архитекторами, разработчиками, тестировщиками). Одно дело, когда речь идет о единичных случаях, но совершенно другая ситуация возникает, когда мы говорим о проектировании и дальнейшем развитии архитектуры информационной системы, разрабатываемой для достижения определенных результатов.

При описании бизнес-процессов, составляющих уровни архитектуры программного продукта, необходимо учесть и отразить такие моменты как:

  • Выполняемые бизнес операции;
  • Структура используемых данных и её составляющие;
  • Прототипы экранных форм;
  • Модульность системы;
  • И т.д.

На этапе выбора основной практики проектирования, применение которой планируется в качестве "базиса", для создания будущей архитектуры, необходимо иметь представление о тех существующих методиках, которые на текущий момент являются эталонными:

  • Модель TOGAF;
  • Модель Захмана;
  • Модель META Group.

Использование рекомендаций, приведенных в образцовых методиках, поможет также (помимо основного их назначения, которое мы рассмотрим отдельно) решить и существующие организационные задачи, порожденные тем, что в большинстве случаев работами по описанию и совершенствованию внутренних бизнес-процессов занимаются одни подразделения (функциональные подразделения, специально созданные отделы совершенствования и качества бизнес-процессов), а реализуют эти требования другие (подразделения информационных технологий и др.).

Часть недопонимания в большинстве случаев "снимается" за счет использования одной группы/семейства нотаций, способных поддерживать преобразования диаграмм и моделей, описывающих домен бизнес понятий и процессов, в конечный продукт (код программ). Выбор набора инструментов, а вернее CASE средств, набирающих популярность, начиная с 90-х годов (Неспроста!), в которых реализована подобная функциональность, должен обеспечить формирование необходимого и достаточного минимума моделей и артефактов. Данные атрибуты процесса архитектурного проектирования должны поддерживать различные уровни архитектуры программного обеспечения, необходимые для её разработки и последующего развития.

Таким образом можно добиться того, что требования к поддержке и развитию информационной системы будут доведены до исполнения в своем первоначальном и истинном смысле, заложенным в него конкретным стэйкхолдером/группой стэйкхолдеров, заинтересованных в достижении конечного результата.

Использование общего информационно-понятийного-инструментального аппарата, применяемого для формирования единой и оптимальной архитектуры программного продукта, может способствовать минимизации информационного разрыва между бизнес составляющей организации и её ИТ подразделениями, но "архитектура" не может быть статичной. Процессы развития и расширения существующей архитектуры предприятия и, в частности, архитектуры процессов с учетом единства используемой методологии описания, должны применяться как бизнес-аналитиками, так и ИТ-специалистами.

Для перехода с этапа описания архитектуры бизнес-процессов к формированию целостной ИТ-архитектуры, требуется дополнительно формализовать следующие предметные области:

  • Архитектура данных;
  • Архитектура приложений;
  • Архитектура технологий.

Архитектура данных, "возведенная" на сущностях, выделенных после анализа первичных данных, должна синтезировать в себе все элементы информации, собранные из описания бизнес процессов.

Для описания архитектуры данных существует признанная и хорошо себя зарекомендовавшая модель описания данных – "сущность-связь" (Entity-Relationship – ER). Диаграмма ER четко структурирует всю информацию, определяя структуру таблиц будущей базы данных. Подобное свойство приводит к однозначному определению будущей структуры данных компании в привязке к существующим и планируемым бизнес процессам.

Следующая стадия – переход от архитектуры бизнес-процессов и данных к созданию архитектуры приложений.

Ключевой задачей этой стадии является определение зависимости между верхнеуровневой архитектурой бизнес-процессов и приложениями, которые посредством своих компонентов и модулей должны обеспечить необходимый уровень автоматизации процессов предприятия. На модели, описывающей данный тип архитектуры, должны быть расположены основные информационные системы, с последующей декомпозицией до уровня прототипов экранных форм, с помощью которых осуществляется взаимодействие с пользователями систем.

Реализация архитектурного ландшафта информационных систем является целиком задачей ИТ – специалистов организации, но важно помнить, что решается она только с помощью (а вернее для ) архитектуры бизнес процессов конкретного предприятия.

Функциональную составляющую, разрабатываемой архитектуры приложений, формируют требования стэйкхолдеров.

В тех случаях, когда для формирования архитектуры необходимо внедрение и использование множества разнородных приложений, поддерживающих конкретные бизнес процессы, уместно говорить о применении "карты поддержки процессов информационными системами". Этот документ позволяет верхнеуровнево представлять и отслеживать весь архитектурный ландшафт организации. О нем более детально мы поговорим чуть позднее.

После этапа создания архитектуры приложений наступает этап реализации архитектуры технологий, которые представляют собой элементы будущей ИТ-инфраструктуры:

  • Серверы, на которых будут размещены базы данных приложений и модули архитектуры, поддерживающие логику вычислений;
  • Сетевые элементы, маршрутизирующие потоки входного/выходного трафика и другие функции;
  • И прочее оборудование, необходимое для поддержки функционирования приложений;

Вот, вкратце то, что будет составлять основной предмет нашего подробного обсуждения на ближайшее время.

Лекция 1: 123 || Лекция 2 >