Средства создания программ доклад

Обновлено: 04.07.2024

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

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

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

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

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

Так сначала появились текстовые редакторы, ассемблеры и компоновщики, а потом компиляторы и интерпретаторы.

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

Где создаются программы

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

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

  1. Редактор исходного кода. Это текстовый редактор, который от обычных редакторов отличается возможностью подсветки синтаксиса. Подсветка синтаксиса - это выделение ключевых слов и других важных элементов языка программирования цветом и/или шрифтом. Конечно, для создания программ можно использовать и обычный текстовый редактор.
  2. Компилятор (или интерпретатор). Специальная программа, которая преобразует исходные коды в готовую программу - исполняемый файл. В операционных системах Windows такой файл обычно имеет расширение EXE.
  3. Отладчик. Это специальная программа, которая помогает искать ошибки в исходных кодах.

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

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

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

Дополнительную информацию о средствах разработки можно найти здесь.

Обзоры популярных (и не очень) средств разработки разных времён можно найти здесь:

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

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

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

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

  1. Проектирование приложения.
  2. Реализация программного кода приложения.
  3. Тестирование приложения.

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

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

  1. Анализ требований.
  2. Разработка архитектуры будущего программного обеспечения.
  3. Разработка устройств основных компонент программного обеспечения.
  4. Разработка макетов Пользовательских интерфейсов.
  • BPMN (Vision 2003 + BPMN, AcuaLogic BPMN, Eclipse, Sybase Power Designer);
  • блок-схемы (Vision 2003 и многие другие);
  • ER-диаграмы (Visio 2003, ERWin, Sybase Power Designer и многие другие);
  • UML-диаграмы (Sybase Power Designer, Rational Rose и многие другие);
  • макеты, мат-модели и т.д.

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

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

  • целевая платформа;
  • гибкость языка;
  • время исполнения проекта;
  • производительность;
  • поддержка и сообщество.

Самым важным фактором является платформа, на которой программа будет работать. Рассмотрим для примера Java™ и C. Если программа написана на C и должна работать на машинах с Windows® и Linux®, потребуются компиляторы для платформ и два разных исполняемых файла.

Аналогичный аргумент применим и для Web-сайтов. Они должны выглядеть и работать одинаково во всех браузерах. Использование тегов CSS3 и HTML5 без проверки совместимости с браузерами приведет к разному отображению и поведению сайта в разных браузерах.

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

  1. Можно ли использовать новую функциональность без подключения новой библиотеки?
  2. Если нет, доступна ли эта функциональность в библиотеке языка?
  3. Если эта функциональность не встроена в язык и не доступна в библиотеке, какие усилия нужно приложить для ее создания с нуля?

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

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

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

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

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

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

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

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

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

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

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

В группе универсальных языков высокого уровня безусловным лидером на сегодня является язык С (вместе с C++). Действительно различные версии С и C++ имеют целый ряд очень существенных достоинств:

  • многоплатформенность - для всех используемых в настоящее время платформ существуют компиляторы с языка С и C++;
  • наличие операторов, реализующих основные структурные алгоритми¬ческие конструкции (условную обработку, все виды циклов);
  • возможность программирования на низком (системном) уровне с использованием адресов оперативной памяти;
  • огромные библиотеки подпрограмм и классов.

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

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

Альтернативой С и C++ среди универсальных языков программирования, используемых для создания прикладного программного обеспечения, на сегодня является Pascal, компиляторы которого в силу четкого синтаксиса обнаруживают помимо синтаксических и большое количество семантических ошибок. Версия Object Pascal, использованная в среде Delphi, сопровождается профессиональными библиотеками классов, упрощающими ведение больших разработок, в том числе и требующих использования баз данных, что делает Delphi достаточно эффективной средой для создания приложений Windows.

Кроме этих языков к группе универсальных принадлежат также Basic, Modula, Ada и некоторые другие. Каждый из указанных языков, так же, как C++ и Pascal, имеет свои особенности и, соответственно, свою область применения.

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

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

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

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

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

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

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

Наиболее часто используемыми являются визуальные среды Delphi, C++ Builder фирмы Borland (Inprise Corporation), Visual C++, Visual Basic фирмы Microsoft, Visual Ada фирмы IBM и др.

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

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

  1. Тестирование на отказ и восстановление.
  2. Функциональное тестирование.
  3. Тестирование безопасности.
  4. Тестирование взаимодействия.
  5. Тестирование процесса установки.
  6. Тестирование удобства пользования.
  7. Конфигурационное тестирование
  8. Нагрузочное тестирование.

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

  • средства анализа кода, профилирования (Code Wizard – ParaSoft, Purify – Rational Softawre. Test Coverage – Semantic и т.д.);
  • средства для тестирования функциональности (TEST – Parasoft, QACenter – Compuware, Borland SilkTest и т.д.);
  • средства для тестирования производительности (QACenter Performance – Compuware и т.д).

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

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

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

Программы, работающие на компьютере, можно разделить на три категории:

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

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

- вспомогательное ПО (инструментальные системы и утилиты)

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

Для работы на компьютере разработаны и используются сотни тысяч различных прикладных программ для различных применений. Наиболее широко применяются программы:

· подготовки текстов (документов) на компьютере – редакторы текстов;

· подготовки документов типографского качества – издательские системы;

· обработки табличных данных – табличные процессоры;

· обработки массивов информации – системы управления базами данных..

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

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

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

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

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

Раздел I. Разработка программ для ЭВМ

I.1 Этапы планирования программы

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

- математическое описание и выбор метода;

- разработка алгоритма решения;

- тестирование и отладка программы;

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

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

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

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

Четвертый этап – составление программы. На этом этапе производится перевод описания алгоритма на один из доступных для ЭВМ языков описания.

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

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

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

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

I.2 Понятие и особенности алгоритмов

В настоящее время понятие алгоритма трактуется шире. Это понятие применимо ко всем областям человеческой деятельности.

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

· поездка в институт;

· ремонт телевизора (по инструкции);

· поиск пропавшей вещи;

· выращивание растений на участке и т.п.

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

Любой алгоритм обладает следующими свойствами:

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

Массовость алгоритма предполагает возможность варьирования исходных данных в некоторых пределах. Это свойство определяет пригодность использования алгоритма для решения множества конкретных задач определенного класса.

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

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

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

· графический и др.

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

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

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






- ввод / вывод






- подпрограмма

Рис. 1. Основные графические обозначения блоков программ.

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

Приведем пример: математическая постановка задачи - задано квадратное уравнение:


,


где , b, c – некоторые параметры. Вычислить его действительные корни.


;

Если D³0, то уравнение имеет 2 действительных корня


.

Если D ++ , Турбо С. Эти языки являются результатом попытки объединить возможности ассемблера со встроенными структурами данных.

Класс универсальных языков программирования представлен наиболее широко: Бейсик, Фортран, Паскаль и др.

Исторически одним из самых распространенных языков стал Бейсик. Он прост в освоении и использовании. Написать на этом языке программу в 20-30 строк и получить результат можно за несколько минут. Для различных типов ПК разработаны различные версии языка Бейсик.

Паскаль является одним из самых распространенных, хотя он и создавался как учебный. Использование в структуре языка специального кода позволило в 4-5 раз уменьшить длину текста программы и в 4-5 раз увеличить быстродействие программы. Версия Паскаля для ПК – Турбо-Паскаль – характеризуется такими важными особенностями, как полноэкранное редактирование и управление, графика, звуковое сопровождение и развитые связи с DOS. Система программирования на Турбо-Паскале является резидентной программой. Это позволяет пользователю вводить тексты программ и немедленно их выполнять, не тратя времени на компилирование.

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

Фирмой IBM в развитие идей Фортрана, Алгола и Кобола был предложен язык PL/1, который получил наибольшее распространение на больших машинах. PL/1 разрабатывался как универсальный язык программирования, поэтому он располагает большим набором средств обработки цифровой и текстовой информации. Однако эти достоинства делают его весьма сложным для обучения и использования.

Класс проблемно-ориентированных языков программирования представлен языками Лого, РПГ и системой программирования GPSS. Язык Лого был создан с целью обучения школьников основам алгоритмического мышления и программирования. Лого – диалоговый процедурный язык, реализованный на основе интерпретатора с возможностью работы со списками и на их основе с текстами, оснащенными развитыми графическими средствами, которые доступны для детского восприятия. Этот язык реализован в большинстве ПК, применяемых в школах.

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

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

В последние годы развивается объектно-ориентированный подход к программированию. Наиболее полно он реализован в языках Форт и СМОЛТОК. Форт сочетает в себе свойства операционной системы, интерпретатора и компилятора одновременно. Основной чертой языка является его открытость. Программист может легко добавлять новые операции, типы данных и определения основного языка. Форт позволяет поддерживать многозадачный режим работы, использует принцип одновременного доступа программ. К объектно-ориентированным средам разработки программ можно отнести Delphi, Visual Basic, Visual FoxPro.

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

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

1. назначение разрабатываемой программы;

2. время выполнения программы;

3. ожидаемый размер программы – хватит ли объема памяти?

4. необходимость сопряжения программ с другими пакетами или программами;

5. возможность и необходимость переноса программы на другие типы компьютеров;

6. основные типы данных, с которыми будет работать программа;

7. характер и уровень использования в программе аппаратных средств (дисплея, клавиатуры, НМД и др.);

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

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

Рассмотрим идею структурного и объектно-ориентированного программирования с использованием языка Pascal.

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

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

1. разделения некоторой большой общей задачи на несколько меньших по объему и сложности частных задач;

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

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

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

Структура процедуры, функции:

Раздел объявлений и соглашений
PROCEDURE (FUNCTION) Имя процедуры (функции) со списком параметров;
LABEL Подраздел объявления локальных меток;
CONST Подраздел объявления локальных констант;
TYPE Подраздел объявления локальных типов;
VAR Подраздел объявления локальных переменных;
Раздел вложенных процедур и функций
PROCEDURE (FUNCTION) Имя вложенной процедуры (функции)
LABEL Подраздел объявления локальных меток;
CONST Подраздел объявления локальных констант;
TYPE Подраздел объявления локальных типов;
VAR Подраздел объявления локальных переменных;
BEGIN
Раздел основного блока процедуры или функции
END;

Непосредственно текст процедуры располагается в разделе объявлений и соглашений основной программы перед оператором BEGIN основной программы. Завершается описание процедуры оператором END;. Начинается блок описания процедуры (функции) оператором BEGIN.

Процедура может содержать также при необходимости и вложенные процедуры, описанные согласно структуре.

Все переменные, метки, константы, типы, описанные внутри процедуры (функции), называемые локальными, доступны только внутри ее, но не в основной программе. Глобальные переменные, типы, константы, метки можно использовать внутри процедуры (функции).

PROCEDURE (Список параметров);

Список параметров может отсутствовать.

FUNCTION (Список параметров): ;

Список параметров может отсутствовать.

Вызов процедуры (функции) в основной программе выполняется командой:

Если в описании процедуры (функции) список параметров отсутствует, то вызов последней выполняется просто командой:

Пример: PROCEDURE INPUT(VAR P1:Integer; P2,P3:Byte);

Здесь: P1 – параметр-переменная ,P2,P3 – параметры-значения, INPUT – имя процедуры.

Перед параметром-переменной всегда ставится VAR. Это значит, что при выполнении процедуры параметр P1 может изменяться в отличие от параметров P2,P3, поглощаемых процедурой.

Гост

ГОСТ

Общие сведения

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

Инструментальные средства могут представлять собой или набор отдельных программ (Software tools) для выполнения специальных задач проектирования программного обеспечения, или интегрированную среду разработки (IDE - Integrated development environment) с графическим интерфейсом со встроенными инструментами проектирования.

Также сейчас получили развитие так называемые SDK (Software development kit) – это комплекты средств разработки программного обеспечения, позволяющие использовать специальные технологии (например, разработанные отдельной фирмой или использующие особенности конкретной компьютерной платформы).

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

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

Стандартный набор инструментальных средств

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

Готовые работы на аналогичную тему

  1. Специализированные редакторы текстов предназначены для ввода и редактирования исходного текста программы. Обладают такими возможностями как подсветка синтаксиса языка различными цветами, подсвечивание текстовых ошибок, поддержка оформления структуры текста и генерации части текста в соответствии с правилами языка. Редакторы могут быть как моноязычными, поддерживающими только лексику одного языка программирования, так и мультиязычными, могут поставляться в виде отдельного приложения или встраиваться в интегрированную среду разработки (IDE).
  2. Программы-компиляторы транслируют текст программы с языка программирования в машинный код (исполняемый файл) без её выполнения. Компилятор может в процессе преобразования оптимизировать код программы с учетом версии языка программирования и особенностей аппаратной платформы, для которой производится трансляция.
  3. Программы-компоновщики производят компоновку программы из нескольких модулей, подключают нужные библиотеки, определяют ссылки между модулями (то есть общие функции, переменные, данные) и связывают модули между собой по этим ссылкам. В результате компоновщик выдаёт исполняемый файл.
  4. Программы-отладчики предназначены для анализа выполнения и выявления ошибок в работе программы. Они предоставляют возможность или пошагового отслеживания работы программы, или в заранее заданных точках остановки с проверкой значений всех переменных, состояний регистров, стеков, ячеек памяти и других параметров.
  5. Программы для создания инсталляторов требуются для разработки дистрибутивов программ. Причём для разных платформ и операционных систем используются разные дистрибутивы, учитывающие особенности этих платформ. Обычно дистрибутивы программ создаются с интерфейсом “мастера”, то есть пошагового диалога с пользователем.
  6. Программы создания справочной системы позволяют организовывать файлы помощи с нужной структурой, содержанием, возможностью поиска, контекстными подсказками, перекрёстными ссылками.
  7. Также можно выделить специализированный набор инструментальных средств, которые используются при разработке только некоторых программ или для изучения структуры построения кода программ сторонних производителей. К этому набору программ относятся дизассемблеры, декомпиляторы, редакторы ресурсов, hex-редакторы.

Большинство вышеперечисленных инструментальных средств обычно объединяются в одну оболочку – интегрированную среду разработки (IDE) имеющую графический интерфейс. Такое решение позволяет увеличить производительность программистов за счёт унификации инструментальных средств и отсутствия необходимости переключения между отдельными компонентами.

Известно множество IDE, например, Microsoft Visual Studio, Visual Basic, Borland Delphi, Borland C++ Builder, Embarcadero RAD Studio, NetBeans, Eclipse, Xcode, DrPython, IntelliJ IDEA и другие.

Дополнительные инструменты для эффективной разработки ПО

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

Ещё в настоящее время получили широкое распространение CASE-технологии компьютерных систем программной инженерии (CASE – Computer-Aided System Engineering) – это программные комплексы, автоматизирующие весь технологический процесс жизненного цикла программного обеспечения.

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

CASE-технологии обеспечивают высокое качество программного обеспечения, отсутствие ошибок и простоту в обслуживании программных продуктов.

По своему функциональному назначению CASE-средства можно разделить на следующие категории:

Нажмите, чтобы узнать подробности

Лекционный материал по теме "Инструментальные средства разработки программ" по дисциплине Инструментальные средства разработки программного обеспечения для специальности 09.02.07 Информационные системы и программирование

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

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

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

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

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

Необходимые

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

редакторы текстов;

Atom - это текстовый редактор с открытым исходным кодом, который доступен для нескольких платформ (Windows, Linux, Mac), бесплатный для использования. Atom позволяет работать с Git и GitHub непосредственно в редакторе, включает умное автозаполнение.

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

Редактор кода Visual Studio от Microsoft - это стильный многоплатформенный и бесплатный текстовый редактор. Он имеет автозаполнение, подсветку синтаксиса и отладку. Команды Git встроены в редактор, чтобы вы могли отправлять запросы. Также доступно несколько расширений, позволяющих добавлять новые языки, темы и инструменты.

компиляторы и ассемблеры;

Ассемблер (Assembly) — язык программирования, понятия которого отражают архитектуру электронно-вычислительной машины. Язык ассемблера — символьная форма записи машинного кода, использование которого упрощает написание машинных программ. Для одной и той же ЭВМ могут быть разработаны разные языки ассемблера.

Компиля́тор — программа, переводящая текст, написанный на языке программирования, в набор машинных кодов.

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

компоновщики или редакторы связей (linkers);

Часто используемые

Это средства, использования которых, в отличие от необходимых, можно избежать. Но без них процесс разработки весьма затрудняется и удлиняется; Из часто используемых средств стоит назвать:

утилиты автоматической сборки проекта;

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

Включает такие действия, как:

компиляция исходного кода в объектный модуль,

сборка бинарного кода в исполняемый файл,

развёртывание программы в целевой среде,

написание сопроводительной документации или описание изменений новой версии.

Основное средство автоматизации сборки — применение специализированного инструмента; один из ранних и исторически значимых инструментов является утилита make, во многом определившая стиль и методы для инструментов, появившихся позднее

Отла́дчик (англ. debugger от bug, баг) — компьютерная программа для автоматизации процесса отладки: поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. В зависимости от встроенных возможностей, отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и так далее.

Среди популярных отладчиков: Microsoft Visual Studio Debugger (Windows)

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

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

Либо создать инсталлятор Вашего приложения можно при помощи бесплатного расширения развертывания приложений для Visual Studio (Пример, Install Shield Limited Edition, Setup Project)

Resource Hacker (ResHacker или ResHack) — редактор ресурсов; программа, предназначенная для просмотра, извлечения и замены ресурсов в исполняемых файлах

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

XN Resource Editor

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

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

perftips visual studio 2019

программы поддержки версий;

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

Справки могут создавать в различных форматах CHM, Web Help и HTML.

CHM (Compiled HTML Help) - это формат Microsoft, разработанный для создания справок программ, работающих в системах Windows. Чаще всего формат используется, чтобы создать справочные файлы для программных продуктов. Кроме того, формат CHM все более и более используется для создания электронных книг.

Devesar Book Editor — простая, но довольно мощная среда разработки руководств, справочников, книг и других электронных документов.

Специализированные

Эти инструментальные средства используются в исключительных случаях, решают довольно специфичные задачи:

программы отслеживания зависимостей;

Зависимость — это объект, который может быть использован (как сервис).

Dependency Walker - бесплатная, свободная утилита, которая сканирует 32-битные и 64-битные исполняемые файлы Windows (exe, dll, ocx, sys и т. п.), и строит диаграмму - иерархическое дерево всех модулей (библиотек), от которых зависит программа. Для каждого найденного модуля выводится список всех функций, которые экспортирует этот модуль, и какие из этих функций реально вызываются другими модулями.

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

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

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

программы отслеживания активности системы и изменений, происходящих в системе;

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

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

Утилита Driver Verifier входит в состав всех версий Windows, начиная с Windows XP, и позволяет выполнять проверку драйверов, выявлять проблемные драйвера, являющиеся причиной синего экрана смерти (BSOD — Blue Screen of Death) и записывать подробную информацию о проблемном драйвере в дамп памяти для дальнейшего анализа.

Интегрированные среды разработки

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

Microsoft Visual Studio — линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментов. Данные продукты позволяют разрабатывать как консольные приложения, так и игры и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы

Qt Creator (ранее известная под кодовым названием Greenhouse) — кроссплатформенная свободная IDE для разработки на С, С++ и QML.

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