Минимизация ошибок и сбоев
Процесс создания надежного программного обеспечения преследует цель разработки безотказного ПО, т.е. такого, которое точно соответствует спецификации системных требований. Но точное соответствие системы своей спецификации не гарантирует, что ПО всегда будет вести себя так, как ожидается пользователями. В спецификации могут быть ошибки, которые отразятся в программном обеспечении, либо пользователи могут неверно истолковывать или неправильно эксплуатировать систему. Безотказное ПО не обязательно гарантирует отсутствие отказов в работе системы. Но, с другой стороны, минимизация ошибок программного обеспечения значительно уменьшает число отказов системы и должна выполняться при разработке критических систем. Существует ряд требований к разработке безотказного программного обеспечения.
1. Должна быть точная (предпочтительно формальная) спецификация системных требований, определяющая разрабатываемую систему. 2. Организация – разработчик ПО должна иметь высокую культуру управления качеством, поскольку качество является главным в процессе создания критических систем. В идеале предполагается, что программисты создают программы, в которых отсутствуют ошибки. 3. Методы проектирования и реализации ПО должны основываться на сокрытии и инкапсуляции информации. Объектно-ориентированные языки, такие как Java, удовлетворяют этому условию. 4. В процессе реализации программного кода должны использоваться языки программирования со строгим контролем типов данных, например Jаvа или Ada. В таких языках многие ошибки программирования будут обнаружены на этапе компилирования программ. 5. Везде, где возможно, следует избегать использования тех программных конструкций, которые потенциально могут привести к ошибкам. Такие конструкции обсуждаются в следующем разделе.
6. Должна быть определена четкая технология разработки ПО, и разработчики должны быть обучены применению этой технологии. Менеджеры, отвечающие за качество, должны проверять процесс разработки.
Если при разработке программ использовались языки программирования низкого уровня с ограниченным контролем типов данных, такие как С, то достигнуть безотказности программного обеспечения очень трудно. На это имеются следующие причины.
1. Эти языки включают конструкции (такие, как указатели), которые, как известно из опыта, приводят к ошибкам. Независимо от того, сколько программист затратит усилий, в программе возможны ошибки, которые очень трудно обнаружить. 2. Природа этих языков такова, что они ведут к компактному стилю программирования. Это делает программы более трудными для чтения и понимания, что усложняет поиск ошибок по тексту программ.
Конечно, преимущество использования языков низкого уровня в том, что их конструкции менее абстракты, и поэтому есть возможность написать весьма эффективные программы. В некоторых случаях высокая эффективность существенна и не может быть достигнута другим способом. Но, если требуется высокий уровень функциональной надежности ПО, придется приложить больше усилий для тестирования системы и обнаружения ошибок.
Рис. 18.1. Возрастание стоимости обнаружения ошибок
Я убежден, что современные методы разработки ПО позволяют создавать безотказное программное обеспечение, но экономически не выгодны. Чрезвычайно трудно и дорого достичь этой цели. Стоимость обнаружения и удаления программных ошибок растет экспоненциально (рис. 18.1). Поэтому организации-разработчики явно или неявно понимают, что их программное обеспечение будет содержать некоторые "остаточные" ошибки. Количество ошибок также зависит от типа систем.
Разумное объяснение наличия ошибок в системе заключается в том, что обычно дешевле устранить последствия отказа системы, чем выявить и устранить все ошибки в системе до начала ее эксплуатации. Это распространенная позиция поставщиков программных продуктов для персональных компьютеров. Однако, как указывалось в главе 16, решение о выпуске программного продукта с ошибками основывается не просто на экономических соображениях – необходимо принять во внимание социальную и политическую приемлемость последствий отказа системы.
Читайте также: Виды ошибок выборки. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|