143
25 сентября 2014 г. Архитектура ПО Управляя самым важным Игорь Беспальчук Руководитель проектов дирекции по развитию технологий

Архитектура ПО: управляя самым важным

  • Upload
    custis

  • View
    319

  • Download
    2

Embed Size (px)

DESCRIPTION

Открытый семинар для студентов в компании custis (25 сентября 2014). Лектор: Игорь Беспальчук, руководитель проектов дирекции технологического развития. Из этого семинара вы узнаете о проблемах определения и критериях значимости качественной архитектуры в IT. Видеозапись семинара: https://vimeo.com/107810012

Citation preview

Page 1: Архитектура ПО: управляя самым важным

25 сентября 2014 г.

Архитектура ПОУправляя самым важным

Игорь БеспальчукРуководитель проектов

дирекции по развитию технологий

Page 2: Архитектура ПО: управляя самым важным

Про компанию CUSTIS

2/144

Page 3: Архитектура ПО: управляя самым важным

Наша компания занимается:

проектированием,

3/144

Page 4: Архитектура ПО: управляя самым важным

Наша компания занимается:

…разработкой,

4/144

Page 5: Архитектура ПО: управляя самым важным

Наша компания занимается:

…внедрением,

5/144

Page 6: Архитектура ПО: управляя самым важным

Наша компания занимается:

…сопровождением,

6/144

Page 7: Архитектура ПО: управляя самым важным

Наша компания занимается:

…развитием

7/144

Page 8: Архитектура ПО: управляя самым важным

Наша компания занимается:

проектированием, разработкой, внедрением, сопровождением, развитием…

…заказных информационных системна полном жизненном цикле

t

8/144

Page 9: Архитектура ПО: управляя самым важным

Для

БанковТорговых сетей

Госкорпораций Предприятий ЖКХ

БОЛЬШИЕ

учетные системы

9/144

Page 10: Архитектура ПО: управляя самым важным

Структура компании

>200

10/144

Page 11: Архитектура ПО: управляя самым важным

Профессиональная инфраструктура

26%

11/144

Page 12: Архитектура ПО: управляя самым важным

Отличники

20%

12/144

Page 13: Архитектура ПО: управляя самым важным

Мальчики и девочки

30%

13/144

Page 14: Архитектура ПО: управляя самым важным

Про себя

14/144

Page 15: Архитектура ПО: управляя самым важным

Игорь Беспальчук

(2001) Окончил МГТУ им. Н. Э. Баумана (ИУ-8)

Программист (Oracle, C#) (2006) Пришёл в CUSTIS (2008) Руководитель проекта

для ГК «Спортмастер» (2010) Руководитель отдела

технологического развития (2013) Руководитель проектов

дирекции по развитию технологий

15/144

Page 16: Архитектура ПО: управляя самым важным

Моя работа в компании сегодня

Становление и совершенствование

Управление проектированием

Архитектурное проектирование

Архитектор

Управленец

16/144

Page 17: Архитектура ПО: управляя самым важным

Преамбула про управление

17/144

Page 18: Архитектура ПО: управляя самым важным

Суета вокруг архитектуры

Проблематика – в области управления архитектурным проектированием

Управление архитектурным проектированием

может показаться далекой и чуждой работой

Но управлять можно и снизу 

Важно понимание происходящего

18/144

Page 19: Архитектура ПО: управляя самым важным

План

1. Прошлое и настоящее, теория и практика

2. Проблематика управления

3. Понятие архитектуры

4. Принципы управления

5. Паттерны и анти-паттерны

19/144

Page 20: Архитектура ПО: управляя самым важным

Краткая история дисциплины“Software Architecture”

20/144

Page 21: Архитектура ПО: управляя самым важным

История дисциплины (1)

1950-е: появление множества языков программирования

1960-е: первые соображения (Эдсгер Дейкстра) о необходимости структуризации программ

1969 – вторая конференция Software Engineering, первые упоминания о “software architecture”

21/144

Page 22: Архитектура ПО: управляя самым важным

Ian P. Sharp, 1969

«Есть некое дополнение к программированию, и его надо вытащить на свет. Это программная архитектура. Архитектура и проектирование – не одно и то же»

22/144

Page 23: Архитектура ПО: управляя самым важным

История дисциплины (2)

1970-е: концепции модульности и сокрытия информации (Парнас)

до 1980-x: термин «архитектура» в основном применяется к аппаратной части компьютеров

1984: основан Software Engineering Institute

1990-е: возрождение интереса к теме

поздние 1990-е – бум на архитектурные тематики

1996-2000: создание стандарта IEEE 1471 на описание программной архитектуры

23/144

Page 24: Архитектура ПО: управляя самым важным

История дисциплины (3)

Слияние с движением системной инженерии

ISO/IEC/IEEE 42010:2011, Systems and software engineering – Architecture description

(2010) Состояние дисциплины архитектурного проектирования: «готово к внедрению»

24/144

Page 25: Архитектура ПО: управляя самым важным

От теории к практике

«Кто переходит к практике без теории, подобен моряку, плывущему на корабле без руля и компаса, и не ведающему, где он может оказаться»

25/144

Page 26: Архитектура ПО: управляя самым важным

The Standish Group Inc., «CHAOS manifesto-2013»

Печальная статистика

26/144

Page 27: Архитектура ПО: управляя самым важным

Совет Standish Group

Для больших проектов – нет шансов быть успешным,поэтому…

не делайте больших проектов

«Мы верим, что нет нужды в больших проектах и любой IT-проект можно разбить на набор маленьких»

Совет в целом правильный, но…

…иногда при уменьшении проектаполностью теряется его смысл

27/144

Page 28: Архитектура ПО: управляя самым важным

28/144

Page 29: Архитектура ПО: управляя самым важным

B. Boehm, 2008The ROI of System Engineering

Не отказываться, а научиться?

Размер проекта(KSLOC)

Оптимальные затраты на АП, %

Снижение затрат за счет АП, %

10 5 18

100 20 38

1000 26 63

10000 33 92

29/144

Page 30: Архитектура ПО: управляя самым важным

Внутри больших проектов

У управленцев запаздывает:

понимание важности АП

представление о зрелости дисциплины

и внедрение

…методов программной инженерии в целом

…методов работы с программной архитектурой

Болезни незрелости управления АП

Хорошие программисты → плохие системы

30/144

Page 31: Архитектура ПО: управляя самым важным

«Архитектурная алхимия»

31/144

Page 32: Архитектура ПО: управляя самым важным

В чем затруднения практиков?

Обычное отставание

Сложность предмета архитектуры

Мистификация на почве непонимания

Неосведомленность о продвижениях дисциплины

Неготовность учиться

32/144

Page 33: Архитектура ПО: управляя самым важным

Ключевое затруднение

Без понимания предмета управление невозможно

Об архитектуре говорят повсеместно, но объяснить не могут

Картинки зданий – «вот, это архитектура»

33/144

Page 34: Архитектура ПО: управляя самым важным

«Архитектура…

… – это все, что важно»

… – содержит самые ранние решения»

… – это способ координировать умы»

… уравновешивает интересы сторон»

… играет роль договора с заказчиком»

… оказывает влияние на структуру коллектива»

34/144

Page 35: Архитектура ПО: управляя самым важным

Эволюция представлений о программной архитектуре

35/144

Page 36: Архитектура ПО: управляя самым важным

Понятие и определение

Для сложных понятий хороших определений не бывает

150 определенийархитектуры

Системный подход:

В какое целое вещь включена как часть

Какую функцию она выполняет

Как она устроена (из чего состоит и за счет чего выполняется функция)

Архитектура

36/144

Page 37: Архитектура ПО: управляя самым важным

Ian P. Sharp, 1968

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

37/144

Page 38: Архитектура ПО: управляя самым важным

Lane, 1990

«Архитектура включает разделение функций между модулями, средства связи между модулями, и представление разделяемых данных»

38/144

Page 39: Архитектура ПО: управляя самым важным

Дизайн

Архитектура

СвязиМодули

Представления данных

каркас

39/144

Page 40: Архитектура ПО: управляя самым важным

Royce, 1991

«Архитектура – связующее звено между технологиями и процессами»

40/144

Page 41: Архитектура ПО: управляя самым важным

Dewayne Perry, Alexander Wolf, 1992

«Архитектура определяет выбор элементов, их взаимодействий, и ограничения на эти элементы, и взаимодействия, необходимые, чтобы обеспечить каркас, в котором будут удовлетворяться требования и который будет служить базой для дизайна. Архитектура =

{Элементы, Формы, Объяснения} »

41/144

Page 42: Архитектура ПО: управляя самым важным

Технологии

ДизайнСвязи

МодулиПредставления данных

Процессы

Взаимодействия каркас

Объяснения

Элементы

Ограничения

42/144

Page 43: Архитектура ПО: управляя самым важным

David Garlan, Mary Shaw, 1993

«Архитектура – уровень дизайна, определяющий вопросы за алгоритмами и структурами данных вычислений: общую структуру системы, включая организацию и глобальную систему управления, протоколы коммуникации, синхронизации, доступа к данным; назначение функциональности элементам дизайна; физическое размещение; композицию элементов; масштабирование и производительность; выбор из альтернатив»

43/144

Page 44: Архитектура ПО: управляя самым важным

Barry Boehm, 1995

«Архитектура включает: набор компонентов, связей и ограничений; набор утверждений о потребностях интересантов; объяснения, показывающие что компоненты, связи и ограничения определяют систему, которая (если будет реализована) ответит потребностям интересантов»

44/144

Page 45: Архитектура ПО: управляя самым важным

Low Level (LL)

дизайн

Связи

каркас

Объяснения

Элементы

Ограничения

Взаимодействия

Процессы

Технологии

уровень

Дизайн

Потребности

интересантов

Потребности интересанто

в

Целевая система

Разные общие структуры

Размещение

Альтернативы

45/144

Page 46: Архитектура ПО: управляя самым важным

Soni, Nord, and Hofmeister, 1995

«Архитектура включает четыре представления:1. концептуальная а. – элементы и связи2. модульная а. – функциональная и слоевая декомпозиция3. а. выполнения – динамическая структура 4. а. кода – организация исходников, бинарников и библиотек в окружении разработки»

46/144

Page 47: Архитектура ПО: управляя самым важным

LL-дизайн

Связи

каркас

Объяснения

Элементы

Ограничения

Взаимодействия

Процессы

Технологии

уровень

Дизайн

Потребности

интересантов

Потребности интересанто

в

Целевая система

Разные общие структуры

Размещение

Альтернативы

Декомпозиция

Окружение разработкиПредставлен

ия

47/144

Page 48: Архитектура ПО: управляя самым важным

David Garlan, 2000

«Архитектура описывает структуру системы в крупном. Эта структура освещает высокоуровневые проектировочные решения, включая то, как система составлена из взаимодействующих частей, каковы основные способы взаимодействия, и каковы ключевые свойства частей»

48/144

Page 49: Архитектура ПО: управляя самым важным

Philippe Kruchten, 2003

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

49/144

Page 50: Архитектура ПО: управляя самым важным

James McGovern, 2004

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

50/144

Page 51: Архитектура ПО: управляя самым важным

LL-дизайн

Связи

каркас

Объяснения

Элементы

Ограничения

Взаимодействия

Процессы

Технологии

уровень

Дизайн

Потребности

интересантов

Потребности интересанто

в

Целевая система

Разные общие структуры

Размещение

Альтернативы

Декомпозиция

Окружение разработкиПредставлен

ия

Проектные решения

51/144

Page 52: Архитектура ПО: управляя самым важным

ISO 42010

«Архитектура – фундаментальные концепции или свойства системы в ее окружении, выраженные в ее элементах, отношениях, и принципах их проектирования и развития»

«Архитектура и описание архитектуры – разные сущности»

52/144

Page 53: Архитектура ПО: управляя самым важным

Окружение

LL-дизайн

Связи

каркас

Элементы

Ограничения

Взаимодействия

Процессы

Технологии

уровень

Дизайн

Потребности

интересантов

Потребности интересанто

в

Целевая система

Разные общие структуры

Размещение Декомпозиц

ияОкружение разработки

Описание

Представления

Альтернативы

Объяснения Фундаментальные

проектные решенияКонцепци

иСвойства

Принципы проектирования

фиксациятрансляция

53/144

Page 54: Архитектура ПО: управляя самым важным

Стандарт ISO 42010

Дает приемлемое определение

И вводит ряд связанных понятий(stakeholder, concern, view, viewpoint, …)

Разводит архитектуру и описание

Содержит развернутые рекомендации на описание архитектуры

54/144

Page 55: Архитектура ПО: управляя самым важным

55/144

Page 56: Архитектура ПО: управляя самым важным

56/144

Page 57: Архитектура ПО: управляя самым важным

Стандарт ISO 42010

Очень ценен для задач документирования

Для задач управления – недостаточно

Нужно разобраться с тем, что такое «фундаментальные решения»и как они должны приниматься

57/144

Page 58: Архитектура ПО: управляя самым важным

Наводим резкость

58/144

Page 59: Архитектура ПО: управляя самым важным

Содержание архитектуры

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

То есть самые разнообразные проектные решения

Конечно, не все и не любые, а только фундаментальные – об этом далее

59/144

Page 60: Архитектура ПО: управляя самым важным

Зависимость проектных решений

Решение А зависит от решения B,если A имеет смысл или целесообразно только в том случае, когда принято и актуально решение B

B

A

60/144

Page 61: Архитектура ПО: управляя самым важным

Система транспортной логистики

Пример

Склады в 100 городахГарантируется интернет-

доступ

Распределенный «клиент-сервер»

Кросс-платформенный «клиент»

Нужна работа с оборудованием

«Клиент» пишем на Java

Для UI используем JavaFX

61/144

Page 62: Архитектура ПО: управляя самым важным

Главное про зависимость решений

Зависимости не бывают цикличны, решения образуют направленный граф(для простоты – «дерево решений»)

Если изменяется некоторое решение,то придется пересмотреть все решения, которые прямо или косвенно зависят от него

Решения ближе к корню дерева менять сложно,решения ближе к листьям менять проще

Именно положение в структуре зависимостейопределяет пресловутый уровень решения

Именно околокорневые (фундаментальные) проектные решенияи составляют содержание архитектуры системы

62/144

Page 63: Архитектура ПО: управляя самым важным

Пример Система транспортной логистики

Склады в 100 городахГарантируется интернет-

доступ

Распределенный «клиент-сервер»

Кросс-платформенный «клиент»

Нужна работа с оборудованием

«Клиент» пишем на Java

Для UI используем JavaFX

Нужна работа с оборудованием

«Клиент» делаем под Web

Для UI используем JavaFX

Гарантируется интернет-доступ

Файловый и почтовый обмен

Кросс-платформенный «клиент»

«Клиент» делаем под Web

Для UI используем JavaFX

63/144

Page 64: Архитектура ПО: управляя самым важным

Фундаментальные проектные решения

Детальные проектные решения

Дизайн

Архитектура

LL-дизайн

Связи

Элементы

Ограничения

Взаимодействия

Размещение

64/144

Page 65: Архитектура ПО: управляя самым важным

О чем недоговаривают эксперты

Мартин Фаулер, 2003:

Ральф Джонсон, 2003:

«Архитектура – это все важные решения... Важные решения – это те, по которым эксперт сказал, что они важные»

«Нет теоретических причин к тому, чтобы какие-то решения в софте было тяжело менять, как в строительстве»

65/144

Page 66: Архитектура ПО: управляя самым важным

Некоторые следствия

66/144

Page 67: Архитектура ПО: управляя самым важным

Области проектных решений

Свойства целевой системы (черный ящик)

Устройство системы (прозрачный ящик)

Окружение целевой системы (надсистема)

Производство (обеспечивающая система)

Производство Окружение

Устройство Свойства

67/144

Page 68: Архитектура ПО: управляя самым важным

А. Левенчук, 2014

«Архитектура – это те 20% решений (относительно как требований, так и устройства), которые определяют остальные 80% устройства»

68/144

Page 69: Архитектура ПО: управляя самым важным

Области проектных решений

В архитектуру могут входить решения не только об устройстве

Если они существенно влияют на устройство

Производство Окружение

Устройство

Свойства

А

LLD

69/144

Page 70: Архитектура ПО: управляя самым важным

Граница архитектуры

Граница «архитектура–дизайн» определяется «мерой существенности» («фундаментальности»), проектных решений

То есть граница относительна

70/144

Page 71: Архитектура ПО: управляя самым важным

Архитектура

LL-дизайн

71/144

Page 72: Архитектура ПО: управляя самым важным

Гибкая архитектура

Не бывает

Гибкой (легко изменяемой) может быть структура

Ральф Джонсон:

«Мы очень легко можем сделать любой аспект ПО гибким. И это не сложно. Но мы не можем сделать ПО гибкими во всех аспектах. Это породит сложность, а сложность трудноизменяема»

72/144

Page 73: Архитектура ПО: управляя самым важным

Модели в архитектуре

Основная форма представления и описания проектных решений (ISO)

Вся современная инженерия моделеориентирована

Но не все модели одинаково полезны Детализация

Вид модели

Уровень абстракции

Некоторые решения плохо выражаются классическими box-and-line моделями(ограничения, принципы)

73/144

Page 74: Архитектура ПО: управляя самым важным

74/144

Page 75: Архитектура ПО: управляя самым важным

75/144

Page 76: Архитектура ПО: управляя самым важным

76/144

Page 77: Архитектура ПО: управляя самым важным

АС

Генерация данных журналов

Сохранение данных журналов

Файлы на локальных

дисках

Журналы в БД

Интерфейсы доступа к журналам

первичная запись

Хранилищежурналов архивирование

чтение

Запрос данных

Запись данных

77/144

Page 78: Архитектура ПО: управляя самым важным

Даты событий

Журналы в исходной БД(фиксированный объем)

Журналы в хранилище

Перенос данных

Удаление данных

Создание новых

данных

Оперативный и отчетный контурАналитический и архивный контур

78/144

Page 79: Архитектура ПО: управляя самым важным

Результат прояснения

Про архитектуру можно разговаривать предметно! Выделять конкретные решения

Показывать, что они фундаментальны для устройства

И этим обосновывать, что решение входит в архитектуру (и что из этого следует)

Находить подходящие модели и тексты для наилучшего выражения решений

Конец архитектурной алхимии

79/144

Page 80: Архитектура ПО: управляя самым важным

Что остается неясным?

Архитектура

Дизайн

Технологии

Процессы

Описание

? ?

?

80/144

Page 81: Архитектура ПО: управляя самым важным

Перерыв

81/144

Page 82: Архитектура ПО: управляя самым важным

Примеры архитектурных решений

82/144

Page 83: Архитектура ПО: управляя самым важным

83/144

Page 84: Архитектура ПО: управляя самым важным

84/144

Page 85: Архитектура ПО: управляя самым важным

85/144

Page 86: Архитектура ПО: управляя самым важным

Арочный свод

86/144

Page 87: Архитектура ПО: управляя самым важным

87/144

Page 88: Архитектура ПО: управляя самым важным

Интернет

Из чего состоит архитектура интернета?

Элементы, соединения и топология практически произвольны

Ключевые решения собраны в стеке протоколов TCP/IP

Структура гибка (произвольна),архитектура – нет!

88/144

Page 89: Архитектура ПО: управляя самым важным

Процессор

Фредерик Брукс:

«Архитектура процессора – это его система команд»

89/144

Page 90: Архитектура ПО: управляя самым важным

Hadoop

В основе – модель вычисленийMapReduce

90/144

Page 91: Архитектура ПО: управляя самым важным

91/144

Page 92: Архитектура ПО: управляя самым важным

Стратегия

Например, военная

Стратегия – архитектура действия

Архитектура – стратегия проектирования

92/144

Page 93: Архитектура ПО: управляя самым важным

Личные примеры каждого

Ремонт квартиры

Мебель ставят в последнюю очередь

Но протяжка проводов и установка розеток зависит от положения мебели

Базовая абстракция – функциональные зоны

Строительство загородного дома

no comments…

93/144

Page 94: Архитектура ПО: управляя самым важным

Резюме по примерам

Архитектурные решения не всегда реализуются раньше

Они могут не относиться к структуре, структура может быть гибкой

Они могут плохо выражаться с помощью структурных (box-and-line) моделей

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

Они не выражаются самой системой («кодом») явно

Ищите примеры архитектур вокруг себя94/144

Page 95: Архитектура ПО: управляя самым важным

Принципы управления архитектурным проектированием

95/144

Page 96: Архитектура ПО: управляя самым важным

Что остается неясным?

Архитектура

Дизайн

Описание

? ?

?

96/144

Page 97: Архитектура ПО: управляя самым важным

Надсистема архитектуры

Архитектура не «внутри» целевой системы

Архитектура – внутри производственной системы

Производство Окружение

А

Устройство

Свойства

97/144

Page 98: Архитектура ПО: управляя самым важным

Архитектура

Дизайн

Описание

? ?

?

Производственная (обеспечивающая) система

Целевая система

создает, развивает

организует, управляет

98/144

Page 99: Архитектура ПО: управляя самым важным

Функция архитектуры

Естественные свойства

негибкость

подчинение детальных решений

Отсюда – функция:направлять детальное проектирование

Стратегия проектирования

99/144

Page 100: Архитектура ПО: управляя самым важным

Цели архитектуры

Назначение системы

Атрибуты качества

Ограничения (включая $ и t)

Свойства окружения

Не требования!

100/144

Page 101: Архитектура ПО: управляя самым важным

Принцип отражения

(Успешная) система отражает свойства среды

101/144

Page 102: Архитектура ПО: управляя самым важным

Анализ надсистемы

Назначение и качество тоже меняются на жизненном цикле, но медленно и закономерно

Нужно пониматьдинамику развития,надсистемы(окружение и производство)

102/144

Page 103: Архитектура ПО: управляя самым важным

Ответственность за архитектуру

Архитектор или команда?

НЕ ИМЕЕТ ЗНАЧЕНИЯ!

До тех пор, пока ответственностьне лежит ни на коми архитектуры неткак механизмауправленияв производстве

103/144

Page 104: Архитектура ПО: управляя самым важным

Окружение

Целевая системаПланирование

Ограничения

($, t, HR, …)

bin

Проектирование

LL-дизайн

Архитектура

Анализ

Потребности

Назначение

Качество

Развитие

Сборка

104/144

Page 105: Архитектура ПО: управляя самым важным

Анализ, архитектура и дизайн

Связаны, логически (как зависимые решения)

Но не хронологически!

Хронологически – все сложнее,много итераций

105/144

Page 106: Архитектура ПО: управляя самым важным

Принципы организации АП

Современное проектирование должно быть архитектурным!

Проявить предмет! Ответственность – не важно, на ком,

но должна быть! Ориентация на назначение и качество

на ПЖЦ, (а значит – требуется аналитика качества и стратегии развития надсистем)!

Вплетена в интерактивный цикл детального проектирования

Своевременный пересмотр

106/144

Page 107: Архитектура ПО: управляя самым важным

Паттерны управления

Позитивные

Негативные

Негативные

Негативные

Негативные

107/144

Page 108: Архитектура ПО: управляя самым важным

108/144

Сборка

Окружение

Целевая

системаПланирование

Ограничения

($, t, HR, …)

Проектирование

LL-дизайн

Архитектура

Анализ

Потребности

Назначение

Качество

Развитие

?

bin

Page 109: Архитектура ПО: управляя самым важным

Группы паттернов

Целое

Объективность

Динамика

Цели

Ответственность

Компетенции

Развитие

109/144

Page 110: Архитектура ПО: управляя самым важным

110/144

Page 111: Архитектура ПО: управляя самым важным

Лима

Архитектуры нет (нет целого)

Про целое ничего нельзя сказать, кроме объема

111/144

Page 112: Архитектура ПО: управляя самым важным

112/144

Page 113: Архитектура ПО: управляя самым важным

Скрыта за кодом

Архитектура есть, но «скрыта за кодом» – не выражена явно

Кто-то придумал, остальные постоянно «реверсируют» (с переменным успехом), ответственность потеряна

Обсуждение невозможно, т. к. предмет отсутствует (даже когда есть объект – А.)

113/144

Page 114: Архитектура ПО: управляя самым важным

Memento

114/144

Page 115: Архитектура ПО: управляя самым важным

Memento

Решения не фиксируются, забываются

Принимаются заново

Или искажаютсяиз-за потериоснований

115/144

Page 116: Архитектура ПО: управляя самым важным

116/144

Page 117: Архитектура ПО: управляя самым важным

Попытка спроектировать все до мелочейи сразу

Все проектирование произвести до кодирования

Весь дизайн запихивается в архитектуру

Big Design Upfront

117/144

Page 118: Архитектура ПО: управляя самым важным

118/144

Page 119: Архитектура ПО: управляя самым важным

Архитектурное голодание (tech debt)

Осознание долга есть

Но с ним ничего не делается

119/144

Page 120: Архитектура ПО: управляя самым важным

120/144

Page 121: Архитектура ПО: управляя самым важным

Тайное качество

Не направленность на требуемое качество или работа на «внутреннее» качество

Не бывает «внутреннего качества»!т. е. такого, которое не обеспечивает внешнее, может быть на долгом периоде

Само требуемое качество (как краткосрочное, так и долгосрочное) тоже нуждается в анализе, и фиксации

Здесь же: мода, авангардизм

121/144

Page 122: Архитектура ПО: управляя самым важным

122/144

Page 123: Архитектура ПО: управляя самым важным

Башня из слоновой кости

Архитектор творит нечто, что ему кажется прекрасным

Всем остальным это непонятно и неудобно

Сам архитектор при этом «код не пишет» – он выше этого

123/144

Page 124: Архитектура ПО: управляя самым важным

Мы

gile!124/144

Page 125: Архитектура ПО: управляя самым важным

Анархический Agile

Отрицается любое главенство

Страшилки Ivory Tower и BDUF как оружие

«Мы все равны»

И поэтому никто не отвечает

Принцип «равенства»важнее результата

125/144

Page 126: Архитектура ПО: управляя самым важным

Лебедь, рак и щука

Каждый строит свою архитектуру

Каждый хочет как лучше(в своих представлениях)

Безответственно к общему результату

126/144

Page 127: Архитектура ПО: управляя самым важным

127/144

Page 128: Архитектура ПО: управляя самым важным

Главенство авторитета

Главенство авторитета над целями

Переход на личности – сравниваются не решения,а регалии архитекторов

Статус важнее результата

128/144

Page 129: Архитектура ПО: управляя самым важным

Лучший программист

Архитектор = самый сильный программист?

Специфический предмет. Специфический материал и свойства

Специфические компетенции

129/144

Page 130: Архитектура ПО: управляя самым важным

Архитектура на год

Архитектура рассчитана только на минимальный старт

130/144

Page 131: Архитектура ПО: управляя самым важным

131/144

Page 132: Архитектура ПО: управляя самым важным

После нас – хоть потоп

Успех оценивается по короткому результату (сдача системы)

132/144

Page 133: Архитектура ПО: управляя самым важным

133/144

Page 134: Архитектура ПО: управляя самым важным

Отлито в бронзе

А) «Архитектура от старой системы проверена, возьмем для новой системы её»

Б) «Архитектуру системы мы сделали три года назад, и теперь менять в ней ничего нельзя»

Фрэнк Ллойд Райт:

«Забудьте обо всех архитектурах мира, если не понимаете того, что они были хороши в своём роде и в своё время»

134/144

Page 135: Архитектура ПО: управляя самым важным

135/144

Page 136: Архитектура ПО: управляя самым важным

Швейцарский нож

Универсальная архитектура – одна на сильно непохожие (но кажущиеся похожими) проекты

«Там же везде БД, документы, трехзвенка и гриды»

Неверно выбран масштаб повторного использования

Software Product Lines

136/144

Page 137: Архитектура ПО: управляя самым важным

Пара позитивных паттернов

137/144

Page 138: Архитектура ПО: управляя самым важным

Review

Экспертная оценка архитектуры

138/144

Page 139: Архитектура ПО: управляя самым важным

Архитектура для клиента

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

В адекватных для них представлениях,отражающих их (различные!) интересы

139/144

Page 140: Архитектура ПО: управляя самым важным

Резюме (в форме советов-директив)

Управляйте или «оно» будет управлять вашим проектом. Архитектура в любом случае будет влиять. И никогда не будет гибкой. Сделайте ее инструментом управления

Для этого – объективируйте предмет, возложите ответственность, обеспечьте полномочиями и ресурсами. Направляйте на цель (анализ)

Утвердите и держите в голове понятие: 20% фундаментальных решений, которые потом не пересмотришь, но на которых стоит все остальное. Из понятия все остальное следует

Manage!

OR

be managed…

140/144

Page 141: Архитектура ПО: управляя самым важным

Литература Филипп Кратчен «Ретроспектива программных архитектур»

Сайт стандарта 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

Page 142: Архитектура ПО: управляя самым важным

Расширенный список

Развитие успешных системне в области инженерии

Р. Докинз «Эгоистичный ген»

Т. Кун «Структура научных революций»

142/144

Page 143: Архитектура ПО: управляя самым важным

Спасибо!

Вопросы?

Игорь Беспальчук

[email protected]

http://iamhere.moikrug.ru

143/144