ВУЗ: Пермский национальный исследовательский политехнический университет
Категория: Учебное пособие
Дисциплина: Информатика
Добавлен: 25.10.2018
Просмотров: 10326
Скачиваний: 105
106
12. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. СТРУКТУРНОЕ
И ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
12.1. Жизненный цикл программного обеспечения
Программный продукт (software product) – совокупность
компьютерных программ, процедур и, возможно, связанных с
ними документации и данных.
Классификация программного обеспечения ПО:
1) по способу исполнения программы делят:
– на интерпретируемые;
– компилируемые.
2) по степени переносимости программы делят:
– на платформозависимые;
– кроссплатформенные;
3) по способу распространения и использования программы
делят:
– на несвободные (закрытые) (proprietary software) – про-
граммное обеспечение, являющееся частной собственностью
авторов или правообладателей и не удовлетворяющее критериям
свободного ПО. Правообладатель проприетарного ПО сохраняет
за собой монополию на его использование, копирование и мо-
дификацию, полностью или в существенных моментах;
– открытые (open-source software) – программное обеспече-
ние с открытым исходным кодом. Исходный код таких про-
грамм доступен для просмотра, изучения и изменения, что по-
зволяет пользователю принять участие в доработке самой от-
крытой программы, использовать код для создания новых про-
грамм и исправления в них ошибок;
– свободные (free software) – программное обеспечение,
пользователи которого имеют права («свободы») на его неогра-
ниченную установку, запуск, а также свободное использование,
изучение, распространение и изменение (совершенствование)
и распространение копий и результатов изменения.
107
Жизненный цикл программного обеспечения – период вре-
мени, который начинается с момента принятия решения
о необходимости создания программного продукта и заканчива-
ется в момент его полного изъятия из эксплуатации. Это процесс
построения и развития ПО.
Структура жизненного цикла ПО согласно стандарту
ISO/IEC 12207 базируется на трех группах процессов:
– основные процессы (приобретение, поставка, разработка,
эксплуатация, сопровождение);
– вспомогательные процессы, обеспечивающие выполнение
основных процессов (документирование, управление конфигу-
рацией, обеспечение качества, верификация, аттестация, оценка,
аудит, решение проблем);
– организационные процессы (управление проектами, соз-
дание инфраструктуры проекта, определение, оценка и улучше-
ние самого жизненного цикла, обучение).
Разработка проекта включает в себя все работы по созда-
нию ПО и его компонентов в соответствии с заданными требо-
ваниями. Этапы жизненного цикла ПО:
– формирование требований;
– проектирование;
– реализация (программирование);
– тестирование;
– внедрение;
– эксплуатация и сопровождение.
Важное место в цикле разработки ПО после этапов про-
граммирования и тестирования занимает отладка – этап разра-
ботки компьютерной программы, на котором обнаруживают,
локализуют и устраняют ошибки. Для того чтобы понять, где
возникла ошибка, приходится:
– узнавать текущие значения переменных;
– выяснять, по какому пути выполнялась программа.
Существуют две взаимодополняющие технологии отладки:
1) использование отладчиков – программ, которые включа-
ют в себя пользовательский интерфейс для пошагового выпол-
нения программы: оператор за оператором, функция за функци-
108
ей, с остановками на некоторых строках исходного кода или при
достижении определённого условия;
2) вывод текущего состояния программы с помощью распо-
ложенных в критических точках программы операторов вывода –
на экран, принтер или в файл. Вывод отладочных сведений в файл
называется журналированием.
Эксплуатация содержит работы по внедрению компонентов
ПО в эксплуатацию, в том числе конфигурирование базы данных
и рабочих мест пользователей.
Сопровождение (поддержка) программного обеспечения –
процесс улучшения, оптимизации и устранения дефектов ПО
после передачи в эксплуатацию. В ходе сопровождения в про-
грамму вносятся изменения, чтобы исправить обнаруженные
в процессе использования дефекты и недоработки, а также для
добавления новой функциональности с целью повысить удобст-
во использования и применимость ПО.
Переносимость программ. Переносимость программы
(портирование) – адаптация некоторой программы или её части
для того, чтобы она работала в другой среде, отличающейся от
той среды, под которую она была изначально написана с макси-
мальным сохранением её пользовательских свойств.
Необходимость в выполнении портирования возникает
обычно из-за различий в системе команд процессора, различий
между способами взаимодействия операционной системы и про-
грамм (API – Application Program Interface), принципиальных
различий в архитектуре вычислительных систем либо по причи-
не некоторых несовместимостей или даже полного отсутствия
используемого языка программирования в целевом окружении.
По мере развития операционных систем, языков и техники
программирования становится всё проще портировать програм-
мы между различными платформами.
Понятие интеллектуальной собственности. Интеллекту-
альная собственность – закреплённое законом временное ис-
ключительное право, а также личные неимущественные права
авторов на результат интеллектуальной деятельности.
109
В России с 1 января 2008 г. вступила в силу 4-я часть Граж-
данского кодекса (в соответствии с Федеральным законом от
18.12.2006 № 231-ФЗ), раздел VII «Права на результаты интел-
лектуальной деятельности и средства индивидуализации», кото-
рый определяет интеллектуальную собственность как список
результатов интеллектуальной деятельности и средств индиви-
дуализации, которым предоставляется правовая охрана. Соглас-
но этому документу интеллектуальной собственностью являют-
ся в том числе и программы для электронных вычислительных
машин (программы для ЭВМ).
Законодательство, которое определяет права на интеллекту-
альную собственность, устанавливает монополию правообладате-
лей на определённые формы использования результатов интеллек-
туальной, творческой деятельности, которые, таким образом, могут
использоваться другими лицами лишь с разрешения первых.
12.2. Структурное программирование
Структурное программирование – методология разработки
программного обеспечения, в основе которой лежит представле-
ние программы в виде иерархической структуры блоков. Пред-
ложена в 1970-х гг. нидерландским ученым Э. Дейкстрой, разра-
ботана и дополнена швейцарским ученым Н. Виртом.
В соответствии с данной методологией любая программа
строится без использования оператора goto из трёх базовых
управляющих структур: последовательность, ветвление, цикл;
кроме того, используются подпрограммы. При этом разработка
программы ведётся пошагово, методом «сверху вниз».
Принципы структурного программирования:
1. Следует отказаться от использования оператора безус-
ловного перехода goto.
2. Любая программа строится из трёх базовых управляю-
щих конструкций: последовательность, ветвление, цикл.
3. В программе базовые управляющие конструкции могут
быть вложены друг в друга произвольным образом. Никаких
110
других средств управления последовательностью выполнения
операций не предусматривается.
4. Повторяющиеся фрагменты программы можно оформить
в виде подпрограмм (процедур и функций). Таким же образом (в
виде подпрограмм) можно оформить логически целостные
фрагменты программы, даже если они не повторяются.
5. Каждую логически законченную группу инструкций сле-
дует оформить как блок (block). Блоки являются основой струк-
турного программирования.
Блок – это логически сгруппированная часть исходного ко-
да, например набор инструкций, записанных подряд в исходном
коде программы. Границы блока строго определены. Например,
в языке Pascal в if-инструкции блок ограничен кодом
begin...end.
6. Все перечисленные конструкции должны иметь один
вход и один выход.
7. Разработка программы ведётся пошагово, методом «свер-
ху вниз».
Суть метода «сверху вниз» заключается в следующем. Сна-
чала пишется текст основной программы, в который вместо ка-
ждого связного логического фрагмента текста вставляется вызов
подпрограммы, которая будет выполнять этот фрагмент. Вместо
настоящих, работающих подпрограмм в программу вставляются
фиктивные части – заглушки, которые, говоря упрощенно, ниче-
го не делают.
После того как программист убедится, что подпрограммы
вызываются в правильной последовательности (т.е. общая
структура программы верна), подпрограммы-заглушки последо-
вательно заменяются на реально работающие. При этом разра-
ботка каждой подпрограммы ведётся тем же методом, что и раз-
работка основной программы. Разработка заканчивается тогда,
когда не останется ни одной заглушки.
Рассмотрим применение принципов структурного програм-
мирования на примере задач математического моделирования.