А.И. Петербург, Ю.Д. Тычинский
Тенденции и принципы проектирования сложных систем. Цифровые системы
Учебное пособие

УДК 621, ББК 32
Рецензенты:
Заведующий кафедрой «Компьютерные системы и сети», МГТУ им. Н.Э. Баумана, д. т. н., профессор В.В Сюзев
Эксперт, главный научный сотрудник ОАО «КБ Электроприбор», доктор технических наук, профессор В.В. Сафронов
Петербург А.И., Тычинский Ю.Д. Тенденции и принципы проектирования сложных систем. Цифровые системы. Учебное пособие. – М.: Международный издательский центр «Этносоциум», 2013. – 126 с.
В пособии рассматривается множество примеров конкретных разработок и технологий, выявляются основные причины их успеха или неудачи. Выявленные причины обобщаются, делается попытка их систематизации, даются общие рекомендации по проектированию. Пособие может рассматриваться, как введение в проблематику проектирования сложных систем, знакомство с основными подходами и терминологией. Основной акцент делается на цифровых, в частности, на программных системах и технологиях, поскольку подобные системы являются в настоящее время наиболее сложными и масштабными.
Пособие предназначается для студентов и аспирантов информационных специальностей, а также для начинающих разработчиков.
© Петербург А.И., Тычинский Ю.Д., 2013.
© Международный издательский центр «Этносоциум», 2013.
СОДЕРЖАНИЕ
| Введение | 5 |
| 1. Ключевые приемы разработки сложных систем | 9 |
| 1.1. Разделение труда, кооперация предприятий | 9 |
| 1.2. Промежуточный продукт, расширение рынка, усложнение продукта | 11 |
| 1.3. Декомпозиция сложных систем | 13 |
| 1.4. Агрегирование | 14 |
| 1.5. Проблемы стыковки подсистем. Инфраструктура системы | 16 |
| 1.6. Системы с открытой архитектурой | 19 |
| 1.7. Общесистемные ресурсы | 25 |
| 1.8. Многоуровневые структуры | 25 |
| 1.9. Основная проблема проектирования | 27 |
| 2. Цифровые системы | 30 |
| 2.1. Программные технологии | 33 |
| 2.2. Низкоуровневое программирование | 34 |
| 2.3. Языки высокого уровня | 35 |
| 2.4. Объектно-ориентированные языки | 37 |
| 2.5. Графические языки, CASE-технологии | 39 |
| 2.6. Идиомы. Паттерны проектирования | 41 |
| 2.7. Роль архитектуры | 43 |
| 2.8. Каркасы, фреймворки | 46 |
| 2.9. Рефакторинг | 49 |
| 2.10. Проблема увязки конкурирующих технологий | 49 |
| 2.11. Увязка языков программирования. Декомпозиция программ на исполнимые модули | 51 |
| 2.12. Многозадачность | 53 |
| 2.13. Сетевые ОС | 55 |
| 2.14. Удаленный вызов процедур | 55 |
| 2.15. Программное обеспечение промежуточного слоя | 57 |
| 2.16. Кроссплатформенность | 60 |
| 2.17. Виртуальная машина | 61 |
| 2.18. Технологии Java | 64 |
| 2.19 .NET Framework | 67 |
| 2.20. Протокол SOAP | 69 |
| 2.21. Веб-службы | 72 |
| 2.22. Сервис-ориентированные архитектуры | 74 |
| 2.23. Серебряная пуля | 76 |
| 3. Организация процесса разработки программного обеспечения | 79 |
| 3.1. Эволюция процессов разработки программного обеспечения | 79 |
| 3.2. Автоматизация разработки | 85 |
| 3.3. Когда базар строит собор | 87 |
| 3.4. Какая организация процесса разработки лучше | 94 |
| 4. Примеры организации систем | 96 |
| 4.1. Эволюция информационных систем предприятия | 96 |
| 4.2. Интеграция систем | 105 |
| 4.3. Монолитные системы | 106 |
| 4.4. Сервис-ориентированные системы реального времени | 107 |
| 4.5. Интернет | 116 |
| 4.6. Всемирная паутина | 119 |
| 4.7. Причины успеха Интернета | 121 |
| Выводы | 123 |
| Литература | 125 |
