Лекция 4 Тема 3 Технология программирования и основные этапы ее развития

Вид материалаЛекция

Содержание


Первый этап – «стихийное» программирование. (
Недостаток такой архитектуры
Второй этап – структурный подход к программированию (60 – 70-е годы ХХ в.)
Модульное программирование
Объектно-ориентированное программирование
Компонентный подход
Подобный материал:
ЛЕКЦИЯ 4

Тема 1.3 Технология программирования и основные этапы ее развития


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

Кроме набора операций и их последовательности, технология определяет способ описания проектируемой системы (модели), используемой на конкретном этапе разработки.

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


^ Первый этап – «стихийное» программирование. (С момента появления первых вычислительных машин до середины 60-х годов ХХ в.) Практически отсутствовали сформулированные технологии, программирование практически было искусством. Первые программы имели простейшую структуру, состояли из собственно программы на машинном языке и обрабатываемых ею данных. Сложность программ в машинных кодах ограничивалась способностью программиста одновременно мысленно отслеживать последовательность выполняемых операций и местонахождение данных при программировании.

С появление ассемблеров стали использовать символические имена данных и мнемонику кодов операций.

Создание языков программирования высокого уровня (Фортран, Алгол) упростило программирование вычислений, увеличило сложность программ.

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

Типичная программа того времени состояла из основной программы, области глобальных данных и набора подпрограмм.

^ Недостаток такой архитектуры: при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой.

Чтобы сократить количество ошибок предложено использовать локальные данные в подпрограммах.

Появление средств поддержки подпрограмм позволило разрабатывать программное обеспечение нескольким программистам параллельно.

В начале 60-х годов ХХ в. – «кризис программирования». Разрабатываемый проект устаревал раньше, чем был готов к внедрению, увеличивалась его стоимость. Многие проекты оставались незавершенными. Все это было вызвано несовершенством технологии программирования. В отсутствии четких моделей описания подпрограмм и методов их проектирования интерфейсы получались сложными, при сборке программного продукта большое количество ошибок согласования. Процесс тестирования занимал более 80% времени разработки. Встает вопрос разработки технологии создания сложных программных продуктов, снижающий вероятность ошибок проектирования.

^ Второй этап – структурный подход к программированию (60 – 70-е годы ХХ в.)

Структурный подход к программированию – совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В основе подхода – декомпозиция сложных систем с целью последующей реализации в виде отдельных небольших (до 40 – 50 операторов) подпрограмм. Этот способ процедурной декомпозиции.

Структурный подход – представление задачи в виде иерархии подзадач простейшей структуры. Проектирование «сверху-вниз». Вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, специальный метод проектирования алгоритмов – метод пошаговой детализации.

Поддержка принципы структурного программирования заложена в основу процедурных языков программирования (PL-1, ALGOL-68, Pascal, C).

Развитие структурирования данных. В языках появилась возможность определения пользовательских типов данных. Начала развиваться технология модульного программирования.

^ Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули. Эту технологию поддерживают современные версии языков Pascal и C (C++), языки Ада и Modula.

Структурный подход в сочетании с модульным программированием позволяет получать достаточно надежные программы, размер которых не превышает 100000 операторов. При увеличении размера программы возрастает сложность межмодульных интерфейсов. Для разработки программного обеспечения большого объема предложено использовать объектный подход.

Третий этап – объектный подход к программированию (с середины 80-х до конца 90-х годов ХХ в.).

^ Объектно-ориентированное программирование – технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений.

Поддерживается в языках программирования Pascal, C++, Modula, Java.Объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. Создаются среды, поддерживающие визуальное программирование (Delphi, Visual C++).

Четвертый этап – компонентный подход и CASE-технологии (с середины 90-х годов ХХ в. до нашего времени).

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

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

Отличительная особенность современного этапа развития технологии программирования – создание и внедрение автоматизированных технологий разработки и сопровождения программного обеспечения, которые названы CASE- технологиями. Существуют CASE-технологии, поддерживающие структурный и объектный (в том числе компонентный) подходы к программированию.