А.И. Петербург, Ю.Д. Тычинский
Тенденции и принципы проектирования сложных систем. Цифровые системы
Учебное пособие
УДК 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 |