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

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

Введение

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

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

Этапы, роли, инструменты…

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

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

Определение требований

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

Какие инструменты требуются бизнес-аналитику? Потребность в инструментах определяется масштабом проекта, требованиями заказчика к оформлению документации, стандартами, принятыми в той или иной компании-разработчике. Бизнес-аналитик может обойтись и текстовым процессором (например, Microsoft Word), изложив требования в виде текста. Однако в последнее время описание требований принято иллюстрировать UML- и IDEF0-диаграммами, описывающими сценарии взаимодействия пользователя с продуктом, порядок передачи сообщений от одних объектов к другим, взаимодействие объектов друг с другом, потоки работ и изменение состояний объектов. Для создания таких диаграмм можно применять Microsoft Visio, Rational Rose, Rational XDE, Borland Together, для создания диаграмм в стандарте IDEF0 наиболее активно используется CA AllFusion Process Modeler (ранее носивший название BPwin).

Какой именно инструмент подходит для данного проекта, во многом зависит от постановки процессов разработки. Если бизнес-аналитику нужно только проиллюстрировать проектную документацию, то выбор инструмента не принципиален - лишь бы можно было нарисовать с его помощью ту или иную диаграмму. Если же бизнес-аналитик должен не просто сделать иллюстрацию, а создать модель для последующего использования системными аналитиками, разработчиками и специалистами по тестированию на последующих этапах проекта, то выбор инструмента определяется его способностью к интеграции со средствами разработки, которые со значительной степенью вероятности будут использоваться в качестве инструментария реализации кода. Из наиболее технологически совершенных современных пар «средство разработки - средство моделирования» стоит отметить такие, как Visual Studio .NET - Rational XDE, Visual Studio .NET - Borland Together, Borland JBuilder - Borland Together.

Помимо текстовых редакторов и средств моделирования, бизнес-аналитики могут применять средства управления требованиями, позволяющие хранить структурированный и систематизированный список требований к продукту в какой-либо базе данных и обращаться к нему на последующих этапах, связывая требования с реализующими их составными частями продукта и тестами, проверяющими соответствие продукта требованиям, а также корректно отслеживать изменения в требованиях, которые возникают практически в каждом проекте, как бы тщательно ни проводилось исследование, и влияние этих изменений на результаты последующей работы. Из наиболее известных сегодня средств управления требованиями следует отметить RequisitePro (IBM/Rational), DOORS (Telelogic) и CaliberRM (Borland). Собственно, при надлежащей организации процесса разработки и при наличии необходимых шаблонов техническое задание можно сгенерировать с помощью средства управления требованиями и даже соблюсти при этом требования российских государственных стандартов.

Типичный интерфейс средства управления требованиями (Borland Caliber RM)

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

Проектирование

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

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

Какие инструменты применяются на этом этапе? Для создания диаграмм классов и диаграмм развертывания используются вышеперечисленные инструменты UML-моделирования. Для проектирования данных обычно применяют такие инструменты, как CA AllFusion Data Modeler (бывший ERwin), Sybase Power Designer, Oracle Designer, а также аналогичные инструменты компаний Embarcadero и Popkin Software. Для СУБД, разработанных компанией Microsoft, можно достаточно успешно применять и Microsoft Visio. Перечисленные инструменты позволяют создать как минимум скрипт для генерации базы данных, а различия между ними заключаются в способах управления генерацией серверного кода, связанного с созданием триггеров и хранимых процедур.

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

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

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

Разработка продукта

На этапе собственно разработки создается код приложения в соответствии с техническим проектом, в том числе и серверный код, реализующий функциональность, отсутствующую в модели данных. На этом этапе основным инструментом, обязательным к применению, является средство разработки приложений. Выбор средства разработки определяется в первую очередь платформой (Windows, .NET, Java/J2EE, Linux/UNIX) и архитектурой (приложения с графическим интерфейсом, консольные приложения и службы, Web-приложения) и в настоящее время достаточно разнообразен. Средства разработки Java/J2EE-приложений производят компании IBM, Oracle, Borland, средства разработки Windows-приложений - Microsoft, Borland, Sybase, средства разработки.NET-приложений - Microsoft и Borland, средства разработки приложений для Linux - Borland и некоторые другие компании.

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

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

На этапе разработки приложения средства моделирования тоже применяются, особенно в том случае, когда они могут осуществлять не только генерацию кода на различных языках программирования, но и поддерживать обратное проектирование, создавая диаграмму классов на основе готового приложения либо позволяя синхронно редактировать и код, и модель. Функция синхронного изменения кода и модели существенно упрощает многие процессы, сопровождающие собственно разработку, так что если есть возможность выбора инструментов, то стоит обратить внимание на ее поддержку (например, синхронное изменение кода и модели поддерживают некоторые редакции инструмента UML-моделирования Borland Together).

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

Тестирование и оценка качества

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

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

Основными производителями средств тестирования в настоящее время являются компании Compuware, Segue, Mercury Interactive, IBM/Rational, Borland. Каждая из них производит несколько инструментов автоматизированного тестирования, включая средства нагрузочного тестирования, проверки пользовательских интерфейсов, тестирования ошибок исполнения.

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

Если приложение предназначено для работы под управлением различных операционных систем и их языковых версий (например, разных 32-разрядных версий и редакций Microsoft Windows), то специалистам по тестированию могут пригодиться средства создания виртуальных машин, позволяющие иметь на одном компьютере несколько различных операционных систем, загруженных одновременно, и организовывать между ними сетевое взаимодействие (о продуктах данной категории мы планируем рассказать в отдельной статье). Из ПО такого класса широко распространены продукты компаний Microsoft и VMWare. При тестировании программ для установки приложений могут применяться также средства резервного копирования и восстановления образов жестких дисков, выпускаемые компаниями Symantec, PowerQuest и др.

Документирование

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

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

На основе руководства пользователя с помощью специальных инструментов обычно генерируются файлы справочной системы. В простейшем случае файл справочной системы можно создать с помощью Microsoft Word и утилит от Microsoft для создания help-файлов, включаемых в состав многих средств разработки, но при большом объеме работы нередко используются специализированные средства таких компаний, как Blue Sky Software, EC Software, JGsoft.

Внедрение и сопровождение

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

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

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

Если над какой-либо частью проекта работает более одного человека, полезными при разработке могут оказаться средства контроля версий (наиболее популярными из них являются Merant PVCS Version Manager и Microsoft Visual SourceSafe). Нередко их применяют при создании не только кода приложения, но и документов (например, технического задания) либо моделей. В крупных проектах часто используются и средства управления изменениями. Подобные продукты позволяют хранить в единой базе данных все составные части проекта и их версии и упрощают управление версиями кода, моделей, требований, а также дают возможность отслеживать влияние изменений в одной части проекта на остальные его части. Из самых популярных сегодня средств управления изменениями следует отметить продукты компаний Borland и IBM/Rational.

Ни один проект не обходится без человека, несущего за него ответственность и осуществляющего планирование деятельности всех специалистов и управление всеми процессами разработки. Хотя планировать работу можно и на бумаге, но в последнее время основным инструментом руководителя проекта (а в крупных проектах - менеджеров, отвечающих за составные части проекта) служит какое-либо специализированное средство управления проектами. Лидером среди продуктов данной категории является семейство продуктов Microsoft Project.

Пример плана проекта разработки программного продукта (Microsoft Project)

Заключение

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

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

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

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

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

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

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

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

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

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

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

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

редакторы,·

анализаторы,·

преобразователи,·

инструменты, поддерживающие процесс выполнения программ.

Редакторы поддерживают конструирование (формирование) тех или иных программных документов на различных этапах жизненного цикла.

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

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

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

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

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

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

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

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

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

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

Для таких инструментальных сред характерно,

во-первых, использование как программных, так и аппаратных инструментов, и,

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

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

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

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

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

(рис. 16.1): ·

среды программирования, ·

рабочие места компьютерной технологии,·

инструментальные системы технологии программирования.

Среда программирования предназначена

в основном для поддержки процессов программирования (кодирования), тестирования и отладки ПС.

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

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

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

Рис. 16.1. Основные классы инструментальных сред разработки и сопровождения ПС.

3. Инструментальные среды программирования.

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

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

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

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

Различают следующие классы инструментальных сред программирования (см. рис. 14.2): ·

среды общего назначения,·

языково-ориентированные среды.

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


Рис.16.2. Классификация инструментальных сред программирования.

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

Такие среды разделяются на два подкласса: ·

интерпретирующие среды, ·

синтаксически-управляемые среды.

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

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

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

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

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

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

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

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

В настоящее время компьютерную технологию разработки ПС можно характеризовать

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

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

Программной поддержки прототипирования.

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

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

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

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

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

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

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

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

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

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

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


Рис. 16.3. Жизненный цикл программного средства при использовании компьютерной технологии.

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

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

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

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

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

Автоматизированный контроль спецификаций

Инструментальные системы технологии программирования.

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

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

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

комплексность, ·

ориентированность на коллективную разработку, ·

технологическая определенность, ·

интегрированность.

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

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

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

Интегрированность компьютерной поддержки означает:

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

Интегрированность по пользовательскому интерфейсу,

Интегрированность по действиям (функциям),

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

Интегрированность по пользовательскому интерфейсу означает, что все инструменты объединены единым пользовательским интерфейсом.

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

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

база данных разработки (репозиторий),·

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

интерфейсы.

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

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

Интерфейсы разделяются на

1)пользовательский

2) системные.

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

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

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

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

1)инструментальные системы поддержки проекта и

2) языково-зависимые инструментальные системы.

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

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

Примером такой системы является среда поддержки программирования на Аде (APSE ).


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

Реферат

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ (ГОСТ 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\

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

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


Рис. 6.3. Общая структура типовой технологической системы поддержки разработки

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

Один из таких проектов - Gandalf - ориентирован на ав­томатизированную генерацию систем разработки программного обеспечения. Исследования, выполняемые в рамках проекта Gandalf, касаются трех аспектов поддержки проектирования ПО: управление проектом, контроль версий и инкрементное программирование, а также интеграция их в единую среду. Управление в Gandalf-среде базируется на предположении, что разрабатываемый проект дол­жен трактоваться как множество абстрактных типов данных, над которыми могут выполняться лишь определенные операции. Средством, реализующим данную концепцию, явилась система SDC (Software Development Control), представляю­щая собой набор программ, первоначально реализованных на языке Shell в систе­ме UNIX, а позднее переведенная на язык С.

Исследования в области контроля версий были начаты еще Л. Коопридером на базе проекта FAFOS , где изначально анализировались возможности создания семейства операционных систем. Была разработана нота­ция для описания взаимодействия между подсистемами, для описания различ­ных версий подсистем (исходного и объектного кода, документации и т. п.) и для описания действующих на этапе разработки механизмов (компиляция, редакти­рование связей и т. п.). Затем был создан специальный язык Intercol как средство описания взаимосвязи и версий модулей в системе. И, наконец, в систему были встроены знания о том, как конструировать систему из частей, не заставляя зани­маться этим пользователя. В развитие этих работ была создана система SUCE, в рамках которой отслеживались различия между реализациями (версиями, кото­рые действительно дают код для ряда спецификаций) и композициями (версия­ми, определяющими новые подсистемы как группы существующих подсистем).



В системе LOIPE (Language-Oriented Incremental Programming Environment) инкрементная компиляция выполняется на уровне отдельной процедуры. Достоин­ством такого подхода является то, что при коррекции процедуры на уровне ло­кальных объектов или типов перекомпилируется только она. Если же меняется спецификация, то перекомпилируются и все зависящие от нее процедуры. Поль­зовательский интерфейс с LOIPE-системой базируется на подсистеме синтакси­чески-ориентированного редактирования ALOE (A Language-Oriented Editor). Целью разработки этой подсистемы было исследование возможности создания и использования синтаксически-ориентированных редакторов в качестве базиса для сред программирования.

Анализ литературы последних лет по технологии программирования показыва­ет, что новой ветвью в технологии промышленной разработки и реализации, сложных и значительных по объему систем программного обеспечения явля­ется CASE-технология (Computer Aided Software Engineering) .

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

Все средства поддержки CASE-технологии делятся на две большие группы: САSE-Toolkits и CASE-Workbenches. Хороших русских эквивалентов этим терми­нам нет. Однако первые часто называют «инструментальными сундучками» (па­кетами разработчика, технологическими пакетами), а вторые - «станками для производства программ» (технологическими линиями).

По определению CASE-Toolkit - коллекция интегрированных программных средств, обеспечивающих автоматическое ассистирование в решении задач одно­го типа в процессе создания программ.

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

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

Таким образом, CASE-WorkBench является естественным «замыканием» технологии разработки, реализации и сопровождения программного обеспечения.

В настоящее время «типовая» система поддержки CASE-технологии имеет функци­ональные возможности, представленные на рис. 6.4.

Рис. 6.4. Функциональные возможности типовой системы поддержки CASE-технологии

Как следует из этой Н-диаграммы, в CASE-среде должны поддерживаться все ос­новные этапы разработки и сопровождения процессов создания программных систем. Однако уровень такой поддержки существенно различен. Так, например, если говорить об этапах анализа и проектирования, большинство инструмен­тальных пакетов поддерживает экранные и отчетные формы, создание прототипов, обнаружение ошибок. Значительная часть этих средств предназначена для ПЭВМ. Многие поддерживают такие широко используемые методологии, как структурный анализ DeMarco или Gane/Sarson, структурное проектирование Yourdan/Jackson и некоторые другие. Существуют специализированные пакеты разработчиков для создания информационных систем, например Ana Tool (Ad­vanced Logical Software) для Macintosh; CA-Universe/Prototype (Computer Asso­ciates International) для ПЭВМ. Имеются CASE-среды и для поддержки разра­ботки систем реального времени.

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

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

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

Образовательная

Ознакомление с инструментальными средствами коллективной разработки ПО.

Развивающая:

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

Воспитательная:

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

Межпредметные связи:

Английский язык

Операционные системы

Информационные технологии

Основы алгоритмизации и программирования

Оборудование: доска, мел, письменные принадлежности, проектор, ПК

Тип урока: комбинированный

Метод обучения: Объяснительно иллюстративный

Ход урока:

1.Организационный момент

Проверка готовности кабинета

Объявление темы

2. Постановка цели урока

3.Повторение пройденного материала

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

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

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

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

4.Сообщение новых знаний

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

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

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

5. Восприятие и осознание учащимися нового материала

6. Осмысление обобщение и систематизация знаний

7. Подведение итогов урока ипостановка домашнего задания

Выучить содержимое темы

Гагарина Л.Г. стр. С.257-259.

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

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

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

В настоящее время компьютерную технологию разработки ПС можно характеризовать использованием

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

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

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

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

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

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

Рис. 16.3. Жизненный цикл программного средства для компьютерной технологии.

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

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

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

Генерация программ ПС. На этом этапе автоматически генерирует скелеты кодов программ ПС или полностью коды этих программ по формальным спецификациям ПС.

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

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

Аттестация ПС имеет прежнее содержание.

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

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

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

14.5. Инструментальные системы технологии программирования

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

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

  • репозиторий,
  • инструментарий,
  • интерфейсы.

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

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

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


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

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

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

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

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

Инструментальное программное обеспечение (Software tools) - программное обеспечение, используемое в ходеразработки, корректировки или развития других программ:

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

Сюда входят языки программирования, интегрированные среды разработки программ, CASE-системы и др.

7.1.2. Выбор языка программирования

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

Универсальные языки высокого уровня;

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

Специализированные языки пользователя;

Языки низкого уровня.

В группе универсальных языков высокого уровня безусловным лидером на сегодня является язык C++. Действительно, он имеет ряд достоинств:

Масштабируемость. На языке C++ разрабатываютпрограммы для самых различных платформ и систем;

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

C++ имеет мощный препроцессор, унаследованный от С, но, как и любой другой мощный инструмент, требуетосторожного использования;

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

При этом язык C++ обладает рядом существенныхнедостатков:

Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include)серьезно замедляет компиляцию при подключении большогоколичества модулей;

Недостаток информации о типах данных во времякомпиляции;

Сложность для изучения и компиляции;

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

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

поэтому пока альтернативы C++ нет . Для второстепенныхпроектов иногда используется Visual Basic. Язык Javaрассматривался как альтернатива Basic, но из-за отсутствия визуального

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

Современный Object Pascal, как и Pascal, предложенный Н. Виртом в середине 70-х годов XX в., остается наиболее привлекательным для обучения основам программирования в силу своей

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

В нынешнее время в отличие от 60-х годов XX в. языкипрограммирования создаются крайне редко. За последние 15 лет можно отметить лишь две новинки, получившие широкоераспространение - это Java (Sun Microsystems, 1995 г.), ставшийпопулярным во многом благодаря технологии его использования в Интернете и появления такого понятия, как виртуальная Java-машина, и С# (Microsoft, 2000 г.), созданный на основе C++.

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

разработчиков одной из самых популярных сред разработки - Delphi. В Microsoft он участвовал в создании версии Java - J++, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, С# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, направленное на возможностьповторного использования созданных компонентов.

Другие достоинства языка С#:

Сохраняет лучшие черты популярных языковпрограммирования C/C++, на основе которых он создан. В связи с этим облегчается переход программистов от C++ к С#;

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

как указатели, адресация, разыменование, адреснаяарифметика;

Является полностью объектно-ориентированным языком, где даже типы, встроенные в язык, представлены классами;

Реализует возможности наследования и универсализации;

Учитывает все возможности Framework .Net, так как С# создавался параллельно с данной средой;

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

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

виртуальная Java-машина является интерпретатором байт-кода;

Мощная библиотека каркаса поддерживает удобствопостроения различных типов приложений на С#, позволяя легко строить Web-службы, другие виды компонентов,

достаточно просто сохранять и получать информацию из базы данных и других хранилищ данных;

Является источником надежного и эффективного кода.

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

Научные вычисления (языки C++, FORTRAN, Java);

Системное программирование (языки C++, Java);

Обработка информации (языки C++, COBOL, Java);

Искусственный интеллект (LISP, Prolog);

Издательская деятельность (Postscript, TeX);

Удаленная обработка информации (Perl, PHP, Java, C++);

Описание документов (HTML, XML).

С течением времени одни языки развивались, приобретали новые черты и остались востребованными, другие утратили свою актуальность и сегодня представляют в лучшем случае чистотеоретический интерес (Focal, PL/1 и др.). В значительной степени это связано с такими факторами:

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

Удобство сопровождения и тестирования программ;

Стоимость разработки с применением конкретного языка программирования;

Четкость и ортогональность конструкций языка;

Применение объектно-ориентированного подхода.

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

Языки баз данных;

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

Языки создания систем искусственного интеллекта и т. д.

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

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

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

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

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

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

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

7.7.3. Выбор среды программирования

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

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

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

Обычно среда разработки предназначается для одногоопределенного языка программирования, как, например, Visual Basic или Deiphi, но существуют среды разработки, предназначенные для нескольких языков, такие как Eclipse или Microsoft Visual Studio.

Примеры сред разработки - Turbo Pascal, Borland C++, GNU toolchain, DrPython.

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

которых наиболее распространенные блоки программного кодапредставлены в виде графических объектов.

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

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

Например, служба, написанная на C++ для.NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на С#можно написать класс, наследующий от класса, написанного на Visual Basic .NET, а исключение, выброшенное методом, написанным на С#, может быть поймано и обработано в Delphi.

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