Роберт Мартин - Чистая архитектура. Искусство разработки программного обеспечения
- Название:Чистая архитектура. Искусство разработки программного обеспечения
- Автор:
- Жанр:
- Издательство:Питер
- Год:2018
- Город:СПб.
- ISBN:978-5-4461-0772-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Роберт Мартин - Чистая архитектура. Искусство разработки программного обеспечения краткое содержание
Роберт Мартин дает прямые и лаконичные ответы на ключевые вопросы архитектуры и дизайна. «Чистую архитектуру» обязаны прочитать разработчики всех уровней, системные аналитики, архитекторы и каждый программист, который желает подняться по карьерной лестнице или хотя бы повлиять на людей, которые занимаются данной работой.
Чистая архитектура. Искусство разработки программного обеспечения - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Итак, мы приступили разработке первого приложения — самого сложного в пакете. Мы назвали его Vignette Grande.
Мы вдвоем работали над Vignette Grande с прицелом на создание инфраструктуры многократного использования. Нам понадобился год. К концу этого года у нас были 45 000 строк инфраструктурного и 6000 строк прикладного кода. Мы принесли этот продукт в ETS, и они заключили с нами контракт на создание других 17 приложений в ограниченный срок.
Мы с Джимом наняли еще трех разработчиков и приступили к созданию следующих нескольких экзаменационных приложений.
Но что-то пошло не так. Мы обнаружили, что наша инфраструктура оказалась почти непригодна для многоразового использования. Она не вписывалась в новые приложения. Имелись шероховатости, мешавшие работе.
Мы были сильно обескуражены, но считали, что знаем, как поступить с этим. Мы пришли в ETS и сказали, что задерживаемся — что 45 000-строчную инфраструктуру требуется переписать или хотя бы скорректировать и что для этого потребуется еще много времени.
Я думаю, излишне говорить, что в ETS не очень обрадовались этой новости. Тем не менее мы начали все сначала. Мы отложили старую инфраструктуру и приступили к созданию сразу четырех новых экзаменационных приложений. Мы заимствовали некоторые идеи и код из старой инфраструктуры, но переделывали их так, чтобы они вписывались во все четыре приложения без изменений.
На это ушел еще один год. Мы написали другую инфраструктуру с 45 000 строк кода плюс четыре экзаменационных приложения, содержавших от 3000 до 6000 строк каждое. Разумеется, отношения между приложениями и инфраструктурой следовали правилу зависимости. Приложения были плагинами для инфраструктуры. Все высокоуровневые политики находились в инфраструктуре. Прикладной код просто «склеивал» разные операции.
Отношения между инфраструктурой и приложениями оценки решений оказались намного сложнее. Высокоуровневая политика оценки находилась в приложении. Инфраструктура оценки подключалась как плагин к приложению оценки.
Конечно, приложения обоих видов компоновались статически, поэтому в наших головах полностью отсутствовало понятие «плагин». И тем не менее зависимости были выстроены в полном соответствии с правилом зависимости.
Закончив эти четыре приложения, мы приступили к следующим четырем. На этот раз они были готовы через несколько недель, как мы и предсказывали. Непредусмотренная задержка отняла у нас почти год, поэтому, чтобы ускорить процесс и уложиться в график, мы наняли еще одного программиста.
Мы уложились в срок и выполнили свои обязательства. Наш клиент был счастлив. Мы были счастливы. Жизнь была прекрасна.
Но мы получили хороший урок: нельзя создать универсальную инфраструктуру, не создав прежде работающую инфраструктуру. Универсальные инфраструктуры должны создаваться одновременно с несколькими приложениями, использующими их.
Заключение
Как я сказал в начале, это приложение несколько автобиографично. Я описал наиболее яркие моменты в проектах, которые, по моему мнению, имели большое архитектурное влияние. И конечно, я привел несколько эпизодов, не имеющих прямого отношения к технической стороне книги, но которые тем не менее имели большое значение.
Разумеется, это далеко не полная история. В моей карьере было много других проектов. Кроме того, я намеренно ограничил освещение истории началом 1990-х годов, потому что у меня есть еще одна книга, посвященная событиям конца 1990-х годов.
Я надеюсь, что вам понравился этот небольшой экскурс по волнам моей памяти и вы смогли почерпнуть что-то новое из моего опыта.
Примечания
1
Перевод Т. Гнедич. — Примеч. ред .
2
Фильм, вышедший в США в 1970 году, в нашей стране известный под названием «Колосс: Проект Форбина». — Примеч. пер.
3
«Луна жестко стелет», роман Роберта Хайнлайна. — Примеч. пер.
4
Фильм, вышедший в 1968 году, в нашей стране известный под названием «2001 год: Космическая одиссея». — Примеч. пер.
5
Именно «ее», потому что в те годы программистами были в основном женщины.
6
Роберт Мартин. Идеальный программист. Как стать профессионалом разработки ПО. СПб.: Питер, 2016. — Примеч. пер.
7
Роберт Мартин. Чистый код: создание, анализ и рефакторинг. СПб.: Питер, 2013. — Примеч. пер.
8
Роберт Мартин. Быстрая разработка программ. Принципы, примеры, практика. М.: Вильямс, 2004. — Примеч. пер.
9
Из речи, произнесенной в Северо-Западном университете в 1954 году.
10
На самом деле Дейкстра озаглавил свое письмо A Case Against the Goto Statement («Дело против оператора goto»), но редактор CACM Никлаус Вирт изменил заголовок. — Примеч. пер.
11
Перевод статьи на русский язык можно найти по адресу http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htm. — Примеч. пер.
12
Чтобы иметь возможность определить размер экземпляра каждого класса.
13
Например, Smalltalk, Python, JavaScript, Lua и Ruby.
14
И не только программисты на C: большинство языков той эпохи позволяли маскировать одни структуры данных под другие.
15
И продолжает применяться.
16
В разных версиях UNIX требования разные; это всего лишь пример.
17
Перфокарты IBM Hollerith имели ширину 80 колонок. Я уверен, что многие из вас никогда даже не видели их, но они широко были распространены в 1950-е, 1960-е и даже в 1970-е годы.
18
Хотя и косвенно.
19
Спасибо Грегу Янгу, что объяснил мне суть этого понятия.
20
CRUD — аббревиатура, обозначающая набор основных операций с данными: Create (создание), Read (чтение), Update (изменение) и Delete (удаление). — Примеч. пер.
21
В данном случае слово «SOLID» можно перевести как «прочный», «надежный», «основательный». — Примеч. пер.
22
Например, Agile Software Development, Principles, Patterns, and Practices , Robert C. Martin, Prentice Hall, 2002 ( Роберт С. Мартин. Гибкая разработка программ на Java и C++: принципы, паттерны и методики. М.: Вильямс, 2017. — Примеч. пер. ), http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOodи https://en.wikipedia.org/wiki/SOLID_(object-oriented_design) (можно просто выполнить поиск в Google по слову «SOLID»).
23
Bertrand Meyer. Object Oriented Software Construction , Prentice Hall, 1988, p. 23 ( Бертран Мейер. Объектно-ориентированное конструирование программных систем. Русская редакция, 2005. — Примеч. пер. ).
24
Barbara Liskov. Data Abstraction and Hierarchy , SIGPLAN Notices 23, 5 (May 1988).
25
То есть функцию, которая вызывается операционной системой в момент запуска приложения.
Читать дальшеИнтервал:
Закладка: