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

кандидата технических наук
Евстифеев, Андрей Александрович
город
Москва
год
2006
специальность ВАК РФ
05.13.11
Диссертация по информатике, вычислительной технике и управлению на тему «Методы и средства формирования промежуточного языка при разработке программного обеспечения информационно-аналитических систем газовой отрасли»

Автореферат диссертации по теме "Методы и средства формирования промежуточного языка при разработке программного обеспечения информационно-аналитических систем газовой отрасли"

На правах рукописи

Евстифеев Андрей Александрович

МЕТОДЫ И СРЕДСТВА ФОРМИРОВАНИЯ ПРОМЕЖУТОЧНОГО ЯЗЫКА

ПРИ РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННО-АНАЛИТИЧЕСКИХ СИСТЕМ ГАЗОВОЙ ОТРАСЛИ

Специальность 05.13.11 - математическое обеспечение вычислительных машин, комплексов и компьютерных сетей

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук

Москва-2006

Работа выполнена в Московском инженерно-физическом институте (государственном университете)

Научный руководитель:

Официальные оппоненты:

Ведущая организация

доктор технических наук, профессор Хетагуров Ярослав Афанасьевич

доктор технических наук, профессор Вольфенгаген Вячеслав Эрнестович, кандидат технических наук Курак Михаил Валерьянович

Всероссийский научно-исследовательский институт природного газа (ВНИИГАЗ)

Защита диссертации состоится " 27__" декабря 2006 г. в _14 часов _00 минут на заседании диссертационного совета Д212.130.03 при Московском инженерно-физическом институте (государственном университете) по адресу: 115409, Москва, Каширское шоссе, 31, тел.: (495) 324-84-98, 323-91-67.

С диссертацией можно ознакомиться в библиотеке Московского инженерно-физического института (государственного университета)

Автореферат разослан " ? " 200_£ г.

Отзывы в двух экземплярах, заверенные печатью организации, просьба на- ^ правлять по адресу: 115409, Москва, Каширское шоссе, 31. 2 -

< йи О©

Ученый секретарь =! диссертационного совета / / / х 5 д.т.н., профессор ----' Шумилов Ю.Ю. ^

tooG fv

•гз^гл

3-

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

С другой стороны, происходит постоянный рост производительности и состава вычислительных средств. По просьбам отдельных фирм-производителей в аппаратуру включаются дополнительные машинные команды, функциональность которых раньше реализовывалась программными средствами. В ряде случаев система машинных команд дополняется командами, выполняющими операции с расширенной функциональностью, что связано с появлением в аппаратуре специализированных функций. Примером такого расширения является дополнение процессоров фирмы Intel технологиями ММХ и ХММ. Для работы с этими аппаратурными расширениями, введенными в микропроцессор, было добавлено в общей сложности 172 новых машинных команды (66 команд для ММХ и 106 для ХММ)[14]. Существующие трансляторы для языков высокого уровня и средства разработки, как правило, не поддерживают машинные команды с расширенной функциональностью, поскольку на момент разработки транслятора эти команды отсутствовали.

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

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

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

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

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

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

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

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

Идея использования промежуточного языка в настоящее время реализована в двух вариантах:

- Независимая трансляция модулей на разных входных языках в промежуточный код с последующим его исполнением на виртуальной машине под фиксированную программно-аппаратурную платформу. Примером данного подхода является интегрированная среда разработки MS Visual Studio.NET. К недостаткам данной среды можно отнести ограниченный набор входных языков и ориентацию на единственную платформу Windows. Среда не поддерживает широко используемые при разработке информационно-аналитических систем газовой отрасли системы программирования Fortran, Pascal и др.

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

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

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

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

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

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

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

- Определены критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

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

- На основе предложенного метода разработан промежуточный язык и прототип универсального компилятора для систем программирования С++ и Java;

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

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

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

Научная новизна. Научную новизну представляют следующие результаты диссертационной работы:

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

- Метод построения глоссария операторов промежуточного языка;

- Критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

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

Основные положения, выносимые на защиту:

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

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

- Метод построения глоссария операторов промежуточного языка;

- Критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

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

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

Достоверность полученных результатов подтверждается применением предложенного метода при разработке прототипа универсального компилятора для систем программирования С++ и Java и его внедрения при разработке ПК «Разрешения» и сравнением оценок затрат на разработку, отладку и сопровождение проектов по разработанной методике и реальных затрат. Разность между предварительными оценками и реальными затратами не превышают 5%.

Реализация результатов и практическая ценность работы. Результаты работы применяются в ВНИИПромгаз ОАО «Промгаз» на этапах реализации, тестирования, модификации и эксплуатации программных систем. Результаты работы по теме диссертации использовались при выполнении научно-исследовательских работ по следующим темам:

- Договор с ОАО «Газпром» № 0300-02-2 от 03.01.2002 г, «Совершенствование системы ценообразования при проектировании, строительстве объектов газовой промышленности и научное сопровождение перехода отрасли на новую смет-но-нормативную базу»;

- Договор с ОАО «Газпром» № 0304-02-2 от 03.01.2002 г, «Создание системы управления распределением и поставками газа потребителям регионов РФ, информационное обеспечение принятия управленческих решений по совершенствованию внутреннего рынка газа»;

- Договор с ОАО «Газпром» № 0307-02-2 от 03.01.2002 г, «Разработка и внедрение научно-методических основ, нормативов и регламентов по проектированию, строительству и эксплуатации систем распределения и использования газа». Работа по данному договору удостоена отраслевой премии по науке ОАО «Газпром» за 2003 год.

Апробация работы. Основные результаты работы докладывались и получили одобрение на научной сессии МИФИ, проходившей в Московском Инженерно-физическом Институте (Государственном Университете) в феврале 2004 года.

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

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

СОДЕРЖАНИЕ РАБОТЫ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Анализ принципов оценки экономической эффективности программных систем, проведенный в диссертации показал, что над проблемой оценки эффективности программных систем работали многие авторы, например: Страссман П, Дубов A.M., Коссов В.В., Лившиц В.Н., Шахназаров А.Г., и др. Однако, за последние сорок лет так и не выработано четкого определения эффективности программного проекта. Среди изученных источников не удалось найти ни одной методики оценки эффективности программных проектов с применением нескольких языков программирования высокого уровня. По результатам анализа определены возможные пути повышения целесообразности разработки программных систем.

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

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

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

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

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

Рис. 1.

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

1. Критерий полноты:

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

2. Критерий оперативной проверки правильности ведения глоссария операторов входящих языков высокого уровня;

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

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

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

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

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

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

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

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

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

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

щ - число простых операторов, появляющихся в анализируемой программе задачи;

щ - число простых операндов в программе задачи;

И, - общее число операторов в программе задачи;

Ы2 - общее число операндов в программе задачи;

т] -словарь программы задачи;

N - длина программы задачи, N=N,+N2

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

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

А _М21оег(Ш2/^) ' м- А0 т]21о§2(Н/М,)

Для транслятора с промежуточным языком высокого уровня введены следующие характеристики:

- полное число операторов входящего языка высокого уровня;

7]пр - полное количество операторов промежуточного языка;

Р - количество типов операндов;

- количество операндов Р -типа;

т]т - количество используемых машинных команд;

Ы„р - длина программы на промежуточном языке

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

Для сложности программы:

■4 = лту^пя + Ат = цт 1оё2 (■%■) + Т]вх 1оё, (%-)

Пш Гю

Для элементности промежуточного языка:

___^22-

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

Табл. 1. Формулы оценки характеристик языка высокого уровня

Компилирующий транслятор Транслятор с промежуточным языком, построенный по предложенной технологии

Для двух языков высокого уровня в проекте Чех = к *7„ =?? + <£??„, +ДО пя Т

Для К языков высокого уровня в проекте и 53 К у '"I

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

Табл. 2. Формулы оценки затрат на разработку, отладку и эксплуатацию программного обеспечения, разработанного с применением различных технологий построения__

Прямой компилирующий транслятор Построенный транслятор с промежуточным языком

Затраты на разработку

Затраты на отладку

=К,< +А[СЛК,КД(2^ +0+

Затраты на эксплуатацию

м м

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

7000

15

6000

У 5000

1 а е 4000

Р о а ? 3000

г о

я 7000

Б

й 1000

И

0

у»*"

* *

у г*"

1 г'

Л

- - Транслятор языка

высокого уровня построенного по классической технологии

— Транслятор с промежуточным языком построенный по предложенной технологии

Количество транслируемых языков высокого уровня

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

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

Результатами экспериментальных исследований являются:

1) сравнение характеристик программных проектов, разработанных с применением транслятора с промежуточным языком программирования и прямого компилирующего транслятора;

2) определение границы целесообразности применения транслятора, разработанного по предлагаемой технологии.

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

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

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

- АС Паспорт ГХ (разработчик ЗАО «Газомотор», г. Рыбинск);

- ПМК «Мониторинг уровня цен» (разработчик ОАО «Промгаз», г. Моск-ва);

- ПМК «Инвестор 2.0+» (разработчик ОАО «ГазПроектИнженеринг», г. Воронеж);

- САРМ ГРО (разработчик ООО «Сфера-МК», г. Краснодар);

- АС «Аргус» (разработчик ОАО «ОргЭнергоГаз», г. Москва);

- ПК «Разрешения» (разработчик ОАО «Промгаз», г. Москва);

- ПК «Калькуляция машино-часа работы» (разработчик ОАО «Промгаз», г. Москва).

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

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

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

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

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

2) Разработан метод построения глоссария операторов промежуточного языка;

3) Определены критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

4) Разработана процедура формализованных подстановок генератора кода для промежуточного языка;

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

6) На основе предложенной технологии разработан прототип универсального компилятора для систем программирования С++ и Java.

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

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

Публикации по теме диссертации

1. Евстифеев A.A., Хетагуров Я.А. "Анализ затрат при создании вычислительных систем, связанных с выбором языка программирования". Научная сессия МИФИ 2004. Направление - Информатика. Секция -3, Информатика и процессы управления. Москва, МИФИ январь 2004.

2. Евстифеев A.A., "Предложения по оснащению котельных ОАО "Газпром" приборами учета, газоанализаторами и сигнализаторами горючих и токсичных газов". Научно-технический сборник « Отраслевая энергетика и проблемы энергоснабжения» приложение к журналу "Наука и техника в газовой промышленности", Москва 2004 апрель 2004

3. Евстифеев A.A., "Программный комплекс для анализа систем теплоснабжения предприятий ОАО "Газпром". Ежемесячный научно-технический и производственный журнал "Газовая промышленность", Москва ноябрь 2004 года.

4. Сторонский Н.М., Евстифеев A.A. Отчет о научно-исследовательской работе № 0300-02-2, «Развитие программного комплекса по результатам опытной эксплуатации и актуализация базы данных по вновь разработанным ГЭСН», Москва, ВНИИПромгаз, 2004.

5. Кисленко H.A., Магдеев P.A., Евстифеев A.A. Отчет о научно-исследовательской работе № 0304-02-2 этап №1 «Разработка информационной системы (ИС) анализа и прогноза использования топливно-энергетических ресурсов (ТЭР) по регионам РФ и по отраслям промышленности», Москва, ВНИИПромгаз, 2002, (№ гос. per.: 01200306046; Ж 03200302383) .

6. Ярыгин Ю.Н., Магдеев P.A., Евстифеев A.A. Отчет о научно-исследовательской работе № 0304-02-2 этап №3 «Научно-методическое и программное обеспечение разработки и внедрения отраслевой системы мониторинга, диагностики и управления газовым хозяйством ОАО «Газпром», Москва, ВНИИПромгаз, 2003, (№ гос. per.: 01200505353; Ж 03200502614).

Принято к исполнению 25/10/2006 Исполнено 27/10/2006

Заказ №813 Тираж: ЮОэкз.

Типография «11-й ФОРМАТ» ИНН 7726330900 Москва, Варшавское т., 36 (495) 975-78-56 www.autoreferal.ru

5.0fr

» 235 2 1

Оглавление автор диссертации — кандидата технических наук Евстифеев, Андрей Александрович

Определения.

Список сокращений.

ВВЕДЕНИЕ.

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

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

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

1.3. Анализ языков программирования представленных на рынке информационных технологий.

1.4. Пути повышения эффективности проектирования программных систем с промежуточным языком.

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

1.6. Выводы.

2. Технология построения промежуточного языка.

2.1. Принцип разработки программного обеспечения.

2.1.1 Выделение целевого класса и базового набора унифицируемых языков высокого уровня.

2.1.2 Унификация языков высокого уровня, включенных в базовый набор.

2.1.3 Разработка унифицированного единого транслятора программ.

2.2. Критерий полноты и оперативной проверки правильности ведения глоссария операторов.

2.3. Критерий требуемой разрядности операндов.

2.4. Методика формирования промежуточного языка.

2.5. Построение промежуточного языка.

2.6. Выводы.

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

3.1. Характеристики языков программирования.

3.2. Анализ существующих подходов к оценке затрат на программное обеспечение.

3.3. Характеристики промежуточных языков и определение их структуры.

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

3.5. Оценка затрат на разработку, отладку и эксплуатацию программного обеспечения с применением компилирующего транслятора.

3.5.1.Оценка затрат на разработку программного обеспечения с применением компилирующего транслятора.

3.5.2. Оценка затрат на отладку программного обеспечения с применением компилирующего транслятора.

3.5.3.0ценка затрат на эксплуатацию программного обеспечения с применением компилирующего транслятора.

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

3.6.1.Оценка затрат на разработку программного обеспечения с применением промежуточного языка.

3.6.2.0ценка затрат на отладку программного обеспечения с применением промежуточного языка.

3.6.3.Оценка затрат на эксплуатацию программного обеспечения с применением промежуточного языка.

3.7.0ценки затрат на разработку программной системы с учетом различных технологий трансляторов.

3.7.1.Определение основных коэффициентов для проведения расчетов.

3.7.2.0ценка затрат на разработку программной системы.

3.8.Выводы.

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

4.1. Результаты экспериментальных исследований внедрения Технологии диссертационной работы.

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

4.3.0пределение границы применимости предлагаемой Технологии.

4.4.Выводы.

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

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

С другой стороны, происходит постоянный рост производительности и состава вычислительных средств. По просьбам отдельных фирм-производителей в аппаратуру включаются дополнительные машинные команды, функциональность которых раньше реализовывалась программными средствами. В ряде случаев система машинных команд дополняется командами, выполняющими операции с расширенной функциональностью, что связано с появлением в аппаратуре специализированных функций. Примером такого расширения является дополнение процессоров фирмы Intel технологиями ММХ и ХММ. Для работы с этими аппаратурными расширениями, введенными в микропроцессор, было добавлено в общей сложности 172 новых машинных команды (66 команд для ММХ и 106 для ХММ)[14]. Существующие трансляторы для языков высокого уровня и средства разработки, как правило, не поддерживают машинные команды с расширенной функциональностью, поскольку на момент разработки транслятора эти команды отсутствовали.

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

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

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

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

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

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

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

Идея использования промежуточного языка в настоящее время реализована в двух основных вариантах:

- Независимая трансляция модулей на разных входных языках в промежуточный код с последующим его исполнением на виртуальной машине под фиксированную программно-аппаратурную платформу. Примером данного подхода является платформа MS.NET с интегрированной средой разработки Visual Studio.NET и средой периода исполнения .NET Framework. К недостаткам данной платформы можно отнести ограниченный набор входных языков и реализацию среды периода исполнения только для операционной системы Windows. Платформа не поддерживает широко используемые при разработке информационно-аналитических систем газовой отрасли системы программирования Fortran, Pascal и др.

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

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

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

Для достижения поставленной цели в диссертационной работе решены следующие основные задачи:

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

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

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

- Определены критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

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

- На основе предложенного метода разработан промежуточный язык и прототип универсального компилятора для систем программирования С++ и Java;

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

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

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

Научная новизна. Научную новизну представляют следующие результаты диссертационной работы:

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

- Метод построения глоссария операторов промежуточного языка;

- Критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

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

Основные положения, выносимые на защиту:

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

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

- Метод построения глоссария операторов промежуточного языка;

- Критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

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

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

Достоверность полученных результатов подтверждается применением предложенного метода при разработке прототипа универсального компилятора для систем программирования С++ и Java и его внедрения при разработке ПК «Разрешения» и сравнением оценок затрат на разработку, отладку и сопровождение проектов по разработанной методике и реальных затрат. Разность между предварительными оценками и реальными затратами не превышают 5%.

Реализация результатов и практическая ценность работы. Результаты работы применяются в ВНИИПромгаз ОАО «Промгаз» на этапах реализации, тестирования, модификации и эксплуатации программных систем. Результаты работы по теме диссертации использовались при выполнении научно-исследовательских работ по следующим темам:

- Договор с ОАО «Газпром» № 0300-02-2 от 03.01.2002 г, «Совершенствование системы ценообразования при проектировании, строительстве объектов газовой промышленности и научное сопровождение перехода отрасли на новую смет-но-нормативную базу»;

- Договор с ОАО «Газпром» № 0304-02-2 от 03.01.2002 г, «Создание системы управления распределением и поставками газа потребителям регионов РФ, информационное обеспечение принятия управленческих решений по совершенствованию внутреннего рынка газа»;

- Договор с ОАО «Газпром» № 0307-02-2 от 03.01.2002 г, «Разработка и внедрение научно-методических основ, нормативов и регламентов по проектированию, строительству и эксплуатации систем распределения и использования газа». Работа по данному договору удостоена отраслевой премии по науке ОАО «Газпром» за 2003 год.

Апробация работы. Основные результаты работы докладывались и получили одобрение на научной сессии МИФИ, проходившей в Московском Инженерно-физическом Институте (Государственном Университете) в феврале 2004 года.

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

1. Евстифеев А.А., Хетагуров Я.А. "Анализ затрат при создании вычислительных систем, связанных с выбором языка программирования". Научная сессия МИФИ

2004. Направление - Информатика. Секция -3, Информатика и процессы управления. Москва, МИФИ январь 2004.

2. Евстифеев А.А., "Предложения по оснащению котельных ОАО "Газпром" приборами учета, газоанализаторами и сигнализаторами горючих и токсичных газов". Научно-технический сборник « Отраслевая энергетика и проблемы энергоснабжения» приложение к журналу "Наука и техника в газовой промышленности", Москва 2004 апрель 2004

3. Евстифеев А.А., "Программный комплекс для анализа систем теплоснабжения предприятий ОАО "Газпром". Ежемесячный научно-технический и производственный журнал "Газовая промышленность", Москва ноябрь 2004 года.

4. Сторонский Н.М., Евстифеев А.А. Отчет о научно-исследовательской работе № 0300-02-2, «Развитие программного комплекса по результатам опытной эксплуатации и актуализация базы данных по вновь разработанным ГЭСН», Москва, ВНИИПромгаз, 2004.

5. Кисленко Н.А., Магдеев Р.А., Евстифеев А.А.Отчет о научно-исследовательской работе № 0304-02-2 этап №1 «Разработка информационной системы (ИС) анализа и прогноза использования топливно-энергетических ресурсов (ТЭР) по регионам РФ и по отраслям промышленности», Москва, ВНИИПромгаз, 2002.

6. Ярыгин Ю.Н., Магдеев Р.А., Евстифеев А.А. Отчет о научно-исследовательской работе № 0304-02-2 этап №3 «Научно-методическое и программное обеспечение разработки и внедрения отраслевой системы мониторинга, диагностики и управления газовым хозяйством ОАО «Газпром», Москва, ВНИИПромгаз, 2003.

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

Заключение диссертация на тему "Методы и средства формирования промежуточного языка при разработке программного обеспечения информационно-аналитических систем газовой отрасли"

4.4. Выводы

1) Результаты диссертационной работы внедрены:

• в Отрытом Акционерном Обществе «Промгаз» город Москва; предлагаемая технология, оформлена в виде методики, используется при разработке программных систем для обеспечения автоматизации деятельности предприятий газовой отрасли, в частности: о При разработке программного комплекса «Ведение и анализ разрешений на право использования природного газа в качестве топлива в газоисполь-зующих установках выданных с Министерством экономического развития Российской Федерации и администрациями субъектов федерации»; о При разработке программно-методического комплекса «Мониторинг уровня цен на строительные материалы, используемые при строительстве объектов газовой отрасли»;

2) Применение предлагаемой Технологии в программных продуктах позволило:

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

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

2) Разработан метод построения глоссария операторов промежуточного языка;

3) Определены критерии полноты глоссария операторов промежуточного языка и глубины детализации операндов;

4) Разработана процедура формализованных подстановок генератора кода для промежуточного языка;

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

6) На основе предложенной технологии разработан прототип универсального компилятора для систем программирования С++ и Java.

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

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

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

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

Библиография Евстифеев, Андрей Александрович, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Холстед М. Начало науки о программах. М.: Финансы и статистика, 1981. -128 с.

2. Хетагуров Я.А. Основы проектирования управляющих вычислительных систем М.: Радио и связь, 1991 - 287 с.

3. Рамбо Дж., Якобсон А., Буч Г. UML: специальный справочник. СПб.: Питер, 2002.-656 е.: ил.

4. Мацяшек, Лешек Анализ требований и проектирование систем. Разработка информационных систем с использованием UML. Пер. с англ. - М. : Издательский дом «Вильяме», 2002. - 432 е.: ил. - Парал. тит. англ.

5. Васютович В.В., С.С. Самотохин, Г.С. Никифоров. Регламентация жизненного цикла программных средств // М., Computerworld Россия, журнал «Директору информационной службы» № 07-08, 2000г.

6. ГОСТ 34.003-90 Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. Термины и определения.

7. ГОСТ 34.601-90 Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. Стадии создания АС.

8. ГОСТ 34.602-89 Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. ТЗ на создание АС.

9. Калянов Г.Н. CASE. Структурный системный анализ (автоматизация и применение). М.: Лори, 1996г.

10. Международный стандарт ISO/IEC 12207. Первое издание 01.08.1995г.

11. Методические указания. РД 50-34.698-90 Требования к содержанию документов.

12. Скрипкин К.Г. Экономическая эффективность информационных систем -М.:ДМК Пресс, 2002г. 256с.: ил.

13. Black A., Wright P., Bachman S. In Search of Shareholder Value. London, Pitman Publishing, 1998.

14. Юров В.И. Assembler. Учебник для вузов. 2-е изд. СПб.: Питер, 2003. - 637 с.:ил.

15. Ахо А.В., Сети Р., Ульман Д.Д. Компиляторы: принципы, технологии и инструменты. : Пер. с англ. М.: Издательский дом «Вильяме», 2003. - 768 е.: ил. - Парал. тит. англ.

16. Пратт Т., Зелковиц М. Языки программирования: разработка и реализация / Под общей ред. А. Матросова. СПб.:Питер, 2002. - 688 с.:ил.

17. Kay A. Early History Of SmallTalk. ACM History of Programming Languages Conference II, Cambridge, MA (April 1993), 67-95.

18. IBM, The Man Behind FORTRAN, IBM Computing Report (2)4, November 1966, 7-10,19.

19. Griswold, R., String and List Processing in CNOBOL4: Techniques and Applications, Prentice-Hall, Englewood Cliffs, NJ (1975).

20. C.C. Камынин, Э.З. Любимский. Алгоритмический машинно-ориентированный язык АПМО // Сб. "Алгоритмы и алгоритмические языки". — Изд-во ВЦ АН СССР, — 1967. — вып.1.

21. И.В. Поттосин, А.Ф. Рар, В.Л. Катков. ЭПСИЛОН система автоматизации программирования для задач символьной обработки // Тр. 1-ой Всесоюзной конф. по программированию. — Киев, 1968.

22. А.Р. Ershov, A.F. Rar. SYGMA, a symbolic generator and macroassembler // In "Symbol manipulation languages and technique". — North-Holland Publ. Co., 1968.

23. Strassmann Paul A. Will Big Spending on Computers Guarantee Profitability? /Datamation, February, 1997.

24. Strassmann Paul A. The Value of Computers? Information and Knowledge / www.strassmann.com, 1996.

25. Доймлинг Ф., Силлеску Д. Язык программирования PostScript: Пер. с нем. -М.: Физматлит, 1993- 136 с.

26. Смешко Г.Л., Салтыков А.И. Программирование на языке Паскаль. М.: Наука, 1993-208с.

27. Майоров С.А. Электронные вычислительные машины (справочник по конструированию). М.: Советское Радио, 1975, 504 с с ил.

28. Международный стандарт ISO/IEC 12207. Первое издание 01.08.1995г.

29. Международный стандарт ISO/TR 10006:1997/ Первая редакция 15.12.1997г.

30. Maurice J. Bach The design of the unix operating system. Prentice-Hall, Bell Telephone Laboratories, 1986.

31. Bach, M.J., and S.J.Buroff, "Multiprocessor UNIX Systems", AT&T Bell Laboratories Technical Journal, Oct. 1984, Vol. 63, No. 8, Part 2, pp. 1733-1750.

32. UNIX Programmer's Manual, 4.2 Berkeley Software Distribution, Virtual VAX-11 Version, Computer Science Division, Department of Electrical Engineering and Computer Science, University of California at Berkeley, August 1983.

33. Bourne, S.R., "The UNIX Shell", The Bell System Technical Journal, July-August 1978, Vol. 57, No. 6, Part 2, pp. 1971-1990.

34. Методика определения экономической эффективности автоматизированных систем управления предприятиями и производственными объединениями. -М.: Статистика, 1979.

35. Методика оценки экономической эффективности отраслевых автоматизированных систем управления (ОАСУ) в промышленных объединениях. М.: Экономика, 1976.

36. Neumann М. Smith В. Factor analysis // J. Royal Statistical Society. 1950. - Ser. B.-V. 12. -№ 1.

37. Schwidetzky I. Faktoren des Schadelbaus bei der Vorspanfschen Bevolkerung der Kanarischen Inseln // Homo. 1959. - V.10 -№4.

38. Методические рекомендации по оценке эффективности инвестиционных проектов: (вторая редакция). М.: Экономика, 2000-421 с.

39. Хетагуров Я.А., Гамазова Е.А. О некоторых количественных оценках языков программирования при проектировании ЦВМ // Вопросы радиоэлектроники. Сер. ЭВМ. 1983. - Вып. 7. - С. 7-19.

40. Липаев В. В., Потапов А.И. Оценка затрат на разработку программных средств. М.: Финансы и статистика, 1988. - 224 с.

41. Вильям Варна, Марек Омилиан Увеличение доходов компаний: экономическая эффективность использования Windows ХР Professional // Microsoft Corporation • One Microsoft Way • Redmond, WA 98052-6399 • USA 0302, март 2002 г.

42. Statement of Position ("SOP") 98-1, "Accounting for the Costs of Computer Software Developed or Obtained for Internal Use", www.bcclinc.ru/vc/nvse/report/1998/ncfseng.asp, март 1998 г.

43. Пол Мантер SOP 98-1. Учет затрат на разработку программного обеспечения, http://consulting.ru/econswp3035. 2003 г.

44. Карпов В.Э. Теория компиляторов. Учебное пособие — Московский государственный институт электроники и математики. М., 2001. 79 с

45. Википедия — свободная многоязычная энциклопедия. http://ru.wikipedia.org/wiki/, 2005 г.

46. Abrams, М. D., and Zelkowitz M.V., Belief in Correctness, National Computer Security Conference, Baltimore, MD (October, 1994), 132-141.

47. ACM Computing Surveys: Special Issue on Programming Language Paradigms (21) 3 (1989).

48. Formal Definition of the Ada Programming Language, Honeywell, Inc. (prelminary) (1980).

49. Adobe Systems Inc., Postscript Language Reference Manual, Addison-Wesley, Reading, MA (1990).

50. ANSI, American National Standard Programming Language COBOL, X3.23, ANSI, New York (1985).

51. ANSI, American National Standard Programming Language С, X3.159, ANSI, New York (1989).

52. ANSI, American National Standard Programming Language FORTRAN 90, X3.198, ANSI, New York (1990).

53. Appel, A. W., and MacQueen D. В., Standard ML of New Jersey, in Third International Symp. on Programming Language Implementation and Logic programming, M. Wirsing (Ed.), Springer-Verlag, New York (1991).

54. Brainerd, W.S., Goldberg C.H., and Adams J, C., Programmer's Guide to FORTRAN 90, McGraw-Hill, New York (1990).

55. Harbison, S. P., and Steele G. L, C: A Reference Manual, 4th edition, Prentice-Hall, Upper Saddle River, NJ (1995).

56. Wexelblat, R. (Ed,), History of Programming Languages, Academic Press, New York (1981).

57. Wirth, N., Recollections About the Development of Pascal, ACM History of Programming Languages Conference II, Cambridge, MA (April 1993) SIGPLAN Notices (28)3 (March 1993)., 333-342.

58. Jensen, K., and Wirth N., Pascal User Manual and Report, Springer-Verlag, New York (1974).

59. Ledgard, H., The American Pascal Standard with Annotations, Springer-Verlag, New York (1984).

60. Feuer A., and Gehani N., A Comparison of the Programming Languages С and Pascal, ACM Computing Surveys (14)1 (1982), 73-92.

61. Wirth, N., Programming in Modula-2, Springer-Verlag, Berlin (1988).

62. Whitaker, W. A., The Ada Project: The DOD Higher Order Language Working Group, ACM History of Programming Languages Conference II, Cambridge, MA (April 1993) SIGPLAN Notices (28)3 (March 1993)., 299-332.

63. Booch, G., Software Engineering with Ada, Benjamin/Cummings, Menlo-Park, CA (1983).

64. Lippman, S. В., С++ Primer, Third Edition, Addison-Wesley, Reading, MA (1998).

65. Pokl. I., С++ distilled: A Concise ANSI/ISO Reference and Style Guide, Addison-Wesley, Reading, MA (1996).

66. Stroustrup, В., The С++ programming language, Special Edition, Addison-Wesley,Reading, MA (1990).

67. McCarthy, J., LISP 1.5 Programmer's Manual, 2nd edition, MIT Press, Cambridge, MA (1961).

68. Steele, G., Common LISP: The Language, 2nd edition, Digital Press, Bedford, MA (1990).

69. Steele, G. L, and Gabriel R. P., The Evolution of LISP, ACM History of Programming Languages Conference II, Cambridge, MA (April 1993) SIGPLAN Notices (28)3 (March 1993)., 231-270.

70. Milner, R., Tofte M., and Harper R., The Definition of Standard ML, MIT Press, Cambridge, MA (1989).

71. UllmanJ. D., Elements of ML Programming, Prentice-Hall, Englewood Cliffs, NJ (1994).

72. Gosling J„ Joy В., Steele G., Bracha G., The Java ™ Language Specification Second Edition, Addison-Wesley, CA (2000).

73. Clocksin, W, F., and Mellish C. S., Programming in Prolog, Springer-Verlag, Berlin (1987).

74. Knuth, D. E„ The TEXbook, Addison-Wesley, Reading, MA (1984).

75. Kurtz, Т. E., BASIC, ACM History of Programming Languages Conference, Los Angeles, CA(1978) SIGPLAN Notices (13)8 (August 1978)., 103-118.

76. ГОСТ 28195-89 Оценка качества программных средств. Общие положения.

77. ГОСТ Р ИСО/МЭК 12119-2000 Информационная технология. Пакеты программ. Требования к качеству и тестирование.

78. ГОСТ 28806-90 Качество программных средств. Термины и определения.

79. Ремнев Анатолий «Программирование в средней школе», журнал «Инфо-Net», выпуск 2, 2005.

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

81. Евстифеев А.А., Хетагуров Я.А. «Анализ затрат на создание программного обеспечения», М: МИФИ, 2004.

82. Евстифеев А.А. «Технология создания рациональных промежуточных языков программирования для разработки программного обеспечения», М.: ВНИИПромгаз, 2005.