Лекция 2. Основы программной инженерии. Основные этапы разработки программ, их назначение и характеристики

Содержание

Слайд 2

Лекция 2 Основные этапы разработки программ, их назначение и характеристики

Лекция 2

Основные этапы разработки программ, их назначение и характеристики

Слайд 3

Основные этапы разработки программ

Основные этапы разработки программ

Слайд 4

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

Постановка задачи

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

внешней спецификации
Слайд 5

К чему может привести непонимание между заказчиком и разработчиком ПО Заказчик

К чему может привести непонимание между заказчиком и разработчиком ПО

Заказчик не

может толком сформулировать требования, завышает их
Ответное предложение поставщика (разработчика) не вполне соответствует заявке заказчика
Аналитик предлагает ошибочную эскизную архитектуру
Программисты создают код с ошибками
Имеют место проблемы внедрения
Слайд 6

Внешняя спецификация программы Внешняя спецификация - достаточно полная и точная формулировка

Внешняя спецификация программы

Внешняя спецификация - достаточно полная и точная формулировка решаемой задачи
Формальная

спецификация программы: {Q}S{R},
где Q – предусловие программы S,
R – постусловие программы S
Если выполнение программы S началось в состоянии, удовлетворяющем Q, то имеется гарантия, что оно завершится через конечное время в состоянии, удовлетворяющем R
Слайд 7

Состав внешней спецификации Описание исходных данных. Должны быть точно описаны синтаксис

Состав внешней спецификации

Описание исходных данных. Должны быть точно описаны синтаксис (формат)

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

Разработка алгоритма Алгоритм – это полное и точное описание на некотором

Разработка алгоритма

Алгоритм – это полное и точное описание на некотором языке

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

Свойства алгоритмов Дискретность – возможность разбиения на шаги Понятность – ориентация

Свойства алгоритмов

Дискретность – возможность разбиения на шаги
Понятность – ориентация на конкретного

исполнителя
Определенность – однозначность толкования инструкций
Конечность – возможность получения результата за конечное число шагов
Массовость – применимость к некоторому классу объектов
Эффективность – оптимальность времени и ресурсов, необходимых для реализации алгоритма
Слайд 10

Процесс алгоритмизации разложение всего вычислительного процесса на отдельные шаги – возможные

Процесс алгоритмизации

разложение всего вычислительного процесса на отдельные шаги – возможные составные

части алгоритма, что определяется внутренней логикой самого процесса и системой команд исполнителя;
установление взаимосвязей между отдельными шагами алгоритма и порядка их следования, приводящего от известных исходных данных к искомому результату;
полное и точное описание содержания каждого шага алгоритма на языке выбранной алгоритмической системы;
проверка составленного алгоритма на предмет, действительно ли он реализует выбранный метод и приводит к искомому результату
Слайд 11

Способы описания алгоритмов словесно-формульный (на естественном языке, вербальный); структурный или блок-схемный

Способы описания алгоритмов

словесно-формульный (на естественном языке, вербальный);
структурный или блок-схемный (графический);
с

использованием специальных алгоритмических языков (нотаций);
с помощью сетей Петри;
программный
Слайд 12

Словесно-формульный способ Пусть необходимо найти значение выражения: у=2а-(х+6) Словесно-формульным способом алгоритм

Словесно-формульный способ

Пусть необходимо найти значение выражения:
у=2а-(х+6)
Словесно-формульным способом алгоритм решения

этой задачи может быть записан в следующем виде:
1.    Ввести значения а и х
2.    Сложить х и 6
3.    Умножить а на 2
4.    Вычесть из 2а сумму (х+6)
5.    Вывести у как результат вычисления выражения

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

Слайд 13

Стандарты графических изображений блоков а = 10, 15, 20 мм; b = 1,5а

Стандарты графических изображений блоков

а = 10, 15, 20 мм; b = 1,5а

Слайд 14

Применение блок-схем

Применение блок-схем

Слайд 15

Пример псевдокода для функции печати массива Вход: a – массив целых

Пример псевдокода для функции печати массива

Вход: a – массив целых чисел,


n – количество элементов в массиве
Выход: -
пока не конец массива делать
печатать очередной элемент массива
все пока
Слайд 16

Технология разработки алгоритмов Качества хорошего алгоритма: правильно решает поставленную задачу легок

Технология разработки алгоритмов

Качества хорошего алгоритма:
правильно решает поставленную задачу
легок для понимания
прост для

доказательства правильности
удобен для модификации
Конструирование и оформление алгоритмов осуществляется в рамках структурного подхода, в основе которого лежит теорема о структурировании: алгоритм решения любой практически вычислимой задачи может быть представлен с использованием трех элементарных базисных управляющих структур:
а) следования;
б) ветвления;
в) цикла с предусловием
Слайд 17

Базисные управляющие структуры где P – условие, S – оператор а)

Базисные управляющие структуры

где P – условие, S – оператор
а) следование; б) 

ветвление; в)  цикл с предусловием

Базисный набор управляющих структур является функционально полным

Слайд 18

Дополнительные управляющие структуры а) структура сокращенного ветвления; б) структура выбора; в)

Дополнительные управляющие структуры

а) структура сокращенного ветвления;
б)  структура выбора;

в) структура цикла с параметром;


г) структура цикла с постусловием

Любой алгоритм может быть построен посредством композиции базисных и дополнительных структур:
их последовательным соединением, т.е. образованием последовательных конструкций;
их вложением друг в друга, т.е. образованием вложенных конструкций

Слайд 19

Написание программы на языке программирования Программа – логически упорядоченная последовательность команд,

Написание программы на языке программирования

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

решения определенной задачи
Текст программы – полное законченное и детальное описание алгоритма на языке программирования

Программа – алгоритм, записанный на языке  программирования

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

Слайд 20

Порядок прохождения задач через ЭВМ

Порядок прохождения задач через ЭВМ

Слайд 21

Трансляция программы Компиляция - преобразование объектов (данных и операций над ними)

Трансляция программы

Компиляция - преобразование объектов (данных и операций над ними) с

входного языка в объекты на другом языке для всей программы в целом с последующим выполнением полученной программы в виде отдельного шага
Интерпретация - анализ отдельного объекта на входном языке с одновременным выполнением (интерпретацией)

Трансляция — это преобразование программы с одного языка программирования в семантически эквивалентный текст на другом языке

Слайд 22

Компиляция программы Компилятор – это программа, предназначенная для трансляции исходного текста

Компиляция программы

Компилятор – это программа, предназначенная для трансляции исходного текста программы с

высокоуровневого языка в объектный код. Входной информацией для компилятора является описание алгоритма или программа на языке программирования

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

Слайд 23

Компоновка программы Компоновка - это процесс сборки программы из объектных модулей,

Компоновка программы

Компоновка - это процесс сборки программы из объектных модулей, в

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

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

Компоновщик – модуль системы программирования или самостоятельная программа, которая собирает результирующую программу из объектных модулей и стандартных библиотечных модулей

Слайд 24

Выполнение программы Исполняемый файл — это файл, содержащий программу в том

Выполнение программы

Исполняемый файл — это файл, содержащий программу в том виде,

в котором она может быть исполнена компьютером
Формат исполняемого файла — это соглашение о размещении в нём машинных команд и вспомогательной информации

В операционной системе Windows основным является формат
исполняемых файлов PE (от англ. portable executable — переносимый
исполняемый). Файлы этого формата обычно имеют расширение
«.exe» или «.dll». При этом непосредственно выполнить можно только
файлы с расширением «.exe»

Слайд 25

Тестирование программы Тестирование – это процесс исполнения программы с целью обнаружения

Тестирование программы

Тестирование – это процесс исполнения программы с целью обнаружения

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

Отладка программы Отладка — этап разработки компьютерной программы, в ходе выполнения

Отладка программы

Отладка — этап разработки компьютерной программы, в ходе выполнения которого обнаруживают,

локализуют и устраняют ошибки

Ошибка – это расхождение между вычисленным,
наблюдаемым и истинным, заданным или теоретически
правильным значением

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

Слайд 27

Примеры синтаксических ошибок пропуск необходимого знака пунктуации; несогласованность скобок или пропуск

Примеры синтаксических ошибок

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

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

Синтаксические ошибки обнаруживаются
компилятором

Слайд 28

Примеры семантических ошибок некорректное использование переменных (до инициализации, использование индексов, выходящих

Примеры семантических ошибок

некорректное использование переменных (до инициализации, использование индексов, выходящих за

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

Семантические ошибки также обнаруживаются
компилятором

Слайд 29

Примеры логических ошибок ошибки алгоритма; ошибки накопления погрешностей результатов вычисления (некорректное

Примеры логических ошибок

ошибки алгоритма;
ошибки накопления погрешностей результатов вычисления (некорректное отбрасывание дробных

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

Логические ошибки обнаруживаются
программистом

Слайд 30

Последовательность обнаружения ошибок ошибки трансляции (компиляции): ошибки соответствия синтаксису языка ошибки

Последовательность обнаружения ошибок

ошибки трансляции (компиляции):
ошибки соответствия синтаксису языка
ошибки компоновки (ошибки связи);
ошибки

данных;
ошибки выполнения
ошибки логики
Слайд 31

Методы отладки Отладка за столом: просмотр; проверка; прокрутка; Программный способ отладки

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

Отладка за столом:
просмотр;
проверка;
прокрутка;
Программный способ отладки (так называемая отладочная печать):
эхо–печать входных

данных;
печать в ветвях программы;
печать в узлах программы;
Аппаратный способ (встроенные интегрированные средства отладки):
выполнение по шагам
просмотр переменных в окне наблюдения;
локализация места ошибки при выполнении программы до курсора
Слайд 32

Трудоемкость этапов

Трудоемкость этапов