Проектирование программного обеспечения для обеспечения гибкости: как избежать застревания в тупике при программировании на русском
#1635559
Software Design for Flexibility: How to Avoid Programming Yourself into a Corner (B089423GC6)
Купить и скачать электронную книгу в форматах PDF, EPUB, FB2, MOBI
Chris Hanson | #384: Анализ и проектирование компьютерных систем
Стратегии построения крупных систем, которые легко адаптируются к новым условиям с минимальными изменениями в программном обеспечении.
Нехватка времени заставляет программистов писать код, который хорошо работает для узкой цели, без возможности дальнейшего развития. Но лучшие системы — это системы, способные к эволюции; их можно адаптировать к новым ситуациям, добавляя код, а не изменяя существующий. Авторы описывают методы, которые, по их мнению, оказались эффективными — за более чем 100 лет совокупного опыта программирования — и которые помогут программистам избежать тупиковых ситуаций в программировании.
Авторы исследуют способы повышения гибкости путем:
Нехватка времени заставляет программистов писать код, который хорошо работает для узкой цели, без возможности дальнейшего развития. Но лучшие системы — это системы, способные к эволюции; их можно адаптировать к новым ситуациям, добавляя код, а не изменяя существующий. Авторы описывают методы, которые, по их мнению, оказались эффективными — за более чем 100 лет совокупного опыта программирования — и которые помогут программистам избежать тупиковых ситуаций в программировании.
Авторы исследуют способы повышения гибкости путем:
- Системы организации, использующие комбинаторы для составления комбинированных элементов, от небольших функций до целых арифметических операций, со стандартизированными интерфейсами.
- Дополнение данных независимыми слоями аннотаций, такими как единицы измерения или информация о происхождении.
- Объединение независимых фрагментов неполной информации с использованием методов унификации или распространения.
- Разделение структуры управления и предметной области с помощью доменных моделей, систем правил и сопоставления с шаблонами, распространения и обратного поиска с учетом зависимостей.
- Расширение языка программирования с использованием динамически расширяемых интерпретаторов.