Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лекция №2. Особенности разработки сложных программных систем↑ Стр 1 из 5Следующая ⇒ Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Содержание
Лекция №1. Классификация программного обеспечения. Технологии программирования. Основные понятия и подходы Цель – получить представление о современной классификации программного обеспечения, понятии «технологии программирования», а также об основных этапах их развития.
Программное обеспечение (ПО) – это совокупность программ, позволяющих осуществить автоматизированную обработку информации на компьютере, предназначенных для многократного использования и применения разными пользователями, а также программных документов, необходимых для их эксплуатации. Условно программное обеспечение классифицируется как системное (общее) и прикладное (специальное). Программы, работающие на системном уровне, обеспечивают взаимодействие программ базового уровня с прочими программами системы и непосредственно с аппаратным обеспечением. Программное обеспечение прикладного уровня представляет собой комплекс прикладных программ, с помощью которых на данном рабочем месте выполняются конкретные задания. Между тем, подразделение ПО на системное и прикладное является до некоторой степени устаревшим. Современное разделение предусматривает минимум три градации ПО: системное, промежуточное и прикладное. Современная тенденция развития ПО состоит в снижении объема как системного, так и прикладного программирования. Основная часть работы программистов выполняется в промежуточном ПО. Снижение объема системного программирования обусловлено современными концепциями ОС, объектно-ориентированной архитектурой и архитектурой микроядра, в соответствии с которыми большая часть функций системы выносится в утилиты, которые можно отнести и к промежуточному ПО. Снижение объема прикладного программирования обусловлено тем, что современные продукты промежуточного ПО предлагают все больший набор инструментальных средств и шаблонов для решения задач своего класса. Значительная часть системного и практически все прикладное ПО пишется на языках высокого уровня, что обеспечивает сокращение расходов на их разработку/модификацию и переносимость. Промежуточное ПО (middleware) определяется как совокупность программ, осуществляющих управление вторичными ресурсами (конструируемыми самим ПО), которые ориентированы на решение определенного класса задач. К такому ПО относятся менеджеры транзакций, серверы БД, серверы коммуникаций и другие программные серверы. С точки зрения инструментальных средств промежуточное ПО ближе к прикладному, так как не работает напрямую с первичными ресурсами, а использует для этого сервисы, предоставляемые системным ПО. С точки же зрения алгоритмов и технологий разработки оно ближе к системному, так как всегда является сложным программным изделием многократного и многоцелевого использования, в котором применяются алгоритмы, сходные с применяемыми в системном ПО. Технология программирования (ТП) - это совокупность методов и средств, используемых при разработке ПО. ТП представляет собой набор технологических инструкций: 1) указание последовательности выполнения технологических операций; 2) перечисление условий, при которых выполняются операции; 3) описания самих операций с исходными данными, результатами, инструкциями, нормативами, стандартами, критериями и методами оценки. Технология определяет способ описания проектируемой системы (модели), используемой на конкретном этапе разработки. Различают технологии, используемые на конкретных этапах разработки (определенный метод), и технологии, охватывающие несколько этапов разработки (базовый метод или методология). Среди основных этапов развития технологий программирования выделяют «стихийное» программирование, структурный, объектный и компонентный подходы к программированию [1]. Этап «стихийного» программирования. Характерной особенностью периода от момента появления первых ЭВМ до середины 60-х годов XX века является то, что сформулированные технологии программирования практически отсутствовали, а само программирование было искусством. Первые программы имели простейшую структуру: программа на машинном языке и обрабатываемые данные. Сложность программ в машинных кодах ограничивалась способностью программиста одновременно мысленно отслеживать последовательность выполняемых операций и местонахождение данных при программировании. Использовалась интуитивная технология программирования. В результате появления ассемблеров вместо двоичных кодов стали использовать символические имена данны х и мнемоники кодов операций, а программы стали более «читаемыми». Именно в этот период зародилась ставшая впоследствии фундаментальной для ТП концепция модульного программирования [1, 9], ориентированная на преодоления трудностей программирования в машинном коде. Создание языков программирования высокого уровня (FORTRAN, ALGOL) существенно упростило программирование вычислений, снизив уровень детализации операций, что позволило увеличить сложность программ. В результате появления средств, позволяющих оперировать подпрограммами, были созданы огромные библиотеки расчетных и служебных подпрограмм. Типичная программа состояла из основной программы, области глобальных данных и набора подпрограмм (рисунок А.1а). Однако при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой, поэтому было предложено размещать в них локальные данные (рисунок А.1б). В начале 60-х годов XX века разразился «кризис программирования»: разработчики сложного программного обеспечения срывали все сроки завершения проектов: проект устаревал раньше, чем был готов к внедрению, его стоимость увеличивалась, в результате многие проекты так никогда и не были завершены. Использование разработки «снизу-вверх» при отсутствии четких моделей описания подпрограмм и методов проектирования превращало создание программ в непростую задачу. Интерфейсы программ получались сложными, а при сборке программного продукта выявлялось большое количество ошибок согласования, исправление которых требовало серьезного изменения уже разработанных частей программ. При этом в программу часто вносились новые ошибки, в результате чего процесс тестирования и отладки программ занимал более 80% времени разработки, если вообще когда-нибудь заканчивался. Анализ причин возникновения ошибок позволил сформулировать новый подход к программированию - структурный. Этап структурного программирования. Структурный подход к программированию, который развивался на втором этапе развития технологий в 60-70 годы XX века. В его основе лежит декомпозиция сложных систем с целью последующей реализации в виде отдельных небольших (до 40-50 операторов) подпрограмм, позже названная процедурной декомпозицией. Структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры, а проектирование осуществлялось «сверху-вниз» и подразумевало реализацию общей идеи. Были введены ограничения на конструкции алгоритмов, рекомендованы формальные модели их описания, а также специальный метод проектирования алгоритмов - метод пошаговой детализации. Принципы структурного программирования были заложены в основу процедурных языков программирования, которые включали основные «структурные» операторы передачи управления, поддерживали вложение подпрограмм, локализацию и ограничение области «видимости» данных (PL/1, ALGOL-68, Pascal, С). Дальнейший рост сложности и размеров разрабатываемого программного обеспечения потребовал развития структурирования данных,в языках появляется возможность определения пользовательских типов данных [1, 5, 9]. Стремление разграничить доступ к глобальным данным программы дало толчок к появлению и развитию технологии модульного программирования (рисунок А.2), чтопредполагало выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки). Связи между модулями осуществлялись через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным) был запрещен. Эту технологию поддерживают современные версии Pascal, С, C++, Ада и Modula. Структурный подход в сочетании с модульным программированием позволяет получать надежные программы, размером не более 100 000операторов. Существенным недостатком является тот факт, что ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении программы (из-за раздельной компиляции модулей), а при увеличении размера программы возрастает сложность межмодульных интерфейсов, и предусмотреть взаимовлияние отдельных частей программы становится практически невозможно. Поэтому для разработки программного обеспечения большого объема было предложено использовать объектный подход. Этап объектного программирования. На третьем этапе (80-е - 90-е годы XX века) был сформирован объектный подход к программированию.Широкое внедрение персональных компьютеров во все сферы человеческой деятельности привело к бурному развитию пользовательских интерфейсов и созданию четкой концепции качества программного обеспечения [1, 9]. Развиваются методы и языки спецификации. Развивается концепция компьютерных сетей. Возникает необходимость в формировании совершенно нового подхода к разработке сложного программного обеспечения с интуитивно понятным и удобным пользовательским интерфейсом. Технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности взаимодействующих путем передачи сообщений программных объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию с наследованием свойств, была названа объектно-ориентированным программированием [1, 9].Объектная структура программы (рисунок А.3) впервые была использована в языке имитационного моделирования сложных систем Simula, а затем использована в новых версиях универсальных языков программирования таких, как Pascal, C++, Modula, Java. Достоинством объектно-ориентированного программирования является «естественная» декомпозиция программного обеспечения, существенно облегчающая разработку. Это приводит к более полной локализации данных и интегрированию их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных объектов программы. Кроме того, объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения, позволяющих конструировать из простых объектов сложные. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов. На основе объектного подхода были созданы среды, поддерживающие визуальное программирование (Delphi, C++ Builder, Visual C++), при использовании которого некоторая часть будущего продукта проектируется с применением визуальных средств добавления и настройки специальных библиотечных компонентов. В результате появляется заготовка будущей программы, в которую уже внесены коды. Использование объектного подхода имеет много преимуществ. Однако его конкретная реализация в объектно-ориентированных языках программирования таких, как Pascal и C++ имеет существенные недостатки: отсутствуют стандарты компоновки двоичных результатов компиляции объектов в единое целое, даже в пределах одного языка программирования; изменение в реализации одного программного объекта связано с перекомпиляцией модуля и перекомпоновкой всего программного обеспечения, использующего данный объект. Таким образом, сохраняется объективная зависимость модулей программного обеспечения от адресов экспортируемых полей и методов, а также структур и форматов данных. Связи модулей нельзя разорвать, но можно стандартизировать их взаимодействие, на чем и основан компонентный подход к программированию. В 90-е годы XX века персональные компьютеры стали подключаться к сети как терминалы. Остро встала проблема защиты компьютерной информации и передаваемых по сети сообщений. Начался решающий этап полной информатизации и компьютеризации общества. Четвертый этап развития технологий программирования - компонентный подход и CASE-технологии - не завершился до настоящего времени. Компонентный подход предполагает построение ПО из отдельных компонентов, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. Объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию [1, 9]. Компонентный подход лежит в основе технологий, разработанных на базе COM (Component Object Model - компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture - общая архитектура с посредником обработки запросов объектов), которые используют сходные принципы и различаются лишь особенностями реализации. Кроме того, отличительной особенностью современного этапа развития технологии программирования являются создание и внедрение автоматизированных технологий разработки и сопровождения программного обеспечения, которые были названы CASE-технологиями (Computer-Aided Software/System Engineering - разработка программного обеспечения/программных систем с использованием компьютерной поддержки). Без средств автоматизации разработка достаточно сложного программного обеспечения на настоящий момент становится трудно осуществимой: память человека уже не в состоянии фиксировать все детали, которые необходимо учитывать при разработке программного обеспечения. CASE-технологии поддерживают как структурный, так и объектный (компонентный) подходы к программированию [1, 9]. Технология СОМ фирмы Microsoft является развитием технологии OLE I (Object Linking and Embedding - связывание и внедрение объектов), которая использовалась в ранних версиях Windows для создания составных документов. Она определяет общую концепцию взаимодействия программ любых типов(библиотек, приложений, операционной системы), т. е. позволяет одной части программного обеспечения использовать функции (службы),предоставляемые другой (рисунок А.4). Модификация СОМ, обеспечивающая передачу вызовов между компьютерами, называется DCOM (Distributed COM - распределенная СОМ). На базе технологии СОМ и ее распределенной версии DCOM были разработаны компонентные технологии, решающие различные задачи разработки ПО. На возможностях COM базируется технология COM+, которая обеспечивает поддержку распределенных приложений на компонентной основе и предназначена для поддержки систем обработки транзакций [1, 9]. Кроме того, к технологиям, реализующим компонентный подход, заложенный в СОМ, относятся: а) OLE-automation - технология создания программируемых приложений, обеспечивающая программируемый доступ к их внутренним службам (например, MS Excel поддерживает ее, предоставляя другим приложениям свои службы); б) ActiveX - технология, построенная на базе OLE-automation и предназначенная для создания как сосредоточенного на одном компьютере программного обеспечения, так и распределенного в сети. Предполагает использование визуального программирования для создания компонентов - элементов управления ActiveX, которые устанавливаются на компьютер дистанционно с удаленного сервера и применяются в клиентских частях приложений Интернет; в) MTS (Microsoft Transaction Server - сервер управления транзакциями) - технология, обеспечивающая безопасность и стабильную работу распределенных приложений при больших объемах передаваемых данных; г) MIDAS (Multitier Distributed Application Server - сервер многозвенных распределенных приложений) - технология, организующая доступ к данным разных компьютеров с учетом балансировки нагрузки сети. Технология CORBA, разработанная группой компаний OMG (Object Management Group - группа внедрения объектной технологии программирования), реализует подход аналогичный СОМ на базе объектов и интерфейсов CORBA. Программное ядро CORBA реализовано для всех основных аппаратных и программных платформ, и потому технологию можно использовать для создания распределенного программного обеспечения в разнородной вычислительной среде. Организация взаимодействия между объектами клиента и сервера в CORBA осуществляется с помощью посредника (VisiBroker ) и специализированного программного обеспечения. К сожалению, в силу ряда причин разработчики были вынуждены отказаться от этой технологии [1, 9]. Сегодня CORBA, главным образом, используется для связывания компонентов, выполняемых внутри корпоративных сетей, в которых коммуникации защищаются брандмауэрами от внешнего мира. Технология CORBA используется также при разработке систем реального времени и встроенных систем, секторе, в котором CORBA действительно развивается. Однако в целом CORBA находится в упадке, и теперь ее нельзя назвать никак иначе, кроме как нишевой технологией. Приложение А Основные этапы развития технологий программирования Рисунок А.1 - Архитектура программ с глобальной и локальной областями данных
Рисунок А.2 – Архитектура программы при структурном подходе. Модульное программирование
Рисунок А.3 – Объектный подход. Архитектура программы при объектно-ориентированном программировании
Рисунок А.4 – Компонентный подход. Технология СОМ
Рисунок А.5 – Соотношение абстрактного и конкретного в описании блоков при блочно-иерархическом подходе
Рисунок А.6 – Структура процессов жизненного цикла программного обеспечения Приложение Б Элементы блок-схем
Таблица Б.1 - Основные элементы блок-схем
Приложение В Структурное и «неструктурное» программирование Таблица В.1 – Соответствие различных способов описания алгоритмов
Приложение Г Таблица Г.1 - Специальные и управляющие символы
Таблица Г.2 - Зарезервированные слова в C++
Таблица Г.3 – Типы данных с разными комбинациями модификаторов
Таблица Г.4 – Перечень операций, их приоритет и порядок выполнения
Таблица Г.5 – Основные математические функции
Таблица Г.6 – Символы преобразования в функциях ввода-вывода
Таблица Г.7 – Характерные приемы программирования
Приложение Д Указатели и ссылки
Рисунок Д.1 – Графическая интерпретация указателя
Рисунок Д.2 – Элементы массива и указатели Список литературы
1 Иванова Г.С. Технология программирования.- М.: «Кнорус», 2013. 2 Страуструп Б. Язык программирования С++. – М., 2012. 3 Потопахин В. Искусство алгоритмизации. - М.: «ДМК Пресс», 2011. 4 Сэджвик Р. Алгоритмы на С++. – М.: «Вильямс», 2011. 5 Павловская Т.А. С/С++. Структурное программирование. – СПб., 2010. 6 Немцова Т.И. Программирование на языке высокого уровня. Программирование на языке С++. - М.: «Форум», 2012. 7 Ашарина И.В. Основы программирования на языках С и С++. - М.: Горячая линия-Телеком, 2012. 8 Аляев Ю.А., Козлов О.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004. 9 Терехов А.Н. Технология программирования. – М.: БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий. - Intuit.ru, 2006. 10 Давыдов В.Г. Технологии программирования С++. – СПб., 2005. 11 Соколов А.П. Системы программирования: теория, методы, алгоритмы: Учебное пособие. - М.: Финансы и статистика, 2004.
Cводный план 2013 г., поз. 256
Наталья Валерьевна Сябина Лариса Николаевна Рудакова
ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
Конспект лекций для студентов специальности 5B070200 - Автоматизация и управление
Редактор Л.Т. Сластихина Специалист по стандартизации Н.К. Молдабекова
Копировально-множительное бюро некоммерческого акционерного общества «Алматинский университет энергетики и связи» 050013, Алматы, ул. Байтурсынова, 126
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 659; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.15.190.187 (0.014 с.) |