Технология сборочного программирования реферат

Обновлено: 02.07.2024

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

Содержание работы
Содержимое работы - 1 файл

Куросовая работа.doc

Государственное Образовательное Учреждение

Среднего Профессионального Образования

"Уральский политехнический колледж"

Курсовая работа

Тема: Технология программирования и основные этапы ее развития

По дисциплине: Технологии разработки программных продуктов

Выполнил студент: 3 курса

Устюгов Артем Владимирович

__________Юдина Ирина Игоревна

2. Структурный подход к программированию (60-70-е годы ХХ в) 7

3. Объектный подход к программированию (с середины 80-х до конца 90-х годов XX в.) 9

4. Компонентный подход и CASE-технологии (с середины 90-х годов XX в. до нашего времени) 11

Техническое задание 16

Практическая часть 17

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

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ И ОСНОВНЫЕ ЭТАПЫ ЕЕ РАЗВИТИЯ

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

• указание последовательности выполнения технологических операций;

• перечисление условий, при которых выполняется та или иная операция;

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

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

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

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

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

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

Это, в свою очередь, позволило увеличить сложность программ.

Революционным было появление в языках средств, позволяющих оперировать подпрограммами.

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

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

Слабым местом такой архитектуры было то, что при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой. Например, подпрограмма поиска корней уравнения на заданном интервале по методу деления отрезка пополам меняет величину интервала. Если при выходе из подпрограммы не предусмотреть восстановления первоначального интервала, то в глобальной области окажется неверное значение интервала. Чтобы сократить количество таких ошибок, было предложено в подпрограммах размещать локальные данные.

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

2. СТРУКТУРНЫЙ ПОДХОД К

ПРОГРАММИРОВАНИЮ (60-70-Е ГОДЫ ХХ В)

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

Одновременно со структурным программированием появилось огромное количество языков, базирующихся на других концепциях, но большинство из них не выдержало конкуренции. Какие-то языки были просто забыты, идеи других были в дальнейшем использованы в следующих версиях развиваемых языков.

Дальнейший рост сложности и размеров разрабатываемого программного обеспечения потребовал развития структурирования данных. Как следствие этого в языках появляется возможность определения пользовательских типов данных. Одновременно усилилось стремление разграничить доступ к глобальным данным программы, чтобы уменьшить количество ошибок, возникающих при работе с глобальными данными. В результате появилась и появилась технология модульного программирования.

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

Сборочное программирование– вид подходов, предполагающих сборку программы из уже разработанных фрагментов. Сборка может осуществляться вручную, указываться на языке сборки или извлечена полуавтоматическим образом из спецификации. Фрагментами кода обычно выступают программные модули или иные части программы, представляемые в виде модулей определённого вида.

Выделяют следующие основные способы поддержки этого подхода:

1. Выработка стиля программирования, соответствующего принятым принципам модульности.

2. Повышение эффективности межмодульных интерфейсов. Обеспечение поддержки модульности на уровне программно-аппаратной платформы.

3. Ведение большой базы программных модулей. Решение проблемы идентификации модулей и проверки пригодности по описанию интерфейса.

Сборочное программирование тесно связано с методом повторного использования кода, причём как исходного, так и бинарного. Выделяют несколько разновидностей технологических подходов сборочного программирования, которые в значительной степени определяются базисной методологией: 1. Модульное сборочное;2. Объектное сборочное;3. Компонентное сборочное и4. Аспектное сборочное программирование.

Каждый из подходов (после модульного программирования) можно рассматривать как развитие предыдущего подхода в направлении решения различных проблем разработки. Особенно это важно для программирования, так как многие проблемы связаны с поддержкой и улучшением программного кода системы.

Модульное сборочное программирование– исторически первый подход сборочного программирования, базирующийся на процедурах и функциях методологии структурного императивного программирования, точнее их объединении – программных модулях. В разных языках программные модули называются по-разному: модуль (moduleвModula‑2,unitвPascal), пакет (packageвAda) или просто отдельный файл (вC/C++и т.п.).

Некоторые рассматривают указанную методологию, дополненную концепцией модуля, как полноправную, самостоятельную, используя для неё название модульно-ориентированное программирование, подчёркивая этим выделениемодульностикак отдельной специфики, а не части топологической специфики.

Развитием этого подхода является расширяемое программирование– модульно-основанное программирование, при котором добавление новых модулей возможно без каких-либо изменений в существующих модулях. Данный подход предложен Н. Виртом и впервые реализован при проектированииOberon System. Фактически это компонентно-основанное программирование без ООП, так как модуль вOberonявляется полноценным компонентом (т.е. выполняет соответствующие ему функции). РазвитиемOberonсталComponent Pascal, в своём названии отразивший своё происхождение от языкаPascalи свою нацеленность на компонентное программирование.

Объектное сборочное программирование– подход сборочного программирования, базирующийся на библиотеках классов ООП, поставляемых в виде исходного (VCLвDelphi) или бинарного кода (DLLвC/C++дляMS Windows).

Как следует из названия, подход соответствует методологии ООП.

Компонентное сборочное программирование– развитие предыдущего подхода, базирующееся на библиотеках компонентов. Данный подход связан с такими понятиями, как компонент и интерфейс.

Некоторые рассматривают этот подход как соответствующий своей определённой методологии, используя для неё название компонентно-ориентированное программирование(КОП). Эта методология является дальнейшим развитием ООП. Её можно рассматривать как методологию, полученную применением специфики модульности к ООП.

Аспектное сборочное программирование– развитие предыдущего подхода, базирующееся на библиотеках многоаспектных компонентов. Данный подход связан с такими понятиями, как аспект и значимость.

Аспект– модуль, который содержит реализацию определённой значимости.Значимость(букв. участие, отношение) – эксплуатационная часть системы, несущая определённую характеристику (в отличие от основной части, ориентированной на ПрО). Значимость связана с определёнными эксплуатационными требованиями, предъявляемыми к системе (надёжность, контролируемость, безопасность). Примерами значимостей являются обработка контекстно-зависимых ошибок и исключений, ведение журналов работы с системой, выполнение контрольных проверок параметров, подтверждение подлинности.

Некоторые рассматривают этот подход (аналогично КОП) как соответствующий своей определённой методологии, используя для неё название аспектно-ориентированное программирование(АОП). Эта методология является дальнейшим развитием ООП и КОП. Её можно рассматривать как методологию, полученную повторным применением специфики модульности к КОП на более высоком уровне организации модульности.

Традиционными средствами разработки программ являются алгоритмические (процедурные) языки программирования. Для создания программы на выбранном языке программирования нужно иметь следующие компоненты:

Текстовый редактор – это редактор, который позволяет набрать текст программы на языке программирования. Для этой цели можно использовать любые текстовые редакторы, но лучше пользоваться специализированным текстовым редактором.

Транслятор – это основа систем программирования. Трансляторы языков программирования, т. е. программы, обеспечивающие перевод исходного текста программы на машинный язык (объектный код ), бывают двух типов: интерпретаторы и компиляторы.

Компилятор – это транслятор, который исходный текст программы переводит в машинный код . Если в тексте программы нет синтаксических ошибок, то машинный код будет создан. Но это, как правило, не работоспособный код, т.к. в этой программе не хватает подпрограмм стандартных функций, поэтому компилятор выдает промежуточный код, который называется объектным кодом и имеет расширение . obj .

Редактор связей (сборщик) – это программа, которая объединяет объектные модули отдельных частей программы и добавляет к ним стандартные модули подпрограмм стандартных функций (файлы с расширением . lib ), которые содержатся в библиотеках, поставляемых вместе с компилятором, в единую программу, готовую к исполнению, т.е. создает исполнимый . exe файл. Этот файл имеет самостоятельное значение и может работать под управлением той (или такой же) операционной системы, в которой он создан.

Интегрированные системы программирования

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

В современныхинтегрированных системах имеется еще один компонент – отладчик. Он позволяет анализировать работу программы по шагам во время ее выполнения, наблюдая, как меняются значения различных переменных.

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

Основные системы программирования

Наиболее популярные языки программирования Соответствующие им визуальные среды быстрого проектирования программ для Windows
Бейсик ( Basic ) – для освоения требует начальной подготовки (общеобразовательная школа) Microsoft Visual Basic
Паскаль ( Pascal ) – требует специальной подготовки Borland Delphi
Си++ (С++)- требует серьезной подготовки Microsoft Visual С++
Ява ( Java ) требует серьезной подготовки Java : Borland JBuilder

2. Структурное программирование

Основная идея структурного программирования состоит в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм программы был ясно виден из исходного текста. Следовательно, надо разбить программу на последовательность модулей, каждый из которых выполняет одно или несколько действий. Требование к модулю – чтобы его выполнение начиналось с первой команды и заканчивалось последней. Модульность – это основная характеристика структурного программирования. А для этого надо иметь средства для создания программы не только с помощью трех простых операторов, но и с помощью средств более точно отражающих конкретную структуру алгоритма.

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

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

Если a>bто

Вывод “Первое число больше”

Вывод “Второе число больше”

Алгоритм считается неструктурированным, если нет ступенчатой записи или если при создании программы использован оператор безусловного перехода GoTo – переход к метке , т. е. структурное программирование – это программирование без GoTo.


Например, рассмотрим 2 фрагмент программ:

Анализируя эти фрагменты, можно сказать, что они подготовлены не по правилам структурного программирования, т. к. в первом фрагменте программы отсутствует ступенчатая запись , а во втором есть переход к метке :

Нисходящее программирование

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

3. Чтение структурированных программ

Подпрограммы бывают двух видов: процедуры и функции. Процедуры просто выполняют последовательность операторов, а функции вычисляют значение и передают его в главную программу. Подпрограмма – процедура или подпрограмма – функция- это отдельный блок операторов, начинающийся с заголовка и заканчивающийся признаком конца процедуры или функции. Чтобы подпрограмма имела смысл ей надо получить какие-то значения, которые называются параметрами. Параметры, которые принимаются в подпрограмме, описываются в заголовке и называются формальными . Например,
Процедура Summa(a, b ) – это заголовок подпрограммы - процедуры, имя которой Summa, а в скобках указываются формальные параметры a и b .

Обращение из главной программы к процедуре осуществляется по имени подпрограммы-процедуры с перечнем в скобках параметров, которые ей передаются, например, CallSumma(x, y ) – означает обратиться к процедуре Summa и передать ей параметры x и y, которые называются фактическими парамет рами .

Подпрограмма - функция оформляется таким образом:
Функция Длина( a, b, c, d), где Длина – имя функции, а в скобках указаны формальные параметры. Подпрограмма–функция возвращает только одно значение, которое обязательно присваивается названию функции в теле подпрограммы–функции. Так как функция возвращает значение, то обращение к ней из основной программы может входить в выражение, как операнд.

При выполнении процедуры или функции формальные параметры временно заменяются на фактические .

Задача 1 . Составить на структурированном языке алгоритм вычисления периметра треугольника, если известны координаты его вершин (треугольник лежит на плоскости) .

Обозначим координаты вершин xA, yA, xB, yB, xC, yC и ввод их значений осуществим в главной программе. Пусть AB-расстояние между точками A и B, BC-между Bи C, AC-между A и С, а Р – периметр. Периметр вычислим по известной формуле Р=AB+BC+AC, а расстояние же между двумя точками вычислим по формуле: . Вычисление расстояния между двумя точками вынесем в подпрограмму-функцию, назовем ее Длина, а формальные аргументы подпрограммы – функции обозначим через x1, y1, x2, y2 . Тогда для вычисления AB, BC и AB надо три раза обратиться к подпрограмме-функции, передав ей значения фактических аргументов, сначала координаты, например, точек Aи B, затем Bи C, Aи C.

Составим подпрограмму-функцию:

Функция Длина(x1, y1, x2, y2)

Основная программа:

Ввод координат вершин треугольника xA, yA, xB, yB, xC, yC.

Задача 2. Дан массив целых чисел i >, где i=1,2,3,…,M, причем М=15. Программа вычисляет произведение сумм некоторых элементов этого массива. Какое алгебраическое выражение описывает работу программы? В программе введены следующие константы: G=1; W=12; T=8; L=15.

На заре компьютерной эры очень трудно было написать большую программу, потому что возможности компьютеров были ограничены. Ограничения проистекали из объема оперативной памяти, скорости считывания информации с вторичных носителей и быстродействия процессоров. В 60-70-е годы прошлого века эффективность применения компьютеров резко возросла, цены на них стали падать, а возможности ЭВМ увеличились. В результате стало выгодно, да и необходимо создавать все больше прикладных программ повышенной сложности. В качестве основных инструментов создания программных продуктов начали применяться алгоритмические языки высокого уровня. Эти языки расширили возможности отдельных программистов и групп разработчиков, что в свою очередь привело к увеличению уровня сложности программных систем.

Тогда же стали появляться компьютеры еще больших, поистине гигантских возможностей. Значение структурного подхода осталось прежним, но оказалось, что структурный подход не работает, если объем программы превышает приблизительно 100000 строк. В последнее время появились десятки методов, в большинстве которых устранены очевидные недостатки структурного проектирования. Большинство этих методов представляют собой вариации на одни и те же темы и их можно разделить на три основные группы:

метод структурного проектирования сверху вниз;

метод потоков данных;

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

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

Постановка задачи

Разработать программу на произвольную тему с использованием принципов объектно-ориентированного программирования. Отразить следующие этапы проектирования: анализ, проектирование, эволюция, модификация.

1 Анализ

Цель этапа анализа - максимально полное описание задачи. На этом этапе выполняется анализ предметной области задачи, объектная декомпозиция разрабатываемой системы и определяются важнейшие особенности поведения объектов (описание абстракций).

Для анализа задачи рассмотрим правила игры:

Игра идет летающей полкой.

Цель игры: не дать упасть мячику и разбить все кирпичи.

В начале игры игроку запускается мячик.

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

Если игрок не успевает поймать мячик полкой, он проигрывает.

Если разбиты все кирпичи, игрок выигрывает.

1.1 Объектная декомпозиция

Рисунок 1. Объектная декомпозиция игрового процесса

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

1.2 Описание абстракций

В результате объектной декомпозиции можно выделить следующие абстракции:

1.3 Структурная схема программного продукта

Структурная схема программного продукта приведена на рис. 6.

Рисунок 6. Структрурная схема программного продукта

2 Проектирование

логическое проектирование, при котором принимаемые решения практически не зависят от условий эксплуатации (операционной системы и используемого оборудования);

физическое проектирование, при котором приходится принимать во внимание указанные факторы.

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

Физическое проектирование включает объединение описаний Объектов в модули, выбор схемы их подключения (статическая или динамическая компоновка), определение способов взаимодействия с оборудованием, с операционной системой и/или другим программным обеспечением (например, базами данных, сетевыми программами), обеспечение синхронизации процессов для систем параллельной обработки и т.д.

2.1 Логическое проектирование

Из-за простоты проекта основные структуры объектов уже были подробно описаны в разделе описания абстракций.

Опишем реализацию основных алгоритмов:

Алгоритм полета мяча: мяч летит до тех пор, пока не встретится с препятствием, при этом его полет просчитывается заранее. Если мяч встречается с кирпичом, то кирпич уничтожается, а мяч отражается, также как и от планки или стенки. Если же мяч долетает до самого низа, не встретив планки, то игра считается проигранной. Игра считается выигранной, если разбиты все кирпичи.

Для равномерного полета мяча вместо использования таймера реализован поток.

2.2 Физическое проектирование

Проект реализован в среде Borland Delphi 7 и предназаначена для выполнения в ОС семейства Microsoft Windows.

В проект входят следующие модули:

XPBall.dpr – основной файл проекта.

Исходные тексты модулей приведены в приложении А.

3 Эволюция

4 Модификация

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

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

Для данного проекта реализуем изменения, описанные в эволюции.

Введем состояния игры для класса TEngine. Для этого вводим переменную TheEnd.

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

Как видно, изменения затронули только только внутреннюю реализацию класса TEngine, не затронув его внешний интерфейс.

Заключение

Список использованных источников

Буч Г. Объектно-ориентированный анализ и проектирование. М.: 1996.

Фёдоров А. Особенности программирования на Borland Pascal. Киев: “Диалектика”, 1994.

Гайсарян С.С. Объектно-ориентированные технологии проектирования прикладных программных систем. М.: ЦИТ. 1998.

Читайте также: