
ec18fe8de097fe60c9f2c2f6f6dcd446.ppt
- Количество слайдов: 13
Системное программирование Состояние и тенденции Директор ИСП РАН академик Иванников В. П. ivan@ispras. ru Software Engineering Conference (Russia) 2008 Москва, 23 октября
Технологии разработки ПО(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 • Публично доступные службы для запуска параллельных программ на динамически образуемых кластерах из тысяч узлов • Позволяют пользоваться параллельной аппаратурой для решения, в частности, задач, связанных с обработкой больших объемов данных • Имеющиеся параллельные СУБД не могут масштабироваться до тысяч параллельных узлов • Необходимо понять, как и для чего разумно использовать «облачные вычисления» при управлении данными и разработать соответствующие программные системы