ВУЗ: Московский государственный университет технологий и управления им. К.Г. Разумовского
Категория: Методичка
Дисциплина: Программирование
Добавлен: 16.02.2019
Просмотров: 1689
Скачиваний: 15
ИС разработки ПО, практические работы
6
Глускер А. И.
3
Практическая работа №2. Разработка в среде Linux (12 часов)
1. Цель работы: практическое закрепление знаний об инструментальных средствах, используемых при разработке про-
грамм в среде Linux
2. Порядок выполнения:
(a) в процессе разработки используйте средство контроля версий git, средство отслеживания ошибок (bitbucket.org);
(b) напишите программу в соответствии с вашим вариантом, разбив ее на различные исходные файлы (не менее
трех исходных файлов);
(c) осуществите компиляцию с использованием транслятора и редактора связей gcc, а также программы автомати-
зации сборки make (Makefile необходимо написать грамотно, чтобы перекомпиляция исходных файлов осуществ-
лялась только в той части, что изменилась)
(d) осуществите статический анализ кода с использованием средства cppcheck (используйте опцию --enable=all).
Исправьте найденные недочеты в вашей программе или подготовьте объяснение того, почему исправление неко-
торых недочетов не требуется. Включите в отчет скринщоты результатов статического анализа до и после ис-
правлений. Если изначально не было найдено замечаний, то второй скриншот не требуется.
(e) осуществите UNIT-тестирование нескольких подпрограмм с помощью [check]https://libcheck.github.io/check/ или
аналогичного средства. Тестовый набор должен содержать минимум 10 отдельных тестов для минимум трех
отдельных подпрограмм. Для запуска UNIT-теста создайте соответствующую цель в Makefile.
(f) осуществите подготовку профиля работы вашей программы (время выполения и частота вызова каждой подпро-
граммы) с использованием valgrind и какого-либо средства для демонстрации результатов его работы (например,
kcachegrind).
(g) осуществите подготовку распространяемого пакета с использованием autotools (см. http://blablacode.ru/linux/
500). В результате у вас должны работать все обычные цели make, включая dist.
(h) подготовьте документацию вашего продукта с использованием wiki, встроенном в bitbucket.
Напишите файловую базу данных, управляемую в консольном интерактивном режиме (квазиоконный интерфейс де-
лать не нужно) с возможностями: добавление, удаление, изменение информации соответственно вашему варианту (на
языке С). Необходимо осуществить проверку всех возможных ошибок в части некорректных действий пользователя
и при работе с файлами.
1 База данных студентов группы. Поля: фамилия, имя, отчество, пол, возраст.
2 База данных расходов семьи. Поля: товар, стоимость, количество, дата.
3 База данных загрузки аудиторий. Поля: дата и время начала, дата и время конца, аудитория, преподаватель.
4 База данных учета доходов и расходов предпринимателя. Поля: дата, тип операции (доход/расход), объем опе-
рации, описание, корреспондент.
5 База данных велоклуба. Поля: ФИО, тип велосипеда (MTB и др.), стаж участия в велоклубе.
6 База данных рейсов авиакомпании. Поля: дата и время вылета, аэропорт вылета, аэропорт прилета, дата и время
прилета, марка самолета.
7 База данных автобусных маршрутов. Поля: номер маршрута, номер парка, времена начала и окончания движе-
ния, длина маршрута в км.
8 База данных электричек. Поля: вокзал, номер поезда, количество вагонов, тип (экспресс/обычный/спутник),
станция назначения.
9 База данных товаров Интернет-магазина. Поля: название товара, категория, цена товара, описание товара.
10 База заказов Интернет-магазина. Поля: ФИО заказчика, стоимость заказа, скидка (в процентах), адрес доставки.
11 База данных выборов. Поля: участок, кандидат, количество голосов.
12 База данных практических работ. Поля: практическая работа, студент, номер варианта, номер уровня, дата
сдачи, оценка.
13 База данных операторов и телеканалов. Поля: Название, тип (спутник, кабель, Интернет), охват (кол-во милли-
онов домохозяйств), минимальная стоимость подписки.
14 База данных тарифных планов оператора. Поля: название, тип вещания (обычный/HD), флаг общедоступности.
15 База данных незаконно огороженных берегов. Поля: водный объект, регион, GPS-координаты, длина недоступ-
ного участка берега, дата фиксации нарушения.
16 База данных временного прекращения движения в метро. Поля: дата и время начала прекращения движения,
дата и время окончания прекращения движения, станция, станция (от какой до какой станции прекращено
движение).
17 База данных проката фильмов. Поля: дата, время, кинотеатр, фильм, номер зала, тип сеанса (3D/Imax/обычный).
6
ИС разработки ПО, практические работы
7
Глускер А. И.
18 База данных эвакуированных автомобилей. Поля: улица, автостоянка, GPS-координаты, тип нарушения (стоянка
на проезжей части в месте запрета, стояна на тротуаре, стоянка на газоне), номер автомобиля, тип автомобиля
(легковой/грузовой малой тонажности/грузовой большой тонажности).
19 База данных средних специальных учебных учреждений. Поля: название, адрес, тип подчинения (федераль-
ный/региональный), год основания, номер лицензии, номер аккредитации, дата окончания действия аккредита-
ции.
20 База данных поселков. Поля: название, девелопер, площадь, количество жителей.
21 База данных сухопутной военной техники. Поля: название, модель, разработчик, предприятие, стоимость, тип.
22 База данных деревьев в городе. Поля: GPS-координаты, вид дерева, округ, год посадки.
23 База данных футбольных матчей. Поля: дата, команда, команда, счет, место проведения.
24 База данных обращений жителей. Поля: дата, время, объект, заявитель, содержание обращения (до 255 симво-
лов), дата ответа, ответ на обращение (до 255 символов).
25 База данных студентов колледжа. Поля: ФИО, группа, признак бюджетности, стипендия (нет/обычная/повышенная),
флаг наличия социальной стипендии, дата рождения.
26 База данных паевых инвестиционных фондов (ПИФ). Поля: название, тип (интервальный, открытый, закрытый),
стоимость пая на момент открытия, среднее изменение стоимости пая за год, управляющая компания.
27 База данных посылок для таможенной службы. Поля: дата и время таможенного оформления посылки, отпра-
витель, получатель, стоимость груза, вес посылки.
28 База данных занятости врачей в поликлинике. Поля: дата, время начала интервала, время окончания интервала,
тип приема (первичный/повторный), пациент, врач.
29 База данных запросов по исправлению ошибок в программе. Поля: название, описание, дата регистрации запроса,
дата завершения обработки запроса, ответственный программист, отправитель запроса.
30 База данных митингов. Поля: дата, время, адрес, количество участников заявленное, количество участников по
факту (может не указываться), список заявителей, флаг разрешения.
31 База данных новостей. Поля: название, содержание, дата и время появления, агентство.
32 База данных арендаторов здания. Поля: название, дата начала аренды, дата окончания аренды, номер помеще-
ния.
33 База данных звезд. Поля: название, восхождение, склонение, видимая звездная величина.
34 База данных барельефов. Поля: описание, адрес здания, высота размещения (самой низкой точки барельефа),
год размещения.
35 База данных арбузов, продаваемых в магазине. Поля: сорт, вес, дата поставки, стоимость.
36 База данных санитарных рубок в Московской области. Поля: название района, номер квартала, примерные GPS-
координаты, площадь, дата начала, дата окончания.
37 База данных бракосочетаний. Поля: ФИО брачующегося, ФИО брачующейся, дата, возраст брачующегося, воз-
раст брачующейся.
38 База данных естественных языков. Поля: название, примерное число носителей, примерный год появления, на-
звание географической области наибольшего распространения.
39 База данных буровых установок. Поля: GPS-координаты, наименование владельца, дата начала сооружения,
наименование извлекаемого вещества.
40 База данных вагонов трамвайного депо. Поля: модель, дата приобретения, дата последнего ТО-1, дата последнего
ТО-2.
41 База данных деловых встреч. Поля: ФИО встречаемого, дата и время встречи, место встречи, длительность
встречи.
42 База данных заявок клиентов. Поля: ФИО клиента, дата и время приезда, описание проблемы, примерное время
обслуживания, адрес, телефон.
43 База данных рейсов самолетов. Поля: номер рейса, дата и время вылета, дата и время прилета, аэропорт вылета,
аэропорт прилета.
44 База данных online-курсов. Поля: название, URL, дата начала, длительность в днях, стоимость.
45 База данных полей. Поля: GPS-координаты поля, площадь поля, название засеянной культуры, номер месяца и
номер года.
46 База данных химических элементов. Поля: название, количество протонов, количество нейтронов, количество
электронов, год открытия.
47 База данных гидов. Поля: ФИО, дата рождения, специализация (текстовое поле), адрес проживания.
48 База данных врачей. Поля: ФИО, дата рождения, номер кабинета, флаг наличия кандидатской степени.
49 База данных горелок. Поля: Марка, тип соединения (текст), вес, мощность, наличие пьезоподжига.
7
ИС разработки ПО, практические работы
8
Глускер А. И.
50 База данных больниц. Поля: название, адрес, дата открытия, количество коек.
51 База данных депозитов. Поля: название, название банка, минимальная сумма, валюта, процент годовых, макси-
мальная сумма, длительность в днях.
52 База данных зафиксированных нарушений ПДД. Поля: номер машины, GPS-координаты, дата и время, номер
статьи и пункта.
53 База данных акций со скидками. Поля: название акции, название сети магазинов, максимальный процент скидки,
описание акции, дата начала, дата окончания.
54 База данных диссертаций. Поля: название, тип (кандидатская, докторская), место защиты, дата защиты, ФИО
защищающегся.
55 База данных философов. Поля: ФИО, дата рождения, дата смерти, основной труд, страна рождения.
56 База данных договоров страхования квартиры. Поля: ФИО, адрес, дата начала действия, срок действия в днях,
страховая сумма, страховая премия.
57 База данных долгожителей. Поля: ФИО, страна проживания, дата рождения, комментарий.
58 База данных мест, где распространены грибы. Поля: GPS-координаты, площадь, преимущественный вид грибов,
интервал (число, месяц – число, месяц), когда актуален сбор грибов в данном месте.
59 База данных спортивных площадок. Поля: Адрес, GPS-координаты, площадь, виды спорта.
60 База данных стадионов. Поля: Адрес, площадь, количество мест для зрителей, время начала и окончания работы
(график работы).
61 База данных иностранных агентов. Поля: Адрес, телефон, количество вовлеченных лиц, сумма иностранных
инвестиций за последний год в рублях, дата внесения в реестр иностранных агентов.
62 База данных жалоб на нарушения расписания движения общественного транспорта. Поля: тип (автобус, трол-
лейбус, трамвай), номер, дата и время, название остановки, время ожидания.
63 База данных поездов дальнего следования. Поля: Станция отправления, станция названия, дата и время отправ-
ления, дата и время прибытия, тип поезда (обычный/скорый/высокоскоростной).
64
65
66
67
68
69
70
3. Содержание отчета:
(a) цель работы;
(b) Исходный текст программы
(c) Разработанный Makefile
(d) Протокол git
(e) Протокол системы отслеживания ошибок
(f) Скриншоты wiki
(g) Скриншоты результатов работы cppcheck
(h) Исходные тексты UNIT-тестов
(i) Самостоятельно написанные файлы для использования в autotools
(j) Ответ на контрольные вопросы
4. Контрольные вопросы:
(a) Как осуществляется компиляция и сборка программ, разбитых на несколько исходных файлов с использованием
gcc?
(b) Изложите методику работы с программой make.
(c) Каковы достоинства использования программы make и разбиения программы на отдельные исходные файлы?
(d) В чем сущность UNIT-тестирования? Как она осуществляется с использованием check?
(e) Как осуществляется работа с wiki?
(f) Опишите принцип работы системы отслеживания ошибок
(g) Опишите назначение статического анализатора кода и метод работы с cppcheck.
(h) Опишите методику работы с autotools.
(i) Опишите назначение и методику работы с git.
8
ИС разработки ПО, практические работы
9
Глускер А. И.
4
Практическая работа №3. Создание библиотек (4 часа)
1. Цель работы: знакомство с созданием библиотек в среде Linux
2. Порядок выполнения:
(a) один из исходных файлов программы, созданную в практической работе №2, реализуйте в виде статической
библиотеки; пошаговое руководство по созданию библиотек приведено по адресу https://www.opennet.ru/docs/
RUS/zlp/003.html
(b) другой исходный файл – в виде динамической библиотеки
(c) осуществите соответствующие изменения в Makefile, результат зафиксируйте в git, проведите UNIT-тестирование,
в случае необходимости используйте систему отслеживания ошибок
3. Содержание отчета:
(a) цель работы;
(b) исходный тексты, что были изменены в ходе работы (включая Makefile);
(c) протокол git;
(d) протокол системы отслеживания ошибок (при необходимости);
(e) ответ на контрольные вопросы.
4. Контрольные вопросы:
(a) Опишите назначение и способ создания статической библиотеки
(b) Опишите назначение и способ создания динамической библиотеки
5
Практическая работа №4. Тестирование (6 часов)
1. Цель работы: практическое овладение инструментом поиска утечек памяти valgrind, получение опыта разработки
тестовых наборов и анализа покрытия кода.
2. Порядок выполнения:
(a) напишите программу в соответствии с вашим вариантом;
(b) разработайте тестовый набор для проверки работы программы в различных условиях (когда не введены элемен-
ты, когда все элементы удаляются, когда элементы вставляются и т. д.) /результат – это таблица с четырьмя
столбцами, первый столбец – номер теста, второй столбец – вводимые данные, третий столбец – ожидаемый
результат, четвертый столбец – скриншот результата тестирования/;
(c) проверьте отсутствие утечек памяти для разработанного тестового набора и, в случае необходимости, осуществи-
те отладку;
(d) с помощью gcov осуществите проверку полноты покрытия кода (в части операторов и в части веток ветвлений),
в случае необходимости дополните тестовый набор и проведите дополнительное тестирование
3. Содержание отчета:
(a) цель работы;
(b) исходный текст программы;
(c) копия отчета, выведенного программой valgrind;
(d) копия отчета, выведенного программой gcov;
(e) ответы на контрольный вопрос.
4. Контрольные вопросы:
(a) опишите методику работы с программой valgrind, назначение инструментов поиска утечек памяти
(b) опишите назначение и способ использования программы gcov
9
ИС разработки ПО, практические работы
10
Глускер А. И.
Индивидуальные варианты задания
В программе во время обработки список должен просматриваться один раз (с 23-его варианта – два раза). Программа
состоит из трех частей: формирование списка (ввод с клавиатуры); обработка; вывод списка.
1 Нахождение суммы всех элементов исходного списка, удаление всех элементов, равных 0, добавление квадрата эле-
мента после каждого элемента списка, полученного после завершения предыдущих преобразований.
2 Нахождение произведения всех элементов исходного списка, удаление всех элементов, меньших 0, добавление единицы
после каждого четного элемента списка, полученного после завершения предыдущих преобразований.
3 Нахождение максимума всех элементов исходного списка, удаление всех четных элементов, добавление копии элемента
после каждого элемента списка, пропорционального 3.
4 Нахождение минимума всех элементов исходного списка, удаление всех нечетных элементов, добавление после каж-
дого элемента исходного списка его номера (каким он был в исходном списке).
5 Нахождение суммы всех четных элементов исходного списка, удаление всех чисел, оканчивающихся на 0, из списка,
добавление после каждого элемента списка квадрата этого элемента.
6 Нахождение максимума всех четных элементов исходного списка, удаление всех нечетных элементов и добавление
после каждого элемента списка, являющегося квадратом целого числа, значения −1.
7 Нахождение минимума всех элементов, больших нуля; удаление всех отрицательных элементов и добавление после
каждого элемента списка числа, на единицу большего.
8 Нахождение суммы всех элементов; удаление всех элементов, пропорциональных двум, добавление после каждого
элемента списка куба этого элемента.
9 Нахождение суммы всех элементов, меньших нуля; удаление всех элементов, последняя цифра которых равна 5,
добавление после каждого элемента списка числа, равного последней цифре данного элемента.
10 Нахождение наименьшего четного числа; удаление всех элементов, больших 10, добавление после каждого элемента
списка квадрата данного числа.
11 Нахождение наименьшего числа, кратного трем; удаление всех элементов – двузначных натуральных чисел, добав-
ление после каждого элемента, пропорционального двум, копии этого числа.
12 Нахождение наибольшего номера элемента списка (в исходном списке) числа, кратного трем; удаление всех элементов,
в которых последние две цифры совпадают, добавление после каждого элемента числа, на единицу меньшего.
13 Нахождение суммы чисел, кратных трем; удаление всех элементов, оканчивающихся на 5, добавление после каждого
положительного элемента, копии этого числа.
14 Нахождение произведения однозначных натуральных чисел; удаление всех элементов, меньших по модулю 5, добав-
ление после каждого отрицательного элемента, копии этого числа.
15 Нахождение наибольшего номера элемента списка (в исходном списке) двузначного числа; удаление всех элементов,
в которых последняя цифра больше 5, добавление после каждого элемента числа, на единицу большего.
16 Нахождение суммы всех чисел, кратных 5; удаление элементов, являющихся квадратом натурального числа, добав-
ление после каждого положительного элемента его копии.
17 Нахождение произведения всех чисел, кратных 5; удаление элементов, стоящих на позиции, номер которой (в исходном
списке) совпадает с самим элементом, добавление после каждого элемента его копии, уменьшенной в 10 раз (целой
части полученного частного).
18 Нахождение наименьшего числа, кратного десяти; удаление всех двузначных натуральных чисел, добавление после
трехзначных натуральных чисел копии.
19 Нахождение наибольшего числа, кратного десяти; удаление всех чисел, в которых разряд десятков и единиц совпадает,
добавление после каждого числа, пропорционального последней цифре частного от деления числа на последнюю
цифру.
20 Нахождение количества чисел, у которых последняя цифра – 5; удаление всех чисел, стоящих после числа, на единицу
большего (в исходном списке), добавление после положительных чисел элемента списка, равного единице.
21 Нахождение произведения однозначных чисел списка; удаление чисел, меньших предыдущего (в исходном списке),
добавление после каждого элемента остатка от деления его на 3.
22 Нахождение суммы всех четных чисел списка; удаление чисел, в которых разряд сотен равен разряду единиц, встав-
ление после каждого элемента списка суммы его и первого элемента списка.
10