ТРПО_теория / Lect_trpo / lavrishcheva_petrukhin
.pdfОтказ ПC (failure) – это переход ПС из работающего состояния в нерабочее или когда получаются результаты, которые не соответствуют заданным допустимым значениям. Отказ может быть вызван внешними факторами (изменениями элементов среды эксплуатации) и внутренними – дефектами в самой ПС.
Дефект (fault) в ПС – это последствие использования элемента программы, |
который |
может привести к некоторому событию, например, в результате |
неверной |
интерпретации этого элемента компьютером (как ошибка (fault) в программе) или человеком (ошибке (error) исполнителя). Дефект является следствием ошибок
разработчика |
на любом |
из процессов разработки – в описании |
спецификаций |
требований, |
начальных |
или проектных спецификациях, |
эксплуатационной |
документации и т.п. Дефекты в программе, не выявленные в результате проверок, является источником потенциальных ошибок и отказов ПС. Проявление дефекта в виде отказа зависит от того, какой путь будет выполнять специалист, чтобы найти ошибку в коде или во входных данных. Однако не каждый дефект ПС может вызвать отказ или может быть связан с дефектом в ПС или среды. Любой отказ может вызвать аномалию от проявления внешних ошибок и дефектов.
Ошибка (error) может быть следствием недостатка в одном из процессов разработки ПС, который приводит к неправильной интерпретации промежуточной информации, заданной разработчиком или при принятии им неверных решений.
Интенсивность отказов это частота появления отказов или дефектов в ПС при ее тестировании или эксплуатации.
При выявлении отклонения результатов выполнения от ожидаемых во время тестирования или сопровождения, осуществляется поиск, выяснение причин этих отклонений и исправление связанных с этим ошибок.
Модели оценки надежности ПС в качестве входных параметров используют сведения об ошибках, отказах, их интенсивности, собранных в процессе тестирования и эксплуатации.
9.2.2. Классификация моделей надежности
Как известно, что на данный момент времени разработано большое количество моделей надежности ПС и их модификаций. Каждая из этих моделей определяет функцию надежности, которую можно вычислить при задании ей соответствующих данных, собранных во время функционирования ПС. Основными данными являются отказы и время. Другие дополнительные параметры связаны с типом ПС, условиями среды и данных.
В виду большого разнообразия моделей надежности, разработано несколько подходов к классификации этих моделей. Эти подходы в целом основываются на истории ошибок в проверяемой и тестируемой ПС на этапах ЖЦ. Одной из классификаций моделей надежности ПО является классификация Хетча [5, 16]. В ней предлагается разделение моделей на: прогнозирующие, измерительные и оценочные (рис 9.1).
Прогнозирующие модели надежности основаны на измерении технических характеристик создаваемой программы: длина, сложность, число циклов и степень их вложенности, количество ошибок на страницу операторов программы и др. Например, модель Мотли–Брукса основываются на длине и сложности структуры программы
221
(количество ветвей, циклов, вложенность циклов), количестве и типах переменных, а также интерфейсов. В этих моделях длина программы служит для прогнозирования количества ошибок, например, для 100 операторов программы можно смоделировать интенсивность отказов.
Модель Холстеда дает прогнозирование количества ошибок в программе в зависимости от ее объема и таких данных, как число операций (n1) и операндов (n2), а также их общее число (N1, N2).
Модели надежности ПС
Прогнозирующие Измерительные Оценочные
|
|
|
|
|
|
|
|
|
|
|
Модель |
|
Модель |
|
Модели |
|
Модели |
|
Модели |
|
Модели |
Холс– |
|
Мотли– |
|
без |
|
с под– |
|
Муссы, |
|
подсева |
теда |
|
Брукса |
|
подсчета |
|
счетом |
|
выбора |
|
ошибок |
|
|
|
|
ошибок |
|
ошибок |
|
области |
|
|
|
|
|
|
|
|
|
|
данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис.9.1. Классификация моделей надежности
Время программирования программы им предлагается вычислять по следующей формуле:
T = (n1 N2 (n1 log2 n1 + n2 log2 n2 ) log2 n1 / 2 n2 S,
где S – число Страуда (Холстед принял равным 18 – число умственных операций в единицу времени).
Объем вычисляется по формуле:
V = ( 2 + n2*) log2 (( 2 + n2 *), где n2 * – мах число различных операций.
Измерительные модели предназначены для измерения надежности программного обеспечения, работающего с заданной внешней средой и имеющие следующие ограничения:
– программного обеспечения не модифицируется во время периода измерений свойств надежности;
– обнаруженные ошибки не исправляются;
– измерение надежности проводится для зафиксированной конфигурации программного обеспечения.
Типичным примером таких моделей является модель Нельсона и Рамамурти–Бастани и др.
Модель оценки надежности Нельсона основывается на выполнении k–прогонов программы при тестировании и позволяет определить надежность
222
R (k) = exp [– ∑ tj λ (t)],
где tj – время выполнения j–прогона, λ (t) = – [ln (1– qi) j] и при qi ≤ 1 она интерпретируется как интенсивность отказов.
В процессе испытаний программы на тестовых nl прогонах оценка надежности вычисляется по формуле
R (l) = 1 – nl / k, где k – число прогонов программы.
Таким образом, данная модель рассматривает полученные количественные данные о проведенных прогонах.
Оценочные модели основываются на серии тестовых прогонов и проводятся на этапах тестирования ПC. В тестовой среде определяется вероятность отказа программы при ее выполнении или тестировании.
Эти типы моделей могут применяться на этапах ЖЦ. Кроме того, результаты прогнозирующих моделей могут использоваться как входные данные для оценочной модели. Имеются модели (например, модель Мусы), которые можно рассматривать как оценочную и в тоже время, как измерительную модель [19, 20].
Другой вид классификации моделей предложил Гоэл [21, 22], согласно которой модели надежности базируются на отказах и разбиваются на четыре класса моделей:
–без подсчета ошибок,
–с подсчетом отказов,
–с подсевом ошибок,
–модели с выбором областей входных значений.
Модели без подсчета ошибок основаны на измерении интервала времени между отказами и позволяют спрогнозировать количество ошибок, оставшихся в программе. После каждого отказа оценивается надежность и определяется среднее время до следующего отказа. К такой модели относится модель Джелински и Моранды, Шика Вулвертона и Литвуда–Вералла [23, 24].
Модели с подсчетом отказов базируются на количестве ошибок, обнаруженных на заданных интервалах времени. Возникновение отказов в зависимости от времени является стохастическим процессом с непрерывной интенсивностью, а количество отказов является случайной величиной. Обнаруженные ошибки устраняются и поэтому количество ошибок в единицу времени уменьшается. К этому классу моделей относится модель Шумана, Шика–Вулвертона, Пуассоновская модель и др.[24–,27]
Модели с подсевом ошибок основаны на количестве устраненных ошибок и подсеве внесенном в программу искусственных ошибок, тип и количество которых заранее известны. Затем строиться соотношение числа оставшихся прогнозируемых ошибок к числу искусственных ошибок, которое сравнивается с соотношением числа обнаруженных действительных ошибок к числу обнаруженных искусственных ошибок. Результат сравнения используется для оценки надежности и качества программы. При внесении изменений в программу проводится повторное тестирование и оценка надежности. Этот подход к организации тестирования отличается громоздкостью и редко используется из–за дополнительного объема работ, связанных с подбором, выполнением и устранением искусственных ошибок.
223
Модели с выбором области входных значений основываются на генерации множества тестовых выборок из входного распределения и оценка надежности, проводится по полученным отказам на основе тестовых выборок из входной области. К этому типу моделей относится модель Нельсона и др.
Таким образом, классификация моделей роста надежности относительно процесса выявления отказов, фактически разделена на две группы:
модели, которые рассматривают количество отказов как Марковский процесс; модели, которые рассматривают интенсивность отказов как Пуассоновский процесс.
Фактор распределения интенсивности отказов разделяет модели на экспоненциальные, логарифмические, геометрические, байесовские и др.
9.2.3. Модели надежности Марковского и Пуассоновского типов
Марковский процесс характеризуется дискретным временем и конечным множеством состояний. Временной параметр пробегает неотрицательные числовые значения, а процесс (цепочка) определяется набором вероятностей перехода pij (n), т.е. вероятностью на n– шаге перейти из состояния i в состояние j. Процесс называется однородным, если он не зависит от n.
В моделях, базирующихся на процессе Маркова, предполагается, что количество дефектов, обнаруженных в ПС, в любой момент времени зависит от поведения системы и представляется в виде стационарной цепи Маркова [13, 17, 18]. При этом количество дефектов конечное, но является неизвестной величиной, которая задается в для модели виде константы. Интенсивность отказов в ПС или скорость прохода по цепи зависит лишь от количества дефектов, которые остались в ПС.
К этой группе моделей относятся: Джелинського–Моранды [23], Шика–Вулвертона [24], Шантикумера [24] и др.
Ниже рассматриваются некоторые модели надежности, которые обеспечивают рост надежности ПО (называются моделями роста надежности [17]), находят широкое применение на этапе тестирования и описывают процесс обнаружения отказов при следующих основных предположениях:
–все ошибки в ПС не зависят друг от друга с точки зрения локализации отказов;
–интенсивность отказов пропорциональна текущему числу ошибок в ПС (убывает при тестировании программного обеспечения);
–вероятность локализации отказов остается постоянной;
– локализованные ошибки устраняются до того, как тестирование будет продолжено;
– при устранении ошибок новые ошибки не вносятся.
Приведем основные обозначения используемых величин при описании моделей роста надежности:
m – число обнаруженных отказов ПО за время тестирования; Хi – интервалы времени между отказами i–1 и i, при i =1,..., m;
Si – моменты времени отказов (длительность тестирования до i– отказа), Si = Xk
при i = 1,..., m;
T – продолжительность тестирования программного обеспечения (время, для которого определяется надежность);
N – оценка числа ошибок в ПО в начале тестирования;
224
M – оценка числа прогнозированных ошибок;
MТ – оценка среднего времени до следующего отказа;
E (Tp) – оценка среднего времени до завершения тестирования; Var (Tp) – оценка дисперсии;
R ( t) – функция надежности ПО;
Zi ( t) – функция риска в момент времени t между i–1 и i отказами; с – коэффициент пропорциональности;
b – частота обнаружения ошибок.
Далее рассматриваются несколько моделей роста надежности, основанные на этих предположениях и использовании результатов тестирования программ в части отказов, времени между ними и др.
Модель Джелински–Моранды. В этой модели используются исходные данные, приведенные выше, а также:
m – число обнаруженных отказов за время тестирования, Xi – интервалы времени между отказами,
Т – продолжительность тестирования.
Функция риска Zi (t) в момент времени t расположена между i–1 и i имеет вид:
Zi (t) = c (N – n i–1) ,
где i = 1 ,.., m; Ti–1 < t < Ti .
Эта функция считается ступенчатой кусочно–постоянной функцией с постоянным коэффициентом пропорциональности и величиной ступени – с.
Оценка параметров c и N производится с помощью системы уравнений:
m |
m |
Σ 1 / (N – ni–1) – Σ c Xi = 0 |
|
i =1 |
i =1 |
m |
|
n/c – NT – Σ Xi |
ni–1 = 0 |
i =1 |
|
|
m |
При этом суммарное время тестирования вычисляется так: Т = Σ Хi i =1
Выходные показатели для оценки надежности относительно указанного времени T включают:
–число оставшихся ошибок Mт = N–m;
–среднее время до текущего отказа MТт = 1/( N–m) c;
–среднее время до завершения тестирования и его дисперсия
N–n
E (Tp) = Σ (1/ ic) ,
i =1
N–n
Var (Tp) = Σ 1/( ic) 2
i =1
При этом функция надежности вычисляется по формуле:
Rт ( t) = exp (– (N– m) ct),
225
при t>0 и числе ошибок, найденных и исправленных на каждом интервале тестирования, равным единице.
Модель |
Шика–Волвертона. |
Модель |
используется тогда, когда интенсивность |
отказов |
пропорциональна не |
только |
текущему числу ошибок, но и времени, |
прошедшему с момента последнего отказа. Исходные данные для этой модели аналогичны выше рассмотренной модели Джелински–Моранды:
m – число обнаруженных отказов за время тестирования, Xi – интервалы времени между отказами,
Т – продолжительность тестирования.
Функции риска Zi (t) в момент времени между i–1 и i–m отказами определяются следующим образом:
Zi ( t) = c (N – n i –1), где i = 1 ,..., m; Ti–1 < t < Ti ,
m
Т= Σ Хi .
i=1
Эта функция является линейной внутри каждого интервала времени между отказами, возрастает с меньшим углом наклона.
Оценка c и N вычисляется из системы уравнений:
m m
Σ 1/(N – ni–1) – Σ Xi 2 /2 = 0 |
|
i =1 |
i =1 |
m
n/c – Σ (N – ni–1 ) Xi 2 / 2 = 0
i =1
К выходным показателям надежности относительно продолжительности T относятся:
– число оставшихся ошибок Mт = N–m;
–среднее время до следующего отказа MTт = (π / (2 ( N–m) c) ) 1/2 ;
–среднее время до завершения тестирования и его дисперсия
N–m
E (Tp) = Σ (π / (2 i c)) 1/2 ,
i=1
N–m
Var (Tp) = Σ ( (2– π /2) / i c );
i=1
Функция надежности вычисляется по формуле:
R Т ( t) = exp (–(N–m) ct2 /2) , t ≥ 0.
Модель Пуассоновского типа базируется на выявлении отказов и моделируется неоднородным процессом, который задает {M(t), t≥0} – неоднородный пуассоновский процесс с функцией интенсивности λ(t), что соответствует общему количеству отказов ПС за время его использования t.
Модель Гоело–Окумото. В основе этой модели лежит описание |
процесса |
обнаружения ошибок с помощью неоднородного Пуассоновского процесса, |
ее можно |
рассматривать как модель экспоненциального роста. В этой модели интенсивность отказов также зависит от времени. Кроме того, в ней количество выявленных ошибок трактуется как случайная величина, значение которой зависит от теста и других условных факторов.
226
Исходные данные этой модели:
m – число обнаруженных отказов за время тестирования, Xi – интервалы времени между отказами,
Т – продолжительность тестирования.
Функция среднего числа отказов, обнаруженных к моменту t имеет вид:
m ( t) = N (1 – e –bt ) ,
где b – интенсивность обнаружения отказов и показатель роста надежности q ( t) = b. Функция интенсивности λ ( t) в зависимости от времени работы до отказа равна
λ ( t) = Nb –bt , t ≥ 0.
Оценка b и N получаются из решения уравнений:
m/N –1 + exp (–bT) = 0
m
m/b – Σ ti – Nm exp (–bT) =0
i=1
Выходные показатели надежности относительно времени T определяют: 1) среднее число ошибок, которые были обнаружены в интервале [ 0, T]
E (NT ) = N exp (–bT) ,
2) функцию надежности
RT ( t) = exp (–N (e –bt – e –bt (t+т) )) , t ≥ 0.
Вэтой модели обнаружение ошибки, трактуется как случайная величина, значение которой зависит от теста и операционной среды. В других моделях количество обнаруженных ошибок рассматривается как константа.
Вмоделях роста надежности исходной информацией для расчета надежности являются интервалы времени между отказами тестируемой программы, число отказов и время, для которого определяется надежность программы при отказе. На основании этой информации по моделям определяются следующие показатели надежности:
–вероятность безотказной работы;
–среднее время до следующего отказа;
–число необнаруженных отказов (ошибок);
–среднее время для дополнительного тестирования программы.
Модель анализа результатов прогона тестов использует в своих расчетах общее число экспериментов тестирования и число отказов. Эта модель определяет только вероятность безотказной работы программы и выбрана для случаев, когда предыдущие модели нельзя использовать (мало данных, некорректность вычислений). Формула определения вероятности безотказной работы по числу проведенных экспериментов имеет вид:
P = 1 – Neх /N ,
где Neх – число ошибочных экспериментов, N – число проведенных экспериментов для проверки работы ПС.
Таким образом, можно сделать вывод о том, что модели надежности ПС основаны на времени функционирования и/или количестве отказов (ошибок), полученных в
227
программах в процессе их тестирования или эксплуатации. Модели надежности учитывает случайный Марковский и пуассоновский характер соответственно процессов обнаружения ошибок в программах, а также характер и интенсивность отказов.
Контрольные вопросы и задания
1.Определите понятие – качество ПО.
2.Назовите основные аспекты и уровни модели качества ПО.
3.Определите характеристики качества ПО и их назначение.
4.Какие методы используются при определении показателей качества?
5.Определите метрики программного продукта и их составляющие.
6.Какие стандарты в области качества ПО существуют?
7.Назовите основные цели и задачи системы управления качеством.
8.В чем суть инженерии качества?
9.Назовите содержание классификации моделей надежности.
10.Определите типы моделей надежности и их базис.
11.Какие данные необходимы для оценивания надежности ПО?
Литература к теме 9.
1.ISO/IEC 9126. Infofmation Technology. – Software Quality Characteristics and metrics. – 1997.
2.ДСТУ 2844–1994. Программные средства ЭВМ. Обеспечение качества. Термины и определения..
3.ДСТУ 2850–1994. Программные средства ЭВМ. Обеспечение качества. Показатели и методы оценки качества программного обеспечения.
4.ДСТУ 3230–1995. Управление качества и обеспечение качества. Термины и определения.
5.Haag S., Raja H.K., Sekade L.L. Quality Function Deployment. Usage in Software Development// Comm. оf ACM.– 1998. –39. –N1.
6.Кулаков А.Ю. Оценка качества программ ЭВМ .–Киев: Технiка.–1984.–167с.
7.Липаев В.В. Методы обеспечения качества крупномасштабных программных систем. – М.: СИНТЕГ.– 2003.–510 с.
8.Андон Ф.И., Суслов В.Ю., Коваль Г.И., Коротун Т.М. Основы качества программных систем.–Киев, Академпериодика.– 2002.–502с.
9.Липаев В.В. Надежность программного обеспечения АСУ.–М.: Сов.радио, 1977.– 400с.
10.Майерс Г. Надежность программного обеспечения .– М.: Мир, 1980.–360с.
11.Гласс Г. Руководство по надежному программированию.–М.: Финансы и Статистика, 1982.–256с.
12.Тейер Т., Липов Р., Нельсон Э. Надежность программного обеспечения.–М.:
Мир, 1981.– 325с.
13.Барлоу Р., Прошан Ф. Математическая теория надежности. Пер.с анг. М.: 1969.– 483с.
14.Meyer B. The role of Object–Oriented Metrics.– Computer, 1998. –№11.–p.23–125.
15.NASA –STD–2201/ Software Assurance Standart, 1993.
16.ISO 14598. Information Technology – Software product evolution– Part1: General overview.–1996.
17. Мороз Г.Б., Лаврищева Е.М. Модели роста надежности программного обеспечения.– Киев.–Препринт 92–38, 1992.– 23с.
228
18.Коваль Г.И. Подход к прогнозированию надежности ПО при управлении проектом // Проблемы программирования. –2002. – № 1 – 2. – С. 282 – 290.
19.John D. Musa, Anthony Iannino, and Kazuhira Okumoto. Software Reliability: Measurement, Prediction, Application. Whippany, NJ: McGraw–Hill, 1987.
20.Musa J.D. Okumoto K.A. Logarithmic Poisson Time Model for Software Reliability Measurement //Proc. Sevent International Conference on Software Engineering. – Orlando, Florida. – 1984. –P. 230–238.
21.Goel A.L. Software reliability models& Assumptions, Limitations and Applicability// IEEE Trans.– N2.–p.1411–1423.
22.Sukert A.N., Goel A.L. A guidebook for software reliability assessment /Proc. Annual Reliability and Maintainability Symp. – Tokio (Japan). – 1980. –P. 186 – 190.
23.Jelinski Z., Moranda P. Software reliability research /Statistical computer performance evaluation W.Freiberger, Ed. Academic Press. –1972. – Р. 465–484.20.
24.Shick G.J., Wolverton R.W. An analysis of computing software reliability models /IEEE Tras. Software Eng. – V. SE–4. – № 2. – 1978. P. 104–120.
25.Yamada S., Ohba M., Osaki S. S–shaped software reliability grows modeling for software error detection / // IEEE Trans. Reliability. – 1983. – R–32. – № 5. – P. 475–478.
26.Schneidewind N.F. Software Reliability Model with Optimal Selection of Failure Data //IEEE Trans. on Software Eng. – 1993. – № 11. –P. 1095–1104.
27.Shanthikumar J.G. Software reliability models: A Review //Microelectron. Reliab. – 1983. –V. 23. –№ 5 – Р. 903–943.
229
Тема 10 МЕТОДЫ УПРАВЛЕНИЯ ПРОЕКТОМ, РИСКОМ И КОНФИГУРАЦИЕЙ
Инженерное программирование охватывает процессы планирования и управления проектом, а также связанными с ними процессы оценивания заданных сроков и стоимости на предмет распределения всех ресурсов таким образом, чтобы успешно выполнить проект, а также выявлять и управлять возникающие риски, как в подборе исполнителей так и в использовании инструментальных средств для постепенного изготовления версий системы.
Материал данной темы состоит из трех разделов:
1.Методы управления программным проектом.
2.Методы обнаружения и устранения рисков в проекте. 3.Управление конфигурацией системы.
10.1. Методы управления проектами
Согласно мировой статистики, не все реализуемые программные проекты завершаются успешно, 33% из них являются провальными по следующим причинам:
–требования заказчика не выполняются ,
–проект не вложился в стоимость,
–проект не вложился в заданные сроки,
–этапы работ оказались нескординированными друг с другом,
–менеджер не ориентирует разработчиков на применение новейших методов и средств программирования, планирования и соблюдение стандартных соглашений на применение модели ЖЦ.
Основные положения |
управления проектом, задачи |
и методы |
которого |
отрабатывались на технических проектах (например, первый |
проект |
разработки |
|
лайнера для перевозки пассажиров из Европы в Америку), привели к тому, что Генри Гант впервые предложил диаграммную схему учета времени выполнения проекта. На сегодня эти задачи сформулированы следующим образом:
–планирование проекта и составление графиков работ выполнения проекта,
–управление проектными работами и командой исполнителей,
–управление рисками,
–оценивание продукта и используемых процессов в целях усовершенствования и др..
Управление проектом – это руководство работами команды исполнителей проекта для реализации проекта с использованием общих методов управления, планирования и контроля работ (видение будущего продукта, стартовые операции, планирование итераций, мониторинг и отчетность), планирование и управление рисками, эффективной организацией работы команды и коммуникационными потоками в команде исполнителей.
Основными составляющими любого проекта являются следующие: ресурсы (людские,
финансовые |
и |
технические) |
время и |
стоимость выполнения |
проекта. |
Ответственность за |
координацию и |
реализацию этих трех составляющих несет |
|||
менеджер проекта, а ответственность за идейную, |
функциональную сторону |
проекта |
|||
несет главный специалист (в программном проекте – главный программист). |
|
||||
Успешное выполнение проекта зависит от уровня знаний методов управления менеджером проекта. Если он прошел школу управления техническим проектом и
230
