Лекции по "Технология программирования"

Автор работы: Пользователь скрыл имя, 17 Декабря 2014 в 02:02, курс лекций

Краткое описание

Введение в идеологию. В эпоху НТП объемы производства и использование средств вычислительной технологии во многом определял Н.Т.П. Резкое снижение средств вычислительной техники создало предпосылки для массового внедрения вычислительной техники в бытовом производстве. Это позволило провести широкую автоматизацию производственных процессов на базе встроенных микропроцессов вплоть до применения их в бытовой технике.

Прикрепленные файлы: 1 файл

Tehnologiq_programmirovaniq2_lections.doc

— 394.00 Кб (Скачать документ)

Известны 3 метода предупреждения и выявления ошибок.

1) Выбор оптимальной технологии  разработки программного изделия, поддерживаемой мощными инструментальными средствами, четко регламентированными действиями, процессом разработки Программного изделия, что, в конечном счете, позволяет избежать множества ошибок.

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

3) Программно-целевой метод тестирования программного изделия, состоит в четкой ориентации тестов на конкретные цели тестирования каждого шага разработки, например ,цели: тестирование особых ситуаций, тестирование операционной памяти, тестирование загрузки.

 

Выбор способа сборки программного изделия из отдельных его модулей наиболее важный

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

Для решения поставленной проблемы  выбора, для решения процессов- разработано 2 подхода

1) Монолитное тестирование

2) Пошаговое тестирование(может  быть как восходящим, так и  нисходящим).

 Монолитное тестирование предусматривает проверку всей программы целиком(комплекс программ)

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

Анализ двух указанных подходов(преимущества и недостатки)

1) Монолитное тестирование более трудоемкий процесс сравнительно с пошаговым.

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

3) При пошаговом тестировании менее трудоемка отладка и поиск ошибок, т.е локализация ошибок и внешних изменений не влечет за собой переделку всего модуля.

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

5) Затраты  машинного времени в большинстве  случаев при монолитном тестировании как правило меньше , чем при пошаговом, т.к при монолитном  тестировании выполняется отдельный модуль, который просто передает управление, тогда как в конце тестирование производится в полном объеме.

6) Монолитное тестирование создает  хорошие предпосылки для распространения  процессов тестирования.

 

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

1) Тестирование удобств пользователя, т.е тестирование каждого пункта  пользовательской документации.

2) Тестирование на предельных  объектах 

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

3) Тестирование на  предельных  нагрузках- проверка функциональности  программного обеспечения в стрессовых  ситуациях, т.е максимального объема информации в сжатые отрезки времени, например, в сетевом режиме вводится с нескольких мест информация в базу данных.

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

5) Тестирование защиты, которое  представляет собой систему проверок  информации от несанкционированного  доступа в систему. Цель состоит  в том, чтобы построить такой тест, который позволял бы вскрыть недостатки системы и на них войти в систему.

6) Тестирование производительности  или эффективности программного  обеспечения.

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

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

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

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

9) Тестирование  удобств установки  программного обеспечения- оно проверяет  установку достаточно сложного  программного продукта, на конкретные  условия эксплуатации.

10) Тестирование надежности в  настоящее время носит принципиальный  характер и является важнейшим  показателем разработки программного  обеспечения.

11) Тестирование восстановления

Существует ряд программных систем:

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

12) Тестирование удобств обслуживания, как правило, состоит из комплекса инструментальных средств, облегчающих сопровождения программного обеспечения. Это возможность получения данных, все те средства, позволяющие изучить более детально тестирование программного обеспечения.

13) Тестирование документации 

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

14) Тестирование процедур: если  программное обеспечение является  некоторой частью подсистемы  обработки  данных большой системы, в  которой имеются процедуры  выполняемые человеком, то эти  процедуры должны быть протестированы

Анализ: трудоемкость тестирования составляет от 20 до 60% от всего объема работ, причем львиная доля его составляет -выбор необходимой исходной информации для получения эталонных значений. Эта задача резко экспоненциально растет, когда речь идет о комплексном тестировании огромного объема маршрутов, когда необходимо протестировать  предельные нагрузки на программное обеспечение. Нередкий случай ,когда ручная разработка тестов практически невозможна и специально создается и ……..позволяющая генерирование тестов.

 Методы отладки:

 Основная задача программиста состоит в том, чтобы его программа работала без ошибок, для этого существует 2 подхода

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

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

 

Лекция 16

 

Известны три источника ошибок в написании программы (с точки зрения анализа их распределения) – это алгоритмические ошибки или неверный выбор алгоритма решения задачи. Эти ошибки могут иметь наиболее серьезный характер впоследствии до полной переработки программы. К ним относятся: не учет или неполный учет данных, неправильное понимание структуры рассмотрения алгоритма, как неполного подмножества данных, данные, выходящие за пределы задач, не знание или  неполное знание средств вычислительной техники, незнание команд ЭВМ, языковых средств, возможностей среды разработки.

Описки – уровень обидной ошибки, который определен в результате просмотра.

Основная задача программиста состоит в том, чтобы его программа работала без ошибок.

Классификация ошибок по их внутреннему содержанию.

Основные классы ошибок.

  1. Отсутствие инициализации переменных .

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

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

  1. Ошибки индикации – это наиболее распространенные ошибки, когда обращение происходит за пределами памяти.
  2. Ошибки при передаче параметра – это второй наиболее распространенный класс ошибок, характеризующийся большим числом параметров, типов параметров. Последние очень разнообразны, что не подвергаются классификации.
  3. Ошибки, связанные с формулировкой условий.
  4. Арифметические ошибки – это большой класс ошибок, связанный с аварийными ситуациями: деление на ноль, выхождение за пределы объема.
  5.   Ошибки косвенного доступа.

Они появляются, как правило, при использовании в доступе указателей для связи между объектами.

  1. Висячие ошибки.

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

  1. Ошибки синхронизации

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

  1. Исторические ошибки – ошибки, связанные с данными, которые мы изменяем.

 

Способы проявления ошибок или симптомы проявления ошибок.

Неверная выдача:

  1. Когда программа, завершается, а результат не верен.
  2. Когда программа завершается, но
  3. Когда программа зависает, ее выполнение заканчивается, а никаких сообщений нет.
  4. Программа завершается, и ее выдача соответствует ожидаемым результатам, но хранимые данные испорченны.

 

Основной вывод.

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

 

Методы, используемые при поиске ошибок.

(делят на 2 категории)

  1. Аналитический подход, когда методы поиска ошибок построены на анализе входных или выходных данных, т.е. по форме объекта.
  2. Экспериментальный подход, когда используются отладочные средства программы, которые позволяют через внутренние точки программы выявить ошибку.

 

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

В аналитическом способе нагрузка ложиться на аналитические способности программиста.

В экспериментальном - на программу, когда она проверяет ошибки.

 

Золотые правила отладки.

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

 

Оценка качества разработки ПО.

Основные показатели качества ПО.

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

Какие программы считать хорошими?

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

Информация о работе Лекции по "Технология программирования"