130 likes | 275 Vues
Системное программирование Состояние и тенденции. Директор ИСП РАН академик Иванников В.П . ivan@ispras.ru. Software Engineering Conference (Russia) 2008 Москва, 23 октября. Технологии разработки ПО(1) Рост размеров кода ОС. Технологии разработки ПО(2) Другие показатели развития.
E N D
Системное программированиеСостояние и тенденции Директор ИСП РАН академик Иванников В.П. ivan@ispras.ru Software Engineering Conference (Russia) 2008 Москва, 23 октября
Технологии разработки ПО(1)Рост размеров кода ОС
Технологии разработки ПО(2)Другиепоказатели развития • Эскалация размеров и сложности • Увеличение функциональных возможностей • Рост объемов перерабатываемых данных • Расширение использования параллелизма и распределенности • Рост требований к переносимости и совместимости
Технологии разработки ПО(3) Текущие достижения • Объектно-ориентированные методы анализа и проектирования, языки программирования • Компонентные технологии • Стандартизация и уточнение семантики языковпрограммирования и библиотечных интерфейсов • Широкое использование итеративных процессов разработки • Расширение области применения формальных методов (model checking и др.)
Технологии разработки ПО(4)Проблемы • Количество ошибок на 1000 строк неоттестированного кода остается неизменным • Формальные методы разработки и анализа применимы лишь к небольшим системам
Технологии разработки ПО(5)Новые вызовы • Распределенные адаптивные и динамически перестраивающиеся системы • Масштабируемые технологии разработки и анализа свойств ПО на базе формальных методов • Интеграция различных методов верификации: дедуктивный анализ, проверка моделей, тестирование на основе формальных моделей, статический анализ • Технологии разработки распределенных систем с заданными характеристиками по многим показателям качества • Выполнение разнородных требований: корректность, надежность, защищенность, производительность, удобство использования и развития • Формализация стандартов на программные интерфейсов разных уровней
Анализ программ (1) Текущие достижения • Глобальная и межпроцедурная оптимизация, межпроцедурный анализ указателей • Исследование гнезд циклов на распараллеливаемость: Омега-тест, изменение порядка циклов в гнезде • Машинно-ориентированная оптимизация: распределение регистров, планирование кода • Языки нового поколения (Java, C#) Совмещение интерпретации и динамической компиляции (JIT), адаптивная оптимизация. LLVM и его интерпретатор (Apple): адаптивная оптимизация для C и C++ • Методы анализа успешно применяются для решения проблем в смежных областях: обратная инженерия, поиск уязвимостей безопасности
Анализ программ (2) Проблемы Разрыв между возможностями аппаратуры (параллелизм на всех уровнях) и возможностями анализа Расширение области применения специализированных платформ:Cell,GPU, FPGA Низкая «продуктивность» разработки приложений для параллельных систем: отсутствие языков высокого уровня и соответствующих технологий (HPF, Cilk (MIT), UPC (Berkeley) не привели к успеху) программирование с использованием MPI (распределенная память) и OpenMP (общая память) Отсутствие стандартов и устоявшихся технологий для специализированных платформ
Анализ программ (3) Тенденции решения проблем Исследование и моделирование различных классов приложений (dwarf - Berkeley) и аппаратных платформ с целью разработки адекватные средства (языки, инструменты), обеспечивающих эффективное отображение приложения на конкретную аппаратную платформу Новые языки параллельного программирования: X10 (IBM), Chapel (Cray), Fortress (Sun) Технологии и соответствующие среды поддерживающие разработку на уровне MPI/OpenMP Технологии программирования для специализированных платформ: низкоуровневые: CUDA (NVidia), CAL (AMD) языки высокого уровня: Brook+ (AMD), Ct (Intel)
Управление данными (1)Текущие достижения • СУБД (Oracle, IBM, Microsoft и т.д.) • эффективная и масштабируемая обработка баз данных объемом в сотни терабайт и даже петабайт; • развитые средства оптимизации запросов на основе оценочных методов; • встроенные в серверы средства OLAP и data mining; • полнотекстовый поиск и поддержка XML; • параллельные серверы • Управление данными в Internet • развитые средства полнотекстового поиска по ключевым словам; • собственные средства управления данными, хорошо распараллеливающиеся на основе механизма map-reduce(Google, Yahoo!)
Управление данными (2)Проблемы • Сложность администрирования, настройки и использования СУБД • возрастающий дефицит специалистов; • невозможность полноценного использования SQL • Сложность разработки приложений баз данных • impedance mismatch • Недостаточность методов поиска в Internet по ключевым словам • невозможность использования семантического поиска; • незрелость средств управления данными • Неполное использование новых возможностей аппаратуры • многоядерные и многопотоковые архитектуры, основная память большого объема, флэш-память и т.д.
Управление данными (3)Тенденции решения проблем • Переход от универсальных к специализированным системам управления данными • XML-СУБД, системы с хранением данных «по столбцам» и т.д. • Разработка новых языков программирования, освобождающих разработчиков от проблемы «impedance mismatch» • Ruby-on-Rails, LINQ • Повышение уровня семантики поиска в Internet • использование массивных структурированных корпусов текстов для автоматического построения онтологий
Управление данными (4)Clouds Computing • Публично доступные службы для запуска параллельных программ на динамически образуемых кластерах из тысяч узлов • Позволяют пользоваться параллельной аппаратурой для решения, в частности, задач, связанных с обработкой больших объемов данных • Имеющиеся параллельные СУБД не могут масштабироваться до тысяч параллельных узлов • Необходимо понять, как и для чего разумно использовать «облачные вычисления» при управлении данными и разработать соответствующие программные системы