994b73707b5d11aacff2c9ae75c488ff.ppt
- Количество слайдов: 18
Системное программирование Состояние и тенденции Директор ИСП РАН академик Иванников В. П. ivan@ispras. ru
Технологии разработки ПО(1) Рост размеров кода ОС Система Год Размер (106 LOC) Размер команды Windows 3. 1 1992 3 Windows NT 3. 5 1994 10 300 Windows NT 4. 0 1996 16 800 Windows 2000 1999 30 1400 Windows XP 2001 45 1800 Linux Kernel 2. 6. 0 2003 5, 7 Open Solaris 2005 9, 7 Mac OS X 10. 4 2006 86 Windows Vista 2007 > 50
Технологии разработки ПО(2) Другие показатели развития • • Эскалация размеров и сложности Увеличение функциональных возможностей Рост объемов перерабатываемых данных Расширение использования параллелизма и распределенности • Рост требований к переносимости и совместимости
Технологии разработки ПО(3) Текущие достижения • Объектно-ориентированные методы анализа и проектирования, языки программирования • Компонентные технологии • Стандартизация и уточнение семантики языков программирования и библиотечных интерфейсов • Широкое использование итеративных процессов разработки • Расширение области применения формальных методов (model checking и др. )
Технологии разработки ПО(4) Проблемы • Количество ошибок на 1000 строк неоттестированного кода остается неизменным Программные системы Число ошибок на 1000 строк кода Среднее по индустрии (Mc. Connell) 15 -50 Microsoft (до тестирования) 10 -20 NASA JPL (до тестирования) 6 -9 Linux ~7 Microsoft (продукты) 0. 5 NASA JPL (продукты) 0. 003 • Формальные методы разработки и анализа применимы лишь к небольшим системам
Технологии разработки ПО(5) Новые вызовы • Распределенные адаптивные и динамически перестраивающиеся системы • Масштабируемые технологии разработки и анализа свойств ПО на базе формальных методов – Интеграция различных методов верификации: дедуктивный анализ, проверка моделей, тестирование на основе формальных моделей, статический анализ • Технологии разработки распределенных систем с заданными характеристиками по многим показателям качества – Выполнение разнородных требований: корректность, надежность, защищенность, производительность, удобство использования и развития • Формализация стандартов на программные интерфейсы разных уровней
Анализ программ (1) Текущие достижения Глобальная и межпроцедурная оптимизация, межпроцедурный анализ указателей Исследование гнезд циклов на распараллеливаемость: Омега-тест, изменение порядка циклов в гнезде Машинно-ориентированная оптимизация: распределение регистров, планирование кода Языки нового поколения (Java, C#) Совмещение интерпретации и динамической компиляции (JIT), адаптивная оптимизация. LLVM и его интерпретатор (Apple): адаптивная оптимизация для C и C++ Методы анализа успешно применяются для решения проблем в смежных областях: обратная инженерия, поиск уязвимостей безопасности
Анализ программ (2) Проблемы Разрыв между возможностями аппаратуры (параллелизм на всех уровнях) и возможностями анализа Расширение области применения специализированных платформ: Cell, GPU, FPGA Низкая «продуктивность» разработки приложений для параллельных систем: отсутствие языков высокого уровня и соответствующих технологий (HPF, Cilk (MIT), UPC (Berkeley) не привели к успеху) программирование с использованием MPI (распределенная память) и Open. MP (общая память) Отсутствие стандартов и устоявшихся технологий для специализированных платформ
Анализ программ (3) Тенденции решения проблем Исследование и моделирование различных классов приложений (dwarf Berkeley) и аппаратных платформ с целью разработки адекватных средств (языки, инструменты), обеспечивающих эффективное отображение приложения на конкретную аппаратную платформу Новые языки параллельного программирования: X 10 (IBM), Chapel (Cray), Fortress (Sun) Технологии и соответствующие среды поддерживающие разработку на уровне MPI/Open. MP Технологии программирования для специализированных платформ: низкоуровневые: 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) Обеспечение компьютерной безопасности – одна из наиболее актуальных задач системного программирования. Рынок ПО для обеспечения защиты информации в последние годы растет гораздо быстрее, чем весь рынок ИТ. Причины: 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; }


