Системное программирование Состояние и тенденции Директор ИСП РАН академик Иванников В.П.
Технологии разработки ПО(1) Рост размеров кода ОС СистемаГодРазмер (10 6 LOC)Размер команды Windows Windows NT Windows NT Windows Windows XP Linux Kernel ,7 Open Solaris20059,7 Mac OS X Windows Vista2007> 50
Технологии разработки ПО(2) Другие показатели развития Эскалация размеров и сложности Увеличение функциональных возможностей Рост объемов перерабатываемых данных Расширение использования параллелизма и распределенности Рост требований к переносимости и совместимости
Технологии разработки ПО(3) Текущие достижения Объектно-ориентированные методы анализа и проектирования, языки программирования Компонентные технологии Стандартизация и уточнение семантики языков программирования и библиотечных интерфейсов Широкое использование итеративных процессов разработки Расширение области применения формальных методов (model checking и др.)
Технологии разработки ПО(4) Проблемы Количество ошибок на 1000 строк неоттестированного кода остается неизменным Программные системыЧисло ошибок на 1000 строк кода Среднее по индустрии (McConnell)15-50 Microsoft (до тестирования)10-20 NASA JPL (до тестирования)6-9 Linux~7 Microsoft (продукты)0.5 NASA JPL (продукты)0.003 Формальные методы разработки и анализа применимы лишь к небольшим системам
Технологии разработки ПО(5) Новые вызовы Распределенные адаптивные и динамически перестраивающиеся системы Масштабируемые технологии разработки и анализа свойств ПО на базе формальных методов –Интеграция различных методов верификации: дедуктивный анализ, проверка моделей, тестирование на основе формальных моделей, статический анализ Технологии разработки распределенных систем с заданными характеристиками по многим показателям качества –Выполнение разнородных требований: корректность, надежность, защищенность, производительность, удобство использования и развития Формализация стандартов на программные интерфейсы разных уровней
Глобальная и межпроцедурная оптимизация, межпроцедурный анализ указателей Исследование гнезд циклов на распараллеливаемость: Омега-тест, изменение порядка циклов в гнезде Машинно-ориентированная оптимизация: распределение регистров, планирование кода Языки нового поколения (Java, C#) Совмещение интерпретации и динамической компиляции (JIT), адаптивная оптимизация. LLVM и его интерпретатор (Apple): адаптивная оптимизация для C и C++ Методы анализа успешно применяются для решения проблем в смежных областях: обратная инженерия, поиск уязвимостей безопасности Анализ программ (1) Текущие достижения
Разрыв между возможностями аппаратуры (параллелизм на всех уровнях) и возможностями анализа Расширение области применения специализированных платформ: Cell, GPU, FPGA Низкая «продуктивность» разработки приложений для параллельных систем: отсутствие языков высокого уровня и соответствующих технологий (HPF, Cilk (MIT), UPC (Berkeley) не привели к успеху) программирование с использованием MPI (распределенная память) и OpenMP (общая память) Отсутствие стандартов и устоявшихся технологий для специализированных платформ Анализ программ (2) Проблемы
Исследование и моделирование различных классов приложений (dwarf - Berkeley) и аппаратных платформ с целью разработки адекватных средств (языки, инструменты), обеспечивающих эффективное отображение приложения на конкретную аппаратную платформу Новые языки параллельного программирования: X10 (IBM), Chapel (Cray), Fortress (Sun) Технологии и соответствующие среды поддерживающие разработку на уровне MPI/OpenMP Технологии программирования для специализированных платформ: низкоуровневые: CUDA (NVidia), CAL (AMD) языки высокого уровня: Brook+ (AMD), Ct (Intel) Анализ программ (3) Тенденции решения проблем
Управление данными (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) Обеспечение компьютерной безопасности – одна из наиболее актуальных задач системного программирования. Рынок ПО для обеспечения защиты информации в последние годы растет гораздо быстрее, чем весь рынок ИТ. Причины: 1.Глобализация информационного пространства (широкое распространение сетевых технологий, интенсивное развитие средств телекоммуникации); 2. Внедрение электронных средств хранения и обработки информации во все сферы экономической, политической и военной деятельности (документооборот, связь, базы данных, системы поддержки принятия решений и др.); 3. Ускорение и удешевление разработки ПО в ущерб его качеству в условиях острой конкуренции на рынке ИТ; 4. Бытовая компьютеризация (средства мобильной связи, беспроводные сети и пр.)
Проблемы компьютерной безопасности (2) Угрозы 1.Выведение из строя ПО (распространение вредоносных программ, компьютерных «вирусов», троянских программ, подмена мобильного кода). 2.Выведение из строя компьютерных сетей (создание перегрузок в сети, сетевые вторжения) 3.Создание и распространение ПО со скрытыми дефектами (внедрение в ПО закладок, встроенных уязвимостей и пр.). 4.Нарушение конфиденциальности и целостности информации (несанкционированный доступ к базам данных и электронным архивам, распространение программ-шпионов, взлом криптосистем). 5.Компьютерное пиратство и нарушение авторских прав на ПО (нелегальное копирование и распространение ПО).
Проблемы компьютерной безопасности (3) Средства обеспечения 1.Антивирусные программы, интеллектуальные системы мониторинга, системы защиты от утечки данных 2.Системы обнаружения и предотвращения сетевых вторжений (сетевой мониторинг, межсетевые экраны, шлюзы, брандмауэры). 3.Использование ПО с открытым кодом (Linux vs Microsoft). 4.Сертификация и аудит ПО, системы верификации и поиска уязвимостей в программах. 5.Политики безопасности в информационных системах (разграничение доступа, аутентификация и авторизация). 6.Криптографические средства защиты информации (системы шифрования, электронной подписи, криптографические протоколы, обфускация программ и пр.). 7.Отслеживание распространения ПО (водяные знаки, отпечатки пальцев).
Проблемы компьютерной безопасности (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; }