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