Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Технологии разработки ПО. Лабораторный практикум
.pdf
№ 4484
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС»
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
ВЫСШЕГО ОБРАЗОВАНИЯ
ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОМПЬЮТЕРНЫХ НАУК
Кафедра инфокоммуникационных технологий
А.В. Карпишук
ТЕХНОЛОГИИ РАЗРАБОТКИ ПО
Лабораторный практикум
Рекомендовано редакционно-издательским
советом университета
Москва 2021

УДК 004.4
К20
Рецензент
канд. техн. наук, доц., доц. кафедры ФН-7 В.А. Румянцева
(МГТУ им. Н.Э. Баумана)
Карпишук А.В.
К20 Технологии разработки ПО : лаб. практикум / А.В. Кар-
пишук. – Москва : Издательский Дом НИТУ «МИСиС»,
2021. – 79 с.
Приведены лабораторные работы по всем темам дисциплины
«Технологии разработки ПО».
Практикум предназначен для студентов, обучающихся в бакалавриате по направлениям 09.03.02 «Информационные системы
и технологии», 09.03.03 «Прикладная информатика».
УДК 004.4
Карпишук А.В., 2021
НИТУ «МИСиС», 2021

ОГЛАВЛЕНИЕ
Введение ........................................................................ 4
Лабораторная работа № 1
«Расчет показателей масштабности» ................................. 5
Лабораторная работа № 2
«Определение трудозатрат на разработку» ........................ 17
Лабораторная работа № 3
«Разработка графических спецификаций» ....................... 26
Лабораторная работа № 4
«Определение связности класса» ..................................... 35
Лабораторная работа № 5
«Структурное тестирование» .......................................... 40
Лабораторная работа № 6
«Функциональное тестирование» .................................... 49
Лабораторная работа № 7
«Разработка интерфейса пользователя» ........................... 61
Заключение ................................................................. 69
Библиографический список ............................................ 70
Приложение 1.............................................................. 71
Приложение 2.............................................................. 78
3

ВВЕДЕНИЕ
Целью освоения дисциплины «Технологии разработки ПО»
является получение студентами знаний, умений и навыков,
формирование профессиональных компетенций в области анализа, проектирования, реализации, тестирования, отладки,
внедрения и сопровождения программного обеспечения вычислительной техники.
Цикл лабораторных работ по дисциплине направлен на закрепление знаний, полученных в лекционном курсе, и приобретение навыков решения типовых задач, стоящих перед разработчиками сложных программных средств. Данное учебное
пособие содержит описание методик решения таких задач,
примеры выполнения и вопросы для самоконтроля. В прил. 2
приведены требования к оформлению отчетов.
4

Лабораторная работа № 1
«РАСЧЕТ ПОКАЗАТЕЛЕЙ
МАСШТАБНОСТИ»
1.1. Цель работы
Освоение методики определения масштабов программных
средств и получение практических навыков в оценке производительности и качества работы программиста.
1.2. Теоретический минимум
В оценке сроков и стоимости разработки программного
проекта выделяют два основных этапа: оценивание размера
программы и, опираясь на полученные данные, оценивание
трудозатрат и стоимости. При этом трудоемкость разработки
в рамках одного класса решаемых задач практически линейно
зависит от масштаба проекта. Организации, сферой деятельности которых является разработка программ, имеют собственные наработки и стандарты в методике определения трудоемкости, опирающиеся на опыт выполнения предыдущих
проектов и позволяющие оптимально распределить ресурсы.
Важными параметрами в учете ресурсов являются производительность и качество работы отдельных программистов или
групп разработчиков, для оценки которых необходим расчет
численных показателей (метрик) программного кода.
В данной лабораторной работе выполняются задачи расчета размерно-ориентированных метрик программы и определения индивидуальных показателей производительности и качества работы программиста.
1.2.1. Метрика SLOC
К размерно-ориентированным метрикам относится метрика строки кода (source lines of code, SLOC) – совокупное количество строк кода в модулях программы. Различают физиче-
ские (physical) и логические (logical) строки кода. Физической
строке соответствует одна строка листинга программы, логической строке соответствует, как правило, один оператор язы-
5

ка программирования. Поскольку один и тот же программный
код, даже в рамках одного языка, может быть описан разным
количеством физических строк, для оценки трудоемкости используют логические строки кода.
При подсчете показателя SLOC в программах на языках
C/C++, С# считаются:
1) операторы ветвления: if, else if, else,?, try, catch, switch;
2) операторы цикла: for, while, do…while. Инициализация,
условие и инкремент в заголовке цикла for, фигурные скобки
{}, ограничивающие тело цикла, а также закрывающий оператор цикла разделитель точка с запятой не считаются;
3) операторы перехода: return, break, goto, exit, continue,
throw. Метки, используемые совместно с оператором goto, не
считаются;
4) прочие операторы, оканчивающиеся точкой с запятой;
5) разделитель блоков: {}. Пара фигурных скобок считаются
как один разделитель. Фигурные скобки, оканчивающиеся разделителем точка с запятой, не считаются. Фигурные скобки, ис-
пользуемые в операторах ветвления и цикла, также не считаются;
6) директивы препроцессора.
Для того чтобы оценить масштаб проекта, модули которого
написаны на разных языках программирования, необходимо
выбрать универсальную единицу измерения и привести к ней
объемы этих модулей. Такой единицей может выступать число машинных команд в объектном коде после трансляции.
Коэффициенты перевода зависят от компилятора, среды разработки и стиля программирования, и должны определяться
для каждого разработчика или группы разработчиков на основании опыта предыдущих проектов.
1.2.2. Метрики Холстеда
Еще одной группой размерно-ориентированных метрик являются метрики Холстеда (Halstead complexity measures), в ос-
нове методики расчета которых лежат четыре измеряемые характеристики программы:
– число уникальных операторов программы, включая
h
1
символы-разделители, имена процедур и знаки операций (словарь операторов);
6

h2 – число уникальных операндов программы (словарь опе-
рандов);
– общее число операторов в программе;
N
1
– общее число операндов в программе.
N
2
При определении этих характеристик руководствуются следующими правилами.
1. Все переменные и константы считаются операндами.
2. Глобальные переменные и константы, используемые в
разных модулях программы, считаются множественными вхождениями одного операнда.
3. Локальные переменные с одинаковыми именами в разных функциях (методах) считаются уникальными операндами.
4. Циклические конструкции, например do {…} while (), while
() {…}, for () {…}, управляющие конструкции, например if () {…}, if
() {…} else {…}, и т.д., считаются операторами.
5. В управляющей конструкции switch () {case:…}, ключевое слово switch и все вхождения case считаются операторами.
6. Зарезервированные ключевые слова, такие как return,
default, continue, break, sizeof и т.д., считаются операторами.
7. Вызовы функций и методов считаются операторами.
8. Знаки арифметических, логических и поразрядных операций, скобки, запятые и разделители считаются операторами.
9. Оператор перехода goto считается оператором, а связанная с ним метка – операндом.
10. В обращениях к элементам массива, имя массива и индекс считаются операндами, а квадратные скобки – оператором.
11. В обращениях к полям (свойствам, данным-членам)
структур или объектов имя экземпляра структуры (объекта)
и имя поля считаются операндами, а разделяющий их оператор доступа – оператором. Поля, имеющие одинаковые имена,
но принадлежащие разным типам структур или разным классам, считаются уникальными операндами.
12. Комментарии, типы данных, объявления идентификаторов, функций и методов, а также директивы препроцессора
в расчетах не учитываются.
На основании подсчетов операторов и операндов, вычисля-
ют следующие метрики.
7

Словарь программы (program vocabulary, h) – суммарное
12
.h=h +h
12
.NN N= +
1 21 2 22
.log logN∧=h +h⋅h ⋅h
2
lo .gVN= ⋅ h
12
2
.
2
N
D = ⋅
h
h
.E VD= ⋅
количество уникальных операторов и операндов в программе:
Длина программы (program length, N) – суммарное количе-
ство операторов и операндов в программе:
Оценочная длина программы (estimated program length, ∧N) –
ожидаемая сумма операторов и операндов в программе:
Для стилистически корректного кода расхождение величин длины и оценочной длины программы не превышает, как
правило, 10 %.
Объем программы (program volume, V) – размер реализации
алгоритма вне зависимости от конкретного языка программирования:
Сложность программы (program difficulty, D) – мера сложности написания (и понимания) программного кода:
Трудоемкость написания программы (program effort, E) –
суммарное количество усилий, затрачиваемое на написание
программы:
Прогноз времени реализации (time required to program, T) –
оценка времени (в часах), необходимого для написания программы:
8

64 0.80
E
T =
0
.
300
V
B =
к
.
SLOC
PPT=
Число ошибок,
внесенных и обнаруженных на этапе
100 %
Общее число ошибок, внесенных на э апе
.
т
DDE = ⋅
к
уд
.
C
C
SLOC
=
Прогноз числа ошибок (тumber of delivered bugs, B) – оценка потенциального количества ошибок, допущенных при реализации кода:
1.2.3. Параметры производительности
и качества работы программиста
После завершения всех этапов разработки программы у руководителя проекта набирается достаточно информации для
оценки эффективности отдельных разработчиков. В данной работе будем использовать следующие измеряемые параметры.
Производительность работы программиста (programmer
productivity, PP) – отношение количества строк в коде (SLOC)
ко времени, затраченному на его разработку (T
):
к
Эффективность обнаружения ошибок (defect detection ef-
ficiency, DDE) – отношение количества ошибок, внесенных и
обнаруженных в течение одного этапа разработки, к общему
числу ошибок, внесенных на данном этапе:
Удельная стоимость кода (Суд) – отношение финансовых
затрат на разработку кода (C
) к количеству строк в нем:
к
9

1.3. Порядок выполнения работы
Работа выполняется в пять этапов: анализ, проектирование,
кодирование, тестирование и расчет метрик. Для каждого этапа,
кроме последнего, необходимо фиксировать время выполнения
этапа и количество обнаруженных ошибок, заполняя табл. 1.1.
Таблица 1.1
Этап Время, ч
Анализ X X
Проектирование X
Кодирование
Тестирование
анализа проектирования кодирования
Выявлено ошибок этапа
Этап анализа:
– получить у преподавателя свой вариант задания;
– осмыслить суть задачи, при необходимости задать пре-
подавателю уточняющие вопросы;
– выявить функциональные требования к программе;
– определить формат входных и выходных данных.
Этап проектирования:
– разработать алгоритм решения задачи;
– определить типы и структуры хранения данных;
– определить перечень подключаемых библиотек.
Этап кодирования:
– создать проект в среде разработки программ;
– осуществить кодирование модулей;
– скомпилировать исполняемый файл.
Этап тестирования:
– разработать тестовые наборы данных и условия запуска,
позволяющие проверить работы программы на соответствие
функциональным требованиям;
– осуществить прогон программы по всем тестовым набо-
рам, фиксируя результаты тестирования;
– в случае обнаружения критической ошибки, препятству-
ющей выполнению тестов (зависание программы, необработанное исключение), устранить причину ошибки и продолжить
тестирование.
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
