- •О. В. Шишов технология разработки программных продуктов
- •1. Программы и программирование
- •1.1 Основные определения
- •1.2. Классификация программ и различные виды программирования
- •1.3. Категории специалистов, занятых разработкой и эксплуатацией программ
- •2. Жизненный цикл программного обеспечения
- •2.1 Основные этапы жизненного цикла и их взаимосвязь
- •2.2 Стратегии и модели жизненного цикла
- •3. Качество по
- •3.1 Критерии оценки качества по
- •3.2 Методы оценки качества программного средства
- •4. Надежность программных продуктов
- •4.1 Надежность и виды отказов
- •4.2 Надежность и правильность программы
- •4.3. Вероятностный подход к оценке надежности
- •4.4 Факторы надежности
- •4.5 Приемы надежного программирования
- •6.2. Стандарты технологии создания программных продуктов
- •6.3. Основные этапы технологического процесса разработки программ
- •7. Структурное проектирование программных продуктов
- •7.1. Модули. Сцепление и связность модулей
- •7.2. Структура программных продуктов
- •7.3. Методы структурного программирования
- •8. Алгоритмическое представление задачи программирования
- •8.1. Свойства алгоритмов
- •8.2. Формы записи алгоритмов
- •8.3. Базовые алгоритмические структуры
- •9. Языки программирования
- •9.1. Основные понятия и элементы языков программирования
- •9.2. Классификация языков программирования
- •9.3. Развитие языков программирования
- •10. Пользовательский интерфейс
- •10.1. Типы интерфейсов
- •10.2. Этапы разработки пользовательского интерфейса
- •10.3. Критерии оценки интерфейса пользователем
- •11. Порядок работы эвм при выполнении программ. Трансляторы, интерпритаторы, компиляторы
- •12. Оптимизация программ
- •13. Отладка и тестирование программного обеспечения
- •13.1. Классификация неисправностей и ошибок в программе
- •13.2. Порядок и способы отладки и тестирования программ
- •13.3. Методы тестирования
- •13.4. Требования и рекомендации по тестированию программ
- •13.4. Программирование «с защитой от ошибок»
- •14. Аттестация программного средства
- •15. Сопровождение по
- •16. Защита программных продуктов
- •16.1. Обеспечение защищенности программных средств
- •16.3. Правовые методы защиты программных продуктов
- •17. Документорование программных продуктов
- •17.1. Виды программных документов
- •17.2. Содержание документации по еспд
- •17.3. Стиль оформления программы
- •Содержание
8. Алгоритмическое представление задачи программирования
Человек ежедневно встречается с необходимостью следовать тем или иным правилам, выполнять различные инструкции и указания. Например, переходя через дорогу на перекрестке без светофора надо сначала посмотреть направо. Если машин нет, то перейти полдороги, а если машины есть, ждать, пока они пройдут, затем перейти полдороги. После этого посмотреть налево и, если машин нет, то перейти дорогу до конца, а если машины есть, ждать, пока они пройдут, а затем перейти дорогу до конца.
В математике для решения типовых задач мы используем определенные правила, описывающие последовательности действий. Например, правила сложения дробных чисел, решения квадратных уравнений и т. д. Обычно любые инструкции и правила представляют собой последовательность действий, которые необходимо выполнить в определенном порядке. Для решения задачи надо знать, что дано, что следует получить и какие действия и в каком порядке следует для этого выполнить. Предписание, определяющее порядок выполнения действий над данными с целью получения искомых результатов, и есть алгоритм.
Алгоpитм – заранее заданное понятное и точное пpедписание возможному исполнителю совеpшить определенную последовательность действий для получения решения задачи за конечное число шагов.
Название "алгоритм" произошло от латинской формы имени величайшего среднеазиатского математика Мухаммеда ибн Муса ал-Хорезми (Alhorithmi), жившего в 783–850 гг. В своей книге "Об индийском счете" он изложил правила записи натуральных чисел с помощью арабских цифр и правила действий над ними "столбиком", знакомые теперь каждому школьнику. В XII веке эта книга была переведена на латынь и получила широкое распространение в Европе.
Понятие алгоритма является не только одним из главных понятий математики, но одним из главных понятий современной науки. Более того, с наступлением эры информатики алгоритмы становятся одним из важнейших факторов цивилизации.
Алгоритм выполняется исполнителем. Исполнителем может быть абстрактная или реальная техническая или биологическая система, способная выполнить действия, предписываемые алгоритмом.
Исполнителя характеризуют:
-
среда;
-
элементарные действия;
-
система команд;
-
отказы.
Среда (или обстановка) – это "место обитания" исполнителя. В информатике универсальным исполнителем алгоритмов является компьютер. Компьютер работает в среде операционной системы.
Система команд. Каждый исполнитель может выполнять команды только из некоторого строго заданного списка – системы команд исполнителя. Для каждой команды должны быть заданы условия применимости и описаны результаты выполнения команды.
После вызова команды исполнитель совершает соответствующее элементарное действие.
Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.
Обычно исполнитель ничего не знает о цели алгоритма. Он выполняет все полученные команды, не задавая вопросов "почему" и "зачем".
8.1. Свойства алгоритмов
Алгоритму присущи некоторые основные свойства.
Понятность для исполнителя – исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма.
Дискретность. (прерывность, раздельность) – алгоритм должен представлять процесс вешения задачи как последовательное выполнение простых шагов (этапов). Процесс преобразования исходных данных в результат осуществляется дискретно, так что значения величин в каждый следующий момент времени получаются по определенным правилам из значений величин, имеющихся в предшествующий момент времени.
Определенность (или детерминированность). Каждое правило алгоритма должно быть четким и однозначным, и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический хаpактеp и не тpебует никаких дополнительных указаний или сведений о pешаемой задаче. Значения величин, получаемые в какой–либо (не начальный) момент времени, однозначно определяются значениями величин, полученными в предыдущие моменты времени.
Результативность (или конечность) состоит в том, что за конечное число шагов алгоритм либо должен приводить к вешению задачи, либо после конечного числа шагов останавливаться из-за невозможности получить решение с выдачей соответствующего сообщения, либо неограниченно продолжаться в течение времени, отведенного для исполнения алгоритма, с выдачей промежуточных результатов.
Массовость. Алгоритм решения задачи разрабатывается в общем виде так, чтобы его можно было применять для класса задач, различающихся лишь исходными данными, которые могут выбираться из некоторой области, называемой областью применимости алгоритма.