СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Определение и этапы развития науки технологии разработки ПО

Категория: Прочее

Нажмите, чтобы узнать подробности

В данной разработке рассматриваются основные определения и этапы развития технологии разработки программных продуктов. Материал полезен для подготовки и проведения занятий по дисциплине МДК.02.01. Технология разработки программного обеспечения для сециальности 09.02.07 "Информационные системы и программирование"

Просмотр содержимого документа
«Определение и этапы развития науки технологии разработки ПО»

Занятие №1 Определение и этапы развития науки технологии разработки ПО

Занятие №1

Определение и этапы развития науки технологии разработки ПО

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

Технология разработки ПО – это совокупность методов и средств, используемых в процессе разработки ПО.

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

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

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

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

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

Этапы развития науки технологии

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

 Революционным шагом стало появление подпрограмм. Они позволили усложнить программные системы. Программы стали состоять из основной программы и подпрограмм.

Революционным шагом стало появление подпрограмм. Они позволили усложнить программные системы. Программы стали состоять из основной программы и подпрограмм.

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

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

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

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

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

 Сложность разрабатываемого ПО с использованием подпрограмм с локальными данными ограничивалась способностью программиста отслеживать процессы обработки данных.

Сложность разрабатываемого ПО с использованием подпрограмм с локальными данными ограничивалась способностью программиста отслеживать процессы обработки данных.

 Появились средства поддержки разработки программ несколькими специалистами.  60-е годы характеризуются кризисом программирования. Многие фирмы срывали сроки разработки. Это было вызвано несовершенством технологии разработки ПО. Анализ причин возникновения большинства ошибок позволил сформулировать новый подход к программированию: структурное программирование. 2 этап. Структурный подход : 60-70-е годы 20 в.  Структурный подход к программированию – совокупность технологических приемов и методов, охватывающих выполнение всех этапов разработки ПО. В основе структурного подхода лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 40 - 50 операторов) подпрограмм (модулей).   Поддержка принципов структурного программирования была заложена в языках высокого уровня, таких как Pascal, PL/1, Алгол.

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

60-е годы характеризуются кризисом программирования. Многие фирмы срывали сроки разработки. Это было вызвано несовершенством технологии разработки ПО. Анализ причин возникновения большинства ошибок позволил сформулировать новый подход к программированию: структурное программирование.

2 этап. Структурный подход : 60-70-е годы 20 в.

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

Поддержка принципов структурного программирования была заложена в языках высокого уровня, таких как Pascal, PL/1, Алгол.

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

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

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

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

 Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки подпрограмм). Например, модуль графических ресурсов Crt, Graph. Связи между модулями в этой технологии осуществляются через специальный интерфейс. Эту технологию поддерживают языки Pascal, Си++, Ада, Модула. ПО могут разрабатывать несколько программистов. Каждый программист разрабатывает свои модули независимо, обеспечивая взаимодействие модулей через специально оговоренные межмодульные интерфейсы. Кроме того, модули в дальнейшем без изменений можно было использовать в других разработках, что повысило производительность труда программистов.

Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки подпрограмм). Например, модуль графических ресурсов Crt, Graph. Связи между модулями в этой технологии осуществляются через специальный интерфейс. Эту технологию поддерживают языки Pascal, Си++, Ада, Модула. ПО могут разрабатывать несколько программистов. Каждый программист разрабатывает свои модули независимо, обеспечивая взаимодействие модулей через специально оговоренные межмодульные интерфейсы. Кроме того, модули в дальнейшем без изменений можно было использовать в других разработках, что повысило производительность труда программистов.

 Практика показала, что структурный подход в сочетании с модульным программированием позволяет получить достаточно надежные программы, размер которых не превышает 100 тыс. операторов.  Недостатком модульного программирования является ошибка в интерфейсе: при вызове подпрограмм выявляется только при выполнении программы. При раздельной компиляции выявить ошибку нельзя. При увеличении размера подпрограмм возрастает сложность межмодульных интерфейсов. И с некоторого момента невозможно предусмотреть все возможные взаимодействия отдельных частей. Для разработки ПО большого объема используется объектный подход . 3 этап. Объектный подход к программированию : сер. 80-к. 90-х г. 20 в.

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

Недостатком модульного программирования является ошибка в интерфейсе: при вызове подпрограмм выявляется только при выполнении программы. При раздельной компиляции выявить ошибку нельзя. При увеличении размера подпрограмм возрастает сложность межмодульных интерфейсов. И с некоторого момента невозможно предусмотреть все возможные взаимодействия отдельных частей. Для разработки ПО большого объема используется объектный подход .

3 этап. Объектный подход к программированию : сер. 80-к. 90-х г. 20 в.

 Объектно-ориентированный подход определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных  объектов в такой системе осуществляется путем передачи сообщений.  Впервые такая структура была использована в языке имитационного модулирования Simula, Smaltalk, позже в новых версиях языков Pascal, Java, Си++, Модула.  Основным достоинством ООП по сравнению с модульным программированием является естественная декомпозиция ПО, которая облегчает его разработку.

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

объектов в такой системе осуществляется путем передачи сообщений.

Впервые такая структура была использована в языке имитационного модулирования Simula, Smaltalk, позже в новых версиях языков Pascal, Java, Си++, Модула.

Основным достоинством ООП по сравнению с модульным программированием является естественная декомпозиция ПО, которая облегчает его разработку.

 Это приводит к полной локализации данных и интегрированию их с подпрограммами обработки. Объектный подход предлагает новые способы организации программ, основанных на механизмах наследования полиморфизма, композиции, наполнения. Дальнейшее развитие технологий программирования, основанных на объектном подходе - создание визуальных сред программирования ( Delphi , C++ Builder , Visual Cu ++). При использовании визуальной среды появилась возможность проектировать интерфейсы будущего продукта с применением визуальных средств и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.

Это приводит к полной локализации данных и интегрированию их с подпрограммами обработки. Объектный подход предлагает новые способы организации программ, основанных на механизмах наследования полиморфизма, композиции, наполнения. Дальнейшее развитие технологий программирования, основанных на объектном подходе - создание визуальных сред программирования ( Delphi , C++ Builder , Visual Cu ++). При использовании визуальной среды появилась возможность проектировать интерфейсы будущего продукта с применением визуальных средств и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.

 Использование объектного подхода имеет много преимуществ, однако его конкретная реализация в объектно-ориентированных языках программирования, таких, как Pascal и C++, имеет недостатки : Отсутствуют стандарты компоновки двоичных результатов в единое целое. Изменение реализации одного из программных объектов связано с перекомпиляцией соответствующего модуля и перекомпоновкой всего ПО. Т. о. при использовании этих ЯП сохраняется зависимость модулей ПО от адресов полей и методов структур форматов данных. 4 этап. Компонентный подход и CASE-технологии (сер. 90-х г. 20 в. до настоящего времени).

Использование объектного подхода имеет много преимуществ, однако его конкретная реализация в объектно-ориентированных языках программирования, таких, как Pascal и C++, имеет недостатки :

  • Отсутствуют стандарты компоновки двоичных результатов в единое целое.
  • Изменение реализации одного из программных объектов связано с перекомпиляцией соответствующего модуля и перекомпоновкой всего ПО. Т. о. при использовании этих ЯП сохраняется зависимость модулей ПО от адресов полей и методов структур форматов данных.

4 этап. Компонентный подход и CASE-технологии (сер. 90-х г. 20 в. до настоящего времени).

 Компонентный подход предполагает построение программного обеспечения из отдельных компонентов (частей) программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы.  В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию.  Компонентный подход лежит в основе технологий, разработанных на базе СОМ (компонентная модель объекта) и технология создания распределенных приложений C O RBA ( Common Object Request Broker Architecture - общая архитектура с посредником обработки запросов объекта).

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

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

Компонентный подход лежит в основе технологий, разработанных на базе СОМ (компонентная модель объекта) и технология создания распределенных приложений C O RBA ( Common Object Request Broker Architecture - общая архитектура с посредником обработки запросов объекта).

 Эти технологии используют сходные принципы и различаются особенностями их реализации.

Эти технологии используют сходные принципы и различаются особенностями их реализации.

 Отличительной особенностью современного этапа развития технологии разработки ПО является создание и внедрение автоматизированных технологий разработки и сопровождения программного обеспечения, которые были названы CASE-  технологиями (Computer-Aided Software/System Engineering - разработка программного обеспечения/программных систем с использованием компьютерной поддержки). Без средств  автоматизации разработка сложного программного обеспечения становится трудно осуществимой: память человека уже не в состоянии фиксировать все детали, которые необходимо учитывать при разработке программного обеспечения.  На сегодня существуют CASE-технологии, поддерживающие как структурный, так и объектный (в том числе и компонентный) подходы разработки.  Появление нового подхода не означает, что все программное обеспечение будет создаваться из программных компонентов, но анализ существующих проблем разработки сложного программного обеспечения показывает, что он будет применяться достаточно широко.

Отличительной особенностью современного этапа развития технологии разработки ПО является создание и внедрение автоматизированных технологий разработки и сопровождения программного обеспечения, которые были названы CASE-

технологиями (Computer-Aided Software/System Engineering - разработка программного обеспечения/программных систем с использованием компьютерной поддержки). Без средств

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

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

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