programming.systems.cpp.09.ide (1119533), страница 2
Текст из файла (страница 2)
поддерживает частичную перекомпиляцию),5. расстановка/снятие точек останова, которые визуализируются втекстовом редакторе,6. выдача всей информации в терминах исходной программы.Стратегии тестированияСтратегия тестирования — это метод, используемый для отбора тестов, которыедолжны быть включены в тестовый комплект.Стратегия является эффективной, если тесты, включенные в нее, с большойвероятностью обнаружат ошибки тестируемого объекта. Эффективность стратегиизависит от комбинации природы тестов и природы ошибок, на поиск которых эти тестынаправлены.•Стратегия поведенческого теста основана на технических требованиях.Тестирование, выполняемое с помощью стратегии поведенческого теста, называетсяповеденческим тестированием, функциональным тестированием илитестированием черного ящика.•Стратегия структурного теста определяется структурой тестируемого объекта.Тестирование, выполненное с помощью стратегии структурного теста, называется такжетестированием белого ящика.
Стратегия структурного теста требует полного доступа кструктуре объекта, то есть к исходной программе.•Стратегия гибридного теста является комбинацией поведенческой и структурнойстратегий. Модули и низкоуровневые компоненты часто тестируются с помощьюструктурной стратегии.
Большие компоненты и системы в основном тестируются спомощью поведенческой стратегии. Гибридная стратегия полезна на всех уровнях.Способы тестирования•Тестирование проводится не только на той стадии разработки программ,которая специально для этого предназначена, но и на предшествующихстадиях – при автономной отладке программ, еще до объединения их вединый программный комплекс.
Такое тестирование называетсямодульным. Его обычно проводят сами разработчики, которые проверяютточное соответствие программы выданной им спецификации.•Интеграционное тестирование призвано проверить все аспектыработы программы от правильности взаимодействия внутреннихпрограммных компонентов до правильности взаимодействия программногокомплекса с его пользователями.•Во время пользовательского тестирования результаты работыпрограммы проверяются с прикладной точки зрения.•Нагрузочное тестирование дает возможность проверить безопасную иэффективную работу созданной программы в нормальном и пиковомрежимах ее использования. Функциональность на этом этапе проверяетсятолько в смысле ее влияния на важнейшие технические параметрыпрограммы, например, на время реакции системы на запрос пользователя.•Важной в тестировании является возможность проведениярегрессионного тестирования.
Регрессионные тесты, повторяемыепосле каждого исправления программы, позволяют убедиться, чтофункциональность программы, не связанная с внесенным исправлением,не затронута этим исправлением и не утрачена из-за него.Редактор связейРедактор связей (компоновщик) предназначен для связывания междусобой (по внешним данным) объектных файлов, порождаемыхкомпилятором, а также файлов библиотек, входящих в состав СП.Редактор связей выполняет следующее:• связывает между собой по внешним данным объектные модули,порождаемые компилятором и составляющие единую программу,• связывает файлы статически подключаемых библиотек с цельюполучения единого исполняемого модуля,• готовит таблицу трансляции относительных адресов длязагрузчика,• готовит таблицу точек вызова функций динамически подключаемыхбиблиотек.Типы библиотекБиблиотеки являются существенной частью системпрограммирования.В настоящее время можно выделить 3 типа библиотек:1.
Библиотеки функций (или подпрограмм).2. Библиотеки классов.3. Библиотеки компонентов.Библиотеки функцийБиблиотеки функций во многом определяют возможности системпрограммирования в целом. Чем больше выбор библиотечныхфункций СП предоставляет пользователю, тем лучшие позиции онаимеет на рынке средств разработки программного обеспечения.Различают:• библиотеки для языков программирования (например, функцииввода-вывода, работа со строками) и• библиотеки для решения задач в конкретной проблемной области(например, функции, реализующие алгоритмы линейной алгебры).Библиотеки функций представляют собой откомпилированныеобъектные модули, а необходимые фрагменты библиотеки функцийвключаются в исполняемый файл на этапе работы редактора связей.Библиотеки классовБиблиотеки классов также являются важной частью современныхсистем программирования, базирующихся на ООЯП.Недостаток библиотеки классов — все ее классы должны бытьнаписаны на том же ЯП, на котором пишется программа, кудаинтегрируются библиотечные классы.В библиотеке классов различают:•конкретные классы;•абстрактные классы, иерархии классов;•шаблоны классов, иерархии шаблонов классов.Библиотеки классов включаются в программу на этапе компиляции икомпилируются со всей программой вместе.Библиотеки компонентовБиблиотеки компонентов - это библиотеки готовых откомпилированныхпрограммных модулей, предназначенных для использования в качествесоставных частей программ, и которыми можно манипулировать во времяразработки программ.Компоненты бывают локальные (находящиеся на той же ЭВМ, где создаетсяПП) и распределенные (расположенные на сервере и доступные по сети ЭВМ).Примеры технологий, использующих библиотеки компонентов:• Технология CORBA (Common Object Request Broker Architecture) отмеждународной группы OMG позволяет использовать программныекомпоненты, размещённые как локально, так и дистанционно.Использование CORBA-компонент не зависит от языка, на котором онибыли написаны.• Технология COM (Common Object Model) от компании Microsoft под ОСWindows позволяет использовать локально размещённые компоненты,независимо от языка их реализации.
Её развитие привело краспределённой архитектуре DCOM (Distributed COM), а затем к ActiveX.• Технология Java Beans от Sun Microsystems позволяет использоватькомпоненты, написанные на языке Java. Так как реализация Java-машинысуществует почти для всех ОС, отсутствует жёсткая привязка к конкретнойОС.Динамически подключаемые библиотеки (ДБ)ДБ в отличие от статических библиотек подключаются к программе не во времякомпиляции программы, а непосредственно в ходе её выполнения.На этапе компоновки программы редактор связей, встречая вызовы функций ДБ,вместо процедуры связывания формирует таблицу точек вызова функций ДБ дляпоследующей операции динамического связывания.
Таким образом, процессполной компоновки завершается уже на этапе выполнения целевой программы.Преимущества ДБ:• не требуется включать в программу объектный код часто используемыхфункций, что существенно сокращает объем кода;• различные программы, выполняемые в некоторой ОС, могут пользоваться кодомодной и той же библиотеки, содержащейся в ОС;• изменения и улучшения функций библиотек сводится к обновлению толькосодержимого ДБ, а уже существующие тексты программ не требуютперекомпиляции (этот же факт может оказаться недостатком, если примодификации функций меняется логика их работы, поэтому использование ДБнакладывает определенные обязательства как на разработчика программы, так ина создателя библиотеки).Как правило, динамически подключаются системные функции ОС иобщедоступные функции программного интерфейса (API).Существует возможность создавать свои ДБ для использования при разработкеприкладных программ.Критерии проектирования стандартных библиотек.Требования по составуСтандартная библиотека должна:• обеспечивать поддержку свойств языка (например, управление памятью,предоставление информации об объектах во время выполнения программ);• предоставлять информацию о зависящих от реализации аспектах языка,(например, о максимальных размерах целых значений);• предоставлять функции, которые не могут быть написаны оптимально для всехвычислительных систем на данном языке программирования (например, sqrt() илиmemmove() — пересылка блоков памяти);• предоставлять программисту нетривиальные средства, на которые он можетрассчитывать, заботясь о переносимости программ (например, средства работы сосписками, функции сортировки, потоки ввода/вывода);• предоставлять основу для расширения собственных возможностей, в частности,соглашения и средства поддержки, позволяющие обеспечить операции дляданных, имеющих определяемые пользователями типы, в том же стиле, в которомобеспечиваются операции для встроенных типов (например, ввод/вывод);• служить основой и теоретическим базисом других библиотек.Требования по свойствамкомпонентов стандартной библиотеки (1)Компоненты стандартной библиотеки должны:• иметь общезначимый характер (структуры данных и алгоритмы дляработы с ними – стек, очередь, список, …, сортировка, поиск, копирование,…); быть важными и удобными для использования всеми программистами;• быть настолько эффективными, чтобы у пользователей библиотекине возникало потребности заново программировать библиотечныесредства;• быть независимыми от конкретных алгоритмов или предоставлятьвозможность указывать алгоритм в качестве параметра;• оставаться элементарными, чтобы не терять эффективности из-заизлишних усложнений или попыток совместить различные функции водной;Требования по свойствамкомпонентов стандартной библиотеки (2)• быть безопасными (устойчивыми к неправильному использованию,использование библиотеки не должно провоцировать ошибки, а наоборот,снижать их вероятность);• обладать достаточной полнотой (завершенностью), чтобы ни у кого невозникало желания что-то заменить или доопределить;• обладать удобной и безопасной системой умолчаний;• поддерживать общепринятые стили программирования;• обладать способностью к расширению, чтобы работать с типами,определяемыми пользователем, было так же хорошо, как и совстроенными (базовыми) типами (сочетаемость с базовыми типамиданных и базовыми операциями).СП под UNIX.
Координатор GNU Make.Make существенно упрощает процесс сборки проектов.Make отслеживает изменившиеся файлы и перекомпилирует при обращении к немутолько их и файлы, связанные с ними по компиляции.Информация о зависимостях по компиляции и необходимые команды по компиляциисодержатся в файле Makefile (makefile или в файле с соответствующей структурой, имякоторого задается при обращении к Make: Make -f <имя_файла> ), который долженнаходиться в текущей директории.Makefile состоит из последовательности записей вида:цель: зависимости_по_компиляциикоманда ОС UNIX...команда ОС UNIX...Цель - имя целевого файла или название действия.Если обращение к Make происходит без параметра, то выполняются действия подостижению первой цели, если же параметр есть, то Make достигает цель, имя которойсовпадает с именем параметра.Если цель - имя файла, Make автоматически по дате модификации файлов, указанныхсреди файлов-зависимостей по компиляции, определяет, какие из них должны бытьперекомпилированы и выполняет соответствующие команды.В Makefile должны быть указаны зависимости и команды для получения какпромежуточных объектных файлов, так и исполняемых файлов.Пример 1.