Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций «программирование На Языке Высокого Уровня Си» По Информатике (Попов Д. И.).pdf
Скачиваний:
172
Добавлен:
07.10.2014
Размер:
1.31 Mб
Скачать

Примечание. На языке Си функции ввода-вывода scanf и printf имеют более сложный синтаксис, поэтому полученная в примере программа требует небольшой доработки. Программа на языке Паскаль получилась полностью работоспособной.

Тестирование и отладка

Тестирование – процесс поиска ошибок работы программы, посредством проверки правильности результатов ее функционирования на наборах данных, характерных для рабочего состояния программы. Как правило, при тестировании известны исходные данные и правильный результат, который должна выдавать программа. Такие данные часто называются тестовыми последовательностями или просто тестами. Цель тестирования – подготовить как можно больше тестовых последовательностей и проверить работоспособность программы на них.

Отладка – точное определение местоположения ошибок в программе, причин и условий их возникновения, с целью последующего их устранения.

Трассировка (раскрутка) алгоритма – это процесс пошагового выполнения алгоритма с записью в таблицу значений переменных, значений условий, номеров последующего шага (блока) для выполнения и комментариев по выполнению. Трассировка позволяет в ручном режиме, на бумаге проверить работу алгоритма и при необходимости найти ошибки. Фактически трассировка в таком виде заменяет стандартного исполнителя алгоритма – ЭВМ на исполнителя-человека. Важно, чтобы исполнитель действовал исключительно по инструкциям алгоритма, а не «фантазировал», что-то придумывал или изменял по ходу выполнения алгоритма.

Пример 6. Проведем трассировку структурного алгоритма на основе цикла с постусловием, приведенного в примере 4 (табл.4).

 

 

 

 

 

 

 

 

Таблица 4.

 

 

 

 

 

 

Трассировка(раскрутка) алгоритма

a

b

h

x

f

x>b

Примечание

п/п

шага

1

0

 

 

 

 

 

 

Начало

2

1

1

2

0,2

 

 

 

Ввели в ячейки данные для a, b, h

3

2

 

 

 

1

 

 

Записываем в ячейку x := a=1

4

3, 3.1

 

 

 

 

–0,159

 

Начало цикла, вычисляем f:=sin 1 – 1

5

3.2

 

 

 

 

 

 

На экран выводzтся ячейки x = 1 и f = –0,159

6

3.3

 

 

 

1,2

 

 

x := x + h=1+0,2=1,2

7

3.4

 

 

 

 

 

Нет

Проверка условия окончания цикла 1,2>2

30

8

3.1

 

–0.209

Вычисляем f:=sin (1,2) – 1,2= –0,209

9

3.2

 

 

На экран выводится 1,2 и –0,209

10

3.3

1,4

 

x := x + h=1,2+0,2=1,4

11

3.4

 

Нет

Проверка условия окончания цикла 1,4>2

12

3.1

 

–0.475

Вычисляем f

13

3.2

 

 

На экран выводится 1,4 и –0,475

14

3.3

1,6

 

x := x + h=1,4+0,2=1,6

15

3.4

 

Нет

Проверка условия окончания цикла 1,6>2

16

3.1

 

–1.051

Вычисляем f

17

3.2

 

 

На экран выводится 1,6 и –1,051

18

3.3

1,8

 

x := x + h=1,6+0,2=1,8

19

3.4

 

Нет

Проверка условия окончания цикла 1,8>2

20

3.1

 

–1.898

Вычисляем f

21

3.2

 

 

На экран выводится 1,8 и –1,898

22

3.3

2,0

 

x := x + h=1,8+0,2=2,0

23

3.4

 

Нет

Проверка условия окончания цикла 2,0>2

24

3.1

 

–2.757

Вычисляем f

25

3.2

 

 

На экран выводится 2,0 и –2,757

26

3.3

2,2

 

x := x + h=2,0+0,2=2,2

27

3.4

 

Да

Проверка условия окончания цикла 2.2>2

28

4

 

 

Конец цикла, Конец работы алгоритма

Верификация – доказательство правильности программы. Проблема верификации программ все еще является открытой, и в настоящее время существуют методы, позволяющие доказывать правильность лишь небольших и однотипных алгоритмов. Для сложных и больших алгоритмов методов верификации, к сожалению, пока не придумано. Более того, существует такая аксиома: любая сложная программа содержит хотя бы одну ошибку. Такое утверждение основывается на том факте, что в любой сложной программе с наличием циклов и ветвлений существует бесконечное (или очень большое) количество путей, и проверить работоспособность каждого пути, как правило, не представляется возможным, а значит вероятность того, что на одном из таких путей возникнет ошибка, достаточно велика. Фактически большинство методов верификации программ пытаются строго математически обойти все пути алгоритма и доказать, что ни на одном из них нет ошибок. При отладке программы, программист делает то же самое, – он пытается пройти все возможные пути и проверить на них работоспособность программы, но только не теоретическими методами, а практическим способом, выбирая различные тестовые последовательности, что бы охватить как можно большее количество путей в программе. Ошибки возникают именно на том пути, где программист не проверил работоспособность алгоритма.

31

Поэтому, для более тщательного тестирования и отладки программы, план проведения испытаний работы программы должен быть составлен заранее и тестовые данные должны подбираться для проверки функций программы, а не разработанных алгоритмов. Т.е. тестовые примеры создаются на этапе проектирования программной системы, а не на этапе кодирования.

Можно выделить следующие виды тестирования:

автономное (тестирование модулей программистами);

комплексное (тестирование общих функций системы программистами);

системное (оценочное) – тестирование, как правило, с участием заказчика.

Эксплуатация и сопровождение

При эксплуатации могут возникать следующие ситуации, требующие модификации системы:

обнаруживаться ошибки;

обнаруживаться неэффективные алгоритмы;

потребоваться уточнение отдельных функций и данных;

потребоваться введение дополнительных функций.

Все это обуславливает выпуск новых версий системы.

Критерии качества программного обеспечения

Модель качества программного обеспечения (ПО) описана в стандарте ИСО/МЭК 9126-1:1998 «Характеристики и метрики качества программного обеспечения» и категоризирует атрибуты качества ПО по шести характеристикам: функциональные возможности, надежность, практичность, эффективность, сопровождаемость и мобильность (рис.9).

32

качество

программного

продукта

функциональны

 

 

 

надежность

 

практичность

 

 

 

эффективность

 

 

сопровождаемость

 

мобильность

 

 

возможности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пригодность

 

 

завершенность

понятность

 

 

временная

 

 

 

анализируемость

 

адаптируемость

 

 

правильность

 

 

обучаемость

 

 

 

 

 

изменяемость

 

простотаустановки

 

 

способность к

 

 

устойчивость к

простота

 

 

эффективность

 

 

 

стабильность

 

сосуществование

 

 

взаимодействи

 

 

ошибкам

использования

 

 

ресурсоемкость

 

 

 

тестируемость

 

взаимозаменяемос

 

 

защищенность

 

 

восстанавливаемост

привлекательност

 

 

согласованность

 

 

 

согласованность

 

согласованность

 

 

согласованност

 

 

согласованность

согласованность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.9. Основные характеристики качества программного обеспечения

Рассмотрим эти категории и их составляющие более подробно.

Функциональные возможности (Functionality)

Представляют собой способность ПО обеспечивать функции, удовлетворяющие установленным и подразумеваемым потребностям при использовании ПО в заданных условиях.

Пригодность (Suitability) – способность ПО обеспечивать соответствующий набор функций для указанных задач и целей пользователя.

Правильность (Accuracy) – способность ПО обеспечивать

правильные или приемлемые результаты или эффекты.

Способность к взаимодействию (Interoperability) –

способность ПО взаимодействовать с одной или большим

числом указанных систем. Способность к взаимодействию

используется вместо совместимости, чтобы избежать возможной путаницы с заменяемостью.

Защищенность (Security) – способность ПО защищать информацию и данные так, чтобы не уполномоченные субъекты

или системы не могли читать или изменять их, а уполномоченные субъекты или системы не получали отказа на доступ к ним.

33

Согласованность

(Compliance)

способность

ПО

придерживаться стандартов, соглашений или норм из законов и

подобных предписаний, связанных с областью применения.

Надежность (Reliability)

Это способность ПО сохранять свой уровень качества функционирования при использовании в указанных условиях. Ограничения в надежности являются следствием ошибок в требованиях, проекте и реализации. Отказы из-за этих дефектов в большей степени зависят от способа использования ПО и выбранных режимов работы программы, чем от времени ее выполнения.

Завершенность (Maturity) – способность ПО предотвращать отказ как следствие ошибок в ПО.

Устойчивость к ошибке (Fault tolerance) – способность ПО поддерживать заданный уровень качества функционирования в случаях ошибок в ПО или нарушения установленного интерфейса.

Восстанавливаемость (Recoverability) – способность ПО в случае отказа восстанавливать уровень качества функционирования и поврежденные данные. После отказа, ПО иногда бывает неработоспособно в течение некоторого периода времени, длина которого оценивается его восстанавливаемостью.

Доступность (Availability) – способность ПО быть в состоянии выполнять требуемую функцию в данный момент времени при установленных условиях использования. Внешне, доступность может оцениваться временем, в течение которого ПО находится в работоспособном состоянии, в пропорции от общего времени. Следовательно, доступность – комбинация завершенности (от которой зависит частота отказа) устойчивость к ошибке и восстанавливаемости (которые обусловливают длительность простоя после каждого отказа).

Согласованность

(Compliance)

способность

ПО

придерживаться стандартов, соглашений или норм из законов и подобных предписаний, связанных с надежностью.

34

Практичность (Usability)

Это способность ПО, обусловливающая легкость его понимания, изучения и использования, а также

привлекательность для пользователя при использовании в указанных условиях.

Понятность (Understandability) – способность ПО, обеспечивающая пользователю понимание, является ли ПО пригодным, и как его можно использовать для конкретных задач и условий использования. Понятность зависит от

документации и первичных впечатлений от ПО.

Изучаемость (Learnability) – способность ПО,

обеспечивающая изучение пользователем его применения.

Легкость использования (Operability) – способность ПО, обеспечивающая пользователю возможность его эксплуатировать и управлять им. Аспекты изменяемости, адаптируемости и легкости установки могут быть предпосылками для легкости использования. Легкость использования соответствует управляемости, устойчивости к ошибке и согласованности с ожиданиями пользователя. Для системы,

которая эксплуатируется пользователем, комбинация функциональных возможностей, надежности, практичности и

эффективности можно измерить внешне через качество в использовании.

Привлекательность (Attractiveness) – способность ПО нравиться пользователю. Привлекательность связана с атрибутами ПО, обусловливающими большую привлекательность ПО для пользователя.

Согласованность (Compliance) – способность ПО

придерживаться стандартов, соглашений, руководств по стилю или нормам, связанных с практичностью.

35

Эффективность (Efficiency)

Это способность ПО обеспечивать требуемую производительность относительно количества используемых ресурсов в установленных условиях. Ресурсы могут включать другие программные продукты, аппаратные средства, материалы (например, бумага для распечатки, дискеты). Для системы, которая эксплуатируется пользователем, комбинация

функциональных возможностей, надежности, легкости использования и эффективности можно измерить внешне через

качество в использовании.

Временная эффективность (Time behaviour) – способность

ПО обеспечивать приемлемые времена отклика и обработки, а также пропускную способность при выполнении его функций в установленных условиях.

Использование ресурсов (Resource utilization) – способность ПО использовать приемлемые ресурсы в течение приемлемого времени при выполнении его функций в установленных условиях.

Согласованность (Compliance) – способность ПО придерживаться стандартов или соглашений, связанных с эффективностью.

Сопровождаемость (Maintainability)

Это способность ПО к модификации. Изменения могут включать исправления, усовершенствования или адаптацию ПО

кизменениям в среде, а также в требованиях и функциональных спецификациях.

Анализируемость (Analyzability) – способность ПО к диагностике его недостатков или причин отказов в ПО, а также

кидентификации его частей для модификации.

36

Изменяемость (Changeability) – способность ПО к обеспечению реализации специфицированных изменений. Реализация включает кодирование, проектирование и документирование изменений. Если ПО должен

модифицировать конечный пользователь, изменяемость может быть предпосылкой для легкости использования.

Стабильность (Stability) – способность ПО минимизировать непредвиденные эффекты от его изменений.

Тестируемость (Testability) – способность ПО, обеспечивающая проверку и приемку модифицированного ПО.

Согласованность (Compliance) – способность ПО придерживаться стандартов или соглашений, связанных с

сопровождаемостью.

Мобильность (Portability)

Это способность ПО к переносу из одной среды в другую. Среда может включать организационную, аппаратную или программную среду.

Адаптируемость (Adaptability) – способность ПО к модификации для различных указанных сред без применения других действий или средств, чем те, что предназначены для этой цели для рассматриваемого ПО. Адаптируемость включает масштабируемость внутренних возможностей (например, экранных полей, размеров таблиц, объемов транзакций, форматов отчетов и т.д.). Если ПО должно адаптироваться конечным пользователем, адаптируемость соответствует пригодности для индивидуализации и может быть предпосылкой для легкости использования.

Легкость установки (Installability) – способность ПО к установке в указанной среде. Если ПО должно устанавливаться конечным пользователем, легкость установки будет предпосылкой для легкости использования.

Сосуществование (Co-existence) – способность ПО сосуществовать с другим независимым ПО в общей среде, разделяя общие ресурсы.

37