7.8. Специальные вопросы
7.8. Специальные вопросы
Узко-специфические проблемы
Мы считаем, что некоторые предметные области заслуживают специального архитектурного рассмотрения.
Проектирование эффективного пользовательского интерфейса - скорее искусство, чем наука. В этой области абсолютно необходимо использование прототипов. Как можно раньше следует установить интенсивную обратную связь с конечными пользователями, чтобы выявить характерные движения рук, реакцию на ошибки и другие парадигмы взаимодействия. При анализе пользовательского интерфейса в высшей степени эффективно составление сценариев.
Некоторые приложения имеют собственную базу данных, для других приложений может требоваться интеграция с существующей базой данных, схема которой не может быть изменена (обычно из-за того, что база уже заполнена большим количеством данных - разновидность проблемы унаследованной сложности). В таких случаях хорошо работает принцип разделения обязанностей: лучше всего инкапсулировать доступ к таким базам данных в небольшом количестве четко определенных интерфейсов классов. Этот принцип особенно важен при совместном использовании объектно-ориентированной декомпозиции и технологии реляционных баз данных (РБД). Объектно-ориентированные базы данных (ООБД) лучше стыкуются с объектными программами, но мы должны помнить, что ООБД больше подходят для обеспечения продолжительности жизни объектов и меньше - для хранения больших объемов данных.
Коснемся также систем реального времени. Понятие реальное время в различном контексте воспринимается по-разному. В диалоговых системах оно может означать отклик в течение менее чем одной секунды, а в системах сбора данных и управления может требоваться отклик быстрее чем за одну микросекунду. Важно ясно понимать, что даже при очень жестких требованиях ко времени не каждая компонента должна (или может) быть оптимизирована. Для сложных систем наибольший риск состоит в том, будет или нет система завершена, а не в том, будет ли она удовлетворять требованиям эффективности. По этой причине мы предостерегаем от преждевременной оптимизации. Сосредоточьтесь на создании простой архитектуры, а узкие места выявятся в процессе эволюции системы сами собой (причем достаточно рано), и вы сможете принять меры.
Термин "унаследованная сложность" относится к приложениям, в которые были сделаны большие капиталовложения и от которых по экономическим причинам или по соображениям безопасности нельзя отказаться. Однако, такие системы могут иметь неподъемную стоимость сопровождения, отчего их и приходится со временем заменять. К счастью, совладать с унаследованной сложностью можно почти также, как с базами данных: инкапсулировать доступ к их услугам в контексте четко определенных интерфейсов классов, а потом постепенно, функцию за функцией, вытеснять их объектно-ориентированной архитектурой. Конечно, необходимо представлять, себе конечный результат, чтобы система в процессе неуправляемых изменений не превратилась в лоскутное одеяло.
Переход на объектные технологии
Как считает Кемпф, "Изучение объектно-ориентированного программирования может оказаться гораздо более трудной задачей, чем просто освоение очередного языка. В данном случае надо научиться другому стилю программирования, а не просто запомнить синтаксис. То есть учить приходится не язык, а способ мышления" [18]. Как развить объектно-ориентированное мировоззрение? Мы рекомендуем:
• Обеспечить формальное обучение разработчиков и менеджеров элементам объектной модели.
• Начать с проектов с низким уровнем риска и позволить команде делать ошибки; по мере приобретения опыта можно направлять участников в другие команды в качестве наставников.
• Продемонстрировать разработчикам и менеджерам примеры хорошо структурированных объектно-ориентированных систем.
Хорошими кандидатами для первых проектов являются инструментальные средства или предметно-ориентированные библиотеки классов, которые можно потом использовать как ресурсы для следующих проектов.
Согласно нашему опыту, профессиональному разработчику требуется несколько недель, чтобы освоиться с синтаксисом и семантикой нового языка программирования. Потребуется в несколько раз больше времени, чтобы тот же разработчик начал понимать важность и мощь классов и объектов. Наконец, может потребоваться более шести месяцев экспериментов, чтобы разработчик созрел до хорошего проектировщика классов. Это не обязательно плохо - обучение мастерству всегда требует времени.
Мы считаем, что обучение на примерах часто оказывается эффективным и целесообразным подходом. Когда организация накопит критическую массу приложений, выполненных в объектно-ориентированном стиле, станет гораздо легче обучать этому делу новых разработчиков и менеджеров. Разработчики начинают как программисты-исполнители, применяя уже готовые хорошо структурированные абстракции. Через некоторое время разработчики, которые изучали и использовали эти компоненты под наблюдением более опытных сотрудников, сами приобретают достаточный опыт, чтобы проектировать классы.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
14.1.2. Специальные файлы . и ..
14.1.2. Специальные файлы . и .. Каждый каталог, включая корневой, содержит также два специальных файла под именами . и .., полезные при определенных условиях. Первый, . — то же самое, что и текущий каталог. Это означает, что имена somefile и ./somefile эквивалентны.Еще одно специальное имя
Специальные возможности
Специальные возможности Познакомимся с содержимым группы Специальные возможности Главного меню. В этой группе представлены приложения, помогающие работать за компьютером лицам с ограниченными возможностями. Первая – программа Распознавание речи Windows. Она позволяет
15.17.3 Специальные утилиты
15.17.3 Специальные утилиты В идеале NFS должна быть прозрачна для пользователей. Файлы сервера должны открываться, читаться, записываться и закрываться так же, как локальные файлы, а применяться для этого должны обычные локальные команды.Когда клиент и сервер имеют
19.5.1 Специальные символы
19.5.1 Специальные символы Иногда идентификатор ресурса содержит пробелы или иные специальные символы (например, слэш или двоеточие), которые применяются в URL как разделители. Например, имена файлов Macintosh и Windows 95 могут содержать пробелы и другие необычные
22.5 Специальные адреса
22.5 Специальные адреса Существует несколько форматов специальных адресов
Специальные акции
Специальные акции Регулярные оф-лайновые акции для имеющихся и потенциальных посетителей вашего сайта могут существенно увеличить его посещаемость. Вот далеко не полный список таких мероприятий: конкурсы, конференции, семинары, встречи посетителей сайта, вечеринки,
Специальные символы
Специальные символы Прочитав о разнообразных кавычках и тире, многие зададутся вопросом: как же их использовать, если эти символы отсутствуют на клавиатуре? Хорошо, если текстовый редактор сам заменит символы необходимыми, а если нет?Обеспокоенных читателей можно
Специальные эффекты
Специальные эффекты Adobe InDesign также умеет создавать интересные и полезные эффекты, которые мы можем использовать при оформлении текста. По сути, здесь мы снова сталкиваемся с взаимопроникновением программ фирмы Adobe, поскольку данные эффекты «заимствованы» из программы
R.15.6 Специальные функции
R.15.6 Специальные функции Механизм управления особыми ситуациями использует для реакции на ошибки при самой обработке особых ситуаций функции:terminate() и
Специальные команды
Специальные команды В подменю Image ? Adjustments (Изображение ? Коррекция) присутствует также несколько команд, которые можно одновременно причислить и к цветовой коррекции, и к специальным эффектам.Команда Invert (Инверсия) инвертирует цвета, то есть меняет яркость каждого
Специальные пользователи
Специальные пользователи Пользователь SYSDBA имеет особые права ко всем базам данных и их объектам, независимо от того, какой пользователь ими владеет[137]. Более того, в операционных системах, где реализована концепция Суперпользователя, - пользователь с привилегиями root или
Специальные папки
Специальные папки В главе, посвященной функциям Windows API, путь к специальным папкам отыскивался с помощью функции SHGetSpecialFolderPath. Сторонники управляемого кода могут воспользоваться методом GetFolderPath, который появился в .NET Compact Framework 2.0. С помощью перечисления Environment.SpecialFolder
14.4.3. Специальные параметры
14.4.3. Специальные параметры Теперь, когда вы изучили, как получить доступ к параметрам shell–сценариев и применять их, было бы полезным узнать об этих параметрах больше. Рассмотрим, каким образом сценарий применяет специальные параметры. Существует семь специальных
Специальные программы
Специальные программы Вы уже знаете, как подключить телефон, смартфон или иное GPRS-устройство к ноутбуку стандартными средствами Windows.Однако производители данных устройств все чаще комплектуют свою продукцию программным обеспечением, которое упрощает процедуру
Специальные процедуры
Специальные процедуры Существует несколько способов скрыть вирус или сделать его более эффективным. Например, можно создать специальный макрос, прячущий вирус, если Tools/Macro открывается для просмотра. Код такого макроса может выглядеть примерно так:Sub MAIN On Error Goto