Сообщений 1    Оценка 0        Оценить  
Система Orphus

Объектно-ориентированные методы

Принципы и практика

Автор: Иан Грэхем
Издательство: Вильямс, 2004
800 страниц

Материал предоставил: Вильямс
Найти в магазинах
Купить в Озоне (906 руб.)
Купить в Books.Ru
Купить в Болеро (557 руб.)
Купить в OZ.by (Беларусь)
Купить в My-Shop.ru (634 руб.)

Аннотация

Содержание
Предисловие к третьему изданию
Предмет книги
Основные отличия от предыдущих изданий
Предполагаемый круг читателей
Рекомендуемый порядок чтения
Замечания относительно орфографии и терминологии

Аннотация

Новое издание этой весьма популярной книги было полностью переработано автором с целью отразить все те значительные изменения, которые произошли в объектно-ориентированной методологии с момента выхода предыдущего, второго издания (1991 г.). В частности, большое внимание здесь уделяется многоуровневому проектированию и компонентной технологии, языкам Java и UML. Новое издание включает обсуждение всех ключевых концепций, преимуществ и недостатков, свойственных объектно-ориентированному подходу, а также описание технологий и инструментов, доступных разработчику в настоящее время. Книга будет полезна как специалистам-профессионалам, так тем, кто только приступает к изучению методологии ООП.

Содержание

Предисловие

Глава 1. Основные понятия

1.1. Историческая справка
Smalltalk и GUI
Влияние искусственного интеллекта
Новые языки
Новые базы данных и CASE_средства
Распределенные системы и Web
Анализ и проектирование
Компоненты
1.2. Что такое объектно_ориентированные методы
1.3. Основная терминология и идеи
Объекты
Идентичность
Инкапсуляция
Сообщения
Наследование
Полиморфизм
Подстановки
Делегирование: бесклассовое наследование
В двух словах
1.3.1. Абстракция и инкапсуляция
Стратегии связывания
Снова сообщения
Множественная абстракция
Еще о полиморфизме
Обобщение
Идентификация объектов
1.3.2. Наследование
Aardvark в часы досуга
Композиция и агрегирование
Множественное наследование
Роли
Жизнь без конфликтов в Aardvark
1.3.3. Инкапсуляция, наследование и объектная ориентация
Еще несколько определений
1.4. Резюме
1.5. Дополнительная литература
1.6. Упражнения

Глава 2. Преимущества объектно_ориентированного программирования и объектно_ориентированных методов

2.1. Преимущества
Качество
Модульность
Другие преимущества
Несколько слов о компании AARDVARK
2.2. Некоторые проблемы и заблуждения
2.3. Примеры
2.4. Стратегии перехода
2.5. Резюме
2.6. Дополнительная литература
2.7. Упражнения

Глава 3. Объектно_ориентированные и объектные языки программирования

3.1. Объектно_ориентированные языки программирования
3.1.1. Язык Simula
3.1.2. Язык Smalltalk и его диалекты
3.1.3. Расширения языка С
Язык Objective_C
Язык C++
3.1.4. Язык Eiffel
3.1.5. Язык Java
3.1.6. Язык Object_COBOL
3.2. Другие языки, обладающие объектно_ориентированными свойствами
3.3. Функциональные и аппликативные языки программирования
3.4. Системы, основанные на идеях искусственного интеллекта
3.4.1. Расширения языка Lisp
3.4.2. Другие системы разработки, основанные на идеях искусственного интеллекта
3.5. Объектные библиотеки, каркасы приложений и объектно_ориентированные языки программирования четвертого поколения
3.6. Другие направления развития
3.6.1. Другие языки
Язык Trellis
Actor
Языки BETA и Mj lner
Еще о некоторых языках
Предметы и аспекты
3.6.2. Теории типов и объектно_ориентированное программирование
3.6.3. Объектно_ориентированное программирование при помощи обычных языков
3.7. Выборобъектно_ориентированного языка
3.8. Направления и тенденции
3.9. Резюме
3.10. Дополнительная литература
3.11. Упражнения

Глава 4. Распределенные вычисления, программы среднего уровня и перенос систем на новую платформу

4.1. Распределенные вычисления и архитектура клиент/сервер
Типы распределенных систем
Модель клиент/сервер
Сравнение централизованной и распределенной моделей
Прозрачность размещения
Преимущества
4.1.1. Сетевые и архитектурные вопросы
4.2. Брокеры объектных запросов и программы среднего уровня
СОМ_технология
4.2.1. Роль языка XML
4.3. Интеграция приложений предприятия
4.4. Стратегии перехода к объектной технологии
4.4.1. Совмещение объектно_ориентированных систем с обычными
4.4.2. Стратегии управления данными для оболочек
4.4.3. Практические проблемы перехода
4.4.4. Многократное использование существующих компонентов и пакетов
4.4.5. Использование объектно_ориентированного анализа
Три источника появления объектов
Моделирование семантики данных
Объектно_ориентированное программирование
Искусственный интеллект
4.4.6. Объектно_ориентированный анализ и создание прототипов на основе знаний
4.4.7. Объектная технология как стратегия перехода
4.5. Резюме
4.6. Дополнительная литература
4.7. Упражнения

Глава 5. Технология баз данных

5.1. Краткая история моделей данных
5.1.1. Недостатки ранних баз данных
5.1.2. Реляционная модель и ее преимущества
5.1.3. Семантические модели и методы анализа данных
5.2. Недостатки реляционной модели
5.2.1. Нормализация
5.2.2. Правила целостности и бизнес_правила
5.2.3. Неопределенные значения
5.2.4. Абстрактные типы данных и сложные объекты
5.2.5. Рекурсивные запросы
5.3. Базы данных типа ''сущность_связь'' и дедуктивные базы данных
5.3.1. Базы данных типа ''сущность_связь''
5.3.2. Дедуктивные базы данных
5.4. Объектно_реляционные базы данных
5.5. Языки запросов
5.6. Что такое объектно_ориентированная база данных
5.7. Преимущества объектно_ориентированных баз данных
5.7.1. Преимущества, связанные с объектно_ориентированным языком программирования
5.7.2. Преимущества, связанные с семантически богатыми возможностями
5.7.3. Преимуществасамой объектно_ориентированной базы данных
5.7.4. Проблемы объектно_ориентированных баз данных
5.8. Обзор программных продуктов ООБД
5.8.1. Коммерческие объектно_ориентированные базы данных
Gemstone
Versant
ObjectStore
O2
Jasmine
POET
Objectivity
ORION и ITASCA
5.8.2. Другие важные продукты и проекты
Vbase и Ontos
IRIS, OpenODB, Odapter и PCLOS
Statice
Другие продукты
5.9. Целостность ссылок в объектных базах данных
5.10. Приложения объектно_ориентированных баз данных
5.10.1. Распределенные базы данных и поиск информации
5.11. Соображения стратегии
5.12. Резюме
5.13. Дополнительная литература
5.14. Упражнения

Глава 6. Объектно-ориентированный анализ и проектирование

6.1. История развития объектно_ориентированных методов анализа и проектирования
6.2. Инженерия программного обеспечения
Спецификации возможностей повторного использования
Ранние методы объектно_ориентированного анализа
6.2.1. Подходы, основанные на обязанностях и данных
6.2.2. Трансляционный и уточняющий подходы
6.3. Объектно_ориентированный анализ и проектирование с использованием UML
Аспекты атрибутов
6.3.1. Объектные структуры
Ассоциация
Ассоциации являются направленными
Наследование
Агрегация и композиция
Зависимости
Использование
6.3.2 Применение прецедентов для нахождения типов
6.3.3. Инварианты и наборы правил
Правила управления
Цепочки правил
Язык UML и правила
Поиск
Система SACIS
6.3.4. Инварианты и инкапсуляция
Ассоциации, используемые в качестве типов
Ассоциации и отображения
Ограничения целостности
Инверсии
Правила целостности и инкапсуляция
Правила обеспечения целостности ссылок
Семантическая целостность
6.3.5. Модели состояний
6.3.6. Переход к компонентному проектированию
Выборки
Пакеты, модули и оболочки
6.3.7. Шаблоны или модельные каркасы
6.3.8. Процесс проектирования
6.3.9. Документирование моделей
6.3.10. Расширения для приложений реального времени
6.4. Идентификация объектов
Анализ текстов
6.4.1. Философия познания и теория классификации
Существенные и случайные утверждения
6.4.2. Анализ задачи
6.4.3. Решетки Келли
6.5. CASE_средства
6.6. Резюме
6.7. Дополнительная литература
6.8. Упражнения

Глава 7. Архитектура, шаблоны и компоненты

7.1. Архитектура программного обеспечения и систем
Архитектура как крупная структура
Рамки проблемы
Архитектура как логическое обоснование проектного решения
7.2. Шаблоны, архитектура и раздельное проектирование
Другие типы шаблонов
7.2.1. Шаблоны проектирования для разделения
Разделение с использованием фабрики
Разделение при помощи делегирования
Разделение при помощи событий, наблюдателей и MVC
Разделение, выполняемое при помощи адаптера
Разделение при помощи портов и соединителей
7.3. Проектирование компонентов
7.3.1. Компоненты, предназначенные для решения проблем гибкости
7.3.2. Крупномасштабные соединители
7.3.3. Соответствие между бизнес_моделью и реализацией
7.3.4. Бизнес_компоненты и библиотеки
7.4. Резюме
7.5. Дополнительная литература
7.6. Упражнения

Глава 8. Инженерия требований

8.1. Подходы к инженерии требований
Формально или неформально
ETHICS
Социально ориентированные методы
ORCA
Метод SSM
8.2. Инженерия требований и системная спецификация
Природа моделей
BPR
8.2.1. Совместная работа, автоматизация технологического процесса и программное обеспечение коллективного использования
8.3. Декомпозиция больших задач
8.4. Исследование бизнес_целей и приоритетов
8.5. Агенты, диалоги и бизнес_процессы
8.5.1. Модели бизнес_процессов
Пример
Соответствие моделей
8.5.2. Диаграммы видов деятельности и моделирование бизнес_процессов
8.6. От диалогов к задачам и прецедентам
Теория сценариев
Задачи и прецеденты
Стереотипы ''includes'' и ''extends''
Атомарность
Объединение наборов задач
Ограничение интерфейса
Объекты_контроллеры
Прецеденты и сценарии
Базовые или общие прецеденты
8.7. От объектной модели задачи к объектной модели бизнес_процессов
Упрощенные агенты
8.8. Незаметность для пользователя
Пример
Связь задач с классами
8.9. Шаблон силлогизма для генерации прецедентов
8.10. Обеспечение полноты сценариев
8.11. Множества ассоциаций задачи и диаграммы последовательностей
Диаграммы последовательностей UML
Пример
8.11.1. Конъюнктивные, дизъюнктивные и вложенные наборы ассоциаций
Создание набора ассоциаций
8.12. Выполняемые спецификации и моделирование
8.12.1. Дискретные события и моделирование во времени
Многопоточность
8.13. Требования к организации и проведению семинаров
8.13.1. Распределение ролей во время семинаров
8.13.2. Кто должен посещать семинары
Пользователи
Разработчики
8.13.3. Выбор места проведения семинара
8.13.4. Вопросы логистики
8.13.5. Контрольные списки
8.13.6. Требования к помощникам руководителя семинара
8.13.7. Кто должен вести записи
8.13.8. Проведение семинара
Ловите момент
Окончание семинара
8.13.9. Использование опросов в контексте семинаров
8.14. Резюме
8.15. Дополнительнаялитература
8.16. Упражнения

Глава 9. Управление процессом и проектом

9.1. Зачем придерживаться процесса
9.2. Каковы задачи объектно_ориентированного метода
9.3. Классические модели жизненного цикла
9.3.1. Каскадная модель, V_ и X_модели
9.3.2. Спиральные модели
9.3.3. Модель типа ''фонтан'' и процесс MOSES
9.3.4. Фрактальные модели, модели типа раковины и игры в пинбол
9.4. Семинары, временные блоки и эволюционная разработка
9.4.1. Принципы динамической разработки систем
9.5. Модели жизненного цикла процесса и продукта
9.5.1. Объектно_ориентированные модели жизненных циклов
9.5.1. Технологии Objectory и Rational Unified Process
9.5.2. Процесс OPEN
9.6. Модель процесса на основе контрактов
Определения
Модель на основе контрактов
Высокоуровневая структура проекта
Прежде чем двинуться в путь:
Итерации разработки
Программные виды деятельности
Полный жизненный цикл
Регламент
Представление метода
9.7. Подробнее о процессе на основе соглашений
9.7.1. Стадия начала проекта и связанные с ней виды деятельности
9.7.2. Определение требований
Определение границ системы
Семинары по уточнению деталей
9.7.3. Анализ и уточнение плана
9.7.4. Планирование временных блоков
9.7.5. Разработка в рамках временного блока: построение
9.7.6. Проектирование
Технологии
9.7.7. Программирование
9.7.8. Тестирование
9.7.9. Рецензирование пользователями и тестирование приемлемости
9.7.10. Объединение, координация, повторное использование и документирование
9.7.11. Оценка и повторное использование
9.7.12. Планирование реализации
9.7.13. Планирование разработки и ресурсов
9.7.14. Моделирование предметной области и управление архивом
9.7.15. Устранение ошибок
9.7.16. Общие задачи и вопросы управления проектом
Запуск проекта
Анализ рисков
Начало работы
Выполнение проекта
Планирование качества
Маленькие проекты
Рецензирование после реализации
Документы и средства поддержки
9.7.17. Роли и обязанности в проекте
Групповые роли
Роли проекта
Роли разработчиков
Роли пользователей
Другие роли
9.8. Управление повторным использованием
Модели библиотек повторного использования
9.9. Метрики и усовершенствование процесса
9.9.1. Метрики
Показатели MIT
Сродство
Другие подходы
Метрики метода SOMA
Модели оценки
9.9.2. Усовершенствование процесса
9.10. Проектирование пользовательского интерфейса
История пользовательского интерфейса
Почему именно GUI
9.10.1. Проектирование человеко_машинного взаимодействия
Выбор аппаратных средств
Стили взаимодействия
9.10.2. Основы психологии познания
9.10.3. Принципы разработки средств человеко_машинного взаимодействия
GUEP
9.10.4. Рекомендации по разработке пользовательского интерфейса
Проектирование диалогов
Привлечение внимания и использование цветов
Метрики и тесты на удобство использования
Анализ задач
Пользовательские интерфейсы и объектные системы
Вопросы исследований
Стандарты GUI
9.11. Тестирование
9.12. Резюме
9.13. Дополнительная литература
9.14. Упражнения

Глава 10. Приложения

10.1. Web_приложения
10.2. Другие коммерческие приложения
10.2.1. Графические пользовательские интерфейсы
10.2.2. Моделирование
10.2.3. Географические информационные системы
10.2.4. Параллельные системы и аппаратные средства
Strand
10.2.5. Другие приложения
10.3. Экспертные системы, искусственный интеллект и интеллектуальные агенты
Aardvark
10.3.1. Архитектуры ''классной доски'' и системы исполнителей
BLOBS
10.3.2. Нейронные сети и параллельные вычисления
10.3.3. Интеллектуальные агенты
Что такое агент
Ловушки
Архитектура агентных систем
Моделирование агентов с помощью объектов
Моделирование бизнес_процессов при помощи агентов
10.4. Назад в будущее
Языковые тенденции
Объекты, искусственный интеллект и неопределенность
Распределенные системы и системы клиент/сервер
Параллельные системы
Формальные методы
Смерть универсальной вычислительной машины
10.5. Резюме
10.6. Дополнительная литература

Приложение А. Нечеткие объекты: наследование в условиях неопределенности

A.1. Представление знаний об объектах в искусственном интеллекте
A.1.1. Семантические сети и фреймы
A.1.2. Наследование свойств
A.2. Основные понятия теории нечетких множеств
A.2.1. Нечеткие множества
A.2.2. Правила логического вывода
A.2.3. Дефаззификация
A.2.4. Нечеткие кванторы
A.3. Нечеткие объекты
A.4. Приложение
A.5. Нечеткие объекты, нечеткие кванторы и немонотоннаялогика
A.6. Бизнес_стратегия и нечеткие модели
A.7. Правила управления для нечетких систем множественного наследования
A.8. Теория проектирования нечетких объектов
A.8.1. Полнота проектного решения
A.8.2. Объекты или атрибуты
A.8.3. Тавтологические объекты и максимальная декомпозиция
A.9. Связь нечетких объектов с другими понятиями
A.9.1. Нечеткие объекты как обобщение нечетких отношений
A.9.2. Нечеткие объекты как обобщение объектов
A.9.3. Нечеткие объекты как универсальное обобщение
A.10. Резюме
A.11. Дополнительная литература

Приложение Б. Ранние методы анализа и проектирования

Б.1. Ранние методы и системы обозначений, используемые при объектно_ориентированном проектировании
Booch86
GOOD
HOOD
OOSD
JSD и KISS
BOOCH91 и BOOCH93
Метод OODLE и рекурсивное проектирование
Карты CRC и методология RDD
Б.2. Ранние методы объектно_ориентированного анализа
Метод OOSA Шлеер_Меллора
Метод Коада
ОМТ
Метод Мартина_Оделла и средства проектирования Ptech
Метод ''класс_связь''
OSA
Метод SEOO
Метод BON
Fusion
OBA
Syntropy
MOSES
Метод Текселя (Texel)
Метод OORASS
Другие методы
Б.3. Дополнительная литература

Приложение В. Краткое изложение системы обозначений UML

В.1. Обозначения для моделирования объектов
В.2. Обозначения для моделирования действий (прецедентов)
В.3. Обозначения для диаграмм последовательностей и сотрудничества
В.4. Обозначения для моделирования состояний
В.5. Обозначения для диаграмм действий
В.6. Обозначения для моделей реализации и компонентов
В.7. Виды сотрудничества и шаблоны
В.8. Обозначения для систем реального времени

Словарь терминов
Библиография
Предметный указатель
Алфавитный указатель авторов

Предисловие к третьему изданию

В 1991 году, когда вышло первое издание этой книги, в среде специалистов по информационным технологиям, а также среди ученых царила атмосфера всеобщей увлеченности объектно-ориентированными методами. Почти каждую неделю проводились какие-либо открытые для широкой публики семинары, посвященные объектно-ориентированному подходу (ООП). Создавались новые журналы, специализирующиеся на данной теме, одна за другой проводились конференции, а число членов всевозможных групп и обществ, связанных с модным тогда направлением развития информационных технологий, стремительно росло. К моменту выхода второго издания интерес к ООП достиг своего апогея, и трудно было бы найти коммерческую организацию, не имевшую хотя бы первого опыта применения данной технологии (то ли положительного, то ли отрицательного). "Объектно-ориентированная лихорадка" продолжается и по сей день. В то время как в области языков программирования достигнута хотя бы относительная стабильность, в области методов проектирования и моделей жизненного цикла программных систем наблюдается настоящий бум. Это происходит даже несмотря на появление универсального языка моделирования UML (Unified Modelling Language), который внес определенную ясность в дискуссии о подходящей системе обозначений. На сегодняшний день акцент сместился на технологии разработки интегрированных приложений корпоративного уровня и компонентные технологии. Со времени выхода второго издания область объектных технологий (ОТ), по видимому, увеличилась втрое, если судить по числу опубликованных работ и освещенных в них вопросов. И вот начала вырисовываться пугающая перспектива основательной доработки этой книги, призванной давать исчерпывающее описание современного состояния ООП, что было бы почти невозможно сделать без существенного увеличения ее объема. С другой стороны, многие из новейших разработок являются, в сущности, вариациями на темы, известные еще с 1994 года. Так, популярность понятия идиомы, введенного Джимом Коплиеном (Jim Coplien) для языка C++, стала одним из первых предвестников возникновения настоящего интереса к шаблонам проектирования. Ранние версии брокеров объектных запросов, основанные на архитектурной модели группы OMG, постепенно стали широко применяться при разработке программного обеспечения. Кроме того, с учетом накопленного опыта были созданы новые, более совершенные языки объектно-ориентированного программирования, а объектно-ориентированные базы данных "покинули" исследовательские лаборатории и стали использоваться в коммерческих целях, хотя и не так широко, как ожидалось. Вместе с тем исследования в области методов анализа и проектирования отличаются радикальной новизной, и подобных очевидных преемственных связей проследить не удается. В итоге, переработка книги обещала быть весьма существенной.

Предмет книги

Данная книга представляет собой обзор всей области объектных технологий. Здесь рассматриваются вопросы объектно-ориентированного программирования, объектно-ориентированного проектирования, объектно-ориентированного анализа и объектно-ориентированных баз данных. Кроме того, в этой книге затрагиваются и некоторые смежные технологии. Существует достаточно много других книг по объектному подходу, посвященных подробному описанию тех или иных языков или методов. Однако более широкие концепции излагаются в них лишь мимоходом. Как правило, в этих книгах содержится абстрактное высокоуровневое описание "философии" объектно-ориентированного программирования и его преимуществ, однако читателю при этом сразу же предлагается большое количество специфического материала, связанного с синтаксисом определенного языка программирования. С другой стороны, в последнее время появились превосходные и исчерпывающие руководства по вопросам менеджмента в информационных технологиях, однако этим книгам недостает конкретного технического материала,необходимого студентам и программистам"практикам. Читатели, желающие постичь те аспекты объектной технологии, которые напрямую не связаны с технической стороной программирования, вынуждены обращаться к научной литературе, трудам конференций, объемным монографиям или сборникам статей, насыщенных изощренными выкладками. Таким образом, для охвата всей области объектных методов и предвидения их будущей роли необходимо продвигаться несколькими параллельными путями, не забывая при этом об их взаимосвязанности. Поэтому задача данной книги состоит в том, чтобы восполнить имеющийся в литературе пробел. Это достигается следующим образом.

Еще одна задача данного издания, как и двух предыдущих, состоит в том, чтобы дать четкие ответы на следующие вопросы.

Помимо перечисленных выше задач, данная книга имеет еще одну: ознакомить читателя с моими собственными, основанными на идее использования наборов правил (ruleset), результатами в области объектно-ориентированного концептуального моделирования, проектирования требований и процесса разработки - подход, получивший название SOMA (Semantic-Object Modelling Approach - семантический подход к объектному моделированию). Мне удалось соединить методы SOMA, Catalysis и язык UML, который используется при изложении данного материала. При изучении соответствующих глав книги читателю следует иметь ввиду одну отличительную особенность моего метода, которая состоит в трактовке объектного моделирования как универсального способа представления знаний о предметной области, а-не способа описания структур программ.

Основные отличия от предыдущих изданий

Настоящее издание было существенно переработано и дополнено новым материалом, отражающим основные изменения, которые произошли в области объектных технологий со времени выхода предыдущих изданий. Быстрый и повсеместный переход разработчиков программного обеспечения на объектные технологии изумил не только меня, но и самых больших приверженцев этого нового направления. Значительные изменения в самой технологии, которые произошли в течение последних трех лет (или около того), были уже менее удивительны. Эти изменения заключаются не только в росте числа созданных программных продуктов и используемых при этом методов. По сравнению с 1991 или 1994 годом, ситуация изменилась в целом, и вдумчивый аналитик или программист"практик сможет без труда найти достаточно много тому доказательств. Одним из наиболее значимых явлений стало широкое признание представителями программной индустрии разработок группы OMG, в особенности предложенных ею различных стандартов в области объектных технологий. С другой стороны, многое осталось на своих местах. В общем, задача нового издания книги остается прежней, но для ее достижения требуются совсем другие способы. В настоящем издании пересмотрены многие ключевые понятия, чтобы привести их в соответствие современному уровню и новым стандартам. Кроме того, обновлено описание многих доступных средств и методов разработки, а на основе новых фактов сформулированы новые выводы.

Основные изменения состоят в следующем. Глава 1 подверглась лишь незначительной переработке с тем, чтобы добиться большей ясности и единообразия той терминологии, которая сложилась в области разработки программного обеспечения на момент написания первого издания. Эти уточненные формулировки были выработаны мной благодаря опыту применения более совершенных (как я надеюсь) педагогических методик при формировании курсов лекций по данному предмету и представлении их перед широкой аудиторией. В новой главе 4, посвященной промежуточным звеньям и стратегиям передачи данных, содержится обширный материал по стандартам группы OMG. Материал по объектно-ориентированным базам данных из главы 5 был полностью переработан и теперь охватывает новейшие и гораздо более совершенные разработки в этой области. Наиболее существенной переработке подверглись главы по объектно-ориентированному анализу, проектированию, а также организации процессов и управлению ими. Сделанный в предыдущем издании обзор более чем 50 методов, актуальных на то время, теперь представляет лишь исторический интерес и поэтому помещен в приложение. Теперь во всей книге используется получивший широкое распространение язык UML, а в главах 6 и 7 рассматриваются реальные примеры хорошо выполненного объектно-ориентированного анализа и проектирования, в основу которых положены принципы методов Catalysis и SOMA. В отдельном приложении содержится краткое описание языка UML. В новой главе 7 рассматриваются архитектура программных систем, шаблоны проектирования и принципы разработки на основе компонентов. В главе 8 подробно описан подход SOMA к разработке на основе требований. Глава 9, посвященная менеджменту, в значительной степени переработана для достижения большей ясности в изложении материала. В частности, в ней содержатся более конкретные практические рекомендации по организации процесса разработки программной системы. В данную главу включены также рекомендации по проектированию пользовательского интерфейса. Во все остальные главы и приложение A внесены относительно небольшие изменения и дополнения, касающиеся новых разработок в данной области. Кроме того, были исправлены известные мне ошибки, обнаруженные во втором издании.

На протяжении последних лет все большее внимание я уделяю той многочисленной категории читателей, которые используют мои книги в качестве учебных пособий. Специально для них в конце каждой главы я добавил упражнения. Ответы на некоторые из них (по крайней мере, если ответ известен мне) можно найти на Web-узле компании TriReme. Объем библиографии заметно возрос по сравнению с предыдущим изданием, что вполне соответствует потоку новой литературы и расширению самой рассматриваемой области. Новый вариант словаря терминов также заметно отличается от предыдущего.

Несмотря на столь глубокую переработку, тема и основные задачи книги остаются неизменными, и я надеюсь, что в этом издании мне удалось сделать исчерпывающий, еще более ясный, актуальный и точный обзор области объектно-ориентированных методов.

Предполагаемый круг читателей

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

При работе над первыми двумя изданиями я ориентировался главным образом на специалистов по информационным технологиям и обработке данных, на разработчиков программного обеспечения, консультантов по информационным системам. Книгу можно порекомендовать всем, кто имеет дело с компьютерами как в сфере образования, так и в промышленности. Хотя в общем и целом это справедливо и для третьего издания, все же мне стало ясно, что наиболее благодарного читателя книга нашла в университетах, где ее часто используют в качестве учебного пособия для вводного курса по информационным технологиям или по разработке программных систем, возможно, дополняющего еще один курс объектно-ориентированного программирования. Данная книга может представлять интерес для преподавателей, специализирующихся в области компьютерных наук (Computer Science), системного анализа в бизнесе и, возможно, искусственного интеллекта. Ученых эта книга может заинтересовать как сжатый обзор"справочник современных результатов с указанием авторов оригинальных работ. Возможно, их также заинтересуют рассыпанные по тексту книги комментарии, в которых содержатся нестандартные оценки существующих работ, развивающие творческое начало. Прочитав эту книгу, менеджеры и руководители проектов смогут лучше понять, как применяемая технология разработки отражается на бизнесе, а значит, смогут более эффективно планировать свою деятельность. Консультантам, менеджерам проектов, системным аналитикам и проектировщикам книга поможет составить более точное и полное представление о современных технологиях и, таким образом, идти в ногу со временем, на практике применяя описанные в книге методики. Программисты, прочитав эту книгу, смогут расширить свой кругозор.

По мере создания материал книги проходил "обкатку" перед широкой аудиторией на различных конференциях, семинарах и учебных курсах.

Рекомендуемый порядок чтения


Книга построена таким образом, чтобы материал можно было читать в различном порядке. Два основных типа зависимостей между главами, влияющие на порядок чтения, представлены на диаграмме. Менеджерам и всем читателям, которых, в первую очередь, интересует общая характеристика отрасли на верхнем уровне абстракции, можно порекомендовать двигаться по вертикальной стрелке (главы 1-2 и 10). Менеджерам проектов может пригодиться также глава 9. Читателям, интересующимся методами анализа, следует избрать нижние стрелки, поскольку в главах 6-8 используется материал всех предыдущих глав. Главу 1 настоятельно рекомендуется прочесть всем, даже тем, кто хорошо знаком с объектно-ориентированным программированием, поскольку в ней вводится специфическая терминология, которая может отличаться от используемой в других изданиях; как уже отмечалось, данная книга написана с позиций концептуального моделирования. Темы, представляющие интерес для сравнительно узких специалистов, а также отступления от основной темы помечены специальной пиктограммой.

Я надеюсь, что при последовательном чтении читатель воспримет эту книгу как целостное и связное повествование. Как и всякое повествование, книга имеет несколько основных "сюжетных линий", к которым относятся установка различий в подходах проектировщика и автора концептуальной модели системы, необходимость интеграции объектно-ориентированного подхода с плодотворными идеями, выработанными в других областях компьютерных наук, а также необходимость добавления к известным преимуществам объектного подхода (таким, как возможность повторного использования результатов и расширяемость построенных систем). Кроме того, данная книга имеет высокую семантическую выразительность.

Замечания относительно орфографии и терминологии

Поскольку многие из нас являются ревностными поборниками строгих правил использования языка и поскольку особенности моего изложения материала уже вызвали нарекания со стороны читателей, я счел необходимым дать разъяснение тем принципам, которыми я руководствовался при написании данного текста.

В данном издании заимствованные слова я пишу в соответствии с греческим или латинским словом"оригиналом, даже если это противоречит привычным правилам. При этом заимствованные слова всюду выделены курсивом, их толкование всегда можно найти в словарях иностранных слов. Курсивом также выделены термины, которые являются предметом рассмотрения текущего раздела, и термины определений.

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

Слово метод, одно из наиболее часто встречающихся в книге, имеет различный смысл:

Я всячески старался избегать употребления некорректного слова методологии (во множественном числе) - это такая же нелепость, как и говорить во множественном числе о физиках или химиях. Напомню, что методология - это общее понятие, означающее науку о методе какой"либо науки или научной дисциплины. Единственный случай, когда можно допустить множественное число, связан с так называемым парадигмным сдвигом1 (в смысле Томаса Куна - Thomas Kuhn) в нашем понимании предмета. Так, поскольку большинство людей считают объектную технологию именно таким парадигмным сдвигом, корректной будет фраза вроде имеется различие между структурной и объектно-ориентированной методологиями, где речь идет о глобальной смене направлений в компьютерной науке в целом. Однако совершенно неприемлема грамматически сходная фраза имеется различие между методологиями Йордона и Джексона. Кстати, слова парадигма, получившего столь широкое распространение в компьютерных науках, я также старался избегать.

При написании книги, как и в жизни, я старался избавиться от укоренившегося в английском языке наследия женоненавистничества. Для обозначения некоторого неопределенного лица я предпочитаю использовать местоимение он(а) вместо неудобоваримого оборота он или она. Впрочем, и здесь возникают определенные сложности, связанные с различием грамматического рода и биологического пола. Существительное мужского рода человек я употребляю для обозначения представителей рода человеческого обоих полов. То же относится и к существительному женского рода персона (если последовательно и неуклонно стремиться к совпадению грамматического рода с биологическим полом, французам следовало бы говорить "le ou la personne", а англичанам - ввести в язык новое слово "woperson"). Впрочем, истинная политическая корректность обеспечивается изгнанием зла из своих поступков, а не перекраиванием языка.

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

Все сказанное выше есть теоретическая база, на которой построено данное изложение. На практике, возможно, текст содержит некоторые грамматические и орфографические ошибки.

    Сообщений 1    Оценка 0        Оценить