Лекция 4. Конспект лекций

### Лекция 4. Управление жизненным циклом приложений

4.1. Принцип управления жизненным циклом приложений
4.2. Архитектурное проектирование
4.3. Разработка приложения
4.4. Тестирование приложения

### 4.1. Принцип управления жизненным циклом приложений

Управление жизненным циклом приложений (application life cycle management - ALM) - это концепция управления программным проектом на всех этапах его жизни. Для реализации этой концепции компания Microsoft предлагает решение на основе Visual Studio и Team Foundation Server (TFS). Технологии ALM в Visual Studio позволяют разработчикам контролировать жизненный цикл создания ПО, сокращая время разработки, устраняя издержки и внедряя непрерывный цикл реализации бизнес-ценностей.

Управление жизненным циклом приложения в Visual Studio базируется на следующих принципах:

- продуктивность (productivity);
- интеграция (integration);
- расширяемость (extensibility).

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

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

Расширяемость обеспечивается API-интерфейсом служб TFS и интегрированной средой разработки (integrated development environment - IDE). API-интерфейс служб TFS позволяет создавать собственные инструменты и расширять существующие. IDE позволяет конечным пользователям и сторонним разработчикам добавлять инструменты с дополнительными функциями.

Фактически, при создании программного продукта в его жизненном цикле выделяется 3 основных этапа:

1. Архитектурное проектирование позволяет сформулировать набор требований и спроектировать архитектуру, возлагается на архитектора программного продукта.

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

3. Тестирование приложения на его соответствие требованиям заказчика, осуществляется тестировщиком.

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

### 4.2. Архитектурное проектирование

В Visual Studio используются инструменты визуального проектирования на основе языка UML, которые предназначены для следующего:

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

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

Архитектурные инструменты в Visual Studio 2012 и выше Ultimate позволяют создавать шесть видов схем и документ ориентированных графов:

Назначение диаграмм UML при выполнении архитектурного проектирования:

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

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

### 4.3. Разработка приложения

Основным средством разработки в Visual Studio 2012 и выше является интегрированная среда разработки (IDE). IDE-среда интегрирована со средствами тестирования и обеспечивает возможности выявления неэффективного, небезопасного или плохо написанного кода, управление изменениями и модульное тестирование как кода, так и базы данных.

Модульное тестирование является важным инструментом, реализуется в среде Unit Test Framework. Назначением модульных тестов является проверка того, что код работает правильно с точки зрения программиста. Модульные тесты формируются на более низком уровне, чем другие виды тестов, и проверяют, работают ли лежащие в их основе функции так, как ожидается. Для модульного тестирования используется метод «прозрачного ящика», что предполагает знание внутренних структур кода.

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

Модульные тесты являются важным элементом регрессионного тестирования, представляющего собой повторное тестирование части программы после внесения в неё изменений или дополнений. Цель регрессионного тестирования - выявление ошибок, которые могут пояВ Visual Studio 2012 и выше имеется функция "Анализ покрытия кода", которая проводит мониторинг того, какие строки кода исполнялись в ходе модульного тестирования. Результатом анализа покрытия кода является выявление областей кода, которые не покрыты тестами.

Важным аспектом создания качественного программного продукта является соблюдение разработчиками правил и стандартов организации в написания кода. В Visual Studio 2012 и выше имеются функции анализа кода, которые позволяют проанализировать код, найти типичные ошибки, нарушения стандартов написания кода (нефункциональные требования) и предложить меры по устранению ошибок и нарушений. Наборы правил анализа кода поставляются с Visual Studio 2012 и выше. Разработчики могут настроить свои проекты на определенный набор правил, а также добавить свои специфичные правила анализа кода.

В процессе анализа кода используются метрики, которые дают количественные оценки различных характеристик кода. Метрики позволяют определить сложность кода и его изолированные области, которые могут привести к проблемам при сопровождении приложения. В Visual Studio 2012 и выше используются следующие метрики кода (Таблица 4.1):

Таблица 4.1

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

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

Большинства корпоративных приложений работает с базами данных, что определяет необходимость разработки и тестирования приложений совместно с базами данных командой проекта. В Visual Studio 2012 и выше имеется инструментарий создания баз данных и развертывания изменений в них. Для этого используется автономная разработка схем баз данных, которая позволяет вносить изменения в схемы без подключения к производственной базе данных. После внесения изменений в среду разработки Visual Studio 2012 и выше позволяет протестировать их в самой среде разработки и/или выделенной среде тестирования. Кроме того, Visual Studio 2012 и выше позволяет сгенерировать псевдореальные данные для проведения тестов. При положительных результатах тестирования Visual Studio 2012 и выше позволяет сгенерировать сценарии для обновления производственной базы данных. Цикл разработки базы данных приложения состоит из следующих шагов:

1. создание БД на базе СУБД;

2. перевод схемы базы данных в автономный режим;

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

4. тестирование схемы базы данных;

5. построение и развертывание базы данных и приложения.

Для совершенствования процесса отладки приложений в Visual Studio 2012 и выше имеется функция интеллектуального отслеживания работы программы IntelliTrace. Функция IntelliTrace конфигурируется на предмет записи событий, данных диагностики, вызовов и т.д., задания параметров генерируемого файла журнала, а также параметров отладки.

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

### 4.4. Тестирование приложения

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

Модульные тесты представляют собой низкоуровневые программные тесты, написанные на языках Visual C#, Visual Basic или Visual C++. Позволяют быстро проверить наличие логических ошибок в методах классов. Основной их целью является проверка того, что код приложения работает так, как ожидает разработчик.

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

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

Архитектура средств тестирования в Visual Studio 2012 и выше приведена на рис. 4.1. Центральное место занимает платформа модульного тестирования. Доступ к средствам тестирования может осуществляться из обозревателя тестов, командной строки и при построении приложения через Team Build. Платформа тестирования обеспечивает подключение плагинов тестирования. В составе Visual Studio 2012 и выше установлены плагины MS-TestManaged и MS-TestNative. Плагины сторонних разработчиков (NUnit, xUnit.net, MbUnit и другие) можно подключить к платформе тестирования дополнительно.

Рис. 4.1. Архитектура инструментов тестирования

Для тестировщиков в Visual Studio 2012 и выше Ultimate имеется специализированный инструмент – Microsoft Test Manager, который позволяет:

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

Для сложных приложений предусмотрено создание эффективной среды тестирования, которая реализуется и выполняется с помощью лаборатории тестирования – Lab Management, которая интегрирована с TFS. Она представляет собой диспетчер виртуальной среды и предоставляет следующие возможности:

• создание, управление и освобождение сред, состоящих из одной или более виртуальных машин;

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

• выполнение ручных и автоматических тестов в виртуальных средах;

• использование снимков, позволяющих быстро вернуть среды к заданному состоянию;

• сетевая изоляция виртуальных сред.

Администрирование виртуальной среды Lab Management производит диспетчер Microsoft System Center Virtual Machine Manager (SCVMM), с помощью которого производятся необходимые настройки виртуальной тестовой лаборатории.

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

Краткие итоги

Visual Studio и Team Foundation Server представляют решение компании Microsoft по управлению жизненным циклом приложений. Управление жизненным циклом приложения в Visual Studio базируется на принципах продуктивности, интеграции и расширяемости. В Visual Studio для архитектурного проектирования используются инструменты визуального моделирования на основе языка UML. Основным средством разработки в Visual Studio 2012 и выше является интегрированная среда разработки IDE, которая интегрирована со средствами модульного тестирования. Visual Studio 2012 и выше Ultimate предоставляет разработчику инструмент для создания и использования модульных тестов, нагрузочных тестов и веб тестов производительности, а также тестов пользовательского интерфейса. Инструментами тестировщика при создании приложений является специализированный инструмент – Microsoft Test Manager. Создание эффективной среды тестирования сложных приложений выполняется с помощью лаборатории тестирования – Lab Management.