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

Введение

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

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

Необходимые

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

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

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

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

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

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

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

§ отладчики;

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

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

§ профилировщики;

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

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

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

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

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

§ дизассемблеры;

§ декомпиляторы;

§ hex-редакторы;

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

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

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

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

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

КЛАССИФИКАЦИЯ ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ

ТЕМА 1 ПОНЯТИЕ ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ.

КЛАССИФИКАЦИЯ ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ.

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

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

· репозиторий,

· инструментарий,

· интерфейсы.

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

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

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

Рис. Общая архитектура инструментальных систем технологии программирования.

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

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

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

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

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

KPresenter - это свободная программа подготовки презентаций, входящая в проекты KOffice и KDE. Интерфейс программы представлен на рисунке 6.

Рисунок 6- Kpresenter.

Adobe Photoshop выбран из ряда других программ (Paint, Paint.net, Photoshop online и др.) в связи с тем, что он довольно- таки прост в изучении и использовании. По нему создано большое количество видеоуроков, и к тому же он входит в программу изучения. С его помощью будут удаляться неизменно возникающие искажения. Интерфейс программы представлен на рисунке 7.


Рисунок 7- Adobe Photoshop.

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


Рисунок 8- Paint.

Paint.NET -- бесплатный растровый графический редактор для Windows NT, основанный на.NET Framework. Приложение начато как проект, разработанный группой студентов Университета штата Вашингтон для Microsoft Windows под руководством Microsoft. Paint.NET написан на C#, с некоторым количеством C++, используемого при установке и интеграции с оболочкой.

Photoshop online - бесплатный интернет ресурс, расположенный по адресу http://photoshop.domfailov.ru. Графический редактор, который оснащен большим количеством возможностей. Приложение, позволяющее производить различные действия по улучшению и обработке изображения. К числу таких действий относят: обработка цветовой гаммы, монтаж и многое другое. Интерфейс программы представлен на рисунке 9.


Рисунок 9- Photoshop online.

Microsoft Office Word 2003 - текстовый процессор, предназначенный для создания, просмотра и редактирования текстовых документов, с локальным применением простейших форм таблично-матричных алгоритмов. Выпускается корпорацией Microsoft в составе пакета Microsoft Office.. Интерфейс программы представлен на рисунке 10.


Рисунок 10- Microsoft Office Word 2003.

Microsoft Power Point - программа для создания и проведения презентаций, являющаяся частью Microsoft Office и доступная в редакциях для операционных систем Интерфейс программы представлен на рисунке 11.


Рисунок 11- Microsoft Power Point.

Microsoft ICE Autopano Giga, Ulead Cool 360, The Panorama Factory, PTGui Pro в связи со своей простотой использования и тем, что она бесплатная. Чтобы объединить фотографии в панораму, достаточно просто переместить их в рабочую область программы и дальше программа действует автоматически. Интерфейс программы представлен на рисунке 12.


Рисунок 12 - Microsoft ICE.

Autopano Giga - Весь процесс при создании полностью автоматизирован: она сама откорректирует и сбалансирует яркость и цвет, подгонит фрагменты, автоматически найдет подходящие для склейки фотографии в указанной пользователем папке. Поддерживается немалое количество форматов (включая формат RAW). Интерфейс программы представлен на рисунке 13.


Рисунок 13 - Autopano Giga.

PTGui Pro - коммерческая (условно-бесплатная) компьютерная программа для создания панорамных фотоснимков, разработанная и поддерживаемая основанной в 1996 году нидерландской компанией New House Internet Services из Роттердама. Первоначально PTGui представляла собой графический интерфейс к комплекту бесплатных инструментов Panorama Tools (из чего следует и название программы), однако более поздние версии программы работают на собственном алгоритме сшивания фотографий. Интерфейс программы представлен на рисунке 14.


Рисунок 14 - PTGui Pro.

Microsoft Office SharePoint Designer 2007 - Программа проста в использовании и распространяется бесплатно. Программа обладает широким спектром возможностей, в частности, может автоматически отправлять изменения, внесённые разработчиком сайта в исходные тексты, в режиме реального времени. Интерфейс программы представлен на рисунке 15.


Рисунок 15 - Microsoft Office SharePoint Designer.

Pano2VR наиболее прост из других вариантов(Photo Warp, Tourweaver, Panorama2Flash, Pano2QTVR free, JATC, Easypano Studio Pro) широко известных программ с такими возможностями совсем немного, а безоговорочным лидером в данной сфере считается американская компания IPIX Corporation (http://www.ipix.com), являющаяся автором технологии виртуальных туров. Поэтому именно ее программные продукты чаще всего используются при разработке туров, в том числе и в России. Однако существуют весьма интересные альтернативные варианты от других компаний, которые тоже позволяют получить отличные результаты, но стоят гораздо меньше.

Easypano Studio Пакет включает два программных модуля: Panoweaver и Tourweaver. Первый из них -- это сшиватель сферических панорам 360Ѕ360, что возможно как в полностью автоматическом, так и в ручном режиме, а второй позволяет объединять панорамы, равно как и иную информацию, в виртуальных турах. Приложение Tourweaver может использоваться не только в связке с Panoweaver, но и автономно, так как в нем поддерживается импорт панорам, созданных в других сшивателях. Например, можно импортировать цилиндрические панорамы, полученные в Panorama Factory, или панорамы, сгенерированные в 3D-пакетах, в частности в 3D Studio Max. Кроме того, возможен импорт панорам с цифровых панорамных камер Kaidan"s 360 One VR, Panoscan, RoundShot и др. Интерфейс программы представлен на рисунке 16.

Рисунок 16 - 360 Degrees Of Freedom Developer Suite.

SP_VTB, SP_STITCHER - Компания Spherical Panorama специализируется на разработке программного обеспечения для создания разных типов панорам и объединения их в виртуальные туры, однако в нашем случае наибольший интерес представляют сшиватель снимков в панорамы SP_STITCHER и построитель виртуальных туров SP_VTB. Они поставляются как отдельные приложения, однако при разработке виртуальных туров дополняют друг друга, так как SP_VTB позволяет создавать туры только на основе панорам в формате spf, получаемых в среде SP_STITCHER. Оба приложения достаточно просты в применении, а прилагаемые к ним подробная документация, несколько fisheye-наборов для тестирования сшивания и пробный виртуальный тур позволят быстрее разобраться с тонкостями работы. Интерфейс программы представлен на рисунке 17.

Рисунок 17 - SP_VTB, SP_STITCHER.

IPIX Interactive Studio, IPIX Real Estate Wizard, IPIX i-Linker - В качестве приложений для создания виртуальных туров компания IPIX предлагает программные пакеты IPIX i-Linker 3.1 и IPIX Multimedia Toolkit, которые имеет смысл использовать только в связке с IPIX-сшивателем, так как оба приложения настроены на применение IPIX-панорам. В качестве программ для сшивания панорам могут быть задействованы пакеты IPIX Interactive Studio и IPIX Real Estate Wizard. Интерфейс программы представлен на рисунке 18.

Рисунок 18 - SP_VTB, SP_STITCHER.

Ну и собственно Pano2VR- программа для занимающихся производством виртуальных 3D панорам, новый продукт обеспечит все необходимые современные возможности представления контента на основе технологии Flash. Помимо пост-продакшн, Вы также можете производить текстурные преобразования (выбор большой) и создавать превью-картинки (thumbnail). Новый концепт переписан с нуля, добавлено огромное количество улучшений и возможностей. Хотя программа, как прежде, и поддерживает конвертацию в формат QTVR, все же основной упор в этой редакции был сделан на технологию Flash. Приложение, для преобразования сферических или цилиндрических панорамных изображений в форматы QuickTime VR (QTVR) или Adobe Flash 8 и Flash 9/10 (SWF). С возможностью создания собственных шаблонов для панорам, кнопок, добавления анимации и звука, автоматическим вращением. Интерфейс программы представлен на рисунке 19.

Рисунок 19 - Pano2VR.

Средства Pano2VR:

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

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

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

Flash Export. Экспорт панорам, включая все графические элементы в виде одного файла SWF формате. Это в значительной степени упрощает процесс размещения панорамы в системы управления контентом, или поместить ее в блоге. Цилиндрические, а также кубические панорамы можно поворачивать автоматически с выбором направления движения, скорости и задержки. Панорамы могут содержать "горячие точки", а также заранее определенные или полностью настраиваемые шаблоны. Встроенный редактор шаблонов, также позволяет добавлять карты, ссылки, логотипы и другую информацию в панораму в удобном для пользователя виде.

QuickTime VR Export. Возможность экспортировать цилиндрические и кубические панорамы в формат QuickTime VR.

Adobe Flash Player - это программа, благодаря которой и будет демонстрироваться экскурсия, возможны и другие варианты (Java-аплета, записываемые на CD, просматриваются с помощью специальных обозревателей экскурсий), но благодаря известности марки Adobe и широкому распространению Flash Player именно он и будет использоваться

Share Point Designer 2007 -WYSIWYG HTML- бесплатный редактор и программа для веб-дизайна от компании Microsoft, замена для Microsoft Office FrontPage и часть семейства SharePoint. Является одним из компонентов пакета Microsoft Office 2007, однако не включен ни в один из комплектов офиса (устанавливается отдельно). Переход в названии от FrontPage к SharePoint Designer связан с его назначением: созданием и дизайном веб-сайтов Microsoft SharePoint. SharePoint Designer имеет один и тот же движок обрисовки HTML, что и Microsoft Expression Web и не полагается на движок Trident браузера Internet Explorer, который менее совместим с общими стандартами.

Yandex Интернет - наиболее современный и поэтому более высокоскоростной и перспективный браузер. На нем будет проводиться тестирование экскурсии, выбор осуществлялся из множества вариантов: Google Chrome (рисунок 2), Chromium (рисунок 22), Хром от Яндекса (рисунок 23), Microsoft Internet Explorer (рисунок 24), Mozilla Firefox (рисунок 25), Opera (рисунок 26), Yandex (рисунок 20) и др.

Рисунок 20 - Yandex браузер.

Рисунок 21 - Google Chrome.

Рисунок 22 - Opera.

Рисунок 23 - Chromium.

Рисунок 24 - Хром от Яндекса.

Рисунок 25 - Internet Explorer.

Рисунок 26 - Mozilla Firefox.

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

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

На основании исследования инструментальных средств разработки программного обеспечения в качестве инструментальных средств разработки виртуальной экскурсии по школе №2 будут использоваться:

Adobe Photoshop CS3 - способен работать с большим количеством форматов, создавать, сохранять, редактировать изменять изображения различными способами. Многофункциональный графический редактор, как нельзя кстати подойдёт для более точного результата объединения фотографий в панораму.

Microsoft ICE version 1.4.4.0 - программа нужна для объединения множества отдельных фотографий одного объекта с правильной последовательностью в одно панорамное изображение.

Pano2VR версия 4.1.0 pro - программа для объединения панорамы в экскурсии.

Adobe flash player 13 plugin - бесплатная программа для просмотра экскурсии.

Яндекс Интернет 14.4.1750.13414 - наиболее новый, удобный и быстрый браузер.

Share Point Designer 2007 - бесплатная программа для редактирования web страниц, HTML-редактор и программа для веб-дизайна от компании Microsoft, замена для Microsoft Office FrontPage и часть семейства SharePoint.

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

Microsoft Office PowerPoint - является частью Microsoft Office. Это позволило PowerPoint стать наиболее распространённой во всем мире программой для создания презентаций. Файлы презентаций PowerPoint часто пересылаются пользователями программы на другие компьютеры, что означает необходимую совместимость с ними программ конкурентов.

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

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

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

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

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

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

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

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

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

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

4. Понятие компьютерной технологии разработки программных средств и ее рабочие места. Имеются некоторые трудности в выработке строгого определения CASE-технологии (компьютерной технологии разработки ПС). CASE - это абревиатура от английского Computer-Aided Software Engineering (Компьютерно. Помогаемая Инженерия Программирования). Но без помощи (поддержки) компьютера ПС уже давно не разрабатываются (используется хотя бы компилятор). В действительности, в это понятие вкладывается более узкий (специальный) смысл, который постепенно размывается (как это всегда бывает, когда какое-либо понятие не имеет строгого определения). Первоначально под CASE понималась инженерия ранних этапов разработки ПС (определение требований, разработка внешнего описания и архитектуры ПС) с использованием программной поддержки (программных инструментов). Теперь под CASE может пониматься и инженерия всего жизненного цикла ПС (включая и его сопровождение), но только в том случае, когда программы частично или полностью генерируются по документам, полученным на указанных ранних этапах разработки. В этом случае CASE-технология стала принципиально отличаться от ручной (традиционной) технологии разработки ПС: изменилось не только содержание технологических процессов, но и сама их совокупность.

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

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

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

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

Различают два класса инструментальных систем технологии программирования: 1)инструментальные системы поддержки проекта и 2) языково-зависимые инструментальные системы. Инструментальная система поддержки проекта - это открытая система, способная поддерживать разработку ПС на разных языках программирования после соответствующего ее расширения программными инструментами, ориентированными на выбранный язык. Такая система содержит ядро (обеспечивающее, в частности, доступ к репозиторию), набор инструментов, поддерживающих управление (management) разработкой ПС, независимые от языка программирования инструменты, поддерживающие разработку ПС (текстовые и графические редакторы, генераторы отчетов и т. п.), а также инструменты расширения системы. Языково-зависимая инструментальная система - это система поддержки разработки ПС на каком-либо одном языке программирования, существенно использующая в организации своей работы специфику этого языка. Эта специфика может сказываться и на возможностях ядра (в том числе и на структуре репозитория), и на требованиях к оболочке и инструментам.

Унифицированный язык моделирования UML Большинство существующих методов объектно-ориентированного анализа и проектирования (ООАП) включают как язык моделирования, так и описание процесса моделирования. Язык моделирования – это нотация (в основном графическая), которая используется методом для описания проектов. Нотация представляет собой совокупность графических объектов, которые используются в моделях; она является синтаксисом языка моделирования. Например, нотация диаграммы классов определяет, каким образом представляются такие элементы и понятия, как класс, ассоциация и множественность. Процесс – это описание шагов, которые необходимо выполнить при разработке проекта. Унифицированный язык моделирования UML (Unified Modeling Language) – это преемник того поколения методов ООАП, которые появились в конце 80 -х и начале 90 -х гг.

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

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

UML выделяют следующие типы диаграмм: – диаграммы вариантов использования (usecase diagrams) – для моделирования бизнес-процессов организации (требований к системе); – диаграммы классов (class diagrams) – для моделирования статической структуры классов системы и связей между ними. На таких диаграммах показывают классы, интерфейсы, объекты и кооперации, а также их отношения. При моделировании объектно-ориентированных систем этот тип диаграмм используют чаще всего. Диаграммы классов соответствуют статическому виду системы с точки зрения проектирования; – диаграммы поведения системы (behavior diagrams); диаграммы взаимодействия (interaction diagrams) – для моделирования процесса обмена сообщениями между объектами. – диаграммы состояний (statechart diagrams) – для моделирования поведения объектов системы при переходе из одного состояния в другое.

– диаграммы деятельностей (activity diagrams) – для моделирования поведения системы в рамках различных вариантов использования или моделирования деятельностей. – диаграммы реализации (implementation diagrams): диаграммы компонентов (component diagrams) – для моделирования иерархии компонентов (подсистем) системы; диаграммы размещения (deployment diagrams) – для моделирования физической архитектуры системы.

Этап 1: до середины 50-х .

Основные затраты связаны с кодированием (в машинных кодах). Появляются автокоды (языки с использованием мнемонических обозначений команд) и трансляторы с них (ассемблеры).

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

Этап 2: середина 50-х – середина 60-х гг.

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

Fortran (1954-1957);

Algol-60 (1958-1960);

Cobol (1959-1961);

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

Этап 3: середина 60-х – начало 70-х гг.

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

Изменяется соотношение затрат на разработку ПО (40% и более тратится на отладку, проектирование и документирование), кодирование – один из самых простых видов работ. Используются и создаются "большие" языки программирования – ПЛ/1, АЛГОЛ-68, СИМУЛА-67, обобщающие и интегрирующие ранее найденные решения.

Появляются развитые системы программирования с оптимизирующими и отладочными трансляторами, макробиблиотеками, библиотеками стандартных программ, специализированных текстовыми редакторами, средствами анализа и диалоговой отладки в терминах входного языка. Разрабатываются развитые операционные системы, первые СУБД, многочисленные системы автоматизации документирования, системы управления программной конфигурацией (отслеживания модификаций и сборки версий ПО).

Этап 4 (“этап кризиса в развитии ПО”): начало 70-х–середина 70-х гг.

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

Получают признание методологии структурного программирования (Дейкстра, 1968г.), формируются основы технологии программирования (язык Паскаль (Н.Вирт), 1971г.).

Этап 5:1976г.– наше время. Этап посткризисного развития инструментальных средств.

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

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

C (начало 1970-х, впервые достаточно полно описан в 1978 г.);

Modula-2 (1978 г., развитие – язык Oberon (1988));

Prolog (1972 г., распространение получил с 1980 г.);

Smalltalk (1970-е годы, в 1980 был представлен как Smalltalk-80);

C++ (начало 1980-х гг., название – 1983, в привычном сегодня виде существует с 1990 г.);

Java (версия Java 1.0 – 1996 г., Java 2.0 – 1998, Java 5 – 2004...);

C# (1998–2001, версия 1.0 – 2000–2002, версия 2.0 – 2003-2005, версия 3.0 – 2004–2008, версия 4.0 – 2008–2010).

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

Контрольные вопросы:

1. Какие действия включает в себя разработка программного продукта?

2. Какие этапы в разработке программ выделяются в рамках Rational Unified Process (RUP)?

3. Что обеспечивает использование инструментальных средств?

4. Какие составные части входят в программу? Назначение каждой из частей.

5. Определения программы и программного обеспечения.

6. Какими свойствами должно обладать программное обеспечение?

7. Какие языки программирования применяют при разработке программ?

8. Определение инструментального программного обеспечения.

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

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

11. Какие этапы выделяют в развитии инструментальных средств разработки ПО?

12. Назначение и основные характеристики компиляторов (ассемблеров) и редакторов связей.

13. Назначение и основные характеристикиредакторов текстов.

14. Назначение и основные характеристикиотладчиков.

15. Назначение и основные характеристикипрограмм создания инсталляторов.

16. Назначение и основные характеристикиредакторов ресурсов.

17. Назначение и основные характеристикипрофилировщиков.

18. Назначение и основные характеристикипрограмм поддержки версий.

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

20. Назначение и основные характеристикигенераторов документации.

21. Назначение и основные характеристикидизассемблеров и декомпиляторов.

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

23. Назначение и основные характеристикипрограмм-вериферов и контейнеров.

24. Назначение и основные характеристики программ для защиты разрабатываемого программного обеспечения (протекторов).

25. Назначение и основные характеристикиSDK.

26. Назначение и основные характеристики парсеров.

27. Назначение технологических стандартов.


ТЕМА: Методологии разработки ПО.

Литература: 1. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения.

2. Гецци К., Джазайери М., Мандриоли Д. Основы инженерии программного обеспечения.

3. Камаев В. А., Костерин В. В. Технологии программирования.

Рассмотрим понятия методологии, метода и средства.

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

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

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

Методология - это реализация стандарта. Сами стандарты лишь говорят о том, что должно быть, оставляя свободу выбора и адаптации.

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

Методологии представляют собой ядро теории управления разработкой программного обеспечения.

В зависимости от используемой модели жизненного цикла методологии делятся на:

Водопадные (каскадные);

Итерационные (спиральные).

Также существует и более общая классификация на:

Прогнозируемые;

Адаптивные.

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

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

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

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

Рис. 1. Каскадная модель жизненного цикла.

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

Преимущества применения каскадного способа:

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

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

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

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

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

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

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

Рис. 2. Каскадная модель ЖЦ на практике.

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

Для преодоления перечисленных проблем в середине 80-х годов была предложена спиральная модель жизненного цикла (рис.3).

Рис. 3. Спиральная (итерационная) модель ЖЦ.

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

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

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

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

Спиральная модель определяет четыре действия, представляемые отдельными секторами спирали:

1. Планирование - определение целей, вариантов и ограничений.

2. Анализ риска - анализ вариантов и распознавание/выбор риска.

3. Конструирование - разработка продукта следующего уровня.

4. Оценивание - оценка заказчиком текущих результатов конструирования.

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

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

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

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

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

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

Достоинства спиральной модели:

Наиболее реально (в виде эволюции) отображает разработку программного обеспечения;

Позволяет явно учитывать риск на каждом витке эволюции разработки;

Включает шаг системного подхода в итерационную структуру разработки;

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

Недостатки спиральной модели:

Новизна (отсутствует достаточная статистика эффективности модели);

Повышенные требования к заказчику;

Трудности контроля и управления временем разработки.

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

Rational Unified Process (RUP)

Гибкие методологии разработки (SCRUM, KANBAN, DSDM, MSF, ALM, XP)

Гибкая методология разработки (англ. Agile software development).

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

Agile-методы делают упор на непосредственное общение лицом к лицу. Большинство agile-команд расположены в одном офисе. Как минимум она включает и «заказчиков» (заказчики которые определяют продукт, также это могут быть менеджеры продукта, бизнес-аналитики или клиенты). Офис может также включать тестировщиков, дизайнеров интерфейса, технических писателей и менеджеров.

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

SCRUM - методология, предназначенная для небольших команд (до 10 человек). Весь проект делится на итерации (спринты) продолжительностью 30 дней каждый. Выбирается список функций системы, которые планируется реализовать в течение следующего спринта. Самые важные условия - неизменность выбранных функций во время выполнения одной итерации и строгое соблюдение сроков выпуска очередного релиза, даже если к его выпуску не удастся реализовать весь запланированный функционал. Руководитель разработки проводит ежедневные 20 минутные совещания, которые так и называют - scrum, результатом которых является определение функции системы, реализованных за предыдущий день, возникшие сложности и план на следующий день. Такие совещания позволяют постоянно отслеживать ход проекта, быстро выявлять возникшие проблемы и оперативно на них реагировать.

KANBAN – гибкая методология разработки программного обеспечения, ориентированная на задачи.

Основные правила:

Визуализация разработки:

o разделение работы на задачи;

o использование отметок о положение задачи в разработке;

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

Измерение времени цикла (среднее время на выполнение одной задачи) и оптимизация процесса.

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

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

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

Вычисление времени на выполнение усредненной задачи.

DYNAMIC SYSTEM DEVELOPMENT METHOD (DSDM) появился в результате работы консорциума из 17 английских компаний. Целая организация занимается разработкой пособий по этой методологии, организацией учебных курсов, программ аккредитации и т.п. Кроме того, ценность DSDM имеет денежный эквивалент.

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

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

Базовые принципы, на которых строится DSDM:

Активное взаимодействие с пользователями;

Частые выпуски версий;

Самостоятельность разработчиков в принятии решений;

Тестирование в течение всего цикла работ.

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

MICROSOFT SOLUTIONS FRAMEWORK (MSF) - методология разработки программного обеспечения, предложенная корпорацией Microsoft. MSF опирается на практический опыт Microsoft и описывает управление людьми и рабочими процессами в процессе разработки решения.

Базовые концепции и принципы модели процессов MSF:

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

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

Гибкость – готовность к изменяющимся проектным условиям;

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

Поощрение свободного общения внутри проекта;

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

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

Application Lifecycle Management (ALM) - разработанная и поддерживаемая компанией Borland.

Extreme Programming (XP) -экстремальное программирование, поддерживаемое открытым сообществом независимых разработчиков.

Реферат

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ (ГОСТ 19781-90). Также - совокупность программ, процедур и правил, а также документации, относящихся к функционированию системы обработки данных (СТ ИСО 2382/1-84).

ИНСТРУМЕНТАЛЬНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ – программное обеспечение, предназначенное для использования в ходе проектирования, разработки и сопровождения программ. Обычно этот термин применяется для акцентирования отличия данного класса ПО от прикладного и системного программного обеспечения.

КОМПИЛЯТОР – транслятор, выполняющий преобразование программы, составленной на исходном языке, в объектный модуль.

ИНТЕРПРЕТАТОР – программа (иногда аппаратное средство), анализирующая команды или операторы программы и тут же выполняющая их.

ОПЕРАЦИОННАЯ СИСТЕМА - комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой - предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений.

ПРИКЛАДНАЯ ПРОГРАММА - программа, предназначенная для выполнения определенных пользовательских задач и рассчитанная на непосредственное взаимодействие с пользователем.

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

VISUALBASICFORAPPLICATION - немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office (включая версии для Mac OS), а также во многие другие программные пакеты, такие как AutoCAD, SolidWorks, CorelDRAW, WordPerfect и ESRI ArcGIS.

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

Классификация программного обеспечения:

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

1) Текстовые редакторы

4) Компиляторы

5) Интерпретаторы

6) Линковщики

8) Ассемблеры

9) Отладчики

10) Профилировщики

11) Генераторы документации

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

2. Компилятор или интерпретатор. Исходный текст с помощью программы-компилятора переводится в промежуточный объектный код.

Результат работы: Рассмотрено программное обеспечение, его функции и виды, в частности инструментальное программное обеспечение, его сущность, задачи. В третьей главе рассмотрен Microsoft Visual Basic как средство разработки программного обеспечения и его диалект - Microsoft Visual Basic forApplication. В курсовой работе реализован алгоритм решения финансово-экономической задачи с использованием языка программирования Pascal.

Введение

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

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

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

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

Для наглядности мы рассмотрим инструментальное программное обеспечение (объект исследования) на примере программного комплекса VisualBasicforApplication (предмет исследования), применяемого для программирования в среде MicrosoftOffice – самого распространенного и популярного офисного пакета.

1. Программное обеспечение

1.1 Понятие и сущность программного обеспечения

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

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

К программному обеспечению (ПО) относится также вся область деятельности по проектированию и разработке ПО:

1) технология проектирования программ (например, нисходящее проектирование, структурное и объектно-ориентированное проектирование);

2) методы тестирования программ;

3) методы доказательства правильности программ;

4) анализ качества работы программ;

5) документирование программ;

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

Существует множество различных определений ПО. Вообще, программное обеспечение - совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ (ГОСТ 19781-90). Также - совокупность программ, процедур и правил, а также документации, относящихся к функционированию системы обработки данных (СТ ИСО 2382/1-84).

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

В компьютерном сленге часто используется слово софт от английского слова software, которое в этом смысле впервые применил в статье в American Mathematical Monthly математик из Принстонского университета Джон Тьюки (англ. JohnW. Tukey) в 1958 году.

Другие определения:

1) ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - это совокупность программ, позволяющих осуществить на компьютере автоматизированную обработку информации.

2) ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ (математическое обеспечение электронной вычислительной машины), совокупность программ системы обработки данных и программных документов, необходимых для реализации программ на электронной вычислительной машине.

3) ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - совокупность программ для управления процессом работы компьютера, автоматизации программирования.

4) ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - комплекс компьютерных программ, обеспечивающий обработку или передачу данных.

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

1.2 Функции программного обеспечения

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

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

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

3. Информационно-командные. Осуществляют проверку соответствия программного кода принципам системы и создание логической структуры информации и осуществляют его исполнение.

4. Интерфейсные. Обеспечивают обработку и интерпретацию программного кода в формат отображения доступный для восприятия пользователем. Создает благоприятную среду для взаимодействия «Компьютер-Человек, Человек-Компьютер».

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

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

1.3 Виды программного обеспечения

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

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

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

1) управление ресурсами компьютера;

2) создание копий используемой информации;

3) проверка работоспособности устройств компьютера;

4) выдача справочной информации о компьютере и др.;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3) проблемно-ориентированные - направлены на решение определенной задачи (проблемы) в конкретной предметной области (банковские пакеты, пакеты бухгалтерского учета, финансового менеджмента, правовых справочных систем и т. д.).

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

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

2. Инструментальное программное обеспечение

2.1 Сущность и понятие инструментального программного обеспечения

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

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

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

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

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

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

3. Редактор связей или сборщик, который выполняет связывание объектных модулей и формирует на выходе работоспособное приложение - исполнимый код.

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

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

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

1) Borland Delphi - предназначен для решения практически любых задачи прикладного программирования.

2) Borland C++ Builder - это отличное средство для разработки DOS и Windows приложений.

3) Microsoft Visual Basic - это популярный инструмент для создания Windows-программ.

4) Microsoft Visual C++ - это средство позволяет разрабатывать любые приложения, выполняющиеся в среде ОС типа Microsoft Windows

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

2.2 Задачи и функции инструментального программного обеспечения

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

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

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

2. Перевод текста создаваемой программы в машинно-ориентированный код, доступный для распознавания ЭВМ. В случае значительного объема создаваемой программы, она разбивается на отдельные модули и каждый из модулей переводится отдельно.

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

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

2.3 Виды инструментального программного обеспечения

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

1) Текстовые редакторы

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

4) Компиляторы

5) Интерпретаторы

6) Линковщики

7) Парсеры и генераторы парсеров (см. Javacc)

8) Ассемблеры

9) Отладчики

10) Профилировщики

11) Генераторы документации

12) Средства анализа покрытия кода

13) Средства непрерывной интеграции

14) Средства автоматизированного тестирования

15) Системы управления версиями и др.

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

Текстовые редакторы.

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

Типы текстовых редакторов .

Условно выделяют два типа редакторов: потоковые текстовые редакторы и интерактивные.

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

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

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

Текстовые редакторы предназначены для создания и редактирования текстовых документов. Наиболее распространенными являются MS WORD, Лексикон. Основными функциями текстовых редакторов являются:

1) работа с фрагментами документа,

2) вставка объектов созданных в других программах

3) разбивка текста документа на страницы

4) ввод и редактирование таблиц

5) ввод и редактирование формул

6) форматирование абзаца

7) автоматическое создание списков

8) автоматическое создание оглавления.

Известны десятки текстовых редакторов. Наиболее доступными являются NOTEPAD(блокнот), WORDPAD, WORD. Работа конкретного редактора текста определяется обычно функциями, назначение которых отражено в пунктах меню и в справочной системе.

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

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

1) текстовый редактор

2) компилятор и/или интерпретатор

3) средства автоматизации сборки

4) отладчик.

Иногда содержит также средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов - для использования при объектно-ориентированной разработке ПО. Хотя, и существуют среды разработки, предназначенные для нескольких языков программирования - такие, как Eclipse, NetBeans, Embarcadero RAD Studio, Qt Creator или Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования - как, например, Visual Basic, Delphi, Dev-C++.

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

SDK .

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

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

Поставщики SDK иногда подменяют термин Software в словосочетании Software Development Kit на более точное слово. Например, «Microsoft» и «Apple» предоставляют Driver Development Kits (DDK) для разработки драйверов устройств, а «PalmSource» называет свой инструментарий для разработки «PalmOS Development Kit (PDK)».

Примеры SDK :

5) Java Development Kit

6) Opera Devices SDK

Компиляторы.

Компилятор -

1) Программа или техническое средство, выполняющее компиляцию.

2) Машинная программа, используемая для компиляции.

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

4) Программа, переводящая текст программы на языке высокого уровня в эквивалентную программу на машинном языке.

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

Компиляция -

1) Трансляция программы на язык, близкий к машинному.

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

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

Виды компиляторов :

1) Векторизующий. Транслирует исходный код в машинный код компьютеров, оснащённых векторным процессором.

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

3) Диалоговый.

4) Инкрементальный. Повторно транслирует фрагменты программы и дополнения к ней без перекомпиляции всей программы.

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

6) Компилятор компиляторов. Транслятор, воспринимающий формальное описание языка программирования и генерирующий компилятор для этого языка.

7) Отладочный. Устраняет отдельные виды синтаксических ошибок.

8) Резидентный. Постоянно находится в основной памяти и доступен для повторного использования многими задачами.

9) Самокомпилируемый. Написан на том же языке, с которого осуществляется трансляция.

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

Виды компиляции :

1) Пакетная. Компиляция нескольких исходных модулей в одном пункте задания.

2) Построчная.

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

Структура компилятора .

Процесс компиляции состоит из следующих этапов:

1) Лексический анализ. На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем.

2) Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в дерево разбора.

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

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

5) Генерация кода. Из промежуточного представления порождается код на целевом языке.

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

Трансляция и компоновка .

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

Интерпретаторы.

Интерпретатор (языка программирования) -

1) Программа или техническое средство, выполняющее интерпретацию.

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

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

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

Типы интерпретаторов .

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

Интерпретатор компилирующего типа - это система из компилятора, переводящего исходный код программы в промежуточное представление, например, в байт-код или p-код, и собственно интерпретатора, который выполняет полученный промежуточный код (так называемая виртуальная машина). Достоинством таких систем является большее быстродействие выполнения программ (за счёт выноса анализа исходного кода в отдельный, разовый проход, и минимизации этого анализа в интерпретаторе). Недостатки - большее требование к ресурсам и требование на корректность исходного кода. Применяется в таких языках, как Java, PHP, Python, Perl (используется байт-код), REXX (сохраняется результат парсинга исходного кода), а также в различных СУБД (используется p-код).

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

Некоторые интерпретаторы (например, для языков Лисп, Scheme, Python, Бейсик и других) могут работать в режиме диалога или так называемого цикла чтения-вычисления-печати (англ. read-eval-printloop, REPL). В таком режиме интерпретатор считывает законченную конструкцию языка (например, s-expression в языке Лисп), выполняет её, печатает результаты, после чего переходит к ожиданию ввода пользователем следующей конструкции.

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

Следует также отметить, что режимы интерпретации можно найти не только в программном, но и аппаратном обеспечении. Так, многие микропроцессоры интерпретируют машинный код с помощью встроенных микропрограмм, а процессоры семейства x86, начиная с Pentium (например, на архитектуре Intel P6), во время исполнения машинного кода предварительно транслируют его во внутренний формат (в последовательность микроопераций).

Алгоритм работы простого интерпретатора :

2. проанализировать инструкцию и определить соответствующие действия;

3. выполнить соответствующие действия;

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

Достоинства и недостатки интерпретаторов .

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

2) Как правило, более совершенные и наглядные средства диагностики ошибок в исходных кодах.

3) Упрощение отладки исходных кодов программ.

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

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

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

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

Компоновщик .

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

Для связывания модулей компоновщик использует таблицы имён, созданные компилятором в каждом из объектных модулей. Такие имена могут быть двух типов:

1) Определённые или экспортируемые имена - функции и переменные, определённые в данном модуле и предоставляемые для использования другим модулям.

2) Неопределённые или импортируемые имена - функции и переменные, на которые ссылается модуль, но не определяет их внутри себя.

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

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

Ассемблер.

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

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

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

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

Список отладчиков .

1) AQtime - коммерческий отладчик для приложений, созданных для.NET Framework версии 1.0, 1.1, 2.0, 3.0, 3.5 (включая ASP.NET приложения), а также для Windows 32- и 64-битных приложений.

2) DTrace - фреймворк динамической трассировки для Solaris, OpenSolaris, FreeBSD, Mac OS X и QNX.

3) Electric Fence - отладчик памяти.

4) GNU Debugger (GDB) - отладчик программ от проекта GNU.

5) IDA - мощный дизассемблер и низкоуровневый отладчик для операционных систем семейства Windows и Linux.

6) Microsoft Visual Studio - среда разработки программного обеспечения, включающая средства отладки от корпорации Microsoft.

7) OllyDbg - бесплатный низкоуровневый отладчик для операционных систем семейства Windows.

8) SoftICE - низкоуровневый отладчик для операционных систем семейства Windows.

9) Sun Studio - среда разработки программного обеспечения, включающая отладчик dbx для ОС Solaris и Linux, от корпорации Sun Microsystems.

10) Dr. Watson - стандартный отладчик Windows, позволяет создавать дампы памяти.

11) TotalView - один из коммерческих отладчиков для UNIX.

12) WinDbg - бесплатный отладчик от корпорации Microsoft.

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

Обычно генератор анализирует исходный код программы, выделяя синтаксические конструкции, соответствующие значимым объектам программы (типам, классам и их членам/свойствам/методам, процедурам/функциям и т. п.). В ходе анализа также используется мета-информация об объектах программы, представленная в виде документирующих комментариев. На основе всей собранной информации формируется готовая документация, как правило, в одном из общепринятых форматов - HTML, HTMLHelp, PDF, RTF и других.

Документирующие комментарии .

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

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

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

3. Visual Basic for Applications

программный обеспечение операционный системный

3.1 Сущность VisualBasic и его краткая история

Microsoft Visual Basic (VB) - средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка - языка Бейсик, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса. (см. табл.).

Visual Basic (основные характеристики)

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

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

1. май1991 - выпущен Visual Basic 1.0 дляMicrosoft Windows. За основу языка был взят синтаксис QBasic, а новшеством, принесшим затем языку огромную популярность, явился принцип связи языка и графического интерфейса.

2. сентябрь 1992 - выпущен Visual Basic 1.0 под DOS. Он не был полностью совместим с Windows-версией VB, поскольку являлся следующей версией QuickBASIC и работал в текстовом режиме экрана.

3. ноябрь 1992 - выпущен Visual Basic 2.0. Среда разработки стала проще в использовании и работала быстрее.

4. летом 1993 - вышел в свет Visual Basic 3.0 в версиях Standard и Professional. Ко всему прочему, в состав поставки добавился движок для работы с базами данных Access.

5. август 1995 - Visual Basic 4.0 - версия, которая могла создавать как 32-х, так и 16-разрядные Windows-программы.

6. февраль 1997 - Visual Basic 5.0 - начиная с этой версии, стало возможно, наряду с обычными приложениями, разрабатывать COM-компоненты.

7. В середине 1998 - вышла Visual Basic 6.0. После этого Microsoft резко изменила политику в отношении языков семейства Basic. Вместо развития Visual Basic, был создан абсолютно новый язык Visual Basic .NET.

8. В 2005 году вышла новая версия Visual Basic, в комплекте Visual Studio. Порадовала она новым интерфейсом и возможностями. Язык основан на Visual Basic.NET.

9. В конце 2007 Microsoft выпустила новую версию Visual Basic - Visual Basic 2008, которая также была основана на Visual Basic.NET.

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

1. Классический Visual Basic (версии 5-6) Этот язык очень сильно привязан к своей среде разработки и к операционной системе Windows, являясь исключительно инструментом написания Windows-приложений

2. VisualBasicforApplications (VBA) Это средство программирования, практически ничем не отличающееся от классического Visual Basic, которое предназначено для написания макросов и других прикладных программ для конкретных приложений. Наибольшую популярность получил благодаря своему использованию в пакете Microsoft Office. Широкое распространение Visual Basic for Applications в сочетании с изначально недостаточным вниманием к вопросам безопасности привело к широкому распространению макровирусов.

3. VisualBasicScriptingEdition (VBScript) Скриптовый язык, являющийся несколько усечённой версией обычного Visual Basic. Используется в основном для автоматизации администрирования систем Windows, а также для создания страниц ASP и сценариев для Internet Explorer.

3.2 VisualBasicforApplication интерфейс, основные функции и возможности

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

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

1) окно Проекта (рис.2), отображающее структуру создаваемого проекта.

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

3) закладка Свойств (рис. 4), отображающая установленные к указанному объекту параметры и дающая возможность изменить указанные настройки.

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

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

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

Нестандартное диалоговое окно создаётся в VBA посредством добавления объекта UserForm в проект. Этот объект представляет собой пустое диалоговое окно; оно имеет строку заголовка и кнопку закрытия, но в нём отсутствуют какие-либо другие элементы управления. Нестандартное диалоговое окно создаётся путем добавления элементов управления в объект UserForm и обычно называемый просто формой (Рис. 5).

Каждый объект UserForm имеет свойства, методы и события, наследуемые им от класса объектов UserForm.

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

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

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

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

Для отображения нестандартного диалогового окна используется метод Show объекта UserForm. Если в настоящий момент форма не загружена в память, метод Show загружает форму и отображает её. Если форма уже загружена, метод Show просто отображает её.

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

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

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

VBA позволяет программировать табличные функции. Чтобы создать отдельный рабочий лист для программного модуля, предусмотрена закладка Insert Module из меню Visual, команда Module из меню Insert Macro. После этого появится новый рабочий лист "Modele1". В программном модуле нужно описать функцию на языке VBA. В окне программного модуля можно работать, как в окне небольшого текстового редактора.

Встраивание функций осуществляется командой Object Browser из меню View. Функции, определенные пользователем, рассматриваются в программе как самостоятельные объекты. VBA обладает значительным набором встроенных функций, разделяя их на типы.

Visual Basic позволяет резервировать переменные, с указанием размера и без него, работать с различными типами данных, использовать константы, работать с математическими операторами и функциями, использовать дополнительные операторы. Предусмотрено использование операторов циклов For Next, Do, объектов типа “таймер” (невидимый секундомер в программе). Точность установления времени в программе составляет 1 миллисекунду, или 1/1000 сек. Запущенный таймер постоянно работает - т.е. выполняется соответствующая процедура обработки прерывания через заданный интервал времени - до тех пор, пока пользователь не остановит таймер или не отключит программу.

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

Если обобщить все функции программы, то Visual Basic forApplication позволяет:

1) работать со средствами управления

Достоинства :

1. Высокая скорость создания приложений с графическим интерфейсом для MS Windows.

2. Простой синтаксис, позволяющий очень быстро освоить язык.

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

4. Защита от ошибок, связанных с применением указателей и доступом к памяти. Этот аспект делает Visual Basic приложения более стабильными, но также является объектом критики.

5. Возможность использования большинства WinAPI функций для расширения функциональных возможностей приложения. Данный вопрос наиболее полно исследован Дэном Эпплманом, написавшим книгу «Visual Basic Programmer"s Guide to the Win32 API».

Критика :

1. Часто критике подвергаются такие аспекты Visual Basic, как возможность отключить средства слежения за объявленными переменными, возможность неявного преобразования переменных, наличие типа данных «Variant». По мнению критиков, это даёт возможность писать крайне плохой код. С другой стороны, это можно рассматривать как плюс, так как VB не навязывает «хороший стиль», а даёт больше свободы программисту.

2. Отсутствие указателей, низкоуровневого доступа к памяти, ASM-вставок. Несмотря на то, что парадигма Visual Basic позволяет среднему VB-программисту обходиться без всего этого, перечисленные вещи также нередко становятся объектами критики. И хотя, используя недокументированные возможности и определённые ухищрения, всё это можно реализовать и на VB (например, с помощью функций для получения указателей VarPtr(), StrPtr() и ObjPtr()); пользоваться этими трюками гораздо сложнее, чем, например, на Си++.

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

4. Практическая часть

4.1 Постановка задачи

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

pv – текущая внутренняя стоимость акции

c – ожидаемое поступление от рассматриваемого актива

r – норма доходности, ожидаемая инвестором для дохода с соответствующим уровнем риска

n – фактор времени (в месяцах).

Выполнить анализ рынка и упорядочить результат по возрастанию полученных данных.

4.2 Текст программы на языке Pascal

pv: array of real;

writeLn (‘Введите ожидаемое поступление от ‘,i,’-го актива c:’);

writeLn (‘Введите норму доходности, ожидаемую инвестором r:’);

pv:=c/exp(ln(1+r)*i);

writeLn (‘текущая внутренняя стоимость актива равна’, pv[i]:1:3);

writeLn (‘Внутренняя стоимость актива равна’, s);

for j:=1 to 4 do

if pv[j] > pv then

writeLn (‘Стоимость активов, отсортированная по возрастанию’);

for i:=1 to 5 do

writeLn (pv[i]:1:3);

4.3 Контрольный пример

4.4Результат выполнения программы на контрольном примере

Заключение

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

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

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

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

Именно с этой целью Microsoft был разработан программный комплекс VisualBasicforApplication, позволяющий облегчить процесс программирования и давший возможность заниматься прикладным программированием пользователям, а не программистам. Данная возможность была реализована в первую очередь путем создания раздела программы – «Редактор сценариев» и возможности записывать и исполнять «Макросы», как отдельную разновидность графически программируемых модулей. Реализована возможность создания приложений с графическим интерфейсом для MS Windows. Также достоинством данного вида инструментального программного обеспечения является простой синтаксис, позволяющий очень быстро освоить язык, и применять его для программирования во всех стандартных приложениях MicrosoftOffice.

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

1. Алгоритмические языки реального времени /Под ред. Янга С./ 2004 г.

2. Журнал PC Magazine Russian Edition №2 2008г. Компьютер сегодня.

3. Информатика. /Под ред. Могилев А.В., Пак Н.И., Хеннер Е.К/ – М.: ACADEMIA, 2000.

4. Информатика и информационные технологии: Учебник /Под ред. Романова Д.Ю./ ООО «издательство «Эксмо», 2007.

5. Новейшая энциклопедия персонального компьютера /Под ред. Леонтьева В. /Москва, 1999 год. – 271 с.

6. Новые языки программирования и тенденции их развития /Под ред. Ушковой В./ 2001 г.

7. Педагогика /Под ред. Пидкасистого П.И./ – М.: Педагогическое общество Россия, 2000.

8. Программирование для Microsoft Excel 2000 за 21 день. /Под ред. Хариса М./ – М.: Вильямс, 2000.

9. Симонович С. Информатика: базовый курс. Учеб. для ВУЗов. СПб, Питер, 2002 г.

10. С Excel 2000 без проблем. /Под ред. Ковальски/ – М.: Бином, 2000.

11. «Эффективная работа в Windows 98» /Под ред. Стинсона К./ 2000 год. – 247 с.

12. Языки программирования. кн.5 /Под ред. Ваулина А.С./ 2003 г.

13. Языки программирования: разработка и реализация /Под ред. Терренса П./ 2001 г.

14. Электронный учебник по информатике. Алексеев Е.Г. http://www.stf.mrsu.ru/economic/lib/Informatics/text/Progr.html\