Всего на сайте:
236 тыс. 713 статей

Главная | Информатика

Конструирование ПО  Просмотрен 433

Конструирование ПО - создание работающего ПО с привлечением методов верификации, кодирования и тестирования компонентов. К инструментам конструирования ПО отнесены языки программирования, программные методы и инструментальные системы (компиляторы, СУБД, генераторы отчетов, системы управления версиями, конфигурацией, тестированием и др.). К формальным средствам описания процесса конструирования ПО, взаимосвязей между человеком и компьютером, с учетом среды окружения отнесены, например, структурные диаграммы Джексона. Область знаний «Конструирование ПО (Software Construction)» включает следующие разделы:

- снижение сложности (Reduction in Complexity),

- предупреждение отклонений от стиля (Anticipation of Diversity),

- структуризация проверок (Structuring for Validation),

- использование внешних стандартов (Use of External Standards).

Снижение сложности –это минимизация, уменьшение и локализация сложности конструирования.

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

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

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

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

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

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

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

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

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

Иными словами внешние и внутренние стандарты должны определить общие правила работы членов проектной команды с учетом процессов ЖЦ. Такими стандартами являются языки программирования, интерфейсы языков программирования, прикладные интерфейсы платформ, языки описания данных (XML,SQL и др.), средства коммуникации (COM, CORBA и др.), стандарты интерфейсных языков (POSIX, IDL, APL), сценарии UML и др.

Данная область пополнилась новым разделом (SWEBOK,2004г), описываемым ниже.

Управление конструированием– это управление процессом конструирования ПО, которое базируется на моделях конструирования, планирования и внесения изменений.

Модели конструированиявключают набор операций, последовательность действий и результатов. Виды моделей определяются стандартом ЖЦ, методологиями и практиками. Некоторые стандарты ЖЦ по своей природе ориентированы на конструирование, например, экстремальное программирование (XP- Extreme Programming). Конструирование с помощью моделирования осуществляется в рациональном унифицированном процессе- RUP (Rational Unified Process) [6].

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

 

1.1.4. Тестирование ПО

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

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

Область знаний «Тестирование ПО (Software Testing) » включает следующие разделы:

- основные концепции и определение тестирования (Testing Basic Concepts and definitions),

- уровни тестирования (Test Levels),

- техники тестирования (Test Techniques),

- метрики тестирования (Test Related Measures),

- управление процессом тестирования (Managing the Test Process).

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

При тестировании выявляются недостатки: отказы (faults) и дефекты (defects) как причины нарушения работы программы, сбои (failures) как нежелательные ситуации, ошибки (errors), как последствия сбоев и др. Базовым понятием тестирования является тест, который выполняется в заданных условиях и на заданных наборах данных. Тестирование считается успешным, если найден дефект или ошибка, и они сразу устраняются. Степень тестируемости определяется критерием покрытия системы тестами, проверки всех возможных путей выполнения алгоритмов программ и вероятности статического предположения того, что при тестировании может появиться сбой или ошибочная ситуация в системе.

Уровни тестирования:

- тестирование отдельных элементов, которое заключается в проверке отдельных, изолированных и независимых частей ПО;

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

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

На всех уровнях тестирования применяются методы:

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

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

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

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

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

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

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

- информации о структуре ПО или системы в документации

(«белый ящик»);

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

(«черный ящик»);

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

- блок-схемах построения программ и составления наборов тестов для покрытия системы этими тестами;

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

Метрики тестирования.Для измерения результатов тестирования ПО, а также при проведении анализа качества используются метрики. Измерение как часть планирования и разработки тестов базируется на размере программ, их структуре и количестве обнаруженных ошибок и дефектов. Метрики тестирования обеспечивают измерение процесса планирования, проектирования и тестирования; а также результатов тестирования на основе таксономии отказов и дефектов, покрытия границ тестирования, проверки потоков данных и др. Процесс тестирования документируется и, согласно стандарту IEEE 829-98, включает описание тестовых документов, их связи между собой и с задачами тестирования. Без документации по процессу тестирования, невозможно провести сертификацию продукта по модели СММ [17]. После завершения тестирования, рассматриваются вопросы стоимости и оценки рисков, вызванных сбоями или недостаточно надежной работой системы. Стоимость тестирования является одним из ограничений, на основе которого принимается решение о прекращение или его продолжении.

Управление процессом тестирования:

- планирование процесса тестирования и оценивание показателей качества ПО;

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

- генерация необходимых тестовых сценариев, соответствующих среде выполнения ПО;

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

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

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

Заметим, что стандарт ISO/IEC 12207 рассматривает тестирование как неотъемлемую часть всего ЖЦ.

Предыдущая статья:Проектирование ПО Следующая статья:Сопровождение ПО
page speed (0.0468 sec, direct)