Page 1 Страница 1
Software Design for Reliability Software Design для надежности
Mike Silverman, Ops A La Carte LLC Майк Сильверман, Ops La Carte ООО
George de La Fuente, Ops A La Carte LLC Джордж де ла Фуэнте, Ops La Carte ООО
Key Words: Defect, Fault, Failure, Software, Reliability, Availability, Maintainability, Ключевые слова: дефект, ошибки, неудачи, программного обеспечения, надежность, эксплуатационная готовность, ремонтопригодность,
SUMMARY & CONCLUSIONS РЕЗЮМЕ И ВЫВОДЫ
Despite the increased importance of the role that Несмотря на возросшее значение роли, которую
reliability plays in commercial product development, most надежность играет в промышленную разработку продукта, наиболее
companies are still unable to produce reliable software. компаний по-прежнему не в состоянии производить надежное программное обеспечение. The
practice of software reliability is rare with few techniques that практика надежности программного обеспечения редко с несколько методов, которые
are compatible with commercial schedules and staffing совместимых с коммерческой графики и кадрового
capabilities. возможностей. Should organizations wait for the next generation Если организаций ждать следующего поколения
of tools, programming languages and development processes инструментов, языков программирования и процессы развития
to improve their software reliability? для улучшения их надежности программного обеспечения? No, the answer has Нет, ответ
always been within their reach. всегда была в пределах их досягаемости.
By optimizing best practices for defect removal, Благодаря оптимизации лучшие практики для устранения дефектов,
development organizations can produce high reliability развития организации могут производить высокую надежность
software. программное обеспечение. However, most organizations are not aware of the Однако, большинство организаций не осведомлены о
enormous potential for defect prevention that can be achieved огромный потенциал для предотвращения дефектов, которые могут быть достигнуты
before the software is even tested. до ПО, даже испытания. Upstream improvements in Разведка и добыча улучшения в
software design for reliability (DfR) will generally produce разработка программного обеспечения для надежности (DFR) обычно производят
greater returns than further investments in the test phase. больше прибыли, чем дальнейших инвестиций в тестовой фазе. This Это
approach offers the option of implementing software DfR подход дает возможность реализации программного обеспечения DFR
without making large changes to their development processes. без больших изменений в процессе своего развития.
1 INTRODUCTION 1 ВВЕДЕНИЕ
Engineering teams must balance cost, schedule, Инженерные команды должны балансовая стоимость, график,
performance and reliability to achieve optimal customer производительность и надежность для достижения оптимальных клиентов
satisfaction. удовлетворение.
Figure 1 – The “Big 4” Parameters to Balance Рисунок 1 - "Big 4" Параметры баланса
Reliability is no longer a separate activity performed by a Надежность является не отдельный вид деятельности осуществляется по
distinct group within the organization. различные группы внутри организации. Product reliability Надежность
goals, concerns and activities are integrated into nearly every цели, проблемы и деятельность интегрирована в почти каждый
function and process of an organization. функций и процессов организации. The organization Организации
must factor reliability into every decision. должны фактор надежности в каждом решении.
Design for Reliability is made up of four key steps: Дизайн для надежности состоит из четырех основных шагов:
• assess customer's situation • оценки по ситуации клиента
• develop goals • разработка целей
• write program plan • написать план по программам
• execute program plan • выполнить план по программам
The focus is on developing reliable products and Основное внимание уделяется разработке надежных продуктов и
improving customer satisfaction. повышение удовлетворенности клиентов. This is true for the electrical, Это верно для электрических,
mechanical, and software portion of the system. механические и программную часть системы.
1.1 Different Views of Reliability 1,1 Различные точки зрения надежности
Product development teams view reliability as the domain Разработка продукта команд зрения надежности, как область
to address mechanical and electrical, and software issues. по решению механических и электрических и программных вопросов.
Customers view reliability as a system-level issue, with Клиенты зрения надежности, уровня вопросу системы, с
minimal concern placed on the distinction into sub-domains. минимальное беспокойство сделан на различия в суб-доменах.
Since the primary measure of reliability is made by the Так как основной мерой надежности производится
customer, engineering teams must maintain a balance of both клиентов, инженерные команды должны сохранять баланс и
views (system and sub-domain) in order to develop a reliable Просмотров (системы и суб-домен) в целях разработки надежных
product. продукта.
Mechanical Механические
Reliability Надежность
+ +
Electrical Электрические
Reliability Надежность
+ +
Software Программное обеспечение
Reliability Надежность
Cost Стоимость
Schedule Расписание
Reliability Надежность
Performance Производительности
Customer Клиентов
Satisfaction Удовлетворение
Cost Стоимость
Schedule Расписание
Reliability Надежность
Performance Производительности
Customer Клиентов
Satisfaction Удовлетворение
System Система
Mechanical Механические
Reliability Надежность
Electrical Электрические
Reliability Надежность
+ +
SW SW
Reliability Надежность
+ +
System Система
Mechanical Механические
Reliability Надежность
Electrical Электрические
Reliability Надежность
+ +
Mechanical Механические
Reliability Надежность
Electrical Электрические
Reliability Надежность
+ +
SW SW
Reliability Надежность
+ +
SW SW
Reliability Надежность
+ +

Page 2 Страница 2
Figure 2 – Different Views of Reliability Рисунок 2 - Различные точки зрения надежности
1.2 Reliability vs. Cost 1,2 надежности против Стоимость
Intuitively, the emphasis in reliability to achieve a Интуитивно понятно, что акцент в надежности для достижения
reduction in warranty and in-service costs results in some сокращения в гарантийный и в затраты на обслуживание результаты в некоторых
minimal increase in development and manufacturing costs. минимальное увеличение в развитии и производственных затрат.
The use of the proper tools during the proper life cycle phase Использования соответствующих инструментов в надлежащей фазе жизненного цикла
will help to minimize total Life Cycle Cost (LCC). поможет свести к минимуму общего Life Cycle Cost (LCC). To Для
minimize total Life Cycle Costs (LCC), an organization must минимизации общего жизненного цикла расходы (LCC), организация должна
do two things: 1) Choose the best tools from all of the tools сделать две вещи: 1) Выбрать лучшие инструменты из всех инструментов
available and apply these tools at the proper phases of the доступны и применять эти инструменты в нужное фазы
product life cycle; and 2) Properly integrate these tools жизненного цикла продукции и 2) правильно интегрировать эти инструменты
together to assure that the proper information is fed forwards вместе, чтобы гарантировать, что необходимая информация подается вперед
and backwards at the proper times. и в обратном направлении в нужное время. This is Design for Это дизайн
Reliability. Надежность.
Figure 3 – Reliability vs. Cost Рисунок 3 - Надежность против Стоимость
1.3 Software Reliability and Cost 1,3 надежности программного обеспечения и стоимость
Software has no associated manufacturing costs and Программное обеспечение не связано с производственными затратами и
minimal replacement costs. минимальные затраты на замену. Warranty costs and savings are Гарантия расходы и сбережения
almost entirely allocated to hardware. практически полностью выделены на оборудование. Software development Разработка программного обеспечения
and test teams are considered fixed product development и испытания команды считаются фиксированными разработке продуктов
costs. расходов.
If software reliability does not result in a perceived cost Если программное обеспечение надежности не приводит к воспринимается стоимость
savings, why not focus solely on improving hardware сбережения, то почему бы не сосредоточиться исключительно на улучшение аппаратной
reliability in order to save money? надежности, чтобы сохранить деньги? Sadly, some organizations К сожалению, некоторые организации
take just this approach. принять именно этот подход. But since they sell systems, not just Но так как они продают системы, а не только
hardware, sometimes customers or market forces cause оборудования, иногда клиенты или рыночных сил причиной
companies to reconsider this approach. компаниям пересмотреть этот подход. The primary root Первичной корневой
causes of embedded system failures are usually software, not Причины неудач встроенные системы, как правило, программное обеспечение, не
hardware, by ratios as high as 10:1. оборудования, отношениями достигает 10:1.
The benefits of improved software reliability are not in Выгоды от улучшения надежности программного обеспечения не в
direct cost savings, but rather in increased availability of Прямая экономия средств, а к увеличению доступности
software staff for additional development due to reduced программное обеспечение персонала для дополнительного развития в связи с сокращением
operational maintenance demands and improved customer оперативных потребностей и улучшение обслуживания клиентов
satisfaction resulting from increased system reliability. удовлетворение в результате повышения надежности системы.
2 SOFTWARE DESIGN FOR RELIABILITY 2 Программное обеспечение ДИЗАЙН ДЛЯ НАДЕЖНОСТИ
2.1 Software Quality vs. Software Reliability 2,1 Software Quality против надежности программного обеспечения
Figure 4 – Software Quality vs. Software Reliability Рисунок 4 - Качество программного обеспечения против надежности программного обеспечения
2.2 Software Reliability Terminology 2,2 надежности программного обеспечения Терминология
Software reliability is a measure of the software failures that Программное обеспечение надежности является мерой программных сбоев, что
are visible to a customer and prevent a system from delivering видны клиентов и предотвращения системы от поставки
essential functionality. необходимую функциональность.
2.2.1 Defects 2.2.1 Дефекты
A flaw in software requirements, design or source code Ошибка в требованиях к программному обеспечению, дизайн или исходный код
that produces unintended or incomplete run-time behavior. , которая производит непреднамеренного или неполной поведение во время выполнения.
This includes Defects of Commission and Defects of Это включает в себя дефекты Комиссии и дефекты
Omission. Упущение.
Defects of commission are one of the following: Дефекты комиссии являются одним из следующих:
Incorrect requirements are specified, requirements are Неправильное требования указаны, требования
incorrectly translated into a design model; the design is неправильно переведена на дизайн модели, конструкция
incorrectly translated into source code; and the source code неправильно переведена на исходный код, и исходного кода
logic is flawed. логика ошибочна.
Defects of omission are one of the following: Not all Дефекты бездействие являются одним из следующих: Не все
requirements were used in creating a design model; the source Требования были использованы в создании дизайна модели; источник
code did not implement all the design; or the source code has Код не выполнять все конструкции; или исходный код
missing or incomplete logic. отсутствуют или являются неполными логики.
Defects are static and can be detected and removed Дефекты являются статическими и могут быть обнаружены и удалены
without executing the source code. без выполнения исходного кода. Defects that cannot trigger Дефекты, которые не могут вызвать
software failures are not tracked or measured for reliability программных сбоев не отслеживаются или измерить надежность
purposes. целей. These are quality defects that affect other aspects of Эти качества дефектов, которые влияют на другие аспекты
software quality such as soft maintenance defects and defects программное обеспечение такого качества, дефектов мягких обслуживание и дефекты
in test cases or documentation. в контрольных примеров и документации.
2.2.2 Faults 2.2.2 Недостатки
A fault is the result of triggering a software defect by Неисправность результате запуска программного обеспечения дефекта
executing the associated source code. выполнения связанных исходного кода. Faults are NOT Неисправности НЕ
customer-visible. Клиент-видны.
Example: memory leak or a packet Пример: утечка памяти или пакет
corruption that requires retransmission by the higher layer коррупции, что требует ретрансляцию по более высокого уровня
stack. стек.
A fault may be the transitional state that results in a Вина может быть переходном состоянии, что приводит к
failure. провал. Trivially simple defects (eg, display spelling errors) Тривиально проста дефектов (например, дисплей орфографические ошибки)
do not have intermediate fault states. не имеют промежуточных состояний вина.
CO CO
S S
T T
RELIABILITY НАДЕЖНОСТЬ
OPTIMUM ОПТИМУМ
COST POINT СТОИМОСТЬ POINT
RELIABILITY НАДЕЖНОСТЬ
PROGRAM COSTS Расходы по программе
TOTAL COST ОБЩАЯ СТОИМОСТЬ
CURVE КРИВОЙ
ELEC / MECH ELEC / МЕХ
WARRANTY & ГАРАНТИИ И
IN-SERVICE COSTS В-затраты на обслуживание
The software Программное обеспечение
impact on overall влияние на общую
warranty costs is Гарантия расходов
minimal at best? минимальная в лучшем случае?
Why? Почему?
CO CO
S S
T T
RELIABILITY НАДЕЖНОСТЬ
CO CO
S S
T T
RELIABILITY НАДЕЖНОСТЬ
OPTIMUM ОПТИМУМ
COST POINT СТОИМОСТЬ POINT
OPTIMUM ОПТИМУМ
COST POINT СТОИМОСТЬ POINT
RELIABILITY НАДЕЖНОСТЬ
PROGRAM COSTS Расходы по программе
TOTAL COST ОБЩАЯ СТОИМОСТЬ
CURVE КРИВОЙ
RELIABILITY НАДЕЖНОСТЬ
PROGRAM COSTS Расходы по программе
TOTAL COST ОБЩАЯ СТОИМОСТЬ
CURVE КРИВОЙ
ELEC / MECH ELEC / МЕХ
WARRANTY & ГАРАНТИИ И
IN-SERVICE COSTS В-затраты на обслуживание
ELEC / MECH ELEC / МЕХ
WARRANTY & ГАРАНТИИ И
IN-SERVICE COSTS В-затраты на обслуживание
The software Программное обеспечение
impact on overall влияние на общую
warranty costs is Гарантия расходов
minimal at best? минимальная в лучшем случае?
The software Программное обеспечение
impact on overall влияние на общую
warranty costs is Гарантия расходов
minimal at best? минимальная в лучшем случае?
The software Программное обеспечение
impact on overall влияние на общую
warranty costs is Гарантия расходов
minimal at best? минимальная в лучшем случае?
Why? Почему?
Software Программное обеспечение
Quality Качество
*ISO9126 * ISO9126
Quality Качество
Model Модель
FACTORS ФАКТОРЫ
Maintainab Maintainab
ility ility
Functional Функциональные
ity ITY
Usability Юзабилити
Reliability Надежность
Efficiency Эффективности
Portability Портативность
CRITERIA КРИТЕРИИ
suitability пригодность
accuracy точность
interoperability совместимости
security безопасности
maturity зрелость
fault tolerance отказоустойчивость
recoverability восстанавливаемость
time behavior время поведение
resource ресурсов
utilization использования
analysability analysability
changeability изменчивость
stability стабильности
testability быть свидетелем в суде
adaptability приспособляемость
installability installability
co-existence сосуществования
replaceability заменяемость
understandability понятность
learnability обучаемости
operability работоспособность
attractiveness привлекательность
Software Quality Программное обеспечение качества
The level to which Уровень, на котором
the software программное обеспечение
characteristics характеристики
conform to all the соответствовать всем
specifications. спецификации.
Software Quality Программное обеспечение качества
The level to which Уровень, на котором
the software программное обеспечение
characteristics характеристики
conform to all the соответствовать всем
specifications. спецификации.
Software Программное обеспечение
Quality Качество
*ISO9126 * ISO9126
Quality Качество
Model Модель
FACTORS ФАКТОРЫ
FACTORS ФАКТОРЫ
Maintainab Maintainab
ility ility
Functional Функциональные
ity ITY
Usability Юзабилити
Reliability Надежность
Efficiency Эффективности
Portability Портативность
Maintainab Maintainab
ility ility
Functional Функциональные
ity ITY
Usability Юзабилити
Reliability Надежность
Efficiency Эффективности
Portability Портативность
CRITERIA КРИТЕРИИ
CRITERIA КРИТЕРИИ
suitability пригодность
accuracy точность
interoperability совместимости
security безопасности
maturity зрелость
fault tolerance отказоустойчивость
recoverability восстанавливаемость
time behavior время поведение
resource ресурсов
utilization использования
analysability analysability
changeability изменчивость
stability стабильности
testability быть свидетелем в суде
adaptability приспособляемость
installability installability
co-existence сосуществования
replaceability заменяемость
understandability понятность
learnability обучаемости
operability работоспособность
attractiveness привлекательность
Software Quality Программное обеспечение качества
The level to which Уровень, на котором
the software программное обеспечение
characteristics характеристики
conform to all the соответствовать всем
specifications. спецификации.
Software Quality Программное обеспечение качества
The level to which Уровень, на котором
the software программное обеспечение
characteristics характеристики
conform to all the соответствовать всем
specifications. спецификации.

Page 3 Страница 3
2.2.3 Failures 2.2.3 Отказы
A failure is a customer (or operational system) Отказ клиента (или операционной системой)
observation or detection that is perceived as an unacceptable наблюдения или обнаружения, который воспринимается как неприемлемый
departure of operation from the designed software behavior. отъезд операции с разработанное программное обеспечение поведения.
Failures are the visible, run-time symptoms of faults. Отказы являются видимыми, во время выполнения симптомы неисправностей.
Failures MUST be observable by the customer or another Неудачи должен быть наблюдению клиента или другого
operational system. операционной системы. Not all failures result in system outages. Не все сбои в системе результате отключений.
Note that for the remainder of this paper, the term “failure” Заметим, что для оставшейся части статьи, термин "отказ"
will refer only to failure of essential functionality, unless будет относиться только к выходу из строя основной функциональности, если
otherwise stated. не указано иное.
2.3 Summary of Defects and Failures 2,3 Резюме дефекты и неудачи
There are 3 types of run-time defects: Есть 3 типа времени выполнения дефектов:
1. 1. Defects that are never executed (so they don't trigger Дефекты, которые никогда не выполняются (поэтому они не вызывают
faults) неисправностей)
2. 2. Defects that are executed and trigger faults that do Дефекты, которые выполняются и вызвать неисправности, которые
NOT result in failures Не приводит к сбоям
3. 3. Defects that are executed and trigger faults that result Дефекты, которые выполняются и вызвать неисправности, которые приводят
in failures в неудачах
Practical Software Reliability focuses solely on defects Практические надежности программного обеспечения сосредотачивается исключительно на дефекты
that have the potential to cause failures by detecting and , которые могут вызывать сбои путем обнаружения и
removing defects that result in failures during development удаление дефектов, которые приводят к сбоям в процессе развития
and implementing fault tolerance techniques to prevent faults и реализации толерантности методы вина по предотвращению нарушений
from producing failures or mitigating the effects of the от производства неудачи или смягчения последствий
resulting failures. в результате сбоев.
2.4 Software Availability 2,4 программного обеспечения доступности
System outages caused by software can be attributed to Система отключения вызваны программное обеспечение может быть связано с
recoverable software failures, software upgrades, and Извлекаемые сбоев программного обеспечения, обновлений программного обеспечения, и
unrecoverable software failures. неустранимые сбои программного обеспечения.
Note that recoverable Отметим, что извлекаемые
software failures are the most frequent software cause of программных сбоев являются наиболее частой причиной программного обеспечения
system outages. Система отключения.
For outages due to recoverable software failures, Для отключения из-за сбоев программного обеспечения возмещения,
availability is defined as: Доступность определяется как:
___MTTF___ ___MTTF___
A(T) = (MTTF + MTTR) (T) = (MTTF + MTTR)
where, где,
MTTF is Mean Time To [next] Failure MTTF является среднее время [следующий] Неспособность
MTTR (Mean Time To [operational] Restoration) is still MTTR (среднее время [оперативного] Восстановление) по-прежнему
the duration of the outage, but without the notion of a “repair продолжительность простоя, но без понятия "ремонт
time.” Instead, it is the time until the same system is restored время. "Вместо этого, именно в это время, пока же система восстанавливается
to an operational state via a system reboot or some level of в рабочее состояние с помощью перезагрузки системы или какого-либо уровня
software restart. программное обеспечение перезагрузки.
A(T) can be increased by either increasing MTTF (ie, (T) может быть увеличен путем увеличения либо MTTF (т. е.
increasing reliability) using software reliability practices or повышения надежности) с использованием программного обеспечения надежности практики или
reducing MTTR (ie, reducing downtime) using software сокращение MTTR (т.е., сокращение простоев) с использованием программного обеспечения
availability practices. наличие практики.
MTTR can be reduced by: MTTR может быть уменьшен путем:
• Implementing hardware redundancy (sparingly) to • Внедрение аппаратной избыточности (часто), чтобы
mask most likely failures. Маска, скорее всего, неудачи.
• Increasing the speed of failure detection (the key step). • Увеличение скорости выявления неисправности (ключевой шаг).
• Software and system recovery speeds can be increased • Программное обеспечение и восстановление скорости системы может быть увеличена
by implementing Fast Fail and software restart designs. путем осуществления Fail Быстрый и программного обеспечения перезагрузите конструкций.
Modular design practices allow software restarts to occur Модульная конструкция практики позволяют программного обеспечения перезагрузки происходят
at the smallest possible scope, eg, thread or process vs. на минимально возможный объем, например, поток или процесс против
system or subsystem. системы или подсистемы. Drastic reductions in MTTR are only Резкое сокращение MTTR только
possible when availability is part of the initial system/software возможно, когда наличие является частью исходной системы / Программное обеспечение
design (like redundancy). дизайн (например, избыточность).
Customers generally perceive enhanced software Клиенты обычно воспринимают расширение программного обеспечения
availability as a software reliability improvement, even if the наличие, как повышение надежности программного обеспечения, даже если
failure rate remains unchanged. отказов остается неизменной.
Figure 5 – System Availability Timeframes Рисунок 5 - Наличие Сроки системы
Figure 6 – Software Availability Рисунок 6 - Программное обеспечение доступности
2.5 Reliable Software Characteristics Summary 2,5 надежное программное обеспечение краткой характеристике
Reliable Software has the following 3 characteristics: Надежное программное обеспечение имеет следующие 3 характеристики:
1. 1. Operates within the reliability specification that Работает в надежности спецификации,
satisfies customer expectations. удовлетворяет ожидания клиентов. This is measured in terms of Это измеряется в терминах
Timeframe vs. Mission Downtime Сроки против Миссии простоя
(Unavailability Range) (Отсутствие диапазон)
Availability Наличие
Availability Наличие
Class Класс
99.99999% (7 99,99999% (7
nines) to девяток), чтобы
99.9999999% (9 99.9999999% (9
nines) девяток)
99.9999% (6 99,9999% (6
nines) девяток)
99.999% (5 99,999% (5
nines) девяток)
99.99% (4 nines) 99,99% (4 девятки)
99.9% (3 nines) 99,9% (3 девятки)
99% (2 nines) 99% (2 девятки)
90% (1 nine) 90% (1 девять)
(7) Ultra- (7) Ультра-
Availability Наличие
(6) Very-High- (6) с очень высоким
Availability Наличие
(5) High- (5) высокий-
Availability Наличие
(High-reliability (Высокая надежность
products) продукции)
(4) Fault (4) неисправностей
Tolerant Терпимый
(better (Лучше
commercial коммерческих
systems) системы)
(3) Well- (3) Ну-
managed управляемого
(2) Managed (2) управляемые
(good web (Хороший веб-
servers) серверы)
(1) (1)
Unmanaged Неуправляемые
13.14 minutes 13,14 минут
52.6 mins/year 52,6 мин / год
1.31minutes 1.31minutes
5.3 mins/year 5,3 мин / год
7.88 seconds 7,88 секунд
31.5 secs/year 31,5 сек / год
(2.6 mins/5 years) (2,6 мин / 5 лет)
2.19 hours 2,19 часа
8.8 hours/year 8,8 часов / год
(525.6 mins/year) (525,6 мин / год)
0.79 seconds 0,79 секунд
3.2 secs/year 3,2 сек / год
to к
31.5 millisecs/year 31,5 millisecs / год
(15.8 secs/5 years (15,8 сек / 5 лет
or less) или менее)
21.9 hours 21,9 часов
9.13 days 9,13 дней
Timeframe = 3 Сроки = 3
months месяцев
3.65 days/year 3,65 дней в году
(5,256 mins/year) (5256 минут / год)
36.5 days/year 36,5 дней в году
(52,560 mins/year) (52 560 минут / год)
Timeframe = 1 Сроки = 1
year год
Timeframe vs. Mission Downtime Сроки против Миссии простоя
(Unavailability Range) (Отсутствие диапазон)
Availability Наличие
Availability Наличие
Class Класс
99.99999% (7 99,99999% (7
nines) to девяток), чтобы
99.9999999% (9 99.9999999% (9
nines) девяток)
99.9999% (6 99,9999% (6
nines) девяток)
99.999% (5 99,999% (5
nines) девяток)
99.99% (4 nines) 99,99% (4 девятки)
99.9% (3 nines) 99,9% (3 девятки)
99% (2 nines) 99% (2 девятки)
90% (1 nine) 90% (1 девять)
(7) Ultra- (7) Ультра-
Availability Наличие
(6) Very-High- (6) с очень высоким
Availability Наличие
(5) High- (5) высокий-
Availability Наличие
(High-reliability (Высокая надежность
products) продукции)
(4) Fault (4) неисправностей
Tolerant Терпимый
(better (Лучше
commercial коммерческих
systems) системы)
(3) Well- (3) Ну-
managed управляемого
(2) Managed (2) управляемые
(good web (Хороший веб-
servers) серверы)
(1) (1)
Unmanaged Неуправляемые
13.14 minutes 13,14 минут
52.6 mins/year 52,6 мин / год
1.31minutes 1.31minutes
5.3 mins/year 5,3 мин / год
7.88 seconds 7,88 секунд
31.5 secs/year 31,5 сек / год
(2.6 mins/5 years) (2,6 мин / 5 лет)
2.19 hours 2,19 часа
8.8 hours/year 8,8 часов / год
(525.6 mins/year) (525,6 мин / год)
0.79 seconds 0,79 секунд
3.2 secs/year 3,2 сек / год
to к
31.5 millisecs/year 31,5 millisecs / год
(15.8 secs/5 years (15,8 сек / 5 лет
or less) или менее)
21.9 hours 21,9 часов
9.13 days 9,13 дней
Timeframe = 3 Сроки = 3
months месяцев
3.65 days/year 3,65 дней в году
(5,256 mins/year) (5256 минут / год)
36.5 days/year 36,5 дней в году
(52,560 mins/year) (52 560 минут / год)
Timeframe = 1 Сроки = 1
year год
a) а)
System restart Перезапуск системы
b) б)
100 seconds (average) 100 секунд (в среднем)
c) с)
11 mins & 40 secs 11 мин и 40 сек
d) г)
1 failure/mission 1 неудачи / миссии
a) а)
System reboot Перезагрузка
b) б)
4 minutes (average) 4 минуты (в среднем)
c) с)
14 minutes 14 минут
d) г)
1 failure/mission 1 неудачи / миссии
1) 1)
Manual detection (No S/W Ручное определение (Нет S / W
mechanism) механизм)
2) 2)
Reboot/restart via user intf Перезагрузка / перезапуск через пользовательский INTF
3) 3)
(avg detection time) 10 min. (Средние времени обнаружения) 10 мин.
a) а)
System restart Перезапуск системы
b) б)
100 seconds (average) 100 секунд (в среднем)
c) с)
130 seconds 130 секунд
d) г)
7 failures/mission 7 неудачи / миссии
a) а)
System reboot Перезагрузка
b) б)
4 minutes (average) 4 минуты (в среднем)
c) с)
4 mins & 30 secs 4 минуты и 30 секунд
d) г)
3 failure/mission 3 неудачи / миссии
1) 1)
Slow, automatic det. Медленно, автоматический Det. Mech. Механика.
2) 2)
Health message protocols сообщение протоколов здравоохранения
w/retries W / попыток
3) 3)
30 seconds 30 секунд
a) а)
Board restart Совет перезагрузка
b) б)
30 seconds 30 секунд
c) с)
40 seconds 40 секунд
d) г)
24 failures/mission 24 неудач / миссии
a) а)
Board reboot Совет перезагрузки
b) б)
90 seconds 90 секунд
c) с)
100 seconds 100 секунд
d) г)
9 failures/mission 9 неудачи / миссии
1) 1)
Fast, automatic detection Быстрое, автоматическое обнаружение
mechanism Механизм
2) 2)
Watchdog timer reset Сторожевой таймер сброса
3) 3)
5-10 seconds 5-10 секунд
a) а)
Thread/Driver restart Тема / драйвера перезагрузите
b) б)
(average) 50 mils (В среднем) 50 мил
c) с)
1.05 seconds 1,05 секунд
d) г)
914 failures/mission 914 неудачи / миссии
a) а)
Board reboot Совет перезагрузки
b) б)
90 seconds 90 секунд
c) с)
91 seconds 91 секунд
d) г)
10 failures/mission 10 неудач / миссии
1) 1)
Very fast, automatic detection Очень быстрый, автоматическое обнаружение
mechanism Механизм
2) 2)
Thread or Driver monitors Тема или драйвер монитора
3) 3)
Up to 1 second До 1 секунды
a) а)
Fast Recovery Action Восстановление действий Быстрая
b) б)
Recovery Speed Скорость восстановления
c) с)
MTTR MTTR
d) г)
Mission failure rate Миссия отказов
a) а)
Slow Recovery Action Медленное восстановление действий
b) б)
Recovery Speed Скорость восстановления
c) с)
MTTR MTTR
d) г)
Mission failure rate Миссия отказов
1) 1)
Software Failure Detection Обнаружение сбоя в программном обеспечении
Mechanism Механизма
2) 2)
Implementation Example Пример реализации
3) 3)
Failure Detection Speed Скорость обнаружения Неспособность
a) а)
System restart Перезапуск системы
b) б)
100 seconds (average) 100 секунд (в среднем)
c) с)
11 mins & 40 secs 11 мин и 40 сек
d) г)
1 failure/mission 1 неудачи / миссии
a) а)
System reboot Перезагрузка
b) б)
4 minutes (average) 4 минуты (в среднем)
c) с)
14 minutes 14 минут
d) г)
1 failure/mission 1 неудачи / миссии
1) 1)
Manual detection (No S/W Ручное определение (Нет S / W
mechanism) механизм)
2) 2)
Reboot/restart via user intf Перезагрузка / перезапуск через пользовательский INTF
3) 3)
(avg detection time) 10 min. (Средние времени обнаружения) 10 мин.
a) а)
System restart Перезапуск системы
b) б)
100 seconds (average) 100 секунд (в среднем)
c) с)
130 seconds 130 секунд
d) г)
7 failures/mission 7 неудачи / миссии
a) а)
System reboot Перезагрузка
b) б)
4 minutes (average) 4 минуты (в среднем)
c) с)
4 mins & 30 secs 4 минуты и 30 секунд
d) г)
3 failure/mission 3 неудачи / миссии
1) 1)
Slow, automatic det. Медленно, автоматический Det. Mech. Механика.
2) 2)
Health message protocols сообщение протоколов здравоохранения
w/retries W / попыток
3) 3)
30 seconds 30 секунд
a) а)
Board restart Совет перезагрузка
b) б)
30 seconds 30 секунд
c) с)
40 seconds 40 секунд
d) г)
24 failures/mission 24 неудач / миссии
a) а)
Board reboot Совет перезагрузки
b) б)
90 seconds 90 секунд
c) с)
100 seconds 100 секунд
d) г)
9 failures/mission 9 неудачи / миссии
1) 1)
Fast, automatic detection Быстрое, автоматическое обнаружение
mechanism Механизм
2) 2)
Watchdog timer reset Сторожевой таймер сброса
3) 3)
5-10 seconds 5-10 секунд
a) а)
Thread/Driver restart Тема / драйвера перезагрузите
b) б)
(average) 50 mils (В среднем) 50 мил
c) с)
1.05 seconds 1,05 секунд
d) г)
914 failures/mission 914 неудачи / миссии
a) а)
Board reboot Совет перезагрузки
b) б)
90 seconds 90 секунд
c) с)
91 seconds 91 секунд
d) г)
10 failures/mission 10 неудач / миссии
1) 1)
Very fast, automatic detection Очень быстрый, автоматическое обнаружение
mechanism Механизм
2) 2)
Thread or Driver monitors Тема или драйвер монитора
3) 3)
Up to 1 second До 1 секунды
a) а)
Fast Recovery Action Восстановление действий Быстрая
b) б)
Recovery Speed Скорость восстановления
c) с)
MTTR MTTR
d) г)
Mission failure rate Миссия отказов
a) а)
Slow Recovery Action Медленное восстановление действий
b) б)
Recovery Speed Скорость восстановления
c) с)
MTTR MTTR
d) г)
Mission failure rate Миссия отказов
1) 1)
Software Failure Detection Обнаружение сбоя в программном обеспечении
Mechanism Механизма
2) 2)
Implementation Example Пример реализации
3) 3)
Failure Detection Speed Скорость обнаружения Неспособность

Page 4 Страница 4
failure rate and availability level. интенсивность отказов и наличие уровня. The goal is rarely “defect Цель редко "дефект
free” or “ultra-high reliability” бесплатный "или" ультра-высокой надежностью "
2. 2. “Gracefully” handles erroneous inputs from users, "Изящно" ручки ошибочных входов от пользователей,
other systems, and transient hardware faults, and attempts to другими системами, и переходные неисправности оборудования, и попытки
prevent state or output data corruption from “erroneous” предотвращения состояния или выходных данных коррупции от "ошибочных"
inputs. входами.
3. 3. Quickly detects, reports and recovers from software Быстро обнаруживает, доклады и оправится от программного обеспечения
and transient hardware faults. и переходные неисправности оборудования. Software provides system Программное обеспечение предоставляет система
behavior as continuously monitoring, self-diagnosing” and поведение как постоянного мониторинга, самостоятельной диагностики "и
“self-healing”. "Самовосстановления". It prevents as many run-time faults as possible Это предотвращает как много времени неисправностей запустить возможности
from becoming system-level failures. стать на уровне системы неудач.
2.6 Software Design for Reliability (DfR)Options 2,6 Software Design для надежности (DFR) варианты
There are four basic options for software DfR: Существуют четыре основных варианта программного обеспечения DFR:
1. 1. Use formal methods. Использование формальных методов.
2. 2. Follow an approach consistent with Hardware Следуйте подхода в соответствии с аппаратным
Reliability Programs. Надежность программ.
3. 3. Improve reliability through software process control. Повышение надежности с помощью программного обеспечения управления процессом.
4. 4. Improve reliability by focusing on traditional Повышение надежности, сосредоточив внимание на традиционные
software development “best practices.” разработка программного обеспечения "наилучшей практики".
In the next sections, we will review each of these options В следующих разделах мы рассмотрим каждый из этих вариантов
and show why “best practices” is really the best method to и показать, почему "лучшие практики" на самом деле лучший способ
use. использования.
2.6.1 Formal Methods 2.6.1 Формальные методы
Formal methods utilize mathematical modeling of a Формальные методы использования математического моделирования
system's requirements and/or design in order to prove Требования системы и / или дизайна, чтобы доказать,
correctness. корректности. This is primarily used for safety-critical systems Это в основном используется для обеспечения безопасности критически важных систем
that require very high degrees of confidence in expected , которые требуют очень высокой степени доверия в ожидаемом
system performance, quality audit information, and targets of производительность системы, качество информации аудита, и задачи
low or zero failure rates. низкий или нулевой ставки провал.
Formal methods are not applicable to every software Формальные методы не применимы к каждой программного обеспечения
project. проекта. They cannot be used for all aspects of system design Они не могут быть использованы для всех аспектов проектирования системы
(eg, user interface design). (Например, пользовательского интерфейса). Also, they do not scale to handle Кроме того, они не масштабируются для обработки
large and complex system development. большие и сложные системы развития.
2.6.2 Follow an Approach Consistent with Hardware 2.6.2 Следуйте подхода в соответствии с аппаратным
Reliability Programs Надежность программ
Software and hardware development practices are still Программное обеспечение и развитие практики аппаратного по-прежнему
fundamentally different. принципиально иная.
Architecture and design level Архитектура и дизайн уровня
modeling tools are not prevalent. инструменты моделирования не распространены. They provide limited Они обеспечивают ограниченные
simulation verification, especially if a real-time operating моделирование проверки, особенно если ОС реального времени
system is required. системы не требуется. Two-way code generation is a common Двусторонняя генерации кода является общей
feature. функцию. Software engineers find it difficult to complete a Программные инженеры трудно полной
design with coding. конструкция с кодированием. All software faults are from design, not Все программное обеспечение неисправности от дизайна, не
manufacturing or wear-out. производства или износа.
Software is not built as an assembly of preexisting Программное обеспечение не является встроенным в сборе уже существующих
components. компонентов. Off-the-shelf software components do not Готовых программных компонентов Off не
provide reliability characteristics. обеспечить надежность характеристик. Most “reused” software Большинство "повторно" программного обеспечения
components are modified and not re-certified before reuse. компоненты изменение, а не повторную сертификацию перед повторным использованием.
Developing designs with very small defect-densities is the Разработка конструкции с очень малым дефектом-плотностей
Achilles' heal. Ахиллесовой исцелить.
There are no true mechanisms available for general Есть нет истинного механизмы доступны для общего
accelerated software testing. ускоренных испытаний программного обеспечения. Increasing processor speeds is Увеличение скорости процессора является
usually implemented to find timing failures. как правило, осуществляется в сроки найти неудач. These cannot be Они могут не быть
used for all aspects of system design (eg, user intf. design). используется для всех аспектов проектирования системы (например, пользователь INTF. дизайн).
Extending software designs after product deployment is Расширение программных конструкций после развертывания продукта
commonplace. обычным явлением. Software updates are the preferred avenue for Обновления программного обеспечения предпочтительный путь для
product extensions and customizations. Продукт расширения и настройки. Software updates Обновления программного обеспечения
provide fast development turnaround and have little or no обеспечивают быстрый поворот развития и практически не имеют
manufacturing or distribution costs. производство или распределение расходов.
Hardware failure analysis techniques (FMEAs and FTAs) Сбой оборудования методов анализа (изм и ССТ)
are rarely used with software. редко используются с программным обеспечением. Software engineers find it Программные инженеры найти
difficult to adapt these techniques below the system level. трудно адаптировать эти методы ниже уровня системы.
2.6.3 2.6.3
Software Process Control Methodologies Программное обеспечение управления методологии процесса
Software process control assumes a correlation between Программное обеспечение процесса управления предполагает, корреляция между
development process maturity and latent defect density in the развития зрелости процесса и скрытых дефектов в
final software [1]. Окончательный программное обеспечение [1].
Figure 7 – Software Process Control Methodologies Рисунок 7 - Программное обеспечение управления методологии процесса
If the current process does not produce the desired Если текущий процесс не приводит к желаемой
software reliability results, audits are performed and stricter надежность результатов программного обеспечения, проверки проводятся и более строгие
controls are implemented in the subsequent iterations. контроль осуществляется в последующих итераций.
Unfortunately, the nature of how process controls are К сожалению, природа, как процесс управления
implemented generally leads to slow increases in reliability осуществляется обычно ведет к медленному увеличению надежности
improvement. улучшение.
2.6.4 Defect Removal Potential of “Best Practices” 2.6.4 устранения дефектов потенциал "Лучшая практика"
The best option for Software Design for Reliability is to Лучший вариант для Software Design для надежности является
optimize the returns from software development “best оптимизировать доходы от разработки программного обеспечения "Best
practices.” Figure 8 shows the difference in defect removal практики ". Рисунок 8 показывает разницу в устранения дефектов
efficiency between inspections and testing. Эффективность проведения проверок и тестирования. Most commercial Большинство коммерческих
companies do not measure defect removal in pre-testing компании не мера устранения дефектов в предварительном тестировании
phases. фаз. This leads to inspections that provide very few Это приводит к инспекции, которые обеспечивают очень мало
benefits. выгоды. Unstructured inspections result in weak results. Неструктурированные инспекций в результате слабых результатов.
Software engineers simply do not know how to effectively Разработчики программного обеспечения просто не знают, как эффективно
apply their efforts as reviewers in order to find defects that приложения своих усилий в качестве рецензентов, чтобы найти дефекты, которые
will lead to run-time failures приведет к времени выполнения неудач
Figure 8 – Defect Removal Potential of “Best Practices” [2] Рисунок 8 - устранения дефектов потенциал "Best Practices" [2]
5.8 5.8
3.4 3.4
2.1 2.1
1.09 1.09
0.39 0.39
Delivered Поставляется
Defects/KSLOC Дефекты / KSLOC
124.8 124.8
62.4 62.4
31.2 31.2
15.6 15.6
7.8 7.8
Inherent Присущий
Defects/KSLOC Дефекты / KSLOC
5 5
1 1
2 2
3 3
4 4
CMM Level CMM Level
5.8 5.8
3.4 3.4
2.1 2.1
1.09 1.09
0.39 0.39
Delivered Поставляется
Defects/KSLOC Дефекты / KSLOC
124.8 124.8
62.4 62.4
31.2 31.2
15.6 15.6
7.8 7.8
Inherent Присущий
Defects/KSLOC Дефекты / KSLOC
5 5
1 1
2 2
3 3
4 4
CMM Level CMM Level
25% to 40% 25% до 40%
Integration test Интеграция тест
20% to 40% 20% до 40%
Performance test Тест производительности
25% to 55% 25% до 55%
System testing Система тестирования
25% to 35% 25% до 35%
Acceptance test (1 customer) Приемочных испытаний (1 клиента)
15% to 45% 15% до 45%
Unit testing Модульное тестирование
45% to 60% 45% до 60%
Design inspections Дизайн инспекции
15% to 30% 15% до 30%
Regression test Регрессионный тест
45% to 60% 45% до 60%
Code inspections Кодекс инспекции
Efficiency Range Эффективность Диапазон
Defect Removal Technique Удаление дефектов Техника
25% to 40% 25% до 40%
Integration test Интеграция тест
20% to 40% 20% до 40%
Performance test Тест производительности
25% to 55% 25% до 55%
System testing Система тестирования
25% to 35% 25% до 35%
Acceptance test (1 customer) Приемочных испытаний (1 клиента)
15% to 45% 15% до 45%
Unit testing Модульное тестирование
45% to 60% 45% до 60%
Design inspections Дизайн инспекции
15% to 30% 15% до 30%
Regression test Регрессионный тест
45% to 60% 45% до 60%
Code inspections Кодекс инспекции
Efficiency Range Эффективность Диапазон
Defect Removal Technique Удаление дефектов Техника

Page 5 Страница 5
Inspection results are increased by incorporating prevalent Результаты инспекции увеличивается за счет включения распространенных
defect checklists based on historical data and assigning дефекта контрольные, основанные на исторических данных и назначении
reviewer perspectives to focus on vulnerable sections of Рецензент перспективы сосредоточить внимание на уязвимых слоев
designs and code. конструкции и код. By performing analysis techniques, such as Выполняя методов анализа, таких, как
failure analysis, static code analysis, and maintenance pre- анализ отказов, статического анализа кода, и поддержание заранее
reviews for coding standards compliance and complexity Отзывы для кодирования стандартам и сложности
assessments, code inspections become smaller in scope and оценки, код инспекции становятся меньше по объему и
uncover more defects. раскрыть больше дефектов. Once inspection results are optimized, После результатов проверки оптимизированы,
the combined defect removal results with format testing and комбинированные устранения дефектов результаты тестирования с форматом и
software quality assurance processes have the potential to Software Assurance качества процессов есть потенциал, чтобы
remove up to 99% of all inherent defects (Figure 9). удалить до 99% всех врожденных пороков (рис. 9).
Figure 9 – Impact of Integrating Multiple “Best Practices” Рисунок 9 - Влияние интеграции нескольких "Лучшая практика"
By redirecting their efforts upstream, most development По перенаправления их усилия вверх по течению, большинство развития
organizations will see greater improvements in software организации будут видеть большие усовершенствования программного обеспечения
reliability with investments in design and code inspections надежности с инвестициями в дизайн и код инспекции
than further investments in testing (Figure 10). чем дальнейшие инвестиции в тестировании (рис. 10).
Figure 10 – “Best in Class” Results by Application Рисунок 10 - "Лучший в своем классе" Результаты по области применения
Software DfR practices increase confidence even before Программное обеспечение DFR практики повышения доверия еще до
the software is executed. программное обеспечение выполнено. The view of defect detection Ввиду обнаружения дефектов
changes from relying solely on the test phases and customer изменения от полагаясь исключительно на этапов испытания и клиентов
usage to one of phase containment across all development использование одной из фаз сдерживания по всем параметрам развития
phases (Figure 11). фаз (рис. 11). By measuring phase containment of Путем измерения фазы сдерживания
defects, measurements can be collected to show the separation дефектов, измерения могут быть собраны, чтобы показать разделение
between defect insertion and discovery phases. между вставки дефекта и открытие фаз.
Figure 11 – Phase Containment of Defects and Failures Рисунок 11 - Фаза Локализация дефектов и отказов
Reliability improvement goals can then be planned in повышение надежности цели могут быть запланированы в
phases (Figure 12): first reduce the customer impact by фаз (рис. 12): во-первых уменьшить влияние на клиентов по
detecting most of the defects in-house (over 90%); second find обнаружения большинство дефектов в доме (более 90%), во-вторых найти
most of the defects before the system test and integration Большинство дефектов до тест-системы и интеграции
phases (over 80%). фаз (более 80%).
Figure 12 – DfR Phase Containment Behavior Рисунок 12 - DFR Фаза Сдерживание Поведение
Figure 13 – DfR Phase Containment Behavior Рисунок 13 - DFR Фаза Сдерживание Поведение
92% 92%
Outsourced Software Аутсорсинг программного обеспечения
72% 72%
Web Software Программы для WEB
73% 73%
IT Software IT Software
96% 96%
Military Software Военные Software
90% 90%
Commercial Software Коммерческое программное обеспечение
95% 95%
Embedded Software Встроенное программное обеспечение
94% 94%
System Software Программное обеспечение системы
“Best in Class” "Лучшая в своем классе"
Defect Removal Efficiency Эффективность удаления дефектов
Application Type Тип приложения
92% 92%
Outsourced Software Аутсорсинг программного обеспечения
72% 72%
Web Software Программы для WEB
73% 73%
IT Software IT Software
96% 96%
Military Software Военные Software
90% 90%
Commercial Software Коммерческое программное обеспечение
95% 95%
Embedded Software Встроенное программное обеспечение
94% 94%
System Software Программное обеспечение системы
“Best in Class” "Лучшая в своем классе"
Defect Removal Efficiency Эффективность удаления дефектов
Application Type Тип приложения
Median Медиана
Defect Дефект
Efficiency Эффективности
Formal Формальных
Testing Тестирование
Formal SQA Формальные SQA
Processes Процессы
Code Кодекс
Inspections Инспекции
/ Reviews / Отзывы
Design Дизайн
Inspections Инспекции
/ Reviews / Отзывы
40 40
% %
n п
n п
n п
n п
40 40
% %
n п
n п
n п
n п
45 45
% %
n п
Y У
n п
n п
45 45
% %
n п
Y У
n п
n п
53 53
% %
Y У
n п
n п
n п
53 53
% %
Y У
n п
n п
n п
57 57
% %
n п
n п
Y У
n п
57 57
% %
n п
n п
Y У
n п
60 60
% %
n п
n п
n п
Y У
60 60
% %
n п
n п
n п
Y У
65 65
% %
Y У
Y У
n п
n п
65 65
% %
Y У
Y У
n п
n п
85 85
% %
n п
n п
Y У
Y У
85 85
% %
n п
n п
Y У
Y У
99 99
% %
Y У
Y У
Y У
Y У
99 99
% %
Y У
Y У
Y У
Y У
Typical Behavior Типичное поведение
Testing Тестирование
Design Дизайн
Coding Кодирования
Maintenance Обслуживание
Reqts Reqts
Testing Тестирование
Design Дизайн
Coding Кодирования
Maintenance Обслуживание
Reqts Reqts
Testing Тестирование
Design Дизайн
Coding Кодирования
Maintenance Обслуживание
Reqts Reqts
Defect Дефект
Origin Происхождения
Defect Дефект
Discovery Открытие
Defect Дефект
Origin Происхождения
Defect Дефект
Discovery Открытие
Goal of Phase Containment Цель этапа Сдерживание
Testing Тестирование
Design Дизайн
Coding Кодирования
Maintenance Обслуживание
Reqts Reqts
Testing Тестирование
Design Дизайн
Coding Кодирования
Maintenance Обслуживание
Reqts Reqts
Defect Дефект
Origin Происхождения
Defect Дефект
Discovery Открытие
Surprise! Сюрприз!
Surprise! Сюрприз!
SysBld SysBldSysBldSysBldSysBld SysBld SysBldSysBldSysBldSysBld
#1 # 1
#2 # 2
#3 # 3
#4 # 4
#5 # 5
System Test Система испытаний
150 150
50 50
100 100
200 200
150 150
50 50
100 100
200 200
Req Req
Design Code Дизайн кодекса
Unit Группа
SysBld SysBld SysBld SysBld SysBld SysBld SysBld SysBld SysBld SysBld
Field Поле
Test Испытаний
#1 # 1
#2 # 2
#3 # 3
#4 # 4
#5 # 5
Failures Неудачи
Development Развития
System Test Система испытаний
Deployment Развертывания
Goals are to: Цели:
(1) Reduce field failure by finding most of the failures in-house (1) Сокращение отказа поля, находя большинство неудач в доме
(2) Find the majority of failures during development (2) Найти большинство сбоев в процессе разработки

Page 6 Страница 6
2.7 Requirements Phase DfR Practices 2,7 Требования DFR практики Фаза
The requirements for software reliability are to: identify Требования к надежности программного обеспечения являются: выявление
important software functionality, including essential, critical, важные функции программного обеспечения, включая основные, критические,
and non-essential; explicitly define acceptable software failure и несущественного; явно определить приемлемый отказа программного обеспечения
rates; and specify any behavior that impacts software ставки, и указать любое поведение, которое воздействия программного обеспечения
availability. доступность. We must define acceptable durations for software Мы должны определить продолжительность приемлемого для программного обеспечения
upgrades, reboots and restarts and we must define any обновления, перезагрузки и перезагрузится, и мы должны определить любые
operating cycles that apply to the system and the software in циклов, которые относятся к системе и программного обеспечения в
order to define opportunity for software restarts or Чтобы определить возможность для перезагрузки или программного обеспечения
rejuvenation. омоложения. Example: maintenance or diagnostic periods, Пример: техническое обслуживание или диагностических периоды,
off-line periods, and shutdown periods. автономная периоды, и периоды отключения.
2.8 Design Phase DfR Practices 2,8 Дизайн DFR практики Фаза
The software designs should evolve using a multi-tiered Программное обеспечение конструкции должны развиваться использованием многоуровневой
approach. подход. It includes the following three elements: Она включает в себя следующие три элемента:
1. 1. System Architecture: Identify all essential system- Архитектура системы: Определить все основные системы
level functionality that requires software and identify the role уровень функциональности, что требует программного обеспечения и определить роль
of software in detecting and handling hardware failure modes программного обеспечения для обнаружения и обработки отказов аппаратных
by performing system-level failure mode analysis. путем проведения анализа отказов на уровне системы.
2. 2. High-level Design (HLD): Identify modules based on Высокого уровня дизайна (HLD): Определение модулей на основе
their functional importance and vulnerability to failures. их функциональное значение и уязвимость к сбоям.
Essential functionality is most frequently executed. Основные функциональные возможности наиболее часто выполняются. Critical Критической
functionality is infrequently executed but implements key функциональность нередко выполняется, но реализует ключевые
system operations (eg, boot/restart, shutdown, backup, etc.). Система операций (например, перезагрузки / перезапуска, выключение, резервное копирование и т.д.).
Vulnerability points are points that might flag defect clusters Уязвимость точки являются точками, которые могут флаг кластеров дефектов
(eg, synchronization points, hardware and module interfaces, (Например, точки синхронизации, оборудования и модуль интерфейсов,
initialization and restart code, etc.). инициализации и перезапустить код и т.д.). Identify the visibility and Определить видимость и
access major data objects outside of each module. Доступ основных объектов данных за пределы каждого модуля.
3. 3. Low-level Design (LLD): Define availability behavior Низкий уровень дизайна (ДНУ): Определить наличие поведения
of the modules (eg, restarts, retries, reboots, redundancy, из модулей (например, перезагрузки, повторов, перезагрузки, избыточность,
etc.). и т.д.). Identify vulnerable sections of functionality in detail. Определение уязвимых слоев функциональность в деталях.
Functionality is targeted for fault tolerance techniques. Функциональность предназначен для терпимости методы вина. Focus Фокус
on simple implementations and recovery actions. на простых реализаций и восстановление действия.
For software engineers, the highest ROI for defect and Для разработчиков программного обеспечения, высокий ROI для дефектов и
failure detection and removal is low level design (LLD). обнаружения отказов и удаления для низкого уровня (ДНУ). LLD Доктор юридических наук
defines sufficient module logic and flow control details to определяет достаточно модуль логики и управления потоком детали
allow analysis based on common failure categories and позволяют провести анализ на основе общих категорий неудачи и
vulnerable portions of the design. уязвимой части конструкции. Failure handling behavior обработки поведения Неспособность
can be examined in sufficient detail. может быть рассмотрен достаточно подробно.
LLD bridges the gap between traditional design specs and LLD мостов разрыв между традиционной спецификации проектирования и
source code. исходный код. Most design defects that were previously caught Большинство конструктивные дефекты, которые ранее были пойманы
during code reviews will now be caught in the LLD review. во время проверки кода теперь будет пойман в обзоре LLD.
We are more likely to correctly fix design defects since the Мы, скорее всего, правильно исправить конструктивные дефекты с
defect is caught in the design phase. дефекта поймали на этапе проектирования. Most design defects Большинство дефектов дизайна
found after the design phase are not properly fixed because the найдено после этапа проектирования не исправлена, поскольку
scheduling costs are too high. планирование расходов являются слишком высокими. Design defects require Конструктивные дефекты требуют
returning to the design phase to correct and review the design возвращение в стадии проектирования, чтобы правильно и обзор дизайна
and then correcting, re-reviewing and unit testing the code! , а затем исправление, повторное рассмотрение и модульного тестирования кода!
LLD can also be reviewed for testability. LLD также может быть рассмотрен для проверяемости. The goal of Цель
defining and validating all system test cases as part of an LLD определение и утверждение всех тестов системы как часть LLD
review is achievable. Обзор достижимо.
2.9 Code Phase DfR Practices 2,9 кодекса DFR практики Фаза
Code reviews should be carried out in stages to remove Кодекс обзоры должны проводиться поэтапно, чтобы удалить
the most defects. Наиболее дефектов. Properly focused design reviews coupled Правильно сосредоточены дизайн отзывов связанных
with techniques to detect simple coding defects will result in с техникой для обнаружения простого кодирования дефектов приведет к
shorter code reviews. короткие отзывы кода.
Code reviews should focus on Кодекс отзывы должны быть сосредоточены на
implementation issues, and not design issues. вопросам осуществления, а не вопросы проектирования. Language Язык
defects can be detected with static and dynamic analysis tools. дефекты могут быть обнаружены с статических и динамических средств анализа.
Maintenance defects are caught with coding standards pre- Обслуживание дефекты пойман с стандарты кодирования предварительно
reviews. отзывов. Requiring authors to review their own code Платные авторов обзора свой ​​собственный код
significantly reduces simple code defects and possible areas of значительно снижает простых дефектов кода и возможные области
code complexity. сложность кода.
The inspection portion of a review tries to identify Инспекции часть обзора пытается определить
missing exception handling points. отсутствует погрузочных пунктов исключение.
Software failure analysis will focus on the robustness of Программное обеспечение анализа отказов будет сосредоточена на надежность
the exception handling behavior. обработки поведения исключение. Software failure analysis Программное обеспечение анализа отказов
should be performed as a separate code inspection once the должны быть выполнены как отдельные инспекции код один раз
code has undergone initial testing. Код претерпела начального тестирования.
2.10 Test Phase DfR Practices 2,10 испытаний DFR практики Фаза
Unit testing can be effectively driven using code coverage Модульное тестирование может быть эффективно движется покрытия кода
techniques. методы. It allows software engineers to define and execute Это позволяет программному обеспечению определять и выполнять
unit testing adequacy requirements in a manner that is модульного тестирования адекватности требований в манере, которая является
meaningful and easily measured. значимые и легко измерить. Coverage requirements can Покрытие требований может
vary based on the critical nature of a module варьироваться в зависимости от критический характер модуля
System-level testing should measure reliability and На уровне системы тестирования должны оценивать надежность и
validate as many customer operational profiles as possible. проверки, как много клиентов оперативной профилей насколько это возможно. It Это
requires that most of the failure detection be performed prior требует, чтобы большинство выявления неисправности быть выполнены до
to system testing. по тестированию системы. System integration becomes the general Системная интеграция становится общей
functional validation phase. функциональный этап проверки.
2.11 Reliability Measurements and Metrics 2,11 Измерения надежности и метрик
Measurements – data collected for tracking or to calculate Измерения - данные, собранные для отслеживания или для расчета
meta-data (metrics). мета-данные (метрики). Example: defect counts by phase, defect Пример: дефект считается по фазе, дефект
insertion phase, defect detection phase. вставки фазы, фазы обнаружения дефекта.
Metrics – information derived from measurements (meta- Метрики - информация, полученная из измерений (мета-
data). данные). Example: failure rate, defect removal efficiency, defect Пример: отказов, эффективность удаления дефектов, дефектов
density Плотность
Reliability measurements and metrics accomplish several Надежность измерений и показателей выполнения нескольких
goals: цели:
• Provide estimates of software reliability prior to • Обеспечение оценки надежности программного обеспечения до
customer deployment. Клиент развертывания.
• Track reliability growth throughout the life cycle of a • Отслеживание надежности роста на протяжении всего жизненного цикла
release. релиз.
• Identify defect clusters based on code sections with • Выявление дефектов кластеров на основе кода разделы с
frequent fixes. частых ошибок.
• Determine where to focus improvements based on • Определите, где сосредоточить улучшений на основе
analysis of failure data. Анализ отказа данных.
Tools for software configuration management and defect Инструменты для программного обеспечения по управлению конфигурациями и дефектов
tracking should be updated to facilitate the automatic tracking отслеживания должны быть обновлены для облегчения автоматического слежения
of this information. этой информации. They should allow for data entry in all Они должны обеспечивать ввод данных во всех
phases, including development. фаз, в том числе развития. Also, they should distinguish Кроме того, они должны проводить различие
code base updates for critical defect repair vs. any other Код базы обновлений для критических дефектов ремонта по сравнению с любым другим
changes, (eg, enhancements, minor defect repairs, coding изменения (например, усовершенствования, мелкий ремонт дефектов, кодирование
standards updates, etc.). стандартов обновления и т.д.).

Page 7 Страница 7
3 CONCLUSION 3 Заключение
Software developers can produce commercial software Разработчики программного обеспечения могут производить коммерческое программное обеспечение
with high reliability by optimizing their best practices for с высокой надежностью за счет оптимизации их лучшие практики
defect removal. устранения дефектов.
Most software organizations are not aware that this type Большинство организаций программного обеспечения не осознают, что этот тип
of software DfR is a viable option, which is why much of our программного обеспечения DFR является жизнеспособным вариантом, поэтому большая часть наших
initial contact is made via the hardware organizations. первоначальный контакт осуществляется через аппаратный организаций.
Final Point: Companies do not require more tools, more Конечная точка: Компании не требуют больше инструментов, больше
testing or more processes to develop highly reliable software. тестирования или более процессов разработки высоко надежное программное обеспечение.
The answer lies within the reach of their development team’s Ответ лежит в пределах досягаемости их развития команды
best practices! наилучшей практики!
REFERENCES Ссылки
1. 1. Jones, C., “Conflict and Litigation Between Software Джонс, К., "Конфликты и споры между Software
Clients and Developers”, March 4, 1996 Клиенты и девелоперов ", 4 марта 1996
2. 2. Jones, C., “Software Quality in 2002: A Survey of the Джонс, К., "Программное обеспечение качества в 2002 году: обзор
State of the Art”, July 23, 2002 Современное состояние ", 23 июля 2002
BIOGRAPHIES БИОГРАФИИ
Mike Silverman Майк Сильверман
Ops A La Carte Ops La Carte
20151 Guava Court 20151 Гуава суд
Saratoga, CA 95070 USA Saratoga, CA 95070 USA
e-mail: mikes@opsalacarte.com электронная почта: mikes@opsalacarte.com
George de la Fuente Джордж де ла Фуэнте
Ops A La Carte Ops La Carte
20151 Guava Court 20151 Гуава суд
Saratoga, CA 95070 USA Saratoga, CA 95070 USA
e-mail: georged@opsalacarte.com электронная почта: georged@opsalacarte.com
Mike is founder and Managing Partner at Ops A La Carte, a Майк является основателем и управляющим партнером Ops La Carte,
Professional Business Operations Company that offers a broad Профессиональные бизнес-операций компании, которая предлагает широкий
array of expert services in support of new product массив экспертных услуг в поддержку нового продукта
development and production initiatives. разработка и производство инициатив. The primary set of Первичного множества
services currently being offered is in the area of reliability. услуги в настоящее время предлагаются в области надежности.
Through Ops A La Carte, Mike has had extensive experience Через Ops La Carte, Майк имеет обширный опыт
as a consultant to high-tech companies, and has consulted for в качестве консультанта для высокотехнологичных компаний, а также провел консультации для
over 200 companies including Cisco, Ciena, Apple, Siemens, более 200 компаний, включая Cisco, Ciena, Apple, Siemens,
Intuitive Surgical, Abbott Labs, and Applied Materials. Интуитивное Хирургическое, Abbott Labs, и применяемых материалов. He Он
has consulted in a variety of different industries including провел консультации в различных отраслях промышленности, включая
telecommunications, networking, medical, semiconductor, телекоммуникации, сети, медицинской, полупроводниковой,
semiconductor equipment, consumer electronics, and defense полупроводникового оборудования, бытовой электроники и обороны
electronics. электроники. Mike has 20 years of reliability, quality, and Майк 20 лет надежности, качества и
compliance experience, the majority in start-up companies. соблюдения опыт, большинство начинающих компаний.
He is also an expert in accelerated reliability techniques, Он также является экспертом в ускоренных методов надежности,
including HALT and HASS. в том числе остановить и HASS. He set up and ran an accelerated Он создал и побежал ускоренного
reliability test lab for 5 years, testing over 300 products for надежность тестовой лаборатории на 5 лет, тестирование более 300 продуктов для
100 companies in 40 different industries. 100 компаний в 40 различных отраслях. Mike has authored Майк является автором
and published 8 papers on reliability techniques and has и опубликовано 8 статей по надежности методов и
presented these around the world including China, Germany, представил эти всему миру, включая Китай, Германия,
and Canada. и Канады. He has also developed and currently teaches over Он также разработал и в настоящее время преподает в течение
20 courses on reliability techniques. 20 курсов по надежности техники. Mike has a BS degree in Майк имеет степень бакалавра в области
Electrical and Computer Engineering from the University of Электротехники и вычислительной техники в университете
Colorado at Boulder, and is both a Certified Reliability Колорадо в Боулдере, и как сертифицированный надежности
Engineer and a course instructor through the American Инженера и преподавателя через американский
Society for Quality (ASQ), IEEE, Effective Training Общества качества (ASQ), IEEE, Эффективное обучение
Associates, and Hobbs Engineering. Associates, и Хоббс инженерия. Mike is a member of Майк является членом
ASQ, IEEE, SME, ASME, PATCA, and IEEE Consulting ASQ, IEEE, малого и среднего бизнеса, ASME, PATCA, и IEEE Консалтинг
Society and currently the IEEE Reliability Society Santa Clara Общество и в настоящее время IEEE Надежность общества Санта-Клара
Valley Chapter Chair and IEEE Consulting Society Santa Долина Председатель главы и IEEE Санта общества Consulting
Clara Valley Chapter Vice Chair. Клара Валли главе заместителя Председателя.
George de la Fuente is a senior software reliability consultant Джордж де ла Фуэнте является старшим консультантом по надежности программного обеспечения
and course instructor with OALC. и преподавателя с OALC. George has over 20 years Джордж имеет более 20 лет
of product development and management experience with развития продукта и опыта управления с
embedded systems. встраиваемых систем. His professional software background Его профессиональный опыт программного обеспечения
spans the following industries: охватывает следующие отрасли:
telecommunications, телекоммуникации,
networking, gaming, and satellite operations. сетей, игр и спутниковых операций. He has worked Он работал
on many different types of products, including telecomm на различные виды продукции, в том числе телекоммуникации
switches, telephony gateways, voicemail systems, large-scale выключателей, телефонных шлюзов, систем голосовой почты, крупномасштабных
routers and switches, gaming systems and satellite simulators. маршрутизаторы и коммутаторы, игровых систем и спутниковой тренажеров.
George has experience in commercial, start-up, and defense Джордж имеет опыт работы в коммерческих, пуско-наладка, и оборона
contracting companies. компаний-подрядчиков. George has expertise in the following Джордж обладает опытом в следующих
areas: full life-cycle development, rapid prototyping, zero- областях: полный цикл развития жизни, быстрое прототипирование, нулевой
defect development, sustaining engineering, coding standards, дефект развития, поддержания техники, стандарты кодирования,
systems testing, release management, software configuration систем тестирования, управления релизами, конфигурации программного обеспечения
management, project leadership, organizational management управления, руководство проектом, организационное управление
and program management George educational background и программы управления Джордж образование
includes an MS degree in Computer Science from Santa включает степень магистра в области компьютерных наук из Санта-
Clara University and a BS degree in Mechanical Engineering Clara University и степень бакалавра в области машиностроения
from Yale University. Йельский университет. George developed the core Software Джордж разработали программное ядро
Reliability program, including training modules and services Надежность программ, включая учебные модули и услуг
covering software reliability testing, software fault tolerance, покрытие надежности программного обеспечения тестирования отказоустойчивости программного обеспечения,
software failure analysis, system availability design, and best программное обеспечение анализа отказов, наличие дизайна системы, и самое лучшее
development practices. развитие практики.