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

Классификация языков программирования.

Содержание:

Введение

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

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

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

Чуть позже, в 1943 г., Говард Эйкен создал машину "Марк-1", способную считывать инструкцию на уровне машинного кода. В 1950-х годах начался активный спрос на разработку программного обеспечения, а машинный язык не выдерживал большие объемы кода, поэтому был создан новый способ общения с компьютерами.

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

Объект: процесс разработки программ.

Предмет: язык программирования.

Цель: дать классификацию языков программирования, а также определить критерии выбора среды и языка разработки программ.

Задачи:

1. Изучить теоретические основы разработки программного обеспечения.

2. Дать характеристику основных языков программирования.

3. Провести анализ основных критериев выбора среды и языка разработки программ.

Глава 1. Теоретические основы разработки программного обеспечения

Технология разработки программного обеспечения (ПО) – это комплекс мер по созданию программных продуктов (ПП). Данная деятельность включает в себя несколько этапов, с которыми так или иначе придётся столкнуться при разработке достаточно крупного ПО.

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

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

  • Процесс приобретения. Данный процесс представляет собой действия заказчика разработки ПО, и обычно включает в себя такие мероприятия, как: формирование требований и ограничений к программному продукту (ограничения могут быть связаны с выбором программной архитектуры, а также с приемлемым быстродействием системы и т.д.); заключение договора на разработку; анализ и аудит работы исполнителя. В конце данного процесса заказчик осуществляет приёмку готового программного продукта.
  • Процесс поставки включает в себя мероприятия, проводимые исполнителем по поставке ПО. Исполнитель анализирует требования заказчика, выполняет проектирование и анализ работ, решает, как будет происходить процесс конструирования (программирования): своими силами, либо же с привлечением сторонних команд разработки (подрядчика), также осуществляет оценку и контроль качества готового программного продукта и выполняет непосредственно поставку продукта и сопутствующие завершающие мероприятия.
  • Процесс разработки.
  • Процесс эксплуатации. После того, как программное обеспечение будет готово, начинается процесс его эксплуатации организацией-заказчиком и её операторами.
  • Процесс сопровождения. Фирма-разработчик осуществляет поддержку пользователей программного продукта в случае возникновения у них каких-либо вопросов или проблем. Если в процессе эксплуатации будет обнаружена ошибка в ПП, разработчики должны её устранить. Процесс эксплуатации и процесс сопровождения идут параллельно.

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

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

Организационные процессы жизненного цикла программного продукта

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

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

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

Рисунок 1 - Этапы создания программных продуктов

Приведём все основные этапы создания программного продукта. Всего их пять. Они так или иначе характерны для любой методологии разработки ПО: будь то классическая водопадная, либо современные гибкие методологии (Agile software development) – во всех из них разработчики проходят через следующие этапы создания программного обеспечения:

  1. Составление требований заказчика. На данном эта производится работа с заказчиком и документирование его видения и его требований к программе. В подавляющем большинстве случаев данный этап проходит трудно. Поскольку, слабо разбираясь в особенностях разработки ПО, заказчик плохо представляет себе, что нужно знать разработчикам и (самое главное!), что им нужно сообщить о продукте.
    Выработка требований чрезвычайно важное мероприятие. Убедитесь, что все требования полностью понятны вам и вашей команде.
  2. Проектирование программного продукта. Разобравшись в предметной области, разработчики приступают к проектированию. На данном этапе создания программного продукта разрабатывается архитектура компонентов ПО, выбираются нужные шаблоны проектирования (паттерны) и составляется схема информационной базы данных системы.
  3. Разработка. Когда требования сформулированы и архитектура готова – команда начинает разработку ПП. На этапе разработки также выполняется документирование системы.
  4. Тестирование. После разработки необходимо произвести тестирование системы в целом, тем самым подтвердить её соответствие требованиям заказчика. Здесь стоит сказать, что модульные тесты (unit-тесты; т.е. тесты отдельных частей программы) обычно выполняются на этапе разработки программистом, разрабатывавшем конкретный модуль. Когда все тесты пройдены, программное обеспечение готово к выпуску.
  5. Сопровождение ПП. После выпуска фирма-разработчик отвечает за поддержку программного продукта и выпуска новых версий, которые исправляют ошибки и привносят новый функционал. Также необходимо осуществлять поддержку пользователей разработанного ПО.

Примечание 1: Следует как можно тщательнее подходить к формированию предварительных требований и проектированию, поскольку стоимость исправления ошибок после выпуска ПО, допущенных на этих этапах, обычно в 2-10 (!) раз выше, чем стоимость исправления ошибок, сделанных на этапе программирования (Стив Макконнелл “Совершенный код”).

Примечание 2: Очень часто случается, что заказчик уже после составления требований к ПО (т.е. во время проектирования и разработки) объявляется и радостно сообщает исполнителю свои новые идеи или рассказывает о какой-нибудь “классной” функции, которую нужно добавить в приложение… Бывают случаи, когда это труднореализуемо и сопряжено с пересмотром архитектуры. В данной ситуации можно посоветовать сказать разработчику примерно следующее: “Отлично придумано! Мне нравится! Тогда я пересмотрю свою смету и сроки работы и потом сообщу Вам!”. Практически всегда это срабатывает и гасит пыл заказчика, и он отказывается от новых идей и изменений в проекте.

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

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

Рисунок 2 - Каскадная (водопадная) модель

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

Рисунок 3 - V-образная модель разработки

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

Рисунок 4 - Модель прототипирования

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

Рисунок 5 - Модель быстрой разработки (RAD-модель)

RAD-модель (rapid application development — быстрая разработка приложений) ориентирована в первую очередь на быстроту и удобство программирования. Команда делает акцент именно на разработке, а большая часть работы по составлению требований и описанию пользователей возлагается на заказчика.

Рисунок 6 - Итерационная модель

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

Рисунок 7 - Спиральная модель

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

Гибкие методологии

Гибкие методологии (Agile) олицетворяют современные подходы к разработке ПО. Они используются обычно в небольших командах разработчиков. Среди них такие модели жизненного цикла программного продукта, как Scrum, DSDM, XP, FDD и другие. Вы можете посмотреть видео про одну из гибких методологий: экстремальное программирование.

Глава 2. Характеристика основных языков программирования

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

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

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

Но настоящим прорывом стало программируемое аналитическое устройство, разработанное Чарльзом Бэббиджем, которое, к сожалению, при его жизни так и не было построено. Зато в 1846 году дочь Байрона создала первую в мире программу для аналитической машины, которая решила уравнение Бернулли.

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

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

  • Аспектно-ориентированные (основная идея – разделение функциональности для увеличения эффективности программных модулей). Структурные (в основе лежит идея создания иерархической структуры отдельных блоков программы).
  • Логические (в основе лежит теория аппарата математической логики и правил резолюции). Объектно-ориентированные (в таком программировании используются уже не алгоритмы, а объекты, которые принадлежат определенному классу).
  • Мультипарадигмальные (сочетают в себе несколько парадигм, и программист сам решает, каким языком воспользоваться в том или ином случае).
  • Функциональные (в качестве основных элементов выступают функции, которые меняют значение в зависимости от результатов вычислений исходных данных).

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

Список для начинающих приведен ниже:

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

Python ("Питон") довольно легко выучить благодаря простому читаемому синтаксису, преимущество же в том, что на нем можно создавать как обычные десктопные программы, так и веб-приложения.

Pascal ("Паскаль") – один из древнейших языков (1969 г.), созданных для обучения студентов.

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

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

Основной помощник – это интегрированная среда разработки программ и приложений Visual Basic («Визуал Бейсик» одновременно является и языком программирования, который унаследовал стиль языка Basic 1970-х годов).

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

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

Самые известные языки низкого уровня – это "Ассемблер" (существует несколько подвидов этого языка, каждый из которых имеет много общего, а отличается лишь набором дополнительных директив и макросов), CIL (доступен в платформе .Net) и Байт-код JAVA.

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

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

C ("Си"), C# ("Си-шарп"), "Фортран", "Паскаль", Java ("Ява") - входит в число самых используемых высокоуровневых синтаксисов. Он обладает следующими свойствами: эти языки работают с комплексными структурами, поддерживают строковые типы данных и операции с файлами ввода-вывода информации, а также имеют преимущество – с ними гораздо проще работать благодаря читабельности и понятному синтаксису.

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

Список по популярности можно охарактеризовать так:

  • языки ООП: Java, C++, Python, PHP, VisualBasic и JavaScript;
  • группа структурных языков: Basic, Fortran и Pascal;
  • мультипарадигмальные: C#, Delphi, Curry и Scala.

Выбор языка, на котором написана та или иная программа, во многом зависит от области ее применения. Так, например, для работы с самим "железом" компьютера (написания драйверов и поддерживающих программ) лучшим вариантом станет C ("Си") или С++, которые входят в основные языки программирования (список смотрите выше). А для разработки мобильных приложений, в том числе игр, следует выбрать Java или С# ("Си-шарп").

Глава 3. Анализ основных критериев выбора среды и языка разработки программ

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

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

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

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

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

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

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

Операционная система (ОС):

1)  Windows;

2)  Mac OC;

3)  Linux;

4)  Unix.

Разрядность ОС:

1)  86;

2)  64;

3)  32.

Язык программирования:

1)  Pascal;

2)  Basic;

3)  Scala;

4)  Cobol;

5)  Ruby;

6)  MatLab;

7)  SQL;

8)  Perl;

9)  Lisp;

10) Fortran;

11) Python;

12) PHP;

13) Java;

14) C#;

15) C++;

16) C;

17) Assembler.

Назначение:

1)  Для обучения;

2)  Для работы.

Доступ:

1)  Платный;

2)  Свободный.

Компилятор:

1)  Встроенный;

2)  Внешний.

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

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

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

1.  выбор языка программирования;

2.  выбор операционный системы;

3.  выбор разрядности ОС;

4.  выбор назначения;

5.  выбор доступа;

6.  выбор компилятора.

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

Выделяются следующие задачи данного исследования:

1.  выявить функции разрабатываемой системы;

2.  спроектировать систему;

3.  разработать экспертную систему;

4.  протестировать систему.

Функции разрабатываемой системы:

1.  проведение анализа входных данных;

2.  формирование рекомендаций;

3.  объяснение рекомендаций.

Создавалась интеллектуальная система с использованием кросс-платформенной среды разработки QT Creator, которая разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML.

База знаний интеллектуальной системы хранится отдельно от машины вывода в виде файла СУБД Firebird. Для создания баз данных и разработки бизнес-правил на стороне сервера SQL была использована утилита IBExpert.

На рисунке 1 представлен графический интерфейс программы. При работе с программой необходимо выбрать значение критериев и нажать кнопку «Выбрать», после чего, программа предложит возможные варианты записей. Если же нет подходящих результатов поиска, выводится сообщение об ошибке.

Рисунок 8 - Интерфейс программы

Рисунок 9 - Сообщение об ошибке

Рисунок 10 - Поиск среды разработки по языку программирования

Рисунок 11 - Поиск программы среды разработки по всем критериям

Изменили параметры отбора. Выбрали в качестве критерия «Компилятор» – внешний (рисунок 12).

Рисунок 12 - Поиск программы среды разработки по всем критериям с измененными параметрами

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

Рисунок 13 - Поиск программы среды разработки по трем критериям

При нажатии на кнопку «Сброс критериев» очищаются формы для выбора критериев (QComboBox), как представлено на рисунке 14.

Рисунок 14 - Работа кнопки Сброс критериев

Для того, чтобы получить описание таблицы нужно выбрать столбец и нажать кнопку «Описание». Пользователь получит сообщение с описанием (рисунок 15).

Рисунок 15 - Вывод сообщения пользователю

Созданная система может применяться:

1.  при личном использовании;

2.  в учебных учреждениях.

В будущем система может дорабатываться. Для этого необходимо:

1.  добавить в программу различную важность критериев отбора;

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

Заключение

Языковые средства, на которых пишутся (или в свое время писались) компьютерные программы, условно можно разделить на низко- и высокоуровневые. Если кто из старшего поколения помнит, даже в советские времена в школах на уроках информатики преподавался язык Basic. С его помощью на тогдашних машинах Yamaha КУВТ можно было создавать примитивные программы математических вычислений, программировать простейшие картинки или музыку, звучащую из системного динамика. Для математики можно было использовать и логические операторы вроде «если», «то», «иначе».

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

К ООП смело можно отнести язык C+/++, на основе команд которого созданы те же операционные системы Windows. Программирование на «Си» является достаточно сложным, тем не менее при желании можно освоить и его. Как говорится, было бы желание. Можно пойти на те же курсы программирования или использовать для обучения соответствующую литературу. Правда, как считает большинство специалистов, самому вникнуть в основы языка еще можно, а вот развивать свои знания на практике буде крайне сложно.

Тут никакие труды вроде книг «Программирование для чайников» не помогут. Но вернемся к языкам. Относительно недавно появились языки, работающие на основе интерпретаторов (.NET Framework, Python, Java, Perl и т.д.). В них вместо машинного кода генерируется особый байт-код, который представляет собой двоичный код виртуальной машины. Кстати сказать, программирование на Java можно без особых усилий освоить самому. Например, для мобильных устройств на основе Android-систем можно параллельно использовать Android Studio и пакет Java SDK, а в качестве тестировщика установить Genymotion. Можно поступить еще проще, обратившись к онлайн-конструктору App Inventor, в котором создание последовательности команд производится наподобие складывания пазлов.

Библиография

  1. Бесплатные компиляторы C++ и интегрированные среды разработки (IDE). [Электронный ресурс]. URL: http://codedchaos.blogspot.ru/2011/04/c-ide.html/ (дата обращения 27.08.2016).
  2. Громов Ю.Ю., Иванова О.Г., Алексеев В.В. и др. Интеллектуальные информационные системы и технологии: учебное пособие – Тамбов: Изд-во ФГБОУ ВПО «ТГТУ», 2013. – 244 с.
  3. Джозеф Джарратано, Гари Райли «Экспертные системы: принципы разработки и программирование»: Пер. с англ. – М.: Издательский дом «Вильямс», 2006. — 1152 стр. с ил.
  4. Жарко Е.Ф. Оценка качества программного обеспечения АСУ ТП: Теоритические основы, основные тенденции и проблемы // Sicpro. 2015. №15.
  5. Критерии качества программного средства. [Электронный ресурс]. URL: http://fkn.ktu10.com/?q=node/741/ (дата обращения 27.08.2016).
  6. Качество программного обеспечения. [Электронный ресурс]. URL: http://www.protesting.ru/qa/quality.html/ (дата обращения 27.08.2016).
  7. Михелёв В.М. Базы данных и СУБД – Белгород: Издательство БелГУ, 2007. – 200 с.
  8. Программная инженерия. [Электронный ресурс]. URL: http://software-testing.ru/files/se/3-10-software_engineering_quality.pdf/ (дата обращения 27.08.2016).
  9. Пять популярных IDE для программирования на C++. [Электронный ресурс]. URL: https://tproger.ru/digest/5-cpp-ide/ (дата обращения 27.08.2016).
  10. Трофимова Л.А., Трофимов В.В. Управление знаниями. Учебное пособие – СПб.: Изд-во СПбГУЭФ. 2012. – 77с.