919.50K
Category: programmingprogramming

Введение_История развития ИСРП

1.

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

2.

Тема: Введение. История развития инструментальных
средств разработки программ
Чтобы
разобраться
в
существующих
технологиях
программирования и определить основные тенденции их развития,
целесообразно рассматривать эти технологии в историческом
контексте, выделяя основные этапы развития программирования как
науки.
Первый этап — «стихийное» программирование.
Этот этап охватывает период от момента появления первых
вычислительных машин -1946 г. до середины 60-х годов XX в.
В этот период практически отсутствовали сформулированные
технологии и
программирование фактически было искусством.
Первые программы имели простейшую структуру.
Основные затраты связаны с кодированием (в машинных кодах).
Появляются автокоды (языки с использованием мнемонических
обозначений команд) и трансляторы, а с них ассемблеры.
Реализуются
возможности
раздельной
компиляции
и
перемещаемости программ. Появляются загрузчики и компоновщики
программ.

3.

Сложность
программ
в
машинных
кодах
ограничивалась способностью программиста одновременно
мысленно, отслеживать последовательность выполняемых
операций и местонахождение данных при программировании.
Появление ассемблеров позволило вместо двоичных
или 16-ричных кодов использовать символические имена
данных и мнемоники кодов операций. В результате программы
стали более «читаемыми».
Создание языков программирования высокого уровня,
таких как FORTRAN и ALGOL(1958 год), существенно
упростило программирование вычислений, снизив уровень
детализации операций. Это, в свою очередь, позволило
увеличить сложность программ.
или их части.

4.

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

5.

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

6.

В отсутствие четких моделей описания подпрограмм и
методов их проектирования создание каждой подпрограммы
превращалось в непростую задачу, интерфейсы подпрограмм
получались сложными, и при сборке программного продукта
выявлялось большое количество ошибок согласования.
Исправление таких ошибок, как правило, требовало серьезного
изменения уже разработанных подпрограмм, что еще более
осложняло ситуацию, так как при этом в программу часто
вносились новые ошибки, которые также необходимо было
исправлять.
Анализ причин возникновения большинства ошибок
позволил сформулировать новый подход к программированию,
который был назван «структурным».

7.

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

8.

Проектирование, таким образом, осуществлялось
«сверху—вниз» и подразумевало реализацию общей идеи,
обеспечивая
проработку
интерфейсов
подпрограмм.
Одновременно вводились ограничения на конструкции
алгоритмов, рекомендовались формальные модели их
описания, а также специальный метод проектирования
алгоритмов — метод пошаговой детализации.
Поддержка принципов структурного программирования
была заложена в основу так называемых процедурных языков
программирования. Среди наиболее известных языков этой
группы стоит назвать PL/1, ALGOL-68, Pascal, С. Одновременно
со структурным программированием появилось огромное
количество языков, базирующихся на других концепциях, но
большинство из них не выдержало конкуренции.
Одновременно усилилось стремление разграничить
доступ к глобальным данным программы, чтобы уменьшить
количество ошибок, возникающих при работе с глобальными
данными. В результате появилась и начала развиваться
технология модульного программирования.

9.

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

10.

При увеличении размера программы обычно возрастает
сложность межмодульных интерфейсов, и с некоторого
момента предусмотреть взаимовлияние отдельных частей
программы становится практически невозможно. Для
разработки программного обеспечения большого объема
было предложено использовать объектный подход.
Третий этап — объектный подход к
программированию (с середины 80-х до конца 90-х годов
XX в.).
Объектно-ориентированное программирование определяется как
технология создания сложного программного обеспечения,
основанная
на
представлении
программы
в
виде
совокупности объектов, каждый из которых является
экземпляром определенного типа {класса), а классы образуют
иерархию с наследованием свойств. Взаимодействие
программных объектов в такой системе осуществляется
путем передачи сообщений.

11.

Бурное
развитие
технологий
программирования,
основанных на объектном подходе, позволило решить многие
проблемы. Так, были созданы среды, поддерживающие
визуальное программирование, например Delphi, C++ Builder,
Visual C++ и т. д.
Объектная
структура
программы
впервые
была
использована в языке имитационного моделирования сложных
систем Simula, появившемся еще в 60-х годах XX в.
Естественный
для
языков
моделирования
способ
представления программы получил развитие в другом
специализированном языке моделирования языке Smalltalk (70е годы XX в.), а затем был использован в новых версиях
универсальных языков программирования, таких как Pascal,
C++, Modula, Java.

12.

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

13.

Четвертый этап — компонентный подход и CASEтехнологии (с середины 90-х годов XX в. до нашего
времени)
Компонентный
подход
предполагает
построение
программного обеспечения из отдельных компонентов
физически отдельно существующих
частей программного
обеспечения, которые взаимодействуют между собой через
стандартизованные двоичные интерфейсы. В отличие от
обычных объектов объекты-компоненты можно собрать в
динамически вызываемые библиотеки или исполняемые
файлы, распространять в двоичном виде (без исходных
текстов) и использовать в любом языке программирования,
поддерживающем соответствующую технологию.
Компонентный подход лежит в основе технологий,
разработанных на базе COM (Component Object Model —
компонентная модель объектов), и технологии создания
распределенных приложений CORBA (Common Object Request
Broker Architecture — общая архитектура с посредником
обработки запросов объектов). Эти технологии используют
сходные принципы и различаются лишь особенностями их
реализации.

14.

Основные понятия и определения
Технология программирования — совокупность методов и
средств, применяемых в процессе разработки программного
обеспечения.
Программа
(program,
routine)

упорядоченная
последовательность команд (инструкций) компьютера для решения
задачи.
Программное обеспечение (software) — совокупность программ
обработки данных и необходимых для их эксплуатации документов.
Задача (problem, task) — проблема, подлежащая решению.
Приложение (application)
компьютере решения1 задачи.

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

15.

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

теоретическая
практическая деятельность, связанная с созданием программ.
и
Сопровождение программы — поддержка работоспособности
программы, переход на ее новые версии, внесения изменений,
исправление ошибок и т. д.
Данные – это представление фактов и идей в формализованном виде,
пригодном для передачи и переработки а некотором процессе.
Информация – это смысл, который передаётся данным при их
представлении.
Обработка
данных

это
выполнение
последовательности действий с данными.
семантической

16.

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

17.

С позиций специфики разработки и вида программного
обеспечения различают два класса задач: технологические и
функциональные.
Технологические задачи ставятся и решаются при
организации
технологического
процесса
обработки
информации на компьютере.
Технологические
задачи
являются
основой
для
разработки сервисных средств ПО в виде утилит, сервисных
программ,
библиотек
процедур,
применяемых
для
обеспечения работоспособности компьютера, разработки
других программ или обработки данных функциональных
задач.
Функциональные
задачи
требуют
решения
при
реализации функций управления в рамках информационных
систем предметных областей, например, управление
деятельностью
торгового
предприятия,
планирование
выпуска продукции, управление перевозкой грузов и т.п.
Функциональные задачи в совокупности образуют
предметную область и полностью определяют ее специфику.

18.

ХАРАКТЕРИСТИКА ПРОГРАММНОГО ПРОДУКТА
Все программы по характеру использования и
категориям пользователей можно разделить на два класса:
- утилитарные программы ("программы для себя"),
предназначенные для выполнения задач их разработчиков.
Чаще всего утилитарные программы выполняют роль
сервиса в технологии обработки данных либо являются
программами решения функциональных задач, не
предназначенных для широкого распространения;
- программные продукты (изделия), предназначенные
для
выполнения
задач
пользователей,
широкого
распространения и продажи.

19.

Кроме продажи существуют и другие способы легального
распространения программных продуктов (ПП), как правило, через
Интернет:
FreeWare

бесплатные
программы,
свободно
распространяемые, без ограничений по сроку работы или по
функциональности, поддерживаются самим пользователем, который
правомочен вносить в них необходимые изменения;
- ShareWare — (некоммерческие) условно-бесплатные
программы, которые могут использоваться, как правило, бесплатно.
При условии регулярного использования подобных продуктов
осуществляется взнос определенной суммы и регистрация. Имеют
различные ограничения — от напоминания о необходимости
зарегистрировать программу до ограничений функциональности;
- DonationWare - разновидность ShareWare, где не указывается
конкретная сумма, которую должен заплатить пользователь в том
случае, если ему понравилась программа.

20.

- PostcardWare - для получения официального права
пользоваться программой пользователь должен отправить автору
почтовую карточку;
- Adware - программа является бесплатной для конечного
пользователя, но показывает рекламу, за что автор получает деньги
от рекламодателей. В последнее время эта схема активно набирает
обороты;
- Trial - программа работает определенное время, за которое
можно оценить степень ее полезности и принять решение о
необходимости покупки;
- Demo - это видеоролики, позволяющие только просмотреть
возможности программы, но не использовать её в полноценной
работе даже в течение ограниченного времени.

21.

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

22.

Объектно-ориентированное программирование
Объе́ктно-ориенти́рованное программи́рование (ООП) —
парадигма программирования, в которой основными концепциями
являются понятия объектов и классов.

23.

Абстракция
Абстрагирование — это способ выделить набор значимых
характеристик объекта, исключая из рассмотрения незначимые.
Соответственно, абстракция — это набор всех таких характеристик.
Инкапсуляция
Инкапсуляция — это свойство системы, позволяющее
объединить данные и методы, работающие с ними в классе, и скрыть
детали реализации от пользователя.
Наследование
Наследование — это свойство системы, позволяющее
описать новый класс на основе уже существующего с частично или
полностью заимствующейся функциональностью. Класс, от которого
производится наследование, называется базовым, родительским или
суперклассом. Новый класс — потомком, наследником, дочерним или
производным классом.
Полиморфизм
Полиморфизм — это свойство системы использовать
объекты с одинаковым интерфейсом без информации о типе и
внутренней структуре объекта.

24.

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

25.

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

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

26.

Основные характеристики программ:
- алгоритмическая сложность;
- состав функций обработки информации;
- объем файлов, используемых программой;
- требования к операционной системе (ОС) и техническим
средствам обработки, в том числе объем дисковой памяти, размер
оперативной памяти для запуска программы, тип процессора,
версия ОС, наличие вычислительной сети и т. д.
Все программы по характеру использования подразделяются на:
- утилитарные;
- программные изделия.
Разработка программных приложений – это совокупность
производственных процессов, приводящая к созданию требуемого
ПС (программное средство), а также описание этой совокупности
процессов, начиная с момента зарождения идеи по созданию и до
«утилизации» ПС.
Продуктом является ПС, содержащее программы, выполняющие
требуемые функции.

27.

Спецификация разработки программных средств
Можно выделить ряд специфических особенностей:
- неформальный характер требований к ПС при
постановке задачи, но формализованный объект разработки –
программное средство;
- разработка ПС носит творческий характер, а не сводится
к какой-либо последовательности регламентированных действий;
- программный продукт разработки представляет собой
совокупность текстов, смысл которых выражается процессами
обработки данных и действиями пользователей, запускающих эти
процессы,
что
предопределяет
выбор
разработчиком
специфических приемов, методов и средств;
- ПС при своем использовании не расходуется и не
расходует используемых ресурсов.

28.

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

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

29.

Классификация программного обеспечения
Можно выделить три класса ПО:
-системное;
-пакеты прикладных программ (прикладное ПО);
-инструментарий
технологии
программирования
(инструментальные средства для разработки ПО).
Инструментарий технологии программирования —
это
программные продукты, предназначенные для
поддержки технологии программирования.

30.

Язык программирования — это формализованный
язык для описания алгоритма решения задач на
компьютере. Языки
программирования можно условно
разделить на следующие классы:
• машинные языки — это языки, воспринимаемые
аппаратной частью компьютера (машинные коды);
• машинно-ориентированные языки, отражающие
структуру конкретного типа компьютера (ассемблер);
• процедурно-ориентированные языки — это языки, в
которых имеется возможность описания программы как
совокупности процедур, или подпрограмм (Си, Паскаль и
др.);
проблемно-ориентированные
языки,
предназначенные для решения задач определенного класса
(ЛИСП, ПРОЛОГ).

31.

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

32.

Инструментальная среда пользователя — это
специальные средства, встроенные в пакеты прикладных
программ, такие как:
-библиотека функций, процедур, объектов и
методов обработки;
-макрокоманды;
-клавишные макросы;
-языковые макросы;
-конструкторы экранных форм и объектов;
-генераторы приложений;
-языки запросов высокого уровня;
-конструкторы меню и др.

33.

Спасибо за внимание!
English     Русский Rules