Технологии программирования. Учебное пособие
.pdfМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение
высшего образования
«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Е. Н. Згуральская
ТЕХНОЛОГИИ
ПРОГРАММИРОВАНИЯ
Учебное пособие
Ульяновск
УлГТУ
2020
УДК 004.04 (075)
ББК 32.973.26-018.1 я7 З-45
Рецензенты:
канд. техн. наук, инженер-конструктор отдела эксплуатационных и технологических средств контроля АО «УКБП» М.В. Гришин; канд. техн. наук, главный конструктор ООО «Агрегат-ПК» Н.С. Гаврилов
Утверждено редакционно-издательским советом университета в качестве учебного пособия
Згуральская, Екатерина Николаевна
З-45 Технологии программирования: учебное пособие / Е. Н. Згуральская. – Ульяновск : УлГТУ, 2020. – 71 с.
ISBN 978-5-9795-1995-1
В учебном |
пособии |
рассмотрены |
некоторые из |
наиболее |
важных |
||
возможностей |
интегрированной |
среды |
Visual Studio |
поддержки |
|||
жизненного цикла разработки программного |
проекта. |
Учебное |
пособие |
||||
предназначено для студентов бакалавров, обучающихся по направлению 09.03.02 «Информационные системы и технологии». Работа подготовлена на кафедре «Самолетостроение» обособленного структурного подразделения «Институт авиационных технологий и управления» УлГТУ.
УДК 004.04 (075)
ББК 32.973.26-018.1 я7
|
© Згуральская Е.Н., 2020 |
ISBN 978-5-9795-1995-1 |
© Оформление. УлГТУ, 2020 |
ОГЛАВЛЕНИЕ |
|
ВВЕДЕНИЕ ............................................................................................. |
5 |
ГЛАВА 1. МЕТРИКИ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ |
|
ПРОГРАММНЫХ СИСТЕМ .............................................................. |
7 |
1.1. Вычисление метрик средствами Visual Studio .............................. |
7 |
1.2. Метрики Чидамбера и Кемерера................................................... |
10 |
Вопросы к главе: ................................................................................. |
14 |
ГЛАВА 2. РЕФАКТОРИНГ ПРОГРАММНОГО |
|
ОБЕСПЕЧЕНИЯ ................................................................................. |
15 |
Вопросы к главе: ................................................................................. |
28 |
ГЛАВА 3. ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ |
|
ПРОГРАММНЫХ СИСТЕМ ............................................................ |
29 |
3.1. Классификация паттернов ............................................................. |
29 |
3.2. Каталог паттернов проектирования.............................................. |
30 |
3.3. Как использовать паттерны........................................................... |
32 |
3.4. Пример использования паттернов ................................................ |
33 |
Вопросы к главе: ................................................................................. |
37 |
ГЛАВА 4. МОДУЛЬНОЕ ТЕСТИРОВАНИЕ |
|
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ............................................ |
38 |
4.1. О модульном тестировании........................................................... |
38 |
4.2. Создание модульного теста средствами Visual Studio ............... |
40 |
4.3. Пространство имен Microsoft.VisualStudio.TestTools. |
|
UnitTesting .............................................................................................. |
48 |
Вопросы к главе: ................................................................................. |
53 |
ЛАБОРАТОРНАЯ РАБОТА № 1. РАСЧЕТ МЕТРИК |
|
ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ПРОГРАММНЫХ |
|
СИСТЕМ ............................................................................................... |
54 |
ЛАБОРАТОРНАЯ РАБОТА № 2. РЕФАКТОРИНГ.................... |
58 |
3
ЛАБОРАТОРНАЯ РАБОТА № 3. ПАТТЕРНЫ |
|
ПРОЕКТИРОВАНИЯ ......................................................................... |
59 |
ЛАБОРАТОРНАЯ РАБОТА № 4. МОДУЛЬНОЕ |
|
ТЕСТИРОВАНИЕ ............................................................................... |
66 |
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ..................... |
71 |
4
ВВЕДЕНИЕ
Учебное пособие предназначено для студентов бакалавров, обучающихся по направлению 09.03.02 «Информационные системы и технологии», изучающих дисциплину «Технологии программирования». Основной задачей дисциплины является изучение вопросов жизненного цикла разработки программного обеспечения.
Также учебное пособие может быть полезно студентам в ходе выполнения выпускной квалификационной работы.
Дисциплина «Технологии программирования» изучается после дисциплины «Основы программирования», в которой уже подробно рассмотрены основные принципы объектно-ориентированного подхода програмировани и проектирования классов, поэтому данные вопросы в пособии не рассматриваются.
В учебном пособии рассмотрены некоторые из наиболее важных возможностей интегрированной среды Visual Studio поддержки жизненного цикла разработки программного проекта, такие как:
-метрики объектно-ориентированных программых систем; -рефакторинг программного обеспечения; -модульное тестирование программного обеспечения.
Теоретический материал, рассмотренный в пособии, закрепляется в ходе выполнения четырех лабораторных работ. При выполнении лабораторных работ у студентов формируются следующие трудовые функции из профессионального стандарта «Специалист по информационным системам», который входит перечень профессиональных стандартов, соответствующих профессиональной деятельности выпускников, освоивших программу бакалавриата по направлению подготовки 09.03.02 «Информационные системы и технологии»:
5
-Кодирование на языках программирования; -Модульное тестирование информационной системы
(верификация); -Исправление дефектов и несоответствий в коде
информационной системы и документации к информационной системе [1].
6
ГЛАВА 1. МЕТРИКИ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ПРОГРАММНЫХ СИСТЕМ
Метрика программного обеспечения (англ. Software metric) – это некая мера определенного свойства программного обеспечения или же его спецификаций. Метрики кода дают количественные оценки различных характеристик кода, а также позволяют определить сложность кода и его изолированные области, которые могут привести к проблемам при сопровождении приложения.
Объектно-ориентированные метрики вводятся с целью:
-улучшить понимание качества продукта;
-оценить эффективность процесса конструирования;
-улучшить качество работы на этапе проектирования.
1.1.Вычисление метрик средствами Visual Studio
Microsoft предоставляет встроенное в Visual Studio средство, которое позволяет оценить код вашего проекта (эта функциональность доступна в Visual Studio 2008 Team System и Visual Studio 2010, начиная с Premium версии). Получить оценку кода можно, нажав правой кнопкой на проекте и выбрав пункт «Рассчитать метрики кода» (рисунок 1.1).
Рисунок 1.1. Окно «Рассчитать метрики кода»
7
Результаты содержат 5 метрик вашего кода рисунок 1.2. Рассмотрим, как рассчитываются эти метрики:
Сложность организации циклов (Cyclomatic Complexity) ‒ метрика показывает структурную сложность кода, т. е. количество различных ветвей в коде. Чем больше этот показатель, тем больше тестов должно быть написано для полного покрытия кода.
Рисунок 1.2. Окно «Результаты метрик кода»
Глубина наследования (Depth of Inheritance) ‒ метрика показывает для каждого класса, какой он по счету в цепочке наследования. Например, есть 3 класса A, B, C. Класс B унаследован от А, а класс С унаследован от В, то значение этой метрики для классов A, B и C будет равно соответственно 1, 2 и 3.
Взаимозависимость классов (Class Coupling) – показывает степень зависимости классов друг с другом. Хороший дизайн программного обеспечения предполагает небольшое количество связанных классов. Чем их больше, тем сложнее в дальнейшем еще раз использовать этот класс, а также поддерживать, т. к. существует очень много зависимостей.
Например, на рисунке 1.3 класс «Account» связан с двумя другими классами «Address» и «Order», тогда как класс «Сountry» не зависит от других классов.
8
Рисунок 1.3. Взаимозависимость классов
Количество строк кода (Lines of Code) – показывает количество строк кода. Этот показатель показывает не точное количество строк в вашем файле, т. к. в расчет не берутся пустые строчки, комментарии, строчки со скобками, объявление типов и пространств имен. Большое количество строк в методе/классе может показывать на ошибки в проектировании и на то, что этот код можно разделить на несколько частей.
Индекс удобства поддержки (Maintainability Index) – комплексный показатель качества кода. Этот показатель разработан специалистами из Carnegie Mellon Software Engineering Institute. В
формулу расчета этой метрики входят следующие метрики:
9
-вычислительная сложность (Halstead Volume) – чем больше операторов, тем больше значение этой метрики;
-количество строк кода;
-сложность организации циклов.
Эта метрика может принимать значения от 0 до 100 и показывает относительную сложность поддержки кода. Чем больше значение этой метрики, тем легче поддерживать код. Низкое значение метрики указывает на сложный код, который сложно поддерживать. Столбец «Индекс удобства поддержки» также содержит значок, который дает быстрое указание на общую ремонтопригодность и сложность конкретного элемента.
В таблице 1.1 показан диапазон, при котором отображается значок:
|
|
|
Таблица 1.1 |
|
|
Степень ремонтопригодности кода |
|||
|
|
|
|
|
Значок |
Уровень |
|
Спектр |
|
|
|
|
|
|
|
Высокая ремонтопригодность |
От 20 до 100 включительно |
||
|
|
|
|
|
|
Умеренная ремонтопригодность |
От 10 |
до 19 включительно |
|
|
|
|
|
|
|
Низкая ремонтопригодность |
От 0 |
до 9 включительно |
|
|
|
|
|
|
Эти значки позволяют увидеть проблемные места, на которых нужно сфокусироваться или исправлять ошибки.
1.2.Метрики Чидамбера и Кемерера
В1994 году Чидамбер и Кемерер предложили шесть проектных метрик, ориентированных на классы. Ниже приведены описания расчета показателей метрик и критерии оценки, введенные для каждой метрики [2].
Взвешенные методы на класс (Weighted Methods per Class) –
подсчитывается количество методов в классе, а также сложность каждого метода (например, цикломатическая сложность), затем
10
