Серьезная книга по архитектуре программного обеспечения.
Помогает понять что собственно является архитектурой, содержит полезные сведения о типовых архитектурных решениях, рассматривает с архитектурной точки зрения некоторые проекты и технологии (например, J2EE). Книга рассчитана на средний и высокий уровень программиста.
Книга читается трудновато, но содержит много интересных идей.
Например, авторы выделяют следующие аттрибуты качества любого программного обеспечения:
— готовность (свойство работать без отключений продолжительное время);
— модифицируемость (легкость внесения изменений);
— производительность;
— безопасность (защита от взлома);
— контролепригодность (легкость тестирования);
— практичность,
и утверждают, что достижение максимальных параметров по всем качествам невозможно или слишком дорого и предлагают метод анализа потребностей и достижения нужных уровней качеств в каждом проекте.
Книга содержит очень любопытные типовые сценарии (тактики) для достижения качества ПО. Например, по качеству «готовность» можно выделить три группы тактик:
1. обнаружение неисправностей;
2. восстановление после неисправностей;
3. предотвращение неисправностей.
Первая группа содержит следующие тактики: Ping/echo пакеты, Heartbeat, исключения.
Любопытно, но «практичность ПО» в книге вполне формализована и определяется следующими сторонами качества:
— изучение возможностей системы;
— эффективное использование системы;
— минимизация последствий ошибок;
— адаптация системы к потребностям пользователя;
— доверие и удовлетворение пользователя.
По сути авторы предлагают очень хорошо продуманные и апробированные наборы универсальных решений (программных или аппаратно-программных) или идей.
Просто понравившиеся цитаты из книги:
«Любая архитектура прдполагает разделение всех возможных изменений на три категории: локальные, нелокальные и архитектурные».
«Одни и те же задачи архитектура должна выполнять одними и теми же способами».