Инструмента́льное програ́ммное обеспе́чение — программное обеспечение, предназначенное для использования в ходе проектирования, разработки и сопровождения программ, в отличие отприкладного и системного программного обеспечения.
К этой категории относятся программы, предназначенные для разработки программного обеспечения:
- ассемблеры — компьютерные программы, осуществляющие преобразование программы в форме исходного текста на языке ассемблера в машинные команды в виде объектного кода.
- трансляторы — программы или технические средства, выполняющие трансляцию программы.
- компиляторы — Программы, переводящие текст программы на языке высокого уровня, в эквивалентную программу на машинном языке.
- интерпретаторы — Программы (иногда аппаратные средства), анализирующие команды или операторы программы и тут же выполняющие их
- специализированные редакторы исходных текстов — текстовые редакторы для создания и редактирования исходного кода программ. Специализированный редактор исходных текстов может быть отдельным приложением, или быть встроен в интегрированную среду разработки (IDE).
Перечисленные инструменты могут входить в состав интегрированных сред разработки
Инструментальные средства разработки ПО Л3
Виды инструментального ПО
- Текстовые редакторы
- Интегрированные среды разработки
- SDK
- Компиляторы
- Интерпретаторы
- Линковщики
- Парсеры и генераторы парсеров (см. Javacc)
- Ассемблеры
- Отладчики
- Профилировщики
- Генераторы документации
- Средства анализа покрытия кода
- Средства непрерывной интеграции
- Средства автоматизированного тестирования
- Системы управления версиями
- и др.
30.Методологии разработки программного обеспечения. Классификация. Особенности применения.
Методология — это система принципов, а также совокупность идей, понятий, методов, способов и средств, определяющих стиль разработки программного обеспечения.
Методология — это реализация стандарта. Сами стандарты лишь говорят о том, что должно быть, оставляя свободу выбора и адаптации.
Конкретные вещи реализуется через выбранную методологию. Именно она определяет, как будет выполняться разработка. Существует много успешных методологий создания программного обеспечения. Выбор конкретной методологии зависит от размера команды, от специфики и сложности проекта, от стабильности и зрелости процессов в компании и от личных качеств сотрудников.
Методологии представляют собой ядро теории управления разработкой программного обеспечения. К существующей классификации в зависимости от используемой в ней модели жизненного цикла (водопадные и итерационные методологии) добавилась более общая классификация на прогнозируемы и адаптивные методологии.
Прогнозируемые методологии фокусируются на детальном планировании будущего. Известны запланированные задачи и ресурсы на весь срок проекта. Команда с трудом реагирует на возможные изменения. План оптимизирован исходя из состава работ и существующих требований. Изменение требований может привести к существенному изменению плана, а также дизайна проекта.
Методы и средства разработки программного обеспечения
Часто создается специальный комитет по «управлению изменениями», чтобы в проекте учитывались только самые важные требования.
Адаптивные методологии нацелены на преодоление ожидаемой неполноты требований и их постоянного изменения. Когда меняются требования, команда разработчиков тоже меняется. Команда, участвующая в адаптивной разработке, с трудом может предсказать будущее проекта. Существует точный план лишь на ближайшее время. Более удаленные во времени планы существуют лишь как декларации о целях проекта, ожидаемых затратах и результатах.
SCRUM — методология, предназначенная для небольших команд (до 10 человек). Весь проект делится на итерации (спринты) продолжительностью 30 дней каждый. Выбирается список функций системы, которые планируется реализовать в течение следующего спринта.
Самые важные условия — неизменность выбранных функций во время выполнения одной итерации и строгое соблюдение сроков выпуска очередного релиза, даже если к его выпуску не удастся реализовать весь запланированный функционал. Руководитель разработки проводит ежедневные 20 минутные совещания, которые так и называют — scrum, результатом которых является определение функции системы, реализованных за предыдущий день, возникшие сложности и план на следующий день. Такие совещания позволяют постоянно отслеживать ход проекта, быстро выявлять возникшие проблемы и оперативно на них реагировать.
KANBAN – гибкая методология разработки программного обеспечения, ориентированная на задачи.
- Основные правила:
- визуализация разработки:
- разделение работы на задачи;
- использование отметок о положение задачи в разработке;
- уменьшение числа параллельно выполняемых задач значительно уменьшает время выполнения каждой отдельной задачи;
- быстрое выявление проблемных задач;
- вычисление времени на выполнение усредненной задачи.
DYNAMIC SYSTEM DEVELOPMENT METHOD появился в результате работы консорциум из 17 английских компаний. Целая организация занимается разработкой пособий по этой методологии, организацией учебных курсов, программ аккредитации и т.п. Кроме того, ценность DSDM имеет денежный эквивалент.
Все начинается с изучения осуществимости программы и области ее применения. В первом случае, вы пытаетесь понять, подходит ли DSDM для данного проекта. Изучать область применения программы предполагается на короткой серии семинаров, где программисты узнают о той сфере бизнеса, для которой им предстоит работать. Здесь же обсуждаются основные положения, касающиеся архитектуры будущей системы и план проекта.
Далее процесс делится на три взаимосвязанных цикла: цикл функциональной модели отвечает за создание аналитической документации и прототипов, цикл проектирования и конструирования — за приведение системы в рабочее состояние, и наконец, последний цикл — цикл реализации — обеспечивает развертывание программной системы.
Базовые принципы, на которых строится DSDM, это активное взаимодействие с пользователями, частые выпуски версий, самостоятельность разработчиков в принятии решений и тестирование в течение всего цикла работ. Как и большинство других гибких методологий, DSDM использует короткие итерации, продолжительностью от двух до шести недель каждая. Особый упор делается на высоком качестве работы и адаптируемости к изменениям в требованиях.
MICROSOFT SOLUTIONS FRAMEWORK — методология разработки программного обеспечения, предложенная корпорацией Microsoft. MSF опирается на практический опыт Microsoft и описывает управление людьми и рабочими процессами в процессе разработки решения. Базовые концепции и принципы модели процессов MSF:
- единое видение проекта — все заинтересованные лица и просто участники проекта должны чётко представлять конечный результат, всем должна быть понятна цель проекта;
- управление компромиссами — поиск компромиссов между ресурсами проекта, календарным графиком и реализуемыми возможностями;
- гибкость – готовность к изменяющимся проектным условиям;
- концентрация на бизнес-приоритетах — сосредоточенность на той отдаче и выгоде, которую ожидает получить потребитель решения;
- поощрение свободного общения внутри проекта;
- создание базовых версии — фиксация состояния любого проектного артефакта, в том числе программного кода, плана проекта, руководства пользователя, настройки серверов и последующее эффективное управление изменениями, аналитика проекта.
MSF предлагает проверенные методики для планирования, проектирования, разработки и внедрения успешных IT-решений. Благодаря своей гибкости, масштабируемости и отсутствию жестких инструкций MSF способен удовлетворить нужды организации или проектной группы любого размера. Методология MSF состоит из принципов, моделей и дисциплин по управлению персоналом, процессами, технологическими элементами и связанными со всеми этими факторами вопросами, характерными для большинства проектов. RATIONAL UNIFIED PROCESS — методология разработки программного обеспечения, созданная компанией Rational Software. В основе методологии лежат 6 основных принципов:
- компонентная архитектура, реализуемая и тестируемая на ранних стадиях проекта;
- работа над проектом в сплочённой команде, ключевая роль в которой принадлежит архитекторам;
- ранняя идентификация и непрерывное устранение возможных рисков;
- концентрация на выполнении требований заказчиков к исполняемой программе;
- ожидание изменений в требованиях, проектных решениях и реализации в процессе разработки;
- постоянное обеспечение качества на всех этапах разработки проекта.
Использование методологии RUP направлено на итеративную модель разработки. Особенность методологии состоит в том, что степень формализации может меняться в зависимости от потребностей проекта.
Можно по окончании каждого этапа и каждой итерации создавать все требуемые документы и достигнуть максимального уровня формализации, а можно создавать только необходимые для работы документы, вплоть до полного их отсутствия. За счет такого подхода к формализации процессов методология является достаточно гибкой и широко популярной. Данная методология применима как в небольших и быстрых проектах, где за счет отсутствия формализации требуется сократить время выполнения проекта и расходы, так и в больших и сложных проектах, где требуется высокий уровень формализма, например, с целью дальнейшей сертификации продукта. Это преимущество дает возможность использовать одну и ту же команду разработчиков для реализации различных по объему и требованиям.
Таким образом, существует множество различных методологий разработки программного обеспечения, они не универсальны и описываются различными принципами. Выбор методологии разработки для конкретного проекта зависит от предъявляемых требований.
Источник: studfile.net
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Инструментальное программное обеспечение (Software tools) — программное обеспечение, используемое в ходе разработки, корректировки или развития других программ: редакторы, компиляторы, отладчики, вспомогательные системные программы, графические пакеты и др.
Сюда входят языки программирования, интегрированные среды разработки программ, CASE-системы и др.
Выбор языка программирования
Существующие на сегодняшний день языки программирования можно выделить в следующие группы [1, 56]:
- • универсальные языки высокого уровня;
- • специализированные языки разработчика программного обеспечения;
- • специализированные языки пользователя;
- • языки низкого уровня.
В группе универсальных языков высокого уровня безусловным лидером на сегодня является язык С++. Действительно, он имеет ряд достоинств:
- • масштабируемость. На языке С++ разрабатывают программы для самых различных платформ и систем;
- • возможность работы на низком уровне с памятью, адресами, портами, что при неосторожном использовании может легко превратиться в недостаток;
- • C++ имеет мощный препроцессор, унаследованный от С, но, как и любой другой мощный инструмент, требует осторожного использования;
- • возможность создания обобщенных алгоритмов для разных типов данных, их специализация и вычисления на этапе компиляции, используя шаблоны.
При этом язык C++ обладает рядом существенных недостатков:
- • подключение интерфейса внешнего модуля через препро-цессорную вставку заголовочного файла (#include) серьезно замедляет компиляцию при подключении большого количества модулей;
- • недостаток информации о типах данных во время компиляции;
- • сложность для изучения и компиляции;
- • некоторые преобразования типов неинтуитивны. В частности, операция над беззнаковым и знаковым числами выдает беззнаковый результат.
Для C++ существует большое количество библиотек классов, поддерживающих создание пользовательского интерфейса, клиент-серверных приложений, работу с базами данных и т. д., поэтому пока альтернативы C++ нет [40]. Для второстепенных проектов иногда используется Visual Basic. Язык Java рассматривался как альтернатива Basic, но из-за отсутствия визуального средства разработки форм он пока остается малопригодным. Современный Object Pascal, как и Pascal, предложенный Н. Виртом в середине 70-х годов XX в., остается наиболее привлекательным для обучения основам программирования в силу своей простоты, структурированности и обнаружения компилятором большого количества не только синтаксических, но и семантических ошибок.
В нынешнее время в отличие от 60-х годов XX в. языки программирования создаются крайне редко. За последние 15 лет можно отметить лишь две новинки, получившие широкое распространение — это Java (Sun Microsystems, 1995 г.), ставший популярным во многом благодаря технологии его использования в Интернете и появления такого понятия, как виртуальная Java-машина, и C# (Microsoft, 2000 г.), созданный на основе C++.
Создателем языка является сотрудник Microsoft Андреас Хейлсберг. Он стал известным в мире программистов задолго до того, как пришел в Microsoft. Хейлсберг входил в число ведущих разработчиков одной из самых популярных сред разработки — Delphi. В Microsoft он участвовал в создании версии Java — J++, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, C# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, направленное на возможность повторного использования созданных компонентов.
Другие достоинства языка С#:
- • сохраняет лучшие черты популярных языков программирования C/C++, на основе которых он создан. В связи с этим облегчается переход программистов от C++ к С#;
- • является проще и надежнее C++. Простота и надежность главным образом связаны с тем, что на C# хотя и допускаются, но не поощряются такие опасные свойства C++, как указатели, адресация, разыменование, адресная арифметика;
- • является полностью объектно-ориентированным языком, где даже типы, встроенные в язык, представлены классами;
- • реализует возможности наследования и универсализации;
- • учитывает все возможности Framework .Net, так как C# создавался параллельно с данной средой;
- • благодаря каркасу Framework .Net, ставшему надстройкой над операционной системой, программисты C# получают те же преимущества работы с виртуальной машиной, что и программисты Java. Эффективность кода даже повышается, поскольку исполнительная среда CLR представляет собой компилятор промежуточного языка, в то время как виртуальная Java-машина является интерпретатором байт-кода;
- • мощная библиотека каркаса поддерживает удобство построения различных типов приложений на С#, позволяя легко строить Web-службы, другие виды компонентов, достаточно просто сохранять и получать информацию из базы данных и других хранилищ данных;
- • является источником надежного и эффективного кода.
Кроме вышеописанных языков к группе универсальных
принадлежат также Modula, Ada, COBOL, FORTRAN и некоторые другие. Каждый из вышеописанных языков имеет свои особенности и, соответственно, свою область применения. В настоящее время универсальные языки программирования применяются в самых различных областях человеческой деятельности, таких как:
- • научные вычисления (языки C++, FORTRAN, Java);
- • системное программирование (языки C++, Java);
- • обработка информации (языки C++, COBOL, Java);
- • искусственный интеллект (LISP, Prolog);
- • издательская деятельность (Postscript, ТеХ);
- • удаленная обработка информации (Perl, РНР, Java, C++);
- • описание документов (HTML, XML).
С течением времени одни языки развивались, приобретали новые черты и остались востребованными, другие утратили свою актуальность и сегодня представляют в лучшем случае чисто теоретический интерес (Focal, PL/1 и др.). В значительной степени это связано с такими факторами:
- • наличие среды программирования, поддерживающей разработку приложений на конкретном языке программирования;
- • удобство сопровождения и тестирования программ;
- • стоимость разработки с применением конкретного языка программирования;
- • четкость и ортогональность конструкций языка;
- • применение объектно-ориентированного подхода.
Специализированные языки разработчика используют для создания конкретных типов программного обеспечения. К ним относят:
- • языки баз данных;
- • языки создания сетевых приложений;
- • языки создания систем искусственного интеллекта и т. д.
Специализированные языки пользователя обычно являются частью профессиональных сред пользователя, характеризуются узкой направленностью и разработчиками программного обеспечения не используются.
Языки низкого уровня позволяют осуществлять программирование практически на уровне машинных команд. При этом получают самые оптимальные как с точки зрения времени выполнения, так и с точки зрения объема необходимой памяти программы. Недостатком их является то, что они не поддерживают принципов структурного программирования [1].
В настоящее время языки типа ассемблера обычно используют:
- • при написании сравнительно простых программ, для обращения к техническим средствам, например драйверов;
- • в виде вставок в программы на языках высокого уровня, например, для ускорения преобразования данных в циклах с большим количеством повторений.
В большей степени выбор языка программирования определяется опытом разработчика, требованиями ведущей разработку организации или просто устоявшимся мнением.
Источник: studref.com
Лекция 8. Инструментальные средства разработки программ
Инструментальные средства разработки программ принято делить на две группы:
1) локальные средства, обеспечивающие выполнение отдельных стадий по созданию программ. В их составе трансляторы, компоновщики, библиотекари, библиотеки подпрограмм, отладчики;
2) интегрированные среды для разработки программ, обеспечивающие выполнение всего комплекса взаимосвязанных работ по созданию программ за счет объединения локальных средств программирования.
Транслятор – это программа, которая переводит входную программу в эквивалентную ей выходную программу на выходном языке, к примеру с языка Visual Basic на язык С++.
Трансляторы делятся на компиляторы и интерпретаторы.
Компилятор (англ. compiler – составитель, собиратель) – транслятор, который осуществляет перевод исходной программы в объектную программу на языке машинных команд или ассемблера. Результатом работы компилятора будет файл, содержащий объектный код, поэтому файл обычно имеет расширение *.obj. Объектный код не является готовой для исполнения программой, требуется еще работа редактора связей (компоновщика).
Интерпретатор (англ. interpreter – истолкователь, устный переводчик) – программа, которая осуществляет пошаговую трансляцию и немедленное выполнение операторов исходной программы. При этом каждый оператор входного языка программирования транслируется в одну или несколько команд машинного языка. Этот метод требует значительно большего времени процессора, внесение изменений в программу значительно проще. Интерпретаторы по многим параметрам уступают компиляторам.
откомпилированный код выполняется быстрее;
откомпилированный код оптимизирован и, следовательно, рациональнее использует ресурсы компьютера.
В то же время компиляторы сложнее в разработке и имеют один существенный недостаток: откомпилированный код всегда привязан к системе команд данного компьютера (построен с учетом особенностей данной ВС). В компьютерных сетях требуется единообразное выполнение программ на всех подключенных машинах. Поэтому во многих языках программирования, использующихся в Internet, практикуется интерпретация текста или сочетание компиляции и интерпретации (например, С#, Java и JavaScript).
Транслирование программы состоит из следующих этапов.
Лексический анализ. Задача этого этапа – сделать программу понятной для других этапов. Литеры исходного кода читаются одна за другой, а сканер (лексический анализатор) в соответствии с грамматическими правилами языка объединяет литеры в группы, определяя их смысл. Для каждой смысловой группы генерируется символ – лексема.
Большинство лексем имеют фиксированный смысл (ключевые слова указывают на действия, задаваемые синтаксисом языка, операции указывают на арифметические и другие действия, знаки пунктуации помогают разобраться в структуре программы). Другая разновидность лексем – идентификаторы, которые не имеют фиксированного смысла (имя программы, слова для именования переменных или констант). Сканер дает каждой лексеме метку и заносит в таблицу.
Синтаксический анализ. Синтаксический анализатор получает от сканера лексемы и располагает их в виде структуры, позволяющей компьютеру разобраться в логике программы. Группы лексем объединяются в операторы – основные структурные единицы программы.
Построением структуры управляет набор явно записанных правил; каждой последовательности лексем соответствует один единственный способ размещения их в структуре. Встречая последовательность лексем, которая не укладывается ни в одно правило, синтаксический анализатор выдает предупреждение об ошибке. В интерпретаторе отбирается ровно столько лексем, сколько надо для обработки логически связанного фрагмента программы.
Контроль типов. Этот этап направлен на выявление ошибок, связанных с несовместимостью типов данных.
Генерация кода. Генератор превращает лексемы в последовательность машинных команд.
Редактор связей (компоновщик) – программа, связывающая между собой объектные файлы, порождаемые компилятором, файлы библиотек подпрограмм. Обычное имя данной программы – LINK. Результатом работы компоновщика является исполняемый файл с расширением .EXE или сообщение об ошибке, если компоновщик не обнаружит какой–либо необходимый модуль программы или библиотечную функцию.
Отладчик – программа, позволяющая проследить процесс выполнения прикладной программы. Программа–отладчик обычно обеспечивает следующие возможности:
просмотр текущего значения любой переменной или нахождение значения любого выражения, в том числе с использованием стандартных функций; при необходимости можно установить новое значение переменной;
установку в программе контрольных точек, то есть точек, в которых программа временно прекращает свое выполнение, так что можно оценить промежуточные результаты, и др.
Библиотеки подпрограмм – файлы, содержащие набор описаний подпрограмм и их объектные коды. В библиотеки подпрограмм включены удобные для пользователей реализации широко распространенных алгоритмов.
Важное место в системе программирования занимают ассемблеры, представленные комплексами, состоящими из входного языка программирования ассемблера и программы ассемблер, которая является простейшим транслятором.
Следующим шагом в развитии систем программирования стало появление интегрированных средств разработки (ИСР). Интегрированные системы, помимо набора обычных инструментальных средств (компилятор, компоновщик, библиотекарь, отладчик), включают:
средства оптимизации кода программ;
набор библиотек (возможно с исходными текстами программ);
документатор исходного кода программы;
систему поддержки и управления проектом программного комплекса.
Средства поддержки проектов – новый класс программного обеспечения, предназначен:
для отслеживания изменений, выполненных разработчиками программ;
поддержки версий программы с автоматической разноской изменений;
получения статистики о ходе работ проекта.
Интегрированные системы отличаются от инструментальных средств программирования повышением дружественности и сервиса для программиста, что позволяет снизить трудозатраты, связанные с разработкой программ. В настоящее время наиболее эффективными и современными являются интегрированные системы программирования, обеспечивающие поддержку развитого графического интерфейса пользователя и взаимодействие с функциями API (прикладного программного интерфейса) операционных систем. В таких системах внедрены средства разработки на основе языков 4–го поколения, которые позволяют программисту при написании программы оперировать графическими образами необходимых объектов программы.
Примерами таких популярных систем являются разработки фирмы Microsoft (Visual Studio). Среда сочетает в себе разнообразные возможности повторного использования кода, открытую архитектуру и высокопроизводительные компиляторы языков C++ и Object Pascal, а также масштабируемый доступ к данным, хранящимся в различных СУБД, как настольных, так и серверных.
Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям .
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою.
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение.
Почему 1285321 студент выбрали МегаОбучалку.
Система поиска информации
Источник: megaobuchalka.ru