20 Свет мой, зеркальце
20
Свет мой, зеркальце
«Свет мой, зеркальце, скажи, да всю правду доложи: я ль на свете всех милее»? Злой королеве из «Белоснежки» достаточно было посмотреть в зеркало, чтобы получить точную картину. Разработчики программного обеспечения тоже должны иметь такую возможность. Им нужны хорошие зеркала, которые просто и точно отражают создаваемое программное обеспечение. Злая королева могла быть недовольна тем, что видела в зеркале; тем не менее ее зеркало давало достоверную и понятную картину.
Именно это предлагает хорошая система моделирующих обозначений — ясное, однозначное и легко понимаемое отображение программного обеспечения. В отличие от зеркала, хорошая система моделирующих обозначений не может дать детальную картину, «один к одному» соответствующую ее коду. Хорошая модель — это точное, но все же избирательное изображение программы, то есть ее намеренно упрощенное описание. Эффективность системы моделирующих обозначений для изображения задач и их программных решений зависит от того, каким образом достигается это упрощение. Сама суть преобразований между средой программирования и средой моделирующих обозначений должна быть простой, непосредственной, логичной и легко запоминаемой.
К сожалению, многие из существующих систем обозначений для программного анализа и проектирования не отвечают этим фундаментальным требованиям. Они чрезмерно сложны, непоследовательны и неясны. Их трудно запомнить и интерпретировать. А еще их слишком много.
Полное моделирование программного обеспечения — это сложный процесс. Он включает в себя рассмотрение множества статических и динами-ческих аспектов: структура и композиция информации, суть алгоритмов и их реализация в виде процедур, разбиение на составные части и взаимосвязи между частями. Если модель данных, процедурная модель, модель коммуникаций, модель состояния и функциональная структура программы слиты в единую схему с одной всеобъемлющей системой обозначений, то результат принимает причудливую форму, становится непонятным и визуально перегруженным.
Получение картины
Модели разработки программного обеспечения во многом служат той же цели, что и зеркало злой королевы. Системы обозначений должны делать ясным различие между прекраснейшими решениями и теми, которые всего-навсего прекрасны. Рассматривая модель, разработчики хотят знать, является ли их замысел здравым или глупым. Модель проектирования программного обеспечения — это не просто место хранения пока еще нереализованных идей. Такая модель позволяет разработчикам найти упущения и ошибки в замысле, а также сравнить разные подходы и выяснить, какой из них лучше. Вот почему хорошие разработчики рисуют картинки перед тем, как приступить к кодированию, — создать «бумажную» модель дешевле, чем создать программное обеспечение. Кроме того, хорошие модели помогают увидеть самый подходящий способ решения задачи.
Хорошая система обозначений предполагает простой, непосредственный и понятный способ преобразований модель-код, то есть позволяет писать код на основе модели или составить модель на основе существующего кода. Небрежная, неясная и неточная система обозначений приводит к небрежному, неясному и неточному преобразованию. Каждый визуальный элемент в системе обозначений должен соответствовать конкретному и существенному аспекту моделируемого программного обеспечения. Каждый важный элемент кода должен иметь возможность быть выраженным в системе обозначений.
Хорошая система обозначений позволяет создавать картины, которые можно интерпретировать аналитически, с помощью тщательного изучения деталей, и понять интуитивно как гештальт,[27] то есть как целое, представляющее общий характер системы. Сложные схемы должны выглядеть сложнее, чем простые. Хорошая архитектура должна быть визуально привлекательнее, чем плохая. Другими словами, хорошая система
.
обозначений позволяет разработчикам использовать оба полушария мозга; она помогает думать о проектируемой системе как с позиций логики, так и на основе интуиции.
Для точного и достаточно простого отображения программ хорошая система обозначений выделяет важные элементы и скрывает несущественные. Главные части и основные компоненты выделяются крупно, в то время как менее значимые детали становятся примечаниями или комментариями или совсем не обозначаются на схеме.
Картина сохраняет простоту, так как не отображает внутренних деталей. Компонент программы, который по сути является «черным ящиком», становится простым прямоугольником, нарисованным на экране или бумаге без отображения внутренних деталей. Здесь речь идет о целых программных блоках, а не об их внутреннем содержимом.
В идеале мы хотели бы получить такой инструмент контроля отображения, который достижим только с помощью компьютерных средств. Например, мы хотели бы просматривать схему коммуникаций между объектами, пробегая глазами мелкие элементы, а затем увеличивать масштаб, чтобы изучить взаимосвязи в какой-то одной части схемы. Мы могли бы увеличить какой-нибудь объект, чтобы узнать, какие методы он поддерживает. Делаем двойной щелчок мышью и видим код С++, определяющий данный метод. Или же мы могли бы переключиться в режим, в котором сценарий взаимодействия с пользователем совмещен со схемой коммуникаций между объектами, причем объекты, участвующие в данном сценарии, выделены или подсвечены.
Система обозначений и юзабилити
Систему обозначений можно легко разработать самому; очень многие так и поступают. Однако хорошую систему обозначений придумать трудно. Многие системы, которые встречаются в наших журналах, не в полной мере подходят для моделирования.
Разработка хорошей системы обозначений подобна разработке хорошего графического интерфейса. Целью здесь является сокращение нагрузки на человеческую память. Великий закон юзабилити утверждает, что система должна быть доступной для использования человеком, который знает о ее назначении, но не знаком с ее программным обеспечением. При этом не должно возникать необходимости в обучении, помощи или руководствах (Constantine, 1991 [14]). Таким образом, по-настоящему хорошая система обозначений — это такая система, которую опытный разработчик, знающий, как проектировать и писать программы, сможет интуитивно понять без шпаргалок и недельных курсов обучения. Вы не должны запоминать разные условные обозначения (например, то, что прямоугольник с двойной рамкой означает динамический объект, а прямоугольник с флажком в углу — компонент библиотеки).
Все должно выглядеть так, как оно есть. Формы символов или стили линий не могут быть какими угодно. Они не должны противоречить интуиции. Например, базовую основу, на которой с помощью наследования и повторного использования выстраиваются другие компоненты, необходимо изображать с помощью сплошных, строго очерченных элементов, а не эфемерными облаками.
Сильные связи между частями должны выглядеть, как сильные связи; слабые связи должны выглядеть, как более слабые. Устойчивые объекты должны быть показаны сплошными фигурами, а динамические объекты должны выражать смысл активности или изменяемости. Например, наследование одним классом свойств и характеристик другого класса означает, что подкласс в большой степени зависит от родительского класса — подобно тому как генетические особенности ребенка сильно зависят от особенностей обоих родителей. Для точного отражения характеристик программного обеспечения, использующего наследование, этот механизм должен быть показан более четко, чем передача сообщения объекту или ссылка на него как на атрибут (Page-Jones, Constantine и Weiss, 1990 [57]).
Сделать систему обозначений интуитивно понятной и простой в изучении помогут небольшие детали. В системе обозначений для объектно-ориентированных программ, разработанной Джекобсоном (Jacobson и др., 1992 [44]), те объекты, которые взаимодействуют с внешним окружением, на одной стороне имеют символ (- в качестве визуального ключа, обозначающего это взаимодействие. Динамические объекты, которые управляют последовательностью действий, снабжены стрелкой, входящей в границу, что означает цикл или итерацию. В нескольких системах обозначений внутренние элементы компонентов, которые доступны извне, показаны в виде расширений границы компонента.
Кроме того, хорошая система обозначений основана на том, что разработчики уже знают. Главным образом в ней применяются обозначения, знакомые разработчикам. Другими словами, не следует использовать новые символы для давно известных понятий, а старые обозначения — для новых и несовместимых идей. На самом деле чаще всего нам и не нужны новые обозначения. Наши усилия следует направить в основном на стандартизацию и упорядочивание того, что уже имеется, с применением разумных принципов моделирования и человеческого мышления.
Подумайте об этом.
Из журнала Software Development, том 2, № 3, март 1994 г.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Light! (Свет!)
Light! (Свет!) Интересный инструмент, с помощью которого на фотографию можно наложить световые блики и тени любой формы. Такой эффект может понадобиться в тех случаях, когда, например, требуется создать иллюзию отбрасываемой тени от объекта, который в действительности не
Солнечный свет
Солнечный свет Солнечное освещение создает эффект естественного света. При этом угол свещения определяется географическим местоположением, а также датой и временем, которые задаются для конкретной модели. Лучи солнечного света параллельны и имеют одинаковую
Объемный свет
Объемный свет Очень часто в процессе моделирования для придания сцене каких-то индивидуальных особенностей приходится применять различные трюки и эффекты. Одним из таких приемов является Volume Light (Объемный свет). Примечание В видеоуроке «Урок 30. Объемный свет», который
6 Прозрачность: да будет свет
6 Прозрачность: да будет свет Красота в вычислениях более важна, чем в любой другой области технологии, поскольку программное обеспечение очень сложное. Красота — основная защита против сложности. Machine Beauty: Elegance and the Heart of Technology (1998) —Дэвид Гелентер (David Gelernter) В предыдущей
Свет
Свет Существующие стандарты офисного освещения говорят, что наиболее комфортным для глаз человека считается показатель от 200 до 500 люкс. Понять, что означает эта величина, можно, сравнив ее с другими показателями: Луна имеет яркость в один люкс, горящая свеча – пять люкс, а
Свет и тень
Свет и тень Наверное, каждый фотолюбитель сталкивался с ситуацией, когда снимок выглядит слишком темным или слишком светлым. Такое случается и в традиционной «пленочной» фотографии, и в современной цифровой.В Photoshop есть два простых способа исправить этот недостаток.
Солнечный свет
Солнечный свет Солнечное освещение создает эффект естественного света. При этом угол свещения определяется географическим местоположением, а также датой и временем, которые задаются для конкретной модели. Лучи солнечного света параллельны и имеют одинаковую
Солнечный свет
Солнечный свет Солнечное освещение создает эффект естественного света. При этом угол освещения определяется географическим местоположением, а также датой и временем, которые задаются для конкретной модели. Лучи солнечного света параллельны и имеют одинаковую
Свет
Свет Как уже говорилось выше, хорошим выбором для тех, кто только начинает работать с камерой и вспышками, является постоянный свет. Речь идет об источниках, которые не вспыхивают при нажатии кнопки спуска затвора на фотокамере. Они обеспечивают вас непрерывным потоком
Свет в пейзаже
Свет в пейзаже Хорошие пейзажные снимки получаются незадолго перед заходом или после восхода солнца из-за самого эффектного света – мягкого и теплого, потому что свет, падающий под углом, образует тени, которые так важны для передачи линий и контуров пейзажа.В полдень,
Зеркальце
Зеркальце Иногда приходится поднять камеру на вытянутые руки над головой и снять, например, людей сверху. Подобные снимки удобно делать камерами, имеющими поворотный дисплей. Если дисплей камеры не поворачивается, воспользуйтесь обыкновенным маленьким зеркальцем.
Свет
Свет Слово «фотография», если перевести буквально, означает «светопись». Наблюдая окружающий мир, различные объекты, человек воспринимает свет, который они излучают и отражают.От характера освещения зависит впечатление зрителя. Свет бывает разным, он меняется постоянно
Глава 5 Свет
Глава 5 Свет • Качество света• Естественный свет• Искусственный свет• Использование искусственного света• Световые
Естественный свет
Естественный свет Лучший источник света для фотографии. Старайтесь использовать его максимально. Если позволяют условия, снимайте на открытом воздухе. Естественный свет – это один источник, от которого неизбежно образуются тени (рис. 5.2). Чтобы у объекта не было тени,
Искусственный свет
Искусственный свет Искусственный свет, в отличие от естественного, позволяет фотографу не привязываться ко времени и условиям (рис. 5.6). Вы можете добиться оптимальных результатов по нужной вам схеме использования света в съемке. Основное его преимущество –