Спонсор: Microsoft
Опубликован: 15.01.2013 | Доступ: свободный | Студентов: 1230 / 229 | Длительность: 08:58:00
Специальности: Программист
Лекция 5:

Управление жизненным циклом приложений

Аннотация: Рассматривается концепция управления программным проектом на всех этапах его жизненного цикла и реализация этой концепции в Visual Studio 2012. Приводятся принципы управления жизненным циклом приложения в Visual Studio, а также реализация возможностей архитектурного проектирования, разработки и тестирования приложений.

Презентацию к данной лекции Вы можете скачать здесь.

Цель лекции:

Получить общее представление об управлении жизненным циклом приложений и реализации этой концепции в Visual Studio 2012.

Введение

Управление жизненным циклом приложений (applicationlifecyclemanagement - ALM) - это концепция управления программным проектом на всех этапах его жизни [24]. Для реализации этой концепции компания Microsoft предлагает решение на основе Visual Studio и TeamFoundationServer (TFS). Технологии ALM в Visual Studio позволяют разработчикам контролировать жизненный цикл создания ПО, сокращая время разработки, устраняя издержки и внедряя непрерывный цикл реализации бизнес-ценностей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модульные тесты являются важным элементом регрессионного тестирования. Регрессионное тестирование представляет собой повторное тестирование части программы после внесения в неё изменений или дополнений. Цель регрессионного тестирования - выявление ошибок, которые могут появиться при внесении изменений в программу

В VisualStudio 2012 имеется функция "Анализ покрытия кода", которая проводит мониторинг того, какие строки кода исполнялись в ходе модульного тестирования. Результатом анализа покрытия кода является выявление областей кода, которые не покрыты тестами.

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

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

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

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

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

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

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

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

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

  • Общие (General);
  • Дополнительно (Advanced);
  • События IntelliTrace (IntelliTrace Events);
  • Модули (Modules).

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

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

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

VisualStudio 2012 Ultimate предоставляет разработчику инструмент для создания и использования модульных тестов, нагрузочных тестов и веб тестов производительности, а также тестов пользовательского интерфейса.

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

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

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

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

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

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

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

Для тестировщиков в VisualStudio 2012 Ultimate имеется специализированный инструмент - MicrosoftTestManager, который позволяет создавать планы тестирования, формировать, добавлять и удалять тестовые случаи, определять и управлять физическими и виртуальными тестовыми средами, выполнять ручные и автоматические тесты.

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

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

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

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

Ключевые термины

Управление жизненным циклом приложений концепция управления программным проектом на всех этапах его жизни.
Схемы классов UML описывают объекты в прикладной системе.
Схемы последовательностей UML показывают взаимодействие между различными объектами.
Схемы вариантов использования UML определяют функциональность системы и описывают с точки зрения пользователей их возможные действия с программным продуктом.
Схемы активности UML описывают бизнес-процесс или программный процесс в виде потока работ через последовательные действия
Схемы компонентов UML описывают распределение программных составляющих приложения, позволяя наглядно отобразить на высоком уровне структуру компонентов и служб.
Схемы слоев используются для описания логической архитектуры системы.
IDE интегрированная среда разработки VisualStudio2012.
Модульные тесты тесты, используемые для проверки правильности работы методов и классов.
Функция анализа покрытия кода программа, которая проводит мониторинг того, какие строки кода исполнялись в ходе модульного тестирования.
Функция анализа кода программа, которая позволяет проанализировать код, найти типичные ошибки, нарушения стандартов и предложить меры по устранению ошибок и нарушений.
Профилирование процесс наблюдения и записи показателей о поведении приложения.
Метрика кода количественный показатель, который оценивает различные характеристики кода
IntelliTrace функция интеллектуального отслеживания работы программы

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

VisualStudio и TeamFoundationServer представляют решение компании Microsoft по управлению жизненным циклом приложений. Управление жизненным циклом приложения в Visual Studio базируется на принципах продуктивности, интеграции и расширяемости. В Visual Studio для архитектурного проектирования используются инструменты визуального моделирования на основе языка UML. Основным средством разработки в VisualStudio2012 является интегрированная среда разработки IDE, которая интегрирована со средствами модульного тестирования. VisualStudio 2012 Ultimate предоставляет разработчику инструмент для создания и использования модульных тестов, нагрузочных тестов и веб тестов производительности, а также тестов пользовательского интерфейса. Инструментами тестировщика при создании приложений является специализированный инструмент - MicrosoftTestManager. Создание эффективной среды тестирования сложных приложений выполняется с помощью лаборатории тестирования - LabManagement.

Набор для практики

Вопросы

  1. Что определяет понятие "управление жизненным циклом приложений"?
  2. Назовите принципы управления жизненным циклом приложения в Visual Studio.
  3. Для чего предназначены инструменты визуального проектирования в Visual Studio?
  4. Какие виды схем архитектурного проектирования можно подготовить в Visual Studio 2012?
  5. Для чего предназначена функция "Анализ покрытия кода" в VisualStudio 2012?
  6. Поясните назначение профилировщика в Visual Studio 2012.
  7. Поясните назначение программы IntelliTrace.
  8. Какие метрики кода используются в VisualStudio 2012?
  9. Какое назначение нагрузочных тестов в Visual Studio 2012?
  10. Какие возможности предоставляет лаборатория тестирования - LabManagement?

Упражнения

  1. Проведите анализ подходов архитектурного проектирования ПО.
  2. Проведите анализ подходов в формировании требований к ПО.
  3. Проведите анализ средств разработки ПО.
Мария Морозова
Мария Морозова

Здравствуйте!

В диалоговом окне Добавить Team Foundation Server введите имя или URL-адрес сервера TFS. Ввожу как в инструкции localhost, выдает ошибку, что невозможно соединиться с сервером. Что делать? Никакого администратора нет, что вводить?

Анатолий Садков
Анатолий Садков
Россия, г. Архангельск