Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Алгоритмизация как обязательный этап разработки программы (Характеристика процесса разработки программы)

Содержание:

ВВЕДЕНИЕ

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

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

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

Цель данного исследования – характеристика алгоритмизации как обязательного этапа разработки программы.

Для достижения цели необходимо выполнить задачи:

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

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

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

1. Разработка программы. Описание и этапы

1.1. Характеристика процесса разработки программы

Программа – упорядоченная последовательность команд (инструкций) компьютеру для решения задачи [12]. Конечная цель любой компьютерной программы – управление аппаратными средствами.

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

  • ввод данных;
  • вычисления, действия;
  • ветвление;
  • условный и безусловный переход;
  • цикл;
  • вывод результатов;
  • массивы;
  • подпрограммы и т.д. [3]

Программа – это последовательность инструкций (команд), описывающая алгоритм решения с помощью компьютера соответствующей задачи, для реализации которой эта программа была разработана [7].

Для разработки программ используются специальные языки. Программа может содержать инструкции, написанные на языках программирования высокого уровня, которые позволяют записать алгоритмы в удобной для понимания человеком форме, приближенной к естественным языкам (исходный код), или последовательность машинных команд (инструкций, «понятных» компьютеру, на котором данная программа должна выполняться).

Готовыми к выполнению являются только программы, содержащие инструкции в двоичном машинном коде, – программы на языке конкретного компьютера (компьютера с процессором определенной модели или семейства), только такие программы можно загрузить в память компьютера для выполнения. Таким образом, программы в машинном коде не являются «переносимыми», их можно выполнять только на компьютерах с общей архитектурой, системой команд, поддерживаемой этими компьютерами, т.е. одинаковым машинным языком [9].

Разработка программного обеспечения (далее – ПО) – деятельность по созданию нового программного обеспечения. Как и другие традиционные инженерные дисциплины, разработка программного обеспечения имеет дело с проблемами качества, стоимости и надёжности. Некоторые программы содержат миллионы строк исходного кода, которые, как ожидается, должны правильно исполняться в изменяющихся условиях. Сложность ПО сравнима со сложностью наиболее сложных из современных машин, таких как самолёты.

Процесс создания ПО – множество различных видов деятельности, методов, методик и шагов, используемых для разработки и эволюции ПО и связанных с ним продуктов (проектных планов, документации, программного кода, тестов, пользовательской документации и пр.) [11].

На сегодняшний день не существует универсального процесса разработки ПО – набора методик, правил и предписаний, подходящих для обеспечения любого вида, для любых компаний, для команд любой национальности. Каждый текущий процесс разработки, осуществляемый некоторой командой в рамках определенного проекта, имеет большое количество особенностей и индивидуальностей. Однако целесообразно перед началом проекта спланировать процесс работы, определив роли и обязанности в команде, рабочие продукты (промежуточные и финальные), порядок участия в их разработке членов команды и т.д. [1]

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

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

Говоря о моделях процессов, необходимо различать фазы и виды деятельности. Фаза – это определенный этап процесса, имеющий начало, конец и выходной результат. Например, фаза проверки осуществимости проекта, сдачи проекта и т.д. Фазы следуют друг за другом в линейном порядке, характеризуются предоставлением отчетности заказчику и, часто, выплатой денег за выполненную часть работы [2].

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

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

В рамках одной фазы может выполняться много различных видов деятельности. Кроме того, один вид деятельности может выполняться на разных фазах – например, тестирование: на фазе анализа и проектирования можно писать тесты и налаживать тестовое окружение, при разработке и перед сдачей производить, собственно, само тестирование. На настоящий момент для сложного программного обеспечения используются многомерные модели процесса, в которых отделение фаз от видов деятельности существенно облегчает управление разработкой ПО [2]. Фазы и виды деятельности разными способами соединяются в различных моделях разработки программного обеспечения.

Водопадная модель была предложена в 1970 году Винстоном Ройсом. Фактически, впервые в процессе разработки ПО были выделены различные шаги разработки и поколеблены примитивные представления о разработке ПО в виде анализа системы и ее кодирования [3].

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

https://www.intuit.ru/EDI/28_09_18_11/1538086734-1664/tutorial/520/objects/2/files/02-01.jpg

Рисунок 1 Водопадная модель разработки ПО

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

Наконец, в рамках этой модели было введено прототипирование, то есть предлагалось разрабатывать систему дважды, чтобы уменьшить риски разработки. Первая версия – прототип – позволяет увидеть основные риски, и обосновано принять главные архитектурные решения. На создание прототипа отводилось до одной трети времени всей разработки [3].

В 70–80 годах прошлого века эта модель прочно укоренилась в разработке ПО в силу своей простоты и сходности с моделями разработки иных, не программных систем. В дальнейшем, в связи с развитием программной инженерии и осознанием итеративного характера процесса разработки ПО эта модель активно критиковалась, практически каждым автором соответствующих статей и учебников. Стало общепринятым мнение, что она не отражает особенностей разработки ПО [3]. Недостатками водопадной модели являются:

  • отождествление фаз и видов деятельности, что влечет потерю гибкости разработки, в частности, трудности поддержки итеративного процесса разработки;
  • требование полного окончания фазы–деятельности, закрепление результатов в виде подробного исходного документа (технического задания, проектной спецификации); однако опыт разработки ПО показывает, что невозможно полностью завершить разработку требований, дизайн системы и т.д. – все это подвержено изменениям; и причины тут не только в том, что подвижно окружение проекта, но и в том, что заранее не удается точно определить и сформулировать многие решения, они проясняются и уточняются лишь впоследствии;
  • интеграция всех результатов разработки происходит в конце, вследствие чего интеграционные проблемы дают о себе знать слишком поздно;
  • пользователи и заказчик не могут ознакомиться с вариантами системы во время разработки, и видят результат только в самом конце; тем самым, они не могут повлиять на процесс создания системы, и поэтому увеличиваются риски непонимания между разработчиками и пользователями/заказчиком;
  • модель неустойчива к сбоям в финансировании проекта или перераспределению денежных средств, начатая разработка, фактически, не имеет альтернатив «по ходу дела».

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

Спиральная модель была предложена Бэри Боемом в 1988 году для преодоления недостатков водопадной модели, прежде всего, для лучшего управления рисками. Согласно этой модели, разработка продукта осуществляется по спирали, каждый виток которой является определенной фазой разработки. В отличие от водопадной модели в спиральной нет предопределенного и обязательного набора витков, каждый виток может стать последним при разработке системы, при его завершении составляются планы следующего витка. Наконец, виток является именно фазой, а не видом деятельности, как в водопадной модели, в его рамках может осуществляться много различных видов деятельности, то есть модель является двумерной [7].

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

Каждый виток имеет следующую структуру (секторы):

  • определение целей, ограничений и альтернатив проекта;
  • оценка альтернатив, оценка и разрешение рисков; возможно использование прототипирования (в том числе создание серии прототипов), симуляция системы, визуальное моделирование и анализ спецификаций; фокусировка на самых рисковых частях проекта;
  • разработка и тестирование – здесь возможна водопадная модель или использование иных моделей и методов разработки ПО;
  • планирование следующих итераций – анализируются результаты, планы и ресурсы на последующую разработку, принимается (или не принимается) решение о новом витке; анализируется, имеет ли смысл продолжать разрабатывать систему или нет; разработку можно и приостановить, например, из–за сбоев в финансировании; спиральная модель позволяет сделать это корректно [7].

Схематично спиральная модель разработки программы может быть изображена следующим образом (рисунок 2):

Картинки по запросу спиральная модель разработки по

Рисунок 2 Спиральная модель разработки ПО

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

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

Спиральная модель не нашла широкого применения в индустрии и важна, скорее в историко–методологическом плане: она является первой итеративной моделью, имеет красивую метафору – спираль, – и, подобно водопадной модели, использовалась в дальнейшем при создании других моделей процесса и методологий разработки ПО.

1.2. Этапы разработки программы

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

  1. Постановка задачи – выполняется специалистом в предметной области на естественном языке. Необходимо определить цель задачи, ее содержание и общий подход к решению. Возможно, что задача решается точно (аналитически), и без компьютера можно обойтись. Уже на этапе постановки надо учитывать эффективность алгоритма решения задачи на ЭВМ, ограничения, накладываемые аппаратным и программным обеспечением (АО и ПО).
  2. Анализ задачи и моделирование – определяются исходные данные и результат, выявляются ограничения на их значения, выполняется формализованное описание задачи и построение (выбор) математической модели, пригодной для решения на компьютере.
  3. Разработка или выбор алгоритма решения задачи – выполняется на основе ее математического описания. Многие задачи можно решить различными способами. Программист должен выбрать оптимальное решение. Неточности в постановке, анализе задачи или разработке алгоритма могут привести к скрытой ошибке – программист получит неверный результат, считая его правильным.
  4. Проектирование общей структуры программы – формируется модель решения с последующей детализацией и разбивкой на подпрограммы, определяется «архитектура» программы, способ хранения информации (набор переменных, массивов и т. п.).
  5. Кодирование – запись алгоритма на языке программирования. Современные системы программирования позволяют ускорить процесс разработки программы, автоматически создавая часть ее текста, однако творческая работа по–прежнему лежит на программисте. Для успешной реализации целей проекта программисту необходимо использовать методы структурного программирования.
  6. Отладка и тестирование программы. Под отладкой понимается устранение ошибок в программе. Тестирование позволяет вести их поиск и, в конечном счете, убедиться в том, что полностью отлаженная программа дает правильный результат. Для этого разрабатывается система тестов – специально подобранных контрольных примеров с такими наборами па­раметров, для которых решение задачи известно. Тестирование должно охватывать все возможные ветвления в программе, т. е. проверять все ее инструкции, и включать такие исходные данные, для которых решение невозможно. Проверка особых, исключительных ситуаций необходима для анализа корректности. Например, программа должна отказать клиенту банка в просьбе выдать сумму, отсутствующую на его счете. В ответственных проектах большое внимание уделяется так называемой «защите от дурака» подразумевающей устойчивость программы к неумелому обращению пользователя. Использование специальных программ – отладчиков, которые позволяют выполнять программу по отдельным шагам, просматривая при этом значения переменных, значительно упрощает этот этап [18].
  7. Анализ результатов – если программа выполняет моделирование какого–либо известного процесса, следует сопоставить результаты вычислений с результатами наблюдений. В случае существенного расхождения необ­ходимо изменить модель.
  8. Публикация результатов работы, передача заказчику для эксплуатации.
  9. Сопровождение программы – включает консультации представителей заказчика по работе с программой и обучение персонала. Недостатки и ошибки, замеченные в процессе эксплуатации, должны устраняться [6].

Приведенная последовательность является относительной и может быть ограниченно изменена в соответствии с требованиями выполняемого проекта.

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

2. Алгоритмизация в процессе разработки программы

2.1. Алгоритм. Понятие, характеристики

Алгоритмом называется точное и понятное предписание исполнителю совершить последовательность действий, направленных на решение поставленной задачи. Слово «алгоритм» происходит от имени математика Аль Хорезми, который сформулировал правила выполнения арифметических действий [5]. Первоначально под алгоритмом понимали только правила выполнения четырех арифметических действий над числами. В дальнейшем это понятие стали использовать вообще для обозначения последовательности действий, приводящих к решению любой поставленной задачи. Говоря об алгоритме вычислительного процесса, необходимо понимать, что объектами, к которым применялся алгоритм, являются данные. Алгоритм решения вычислительной задачи представляет собой совокупность правил преобразования исходных данных в результатные [3].

Относящаяся к алгоритму информация и сам алгоритм должны быть представлены на некотором языке. Описание алгоритма зависит от исполнителя – человека или технического средства (ЭВМ). Запись алгоритма для человека может иметь обычный текстуальный вид. Для повышения однозначности словесного описания прибегают к структуризации текста в соответствии с шагами алгоритмического процесса. Когда нужна высокая наглядность, применяют графическую форму записи алгоритмов, например в виде блок–схем. Текстуальная и графическая форма представления предназначена для восприятия человеком в процессе программирования или изучения алгоритма, но эти формы совсем не пригодны для выполнения программ на ЭВМ. ЭВМ воспринимает только определенные конструкции (команды), состав которых задан для каждого типа машины [8]. Алгоритм для ЭВМ следует представить на языке машины.

Основными свойствами алгоритма являются:

  • детерминированность (определенность). Предполагает получение однозначного результата вычислительного процecca при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
  • результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
  • массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
  • дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений [22].

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

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

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

Блок–схемой называется графическое изображение логической структуры алгоритма, в котором каждый этап процесса обработки информации представляется в виде геометрических символов (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций. Перечень символов, их наименование, отображаемые ими функции, форма и размеры определяются ГОСТами [2].

При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов:

  • линейный;
  • ветвящийся;
  • циклический [19].

Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов. Пример линейного алгоритма представлен в таблице 1 [9].

Таблица 1

Пример линейного алгоритма

Блок–схема

Элементы программы

https://sites.google.com/site/415ict/_/rsrc/1472850923201/textbooks/prog-9/02-linejnyj-algoritm/1.png?height=320&width=217

1. Заголовок

2. Объявление переменных

3. Начало блока операторов

4. Ввод исходных данных

5. Вычисление по формуле

6. Вывод результата

7. Конец блока операторов

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

Таблица 2

Пример ветвящегося алгоритма

Блок–схема

Элементы программы

https://sites.google.com/site/415ict/_/rsrc/1472850924702/textbooks/prog-9/03-razvetvlennyj-algoritm/1.png

1. Заголовок

2. Объявление переменных

3. Начало блока операторов

4. Ввод исходных данных

5. Вычисление по формуле

6. Объявление условия

7. Проверка условия

8. Вывод результата

9. Конец блока операторов

Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла – тогда речь идет о цикле с предусловием, или в конце – тогда это цикл с постусловием. Наглядно циклические алгоритмы рассмотрены в таблице 3 [9].

Таблица 3

Пример циклического алгоритма

Задается количество повторений

Задается условие продолжения/окончания повторений

Цикл с параметром

Цикл с предусловием

Цикл с постусловием

https://sites.google.com/site/415ict/_/rsrc/1472850925422/textbooks/prog-9/04-repetition/1.png?height=168&width=200

https://sites.google.com/site/415ict/_/rsrc/1472850921664/textbooks/prog-9/04-repetition/2.png?height=169&width=200

https://sites.google.com/site/415ict/_/rsrc/1472850923623/textbooks/prog-9/04-repetition/3.png?height=148&width=200

...

2. Определение параметра проверки

3.Выполнение операций в теле цикла

...

...

2. Проверка выполнения условия

3.Выполнение операций в теле цикла/возврат к проверке условия

...

...

2. Выполнение операций в теле цикла

3.Проверка выполнения условия/возврат к операциям в теле цикла

...

Непосредственная запись алгоритма на языке машины нерациональна, а естественный язык не подходит для ЭВМ. Поэтому появились языки программирования, которые:

  • удовлетворяют требованиям однозначности представления алгоритма;
  • более удобны для человека;
  • непосредственно «понятны» процессору ЭВМ.

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

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

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

Для изучения основ алгоритмизации применяется так называемый Русский алгоритмический язык (школьный алгоритмический язык), использующий понятные школьнику слова на русском языке.

Алголо–подобный алгоритмический язык с русским синтаксисом был введён в употребление академиком А. П. Ершовым в середине 1980–х годов, в качестве основы для «безмашинного» курса информатики [16].

Основные служебные слова алгоритмического языка:

Описание алгоритма:

  • алг (алгоритм);
  • арг (аргумент);
  • рез (результат);
  • нач (начало) – начало алгоритма;
  • кон (конец) – конец алгоритма;
  • дано – исходные данные в произвольной форме;
  • надо – цель алгоритма;
  • утв.

Типы данных:

  • цел (целый);
  • вещ (вещественный);
  • сим (символьный);
  • лит (литера) – строка;
  • лог (логический);
  • таб (таблица) – для обозначения массива;
  • длин (длина) – количество элементов массива.

Обозначение условий:

  • если;
  • то;
  • иначе;
  • все;
  • выбор;
  • при;
  • знач.

Обозначение циклов:

  • нц (начало цикла);
  • кц (конец цикла);
  • пока;
  • для;
  • от;
  • до;
  • шаг.

Логические функции и значения для составления выражений:

  • и;
  • или;
  • не;
  • да;
  • нет;
  • Ввод–вывод;
  • ввод;
  • вывод [16].

Основными свойствами алгоритма являются:

  • детерминированность (определенность). Предполагает получение однозначного результата вычислительного процecca при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
  • результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
  • массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
  • дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений [15].

2.2. Алгоритмизация как этап разработки программы

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

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

ЭВМ непосредственно выполняет программы на машинном языке программирования данной ЭВМ. При этом программа представляет собой набор отдельных команд компьютера. Эти команды являются достаточно «простыми», например, сложение, умножение, сравнение или пересылка отдельных данных. Каждая команда содержит в себе сведения о том, какая операция должна быть выполнена (код операции), с какими операндами (адреса данных или непосредственно сами данные) выполняются вычисления и куда (адрес) должен быть помещен результат [13].

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

Наибольшее распространение благодаря своей наглядности получил графический (блок–схемный) способ записи алгоритмов. Блок–схемой называется графическое изображение логической структуры алгоритма, в котором каждый этап процесса обработки информации представляется в виде геометрических символов (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций. Перечень символов, их наименование, отображаемые ими функции, форма и размеры определяются ГОСТами. Основные блоки для составления алгоритмов в процессе разработки программы представлены в таблице 1 [8].

Таблица 1

Основные блоки для составления алгоритмов

Название

Обозначение

Описание

Терминатор

Терминатор

Начало, конец, прерывание процесса обработки данных или выполнения программы

Процесс

Процесс

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

Предопределенный процесс

Предопределенный процесс

Использование ранее созданных и отдельно описанных алгоритмов или программ

Ввод–вывод

Ввод-вывод

Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод)

Решение

Решение (условие)

Выбор направления выполнения алгоритма или программы в зависимости от некоторых переменных условий
Блок решения имеет 1 вход и по крайней мере 2 выхода

Границы цикла

Начало циклаНачало цикла

Конец циклаКонец цикла

Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один идентификатор.

Условия для инициализации, приращения, завершения и т. д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие.

Подготовка

Модификатор

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

Комментарий

Комментарий

Пояснение к элементу схемы (или линии связи)

Соединитель

Соединитель

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

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

ЗАКЛЮЧЕНИЕ

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

  • охарактеризован процесс разработки программы в целом;
  • проанализированы этапы разработки программного обеспечения;
  • рассмотрено понятие и основные характеристики алгоритма;
  • рассмотрена алгоритмизация со стороны обязательного этапа разработки программы.

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

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

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Агафонов, В. Н. Логическое программирование / В. Н. Агафонов. – М.: Форум, 2016. – 718 c.
  2. Гагарина, Л. Г. Введение в архитектуру программного обеспечения. Учебное пособие / Л. Г. Гагарина, А. Р. Федоров, П. А. Федоров. – М.: Инфра–М, Форум, 2016. – 320 c.
  3. Голицына, О. Л. Основы алгоритмизации и программирования / О. Л. Голицына, И.И. Попов. – М.: Форум, 2015. – 432 c.
  4. Гончаров, В. А. Методы оптимизации. Учебное пособие / В. А. Гончаров. – М.: Юрайт, 2015. – 192 c.
  5. Дегтерева, Р. Необычные эффекты алгоритмизации / Р. Дегтерева. – М.: LAP Lambert Academic Publishing, 2017. – 140 c.
  6. Добрынин, В. Ю. Технологии компонентного программирования / В. Ю. Добрынин. – Москва: Гостехиздат, 2014. – 216 c.
  7. Долгов, А. И. Алгоритмизация прикладных задач / А. И. Долгов. – М.: Флинта, 2017. – 136 c.
  8. Зыков, С. В. Основы современного программирования / С. В. Зыков. – М.: Горячая линия – Телеком, 2016. – 448 c.
  9. Карпенко, А. П. Современные алгоритмы оптимизации. Учебное пособие / А. П. Карпенко. – М.: МГТУ им. Н. Э. Баумана, 2014. – 448 c.
  10. Кнут, Д. Э. Искусство программирования (Том 1. Основные алгоритмы) / Д. Э. Кнут. – М.: Мир, 2017. – 882 c.
  11. Колдаев, В. Д. Основы алгоритмизации и программирования / В. Д. Колдаев. – М.: Форум, Инфра–М, 2018. – 416 c.
  12. Комлев, Н. Ю. Объектно Ориентированное Программирование. Хорошая книга для Хороших Людей / Н. Ю. Комлев. – М.: Солон–Пресс, 2014. – 892 c.
  13. Корниенко, М. М. Информатика. Основы алгоритмизации и программирования. Теоретические основы, примеры и задания, практические работы / М.М. Корниенко. – М.: Ранок, 2018. – 259 c.
  14. Лукин, В. В. Технология разработки программного обеспечения. Учебное пособие / В. В. Лукин, В. Н. Лукин, Т. В. Лукин. – Москва: Гостехиздат, 2015. – 286 c.
  15. Милов, А. В. Основы программирования в задачах и примерах / А. В. Милов. – М.: Фолио, 2017. – 400 c.
  16. Новичков, В. С. Алгоритмизация и программирование на Турбо Паскале. Гриф УМО ВУЗов России / В. С. Новичков. – М.: Горячая линия – Телеком, 2014. – 967 c.
  17. Панюкова, Т. А. Проектирование программных средств / Т. А. Панюкова. – Москва: Гостехиздат, 2017. – 364 c.
  18. Потопахин, В. В. Искусство алгоритмизации. Учебное пособие / В. В. Потопахин. – М.: ДМК Пресс, 2018. – 328 c.
  19. Рудаков, А. В. Технология разработки программных продуктов. Учебник / А. В. Рудаков. – М.: Академия, 2015. – 208 c.
  20. Санников, Е. В. Курс практического программирования в Delphi. Объектно–ориентированное программирование / Е. В. Санников. – М.: Солон–Пресс, 2017. – 188 c.
  21. Сафонов, В. О. Аспектно–ориентированное программирование / В. О. Сафонов. – Москва: Высшая школа, 2016. – 104 c.
  22. Семакин, И. Г. Основы алгоритмизации и программирования / И. Г. Семакин, А. П. Шестаков. – М.: Academia, 2017. – 304 c.
  23. Трофимов, В. В. Алгоритмизация и программирование. Учебник для академического бакалавриата / В. В. Трофимов. – М.: Юрайт, 2017. – 315 c
  24. Фалина, И. Н. Алгоритмизация и программирование (+ CD–ROM) / И. Н. Фалина и др. – М.: КУДИЦ–Пресс, 2018. – 280 c.
  25. Хорев, П. Б. Объектно–ориентированное программирование / П. Б. Хорев. – М.: Academia, 2017. – 448 c.