Файл: ИСР. Практические работы.pdf

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

ИС разработки ПО, практические работы

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


background image

ИС разработки ПО, практические работы

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


background image

ИС разработки ПО, практические работы

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


background image

ИС разработки ПО, практические работы

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


background image

ИС разработки ПО, практические работы

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