Файл: Анализ методов современного программирования (Методология программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.05.2023

Просмотров: 697

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

В концепцию модульного программирования входят следующие положения:

1) каждый модуль выполняет узкоспециализированную независимую функцию;

2) каждый модуль имеет единственную точку входа/выхода;

3) чем меньше размер модуля, тем лучше;

4) каждый модуль может быть создан отдельными программистами бригады и по возможности отдельно отлажен;

5) вся программа создается из модулей.

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

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

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

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

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

Большинство языков программирования позволяют выполнить модуль в виде подпрограммы. Подпрограмма не является самостоятельной программной единицей, поэтому она транслируется, а, следовательно, и отлаживается вместе с вызывающей ее основной программой[12].

Модульное программирование в языке программирования C++ поддерживается с помощью директив препроцессора, пространств имен, классов памяти, исключений и раздельной компиляции (строго говоря, раздельная компиляция не является элементом языка, а относится к его реализации)[13].

Далее рассмотрим, какие преимущества и недостатки дает модульное программирование.


Преимущества

– возможность разрабатывать модули с использованием различных языков программирования;

– модуль является естественной единицей локализации имен;

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

– возможность повторного использования разработанных модулей в других программах.

Недостатки:

– модули не являются совсем уж независимыми друг от друга: между ними существуют связи, то есть один модуль иногда может завязываться на переменные, константы и программный код из другого модуля;

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

– программа-компилятор, с помощью которой делается сборка программы, не видит сразу всех модулей и не может проконтролировать, установлены ли правильно связи между модулями[14].

Несмотря на описанные недостатки, преимущества модульного программирования настолько огромны, что сейчас оно является основным способом разработки сложного программного обеспечения[15].

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

Следующий метод разработки программ – это структурный метод.

Структурное программирование – это методология программирования, которая основана на системном подходе к анализу, проектированию и реализации программного обеспечения. Если вернуться в историю, то началом использования данной методологии является 70-е года прошлого века в компании IBM, в их разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор[16].

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

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

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


Согласно парадигмы структурного программирования:

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

о последовательное исполнение – это есть однократное выполнение операций в том порядке, в котором они записаны в тексте программы,

о ветвление - однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;

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

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

3. Разработка программы ведется пошагово, причем методом «снизу-вверх».

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

Структурное программирование делает текст программы более понятным – алгоритм решения ясно виден из исходного текста. Структурное программирование называют программированием без GOTO. Его методология основана на использовании подпрограмм и независимых структур данных, объединяющих связанные между собой совокупности данных. Подпрограммы позволяют заменять в тексте программ упорядоченные блоки команд, отчего программный код становится более компактным. Структурный подход обеспечивает создание более понятных и легко читаемых программ, упрощает их тестирование и отладку[17].

Разработка программы в структурном программировании ведётся пошагово, методом «сверху вниз».

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

Ярким представителем структурного программирования является язык программирования СИ[18].


Следует отметить следующие достоинства структурного программирования:

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

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

– уменьшается время и стоимость программной разработки;

– улучшается читабельность программ.

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

– программирование должно осуществляться сверху вниз;

– весь проект должен быть разбит на модули (подпрограммы) с одним входом и одним выходом;

– подпрограмма должна допускать только три основные структуры – последовательное выполнение, ветвление (if, case) и повторение (for, while, repeat).

– недопустим оператор передачи управления в любую точку программы (goto);

– документация должна создаваться одновременно с программированием в виде комментариев к программе.

Структурное программирование эффективно используется для решения различных математических задач, имеющих алгоритмический характер[19].

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

  • легкость повторного использования фрагментов кода, оформленных как процедуры (например, в библиотеках);
  • легкость прослеживания логики программы;
  • возможность сопровождения программного продукта через длительное время после написания кода или кем-то, кроме его разработчика[20].

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

Глава 3 Объектно-ориентированный подход в разработке программ

3.1 Объектно-ориентированное программирование


Объектно-ориентированное программирование (ООП)- это парадигма (совокупность понятий и идей) программирования, в рамках которой «во главу угла» ставят понятия объектов и классов. Сейчас ООП так или иначе присутствует во всех языках, поэтому понимание его основ просто необходимо для всех, кто собирается заняться программированием. Стоит сразу определить базовые понятия класса и объекта:

Класс - это шаблон, описание ещё не созданного объекта. Класс содержит данные, которые описывают строение объекта и его возможности, методы работы с ним;

Объект - экземпляр класса. То, что «рождено» по «чертежу», то есть по описанию из класса. В качестве примера объекта и класса можно привести технический чертёж для изготовления детали - это класс. Выточенная же на станке по размерам и указаниям из чертежа деталь - объект.

Появление объектно-ориентированного программирования стало результатом возросших требований к функционалу программ, когда описывать объект приходилось раз за разом в разных участках кода. Тогда и было введено понятие класса, параметры которого задавались единожды, а после в коде оставлялись только ссылки на класс, чтобы код самостоятельно «собрал» объект[21].

В качестве более живого примера объектно-ориентированного программирования можно привести мастерскую, где есть старший слесарь (программист) и ученики (разные участки кода). При устаревших парадигмах программирования старшему слесарю пришлось бы сначала объяснить ученику №0, как вырезать деталь (создать объект), затем ученику №1 то же самое, потом ученику №2 и так далее. ООП же даёт слесарю целую пачку бесконечных подробных чертежей (классов) деталей, которые он может раздавать ученикам вместо повторного объяснения (заведения описания объекта). Как нетрудно догадаться, это ускоряет работу и позволяет старшему слесарю уделить внимание более важным проблемам мастерской.

3.2 Основные понятия объектно-ориентированного программирования

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