страница 1
|
|
Похожие работы
|
Минимизация ошибок и сбоев программного обеспечения - страница №1/1
УДК 681.3 Минимизация ошибок и сбоев программного обеспечения Штарик А.В. научный руководитель канд. техн. наук, доцент Царев Р.Ю. Сибирский федеральный университет, г. Красноярск Процесс создания надежного программного обеспечения (ПО) преследует цель разработки безотказного ПО, т.е. такого, которое точно соответствует спецификации системных требований. Но точное соответствие системы своей спецификации не гарантирует, что ПО всегда будет вести себя так, как ожидается пользователями. В спецификации могут быть ошибки, которые отразятся на работе программном обеспечении, либо пользователи могут неверно истолковывать или неправильно эксплуатировать систему. Безотказное ПО не обязательно гарантирует отсутствие отказов в работе аппаратно-программного комплекса. Но, с другой стороны, минимизация ошибок программного обеспечения значительно уменьшает число отказов комплекса и должна выполняться при разработке критических систем. Существует ряд требований к разработке безотказного программного обеспечения:
При использовании языки программирования низкого уровня с ограниченным контролем типов данных, таких как Си, достигнуть безотказности программного обеспечения очень трудно. На это имеются следующие причины:
Преимущество языков низкого уровня в том, что их конструкции менее абстракты, и потому они позволяют создавать более эффективные программы. Высокая эффективность весьма существенна в ряде случаях и не может быть достигнута иным способом. Однако если требуется высокий уровень функциональной надежности ПО, придется приложить дополнительные усилия при тестировании системы и обнаружении ошибок. Современные методы разработки ПО позволяют создавать безотказное программное обеспечение, но экономически не выгодны. Чрезвычайно трудно и дорого достичь этой цели. Стоимость обнаружения и удаления программных ошибок растет экспоненциально. Поэтому организации-разработчики явно или неявно понимают, что их программное обеспечение будет содержать некоторые «остаточные» ошибки. Количество ошибок также зависит от типа систем. Разумное объяснение наличия ошибок в системе заключается в том, что обычно дешевле устранить последствия отказа системы, чем выявить и устранить все ошибки в системе до начала ее эксплуатации. Это распространенная позиция поставщиков программных продуктов для персональных компьютеров. Однако, в некоторых случаях, решение о выпуске программного продукта с ошибками невозможно принять, основываясь только на экономических соображениях – необходимо принять во внимание социальную и политическую приемлемость последствий отказа системы. Ошибки в программах и, как следствие, сбои в работе аппаратно-программного комплекса часто являются результатом ошибок человека. Программисты делают ошибки, потому что теряют связь между взаимоотношениями переменных состояний. Они пишут программы, которые приводят к непредвиденному поведению и непредвиденному изменению состояний системы. Люди будут ошибаться всегда, но, как стало ясно в конце 1960-х, некоторые подходы к программированию более подвержены ошибкам по сравнению с остальными. Использование оператора безусловного перехода goto приводит к логическим конструкциям, существенно подверженным ошибкам программирования. Они также затрудняют локализацию изменений состояния системы. Это наблюдение привело к появлению так называемого структурного программирования. Кроме операторов безусловного перехода, существуют другие языковые конструкции и методы программирования, подверженные ошибкам:
Некоторые стандарты проектирования систем, критических по обеспечению безопасности, полностью запрещают использование перечисленных программных конструкций. Однако такая категоричность не всегда оправдана. Все эти конструкции и методы полезны, и они должны использоваться. Везде, где возможно, их потенциально опасные эффекты должны контролироваться, используя эти конструкции внутри абстрактных типов данных или объектов. Для разработки программного обеспечения с минимальным числом отказов также необходимо иметь хорошо определенный и опробованный технологический процесс, содержащий этапы контроля и аттестации ПО. Хорошо определенный процесс – это стандартизированный и документированный процесс. Опробованный процесс не зависит от индивидуальной интерпретации и решений разработчиков ПО. Процесс разработки ПО должен включать в себя хорошо спланированный комплексный процесс тестирования, имеющий целью обнаружение системных ошибок. Процесс тестирования, минимизирующий количество системных ошибок, имеет несколько составляющих:
Следование рекомендациям проектирования, разработки и тестирования программного обеспечения, представленным в работе, позволит минимизировать, не только ошибки и сбои ПО, но и последствия от их возникновения. |
|