Структура и порядок: программист в роли поджигателя
Структура и порядок: программист в роли поджигателя
Общую картину процесса построения ПО ОО-методом мы уже знаем. Нам также известно, как восстановить цепочку событий, связанную с выполнением некоторой операции. Рассмотрим операцию:
[A]
x.g (u, v, ...)
присутствующую в тексте подпрограммы r класса C и предположим, что x это атрибут. Как и когда она будет выполняться? Класс C должен быть включен в систему, скомпонованную затем с помощью соответствующего файла Ace. Далее следует запустить выполнение системы, которое начнется с создания экземпляра корневого класса. Корневая процедура создания должна выполнить одну или более операций, которые прямо или косвенно создадут объект C_OBJ - экземпляр класса C, а затем выполнят вызов:
[B]
a.r (...)
где a присоединено к C_OBJ. Далее вызов [A] выполнит g с заданными аргументами, используя в качестве цели объект, присоединенный к полю x объекта C_OBJ.
Итак, теперь мы знаем, как восстановить точную последовательность событий, происходящих в процессе выполнения системы. Подразумевается, что мы видим систему целиком. Текст одного класса, естественно, не позволяет определить порядок, в котором клиенты будут вызывать его подпрограммы. В этом случае единственная доступная для обозрения последовательность событий это порядок, в котором выполняются инструкции в теле данной подпрограммы.
Даже на уровне системы структура настолько децентрализована, что задача точного определения порядка операций, безусловно разрешимая, практически оказывается очень сложной. Важно то, что это и не очень интересно. Необходимо помнить, что корневой класс является весьма поверхностным свойством системы. Это частный выбор, сделанный уже после формирования набора классов. Всегда есть возможность достаточно просто изменить выбор корневого класса.
Этот уход от упорядочения является частью объектной технологии и стимулирует создание децентрализованной архитектуры систем. В центре внимания не "порядок выполнения программы", а функциональные возможности набора классов. "Порядок", в котором эти возможности будут реализованы в процессе выполнения конкретной системы, является вторичным свойством. (См. "Преждевременное упорядочение", лекция 5)
Данные наблюдения позволяют рассматривать роль программиста как пиротехника или человека, разжигающего огромный костер. Он складывает дрова, следя за тем, чтобы все компоненты были готовы для компоновки и необходимые связи присутствовали. Далее он зажигает спичку и следит за огнем. Если структура правильно подготовлена, то нет необходимости стараться предсказать последовательность возгораний. Достаточно знать, что каждая часть, которая должна вспыхнуть, загорится и это произойдет не раньше положенного времени.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Антагонистические роли
Антагонистические роли Одному из рецензентов книги эта глава очень не понравилась. Он сказал, что из-за нее он едва не отложил книгу. Ему доводилось создавать группы, в которых не было антагонистических отношений; группы работали вместе в гармонии и без конфронтации. Я
Роли
Роли Роли InterBase - это своего рода суррогатные пользователи. Роли служат для организации пользователей с одинаковыми правами в группы. Например, если у нас имеется группа пользователей, для которых нужен достп только на чтение, то мы создаем роль с именем READER, присваиваем
7.4. Организационная структура и роли
7.4. Организационная структура и роли Хотя модель СММ независима от конкретных организационных структур и моделей, практики СММ необходимо выражать единообразно, используя в отношении организационных структур и ролей терминологию, которая может отличаться от
7.4.1. Организационные роли
7.4.1. Организационные роли Роль представляет собой элемент определенной сферы ответственности, присваиваемый одному или нескольким лицам. В ключевых практиках часто используются следующие описания
Шаг 3. Младший программист. Опыт работы 0,5-1 год.
Шаг 3. Младший программист. Опыт работы 0,5-1 год. Только на этом шаге я решился употребить слово программист. Потому что, проработав хотя бы полгода и столкнувшись с реальными задачами, человек, что называется, оказывается «в теме». Он уже решил все стартовые проблемы с
Шаг 4. Программист. Опыт работы 1-3 года.
Шаг 4. Программист. Опыт работы 1-3 года. К сожалению, часть программистов зависает на этой стадии развития. 3 года стажа работы в одной должности превращаются в 5 лет, затем в 10. Человек вдруг понимает, что по возрасту уже должен находиться совершенно на другой ступени
Шаг 5. Старший программист. Опыт работы от 2 лет.
Шаг 5. Старший программист. Опыт работы от 2 лет. На наш взгляд, начиная с этого этапа, работа становится интересней. Вы начинаете решать задачи не только связанные с написанием кода. Появляется некоторая свобода в принятии архитектурных решений, пусть сначала и не очень
Роли
Роли Чтобы девиз «Сам построил, сам и ломай» работал (и работал долго), вам нужна не только традиционная роль разработчика кода, но и другие роли. Конкретнее, должны появиться инженеры, которые помогут разработчикам тестировать эффективно и правильно. Они часто
Снова о роли форматтера .NET
Снова о роли форматтера .NET Заключительным элементом головоломки удаленного взаимодействия .NET является форматтер. Типы TcpChannel и HttpChannel используют свои внутренние форматтеры, задачей которых является перевод объекта сообщения в термины соответствующего протокола. Как
Создание роли
Создание роли Синтаксис создания роли прост:CREATE ROLE <имя-роли>;Пользователь SYSDBA или владелец базы может создавать роли, предоставлять им привилегии и передавать эти "нагруженные" роли пользователям. Если роль предоставлена с параметром WITH ADMIN OPTION, получатель этой роли
Удаление роли
Удаление роли Если вы удаляете роль, то все привилегии, предоставленные этой роли, отменяются. Чтобы удалить роль MAITRE_D, выполните:DROP ROLE MAITRE D;! ! !ПРИМЕЧАНИЕ. Если вам нужно лишь удалить привилегии, предоставленные пользователю с помощью роли, или удалить привилегии роли,
ГЛАВА 6. Сергей Кищенко — программист-кочевник
ГЛАВА 6. Сергей Кищенко — программист-кочевник Сергей Кищенко — украинский программист. Бывший Software Architect в Quickoffice (Харьков), ныне работает в центральном американском офисе Google в MTV (в должности Google SWE). Активно путешествует, фотографирует и познает мир — относит свой
Программист на 3 миллиона: к вопросу о недостатках работы за рубежом Евгений Золотов
Программист на 3 миллиона: к вопросу о недостатках работы за рубежом Евгений Золотов Опубликовано 24 января 2014 Мода на сравнение работы программиста в России и за рубежом (в частности в Соединённых Штатах) за последние годы незаметно «сошла на