Чистая архитектура. Искусство разработки программного обеспечения - Роберт Мартин

- Автор: Роберт Мартин
- Серия: Библиотека программиста (Питер)
- Жанр: зарубежная компьютерная литература, программирование
- Размещение: фрагмент
- Теги: архитектура информационных систем, искусство программирования, разработка программного обеспечения, технологии разработки программного обеспечения, технология программирования
- Год: 2018
Чистая архитектура. Искусство разработки программного обеспечения
Проще говоря, я увидел все мелкие детали, поддерживающие все высокоуровневые решения. Я также увидел, что низкоуровневые детали и высокоуровневые решения вместе составляют дизайн дома.
То же относится к архитектуре программного обеспечения. Низкоуровневые детали и высокоуровневая структура являются частями одного целого. Они образуют сплошное полотно, определяющее форму системы. Одно без другого невозможно; нет никакой четкой линии, которая разделяла бы их. Есть просто совокупность решений разного уровня детализации.
Цель?
В чем состоит цель таких решений, цель хорошего дизайна программного обеспечения? Главная цель – не что иное, как мое утопическое описание:
Цель архитектуры программного обеспечения – уменьшить человеческие трудозатраты на создание и сопровождение системы.
Мерой качества дизайна может служить простая мера трудозатрат, необходимых для удовлетворения потребностей клиента. Если трудозатраты невелики и остаются небольшими в течение эксплуатации системы, система имеет хороший дизайн. Если трудозатраты увеличиваются с выходом каждой новой версии, система имеет плохой дизайн. Вот так все просто.
Пример из практики
В качестве примера рассмотрим результаты исследований из практики. Они основаны на реальных данных, предоставленных реальной компанией, пожелавшей не разглашать своего названия.
Сначала рассмотрим график роста численности инженерно-технического персонала. Вы наверняка согласитесь, что тенденция впечатляет. Рост численности, как показано на рис. 1. 1, должен служить признаком успешного развития компании!
Рис. 1. 1. Рост численности инженерно-технического персонала. Воспроизводится с разрешения автора презентации Джейсона Гормана (Jason Gorman)
Теперь взгляните на график продуктивности компании за тот же период, измеряемой в количестве строк кода (рис. 1. 2).
Рис. 1. 2. Продуктивность за тот же период
Очевидно, что здесь что-то не так. Даже при том, что выпуск каждой версии поддерживается все большим количеством разработчиков, похоже, что количество строк кода приближается к своему пределу.
А теперь взгляните на по-настоящему удручающий график: на рис. 1. 3 показан рост стоимости строки кода с течением времени.
Рис. 1. 3. Изменение стоимости строки кода с течением времени
Эта тенденция говорит о нежизнеспособности. Какой бы рентабельной ни была компания в настоящее время, растущие накладные расходы поглотят прибыль и приведут ее к застою, если не к краху.
Чем обусловлено такое значительное изменение продуктивности? Почему строка кода в версии 8 продукта стоит в 40 раз дороже, чем в версии 1?
Причины неприятностей
Причины неприятностей перед вашими глазами. Когда системы создаются второпях, когда увеличение штата программистов – единственный способ продолжать выпускать новые версии и когда чистоте кода или дизайну уделяется минимум внимания или не уделяется вообще, можно даже не сомневаться, что такая тенденция рано или поздно приведет к краху.
На рис. 1. 4 показано, как выглядит эта тенденция применительно к продуктивности разработчиков. Сначала разработчики показываю продуктивность, близкую к 100 %, но с выходом каждой новой версии она падает. Начиная с четвертой версии, как нетрудно заметить, их продуктивность приближается к нижнему пределу – к нулю.
Рис. 1. 4. Изменение продуктивности с выпуском новых версий
С точки зрения разработчиков, такая ситуация выглядит очень удручающе, потому все они продолжают трудиться с полной отдачей сил. Никто не отлынивает от работы.
И все же, несмотря на сверхурочный труд и самоотверженность, они просто не могут произвести больше. Все их усилия теперь направлены не на реализацию новых функций, а на борьбу с беспорядком. Большую часть времени они заняты тем, что переносят беспорядок из одного места в другое, раз за разом, чтобы получить возможность добавить еще одну мелочь.
Точка зрения руководства
Если вы думаете, что ситуация скверная, взгляните на нее с точки зрения руководства! На рис. 1. 5 изображен график изменения месячного фонда оплаты труда разработчиков за тот же период.
Рис. 1. 5. Изменение фонда оплаты труда разработчиков с выпуском новых версий
Когда была выпущена версия 1, месячный фонд оплаты труда составлял несколько сотен тысяч долларов. К выпуску второй версии фонд увеличился еще на несколько сотен тысяч. К выпуску восьмой версии месячный фонд оплаты труда составил 20 миллионов долларов и тенденция к увеличению сохраняется.
Этот график выглядит не просто скверно, он пугает. Очевидно, что происходит что-то ужасное. Одна надежда, что рост доходов опережает рост затрат, а значит, оправдывает расходы. Но с любой точки зрения эта кривая вызывает беспокойство.
А теперь сравните кривую на рис. 1. 5 с графиком роста количества строк кода от версии к версии на рис. 1. 2. Сначала, всего за несколько сотен тысяч долларов в месяц, удалось реализовать огромный объем функциональности, а за 20 миллионов в последнюю версию почти ничего не было добавлено! Любой менеджер, взглянув на эти два графика, придет к выводу, что необходимо что-то предпринять, чтобы предотвратить крах.
Но что можно предпринять? Что пошло не так? Что вызвало такое невероятное снижение продуктивности? Что могут сделать руководители, кроме как топнуть ногой и излить свой гнев на разработчиков?
Что не так?
Примерно 2600 лет тому назад Эзоп сочинил басню о Зайце и Черепахе. Мораль той басни можно выразить по-разному:
• «медленный и постоянный побеждает в гонке»;
• «в гонке не всегда побеждает быстрейший, а в битве – сильнейший»;
• «чем больше спешишь, тем меньше успеваешь».
Притча подчеркивает глупость самонадеянности. Заяц был настолько уверен в своей скорости, что не отнесся всерьез к состязанию, решил вздремнуть и проспал, когда Черепаха пересекла финишную черту.
Современные разработчики также участвуют в похожей гонке и проявляют похожую самонадеянность. О нет, они не спят, нет. Многие современные разработчики работают как проклятые. Но часть их мозга действительно спит – та часть, которая знает, что хороший, чистый, хорошо проработанный код играет немаловажную роль.
Эти разработчики верят в известную ложь: «Мы сможем навести порядок потом, нам бы только выйти на рынок! » В результате порядок так и не наводится, потому что давление конкуренции на рынке никогда не ослабевает. Выход на рынок означает, что теперь у вас на хвосте висят конкуренты и вы должны стремиться оставаться впереди них и бежать вперед изо всех сил.
Поэтому разработчики никогда не переключают режим работы. Они не могут вернуться и навести порядок, потому что должны реализовать следующую новую функцию, а потом еще одну, и еще, и еще. В результате беспорядок нарастает, а продуктивность стремится к своему пределу около нуля.
Читать похожие на «Чистая архитектура. Искусство разработки программного обеспечения» книги

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

В книге описывается около 100 объектов самой неоцененной эпохи советской архитектуры. Это первый путеводитель по Москве, который рассматривает как целостное явление архитектуру тридцатилетия от Хрущёва до Горбачёва – от наивного модернизма оттепели до постмодернизма, включая Дворец пионеров, Останкинскую телебашню, кинотеатр «Россия», здание ТАСС, «золотые мозги» Академии наук, а также менее известные проекты, например, «Дом нового быта» или музей АЗЛК. Авторы предлагают увидеть эти

Задумались ли вы, как много можно узнать о европейской истории и развитии архитектуры, просто прогуливаясь по улицам Парижа? Перестроенный с нуля, сегодняшний Париж – результат масштабного эксперимента второй половины XIX века. Лучше всех об этом сможет поведать архитектурный гид и автор телеграм-канала «А как там в Париже?», специалист по творчеству Ле Корбюзье, Мария Троицкая. Прочитав эту книгу, вы не только начнете разбираться в архитектурных стилях, но и узнаете, какие процессы в обществе

В этом путеводителе нет ни Эрмитажа, ни Петергофа – авторы приглашают вас в Ленинград. Но Петербург в этой книге тоже есть, потому что именно он определил характер ленинградского модернизма. Модернизм был здесь не отторжением традиции, а рефлексией по ее поводу. Это модернизм традиционализма – не «воинственный», но диалогичный – чем и интересен. В эпоху космоса и джаза ленинградские зодчие продолжали мыслить ансамблями, а не отдельными объектами, что тогда казалось архаикой, но именно такой

Книга историков архитектуры Елены Овсянниковой и Николая Васильева посвящена жилому комплексу, широко известному как Дом Наркомфина, примечательному своим архитектурным решением.

Это саммари – сокращенная версия книги «Ловушка разработки. Как эффективный продакт-менеджмент создает реальную ценность» Мелиссы Перри. Только самые ценные мысли, идеи, кейсы, примеры. Эффективный продакт-менеджер – человек, который руководит командой, создающей продукты – инновационные, сложные, поражающие воображение пользователей. Он придумывает функционал, ставит задачи перед дизайнерами и разработчиками. Это так… но не совсем. Потому что с таким подходом продуктовые команды часто попадают

Архитектуру называют музыкой, застывшей в камне. Сколько же архитектурных «жанров» накопила цивилизация? Архитектура Древней Греции, готика, рококо, хай-тек: изучая архитектуру, мы узнаем историю. Эта книга поможет читателю разобраться в архитектурных стилях от ранних цивилизаций до современного периода. Издание призвано рассказать простым языком о точной и красивой науке, восполнить возможные пробелы в знаниях и побудить читателя на более глубокое изучение предмета.

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

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

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