«Введение в программную инженерию, 6-е издание» — Чжан Хайфань Моу Юнминь. Ответы и подробные объяснения после занятий. Глава 7. Реализация.
«Введение в программную инженерию, 6-е издание» — Чжан Хайфань Моу Юнминь. Ответы и подробные объяснения после занятий. Глава 7. Реализация.

Каталог статей

Вопрос 1

1. В приведенном ниже псевдокоде есть ошибка. Внимательно прочтите этот псевдокод, объясните грамматические особенности псевдокода, найдите и исправьте ошибки в псевдокоде. Псевдокод программы статистики частоты слов выглядит следующим образом:

INITIALIZE the Program

READ the first text record

DO WHILE there are more words in the text record

DO WHILE there are more words in the text record

EXTRACT the next text word

SEARCH the word-table for the extracted word

IF the extracted word is found

INCREMENT the word’s occurrence count

ELSE

INSERT the extracted word into the table

END IF

INCREMENT the words-processed count

END DO at the end of the text record

READ the next text record

END DO when all text records have heen read

PRINT the table and summary information

TERMINATE the program отвечать:INSERT the extracted word into the За этим стоит таблица. Есть ли какое-либо появление/счет этого слова? Присвойте значение 1

Вопрос 2

2. Изучите приведенную ниже программу псевдокода, требующую: (1) Нарисуйте блок-схему программы. (2) Является ли оно структурированным или неструктурированным? Приведите причины. (3) Если оно неструктурировано, то (а) Преобразовать ее в структурированную программу, используя только 3 управляющие структуры; (б) Напишите псевдокод этого структурированного проекта; © Представьте эту структурированную программу в виде коробчатой ​​диаграммы. (4) Найдите и исправьте ошибки в логике программы. КОММЕНТАРИЙ: ПРОГРАММА ПОИСКА ПО ПЕРВЫМ N ССЫЛКАМ К ТЕМЕ В ИНФОРМАЦИОННОМ ПОИСКЕ СИСТЕМА С T ВСЕГО ЗАПИСИ ВХОД Н ВВЕДИТЕ КЛЮЧЕВЫЕ СЛОВА ДЛЯ ТЕМЫ Я=О СОВПАДЕНИЕ=0 ДЕЛАЙТЕ ПОКА I≤T Я=Я+1 ЕСЛИСЛОВО=КЛЮЧЕВОЕ СЛОВО ТОГДА СООТВЕТСТВИЕ=СООТВЕТСТВИЕ+1 СОХРАНИТЬ В БУФЕРЕ КОНЕЦ ЕСЛИПОИСКПОЗ=Н ТОГДА ПЕРЕХОДИТЕ К ВЫВОДУ КОНЕЦ КОНЕЦ ЕСЛИ N=0 ЗАТЕМ НАпечатайте «НЕТ СОВПАДЕНИЯ» ВЫХОД:ELSE ВЫЗОВ ПОДПРОГРАММЫ ДЛЯ ПЕЧАТИ ИНФОРМАЦИИ БУФЕРА КОНЕЦ отвечать:

(4) Ошибка в программе: переменной «WORD» в операторе «IF WORD=KEYWORD» заранее не присвоено значение. Значение Т заранее не вводится в программу "N=0" должно быть "MATCH=0"

Вопрос 3

3.существовать Вопрос В конструкции 2, если входное значение N или КЛЮЧЕВОЕ СЛОВО необоснованно, возникнут проблемы. (1) Приведите примеры необоснованных значений этих переменных. (2) Каковы последствия ввода этих необоснованных значений в программу? (3) Как вы можете добавить меры защиты от ошибок в свою программу, чтобы предотвратить эти проблемы? отвечать: (1)N=1,KEYWOED=#。 (2) Невозможно распечатать какую-либо информацию. (3) Добавить в цикл

Вопрос 4

4. (1) Что такое модульное тестирование и интеграционное тестирование? Каковы особенности каждого из них? (2) Предположим, что программа состоит из 1000 строк операторов FORTRAN (около 5000 машинных инструкций после компиляции), оцените, сколько ошибок будет обнаружено при ее тестировании? Почему? (3) Тестовые случаи покрытия операторов проектирования и покрытия путей для следующих программ псевдокода: START INPUT(A,B,C) IF A>5 THEN X=10 ELSE X=1 END IF IF B>10 THEN X=20 ELSE X=2 END IF IF C>15 THEN X=30 ELSE X=3 END IF PRINT (X,Y,Z) STOP есть: (1) Тестирование модулей проводится для каждого отдельного модуля, с использованием черного ящика и тестирования соответственно. белого технологии ящика, проверяет правильность ее работы, проверяет конкретные пути в структуре управления модулем и находит максимальное количество ошибок. Его характеристики таковы: в основном используется технология тестирования «белого ящика», и тестирование нескольких модулей может выполняться одновременно. Интеграционное тестирование заключается в сборке модулей вместе в полный пакет программного обеспечения и его тестировании во время сборки. Характеристики таковы: могут возникнуть проблемы с интерфейсом. (2) От 25 до 100 ошибок в месяц. Некоторые статистические данные из США говорят нам, что это соотношение обычно находится в пределах 0,005-0,02. То есть до тестирования на 1000 инструкций приходится около 5-20 ошибок. Если допустить 10 ошибок на 1000 инструкций перед тестированием, то расчетное количество ошибок, которые будут обнаружены во время тестирования, составит: 5000×10/1000=50. (3) Тестовые примеры покрытия операторов Поскольку каждое выражение суждения имеет оператор присваивания, когда оно истинно или ложно, для того, чтобы каждое выражение выполнялось хотя бы один раз, необходимо в общей сложности два набора тестовых данных, чтобы каждое выражение суждения оценивалось как истинное или ложное один раз. Ниже приведены типичные тестовые примеры для реализации операторов: ①Сделать все значения трех выражений суждения ложными. Ввод: A=1, B=1, C=1 Ожидаемый результат: X=1, Y=2, Z=3 ② Сделать все значения трех выражений суждения истинными. Ввод:А=20,Б=40,С=60 Ожидаемый результат: X=10, Y=20, Z=30 Тестовые примеры покрытия путей Эта программа имеет в общей сложности 8 возможных путей выполнения, и для достижения покрытия путей требуется в общей сложности 8 наборов тестовых данных. Ниже приведены типичные тестовые примеры для достижения покрытия пути: ①Все значения трех выражений суждения ложны. Ввод: A=1, B=1, C=1 Ожидаемый результат: X=1, Y=2, Z=3 ②Три выражения суждения: ложные, ложные и истинные в указанном порядке. Ввод: A=1, B=1, C=60 Ожидаемый результат: X=1, Y=2, Z=30 ③Три выражения суждения: ложные, истинные и ложные в следующем порядке: Ввод: A=1, B=40, C=1 Ожидаемый результат: X=1, Y=20, Z=3 ④Три выражения суждения являются ложными, истинными и истинными в порядке Ввод: A=1, B=40, C=60 Ожидаемый результат: X=1, Y=20, Z=30 ⑤Три выражения суждения последовательно являются истинными, ложными и ложными. Ввод: A=20, B=1, C=1 Ожидаемый результат: X=10, Y=2, Z=3 ⑥Три выражения суждения являются истинными, ложными и истинными в указанном порядке. Ввод: A=20, B=1, C=60 Ожидаемый результат: X=10, Y=2, Z=30 ⑦Три выражения суждения последовательно являются истинными, истинными и ложными. Ввод: A=20, B=40, C=1 Ожидаемый результат: X=10, Y=20, Z=3 ⑧Все три выражения суждения верны. Ввод:А=20,Б=40,С=60 Ожидаемый результат: X=10, Y=20, Z=30

Вопрос 5

5. В библиотеке имеется система поиска информации с использованием ЭЛТ-терминала. В системе имеются следующие четыре основные команды поиска:

Требовать:

(1) Разработать тестовые данные для всесторонней проверки нормальной работы системы;

(2) Разработайте тестовые данные для проверки ненормальной работы системы. наличие: (1) Тестовые данные для проверки нормальной работы системы. ①Выполните последовательно следующие 3 команды: b(KEYWORD) s(L) d(N) Среди них KEYWORD — правильное ключевое слово; L — один из примерно 20 номеров строк, отображаемых на экране после выполнения команды b (по крайней мере, L должен быть номером первой, последней и центральной строки соответственно); N — один из перечисленных индексных номеров; после выполнения команды s (должно быть не менее N — это первый, последний и средний индекс соответственно). Повторите приведенную выше последовательность команд для нескольких разных КЛЮЧЕВЫХ СЛОВ. ②Выполните последовательно следующие 2 команды: f(NAME) d(N) Среди них NAME — известное имя автора; N — один из индексных номеров, перечисленных после выполнения команды f (не менее N-). это первый, последний и средний индекс соответственно). Повторите приведенную выше последовательность команд для нескольких разных имен. (2) Данные испытаний для ненормальной работы испытательной системы. ①Используйте слишком длинные ключевые слова в качестве параметров команды b: например, b (надежность software and hardware combined) Ожидаемый результат: система усекает слишком длинные ключевые слова. Например, ключевое слово «возможность» в приведенной выше команде усекается до надежности. software ②Используйте неправильные ключевые слова в качестве параметров команды b: например, b (AARDV ARK) Ожидаемый результат: показывает наиболее близкий результат соответствия, например, после выполнения указанной выше команды может отображаться 1.AARON,JULES(book) ③ Используйте число на 1 больше, чем максимальный номер строки, указанный после выполнения команды b, в качестве параметра команды s. Ожидаемый результат: «Аргументы команды отсутствуют в списке номеров строк» ④Используйте цифры и знаки препинания в качестве параметров команды b и команды f. Ожидаемый результат: «Неправильный тип параметра». ⑤Используйте буквенные символы в качестве параметров команд s и d. Ожидаемый результат: «Неправильный тип параметра». ⑥Используйте 0 и отрицательные числа в качестве параметров команды s и команды d. Ожидаемый результат: «Неверное значение параметра». ⑦Неправильный порядок команд: например, команда s выполняется до выполнения команды b, или команда d выполняется до выполнения команды s. Ожидаемый результат: «Неправильный порядок команд». ⑧ Синтаксическая ошибка команды: например, имя команды b, s, d или f опущено или параметры команды не заключены в круглые скобки; Ожидаемый результат: «Синтаксическая ошибка команды». ⑨Параметр команды пуст: например, b(), s(), d или f(). Ожидаемый результат: система предоставляет параметры по умолчанию или выдает сообщение об ошибке. ⑩Используйте имя автора с ошибкой в ​​качестве параметра f. Ожидаемый результат: «Работ этого автора не найдено».

Вопрос 6

6. Авиакомпания А заказывает программу для планирования маршрутов полетов у компании-разработчика программного обеспечения Б. Предположим, вы инженер-программист в компании-разработчике программного обеспечения C, а компания A наняла вашу собственную компанию для проведения приемочного тестирования указанной выше программы. Задача состоит в том, чтобы спроектировать входные данные для приемочного испытания на основе следующих фактов и объяснить причины выбора этих данных. Навигатор вводит в программу пункт отправления и назначения, а также ориентировочную высоту полета в зависимости от погоды и типа самолета. Программа считывает такие данные, как направление и сила ветра на пути, и формирует 3 набора планов полета (высота, скорость, направление и 5 контрольных точек положения на пути). План полета должен быть составлен таким образом, чтобы минимизировать расход топлива и время полета. отвечать: Используйте обычные входные данные в качестве тестовых данных ①Введите в программу традиционную отправную точку, пункт назначения, модель самолета, 5 контрольных точек положения, высоту и скорость. ②Введите 3–5 наборов отправных точек и пунктов назначения и повторите шаг 1. ③Введите фиксированную отправную точку, пункт назначения, модель самолета, 5 контрольных точек положения и высоту, введите 3–5 различных скоростей соответственно и повторите шаг 1. ④Введите фиксированную отправную точку, пункт назначения, модель самолета, 5 контрольных точек положения и скорость, введите 3–5 различных высот соответственно и повторите шаг 1. ⑤ Введите фиксированную отправную точку, пункт назначения, модель самолета, скорость и высоту, введите 3–5 различных наборов контрольных точек местоположения соответственно и повторите шаг 1. ⑥Введите фиксированную отправную точку, пункт назначения, 5 контрольных точек положения и высоту, введите 3–5 различных моделей самолетов соответственно и повторите шаг 1. ⑦ Введите фиксированный пункт назначения, 5 контрольных точек положения и высоту, введите 3–5 различных моделей самолетов соответственно и повторите шаг 1. ⑧Введите фиксированную отправную точку, 5 контрольных точек положения и высоту, введите 3–5 различных пунктов назначения соответственно и повторите шаг 1. (2) Используйте специальные значения данных в качестве тестовых данных. ①Введите тесты комбинации очень высоких и очень низких данных соответственно. ②Тест с отрицательными числами ③Введите число 0 для проверки. ④Введите тест начальной точки и пункта назначения, которые находятся очень далеко и очень близко друг к другу соответственно. да и размер, размер меньше размера массива и дает искомое значение, которое находится в некотором массиве; Ожидаемый результат: возврат -1; ⑤Сначала укажите массив и размер массива, размер больше размера массива, и укажите искомое значение, которого нет в массиве. середина; Ожидаемый результат: возврат -1; ⑥Сначала укажите массив и размер массива, размер больше размера массива, и укажите искомое значение, которое находится в некотором массиве. середина; Ожидаемый результат: возврат -1;

Вопрос 7

7. Строго говоря, существует два разных теста покрытия путей, а именно покрытие пути программы и покрытие пути графа программы. Эти два типа тестов можно назвать естественным выполнением и принудительным выполнением программы соответственно. Так называемое естественное выполнение означает, что тестер (человек или компьютер) считывает условное выражение в программе, вычисляет значение условного выражения (истина или ложь) на основе текущего значения переменной программы и соответствующим образом разветвляется. Принудительное выполнение — это искусственная концепция, созданная при использовании программных диаграмм в качестве абстрактных моделей программ для упрощения задач тестирования. Смысл принудительного выполнения состоит в том, что при обнаружении условного выражения тестер заставляет программу выполниться в двух ситуациях (значение условного выражения — true или false). Очевидно, что принудительное выполнение будет проходить по всем путям графа программы. Однако из-за взаимозависимости между различными условными выражениями некоторые из этих путей могут никогда не пройти во время естественного выполнения. Чтобы концепция принудительного выполнения была полезной на практике, преимущества от упрощения инструмента тестирования должны перевешивать недостатки использования дополнительных недостижимых тестовых примеров. В большинстве случаев количество принудительно выполняемых тестов ненамного превышает количество тестов, которые выполнялись бы естественным путем. Более того, определение принудительного выполнения фактически включает метод, который сокращает количество запусков, необходимых при тестировании программ, содержащих циклы. время. Большая часть времени выполнения программы обычно тратится на многократное выполнение циклов DO в программе, особенно вложенных циклов. Следовательно, необходимо изобрести технику, чтобы каждый цикл DO выполнялся только один раз. Это не снижает мощности теста, поскольку опыт показывает, что ошибки чаще всего возникают при первом или последнем выполнении цикла. Методика, предложенная профессором Лэммелем для автоматического тестирования каждого пути, заключается в следующем. При написании программы каждый цикл DO должен быть записан в специальной форме, содержащей тестовую переменную T и переменную режима M, поэтому DO I= 1 TO 38 Напряжение становится DO I=1 TO M×38+(1-M)×T Видно, что при М=0 – тестовый режим, а при М=1 – нормальный режим работы. В тестовом режиме, если T=0, цикл будет выполнен не один раз, а если T=1, цикл будет выполнен только один раз. Аналогично операторы IF должны быть переписаны с использованием переменных шаблона и тестовых переменных, например. IF X+Y>0 THEN Z=X ELSE Z=Y Напряжение становится IF M×(X+Y)+T>0 THEN Z=X ELSE Z=Y Установите M=1 и T=0 во время нормальной работы, установите M=0 во время тестирования, установите T=+1 для тестирования части THEN и установите T=+1 для проверки части ELSE. T=-1。Требовать: (1) Выберите цикл и ЕСЛИ Программа заявлений с использованием Laemmel Технически модифицируйте эту программу, фактически протестируйте программу на компьютере и интерпретируйте полученные результаты. (2) Разработайте программу по Леммелю. Технология автоматически модифицирует тестируемую программу. Используйте этот инструмент тестирования для изменения программы, модифицированной вручную в предыдущем вопросе. Согласуются ли результаты, полученные с помощью двух модификаций? (3) Как поставить Леммель Продвижение технологий будет включать ПОКА DO и ПОВТОРИТЬ UNTIL Программа заявления? (4) Попробуйте проанализировать Леммеля преимущества и недостатки технологии и дать предложения по улучшению. отвечать:(1)if (x+y)>2 A=x Else A=y Изменить на: если M×(x+y)+T>2 A=x Else A=y Результаты согласуются. (2) Оба результата согласуются. (3)WHILE DO японский ЕСЛИ ELSE Техники модификации аналогичны. (4) Преимущество состоит в том, что это может сделать результаты более точными. Недостаток в том, что это касается не всех программ, а иногда работа некоторых программ усложняется.

Вопрос 8

8. После одного месяца интеграционного тестирования программы, содержащей 10 000 машинных инструкций, всего было исправлено 15 ошибок, а MTTF = 10 часов на данный момент. , за два месяца тестирования всего исправлено 25 ошибок (за второй месяц исправлено 10 ошибок), MTTF=15h; 。Требовать: (1) Определите MTTF на основе приведенных выше данных. Нарисуйте MTTF в зависимости от времени тестирования. Кривая зависимости от времени испытания τ. Какие предположения были сделаны при построении этой кривой? (2) Для достижения MTTF=100h , сколько времени должно занять интеграционное тестирование? Сколько ошибок было исправлено к моменту завершения интеграционного теста и сколько ошибок еще скрывается в программе? отвечать:(1)MTTF Кривая зависимости от времени испытания τ выглядит следующим образом:

Предполагается, что во время отладки не возникает новых ошибок. (2) По формуле оценки средней наработки на отказ: 1/К(Эт/10000-100/10000)=10 1/К (Эт/10000-300/10000)=15 Рассчитано: К = 333, Et = 45. Когда MTTF=100h, происходит 1/333(45/10000-Эк/10000)=100 Рассчитано: Ec=42 С учетом хода тестирования и исправления ошибок за первые два месяца потребуется 3 месяца интеграционного тестирования. По окончании теста всего было исправлено 42 ошибки, а 3 ошибки все еще скрывались в программе.

Вопрос 9

Например, при интеграционном тестировании программы длиной 100 000 инструкций записываются следующие данные: (a ) 1 июля: Начато интеграционное тестирование, ошибок не обнаружено. (b ) 2 августа: всего исправлено 100 ошибок, на данный момент MTTF=0,4 часа. (c ) 1 сентября: Всего исправлено 300 ошибок, на данный момент MTTF=2 часа. Ответьте на следующие вопросы на основе данных, перечисленных выше. (1) Оцените общее количество ошибок в программе. (2) Чтобы сделать MTTF Достичь 10 часов , как долго эту программу нужно тестировать и отлаживать? (3) Нарисуйте MTTF и кривая функциональной зависимости между временем испытания τ. Ответ: (1) По формуле оценки средней наработки на отказ: 1/K(Et/100000-100/100000)=0.4 1/K (Et/100000-300/100000)=2 Рассчитано: К =1000, Et=350, то есть общее количество ошибок в программе равно 350. (2) Когда MTTF =10h иногда есть 1/K (350/100000- Ec/100000)=10 Рассчитано: Ec=340 На основании хода тестирования и исправления ошибок за первые два месяца будут проведены дополнительные 2 месяца интеграционного тестирования. (3)MTTF Кривая функциональной зависимости между ним и временем испытания τ выглядит следующим образом:

Вопрос 10

10. При тестировании программы длиной 24 000 инструкций два тестировщика А и Б самостоятельно тестируют программу в первый месяц. После месяца тестирования A обнаружил и исправил 20 ошибок, сделав MTTF Достичь 10 часов . При этом Б нашел 24 ошибки, 6 из которых нашел и А. С этого момента А будет продолжать тестировать программу в одиночку. просить: (1) Сколько потенциальных ошибок было в программе при первом запуске тестирования? (2) Чтобы сделать MTTF Достичь 60 часов , сколько еще ошибок надо исправить? Сколько времени занимает тестирование? (3) Нарисуйте MTTF Кривая функциональной зависимости со временем интегрирования τ. Ответ: (1) По формуле: B0=B2B1/bc. , вы можете получить: B0=20×24/6=80, то есть всего в программе на начало теста 80 ошибок. (2) По формуле оценки средней наработки на отказ: 1/K(80/24000-20/24000)=10 1/K(80/24000- Ec/24000)=60 Рассчитано: К=40,Ec=70 Это означает, что осталось еще 50 ошибок, которые необходимо исправить. Согласно прогрессу коррекции А, предполагается, что это займет еще 3 месяца. (3)MTTF Кривая функциональной связи со временем интегрирования τ выглядит следующим образом:

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose