Открытый семинар для студентов в компании CUSTIS (25 сентября 2014 года).
Лектор: Игорь Беспальчук, руководитель проектов дирекции технологического развития.
(ИУ-8) Программист (Oracle, C#) (2006) Пришёл в CUSTIS (2008) Руководитель проекта для ГК «Спортмастер» (2010) Руководитель отдела технологического развития (2013) Руководитель проектов дирекции по развитию технологий 15/144
проектированием Управление архитектурным проектированием может показаться далекой и чуждой работой Но управлять можно и снизу Важно понимание происходящего 18/144
1960-е: первые соображения (Эдсгер Дейкстра) о необходимости структуризации программ 1969 – вторая конференция Software Engineering, первые упоминания о “software architecture” 21/144
(Парнас) до 1980-x: термин «архитектура» в основном применяется к аппаратной части компьютеров 1984: основан Software Engineering Institute 1990-е: возрождение интереса к теме поздние 1990-е – бум на архитектурные тематики 1996-2000: создание стандарта IEEE 1471 на описание программной архитектуры 23/144
ISO/IEC/IEEE 42010:2011, Systems and software engineering – Architecture description (2010) Состояние дисциплины архитектурного проектирования: «готово к внедрению» 24/144
быть успешным,поэтому… не делайте больших проектов «Мы верим, что нет нужды в больших проектах и любой IT-проект можно разбить на набор маленьких» Совет в целом правильный, но… …иногда при уменьшении проекта полностью теряется его смысл 27/144
отказываться, а научиться? Размер проекта (KSLOC) Оптимальные затраты на АП, % Снижение затрат за счет АП, % 10 5 18 100 20 38 1000 26 63 10000 33 92 29/144
АП представление о зрелости дисциплины и внедрение …методов программной инженерии в целом …методов работы с программной архитектурой Болезни незрелости управления АП Хорошие программисты → плохие системы 30/144
– содержит самые ранние решения» … – это способ координировать умы» … уравновешивает интересы сторон» … играет роль договора с заказчиком» … оказывает влияние на структуру коллектива» 34/144
бывает 150 определений архитектуры Системный подход: В какое целое вещь включена как часть Какую функцию она выполняет Как она устроена (из чего состоит и за счет чего выполняется функция) Архитектура 36/144
которые определяют, что программа должна делать…. Но нужно также определять дизайн, форму; и в рамках этого каркаса разработчик должен создавать что- то… понимая, что архитектор имел в виду» 37/144
взаимодействий, и ограничения на эти элементы, и взаимодействия, необходимые, чтобы обеспечить каркас, в котором будут удовлетворяться требования и который будет служить базой для дизайна. Архитектура = {Элементы, Формы, Объяснения} » 41/144
вопросы за алгоритмами и структурами данных вычислений: общую структуру системы, включая организацию и глобальную систему управления, протоколы коммуникации, синхронизации, доступа к данным; назначение функциональности элементам дизайна; физическое размещение; композицию элементов; масштабирование и производительность; выбор из альтернатив» 43/144
набор утверждений о потребностях интересантов; объяснения, показывающие что компоненты, связи и ограничения определяют систему, которая (если будет реализована) ответит потребностям интересантов» 44/144
Процессы Технологии уровень Дизайн Потребности интересантов Потребности интересантов Целевая система Разные общие структуры Размещение Альтернативы 45/144
концептуальная а. – элементы и связи 2. модульная а. – функциональная и слоевая декомпозиция 3. а. выполнения – динамическая структура 4. а. кода – организация исходников, бинарников и библиотек в окружении разработки» 46/144
уровень Дизайн Потребности интересантов Потребности интересантов Целевая система Разные общие структуры Размещение Альтернативы Декомпозиция Окружение разработки Представления 47/144
структура освещает высокоуровневые проектировочные решения, включая то, как система составлена из взаимодействующих частей, каковы основные способы взаимодействия, и каковы ключевые свойства частей» 48/144
поводу организации системы, набор структурных элементов и их интерфейсов, при помощи которых компонуется система, вместе с их поведением, определяемым во взаимодействии между этими элементами, компоновка элементов в постепенно укрупняющиеся подсистемы, а также стиль архитектуры который направляет эту организацию» 49/144
по поводу структур программы и взаимодействий между этими структурами, которые составляют системы. Проектные решения обеспечивают желаемый набор свойств, которые должна поддерживать система, чтобы быть успешной. Проектные решения предоставляют концептуальную основу для разработки системы, ее поддержки и обслуживания» 50/144
уровень Дизайн Потребности интересантов Потребности интересантов Целевая система Разные общие структуры Размещение Альтернативы Декомпозиция Окружение разработки Представления Проектные решения 51/144
ее окружении, выраженные в ее элементах, отношениях, и принципах их проектирования и развития» «Архитектура и описание архитектуры – разные сущности» 52/144
уровень Дизайн Потребности интересантов Потребности интересантов Целевая система Разные общие структуры Размещение Декомпозиция Окружение разработки Описание Представления Альтернативы Объяснения Фундаментальные проектные решения Концепции Свойства Принципы проектирования фиксация трансляция 53/144
ряд связанных понятий (stakeholder, concern, view, viewpoint, …) Разводит архитектуру и описание Содержит развернутые рекомендации на описание архитектуры 54/144
разделения, ограничения, интересанты, потребности окружение, размещение, управление, интерфейсы, слои, артефакты, технологии, статика и динамика, поведение, свойства, отношения, принципы, стили… То есть самые разнообразные проектные решения Конечно, не все и не любые, а только фундаментальные – об этом далее 59/144
образуют направленный граф (для простоты – «дерево решений») Если изменяется некоторое решение, то придется пересмотреть все решения, которые прямо или косвенно зависят от него Решения ближе к корню дерева менять сложно, решения ближе к листьям менять проще Именно положение в структуре зависимостей определяет пресловутый уровень решения Именно околокорневые (фундаментальные) проектные решения и составляют содержание архитектуры системы 62/144
Распределенный «клиент-сервер» Кросс-платформенный «клиент» Нужна работа с оборудованием «Клиент» пишем на Java Для UI используем JavaFX Нужна работа с оборудованием «Клиент» делаем под Web Для UI используем JavaFX Гарантируется интернет-доступ Файловый и почтовый обмен Кросс-платформенный «клиент» «Клиент» делаем под Web Для UI используем JavaFX 63/144
Джонсон, 2003: «Архитектура – это все важные решения... Важные решения – это те, по которым эксперт сказал, что они важные» «Нет теоретических причин к тому, чтобы какие-то решения в софте было тяжело менять, как в строительстве» 65/144
Устройство системы (прозрачный ящик) Окружение целевой системы (надсистема) Производство (обеспечивающая система) Производство Окружение Устройство Свойства 67/144
быть структура Ральф Джонсон: «Мы очень легко можем сделать любой аспект ПО гибким. И это не сложно. Но мы не можем сделать ПО гибкими во всех аспектах. Это породит сложность, а сложность трудноизменяема» 72/144
решений (ISO) Вся современная инженерия моделеориентирована Но не все модели одинаково полезны Детализация Вид модели Уровень абстракции Некоторые решения плохо выражаются классическими box-and-line моделями (ограничения, принципы) 73/144
конкретные решения Показывать, что они фундаментальны для устройства И этим обосновывать, что решение входит в архитектуру (и что из этого следует) Находить подходящие модели и тексты для наилучшего выражения решений Конец архитектурной алхимии 79/144
последнюю очередь Но протяжка проводов и установка розеток зависит от положения мебели Базовая абстракция – функциональные зоны Строительство загородного дома no comments… 93/144
Они могут не относиться к структуре, структура может быть гибкой Они могут плохо выражаться с помощью структурных (box-and-line) моделей Они могут относиться не к устройству, а к употреблению или производству Они не выражаются самой системой («кодом») явно Ищите примеры архитектур вокруг себя 94/144
Проявить предмет! Ответственность – не важно, на ком, но должна быть! Ориентация на назначение и качество на ПЖЦ, (а значит – требуется аналитика качества и стратегии развития надсистем)! Вплетена в интерактивный цикл детального проектирования Своевременный пересмотр 106/144
– не выражена явно Кто-то придумал, остальные постоянно «реверсируют» (с переменным успехом), ответственность потеряна Обсуждение невозможно, т. к. предмет отсутствует (даже когда есть объект – А.) 113/144
на «внутреннее» качество Не бывает «внутреннего качества»! т. е. такого, которое не обеспечивает внешнее, может быть на долгом периоде Само требуемое качество (как краткосрочное, так и долгосрочное) тоже нуждается в анализе, и фиксации Здесь же: мода, авангардизм 121/144
возьмем для новой системы её» Б) «Архитектуру системы мы сделали три года назад, и теперь менять в ней ничего нельзя» Фрэнк Ллойд Райт: «Забудьте обо всех архитектурах мира, если не понимаете того, что они были хороши в своём роде и в своё время» 134/144
вашим проектом. Архитектура в любом случае будет влиять. И никогда не будет гибкой. Сделайте ее инструментом управления Для этого – объективируйте предмет, возложите ответственность, обеспечьте полномочиями и ресурсами. Направляйте на цель (анализ) Утвердите и держите в голове понятие: 20% фундаментальных решений, которые потом не пересмотришь, но на которых стоит все остальное. Из понятия все остальное следует 140/144
ISO 42010 http://www.iso-architecture.org/ieee-1471/index.html L. Bass, et al. «Software Architecture in Practice» P. Clements, et al. «Documenting Software Architectures: Views and Beyond» Блог А. Левенчука http://ailev.ru Мартин Фаулер «Who Needs an Architect?» Филипп Кратчен «Common Misconceptions about Software Architecture» CHAOS manifesto 2013 Девид Гарлан «Software Architecture: a Roadmap» D. Dikel «Software Architecture: Organizational Principles and Patterns» P. Eeles «Что такое архитектура программного обеспечения?» Определения архитектуры на сайте SEI B. Boehm «The ROI of System Engineering» Ф. Брукс «Проектирование процесса проектирования» Geek & Poke 141/144