Возможности Visual Studio 2013 и их использование для облачных вычислений

Жизненный цикл разработки приложения в Visual Studio 2013

Разбить на страницы
Показывать лекцию целиком

Цель лекции

Ознакомление с принципами моделирования, проектирования, реализации, рефакторинга, тестирования и сопровождения проектов в Visual Studio 2013.

8.1. Введение. Водопадная модель жизненного цикла программы

Одна из наиболее важных возможностей интегрированной среды Visual Studio 2013 - поддержка всех этапов жизненного цикла разработки программного проекта, которую мы рассмотрим в данной лекции.

В лекции 5 рассмотрен пример разработки, отладки и профилирования в среде VS 2013 простого консольного приложения на языке C#, что можно считать отправной точкой нашего изложения.

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

  • Выработка требований и целей - формулировка технических, маркетинговых, эксплуатационных и других требований будущей программной системы в виде документа, который в современной западной практике носит название Marketing Requirements Document (MRD);
  • Спецификация - формализованное, полное, точное и внешнее описание программной системы (термин внешнее в данном случае понимается описание того, "ЧТО, а не КАК", т.е. элементы и проект реализации в спецификацию не входят);
  • Проектирование (дизайн) - разработка подробного проекта системы, включая иерархию модулей, входные и выходные данные, информационные потоки, представление данных, основные алгоритмы; частью спецификации и проектирования является моделирование - построение формальной модели проекта;
  • Реализация (кодирование) - разработка программного кода системы на выбранном для реализации языке программирования;
  • Верификация - проверка корректности реализации программной системы, которая на практике в большинстве случаев выполняется путем тестирования (прогона набора тестов), либо путем формальной верификации - формального доказательства того, что реализация системы соответствует формальной спецификации, выполненной на каком-либо языке спецификаций. Иногда тестирование сочетается с формальной верификацией. При обнаружении ошибки выполняется отладка (см. лекцию 7);
  • Выпуск (релиз) программной системы для пользователей;
  • Сопровождение программной системы - исправление ошибок, обучение пользователей, ответы на их вопросы, реализация расширений функциональности системы по требованию пользователей.
  • Один из важнейших вопросов при разработке - организация работы команды программистов проекта. Поддержка командной разработки в Visual Studio 2013 рассмотрена в лекции 9.

    8.2. Моделирование структуры программы на языке UML

    В Visual Studio 2013, как и во многих других современных интегрированных средах, имеется поддержка моделирования структуры программы на языке UML [22]. Данный язык моделирования может быть использован на ранних этапах разработки проекта, например, при проектировании иерархии классов.

    Язык UML позволяет спроектировать иерархию классов в абстрактных терминах, представить ее в виде модели, а модель - в виде диаграммы. Затем по диаграмме может быть сгенерирован код на выбранном языке (например, на C#). Таким образом, использование языка UML позволяет перейти от этапа моделирования и проектирования к этапу реализации. Сгенерированный код может быть затем использован как основа для последующей реализации проекта.

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

    В качестве примера рассмотрим генерацию простой UML-модели из двух взаимосвязанных классов, визуализацию этой модели и генерацию по ней кода на языке C#.

    Для создания UML-моделей используется специальный вид проекта Modeling Project.

    Создадим проект для моделирования. В среде VS 2013 выберем в главном меню ).

    (рис 8.1) Создание проекта для построения UML-модели

    Для добавления к проекту новой UML-диаграммы выберем пункт меню ).

    (рис 8.2) Выбор вида новой UML-диаграммы

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

  • UML Sequence Diagram - диаграмма последовательности;
  • UML Use Case Diagram - диаграмма использования;
  • UML Activity Diagram - диаграмма активности (команды разработчиков);
  • UML Component Diagram - диаграмма компонент;
  • Layer Diagram - диаграмма уровней;
  • Directed Graph Document - диаграмма, изображающая документ в виде ориентированного графа.
  • Создаем новую диаграмму классов, пока - пустую (рис 8.3):

    (рис 8.3) Создание новой диаграммы классов

    Для добавления к диаграмме класса выбираем в контекстном меню пункты ):

    (рис 8.4) Добавление к диаграмме нового класса

    Класс добавляется с именем ).

    (рис 8.5) Класс с атрибутами и операциями

    Изменим имя класса в модели на ). Для добавления атрибутов и операций используется контекстное меню и пункт Add:

    (рис 8.6) Определение атрибута Size класса Stack и операций класса Push и Pop

    Добавим еще один класс - ):

    (рис 8.7) Добавление класса MyStack с атибутом Default и операцией Iterate

    Теперь наша задача - представить на диаграмме информацию о том, что класс ).

    (рис 8.8) Выбор связи вида Inheritance между двумя классами

    Добавляем связи вида наследование к диаграмме: находясь на имени класса ).

    (рис 8.9) Связывание классов дугой наследования

    Теперь можно сгенерировать код, который используем при дальнейшей разработке. В контекстном меню выбираем пункт ):

    (рис 8.10) Генерация кода по UML-диаграмме

    Генератор кода просит уточнить, по какому шаблону будет происходить генерация. Выбираем шаблон кода для класса (рис 8.11):

    (рис 8.11) Выбор шаблона кода для класса при генерации кода по UML-диаграмме

    После генерации кода в Solution Explorer появляются два новых пункта - файлы на языке C# ):

    (рис 8.12) Завершение генерации кода по UML-диаграмме: генерация двух файлов на C#

    Откроем теперь новые файлы .

    (рис 8.13) Сгенерированный файл Stack.cs

    Атрибут Size реализован в виде свойства (property) с методами get и set. Заглушки методов - в виде виртуальных методов с реализацией в виде генерации исключения, например:

    public virtual void Push()
    	{
    		throw new System.NotImplementedException();
    	}
        

    Фрагмент файла :

    (рис 8.14) Сгенерированный файл MyStack.cs

    Как видно из рисунка, в исходном коде отображено наследование классов (MyStack - потомок класса Stack).

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

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

    Возможны и "обратные" действия, называемые в современной практике разработки reverse engineering: по уже реализованным классам сгенерировать UML-диаграмму.

    8.3. Разработка и реорганизация кода: рефакторинг

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

    Особое место при разработке и модификации кода занимает рефакторинг [23] - систематическая модификация и улучшение существующего кода, без коренного изменения его семантики, с помощью автоматических преобразований, осуществляемых средой.

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

    Рассмотрим рефакторинг в среде на примере простого консольного приложения (рис 8.15):

    (рис 8.15) Простое консольное приложение

    В программе определен класс Program, статический метод Main и метод экземпляра K с аргументом X.

    Пусть необходимо изменить имя метода K на M (естественно, не только в определении, но и во всех его использованиях).

    Текущую позицию в редакторе текста устанавливаем на первую строчку определения метода ):

    (рис 8.16) Выбор действия по рефакторингу для метода K

    Далее выделяем имя метода - :

    (рис 8.17) Выбор действия замены имени метода K

    В окне рис 8.17 задаем новое имя метода - .

    (рис 8.18) Предварительный просмотр планируемых изменений в коде

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

    На рис 8.19 показан результат рефакторинга.

    (рис 8.19) Результат рефакторинга - имя метода изменено

    Чтобы убедиться в правильности выполненных средой преобразований, рекомендуем сделать сборку проекта. В окне Refactor (внизу) дана информация о том, какие преобразования произведены.

    Среда VS 2013 предоставляет следующие виды рефакторинга:

  • Rename - замена имени сущности;
  • Extract Method - извлечь метод: преобразовать выделенный фрагмент кода в метод с заданным именем;
  • Encapsulate Field - инкапсулировать поле, сделав его приватным, но добавить public-свойство для доступа к нему;
  • Extract Interface - извлечь интерфейс: выделить текст класса и автоматически сформировать для него соответствующий интерфейс (если это возможно);
  • Remove parameters - удалить часть параметров метода;
  • Reorder parameters - изменить порядок параметров метода.
  • Перечень преобразований весьма впечатляющий, однако, как обычно, хотелось бы большего - например, рефакторинга с целью улучшить надежность и безопасность кода, Уверен, что это - дело ближайшего будущего и будет реализовано в новых версиях Visual Studio.

    Заметим, что большие возможности преобразований типа рефакторинга предоставляет аспектно-ориентированное программирование [9], так как оно направлено именно на систематические трансформации программ.

    8.4. Тестирование

    Среда VS 2013 предоставляет значительную поддержку и на этапе тестирования программ. К среде может быть дополнительно инсталлирован генератор unit-тестов (тестов для конкретных методов), - например, классический генератор тестов NUint или относительно новый генератор тестов MSUnit, разработанный Microsoft. В среде, в пункте главного меню Test, имеются возможности создания списка прогоняемых тестов, прогона тестов (полностью или выборочно), анализа тестового покрытия, конфигурирования генератора тестов и др. Практически на примерах мы рассмотрим поддержку тестирования в лабораторных работах.

    8.5. Сопровождение

    При сопровождении программ особенно важной задачей является четкая фиксация изменений и исправлений кода, для чего служат многочисленные системы управления исходным кодом (source code control systems), фиксирующие и нумерующие версии каждого файла исходного кода при каждом его изменении. Среда VS 2013 предоставляет инструмент интеграции разрабатываемого проекта с одной из систем управления исходным кодом. Наиболее популярными из них в настоящее время являются Git, Subversion, CVS. Среда Visual Studio имеет также собственную систему управления исходным кодом - Microsoft Visual SourceSafe.

    8.6. Резюме

    Поддержка этапов жизненного цикла разработки программы в среде Visual Studio весьма удобна и разнообразна. Поддержаны почти все этапы жизненного цикла, а также коллективная разработка программ. Особенно удобными являются генерация UML-моделей и автоматическая генерация исходного кода по ним, рефакторинг, а также всевозможные подсказки, подсветки и элементы контроля при вводе исходного кода. Как специалист, работавший еще на mainframe-компьютерах 1970-х гг., могу сказать, что старшему поколению программистов подобная поддержка даже и "не снилась". Но всегда хочется большего. Прежде всего, хотелось бы, чтобы активнее развивалась поддержка trustworthy computing - проектирования и разработки "только правильного", надежного и безопасного кода. Уверен, что это - дело ближайшего будущего.

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

    Верификация - проверка корректности разработки программы в виде тестирования (прогона набора тестов) или в виде формального доказательства корректности программы (т.е. соответствия ее реализации ее спецификации).
    Водопадная модель жизненного цикла - классическая модель разработки программы в виде совокупности этапов, выполняемых последовательно.
    Жизненный цикл разработки программы - последовательность этапов, из которых состоит разработка программы: выработка требований, спецификация, проектирование, реализация, верифакация (тестирование), сопровождение, выпуск программного продукта.
    Моделирование программы - разработка формальной модели программы, выполняемая, как правило, на языке Unified Modeling Language (UML).
    Рефакторинг (refactoring) - систематические автоматизированные преобразования программного кода с целью улучшения его структуры, без коренных изменений в его семантике.
    UML (Unified Modeling Language) - язык моделирования для построения формальных моделей программ и процессов их разработки.

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

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

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

    Вопросы

  • Что такое жизненный цикл разработки программы?
  • Что такое водопадная модель жизненного цикла?
  • Каково содержание этапа выработки требований и целей?
  • Каково содержание этапа спецификации?
  • Каково содержание этапа проектирования?
  • Каково содержание этапа реализации?
  • Каково содержание этапа верификации (тестирования)?
  • Каково содержание этапа сопровождения?
  • Что такое UML?
  • Какие виды диаграмм имеются в UML?
  • Из каких элементов состоит модель класса в UML?
  • Что такое рефакторинг?
  • Какие виды рефакторинга поддержаны в среде VS 2013?
  • Что такое тестирование и как этап тестирования поддержан в VS 2013?
  • Какие системы управления исходным кодов Вы знаете, для чего они предназначены?
  • Упражнения

  • Постройте модель простой программы на языке UML в среде Visual Studio 2013, сгенерируйте по этой модели исходный код проекта и исследуйте его.
  • Попробуйте на практике на простом примере все виды рефакторинга, поддержанные в среде VS 2013.
  • Темы для курсовых работ, рефератов, эссе

  • Поддержка жизненного цикла разработки программы в среде VS 2013 (реферат).
  • Построение моделей программ и процесса их разработки в среде VS 2013 (реферат).
  • Рефакторинг и его поддержка в среде VS 2013 (реферат).
  • Дополнительные материалы, презентации

    Презентация к данной лекции: VS_2013_Course_8.pptx.

    Страницы:

    Цель лекции

    Ознакомление с принципами моделирования, проектирования, реализации, рефакторинга, тестирования и сопровождения проектов в Visual Studio 2013.

    8.1. Введение. Водопадная модель жизненного цикла программы

    Одна из наиболее важных возможностей интегрированной среды Visual Studio 2013 - поддержка всех этапов жизненного цикла разработки программного проекта, которую мы рассмотрим в данной лекции.

    В лекции 5 рассмотрен пример разработки, отладки и профилирования в среде VS 2013 простого консольного приложения на языке C#, что можно считать отправной точкой нашего изложения.

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

  • Выработка требований и целей - формулировка технических, маркетинговых, эксплуатационных и других требований будущей программной системы в виде документа, который в современной западной практике носит название Marketing Requirements Document (MRD);
  • Спецификация - формализованное, полное, точное и внешнее описание программной системы (термин внешнее в данном случае понимается описание того, "ЧТО, а не КАК", т.е. элементы и проект реализации в спецификацию не входят);
  • Проектирование (дизайн) - разработка подробного проекта системы, включая иерархию модулей, входные и выходные данные, информационные потоки, представление данных, основные алгоритмы; частью спецификации и проектирования является моделирование - построение формальной модели проекта;
  • Реализация (кодирование) - разработка программного кода системы на выбранном для реализации языке программирования;
  • Верификация - проверка корректности реализации программной системы, которая на практике в большинстве случаев выполняется путем тестирования (прогона набора тестов), либо путем формальной верификации - формального доказательства того, что реализация системы соответствует формальной спецификации, выполненной на каком-либо языке спецификаций. Иногда тестирование сочетается с формальной верификацией. При обнаружении ошибки выполняется отладка (см. лекцию 7);
  • Выпуск (релиз) программной системы для пользователей;
  • Сопровождение программной системы - исправление ошибок, обучение пользователей, ответы на их вопросы, реализация расширений функциональности системы по требованию пользователей.
  • Один из важнейших вопросов при разработке - организация работы команды программистов проекта. Поддержка командной разработки в Visual Studio 2013 рассмотрена в лекции 9.

    8.2. Моделирование структуры программы на языке UML

    В Visual Studio 2013, как и во многих других современных интегрированных средах, имеется поддержка моделирования структуры программы на языке UML [22]. Данный язык моделирования может быть использован на ранних этапах разработки проекта, например, при проектировании иерархии классов.

    Язык UML позволяет спроектировать иерархию классов в абстрактных терминах, представить ее в виде модели, а модель - в виде диаграммы. Затем по диаграмме может быть сгенерирован код на выбранном языке (например, на C#). Таким образом, использование языка UML позволяет перейти от этапа моделирования и проектирования к этапу реализации. Сгенерированный код может быть затем использован как основа для последующей реализации проекта.

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

    В качестве примера рассмотрим генерацию простой UML-модели из двух взаимосвязанных классов, визуализацию этой модели и генерацию по ней кода на языке C#.

    Для создания UML-моделей используется специальный вид проекта Modeling Project.

    Создадим проект для моделирования. В среде VS 2013 выберем в главном меню ).

    (рис 8.1) Создание проекта для построения UML-модели

    Для добавления к проекту новой UML-диаграммы выберем пункт меню ).

    (рис 8.2) Выбор вида новой UML-диаграммы

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

  • UML Sequence Diagram - диаграмма последовательности;
  • UML Use Case Diagram - диаграмма использования;
  • UML Activity Diagram - диаграмма активности (команды разработчиков);
  • UML Component Diagram - диаграмма компонент;
  • Layer Diagram - диаграмма уровней;
  • Directed Graph Document - диаграмма, изображающая документ в виде ориентированного графа.
  • Создаем новую диаграмму классов, пока - пустую (рис 8.3):

    (рис 8.3) Создание новой диаграммы классов

    Для добавления к диаграмме класса выбираем в контекстном меню пункты ):

    (рис 8.4) Добавление к диаграмме нового класса

    Класс добавляется с именем ).

    (рис 8.5) Класс с атрибутами и операциями

    Изменим имя класса в модели на ). Для добавления атрибутов и операций используется контекстное меню и пункт Add:

    (рис 8.6) Определение атрибута Size класса Stack и операций класса Push и Pop

    Добавим еще один класс - ):

    (рис 8.7) Добавление класса MyStack с атибутом Default и операцией Iterate

    Теперь наша задача - представить на диаграмме информацию о том, что класс ).

    (рис 8.8) Выбор связи вида Inheritance между двумя классами

    Добавляем связи вида наследование к диаграмме: находясь на имени класса ).

    (рис 8.9) Связывание классов дугой наследования

    Теперь можно сгенерировать код, который используем при дальнейшей разработке. В контекстном меню выбираем пункт ):

    (рис 8.10) Генерация кода по UML-диаграмме

    Генератор кода просит уточнить, по какому шаблону будет происходить генерация. Выбираем шаблон кода для класса (рис 8.11):

    (рис 8.11) Выбор шаблона кода для класса при генерации кода по UML-диаграмме

    После генерации кода в Solution Explorer появляются два новых пункта - файлы на языке C# ):

    (рис 8.12) Завершение генерации кода по UML-диаграмме: генерация двух файлов на C#

    Откроем теперь новые файлы .

    (рис 8.13) Сгенерированный файл Stack.cs

    Атрибут Size реализован в виде свойства (property) с методами get и set. Заглушки методов - в виде виртуальных методов с реализацией в виде генерации исключения, например:

    public virtual void Push()
    	{
    		throw new System.NotImplementedException();
    	}
        

    Фрагмент файла :

    (рис 8.14) Сгенерированный файл MyStack.cs

    Как видно из рисунка, в исходном коде отображено наследование классов (MyStack - потомок класса Stack).

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

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

    Возможны и "обратные" действия, называемые в современной практике разработки reverse engineering: по уже реализованным классам сгенерировать UML-диаграмму.

    8.3. Разработка и реорганизация кода: рефакторинг

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

    Особое место при разработке и модификации кода занимает рефакторинг [23] - систематическая модификация и улучшение существующего кода, без коренного изменения его семантики, с помощью автоматических преобразований, осуществляемых средой.

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

    Рассмотрим рефакторинг в среде на примере простого консольного приложения (рис 8.15):

    (рис 8.15) Простое консольное приложение

    В программе определен класс Program, статический метод Main и метод экземпляра K с аргументом X.

    Пусть необходимо изменить имя метода K на M (естественно, не только в определении, но и во всех его использованиях).

    Текущую позицию в редакторе текста устанавливаем на первую строчку определения метода ):

    (рис 8.16) Выбор действия по рефакторингу для метода K

    Далее выделяем имя метода - :

    (рис 8.17) Выбор действия замены имени метода K

    В окне рис 8.17 задаем новое имя метода - .

    (рис 8.18) Предварительный просмотр планируемых изменений в коде

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

    На рис 8.19 показан результат рефакторинга.

    (рис 8.19) Результат рефакторинга - имя метода изменено

    Чтобы убедиться в правильности выполненных средой преобразований, рекомендуем сделать сборку проекта. В окне Refactor (внизу) дана информация о том, какие преобразования произведены.

    Среда VS 2013 предоставляет следующие виды рефакторинга:

  • Rename - замена имени сущности;
  • Extract Method - извлечь метод: преобразовать выделенный фрагмент кода в метод с заданным именем;
  • Encapsulate Field - инкапсулировать поле, сделав его приватным, но добавить public-свойство для доступа к нему;
  • Extract Interface - извлечь интерфейс: выделить текст класса и автоматически сформировать для него соответствующий интерфейс (если это возможно);
  • Remove parameters - удалить часть параметров метода;
  • Reorder parameters - изменить порядок параметров метода.
  • Перечень преобразований весьма впечатляющий, однако, как обычно, хотелось бы большего - например, рефакторинга с целью улучшить надежность и безопасность кода, Уверен, что это - дело ближайшего будущего и будет реализовано в новых версиях Visual Studio.

    Заметим, что большие возможности преобразований типа рефакторинга предоставляет аспектно-ориентированное программирование [9], так как оно направлено именно на систематические трансформации программ.

    8.4. Тестирование

    Среда VS 2013 предоставляет значительную поддержку и на этапе тестирования программ. К среде может быть дополнительно инсталлирован генератор unit-тестов (тестов для конкретных методов), - например, классический генератор тестов NUint или относительно новый генератор тестов MSUnit, разработанный Microsoft. В среде, в пункте главного меню Test, имеются возможности создания списка прогоняемых тестов, прогона тестов (полностью или выборочно), анализа тестового покрытия, конфигурирования генератора тестов и др. Практически на примерах мы рассмотрим поддержку тестирования в лабораторных работах.

    8.5. Сопровождение

    При сопровождении программ особенно важной задачей является четкая фиксация изменений и исправлений кода, для чего служат многочисленные системы управления исходным кодом (source code control systems), фиксирующие и нумерующие версии каждого файла исходного кода при каждом его изменении. Среда VS 2013 предоставляет инструмент интеграции разрабатываемого проекта с одной из систем управления исходным кодом. Наиболее популярными из них в настоящее время являются Git, Subversion, CVS. Среда Visual Studio имеет также собственную систему управления исходным кодом - Microsoft Visual SourceSafe.

    8.6. Резюме

    Поддержка этапов жизненного цикла разработки программы в среде Visual Studio весьма удобна и разнообразна. Поддержаны почти все этапы жизненного цикла, а также коллективная разработка программ. Особенно удобными являются генерация UML-моделей и автоматическая генерация исходного кода по ним, рефакторинг, а также всевозможные подсказки, подсветки и элементы контроля при вводе исходного кода. Как специалист, работавший еще на mainframe-компьютерах 1970-х гг., могу сказать, что старшему поколению программистов подобная поддержка даже и "не снилась". Но всегда хочется большего. Прежде всего, хотелось бы, чтобы активнее развивалась поддержка trustworthy computing - проектирования и разработки "только правильного", надежного и безопасного кода. Уверен, что это - дело ближайшего будущего.

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

    Верификация - проверка корректности разработки программы в виде тестирования (прогона набора тестов) или в виде формального доказательства корректности программы (т.е. соответствия ее реализации ее спецификации).
    Водопадная модель жизненного цикла - классическая модель разработки программы в виде совокупности этапов, выполняемых последовательно.
    Жизненный цикл разработки программы - последовательность этапов, из которых состоит разработка программы: выработка требований, спецификация, проектирование, реализация, верифакация (тестирование), сопровождение, выпуск программного продукта.
    Моделирование программы - разработка формальной модели программы, выполняемая, как правило, на языке Unified Modeling Language (UML).
    Рефакторинг (refactoring) - систематические автоматизированные преобразования программного кода с целью улучшения его структуры, без коренных изменений в его семантике.
    UML (Unified Modeling Language) - язык моделирования для построения формальных моделей программ и процессов их разработки.

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

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

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

    Вопросы

  • Что такое жизненный цикл разработки программы?
  • Что такое водопадная модель жизненного цикла?
  • Каково содержание этапа выработки требований и целей?
  • Каково содержание этапа спецификации?
  • Каково содержание этапа проектирования?
  • Каково содержание этапа реализации?
  • Каково содержание этапа верификации (тестирования)?
  • Каково содержание этапа сопровождения?
  • Что такое UML?
  • Какие виды диаграмм имеются в UML?
  • Из каких элементов состоит модель класса в UML?
  • Что такое рефакторинг?
  • Какие виды рефакторинга поддержаны в среде VS 2013?
  • Что такое тестирование и как этап тестирования поддержан в VS 2013?
  • Какие системы управления исходным кодов Вы знаете, для чего они предназначены?
  • Упражнения

  • Постройте модель простой программы на языке UML в среде Visual Studio 2013, сгенерируйте по этой модели исходный код проекта и исследуйте его.
  • Попробуйте на практике на простом примере все виды рефакторинга, поддержанные в среде VS 2013.
  • Темы для курсовых работ, рефератов, эссе

  • Поддержка жизненного цикла разработки программы в среде VS 2013 (реферат).
  • Построение моделей программ и процесса их разработки в среде VS 2013 (реферат).
  • Рефакторинг и его поддержка в среде VS 2013 (реферат).
  • Дополнительные материалы, презентации

    Презентация к данной лекции: VS_2013_Course_8.pptx.

    Вернуться к учебному плану