Материал: 695_Poletajkin_A.N._Uchebno-metodicheskoe_posobie_Realizatsija_zhiznennogo_ch.1_

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

3.3. изменение выбранной записи... — команда, предусматривающая определение указателя записи, запрашиваемой пользователем для обработки. Для этого на очищенную консоль выводится содержимое списка, для чего вызывается метод Print(), и в цикле организуется меню выбора. В качестве указателя записи выступает курсор, который позиционируется перед указанной записью списка с помощью стандартного метода Console.SetCursorPosition(). Меню работает следующим образом:

1. На каждой итерации курсор выводится в текущей позиции pos и осуществляется чтение юникода нажатой клавиши и его преобразование в

ASCII-код:

byte n = Convert.ToByte(Console.ReadKey(true).KeyChar);

2.Перемещение по записям пользователь выполняет нажатием клавиши Tab (ASCII-код 9), при этом изменяется значение указателя pos.

3.Подтверждение операции обрабатывается по нажатию клавиши Enter (ASCII-код 13), при этом курсор переводится на новую строку, запрашивается ввод новых значений для модифицируемой записи, для чего вызывается метод InputData(), и вызывается метод EditPos() объекта list. После этого вызывается метод Print() для просмотра сделанных изменений.

4.Цикл работает до нажатия клавиши Enter, либо Esc (ASCII-код 27)

3.4. удаление выбранной записи... — выполняется аналогично предыдущей за исключением двух особенностей:

1.В заголовке списка выводится сообщение об удалении.

2.При обработке нажатия клавиши Enter (ASCII-код 13) вызывается метод RemuveFrom() c указателем pos в качестве аргумента.

3.5. удаление первой записи производится посредством метода

RemuveFromFront().

3.6. удаление последней записи производится посредством метода

RemuveFromBack().

3.7. возврат в главное меню обрабатывается с проверкой текущего списка на пустоту. Если список пуст, то запрашивается подтверждение на выход, при получении которого пустой список уничтожается. Если же клавиша <y/н> не нажата, то пользователь возвращается в подменю из трех пунктов для дальнейшей модификации списка…

4. Специальные операции с записями…

Данная команда также связана с модификацией списка и имеет индивидуальный для каждого студента набор подменю. Организация выбора вариантов производится также, как при обработке команды 3 (см. выше), только при наличии пустого списка действие отменяется.

71

5. Статистическая обработка данных из списка

Данная процедура также носит индивидуальный характер. Для решения статистической задачи необходим доступ к данным списка, поэтому данную процедуру следует организовывать в виде метода класса list, а в основной программе применить этот метод. Ниже приведен листинг 7 метода класса list, который выводит на консоль ФИО сотрудников пенсионного возраста (мужчины 60 лет и более, женщины 55 лет и более).

Листинг 7. Пример статистической обработки данных

virtual public int PrintPension()

{

ListNode current = firstNode; Console.WriteLine("\nСписок сотрудников пенсионного

возраста:"); int n = 0; do

{

if ((current.Data.Pol.ToUpper() == "М") && (current.Data.Age >= 60))

{

Console.WriteLine("{0} {1} {2}", current.Data.Surname, current.Data.Firstname, current.Data.Lastname);

n++;

}

if ((current.Data.Pol.ToUpper() == "Ж") && (current.Data.Age >= 55))

{

Console.WriteLine("{0} {1} {2}", current.Data.Surname, current.Data.Firstname, current.Data.Lastname);

n++;

}

current = current.Next;

} while (current != lastNode); return n;

}

6. Сохранение списка

Для сохранения списка создается такая же коллекция ms файловых ссылок, как и в случае загрузки списка из файла (см. команда 2). Смысл, однако, состоит в том, чтобы обнаружить в данной директории файл с

72

максимальным индексом с тем, чтобы создать новый файл с индексом на 1 больше. Выделение индекса и поиск максимума реализован в цикле foreach.

После этого для списка вызывается метод Printf() и в случае успешного вывода пишет на экран сообщение о проделанной операции.

7. Выход в Windows

Реализует выход из приложения, обеспечивая выход из внешнего цикла интерфейса. Предварительно запрашивает подтверждение, и при получении такового выходит из цикла. Если же подтверждение не получено (нажатая в ответ клавиша не <y/н>), то управление передается в начало внешнего цикла организации интерфейса и пользователю снова предлагается основное меню.

Требования к содержанию отчета

Вподразделе 1 приводятся краткие сведения о принципах и технологии программирования односвязного списка (1,5 – 2 стр.) ориентированные на заданный вид списка. Подраздел должен содержать перечень возможных операций со списком заданного вида, и способы программной реализации этих операций с использованием объектно-ориентированного программирования.

Вподразделе 2 описать процесс сборки приложения. На языке UML разработать диаграмму классов приложения. Привести результаты компиляции приложения. Представить обнаруженные синтаксические ошибки (при наличии таковых) по принципу, описанному в требованиях к содержанию отчета о выполнении лабораторной работы №5. Найти на жестком диске исполняемый файл и указать в подразделе его местонахождение. Изучить другие файлы в этой директории и описать их назначение.

Вподразделе 3 описать процесс реализации индивидуальных функций и заданных методов сортировки. Привести модифицированную диаграмму классов приложения. Привести результаты компиляции приложения. Представить обнаруженные синтаксические ошибки (при наличии таковых) по принципу, описанному в требованиях к содержанию отчета овыполнении лабораторной работы №5. Листинг итоговой программы (шрифт Courier New, 10 пт) приложить к отчету в конце.

Вподразделе 4 описать процесс анализа сложности разработанных методов сортировки, представить и сравнить результаты оценивания.

Контрольные вопросы и упражнения

1.Что такое сборка программы?

2.Что такое компиляция и построение программы?

3.Как в среде программирования осуществляется обнаружение синтаксических ошибок?

4.Какими способами можно обнаружить логически ошибки в коде?

5.Перечислите показатели, по которым выполняется анализ кода?

73

6.В чем заключается идентификация ошибок в программе?

7.Что такое перестроение программы?

8.Как оценивается сложность кода?

9.Разработать диаграмму классов для созданного приложения, предусматривающего сортировку данных разными методами. Для оптимизации структуры классов использовать отношения обобщения.

74

Лабораторная работа №7

Тема: Управление качеством программного продукта.

Цель: Освоение методики обеспечения качества разработанного программного кода, тестирования программы в ручном режиме, анализ производительности.

Задание

1.Выполнить полное системное ручное тестирование программы, разработанной при выполнении лабораторной работы №6, методом черного ящика. При возникновении некорректных ситуаций идентифицировать логические ошибки, разработать тесты для их обнаружения, устранить ошибки.

2.Выполнить анализ производительности программы на разных вычислительных платформах (не менее трех). Оценить время выполнения пользователем определенной последовательности действий на каждой из выбранных вычислительных платформ.

3.Выполнить нагрузочное тестирование программы и оценить эффективность разработанных при выполнении лабораторной работы №6 методов сортировки SortData1(), SortData2(), SortData3(). В качестве критерия эффективности использовать время выполнения метода. Предварительно подготовить 5 файлов исходных данных на 10, 50, 100, 500 и 1000 записей. Построить графики зависимости времени вычислений от объема исходных данных.

4.Произвести рефакторинг методов сортировки списка SortData1(), SortData2(), SortData3(). Разработать и оптимизировать код универсального метода SortData(Method), обеспечивающего сортировку заданным методом.

5.Провести регрессионное тестирование метода SortData(Method) и убедиться в его улучшении. Выполнить исследование эффективности метода SortData(Method) аналогично п.3.

6.Выполнить стрессовое тестирование программного продукта. В случае обнаружения некорректных ситуаций описать их, выявить причины и принять меры к их устранению.

Теоретические положения

7.1. Тестирование, как способ контроля качества ПО.

Тестирование – это проверка соответствия между реальным и ожидаемым поведением программы в специально заданных условиях. Исходной информацией для тестирования является сведения о том, как программная система должна себя вести, то есть требования к ней или к ее отдельной части. Наиболее распространенным способом тестирования

75