фаулер шаблоны корпоративных приложений pdf
Шаблоны корпоративных приложений
Посоветуйте книгу друзьям! Друзьям – скидка 10%, вам – рубли
Эта и ещё 2 книги за 299 ₽
Создание компьютерных систем – дело далеко не простое. По мере того как возрастает их сложность, процессы конструирования соответствующего программного обеспечения становятся все более трудоемкими, причем затраты труда растут экспоненциально. Как и в любой профессии, прогресс в программировании достигается исключительно путем обучения, причем не только на ошибках, но и на удачах – как своих, так и чужих. Книга дает ответы на трудные вопросы, с которыми приходится сталкиваться всем разработчикам корпоративных систем. Автор, известный специалист в области объектно-ориентированного программирования, заметил, что с развитием технологий базовые принципы проектирования и решения общих проблем остаются неизменными, и выделил более 40 наиболее употребительных подходов, оформив их в виде типовых решений. Результат перед вами – незаменимое руководство по архитектуре программных систем для любой корпоративной платформы. Это своеобразное учебное пособие поможет вам не только усвоить информацию, но и передать полученные знания окружающим значительно быстрее и эффективнее, чем это удавалось автору. Книга предназначена для программистов, проектировщиков и архитекторов, которые занимаются созданием корпоративных приложений и стремятся повысить качество принимаемых стратегических решений.
Шаблоны корпоративных приложений
Учебно-справочное руководство.
Мартин Фаулер «Шаблоны корпоративных приложений» Вильямс, 2016 год, 544 стр., исправленное издание; (45,3 мб. pdf)
В книге рассказано о шаблонах архитектуры корпоративных приложений, которые предполагают отображение, обработку и сохранение больших объемов разнообразных данных и моделей бизнес-процессов, манипулирующих этими данными. Таких, как к примеру: системы бронирования билетов, финансовые и банковские приложения, пакеты программ торгового и складского учета и т.п. Корпоративные приложения имеют специфические особенности и подходы в своей реализации: они существенным образом отличаются от встроенных систем, систем управления, телекоммуникационных приложений, программных продуктов для персональных компьютеров и пр.
Книга разделена на две части. Первая знакомит с важными темами, имеющими отношение к проектированию корпоративных приложений. Сформулированы варианты решения различных возникающих в процессе проектирования проблем. Все подробности и тонкости рассмотрены во второй части, которую можно использовать как справочную. Поэтому книгу можно использовать как краткий учебник (часть 1), и справочное руководство (часть II). Весь материал сопровождается примерами типовых решений.
Рассмотрены такие основные направления: распределение приложения по уровням, создание логики предметной области, разработка пользовательского WEB-интерфейса, связывание объектов с реляционной базой данных, распределение программных компонентов и данных. Примеры кода в книге реализованы на языках Java и С#. Книга рассчитана на разработчиков имеющих опыт программирования.
ISBN 978-5-8459-1611-2 (рус.)
Часть I. Обзор 41
Глава 1. «Расслоение» систем! 43
Развитие модели слоев в корпоративных программных приложениях 44
Три основных слоя 46
Где должны функционировать слои 48
Глава 2. Организация бизнес-логики 51
Выбор типового решения 55
Уровень служб 56
Глава 3. Объектные модели и реляционные базы данных 59
Архитектурные решения 59
Функциональные проблемы 64
Считывание данных 66
Взаимное отображение объектов и реляционных структур 67
Отображение связей 67
Наследование 71
Реализация отображения 73
Двойное отображение 74
Использование метаданных 75
Соединение с базой данных 76
Другие проблемы 78
Дополнительные источники информации 79
Глава 4. Представление данных в Web 81
Типовые решения представлений 84
Типовые решения входных контроллеров 86
Дополнительные источники информации 86
Глава 5. Управление параллельными заданиями 87
Проблемы параллелизма 88
Контексты выполнения 89
Изолированность и устойчивость данных 91
Стратегии блокирования 91
Предотвращение возможности несогласованного чтения данных 93
Разрешение взаимоблокировок 94
Транзакции 95
ACID: свойства транзакций 96
Ресурсы транзакций 97
Уровни изоляции 97
Системные транзакции и бизнес-транзакции 99
Типовые решения задачи обеспечения автономного параллелизма 101
Параллельные операции и серверы приложений 102
Дополнительные источники информации 104
Глава 6. Сеансы и состояния 105
В чем преимущество отсутствия «состояния» 105
Состояние сеанса 107
Способы сохранения состояния сеанса 108
Глава 7. Стратегии распределенных вычислений 111
Соблазны модели распределенных объектов 111
Интерфейсы локального и удаленного вызова 112
Когда без распределения не обойтись 114
Сужение границ распределения 115
Интерфейсы распределения 116
Глава 8. Общая картина 119
Предметная область 120
Источник данных 121
Источник данных для сценария транзакции 121
Источник данных для модуля таблицы 122
Источник данных для модели предметной области 122
Слой представления 123
Платформы и инструменты 124
Java и J2EE 124
.NET 125
Хранимые процедуры 126
Web-службы 126
Другие модели слоев 127
Часть II. Типовые решения 131
Глава 9. Представление бизнес-логики 133
Сценарий транзакции (Transaction Script) 133
Принцип действия 133
Назначение 135
Задача определения зачтенного дохода 135
Пример: определение зачтенного дохода (Java) 136
Модель предметной области (Domain Model) 140
Принцип действия 140
Назначение 143
Дополнительные источники информации 143
Пример: определение зачтенного дохода (Java) 144
Модуль таблицы (Table Module) 148
Принцип действия 149
Назначение 151
Пример: определение зачтенного дохода (С#) 152
Слой служб (Service Layer) 156
Принцип действия 157
Разновидности «бизнес-логики» 157
Варианты реализации 157
Быть или не быть удаленному доступу 158
Определение необходимых служб и операций 158
Назначение 160
Дополнительные источники информации 160
Пример: определение зачтенного дохода (Java) 161
Глава 10. Архитектурные типовые решения источников данных 167
Шлюз таблицы данных (Table Data Gateway) 167
Принцип действия 167
Назначение 168
Дополнительные источники информации 169
Пример: класс PersonGateway (С#) 170
Пример: использование объектов ADO.NET DataSet (С#) 172
Шлюз записи данных (Row Data Gateway) 175
Принцип действия 175
Назначение 176
Пример: запись о сотруднике (Java) 178
Пример: использование диспетчера данных для объекта домена (Java) 181
Активная запись (Active Record) 182
Принцип действия 182
Назначение 184
Пример: простой класс Person (Java) 184
Пре образо вател ь данных (Data Mapper) 187
Принцип действия 187
Обращение к методам поиска 190
Отображение данных на поля объектов домена 191
Отображения на основе метаданных 192
Назначение 192
Пример: простой преобразователь данных (Java) 193
Пример: отделение методов поиска (Java) 198
Пример: создание пустого объекта (Java) 201
Глава 11. Объектно-реляционные типовые решения, предназначенные для моделирования поведения 205
Единица работы (Unit of Work) 205
Принцип действия 206
Назначение 211
Пример: регистрация посредством изменяемого объекта (Java) 212
Коллекция объектов (Identity Мар) 216
Принцип действия 216
Выбор ключей 217
Явная или универсальная? 217
Сколько нужно коллекций? 217
Куда их поместить? 218
Назначение 219
Пример: методы для работы с коллекцией объектов (Java) 219
Загрузка по требованию (Lazy Load) 220
Принцип действия 221
Назначение 223
Пример: инициализация по требованию (Java) 224
Пример: виртуальный прокси-объект (Java) 224
Пример: использование диспетчера значения (Java) 226
Пример: использование фиктивных объектов (С#) 227
Глава 12. Объектно-реляционные типовые решения, предназначенные для моделирования структуры 237
Поле идентификации (Identity Reid) 237
Принцип действия 237
Выбор ключа 238
Представление поля идентификации в объекте 239
Вычисление нового значения ключа 240
Назначение 242
Дополнительные источники информации 243
Пример: числовой ключ (С#) 243
Пример: использование таблицы ключей (Java) 244
Пример: использование составного ключа (Java) 246
Класс ключа 246
Чтение 249
Вставка 252
Обновление и удаление 256
Отображение внешних ключей (Foreign Key Mapping) 258
Принцип действия 258
Назначение 261
Пример: однозначная ссылка (Java) 262
Пример: многотабличный поиск (Java) 265
Пример: коллекция ссылок (С#) 266
Отображение с помощью таблицы ассоциаций (Association Table Mapping) 269
Принцип действия 270
Назначение 270
Пример: служащие и профессиональные качества (С#) 271
Пример: использование SQL для непосредственного обращения к базе данных (Java) 274
Пример: загрузка сведений о нескольких служащих посредством одного запроса (Java) 278
Отображение зависимых объектов (Dependent Mapping) 283
Принцип действия 283
Назначение 285
Пример: альбомы и композиции (Java) 285
Внедренное значение ( Embedded Value) 288
Принцип действия 289
Назначение 289
Дополнительные источники информации 290
Пример: простой объект-значение (Java) 290
Сериализованный крупный объект (Serialized LOB) 292
Принцип действия 292
Назначение 294
Пример: сериализация иерархии отделов в формат XML (Java) 294
Наследование с одной таблицей (Single Table Inheritance) 297
Принцип действия 298
Назначение 298
Пример: общая таблица игроков (С#) 299
Загрузка объекта из базы данных 301
Обновление объекта 303
Вставка объекта 303
Удаление объекта 304
Наследование с таблицами для каждого класса (Class ТаЫе Inheritance) 305
Принцип действия 305
Назначение 306
Дополнительные источники информации 307
Пример: семейство игроков (С#) 307
Загрузка объекта 307
Обновление объекта 310
Вставка объекта 311
Удаление объекта 312
Наследование с таблицами для каждого конкретного класса (Concrete Table Inheritance) 313
Принцип действия 314
Назначение 315
Пример: конкретные классы игроков (С#) 316
Загрузка объекта из базы данных 318
Обновление объекта 320
Вставка объекта 320
Удаление объекта 321
Преобразователи наследования (Inheritance Марреге) 322
Принцип действия 323
Назначение 324
Глава 13. Типовые решения объектно-реляционного отображения с использованием метаданных 325
Отображение метаданных (Metadata Mapping) 325
Принцип действия 326
Назначение 327
Пример: использование метаданных и метода отражения (Дача) 328
Хранение метаданных 328
Поиск по идентификатору 330
Запись в базу данных 332
Извлечение множества объектов 334
Объект запроса (Query Object) 335
Принцип действия 336
Назначение 337
Дополнительные источники информации 337
Пример: простой объект запроса (Java) 337
Хранилище (Repository) 341
Принцип действия 342
Назначение 343
Дополнительные источники информации 344
Пример: поиск подчиненных заданного сотрудника (Java) 344
Пример: выбор стратегий хранилища (Java) 345
Глава 14. Типовые решения, предназначенные для представления данных в WEB 347
Модель-представление—контроллер (Model Viev Controller) 347
Принцип действия 348
Назначение 350
Контроллер страниц (Page Controller) 350
Принцип действия 351
Назначение 352
Пример: простое отображение с помощью контроллера-сервлета и представления JSP (Java) 352
Пример: использование страницы JSP в качестве обработчика запросов (Java) 355
Пример: обработка запросов страницей сервера с применением механизма разделения кода и представления (С#) 358
Контроллер запросов (Front Controller) 362
Принцип действия 362
Назначение 364
Дополнительные источники информации 364
Пример: простое отображение (Java) 365
Представление по шаблону (Template Viev) 368
Принцип действия 369
Вставка маркеров 369
Вспомогательный объект 370
Условное отображение 370
Итерация 371
Обработка страницы 372
Использование сценариев 372
Назначение 372
Пример: использование страницы ЙР в качестве представления с вынесением контроллера в отдельный объект (Java) 373
Пример: страница сервера ASP.NET (С#) 375
Представление с преобразованием (Transform Viev) 379
Принцип действия 379
Назначение 380
Пример: простое преобразование (Java) 381
Двухэтапное представление (Two Step Viev) 383
Принцип действия 383
Назначение 385
Пример: двухэтапное применение XSLT (XSLT) 390
Пример: страницы №Р и пользовательские дескрипторы (Java) 393
Контроллер приложения (Application Controller) 397
Принцип действия 398
Назначение 400
Дополнительные источники информации 400
Пример: модель состояний контроллера приложения (Java) 400
Глава 15. Типовые решения распределенной обработки данных 405
И интерфейс удаленного доступа (Remote Facade) 405
Принцип действия 406
Интерфейс удаленного доступа и типовое решение интерфейс сеанса (Session Facade) 409
Слой служб 409
Назначение 410
Пример: использование компонента сеанса Java в качестве интерфейса удаленного доступа (Java) 410
Пример: WEB-служба (С#) 414
Объест переноса данных (Data Transfer Object) 419
Принцип действия 419
Сериализация объекта переноса данных 421
Сборка объекта переноса данных из объектов домена 423
Назначение 424
Дополнительные источники информации 424
Пример: передача информации об альбомах (Java) 425
Пример: сериализация с использованием XML (Java) 429
Глава 16. Типовые решения для обработки задач автономного параллелизма 433
Оптимистическая автономная блокировка (Optimistic Offline Lock) 434
Принцип действия 435
Назначение 439
Пример: слой домена с преобразователями данных (Java) 439
Пессимистическая автономная блокировка (Pessimistic Offline Lock) 445
Принцип действия 446
Назначение 450
Пример: простой диспетчер блокировки (Java) 450
Блокировка с низкой степенью детализации (Coarse-Grained Lock) 457
Принцип действия 457
Назначение 460
Пример: общая оптимистическая автономная блокировка (Java) 460
Пример: общая пессимистическая автономная блокировка (Java) 466
Пример: оптимистическая автономная блокировка корневого элемента (Java) 467
Неявная блокировка (Implicit Lock) 468
Принцип действия 469
Назначение 470
Пример: неявная пессимистическая автономная блокировка (Java) 470
Глава 17. Типовые решения для хранения состояния сеанса 473
Сохранение состояния сеанса на стороне клиента (Client Session State) 473
Принцип действия 473
Назначение 474
Сохранение состояния сеанса на стороне сервера (Server Session State) 475
Принцип действия 475
Назначение 478
Сохранение состояния сеанса в базе данных (Database Session State) 479
Принцип действия 479
Назначение 481
Глава 18. Базовые типовые решения 483
Шлюз (Gateway) 483
Принцип действия 484
Назначение 484
Пример: сознание шлюза к службе отправки сообщений (Java) 485
Преобразователь (Mapper) 489
Принцип действия 490
Назначение 490
Супертип слоя (Layer Supertype) 491
Принцип действия 491
Назначение 491
Пример: объект домена (Java) 491
Отделенный интерфейс (Separated Interface) 492
Принцип действия 493
Назначение 494
Реестр (Registry) 495
Принцип действия 495
Назначение 497
Пример: реестр с единственным экземпляром (Java) 498
Пример: реестр, уникальный в пределах потока (Java) 499
Объект-значение (Value Object) 500
Принцип действия 501
Назначение 502
Совпадение названий 502
Деньги (Money) 502
Принцип действия 503
Назначение 506
Пример: класс Money (Java) 506
Частный случай (Special Case) 511
Принцип действия 512
Назначение 512
Дополнительные источники информации 512
Пример: объект NullEmployee (С#) 513
Дополнительный модуль (Plugin) 514
Принцип действия 514
Назначение 515
Пример: генератор идентификаторов (Java) 516
Фиктивная служба (Service Stub) 519
Принцип действия 519
Назначение 520
Пример: служба определения величины налога (Java) 521
Множество записей (Record Set) 523
Принцип действия 524
Явный интерфейс 524
Назначение 526
Список основных источников информации 527
Предметный указатель 532
ForCoder
Навазние: Шаблоны корпоративных приложений
Автор: Мартин Фаулер
Издательство:
Год: 2016
Страниц: 544
Язык: Русский
Размер: 45
Формат: pdf
ISBN: 978-5-8459-1611-2
PDF: 45 Мб
Создание компьютерных систем — дело далеко не простое. По мере того как возрастает их сложность, процессы конструирования соответствующего программного обеспечения становятся все более трудоемкими, причем затраты труда растут экспоненциально. Как и в любой профессии, прогресс в программировании достигается исключительно путем обучения, причем не только на ошибках, но и на удачах — как своих, так и чужих. Книга дает ответы на трудные вопросы, с которыми приходится сталкиваться всем разработчикам корпоративных систем. Автор, известный специалист в области объектно-ориентированного программирования, заметил, что с развитием технологий базовые принципы проектирования и решения общих проблем остаются неизменными, и выделил более 40 наиболее употребительных подходов, оформив их в виде типовых решений. Результат перед вами — незаменимое руководство по архитектуре программных систем для любой корпоративной платформы. Это своеобразное учебное пособие поможет вам не только усвоить информацию, но и передать полученные знания окружающим значительно быстрее и эффективнее, чем это удавалось автору.
Книга предназначена для программистов, проектировщиков и архитекторов, которые занимаются созданием корпоративных приложений и стремятся повысить качество принимаемых стратегических решений.
5,395 просмотров всего, 1 просмотров сегодня
Организация бизнес-логики корпоративных приложений. Какие возможны варианты?
В этой статье мы попытаемся найти ответ на вопрос, обозначений в заголовке. А также порассуждаем на тему возможности универсального решения на все случае жизни.
Три типовых решения при работе с бизнес-логикой по Фаулеру
Сколько типовых решений на самом деле?
Понятно, что речь не идет о чистой реализации той или иной парадигмы. Всегда есть компромиссы, вызванные ограничениями используемых технологий. Если вы пишете на C# или Java, объектно-ориентированных языках по своей природе, то это совсем не значит, что ваш код автоматически становится объектно-ориентированным. Всю программу вполне могут поместить в один единственный класс, объявить все методы статическими и использовать их из любого фрагмента кода. Таким образом, в каждом конкретном приложении будет своя кривая. Нужно лишь понять, к какой из этих двух категорий она ближе.
Как влияют фреймворки и инструменты разработки на кривую стоимости?
Проблема в том, что используемые средства накладывают ограничения, которые не позволят вам реализовать тот или иной подход в полной мере. Например, с помощью Dapper не удобно работать со сложными ассоциациями внутри доменных сущностей. А при использовании ORM уровня Entity Framework вы добавляете код для отображения сущностей на таблицы. Если говорить о NoSQL СУБД, для примера Neo4j, то там очень выразительный и мощный для своих задач язык. Но опять же это приведет к использованию процедурной парадигмы.
Насколько легко сменить выбранное решение?
Выводы
Из всего, что мы обсудили, можно сделать выводы:
При проектировании сервиса с нуля лучше сразу прогнозировать дальнейшее развитие этого сервиса и выбирать наиболее подходящее типовое решение.
Если дальнейшее развитие для сервиса не очевидно, то лучше сразу позаботиться о возможной смене парадигмы. Например, предпочитая eventual consistency. При добавлении нового функционала всегда держать в уме возможность смены решения.
Какие еще выводы вы могли бы предложить? Оставляйте ваши комментарии, давайте обсудим.
Технокнига, часть 4: литература по управлению продуктом, разработке веб-сервисов, управлению веб-проектами, бизнесу и системному анализу архитекторов
Мы продолжаем публиковать список рекомендуемой литературы для студентов Технопарка. На этот раз вас ждет заключительная часть, рассчитанная на студентов 4 семестра. Предыдущие части: первая, вторая, третья.
Управление продуктом
Книга: «Inspired: How To Create Products Customers Love»
Автор: Marty Cagan
Книга: «Преодоление пропасти. Как вывести технологический продукт на массовый рынок»
Автор: Джеффри А. Мур
Джеффри Мур — автор нескольких деловых бестселлеров, в числе которых «Преодоление пропасти», «Внутри торнадо», «Игра горилл», «Жизнь на линии разлома», «Вторая космическая». В круг его интересов входят исследования роста и развития рынков, их влияние на бизнес-стратегии компаний. В основе идей Мура лежит опыт работы в качестве консультанта в Кремниевой долине — сначала в компании The McKenna Group, позже — в основанной им The Chasm Group. Мур получил степень бакалавра по американской литературе в Стэнфордском университете (1967 г.) и докторскую степень по английской литературе в Университете Вашингтона (1974 г.).
Книга посвящена вопросам маркетинга и продаж хай-тек-продуктов на массовом рынке. Автор утверждает, что ранний и основной рынок хай-тек-продуктов разделяет пропасть, на преодоление которой и должны быть направлены все силы высокотехнологичного предприятия. Существование пропасти обусловлено значительными различиями между участниками раннего рынка (технологическими энтузиастами и провидцами) и участниками массового рынка (прагматиками). В книге Джеффри Мура вы найдете советы по преодолению этих различий, грамотному позиционированию и правильному выбору сегментов рынка.
Книга: «Agile Product Management with Scrum: Creating Products that Customers Love»
Автор: Roman Pichler
Роман Пичлер — один из специалистов по применению Lean- и Agile-методологии для управления продуктом. Он является автором нескольких книг по данной тематике, а также консультантом по созданию эффективных систем управления продуктом.
В книге на основе реальных примеров демонстрируется, как создать успешный продукт с помощью методологий Scrum. Описывается широкое разнообразие подходов к управлению продуктом с помощью гибких методологий. Также вы узнаете, чем отличаются разработчики, использующие методологию Scrum, от других, и как преодолеть трудности, возникающие перед каждым, кто применяет Scrum при создании какого-либо продукта.
Книга: «Построение бизнес-моделей. Настольная книга стратега и новатора»
Авторы: Александр Остервальдер, Ив Пинье
Александр Остервальдер пишет книги, читает лекции, а также консультирует по вопросам инновационных бизнес-моделей. Его практический подход к дизайну инновационных бизнес-моделей, разработанный совместно с доктором Ивом Пинье, применяется во многих отраслях во всем мире, в частности, компаниями 3M, Ericsson, Capgemini, Deloitte, Telenor и др.
В книге описывается оригинальная концепция анализа, построения и совершенствования бизнес-моделей, которой пользуются крупнейшие компании мира, включая Google, IBM, Ericsson. Авторы предлагают простой и понятный способ визуального представления базовых элементов, раскрывающих логику выбранного способа извлечения прибыли. Лист бумаги и блок стикеров — все, что понадобится для освоения авторского метода создания бизнес-моделей. Этот подход позволяет получить общую стратегическую картину бизнеса, сведя к минимуму обсуждение конкретных тактических шагов. Методика помогает представить работу организации как единое целое, а не совокупность обособленных функциональных подразделений и производственных операций.
Разработка веб-сервисов
Книга: «Корпоративный тайм-менеджмент»
Автор: Глеб Архангельский
Глеб Архангельский — основоположник российской школы тайм-менеджмента, ведущий российский эксперт в области управления временем, автор книг и видеокурсов, среди которых «Корпоративный тайм-менеджмент: Энциклопедия решений» и «Тайм-менеджмент. Тренажер». Заведующий кафедрой тайм-менеджмента Московской финансово-промышленной академии, кандидат экономических наук, руководитель проектов внедрения тайм-менеджмента в компаниях РУСАЛ, РАО «ЕЭС», Северсталь, PricewaterhouseCoopers, Вимм-Билль-Данн и др. Создатель интернет-проекта www.improvement.ru.
Для достижения успеха руководителям организаций необходимо постоянно повышать эффективность — свою и своих подчиненных. Добиться этого можно с помощью управления временем — тайм-менеджмента. Его философия заключается не в том, чтобы работать как можно больше, а в том, чтобы успешно справляться с профессиональными и личными задачами, все успевать, и таким образом делать свою жизнь гармоничной. В книге описываются удобные практические инструменты, которые помогут воплотить идеи тайм-менеджмента в жизнь. Многочисленные практические кейсы познакомят вас с опытом крупнейших российских корпораций, внедривших тайм-менеджмент в свою практику.
Книга: «Мифический человеко-месяц, или Как создаются программные системы»
Авторы: Фредерик Брукс
Фредерик Брукс — профессор вычислительной техники в школе бизнеса Кенан университета штата Северная Каролина в Чэпел Хилл. Он известен, прежде всего, как «отец IBM System/360». Помимо этого, Брукс разрабатывал архитектуру компьютеров Strtch и Harvest в IBM. Доктор Брукс был членом национального и военного комитетов по науке, основал в Чэпел Хилл факультет вычислительной техники и возглавлял его с 1964 по 1984 г. В настоящее время преподает, а также занимается исследованиями в области архитектуры компьютеров, молекулярной графики и виртуальных сред.
Первое издание этой книги написано Фредериком Бруксом еще в 1975 г. Это одна из обязательных книг для каждого разработчика вне зависимости от его статуса в компании. Основной темой книги является то, что привнесение в проект новых сил на поздних стадиях разработки лишь отодвигает срок сдачи проекта. Эта идея стала известна под названием «закон Брукса».
Книга: «Приемы объектно-ориентированного проектирования. Паттерны проектирования»
Авторы: Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес
Эрих Гамма — программист, ведущий разработчик JUnit и Eclipse. Работал в IBM над проектом Jazz. С 2011 г. руководит командой разработки Microsoft Visual Studio в Цюрихе, Швейцария.
Ричард Хелм — член Object Technology Practice Group в консультационном подразделении IBM в Австралии.
Ральф Джонсон — профессор департамента вычислительных наук в Университете штата Иллинойс. Один из старожилов сообщества программистов на Smalltalk.
Джон Влиссидес — с 1986 г. инженер-программист, консультант и исследователь в Стэнфордском университете. С 1991 г. работал в одном из исследовательских центров IBM.
В книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились вследствие поиска разработчиками путей повышения гибкости и степени повторного использования своих программ. Найденные решения приведены в краткой и легко применимой на практике форме. Авторы излагают принципы использования паттернов проектирования и приводят их каталог. В книге демонстрируется их роль в создании архитектуры сложных систем. Применяя содержащиеся в справочнике паттерны, проектировщик сможет с легкостью разрабатывать собственные приложения.
Книга: «Человеческий фактор. Успешные проекты и команды»
Авторы: Том ДеМарко, Тимоти Листер
ДеМарко и Листер возглавляют консалтинговую компанию Atlantic Systems Guild с филиалами в Нью-Йорке и Лондоне. С 1979 г. они вместе читают лекции, пишут книги и статьи, консультируют проекты по всему миру, специализируясь на оценках, производительности, руководстве и корпоративной культуре.
Том ДеМарко специализируется на руководстве проектами и методике. Тимоти Листер занимается преподаванием, журналистикой и консультированием по вопросам минимизации рисков в проектах по разработке программного обеспечения, а также участвует в разрешении спорных вопросов по программному обеспечению в Арбитражной Ассоциации США, входит в комитет Airlie сети руководителей проектов Минобороны США.
Ценность данной книги в том, что в ней описываются принципы, за каждым из которых стоит реальная история. Все главы содержат наблюдения и новаторские подходы, которые заставят читателей и руководителей увидеть важные вопросы в новом, более разумном ракурсе. С юмором и мудростью, обретенными за годы руководства и консультирования, ДеМарко и Листер демонстрируют, что сложнейшие проблемы разработки ПО имеют человеческую, а не техническую природу. Они не дают простых ответов, но дают ответы правильные, подкрепленные научными исследованиями.
Книга: «Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте»
Автор: Эдвард Йордон
Эдвард Йордон — автор и соавтор более двух десятков книг. В июне 1977 г. он официально объявлен членом Зала славы компьютеров, объединяющего таких выдающихся людей, как Чарльз Бэббидж, Сеймук Крей, Джемс Мартин, Грейс Хоппер, Джеральд Вайнберг и Билл Гейтс.
Широко известный как соавтор популярной методологии Коуда/Йордона, он создал и возглавил YOURDON — консалтинговую компанию, которая обучила уже более 250 тыс. человек во всем мире.
Книга: «Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов»
Автор: Уильям Паундстоун
Уильям Паундстоун — автор ряда книг, колумнист. Писал для The New York Times, Psychology Today, Esquire, Harpers, The Economist и Harvard Business Review. Изучал физику в Массачусетском технологическом институте.
Методику интервьюирования при приеме на работу в корпорацию Microsoft, основанную на решении задач и головоломок, теперь перенимают многие компании, желающие выявить наиболее творческих кандидатов среди просто способных. В книге излагается данная методика и предлагается более 30 трудных задач и головоломок. Здесь показано, как при помощи эффективного творческого и аналитического мышления можно отыскать ответы на самые нестандартные вопросы.
Книга: «Как пасти котов. Наставление для программистов, руководящих другими программистами»
Автор: Дж. Хэнк Рейнвотер
Хэнк Рейнвотер работает в Risk Sciences Group (Атланта, Джорджия), где руководит группой программистов, разрабатывающих программные продукты для страховых компаний. В разные периоды жизни программировал на языке Фортран с использованием перфокарт, преподавал математику в колледже, занимался исследованиями в областях радиоастрономии, систем наведения ракет и телеметрических систем, координировал производство встроенных систем цифрового управления. Как специалист в сфере разработки программных продуктов Хэнк успел поработать консультантом, лектором, программистом и руководителем групп разработки программ для самых разных областей человеческой деятельности.
Данная книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Программист подобен кошке, которая гуляет сама по себе — так исторически сложилось. Именно поэтому так непросто быть руководителем команды программистов. Даже если еще месяц назад вы были блестящим и дисциплинированным программистом, и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, каким образом проводить совещания, добиваться своевременного выполнения задач. А может быть, вы — опытный менеджер, желающий пересмотреть свои принципы лидерства? Тогда опять же эта книга для вас. Вне зависимости от возраста, пола и социального статуса она поможет укрепить свои позиции в роли лидера программистов.
Управление веб-проектом
Книга: «Как завоевывать друзей и оказывать влияние на людей»
Автор: Дейл Карнеги
Дейл Карнеги — психолог, писатель. Стоял у истоков создания теории общения, переведя научные разработки психологов того времени в практическую область, разработав собственную концепцию бесконфликтного и успешного общения. Разработал психологические курсы по самосовершенствованию, навыкам эффективного общения, выступления и др.
Это наиболее известная книга Дейла Карнеги, вышедшая в 1936 г. и изданная на многих языках мира. Представляет собой собрание практических советов и жизненных историй. Карнеги обширно пользуется цитатами известных успешных людей и в качестве примеров приводит опыт своих учеников, друзей и знакомых. Менее чем за год было продано более 1 млн экземпляров книги (еще при жизни автора только в США продано более 5 млн экземпляров). На протяжении десяти лет книга числилась в списках бестселлеров газеты The New York Times, что до сих пор является абсолютным рекордом.
Книга: «Психология влияния»
Автор: Роберт Чалдини
Роберт Чалдини — экспериментальный социальный психолог. Проходил обучение в университетах Висконсина и Северной Каролины. Обучался в аспирантуре Колумбийского университета. В течение всей исследовательской карьеры работал в Университете штата Аризоны. Был приглашенным профессором и исследователем в Университете штата Огайо, в Калифорнийском университете в Сан-Диего, в Калифорнийском университете в Санта-Крус, в Университете Южной Калифорнии, в Стэнфордском университете. В 1996 г. Чалдини был президентом Общества психологии личности и социальной психологии. Обладатель различных премий в области социальной психологии, психологии потребителя, преподавания психологии.
К искусству убеждения можно относиться по-разному. Одни стремятся овладеть им в совершенстве, чтобы всегда и везде добиваться своих целей. Другие считают недопустимым использование механизмов воздействия с целью навязывания невыгодных для людей условий. Однако никто не хочет стать жертвой манипуляторов, легкой добычей для продавцов, сборщиков средств и рекламодателей. В этой книге Роберт Чалдини, доктор наук, профессор психологии и признанный эксперт в сфере влияния и убеждения, рассматривает шесть универсальных приемов, благодаря которым вы станете настоящим мастером уговоров. В то же время, зная об этих приемах, вы всегда сможете избежать нежелательного воздействия со стороны.
Книга: «Лояльный клиент: Как превратить разгневанного покупателя в счастливого за 60 секунд»
Автор: Джон Шоул
Джон Шоул — специалист в области культуры сервиса, автор книг и обучающих программ, мотивационный спикер, бизнесмен. Более 40 лет консультирует ведущие компании мира по внедрению сервисной стратегии. В 1979 г. разработал первую в мире программу по обучению персонала работе с клиентами. Основатель и президент компании Service Quality Institute, по программе которой было обучено более 2 млн человек в 40 странах мира. Член Национальной ассоциации профессиональных ораторов США и Общества профессионалов по работе с потребителями США.
Ошибки совершают все, даже ведущие компании. Каким образом сотрудники исправляют эти ошибки — вот что отличает лидеров сервиса от всех остальных. Компенсация — это больше, чем извинения. Компенсировать — значит дать клиенту что-нибудь ценное, показав тем самым, что он для вас действительно важен. Довольные и лояльные клиенты не только останутся с вами, но и будут рекламировать вашу продукцию всем вокруг. В этой книге Джон Шоул, признанный гуру в области сервиса, дает конкретные рекомендации и приводит примеры того, как создать в компании систему компенсации, нацеленную на формирование лояльности клиентов.
Бизнес и системный анализ для архитекторов
Книга: «Принципы работы с требованиями к программному обеспечению. Унифицированный подход»
Авторы: Дин Леффингуэлл, Дон Уидриг
Дин Леффингуэлл — предприниматель, писатель и консультант-методист. Основатель компании ProQuo, осуществляющей исследования и оказывающей услуги в области маркетинга. Занимался вопросами применения Agile-методологий в крупных проектах по разработке ПО.
Дон Уидриг — независимый писатель, консультант. Разработал тренинговый курс для разработчиков ПО. Был вице-президентом по исследованиям и разработке в компании RELA, занимавшейся созданием систем реального времени.
Книга посвящена вопросам формирования требований и работе с ними при разработке сложных систем программного обеспечения. Недостаточное внимание к этому аспекту разработки может привести к превышению расходов, к затягиванию сроков выполнения проекта или даже полной его неудаче. Авторы предлагают хорошо зарекомендовавшие себя методы выявления, документирования, реализации и тестирования требований, используя для их описания как прецеденты, так и более традиционные методы. Особое внимание уделяется пониманию потребностей пользователей, определению масштаба проекта и обработке изменений. Все этапы иллюстрируются обсуждением полномасштабного рабочего примера.
Книга: «Применение UML 2.0 и шаблонов проектирования. Введение в объектно-ориентированный анализ, проектирование и итеративную разработку»
Автор: Крэг Ларман
Крэг Ларман — специалист в сфере вычислительных наук, занимается вопросами итеративной и инкрементной разработки, применением Agile-методологии, объектно-ориентированного анализа и дизайна.
В книге рассматриваются основные принципы и приемы объектно-ориентированного анализа и проектирования (ООА/П). В ней вы найдете сведения об итеративном и гибком моделировании, о шаблонах проектирования, об архитектурном анализе и др. Весь материал рассматривается в контексте гибкого подхода к разработке с совместным применением процесса UP и других итеративных методов.
Книга: «Дилемма инноватора. Как из-за новых технологий погибают сильные компании»
Автор: Клайтон М. Кристенсен
Клайтон М. Кристенсен — исследователь, профессор Harvard Business School, автор 11 бизнес-бестселлеров. Подробно изучил жизненный путь технологических инноваций в производстве различной продукции и пришел к неутешительному выводу: крупные компании всегда проигрывают мелким, когда дело касается чего-то нового. Его основные труды посвящены созданию и внедрению «подрывных» инноваций.
Эта книга о том, как разоряются компании, являющиеся лидерами отрасли, когда они занимают новую нишу на рынке или когда на рынке начинают превалировать новейшие технологии. Автор с помощью убедительных примеров доказывает: именно в период взлета руководству следует быть наиболее внимательным по отношению к своей компании, поскольку этот период чреват финансовыми потерями и даже полным крахом.
Книга: «Шаблоны корпоративных приложений»
Авторы: Мартин Фаулер, Дэвид Райс, Мэттью Фоммел, Эдвард Хайет, Роберт Ми, Рэнди Стаффорд
Мартин Фаулер — автор ряда книг и статей по архитектуре ПО, объектно-ориентированному анализу и разработке, языку UML, рефакторингу, экстремальному программированию, предметно-ориентированным языкам программирования.
Создание компьютерных систем — дело далеко не простое. По мере возрастания их сложности, процесс конструирования соответствующего программного обеспечения становится все более трудоемким, причем затраты труда растут экспоненциально. Как и в любой профессии, прогресс в программировании достигается исключительно путем обучения, причем не только на ошибках, но и на удачах — как своих, так и чужих. Книга дает ответы на трудные вопросы, с которыми приходится сталкиваться всем разработчикам корпоративных систем.
Книга: «Analysis Patterns: Reusable Object Models»
Автор: Мартин Фаулер
Аналитические шаблоны — высокоорганизованные логические схемы, которые могут применяться в самых разных проектах и компьютерных системах. В книге описывается свыше 70 шаблонов, применяемых во многих компаниях по всему миру.
Книга: «UML. Основы. Краткое руководство по стандартному языку объектного моделирования»
Автор: Мартин Фаулер
Книга остается лучшим руководством по применению UML. Главное ее достоинство заключается в кратком и сжатом изложении сути UML и особенностей применения этого языка в современном процессе разработки ПО. В книге описаны все главные типы диаграмм UML, рассказано, для чего они предназначены и какие нотации применяются при их создании и чтении. Это диаграммы классов, последовательности, объектов, пакетов, развертывания, прецедентов, состояний, деятельности, составных структур, компонентов, обзора взаимодействия, коммуникационные и временные.
Фаулер не только в ясной и доступной манере описывает ключевые аспекты языка UML, но и четко показывает роль UML в процессе разработки. Замечательные примеры моделирования — результат многолетнего опыта работы автора в области проектирования и моделирования.
Книга: «Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives»
Авторы: Nick Rozanski, Eóin Woods
Ник Розански — специалист по разработке программных архитектур в IT-департаменте одного из британских банков. Имеет 30-летний опыт работы в компаниях — системных интеграторах.
Эоин Вудс — ведущий разработчик системных архитектур одного из европейских банков.
Книга: «Архитектура программного обеспечения на практике»
Авторы: Лен Баас, Пол Клементс, Рик Кацман
Лен Баас — ведущий исследователь в NICTA, Австралия. До этого 25 лет проработал Институте программного инжиниринга Университета Карнеги Меллона. Почти 50 лет занимается вопросами разработки ПО и исследованиями в области системного анализа, встроенных и информационных систем.
Пол Клементс занимал руководящие должности в ряде компаний — разработчиков ПО.
Рик Кацман — профессор Университета штата Гавайи. Занимается исследованием программных архитектур, программного дизайна, аналитических инструментов, средств визуализации. Также интересуется вопросами взаимодействия человека с компьютерами и извлечения информации. Один из авторов ряда популярных методик архитектурного анализа.
Основываясь на собственном обширном опыте, авторы, с одной стороны, раскрывают основные технические вопросы проектирования, специфицирования и проверки правильности, с другой, неизменно подчеркивают важность коммерческого контекста, в котором проводится проектирование крупных систем.
Книга: «Учитесь видеть бизнес-процессы. Практика построения карт потоков создания ценности»
Авторы: Майк Ротер, Джон Шук
Майк Ротер — инженер, исследователь, писатель. Занимается вопросами управления, лидерства, улучшения, адаптации и трансформации коллективов.
Джон Шук исследует различные процессы, протекающие в коллективах на производствах. Учился в ряде вузов США и Японии, был директором Университета Мичигана и Японской программы технологического управления.
Процессы, особенно бизнес-процессы, — неотъемлемая составляющая деятельности любой организации. Четкое описание бизнес-процессов необходимо команде, управляющей соответствующим процессом, и владельцу процесса, и его лидеру. Не обойтись без подобного описания также сотрудникам, взаимодействующим с описываемыми процессами, а также поставщикам и потребителям.
Интерес к описанию процессов обусловлен многими причинами, самая важная из которых — возможность непрерывного совершенствования. Для совершенствования процессов, прежде всего, нужно обеспечить их визуализацию и прозрачность, то есть наглядно увидеть и понять, как работает процесс, где создается добавленная ценность, а где возникают потери. Карты потоков создания ценности позволяют описывать процессы любого рода, как производственные, так и сервисные. Предлагаемая методология построения карт потоков разработана Майком Ротером и Джоном Шуком на основе их личного опыта работы с компанией Toyota.
Книга: «Принцип пирамиды Минто. Золотые правила мышления, делового письма и устных выступлений»
Автор: Барбара Минто
Барбара Минто в 1963 г. стала первой женщиной-консультантом в McKinsey & Company, международной консалтинговой фирме по вопросам менеджмента. В 1966 г. руководство направило ее в Лондон с целью развития письменных навыков среди работников компании. Сегодня Барбара Минто преподает в бизнес-школах Гарварда, Стэнфорда, Чикаго, а также в крупнейших компаниях США и Европы.
Эта книга учит эффективно составлять письменные документы и устные выступления. Согласно теории автора, текст делового документа хорошо воспринимается только в том случае, если его идеи логически взаимосвязаны и выстроены по принципу пирамиды. Только такая структура делает сообщение максимально доступным для понимания, потому что мысли излагаются в оптимальном для восприятия порядке. Эта теория прошла проверку временем: автор много лет преподает свой курс в крупнейших бизнес-школах, университетах и компаниях.
«Золотые правила» Барбары Минто необходимы всем, кому приходится иметь дело с составлением отчетов, служебных записок, докладов, выступлений, презентаций, а также тем, кто хочет научиться предельно ясно и правильно излагать свои мысли, вне зависимости от рода деятельности.
Книга: «Психбольница в руках пациентов»
Автор: Алан Купер
Алан Купер — новатор в области программного обеспечения, программист, проектировщик и теоретик. Его упоминают как создателя первых серьезных деловых программ для микрокомпьютеров и часто называют «отцом» языка Visual Basic. Последние 15 лет Алан занимался созданием новой методологии проектирования успешного программного обеспечения, которую он называет целеориентированным процессом. Работая как с начинающими компаниями, так и с компаниями из числа Fortune 500, Роберт Рейман возглавлял десятки проектов по взаимодействию в таких областях, как электронная коммерция, порталы, персональная производительность, среды создания контента, медицинские и научные приборы, беспроводные технологии и портативные устройства. В качестве главы исследовательского отдела в Cooper Рейман руководил разработкой и совершенствованием многих целеориентированных методов, описанных в данной книге. В 2005 г. он стал первым президентом Ассоциации проектирования взаимодействия (IxDA, www.ixda.org) — глобальной некоммерческой организации, объединяющей проектировщиков взаимодействия. В настоящий момент он отвечает за проектирование опыта взаимодействия в Bose Corporation.
Как противостоять натиску компьютерных технологий, проникающих в нашу жизнь с ужасающей скоростью? Наши телефоны, фотокамеры, автомобили — все, что нас окружает, автоматизируется, программируется, создается людьми, которые, стремясь получить выгоду от применения микросхем, уклонились от своей прямой обязанности — делать эти продукты простыми в применении. Наша жизнь все больше концентрируется вокруг превратностей, странностей, решений и катастроф индустрии высоких технологий. Алан Купер предлагает решение проблемы: программированию должно предшествовать проектирование взаимодействия с пользователем.
Книга: «Современные методы описания функциональных требований к системам»
Автор: Алистер Коберн
Алистер Коберн — признанный эксперт по управлению проектами в области ПО. Работает консультантом в компании Humans and Technology, помогая ее клиентам достичь успеха с помощью объектно-ориентированного подхода. Более 20 лет руководит проектами разработки оборудования и ПО в области страхования, в компаниях розничной и электронной торговли, а также в таких крупных организациях, как Центральный банк Норвегии и IBM.
Практика создания вариантов использования как средств уточнения требований к поведению программных систем и бизнес-процессов быстро завоевывает популярность. На первый взгляд идея вариантов использования кажется простой. Однако разработчиков ждет трудная задача: приступая к созданию набора вариантов использования, необходимо выяснить, насколько точными они должны быть.
Данная книга служит новейшим практическим руководством по написанию вариантов использования. Здесь представлены начальная, промежуточная и развитая концепции, поэтому книга подходит читателям с разным уровнем подготовки. Инструкции подкреплены наглядными примерами и упражнениями.