пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Технологии программирования (модульное, структурное, объектно-ориентированное)

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

входной язык программирования; редактор для написания и модификации текстов программ на алгоритмическом языке; транслятор с входного языка на язык машины; редактор связи; библиотеку стандартных подпрограмм; средства отладки. Различные классы задач имеют свою специфику, и поэтому для своего решения  требуют учета их особенностей, что достигается выбором соответствующего стиля и технологии программирования. Сегодня наиболее популярными являются следующие стили программирования: а). Структурное. b). Модульное. c). Объектно-ориентированное. d). Case – технологии (Computer-aided software engineering). e). Функциональное. f). Логическое. g). Интернет-программирование (web-программирование). а).Структурное программирование В основе структурного программирования лежит представление программы в виде иерархической структуры блоков (фрагментов программы). Компьютерная программа, в этом случае состоит из базовых конструкций: последовательного исполнения, ветвления и циклов, которые были рассмотрены в предыдущем параграфе. Их количество и последовательность определяется решаемой задачей. Базовые конструкции могут вкладываться друг в друга произвольным образом. Других средств управления последовательностью выполнения операций при структурном программировании не допускаются. Все элементы программ должны представлять собой логически целостные вычислительные блоки. Базовые элементы программы оформляются как подпрограммы - процедуры или функции. В тексте основной программы, используется инструкция вызова требуемой подпрограммы. После ее исполнения, программа продолжает работу со следующей инструкции. Разработка программы ведётся пошагово, методом «сверху вниз». Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. На начальном этапе разработки реальные, работающие подпрограммы, заменяются на так называемые «заглушки», которые какое-то время могут быть «пустыми», то есть не выполнять каких-то действий. Именно с ними программа верхнего уровня проверяется и отлаживается.   Если будет получена правильная последовательность вызова программных модулей, то это означает, что общая структура программы верна. После этого, подпрограммы-заглушки  последовательно заменяются на реально работающие подпрограммы. Разработка каждой из них ведётся тем же методом, что при создании основной программы. Разработка заканчивается тогда, когда не останется ни одной «заглушки», которая не была бы удалена, что представляется следующим текстом: Такая последовательность создания программного продукта гарантирует, что на каждом этапе разработки программист имеет дело с обозримым и понятным ему множеством фрагментов программного кода. Тем самым повышается уверенность, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняют, в какие именно процедуры нужно внести изменения, которые не затрагивают иные части программы. Это повышает гарантии того, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста. Структурное программирование иначе называют еще программированием без операторов безусловного перехода (GOTO). Неправильное, необдуманное, произвольное использование которых приводит к получению запутанных, плохо структурированных программ, которые практически невозможно понять. Структурное программирование сделало тексты программ читабельными. Облегчилось их понимание, стало возможным разработка программ в промышленном режиме, когда программу может без особых затруднений понять не только её автор, но и другие программисты. Это позволяет разрабатывать и сопровождать крупные программные комплексы силами больших коллективов разработчиков, даже в условиях изменений в составе персонала. Следует отметить, что многие языки, например Pascal, специально ориентированы на структурное программирование. b). Модульное программирование Модульное программирование является фундаментом многих используемых сегодня технологий программирования, базирующихся на самодостаточных кодовых модулях. Им не требуется внешняя поддержка, поэтому, как правило, они могут работать на различных аппаратных платформах и  под различными операционными системами. Любую часть логической структуры модульной программы можно изменить, не вызывая изменений в остальных частях программы. Модуль характеризуются тем, что: - на входе программный модуль получает определенный набор исходных данных, выполняет их содержательную обработку и возвращает один набор результатных данных; - модуль в состоянии выполнить все предписанные ему операции (функциональная завершенность); - результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей (логическая независимость); - обмен информацией между модулями должен быть по возможности минимизирован; - модуль должен быть обозримого размера и сложности. Модульный подход обладает рядом неоспоримых преимуществ, однако, он накладывает определенные ограничения на программиста и требует аккуратности на этапе проектирования. Модульное программирование поддерживается многими алгоритмическими языками, начиная от Модула, который был одним из первых языков этого класса, и кончая развитием идей модульности в языках Модула-2, Аda-95 и др.. с). Объектно-ориентированное программирование. Очевидно, что при создании программного продукта должны быть заранее известны состав и структура входных и выходных данных. Внутренние (рабочие) данные определяются уже в процессе проектирования и разработки программного продукта. В задачах связанных с экономической сферой, в отличии от вычислительных задач, проектирование структур данных является отдельной проблемой и удачное ее решение определяет эффективность созданной программы. Любая модификация структур внутренних данных неизбежно приводит к изменению алгоритмов обработки и, следовательно, к изменению текстов программ. Такое изменение может быть вызвано уточнением постановки задачи, сменой объектов предметной области, которые эти данные описывают. Это влечет коррекцию структур данных, алгоритмов и в конце счете текстов программных модулей. Объединение специфических понятий языков программирования высокого уровня, таких как - тип данных, процедура, функция, запись и относящихся к одному определенному объекту алгоритма, заложило основу для возникновения объектно-ориентированного программирования. Его специфика заключается в рассмотрении данных в неразрывной связи с методами их обработки, что позволяет условно записать следующее: Объект = Данные + Операции Такой подход позволяет программировать не вдаваясь в отработку деталей программ, которые могут уточняться в процессе реализации программного продукта. Объектно-ориентированное программирование представляет следующие преимущества: удобный и простой способ введения новых понятий, наиболее близких к понятиям реального мира; простая разработка компонент многократного применения; легкая модифицируемость (адаптируемость) программ; локализация свойств и поведения объектов в одном месте. Каждый объект характеризуется состоянием (свойства объекта) и возможностью выполнять некоторые действия (методы объекта). Например, для объекта «Накладная» это могут быть переменные, в том числе структуры данных, в которых хранятся значения реквизитов документа, внешний вид документа, значения строк и т.д. Для выполнения требуемых действий обращаются (вызывают) к методам объекта, например, печать, вывод на экран, добавление строки и т.п. Если изменится объект реального мира – документ «Накладная», то в программе надо будет только в одном месте внести изменения в виртуальный объект, либо создать новую разновидность объекта, учитывающую эти изменения. Таким образом, ООП позволяет создавать программы «более близкие» к реальному миру и легко адаптирующиеся к изменениям. Каждый объект в ООП всегда принадлежит некоторому классу. Класс объектов — это обобщенное (абстрактное) описание множества однотипных объектов. Объекты являются конкретными представителями своего класса, их принято называть экземплярами класса. Например, класс КОШКИ - понятие абстрактное, а экземпляр этого класса МОЙ КОТ ФИЛЯ - понятие конкретное. Основными понятиями ООП можно считать – абстрагирование инкапсуляцию, наследование и полиморфизм. Абстрагирование – это выделение только значимые характеристики объекта. Инкапсуляция – это объединение данных и методов, работающих с объектом, в некий класс и скрывающий детали его реализации от пользователя. Инкапсуляция делает объекты похожими на маленькие программные модули, у которых имеется интерфейс использования в виде подпрограмм. Переход от понятий "структура данных" и "алгоритм" к понятию "объект" значительно повысил ясность и надежность программ. Наследование – это свойство системы, позволяющее описать новый класс объектов на основе уже существующего. При этом частично или полностью заимствуются его функции. Класс, от которого производится наследование, называется базовым или родительским. Новый класс – потомком, наследником или производным классом. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации об его типе и внутренней структуре. Это означает, что в производных классах можно изменять работу уже существующих в базовом классе методов. При этом весь программный код, управляющий объектами родительского класса, пригоден для управления объектами дочернего класса без всякой модификации. Объектно – ориентированное программирование обычно используется при разработке крупных программных комплексов коллективом программистов. Проектирование системы в целом, создание отдельных компонент и их объединение в конечный продукт в этом случае часто выполняется разными людьми. Языками, поддерживающими данную технологию являются: C++, Java, Delphi и многие другие. d). Case – технологии (Computer-aided software engineering) Современные CASE- средства охватывают широкую область поддержки многочисленных технологий проектирования информационных систем (ИС): от простых средств анализа  и документирования до средств автоматизации всего жизненного цикла программного обеспечения.  CASE-средства – это программные средства, поддерживающие процессы создания и сопровождения ИС, включая анализ и формулировку требований, проектирование прикладного ПО (приложений) и баз данных, генерацию кода, тестирование, документирование, обеспечение качества, конфигурационное управление и управление проектом. CASE-средства вместе с системным ПО и техническими средствами образуют полную среду разработки ИС. Их компонентный состав включает: графические средства анализа и проектирования, обеспечивающие создание и редактирование иерархически связанных диаграмм, образующих модели ИС; библиотеку стандартных программных модулей; репозиторий; средства разработки приложений, включая языки 4GL и генераторы кодов;  средства конфигурирования пакета; средства документирования; средства тестирования; средства управления проектом; средства реинжениринга, обеспечивающие анализ программных кодов и схем баз данных и формирование на их основе различных моделей и проектных спецификаций. Программы на функциональных языках обычно короче и проще, чем те же самые программы, написанные в других система программирования. Кроме этого, функциональные языки программирования лучше приспособлены к организации параллельных вычислений. Раз все функции для вычислений используют только свои параметры, можно вычислять независимые функции в произвольном порядке или параллельно, на результат вычислений это не повлияет. Следует отметить, что в  традиционных языках программирования (например, Си++) вызов функции приводит к вычислению всех аргументов. Этот метод вызова функции называется «вызов по значению». Если какой-либо аргумент не использовался в функции, то результат вычислений пропадает, следовательно, вычисления были произведены впустую. В каком-то смысле противоположностью «вызова по значению» является «вызов по необходимости», который используется в функциональных языках программирования. В этом случае аргумент вычисляется, только если он нужен для получения результата. В функциональном программировании широко используется понятие рекурсии, способа общего определения множества объектов или функций через эти же функции и объекты, с использованием ранее заданных частных определений. Понятие функционального программирования часто связывают с языком Lisp (от английского сокращения LISt Processing language - «язык обработки списков») В настоящее время известно множество его реализаций. Например, Common Lisp стандартизованный диалект языка Lisp. Он был разработан с целью объединения разрозненных его диалектов. Common Lisp - мультипарадигменный (то есть, поддерживающий несколько парадигм) язык программирования общего назначения. Он поддерживает комбинацию процедурного, функционального и объектно-ориентированного программирования. Его используют в самых разных проектах – в интернет-серверах, серверах приложений, в клиентах взаимодействующих с реляционными и объектными базами данных, в научных расчётах и игровых программах. f). Логическое программирование Согласно логическому подходу к программированию, программа представляет собой совокупность правил или логических высказываний. Также в ней допустимы логические причинно-следственные связи, в частности, на основе операции импликации (импликация, от латинского « implicatio» - сплетение, тесно связываю, логическая связка, соответствующая грамматической конструкции если ..., то). В логическом программирование программы пишутся не в виде последовательности инструкций, а в виде множества фактов и правил. Процесс выполнения программы состоит в выводе нужных результатов из этого множества. Логическое программирование относится к декларативному программированию, поскольку программа на нём скорее описывает свойство задачи, нежели алгоритм её решения. Основано оно на автоматическом доказательстве теорем, и на теории и аппарате математической логики с использованием математических принципов резолюций. Языки логического программирования позволяют выполнить описание проблемы в терминах фактов и логических формул, а собственно решение проблемы выполняет система с помощью механизмов логического вывода. Самым известным языком логического программирования является Prolog, со всеми своими многочисленными диалектами (такими как - Arity Prolog, B-Prolog, Ciao Prolog, Arity/Prolog32, CxProlog/ IF/Prolog, JIProlog и др.). Они широко используются для создания баз знаний и экспертных систем и исследований в сфере искусственного интеллекта. На его основе создаются логические модели баз знаний и логические процедуры вывода и принятия решений. Следует отметить также Visual Prolog, который использует «визуальное программирование». Разработка программ в нем производится специальными графическими средствами без традиционного программирования на алгоритмическом языке. В результате эта система программирования, отличается логичностью, простотой и эффективностью. g). Интернет-программирование (web-программирование) Раздел программирования, в рамках которого создаются программы интернет-приложений, реализующие разнообразные интернет-технологии называются интернет - программированием. Программы интернет-приложений называются скриптами. Существует две основные категории скриптов – клиентские, то есть выполняемые на компьютере пользователя и серверные, предназначенные для использования на интернет-сервере. Как правило, клиентские скрипты исполняются с помощью браузеров, специальных программ, с помощью которых просматриваются интернет-страницы. Эти скрипты представляют собой некие команды на специализированном языке программирования, которые заключаются среди общего кода web-сайта. Самыми распространенными клиентскими языками программирования являются JavaScript, VBScript, ActionScript и Java. Примерами серверных скриптов могут служить «стандартные» программы, которые используются на интернет-страницах: счетчики посещаемости сайта, программы на сервере, поддерживающие голосование и гостевые книги на сайте и так далее. Важной стороной работы серверных скриптов – возможность с их помощью организации взаимодействия с системой управления базами данных имеющихся на сервере. При написании серверных скриптов используются языки Perl, ASP, WebSQL и Java Server Pages. Дальнейшее развитие технологий создания программного обеспечения чрезвычайно важно, так как оно является составной частью современных информационных технологий. Их совершенствование особенно важно при создании таких новых систем, как облачные вычисления, новые поколения мультимедийных поисковых систем, аналитическое программное обеспечение, технологии передачи и хранения информации, 3d-моделирования и много другого, без чего невозможно решение задач экономикиСовременный рынок программных средств насчитывает около 300 различных CASE-программ, которые активно используются ведущими западными фирмами. На Российском рынке CASE-средств наиболее известными пакетами являются: Vantage Team Builder (Westmount I-CASE), Designer/2000, Erwin+Bpwin, CASE-аналитик, System  Architect,Visible Analyst Workbench, EasyCASE. В современных CASE-пакетах используются практически все известные методологии проектирования. CASE-технология - это не только методология, но и инструментарий. Сейчас на рынке существует большое количество CASE-пакетов. Например, построитель мета-моделей данных CA ERwin Data Modeler, который позволяет проводить их описание, анализ и моделирование. Он включает в себя три стандартные методологии: IDEF0 (функциональное моделирование), DFD (моделирование потоков данных) и IDEF3 (моделирование потоков работ). e). Функциональное программирование Обычные традиционные (императивные) языки высокого уровня, такие как Pascal, Cи, Ada и др. последовательно выполняют инструкции (операторы) программы и результаты размещаются в памяти. В парадигме функционального программирования основным понятием является функция. Известно, что математические функции выражают связь между исходными данными и результатом. Процесс вычисления также имеет вход и выход, поэтому функция вполне может использоваться для описания вычислений. Функциональная программа представляет собой набор определений функций. Функции определяются через другие функции или рекурсивно через самих себя. При выполнении программы функции получают параметры, вычисляют и возвращают результат, при необходимости вычисляя значения других функций. На функциональном языке программист не должен описывать порядок вычислений. Нужно просто описать желаемый результат как систему функций. Функциональное программирование, нашло большое применение в теории искусственного интеллекта и её приложениях. К его основным особенностям можно отнести краткость и простоту, строгую типизацию, модульность, отсутствие (как правило) побочных эффектов.      

хиты: 606
рейтинг:+1
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь