400 likes | 770 Views
ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ. Глава 1. Технология программирования. Основные понятия и подходы.
E N D
ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ Глава 1
Технология программирования. Основные понятия и подходы. Программирование — сравнительно молодая и быстро развивающаяся отрасль науки и техники. Опыт ведения реальных разработок и совершенствования, имеющихся программных и технических средств постоянно переосмысливается, в результате чего появляются новые методы, методологии и технологии, которые, в свою очередь, служат основой более современных средств разработки программного обеспечения.
1.1. Технология программирования и основные этапы ее развития. • Технологией программированияназывают совокупность методов и средств, используемых в процессе разработки программного обеспечения. • Технология программирования представляет собой набор технологических инструкций, включающих: - указание последовательности выполнения технологических операций; - перечисление условий, при которых выполняется та или иная операция; - описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п.
Структура описания технической операции Методические материалы инструкции, нормативы и стандарты критерии оценки результатов Исходные данные в стандартном представлении (документы, рабочие материалы, результаты предыдущей операции) Результаты в стандартном представлении Исполнители, программные и технические средства Рис. 1.1
Виды технологий программирования: • Технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов. В основе лежит ограниченно применимый метод,позволяющий решить конкретную задачу. • Технологии, охватывающие несколько этапов или весь процесс разработки. В основе лежит базовый метод или подход, определяющий совокупность методов, используемых на разных этапах разработки, или методологию.
Основные этапы развития программирования, как науки I этап – «Стихийное» программирование. Первые программы имели простейшую структуру. Они состояли из собственно программы на машинном языке и обрабатываемых ею данных.
Основные этапы развития программирования, как науки I этап – «Стихийное» программирование. Появление ассемблеров позволило вместо двоичных или 16-ричных кодов использовать символические имена данных и мнемоники кодов операций. С появлением языков программирования высокого уровня, таких, как FORTRAN и ALGOL, снизился уровень детализации операций. Революционным было появление в языках средств, позволяющих оперировать подпрограммами.
Основные этапы развития программирования, как науки I этап – «Стихийное» программирование. Типичная программа того времени состояла из • основной программы, • области глобальных данных • набора подпрограмм (в основном библиотечных), выполняющих обработку всех данных или их части.
Основные этапы развития программирования, как науки I этап – «Стихийное» программирование. Использовалась разработка «снизу-вверх» - подход, при котором вначале проектировали и реализовывали сравнительно простые подпрограммы, из которых затем пытались построить сложную программу.
Основные этапы развития программирования, как науки II этап –Структурный подход к программированию. Структурный подход к программированию – это совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В его основе лежит декомпозиция(разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 40 - 50 операторов) подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ получил название процедурнойдекомпозиции. Процедурные языки программирования включают основные «структурные» операторы передачи управления, поддерживают вложение подпрограмм, локализацию и ограничение области «видимости» данных. Наиболее известные языки этой группы: • PL/1, • ALGOL-68, • Pascal, • С. Дальнейший рост сложности и размеров разрабатываемого программного обеспечения потребовал развития структурирования данных. Модульное программирование– это выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули(библиотеки подпрограмм).
Основные этапы развития программирования, как науки • Технологию модульного программирования поддерживают современные версии языков Pascal и С (С++), языки Ада и Modula. II этап –Структурный подход к программированию. Структурный подход в сочетании с модульным программированием позволяет получать достаточно надежные программы, размер которых не превышает100 000 операторов. Для разработки программного обеспечения большого объема было предложено использовать объектный подход.
Основные этапы развития программирования, как науки III этап –Объектный подход к программированию. Объектно-ориентированное программирование – этотехнология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений.
Архитектура программы при объектно-ориентированном программировании
Основные этапы развития программирования, как науки III этап –Объектный подход к программированию. Основным достоинством объектно-ориентированного программирования по сравнению с модульным программированием является «более естественная» декомпозиция программного обеспечения. Это приводит к более полной локализации данных и интегрированию их с подпрограммами обработки. Объектный подход предлагает новые способы организации программ, основанные на механизмах: • наследования, • полиморфизма, • композиции, • наполнения.
Основные этапы развития программирования, как науки III этап –Объектный подход к программированию. Среды, поддерживающие визуальное программирование: • Delphi • С++ Builder • Visual С++. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.
Основные этапы развития программирования, как науки III этап –Объектный подход к программированию. Недостатки объектного подхода к программированию: • отсутствие стандартов компоновки двоичных результатов компиляции объектов в единое целое; • изменение реализации одного из программных объектов, как минимум, связано с перекомпиляцией соответствующего модуля и перекомпоновкой всего программного обеспечения.
Основные этапы развития программирования, как науки IV этап –Компонентный подход и CASE-технологии. Компонентный подходпредполагает построение программного обеспечения из отдельных компонентов физически отдельно существующих частей программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. Компонентный подход лежит в основе технологий, разработанных на базе COM, и технологии создания распределенных приложений CORBA.
Основные этапы развития программирования, как науки IV этап –Компонентный подход и CASE-технологии. Технология СОМ определяет общую парадигму взаимодействия программ любых типов: • библиотек, • приложений, • операционной системы.
Основные этапы развития программирования, как науки IV этап –Компонентный подход и CASE-технологии. • Объекты СОМ: - включают поля и методы; - могут реализовывать несколько интерфейсов. • Классы СОМ: поддерживают наследование интерфейсов, но не поддерживают наследования реализации.
Основные этапы развития программирования, как науки IV этап –Компонентный подход и CASE-технологии. Типы серверов: • внутренний сервер; • локальный сервер; • удаленный сервер. Взаимодействие клиента и сервера обеспечивается базовыми механизмами СОМ или DCOM. При использовании локальных и удаленных серверов в адресном пространстве клиента создается proxy-объект- заместитель объекта СОМ, а в адресном пространстве сервера СОМ - заглушка, соответствующая клиенту.
Основные этапы развития программирования, как науки Виды компонентных технологий: • OLE-automation - технология создания программируемых приложений, обеспечивающая программируемый доступ к внутренним службам этих приложений. Диспинтерфейс(dispinterface) - специальный интерфейс, облегчающий вызов функций объекта. • ActiveX- технология, построенная на базе OLE-automation, предназначена для создания программного обеспечения как сосредоточенного на одном компьютере, так и распределенного в сети.
Основные этапы развития программирования, как науки Преимущества технологии ActiveX: • быстрое написание программного кода; • открытость и мобильность; • возможность написания приложений; • большое количество уже существующих бесплатных программных элементов ActiveX; • Стандартность.
Основные этапы развития программирования, как науки Виды компонентных технологий: • MTS(Microsoft Transaction Server - сервер управления транзакциями) технология, обеспечивающая безопасность и стабильную работу распределенных приложений при больших объемах передаваемых данных. • MIDAS (Multitier Distributed Application Server - сервер многозвенных распределенных приложений) - технология, организующая доступ к данным разных компьютеров с учетом балансировки нагрузки сети. Технология CORBA реализует подход, аналогичный СОМ, на базе объектов и интерфейсов CORBA. Эту технологию можно использовать для создания распределенного программного обеспечения в гетерогенной (разнородной) вычислительной среде.
1.2. Проблемы разработки сложных программных систем. Логическая сложность решаемых задач. Факторы, увеличивающие сложность разработки программных систем: • сложность формального определения требований к программным системам; • отсутствие удовлетворительных средств описания поведения дискретных систем с большим числом состояний при недетерминированной последовательности входных воздействий; • коллективная разработка; • необходимость увеличения степени повторяемости кодов.
1.2. Проблемы разработки сложных программных систем. Сложность определения требований к программным системам. Факторы, обуславливающие сложность определения требований к программным системам: • при определении требований необходимо учесть большое количество различных факторов; • разработчики программных систем не являются специалистами в автоматизируемых предметных областях, а специалисты в предметной области не могут сформулировать проблему в нужном ракурсе.
1.2. Проблемы разработки сложных программных систем. Отсутствие удовлетворительных средств формального описания поведения дискретных систем. Использование языков низкого уровня приводит к ранней детализации операций в процессе создания программного обеспечения и увеличивает объем описаний разрабатываемых продуктов. Коллективная разработка. Работая в коллективе обеспечивается целостность проекта.
1.2. Проблемы разработки сложных программных систем. Необходимость увеличения степени повторяемости кодов. На сложность разрабатываемого программного продукта влияет создание библиотек компонентов, которые приходится делать более универсальными.
1.3.Блочно-иерархический подход к созданию сложных систем Большинство сложных систем имеет иерархическую внутреннюю структуру. Это связано с тем, что обычно связи элементов сложных систем различны как по типу, так и по силе, что и позволяет рассматривать эти системы как некоторую совокупность взаимозависимых подсистем.
1.3.Блочно-иерархический подход к созданию сложных систем Каждую подсистему можно разделить на подсистемы. • Иерархия «целое-часть» - это типы подсистем по-разному скомбинированные и организованные. • Иерархия «простое-сложное» - это когда любая функционирующая система является результатом развития более простой системы.
1.3.Блочно-иерархический подход к созданию сложных систем Части объектов блочно-иерархического подхода: • Процессразбиения сложного объекта на сравнительно независимые части получил название – декомпозиции. • Пошаговая детализация – при создании очень сложных объектов процесс декомпозиции выполняется многократно. Пошаговая детализация
1.3.Блочно-иерархический подход к созданию сложных систем Результат декомпозиции обычно представляют в виде схемы иерархии. Чем больше блок, тем более абстрактным должно быть его описание.
1.3.Блочно-иерархический подход к созданию сложных систем В основе блочно-иерархического подхода лежат декомпозиция и иерархическое упорядочение. Принципы блочно-иерархического подхода: • непротиворечивость; • полнота; • формализация; • повторяемость; • локальная оптимизация.
1.3.Блочно-иерархический подход к созданию сложных систем • Совокупность языков моделей, постановок задач, методов описаний некоторого иерархического уровня принято называть уровнем проектирования. • Различные взгляды на объект проектирования принято называть аспектами проектирования.
1.3.Блочно-иерархический подход к созданию сложных систем Использование блочно - иерархического подхода: • упрощает проверку работоспособности, как системы в целом, так и отдельных блоков; • обеспечивает возможность модернизации систем. Структурный подход учитывает только свойства иерархии «целое-часть», а объектный - использует еще и свойства иерархии «простое-сложное».