М.М. ПЕТУНИН, В.О. ЧУКАНОВ СОВРЕМЕННОЕ СОСТОЯНИЕ ПРОЕКТИРОВАНИЯ НАДЕЖНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

advertisement
УДК 004(06) Компьютерные системы и технологии
М.М. ПЕТУНИН, В.О. ЧУКАНОВ
Московский инженерно-физический институт (государственный университет)
СОВРЕМЕННОЕ СОСТОЯНИЕ ПРОЕКТИРОВАНИЯ
НАДЕЖНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
В данной работе был произведен обзор современных методов и средств проектирования надежного программного обеспечения.
При оценке новых методов и средств разработки ПО обычно ориентируются на их производительность. Можно особенно выделить объектные
технологии, которые действительно могут существенно повысить производительность, при этом, однако, нельзя упускать из виду качество создаваемого ПО.
Качественное ПО — это, прежде всего, надежное ПО. Надежность —
это способность системы функционировать в соответствии со спецификацией ("корректность") и при этом успешно справляться с возникающими
ненормальными ситуациями ("устойчивость" — robustness). Ну, а проще
говоря, надежная программа не содержит ошибок.
Методы проектирования надежного программного обеспечения можно
разбить на следующие группы:
1. Предупреждение ошибок, методы позволяющие минимизировать
или исключить появление ошибки.
2. Обнаружение ошибок, методы направленные на разработку дополнительных функций программного обеспечения, помогающих выявить
ошибки.
3. Устойчивость к ошибкам, дополнительные функции программного
обеспечения, предназначенные для исправления ошибок и их последствий
и обеспечивающие функционирование системы при наличии ошибок.
4. Такие методы, как проверка на базе моделей, статистический анализ
и анализ времени исполнения, дают возможность тщательнее проверить
программы, позволяя протестировать даже маловероятные сценарии развития событий. Традиционное тестирование может выявить сценарии, при
которых возникновение ошибок наиболее вероятно, однако оно никогда
не позволит найти все ошибки. Более того, методы тестирования постоянно устаревают.
Традиционные процессы тестирования, разработанные для детерминированных, последовательных сред, за последние три десятилетия практически не изменились. Кроме того, современные системы — многопоточные, что делает их недетерминированными: планирование процессов и
ISBN 5-7262-0633-9. НАУЧНАЯ СЕССИЯ МИФИ-2006. Том 12
145
УДК 004(06) Компьютерные системы и технологии
потоков, которые по-разному перекрываются по времени при каждом выполнении, а события возникают в непредсказуемые моменты, и методы
тестирования для этого просто не предназначены.
Нами было рассмотрено 3 статьи по методам предупреждения ошибок,
2 статьи по методам обнаружения ошибок и 2 статьи по методам устойчивости к ошибкам.
В качестве реальной системы, сочетающей все вышеописанные методы, была рассмотрена литература по проекту NASA Mission Data System
(MDS).
Когда в NASA говорят о MDS, то имеют в виду архитектуру, концепцию, миллионы строк кода, составляющие сейчас эту систему, создание
программного обеспечения для марсианской экспедиции, набор процессов
разработки или соответствующие исследования. В любом случае, MDS
предлагает общую для разных полетов платформу создания, тестирования
и повторного использования программного обеспечения, которое будет
работать на космических кораблях. Это кардинальный отказ от установившейся практики, при которой в результате независимых, разноплановых процессов разработки создавались «одноразовые» программные системы индивидуально для каждого космического полета.
В качестве заключения хотелось бы сказать, что проектирование методов и средств создания надежного программного обеспечения является
актуальной задачей многих производителей ПО.
Список литературы
1. Майерс Г. Надёжность программного обеспечения /Мир. - М., 1980. - 360 с.
2. Липаев В.В. Надёжность программных средств /СИНТЕГ. - М., 1998. - 232 с.
3. D. Dvorak et al., «Software Architecture Themes in JPL’s Mission Data System», Proc. AIAA Space Technology Conf. and Exposition, 1999.
4. G. Holzmann, The Spin Model Checker: Primer and Reference Manual, Addison-Wesley,
2003.
5. K. Havelund, T. Pressburger, «Model Checking Java Programs Using Java PathFinder»,
Int’l J. Software Tools for Technology Transfer, vol. 2, no. 4, 2000.
6. W. Visser et al., «Model Checking Programs», J. Automated Software Engineering, vol. 10,
2002.
7. K. Havelund, G. Rosu, «Monitoring Java Programs with Java PathExplorer», Proc. Workshop Runtime Verification, Electronic Notes in Theoretical Computer Science, vol. 55, no. 2, 2001.
8. D. Dvorak, «Challenging Encapsulation in the Design of High-Risk Control Systems», Conf.
Object-Oriented Programming, Systems, Languages, and Applications, Seattle, 2002.
ISBN 5-7262-0633-9. НАУЧНАЯ СЕССИЯ МИФИ-2006. Том 12
146
Download