Под корректностью программы понимают её соответствие некоторому эталону или совокупности формализованных эталонных правил и характеристик.
Наиболее полным эталоном корректности программ является программная спецификация. Её особенностью является задание требований поведения программы для допустимых наборов входных данных. Поэтому корректная программа может неправильно работать или даже сбиваться на недопустимых наборах входных данных. Свойством устойчивости к недопустимым наборам входных данных обладает надежная программа — в этом заключается разница между надёжной и корректной программами.
Требования к корректности делятся в зависимости от двух типов критериев качества:
· Для функциональных критериев они определяются предметной областью и функциями выполняемой программы.
· Для конструктивных критериев они определяются общими для всех программ свойствами.
В зависимости от проверяемых компонентов программ различают следующие виды их корректности, показанные на рис.11.
Написал программу на Python, как вам? #python #программирование
1. Корректность текстов программ имеет только конструктивную составляющую; благодаря жёстким правилам языков программирования синтаксическая и семантическая корректность программ проверяется на этапе трансляции программы, и прошедшая трансляцию программа является корректной с этой точки зрения.
2. Корректность программных модулей имеет и конструктивную и функциональную составляющие:
· Конструктивная составляющая определяется правилами построения структуры программных модулей, задаваемыми в технологии и языке программирования.
· Функциональная составляющая корректности модулей зависит от предметной области и функциональных спецификаций программы.
Функциональная составляющая корректности может проверяться в различных условиях:
Детерминированная — для фиксированных наборов входных данных должны быть получены конкретные значения результатов;
Стохастическая — входные данные задаются случайными величинами с известными законами распределения и результаты также должны быть случайными величинами с требуемыми законами распределения и заданными корреляционными связями между входными и выходными данными.
Динамическая — характерна для систем реального времени и определяется согласованием во времени порядка поступления входных данных и порядка выдачи результатов выполнения программы.
В общем случае функциональные спецификации программы определяют и функциональ-ные требования к программе, и характеристики, с которыми они должны обеспечиваться, как это показано на рис.12.
3.Корректность данных имеет конструктивную и функциональную составляющие.
Структурная корректность данных относится к конструктивной составляющей и предполагает правильность построения структурированных данных в программе: массивов, стеков, очередей и т.п. Функциональная корректность данных определяется диапазонами изменения их значений и соответствием типов полей структур типам значений данных.
4. Корректность комплексов программ также имеет конструктивную и функциональную составляющие: конструктивная составляющая определяется корректностью структуры межмодульных связей по управлению и данным, определяемых в интерфейсных требованиях к программе; функциональной корректность комплекса программ определяется так же, как и функциональная корректность модулей.
Структура программы на Fortran
II. Эталоны и методы проверки корректности.
Эталоны для проверки корректности программ могут использоваться в следующих трех формах, поясняемых с помощью рис.13:
1. Формализованные правила.
2. Программные спецификации.
Формализованные правила — имеют достаточно неопределенностей, так как опреде-ляются двумя видами требований:
* требования стандартов (общероссийских и стандартов предприятий);
* требования языков и технологий программирования.
Для полной убедительности в корректности программ одних формализованных правил недостаточно.
2. Программные спецификации — относятся к функциональным эталонам и в основ-ном обеспечивают проверку корректности программ в статике.
В зависимости от стадии и характера проверки разделяются тесты делятся на статические и динамические. Статическое тестирование — ручное тестирование программ, начиная со стадии формирования требований к программе. На стадии кодирования при статическом тестировании некоторую часть маршрутов исполнения тестируют вручную. Динамическое тестирование подразумевает достаточно полную структурную и функциональную проверку выполнения программы.
Как формируются эталоны для тестирования? Существует несколько способов формирования эталонов:
1) Использование аналитических выражений. Этот способ особенно подходит при детерминированном тестировании, так как имеется возможность сравнить результаты тестирования с ожидаемыми результатами. Имеются ограничения в использовании этого метода, если неизвестны или отсутствуют аналитические выражения связывающие входные данные и результаты; иногда требуется использовать много допущений.
2) Использование моделирования на ЭВМ. Способ является универсальным. При этом ряд данных моделируется другим способом и по другим алгоритмам, нежели испытываемая программа и на других ЭВМ. Причем наборы входных данных создаются по случайным законам, что обеспечивает высокую гибкость этого способа.
3) Использование результатов испытаний предшествующих вариантов программ.
При этом используется ранее накопленный опыт испытателя или других исследователей, выраженный в экспертных оценках ожидаемых результатов.
Степень достоверности проверки корректности программ при использовании этих методов убывает по номерам способов формирования эталонов.
В 1-ом случае обеспечивается 100% гарантия корректности программ, в третьем случае такой уверенности нет, но мы можем убедиться в том, что программа работает так же или иначе, чем аналогичный вариант. Менее достоверные тесты приходится использовать из-за недостаточности сил и средств.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Тесты / rtfs / B-3-1-Классификация программного обеспечения-Операционные системы
Наиболее точным определением понятия «пользовательский интерфейс» является .
1) разнообразные средства взаимодействия человека с аппаратным и программным обеспечением компьютера
2) программы, созданные для работы под управлением конкретной операционной системы
3) программы для автоматизации работ по проверке, наладке и настройке компьютерной системы
4) средства для обмена данными между разными приложениями Windows
5) программы, отвечающие за проверку работоспособности компьютера
Укажите наиболее точное определение. Приложения – это …
1) прикладные программы, созданные для работы под управлением конкретной операционной системы
2) программы для автоматизации работ по проверке, наладке и настройке компьютерной системы
3) средства для обмена данными между разными приложениями Windows
4) программы для ознакомления пользователя с принципами устройства компьютера
5) техническая документация компьютера
В основные функции операционной системы НЕ ВХОДИТ …
1) разработка программ для ЭВМ
2) обеспечение диалога с пользователем
3) управление ресурсами компьютера
4) организация файловой структуры
5) обслуживание файловой структуры
1) программы для согласования работы внешних устройств и компьютера
2) технические устройства
3) системы автоматизированного проектирования
4) программы для ознакомления пользователя с принципами устройства компьютера
5) комплекс программ, обеспечивающий перевод программы, написанной на языке программирования в машинные коды
Источник: studfile.net
35 вопросов о программировании, на которые вы должны знать ответ
Сайт proglib.io подготовил список вопросов о программировании, которые вам могут задать на собеседовании. Они не относятся к конкретному языку программирования, а раскрывают общий уровень.
1. Что такое программирование?
Программирование – это процесс создания компьютерной программы, включающий в себя проектирование программы, использование алгоритмов, написание кода программы и так далее.
2. Как работает программный код?
Код программы содержит инструкции, которые являются исполняемыми командами, выполняемыми машиной после преобразования кода компилятором.
3. Что такое отладка?
Отладка – это процесс поиска и устранения ошибок в программе.
4. Назовите типы ошибок, которые могут возникнуть в программе
- Синтаксические ошибки.
- Runtime errors или ошибки времени выполнения.
- Логические ошибки.
5. Расскажите о синтаксических ошибках
Синтаксическая ошибка возникает, когда в коде программы допущена опечатка или есть несоответствие правилам используемого языка в языковой конструкции, имени переменной, функции и так далее. Ошибка определяется на этапе компиляции программы.
6. Расскажите об ошибке времени выполнения
Runtime error возникает в случае, когда программа пытается совершить нелегитимное действие, например, поделить на ноль. Ошибка времени выполнения может появиться на любом этапе работы программы, когда совершается неправильное действие. В случае возникновения этой ошибки машина останавливает выполнение программы и может показать диагностическое сообщение, объясняющее суть ошибки.
7. Расскажите о логических ошибках
Логическую ошибку труднее всего определить, так как она может не проявляться при компиляции и во время выполнения программы, но при этом приводит к ее неправильному выполнению. Логическая ошибка может возникнуть как из-за неправильного применения алгоритма, так и из-за простого чтения/записи неправильной переменной.
8. Что такое блок-схема?
Блок-схема – это графическое представление программы. Блок-схема помогает понять логику работы программы или ее части при проектировании.
9. Что такое алгоритм?
Алгоритм – это конечный набор шагов, которые при следовании им решают какую-то задачу.
10. Что по вашему значит «Поддерживать и обновлять программу»?
Поддержка программы – это процесс регулярного обновления программы для удовлетворения новых требований к оборудованию или программному обеспечению. Это процесс улучшения и обновления программы после ее установки.
11. Что такое переменные?
Переменные – это именованные ячейки памяти, которые используются для хранения данных программы, результатов ее вычислений. Значение переменной может меняться в ходе выполнения программы.
12. Что такое зарезервированные слова в программировании?
Зарезервированные или ключевые слова – это слова и выражения, которые имеют предопределенные значения и не могут использоваться при написании кода для иных целей, например, для именования переменных. Примеры распространенных ключевых слов в языках программирования – это конструкции if/then/else или различные варианты циклов. Вроде for и while.
13. Что такое цикл?
Цикл – это языковая конструкция, которая может определять участок программы для многократного повторения и количество этих повторений.
14. Назовите разные виды циклов
В различных языках эти конструкции описываются по-разному, но в большинстве языков можно найти конструкции вида for, while, do … while. Цикл содержит условие окончания, и по времени проверки этого условия циклы могут быть с предусловием и постусловием.
15. Чем отличаются for и while?
For использует счетчик и полезен при выполнении заранее определенного количества итераций.
While будет выполнять действие до тех пор, пока заданное условие не станет ложным. Это полезно при необходимости использования цикла с неопределенным числом итераций.
16. Что такое вложенный цикл?
Цикл, который выполняется в теле другого цикла, является вложенным.
17. Что такое документация?
Документация – это подробное описание алгоритмов и частей программы, процесса проектирования, тестирования и паттернов правильного использования. Документация может предназначаться как для пользователя программы, так и для разработчика.
18. Что делает компилятор?
Компилятор «читает» код, написанный на определенном языке программирования, и преобразует описанные команды и конструкции языка в исполняемый машинный код.
19. Что такое двоичный код?
Двоичный код – это бинарная форма представления кода определенного языка программирования.
20. Что такое константа?
Константа – постоянная, именованное значение, которое не может быть изменено. Константы могут быть числовыми и строковыми.
Числовые константы могут содержать целые, числа с одинарной и двойной точностью.
Строковые константы могут содержать последовательность букв и чисел, заключенных в кавычки.
21. Что такое операторы?
Операторы – это специальные символы, которые используются в коде программы для выполнения определенных операций над данными. Операторы могут быть арифметическими, логическими, реляционными и присваивающими.
22. Что такое массив?
Массив – это набор смежных областей памяти, которые хранят данные определенного типа.
23. Что такое подпрограмма?
Подпрограмма представляет собой автономный набор инструкций, которые могут использоваться из любой точки программы. Подпрограмма выполняет свою конкретную задачу, а затем возвращает управление основной программе, которая вызвала подпрограмму.
24. Когда применяют арифметические операторы?
Арифметические операторы применяются для выполнения арифметических операций над значениями.
25. Реляционные операторы
Реляционные операторы используются в программировании для сравнения значений. Результатом оценки с использованием реляционных операторов будет true или false.
26. Для чего нужны логические операторы?
Логические операторы объединяют простые условия для построения более сложных (под условием мы имеем в виду выражение, оценивающее истинность).
27. Зачем нужны операторы присваивания?
Оператор присваивания используется для сохранения значений в переменной.
28. Что значит «низкоуровневый язык программирования»?
Низкоуровневый язык программирования – язык, близкий к тому, что используется при программировании непосредственно в машинных кодах реального или виртуального процессора.
29. Высокоуровневый язык программирования
Отличие высокоуровневых языков от низкоуровневых – наличие абстракций, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде очень длинны и сложны для понимания.
30. Что такое машинный код?
Машинный код – это язык программирования, который может обрабатываться напрямую процессором, без необходимости предварительной компиляции.
31. Объясните термин «надежность ПО»
Надежность – это гарантированная правильная работа программы в течение определенного времени.
32. Что такое тестирование ПО?
Тестирование ПО – это процесс проверки программного обеспечения на соответствие требуемому качеству работы, а также проверка пользовательского опыта, который дает программа.
33. Что такое бета-версия?
Бета-версия программы – это версия, которая может быть доработана и изменена после получения обратной связи от пользователей. Бета-версия – рабочая версия программы, не готовая к финальному запуску.
34. Что значит «анализировать программу»?
Анализ программы – это процесс решения проблемы программы путем разбиения большой проблемы на подзадачи. Каждая подзадача или «под-проблема» будет решаться отдельно, что в конечном итоге приведет к более простому решению глобальной проблемы.
35. Как работает алгоритм?
Каждый алгоритм в программировании реализует по крайней мере три шага:
- Получение данных.
- Выполнение вычислений.
- Вывод результата.
Источник: techrocks.ru