180 likes | 351 Views
Системное программирование Состояние и тенденции. Директор ИСП РАН академик Иванников В.П . ivan@ispras.ru. Технологии разработки ПО(1) Рост размеров кода ОС. Технологии разработки ПО(2) Другие показатели развития. Эскалация размеров и сложности Увеличение функциональных возможностей
E N D
Системное программированиеСостояние и тенденции Директор ИСП РАН академик Иванников В.П. ivan@ispras.ru
Технологии разработки ПО(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 • Публично доступные службы для запуска программ • Позволяют пользоваться параллельной аппаратурой для решения, в частности, задач, связанных с обработкой больших объемов данных • Имеющиеся параллельные СУБД не могут масштабироваться до тысяч параллельных узлов • Необходимо понять, как и для чего разумно использовать «облачные вычисления» при управлении данными и разработать соответствующие программные системы
Проблемы компьютерной безопасности (1) Обеспечение компьютерной безопасности – одна из наиболее актуальных задач системного программирования. Рынок ПО для обеспечения защиты информации в последние годы растет гораздо быстрее, чем весь рынок ИТ. Причины: Глобализация информационного пространства (широкое распространение сетевых технологий, интенсивное развитие средств телекоммуникации); 2. Внедрение электронных средств хранения и обработки информации во все сферы экономической, политической и военной деятельности (документооборот, связь, базы данных, системы поддержки принятия решений и др.); 3. Ускорение и удешевление разработки ПО в ущерб его качеству в условиях острой конкуренции на рынке ИТ; 4. Бытовая компьютеризация (средства мобильной связи, беспроводные сети и пр.)
Проблемы компьютерной безопасности (2) Угрозы Выведение из строя ПО (распространение вредоносных программ, компьютерных «вирусов», троянских программ, подмена мобильного кода). Выведение из строя компьютерных сетей (создание перегрузок в сети, сетевые вторжения) Создание и распространение ПО со скрытыми дефектами (внедрение в ПО закладок, встроенных уязвимостей и пр.). Нарушение конфиденциальности и целостности информации (несанкционированный доступ к базам данных и электронным архивам, распространение программ-шпионов, взлом криптосистем). Компьютерное пиратство и нарушение авторских прав на ПО (нелегальное копирование и распространение ПО).
Проблемы компьютерной безопасности (3)Средства обеспечения Антивирусные программы,интеллектуальные системы мониторинга, системы защиты от утечки данных Системы обнаружения и предотвращения сетевых вторжений (сетевой мониторинг, межсетевые экраны, шлюзы, брандмауэры). Использование ПО с открытым кодом (Linux vs Microsoft). Сертификация и аудит ПО, системы верификации и поиска уязвимостей в программах. Политики безопасности в информационных системах (разграничение доступа, аутентификация и авторизация). Криптографические средства защиты информации (системы шифрования, электронной подписи, криптографические протоколы, обфускация программ и пр.). Отслеживание распространения ПО (водяные знаки, отпечатки пальцев).
Проблемы компьютерной безопасности (4) Направления исследований Теоретические исследования: новые математические модели информационных систем, формализующие ключевые понятия компьютерной безопасности (вторжение, аномальное поведение, стойкая защита и др.), методы и алгоритмы информационной защиты ПО, оценки их эффективности и стойкости. Прикладные разработки: инструментальные средства проверки безопасности ПО, открытые ОС со встроенным механизмом обеспечения информационной безопасности, компьютерные сети, ориентированные на обеспечение коллективной безопасности абонентов.
Примеры спецификаций specification double sqrt (double x) { pre { return x >= 0;} post { return sqrt*sqrt == x;} } invariant Triangle() { return x + y >= z && x + z >= y && y + z >= x; }