- •Блочно-иерархический подход к созданию программных систем.
- •Основные положения метода эквивалентного разбиения.
- •Основные положения метода граничных значений.
- •Пошаговое тестирование модульных программ. Достоинства и недостатки подходов.
- •Классификация и проявление ошибок программирования
- •Достоинства ооп:
- •Каскадная модель:
Классификация и проявление ошибок программирования
В зависимости от этапа разработки, на котором проявляются ошибки, различают:
- синтаксические ошибки, фиксируемые компилятором, транслятором, интерпретатором);
- ошибки компоновки, выявляемые компоновщиком (редактором связей) при объединении модулей;
- ошибки выполнения, обнаруживаемые операционной системой, аппаратными средствами или пользователем при тестировании программы.
Ошибки выполнения. Проявляться эти ошибки могут следующим образом:
- в виде сообщения о переполнении разрядной сетки, делении на ноль, нарушении адресации;
- в виде сообщения о нарушении защиты памяти, ошибках
- “зависание” компьютера;
- несовпадение полученных результатов тестирования с ожидаемыми.
Причины ошибок выполнения очень разнообразны, поэтому их локализация может оказаться крайне сложной.
-------------------------------------------.
Методы отладки программ.
Метод ручного тестирования – выполнение программы вручную с использованием тестового набора, при прогоне которого была обнаружена ошибка.
Метод индукции включает:
1)определение данных тестирования, имеющих отношение к ошибке;
2)анализ от частного к общему позволит выявить закономерности в данных тестирования. В результате анализа выдвигается гипотеза о причине ошибки;
3)для подтверждения гипотезы разрабатывается тесты, которые должны либо подтвердить, либо опровергнуть гипотезу;
4)если дополнительные тесты подтверждают гипотезу, можно приступать к исправлению ошибки
Альтернативный метод дедукции заключается в:
1)перечисление возможных причин или гипотез:
2)использование данных тестирования для исключения некоторых возможных причин;
3)уточнение выбранной наиболее вероятной гипотезы, возможно с использованием дополнительных тестов;
-------------------------------------------
Методы получения дополнительной информации об ошибках.
Наиболее распространенными и наименее эффективными для отладки являются так называемые методы ‘грубой силы’. К ним относят:
* использование отладочного вывода;
* интегрированные средства отладки;
* независимые отладчики.
-------------------------------------------
Общая методика отладки программ.
Ошибки программы и исправления ошибок, после того, как ошибки были обнаружены в процессе тестирования.
1й этап – изучение проявления ошибки. Результатом выполнения этапа должна быть локализация ошибки. При этом можно использовать методы индукции и дедукции и средства получения дополнительной информации об ошибке.
2й этап – выполняется, если произошло “зависание” или не удалось локализовать ошибку, используя методы 1го этапа
3й этап – определение причины ошибки. После локализации ошибки выдвигаются версии о ее природе. Эти версии необходимо проверить, используя отладочные средства для просмотра последовательности операторов и значений переменных
4й этап – исправление ошибки.
5й этап – повторное тестирование
-------------------------------------------
Статические структуры данных: вектор и массив. Функции линеаризации.
Вектор – конечное упорядоченное множество простых данных или скаляров одного и того же типа. Элементы вектора находятся между собой в отношении непосредственного следования. В памяти ЭВМ элементы вектора представляются последовательностью одинаковых по длине участков памяти, как правило, расположенных в порядке следования элементов в группе. Важнейшая операция над вектором – доступ к заданному элементу.
Массивом называют такой вектор, каждый элемент которого вектор. В свою очередь элементы вектора “вектора массива” могут быть вектором (3-х и более мерные массивы). Как и для вектора, важнейшая операция с массивом – доступ к элементу массива. Эта операция должна учитывать физическое представление массива. Для массива общего вида преобразование логической структуры в физическую выполняется путем процесса линеаризации или упорядочения, в ходе которой многомерная структура массива преобразуется в одномерную физическую структуру.
-------------------------------------------
Критерии качества программ.
1) функциональность
2) надежность
3) легкость применения
4) эффективность
5) сопровождаемость
6) мобильность
Функциональность - это способность выполнять набор функций, определенных его внешними спецификациями.
Надежность ПП - это способность безотказно выполнять заданные функции при заданных условиях в течение заданного периода времени с высокой степенью вероятности.
Легкость применения - это способность минимизировать затраты пользователя подготовку и ввод исходных данных и оценку полученных результатов, а также вызывать положительные эмоции пользователя.
Эффективность - это отношение уровня услуг, предоставляемых ПП, к объему используемых вычислительных ресурсов.
Сопровождаемость - это такие характеристики ПП, которые позволяют минимизировать усилия по внесению изменений при обнаружении ошибок в ПП и при его модификации. Не последнюю роль в повышении сопровождасмости играют комментарии к тексту программы!
Мобильность - это способность ПП быть перенесенным из одной вычислительной среды (окружения) в другую.
-------------------------------------------
Стиль оформления программ.
Стиль оформления включает:
1) правила именования объектов программы – имя должно соответствовать содержанию.
2) правила оформления модулей – каждый модуль должен иметь описание того, что он делает.
3) стиль оформления текстов программ – красивое оформление кода + коменты
-------------------------------------------
Эффективность программ: способы экономии памяти.
- не использовать дублирование данных, алгоритмов, использовать динамическую память.
-------------------------------------------
Эффективность программ: способы экономии времени выполнения.
- Сложение быстрее умножения
- int быстрее double
- использовать const
- избегать многократное обращения к элементу
-------------------------------------------
Программирование “с защитой от ошибок”.
Программирование, при котором применяют специальные приемы раннего обнаружения и нейтрализации ошибок, было названо защитным или программированием с защитой от ошибок. При его использовании существенно уменьшается вероятность получения неверных результатов.
1. правильность выполнения операций ввода-вывода;
2. допустимость промежуточных результатов
3. предотвращение накопления погрешности
-------------------------------------------
Стихийное программирование. Этапы совершенствования архитектуры программ.
Стихийное – первые ЭВМ – 60е годы.
Суть его в том, чтобы из операторов языка программирования сконструировать программу, выполняющую некоторое (заданное) преобразование данных.
Главный недостаток разработанного таким образом ПО – большие трудности его сопровождения. Программы, написанные без регламентации применения операторов языка программирования, имели частое применение в таких программах оператора перехода goto.
Стихийное
Структурный
ООП
Компонентный подход и CASE-технологии
-------------------------------------------
Структурное программирование. Определение подхода, цель и принципы.
Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
Цель структурного программирования – разработка программы, которой присуща определенная структура, основанная на применении принципов структурного программирования.
Перечислим эти принципы:
Каждый программный модуль (блок, функция, процедура) должен иметь только один вход и один выход.
Это позволяет максимально упростить стыковку модулей в программе.
В программах рекомендуется применять 4 типа конструкций:
а) последовательность (модулей, операторов)
б) разветвление (условный оператор)
в) цикл
с предусловием
с постусловием
г) выбор из нескольких альтернатив (или переключатель)
разработку программ рекомендуется вести сверху – вниз или по нисходящей стратегии.
-------------------------------------------
Нисходящая стратегия разработки программ.
Суть нисходящей стратегии в том, что проектировщик должен приступить к работе, имея только концептуальный абстрактный замысел о том, что система или программа будет делать. Затем этот замысел постепенно конкретизируется шаг за шагом, тем самым погружаясь в подробности окончательного программного продукта до тех пор, пока не будет достигнуто «дно», под которым понимаются программные модули, реализующие отдельные функции или процедуры преобразования данных (принцип декомпозиции).
-------------------------------------------
Принципы модульного программирования.
Принципы модульного программирования позволяют получать программные комплексы минимальной сложности. Эти принципы следующие:
а) усиление внутренних связей в каждом модуле (иначе принцип называется повышением прочности модуля);
б) ослабление взаимосвязи между модулями (иначе этот принцип называется ослаблением сцепления модулей).
Класс прочности является мерой связи предложений внутри модуля. Сцепление модулей – это мера зависимости между модулями.
-------------------------------------------
Основные понятия объектно-ориентированного программирования.
Основными понятиями ООП являются объект (экземпляр класса), класс, метод и сообщение (запрос)
Класс - это структура данных, которая может содержать в своем составе переменные, функции и процедуры.
Объектом или экземпляром класса называется переменная объектного типа (или переменная типа класс).
Методы – операции обработки.
Сообщением является совокупность данных определенного типа, передаваемых объектом-отправителем объекту-получателю, имя которого указывается в сообщении.
-------------------------------------------
Достоинства и недостатки объектно-ориентированного программирования.
