Аппаратные и программные средства встраиваемых систем


  Обеспечение корректности программного кода: обзор



Pdf көрінісі
бет147/268
Дата07.01.2022
өлшемі3,23 Mb.
#18255
1   ...   143   144   145   146   147   148   149   150   ...   268
3.3.5.1  Обеспечение корректности программного кода: обзор 
существующих решений 
Существуют  различные  подходы  к  обеспечению  корректности  кода 
приложений.  Перечислим  наиболее  распространенные  из  них:  тестирование  с 
помощью  юнит-тестов,  динамический  анализ  кода  (во  время  работы 
приложения),  статический  анализ  кода  (анализ  исходных  текстов).  Нельзя 
сказать,  что  какой-то  один  вариант  тестирования  лучше  других – все  эти 
подходы обеспечивают различные аспекты качества приложений. 
Юнит-тесты  предназначены  для  быстрой  проверки  небольших  участков 
кода, например, отдельных функций и классов. Их особенность в том, что эти 
тесты выполняются быстро и допускают частый запуск. Из этого вытекают два 
нюанса  использования  такой  технологии.  Во-первых,  эти  тесты  должны  быть 
написаны.  Во-вторых,  тестирование  выделения  больших  объемов  памяти 
(например,  более  двух  гигабайт)  занимает  значительное  время,  поэтому 
нецелесообразно, так как юнит-тесты должны отрабатываться быстро. 
Динамические анализаторы кода (лучший представитель – это Compuware 
BoundsChecker)  предназначены  для  обнаружения  ошибок  в  приложении  во 
время выполнения программы. Из этого принципа работы и вытекает основной 
недостаток  динамического  анализатора.  Для  того  чтобы  убедиться  в 
корректности  программы,  необходимо  выполнить  все  возможные  ветки  кода. 
Для реальной программы это может быть затруднительно. Но это не значит, что 
динамический  анализ  кода  не  нужен.  Такой  анализ  позволяет  обнаружить 
ошибки,  которые  зависят  от  действий  пользователя  и  не  могут  быть 
определены по коду приложения. 
Статические  анализаторы  кода  (как,  например, Gimpel Software PC-lint и 
Parasoft C++test) предназначены для комплексного обеспечения качества кода и 
содержат несколько сотен анализируемых правил. В них также есть некоторые 
из  правил,  анализирующих  корректность 64-битных  приложений.  Однако, 
поскольку  это  анализаторы  кода  общего  назначения,  то  их  использование  для 


 
165 
обеспечения  качества 64-битных  приложений  не  всегда  удобно.  Это 
объясняется,  прежде  всего,  тем,  что  они  не  предназначены  именно  для  этой 
цели.  Другим  серьезным  недостатком  является  их  ориентированность  на 
модель данных, используемую в Unix-системах (LP64). В то время как модель 
данных, используемая в Windows-системах (LLP64), существенно отличается от 
нее.  Поэтому  применение  этих  статических  анализаторов  для  проверки 64-
битных Windows-приложений  возможно  только  после  неочевидной 
дополнительной настройки.  
Некоторым  дополнительным  уровнем  проверки  кода  можно  считать 
наличие 
в 
компиляторах 
специальной 
диагностики 
потенциально 
некорректного  кода  (например,  ключ /Wp64 в  компиляторе Microsoft Visual 
C++).  Однако  этот  ключ  позволяет  отследить  лишь  наиболее  некорректные 
конструкции, в то время как многие из также опасных операций он пропускает.  


Достарыңызбен бөлісу:
1   ...   143   144   145   146   147   148   149   150   ...   268




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет