При разработке программного обеспечения ошибки неизбежны. Иногда они могут быть мелкими ошибками, которые не заметит никто, а иногда — серьезными уязвимостями, которые могут нанести серьезный ущерб. Как бы то ни было, важно знать, как квитировать ошибки в компьютерной сфере.
На первый взгляд квитирование ошибки может показаться довольно простой задачей. Однако, если взглянуть на нее более пристально, быстро станет понятно, что это сложное и ответственное действие, которое требует многого от программиста. Исправление ошибки недостаточно, нужно понимать ее причины и суть проблемы.
В этой статье мы рассмотрим, как правильно квитировать ошибку, чтобы избежать ее повторения в будущем. Мы обсудим, как определить суть проблемы, описать ее и фиксировать, а также какие способы можно использовать для ее решения.
Содержание
- Проблема и ее суть
- Первые шаги для решения
- Правильный подход к решению проблемы
- Значение процесса квитирования ошибки
- Вопрос-ответ
- Какие бывают ошибки в работе с компьютером?
- Что такое квитирование ошибки и зачем это нужно?
- Как правильно квитировать ошибку?
Проблема и ее суть
Проблема – это ситуация, которая не соответствует ожиданиям или требованиям. В контексте технического обслуживания и поддержки пользователей, проблема обычно связана с неисправностью программного или аппаратного обеспечения.
Суть проблемы может быть связана с неумением пользователя, некорректным конфигурированием или дефектом программного обеспечения, а также с физическим повреждением аппаратных компонентов.
Важно понимать, что квитирование проблемы – это только первый шаг к ее решению. Для того, чтобы полностью устранить проблему, необходимо проанализировать ее суть и найти ее корень. Очень часто, проблемы возникают не единожды и имеют множество причин. Поэтому, при работе с проблемами, необходимо иметь системный подход и умение искать и корректировать различные проблемные ситуации.
Чтобы квитирование проблемы было полезным и продуктивным, необходимо не только понимание сути проблемы, но и навыки эффективного общения и умения работать в команде.
Первые шаги для решения
Когда вы столкнулись с ошибкой, первое, что вам необходимо сделать, это определить ее причину. Причины ошибок могут быть разными — от неточности ввода данных до серьезных технических проблем.
Чтобы определить причину ошибки, прочитайте сообщение об ошибке. Оно может содержать полезную информацию о том, какая именно ошибка произошла и что ее вызвало. Если сообщение об ошибке не содержит достаточно информации, то обратитесь за советом к коллегам или на форумы, посвященные вашей проблеме.
После определения причины ошибки вы можете начать ее решение. Одним из первых шагов является проверка введенных данных на корректность. Если ошибка связана с неправильным вводом данных, то исправьте их и повторите попытку. Если это не помогает, то проверьте, не находится ли в системе некая сбойная конфигурация или установка софта, который мог вызвать эту ошибку. Если проблема имеет серьезный технический нюанс, то обратитесь к системному администратору или к разработчикам программного приложения, которое вызвало ошибку.
Для решения проблемы, необходимо использовать логическое мышление и внимательность в анализе и понимании сути проблемы. Необходимо полностью изучить информацию, которая доступна, используя все доступные инструменты, чтобы найти варианты решения. Помните, что чем более внимательным и логичным вы будете, тем больше вероятность, что вы справитесь с проблемой быстрее и более эффективно.
Правильный подход к решению проблемы
При возникновении проблемы необходимо спокойно и аналитически ее рассмотреть. Определить, в чем именно состоит проблема и какие ее возможные причины. Далее следует собрать все данные и факты, относящиеся к данной ситуации, и проанализировать их.
Для эффективного решения проблемы важно не игнорировать ее, а скорее наоборот, выделить время и ресурсы для ее решения. Необходимо рассмотреть все альтернативные варианты решения проблемы и выбрать тот, который наиболее ответственно и эффективно подходит для данной ситуации.
Важно понимать, что нет такой проблемы, которая не имеет решения. То, что сегодня кажется неразрешимым, может быть легко решено завтра, если правильно подходить к этому. Следует помнить о том, что каждая проблема является уникальной и требует индивидуального подхода для ее решения.
- Используйте системный подход к проблеме, рассматривая ее в контексте всего процесса или ситуации.
- Проводите анализ причин проблемы.
- Ищите альтернативные решения и выбирайте наиболее подходящее.
- Действуйте оперативно и ответственно, не откладывая решения проблемы на потом.
Если проблема остается нерешенной, необходимо провести дополнительный анализ и поиск информации. Иногда для решения проблемы нужна помощь других специалистов или экспертов. Главное, не паниковать и не зацикливаться на проблеме, а действовать осознанно и ответственно для ее решения.
Значение процесса квитирования ошибки
Квитирование ошибки – это подтверждение того, что полученное сообщение о проблеме было замечено, оценено и принято к исправлению. Этот процесс является неотъемлемой частью различных систем и приложений, позволяя повысить их надежность и стабильность.
Зачем вообще нужно квитировать ошибки?
- Достоверность информации. Квитирование помогает убедиться в том, что проблема не была проигнорирована, а стала объектом внимания.
- Контроль исправлений. Если ошибки не квитировать, то они могут оставаться в системе незамеченными и оставаться без внимания.
- Удобство для пользователей. В некоторых случаях, квитирование ошибок предусматривает предоставление дополнительной информации о проблеме, что может помочь в ее решении.
Какие проблемы могут возникнуть, если не квитировать ошибки?
- Проблемы могут остаться нерешенными.
- Пользователи могут потерять доверие к системе.
- Могут возникнуть дополнительные ошибки и сбои.
Как правильно квитировать ошибки?
При квитировании ошибки важно указать ее описание и причину. Также необходимо убедиться, что исправление проблемы было осуществлено полностью и без ошибок.
Описание ошибки | Причина ошибки | Результат исправления |
---|---|---|
Приложение перестало работать после обновления. | Обновление содержало ошибку, которая привела к неработоспособности приложения. | Ошибка была исправлена, приложение работает корректно. |
В идеале, квитирование ошибок должно происходить автоматически, но не всегда это возможно. Поэтому важно помнить о необходимости квитирования ошибок и уделить этому внимание.
Вопрос-ответ
Какие бывают ошибки в работе с компьютером?
Ошибки при работе с компьютером могут быть разнообразными и зависят от конкретного устройства или программы. Например, это может быть ошибка при запуске операционной системы, ошибка при установке программы, ошибка связи с интернетом и т.д.
Что такое квитирование ошибки и зачем это нужно?
Квитирование ошибки — это процесс подтверждения, что проблема была распознана и приняты меры для ее устранения. Это необходимо для того, чтобы предотвратить повторение ошибки в будущем и увеличить надежность работы системы.
Как правильно квитировать ошибку?
Для того, чтобы правильно квитировать ошибку, необходимо понимать ее суть и причину возникновения. Также важно провести дополнительные проверки, чтобы убедиться, что проблема была полностью устранена и не будет повторяться в будущем. После этого необходимо отметить ошибку в соответствующей системе управления ошибками или журнале.
Иногда при попытке установить DirectX пользователь сталкивается с ошибкой. При помощи данной статьи мы поможем выйти из сложившейся ситуации и устранить проблему. Итак, ваш компьютер выдает сообщение: «Произошла внутренняя системная ошибка. Чтобы определить причину ошибки, просмотрите файлы DXError.log и Directx.log в папке Windows». Давайте это исправим.
Содержание
- Что это за ошибка?
- Обновление DirectX
- Исправление системных файлов
- Режим совместимости
- Параметры проверки совместимости
- Обновление драйверов
- Устанавливаем/обновляем Visual C ++
- Восстановление ОС
- Проблемы с антивирусом
- Переустановка Windows 7
- Видеоинструкция
- Подводим итоги
Что это за ошибка?
Чаще всего данная проблема появляется на тех компьютерах, на которые пользователь пытается установить или обновить DirectX. Также сбой возникает и при запуске игры/программы. Причиной проблемы может стать невозможность считывания данных о предыдущих версиях мультимедийной библиотеки от Microsoft.
Проще всего понять, каким образом нужно поступить дальше можно, если просмотреть соответствующие логи. Если взглянуть на прикрепленный ниже скриншот, то можно понять, что диагностические данные находятся в DXError.log и DirectX.log.
Дальше давайте переходить непосредственно к списку вариантов, каждый из которых в теории позволит решить проблему. Рекомендуем начать со способов, которые опубликованы выше.
Если по каким-то причинам первый вариант решения проблемы не даст должного результата, переходите ко второму, к третьему, четвертому и так далее.
DirectX можно обновить. Для того чтобы в ходе установки не возникло проблем, дистрибутив необходимо в обязательном порядке скачивать с официального сайта Microsoft, а также запускать от имени администратора.
- Сначала переходим на официальный сайт мультимедийной библиотеки DirectX. Загружаем установочный файл и запускаем его, предварительно сделав правый клик мышью и выбрав пункт запуска от имени администратора.
- Появится окно установщика, а пользователю останется лишь принять лицензионное соглашение и перейти к следующему этапу.
- Также важный шаг – отключение автоматической установки рекомендуемого ПО. Уберите галочку напротив инсталляции панели Bing и только после этого двигайтесь дальше.
- Начнется установка DirectX. В ее ходе все нужные для правильной работы библиотеки файлы, загрузятся с официального сайта Microsoft.
Уже через несколько секунд недостающая библиотека будет установлена. В некоторых случаях необходимо обязательно перезагрузить компьютер.
Исправление системных файлов
Иногда внутренняя системная ошибка при установке DirectX может быть вызвана проблемами в системных файлах Windows 7. Соответствующие записи об этом можно увидеть в DXError.log и DirectX.log. Исправить такую ситуацию тоже несложно. Мы просто запустим автоматическое восстановление системы и дождемся завершения процесса:
- Первое, что нужно сделать, это запустить командную строку от имени администратора. Жмем кнопку меню «Пуск», прописываем аббревиатуру «CMD» и правой кнопкой мыши жмем по нужному результату. Дальше в выпадающем меню выбираем пункт, обозначенный цифрой «3».
- Запустится командная строка и пользователю останется ввести оператор [kod]sfc /scannow[/kod]. Когда это будет сделано, жмем «Enter». Все системные файлы Windows 7 начнут проверяться. Это займет некоторое время.
- Если все файлы находятся в актуальном состоянии и не имеют повреждений, вы увидите соответствующее уведомление. Если же ошибки будут найдены, операционная система исправит их в автоматическом режиме.
Опять же, перезагружаем компьютер и проверяем, исчезла ли проблема. Если ошибка продолжает появляться, переходим к разбору следующего способа.
Режим совместимости
Что же делать, когда ошибка продолжает появляться? Если мы обратимся к одному из файлов DXError.log или DirectX.log, то поймем, что никаких полезных записей там нет. Давайте попробуем запустить приложение или игру в режиме совместимости.
- Переходим в каталог с приложением, которое выдает ошибку при запуске. Делаем правый клик на исполняемом файле и из контекстного меню выбираем пункт «Свойства».
- В открывшемся окне переходим к вкладке «Совместимость». Устанавливаем флажок напротив пункта запуска программы в режиме совместимости и выбираем версию операционной системы, которую используем. В данном случае это Windows 7 32/x64 Bit. Сохраняем внесенные изменения, нажав на «ОК».
Также в некоторых случаях помогает установка флажка напротив пункта «Выполнять эту программу от имени администратора».
Параметры проверки совместимости
Также у Windows 7 есть встроенная утилита, которая может проверить и в случае наличия устранить проблемы совместимости. Давайте разберемся, как работать с данным инструментом:
- Переходим в каталог с приложением или игрой, которая ранее отказывались запускаться. Производим правый клик на исполняемом файле и из появившегося списка выбираем обозначенный на скриншоте пункт.
- Появится окно, в котором нужно указать нашу проблему. В данном случае это отмеченный цифрой «1» вариант. Сделав выбор, переходим дальше.
- Тут указываем операционную систему, с которой наше приложение ранее работало корректно. Снова переходим к следующему шагу.
Обратите внимание: мы указываем свою операционную систему, а если в вашем случае проблема была вызвана переходом с другой ОС, обозначьте ее.
- На следующем этапе жмем кнопку запуска программы.
- Если приложение запустится корректно, значит, проблема решена, и ошибка устранена. Так и произошло в нашем случае.
- Закрепляем внесенные изменения, кликнув по обозначенному пункту.
Обновление драйверов
В некоторых случаях сбой установки DirectX, отображаемой в файлах DXError.log и DirectX.log в папке Windows 7, может быть вызван устаревшим или неработающим видеодрайвером. Соответственно, его нужно заменить. Рассмотрим, как это делается на примере графических адаптеров от NVIDIA:
- Сначала переходим на официальный сайт производителя видеокарты после чего, воспользовавшись поиском, находим нужную модель.
- Проверяем информацию, которую нам показывает система, после чего приступаем к загрузке файла видеодрайвера.
- Через несколько секунд исполняемый файл скачается на ваш компьютер, и вы сможете запустить обновление драйвера. Так это выглядит в случае с NVIDIA.
Устанавливаем/обновляем Visual C ++
Если ничего из перечисленного выше не помогло, можете попытаться обновить исполняемую библиотеку Microsoft Visual C ++. Как ни странно, в некоторых случаях это помогает.
- Переходим на официальный сайт Microsoft и скачиваем оттуда нужный нам файл. Дальше запускаем его и принимаем лицензионное соглашение, установив флажок в соответствующую позицию.
- Появится маленькое окошко, в котором мы должны будем предоставить доступ к полномочиям администратора. Соглашаемся и нажимаем «Да».
- После этого библиотека насчет устанавливаться. Тут нужно просто немного подождать.
Через несколько секунд все нужные файлы будут скопированы по своим местам и мы, перезагрузив компьютер, проверим, исчезла ли ошибка.
Восстановление ОС
Еще один действенный вариант, позволяющий решить проблему, это полное восстановление операционной системы Windows 7 32/x64 Bit. Рассмотрим, как это правильно делается:
- Сначала открываем меню «Пуск» и при помощи поиска находим нужный инструмент.
- Дальше оставляем флажок в положении по умолчанию и просто переходим к следующему шагу.
- Появится окно, в котором нужно будет выбрать диск для восстановления. Так это в нашем случае он один, выбирать тут ничего. Просто переходим дальше.
- Дальше соглашаемся с появившимся приглашением, кликнув по кнопке «Да».
- Через несколько секунд компьютер перезагрузится, и операционная система Windows 7 запустится вновь. Все прошло успешно, и это подтверждает появившееся окошко.
Что ж, попробуйте, исчезли ошибка. Если проблема осталась, переходите к следующему совету, который также может помочь.
Проблемы с антивирусом
Часто случается так, что игра, особенно нелицензионная, сама становится причиной ошибки. Точнее, антивирус, который установлен на компьютер с Windows 7, находит, по его мнению, подозрительный код и блокирует процесс. Чтобы решить такую проблему, достаточно на время отключить защитник и проверить, ушла ли проблема.
Переустановка Windows 7
Существует еще один радикальный метод, который позволит исправить ситуацию, если, конечно, дело не в самой игре. Это переустановка операционной системы. Данный процесс может показаться сложным и отпугнут новичка, но на самом деле все просто. Переходите по ссылке и читайте подробную пошаговую инструкцию о том, как установить Windows 7 с флешки.
Видеоинструкция
Наша инструкция была бы неполной без обучающего видео по теме.
Подводим итоги
Теперь у вас есть все инструменты для того, чтобы победить назойливую ошибку. Приступайте к делу и, переходя от способа к способу, устраняйте проблему, которая ранее не давала запускаться нужной программе или игре. В случае возникновения вопросов обязательно напишите об этом в комментариях, перейдя немного ниже. Если это будет нужно, мы обязательно откликнемся и поможем советом, который станет полезным в той или иной ситуации.
Речь – это канал развития интеллекта,
чем раньше будет усвоен язык,
тем легче и полнее будут усваиваться знания.
Николай Иванович Жинкин,
советский лингвист и психолог
Речь мыслится нами как абстрактная категория, недоступная для непосредственного восприятия. А между тем это – важнейший показатель культуры человека, его интеллекта и мышления, способ познания сложных связей природы, вещей, общества и передачи этой информации путём коммуникации.
Очевидно, что и обучаясь, и уже пользуясь чем-либо, мы в силу неумения или незнания совершаем ошибки. И речь, как и другие виды деятельности человека (в которых язык – важная составляющая часть), в данном отношении не является исключением. Ошибки делают все люди, как в письменной, так и в устной речи. Более того, понятие культуры речи, как представление о «речевом идеале», неразрывно связано с понятием речевой ошибки. По сути это – части одного процесса, а, значит, стремясь к совершенству, мы должны уметь распознавать речевые ошибки и искоренять их.
Что такое ошибки в языке? Зачем говорить грамотно?
Сто лет назад человек считался грамотным, если он умел писать и читать на родном языке. Сейчас грамотным называют того, кто не только читает и говорит, но и пишет в соответствии с правилами языка, которые нам дают филологи и система образования. В устаревшем смысле мы все грамотные. Но далеко не все из нас всегда правильно ставят знаки препинания или пишут трудные слова.
Виды речевых ошибок
Сначала разберёмся с тем, что такое речевые ошибки. Речевые ошибки – это любые случаи отклонения от действующих языковых норм. Без их знания человек может нормально жить, работать и настраивать коммуникацию с другими. Но вот эффективность совершаемых действий в определённых случаях может страдать. В связи с этим возникает риск быть недопонятым или понятым превратно. А в ситуациях, когда от этого зависит наш личный успех, подобное недопустимо.
Автором приведённой ниже классификации речевых ошибок является доктор филологических наук Ю. В. Фоменко. Его деление, по нашему мнению, наиболее простое, лишённое академической вычурности и, как следствие, понятное даже тем, кто не имеет специального образования.
Виды речевых ошибок:
Примеры и причины возникновения речевых ошибок
С. Н. Цейтлин пишет: «В качестве фактора, способствующего возникновению речевых ошибок, выступает сложность механизма порождения речи». Давайте рассмотрим частные случаи, опираясь на предложенную выше классификацию видов речевых ошибок.
Произносительные ошибки
Произносительные или орфоэпические ошибки возникают в результате нарушения правил орфоэпии. Другими словами, причина кроется в неправильном произношении звуков, звукосочетаний, отдельных грамматических конструкций и заимствованных слов. К ним также относятся акцентологические ошибки – нарушение норм ударения. Примеры:
Произношение: «конечно» (а не «конешно»), «пошти» («почти»), «плотит» («платит»), «прецендент» («прецедент»), «иликтрический» («электрический»), «колидор» («коридор»), «лаболатория» («лаборатория»), «тыща» («тысяча»), «щас» («сейчас»).
Неправильное ударение: «зво́нит», «диа́лог», «до́говор», «ката́лог», «путепро́вод», «а́лкоголь», «свекла́», «феноме́н», «шо́фер», «э́ксперт».
Лексические ошибки
Лексические ошибки – нарушение правил лексики, прежде всего – употребление слов в несвойственных им значениях, искажение морфемной формы слов и правил смыслового согласования. Они бывают нескольких видов.
Употребление слова в несвойственном ему значении. Это самая распространённая лексическая речевая ошибка. В рамках этого типа выделяют три подтипа:
- Смешение слов, близких по значению: «Он обратно прочитал книжку».
- Смешение слов, близких по звучанию: экскаватор – эскалатор, колос – колосс, индианка – индейка, одинарный – ординарный.
- Смешение слов, близких по значению и звучанию: абонент – абонемент, адресат – адресант, дипломат – дипломант, сытый – сытный, невежа – невежда. «Касса для командировочных» (нужно – командированных).
Словосочинительство. Примеры ошибок: грузинец, героичество, подпольцы, мотовщик.
Нарушение правил смыслового согласования слов. Смысловое согласование – это взаимное приспособление слов по линии их вещественных значений. Например, нельзя сказать: «Я поднимаю этот тост», поскольку «поднимать» значит «перемещать», что не согласовывается с пожеланием. «Через приоткрытую настежь дверь», – речевая ошибка, потому что дверь не может быть и приоткрыта (открыта немного), и настежь (широко распахнута) одновременно.
Сюда же относятся плеоназмы и тавтологии. Плеоназм – словосочетание, в котором значение одного компонента целиком входит в значение другого. Примеры: «май месяц», «маршрут движения», «адрес местожительства», «огромный мегаполис», «успеть вовремя». Тавтология – словосочетание, члены которого имеют один корень: «Задали задание», «Организатором выступила одна общественная организация», «Желаю долгого творческого долголетия».
Фразеологические ошибки
Фразеологические ошибки возникают, когда искажается форма фразеологизмов или они употребляются в несвойственном им значении. Ю. В. Фоменко выделяет 7 разновидностей:
- Изменение лексического состава фразеологизма: «Пока суть да дело» вместо «Пока суд да дело»;
- Усечение фразеологизма: «Ему было впору биться об стенку» (фразеологизм: «биться головой об стенку»);
- Расширение лексического состава фразеологизма: «Вы обратились не по правильному адресу» (фразеологизм: обратиться по адресу);
- Искажение грамматической формы фразеологизма: «Терпеть не могу сидеть сложив руки». Правильно: «сложа»;
- Контаминация (объединение) фразеологизмов: «Нельзя же все делать сложа рукава» (объединение фразеологизмов «спустя рукава» и «сложа руки»);
- Сочетание плеоназма и фразеологизма: «Случайная шальная пуля»;
- Употребление фразеологизма в несвойственном значении: «Сегодня мы будем говорить о фильме от корки до корки».
Морфологические ошибки
Морфологические ошибки – неправильное образование форм слова. Примеры таких речевых ошибок: «плацкарт», «туфель», «полотенцев», «дешевше», «в полуторастах километрах».
Синтаксические ошибки
Синтаксические ошибки связаны с нарушением правил синтаксиса – конструирования предложений, правил сочетания слов. Их разновидностей очень много, поэтому приведём лишь некоторые примеры.
- Неправильное согласование: «В шкафу стоят много книг»;
- Неправильное управление: «Оплачивайте за проезд»;
- Синтаксическая двузначность: «Чтение Маяковского произвело сильное впечатление» (читал Маяковский или читали произведения Маяковского?);
- Смещение конструкции: «Первое, о чём я вас прошу, – это о внимании». Правильно: «Первое, о чём я вас прошу, – это внимание»;
- Лишнее соотносительное слово в главном предложении: «Мы смотрели на те звёзды, которые усеяли всё небо».
Орфографические ошибки
Этот вид ошибок возникает из-за незнания правил написания, переноса, сокращения слов. Характерен для письменной речи. Например: «сабака лаяла», «сидеть на стули», «приехать на вогзал», «русск. язык», «грамм. ошибка».
Пунктуационные ошибки
Пунктуационные ошибки – неправильное употребление знаков препинания при письме.
Стилистические ошибки
Этой теме мы посвятили отдельный материал.
Пути исправления и предупреждения речевых ошибок
Как предупредить речевые ошибки? Работа над своей речью должна включать:
- Чтение художественной литературы.
- Посещение театров, музеев, выставок.
- Общение с образованными людьми.
- Постоянная работа над совершенствованием культуры речи.
Онлайн-курс «Русский язык»
Речевые ошибки – одна из самых проблемных тем, которой уделяется мало внимания в школе. Тем русского языка, в которых люди чаще всего допускают ошибки, не так уж много — примерно 20. Именно данным темам мы решили посвятить курс «Русский язык». На занятиях вы получите возможность отработать навык грамотного письма по специальной системе многократных распределенных повторений материала через простые упражнения и специальные техники запоминания.
Подробнее Купить сейчас
Источники
- Беззубов А. Н. Введение в литературное редактирование. – Санкт-Петербург, 1997.
- Савко И. Э. Основные речевые и грамматические ошибки
- Сергеева Н. М. Ошибки речевые, грамматические, этические, фактологические…
- Фоменко Ю. В. Типы речевых ошибок. – Новосибирск: НГПУ, 1994.
- Цейтлин С. Н. Речевые ошибки и их предупреждение. – М.: Просвещение, 1982.
Отзывы и комментарии
А теперь вы можете потренироваться и найти речевые ошибки в данной статье или поделиться другими известными вам примерами. Кроме того, обратите внимание на наш курс по развитию грамотности.
-
Общая методика отладка по: изучение проявления ошибки, локализация ошибки, определение причины ошибки, исправление ошибки, повторное тестирование.
1 этап —
изучение проявления ошибки — если выдано
какое-либо сообщение или выданы
неправильные или неполные результаты,
то необходимо их изучить и попытаться
понять, какая ошибка могла так проявиться.
При этом используют индуктивные и
дедуктивные методы отладки. В результате
выдвигают версии о характере ошибки,
которые необходимо проверить. Для этого
можно применить методы и средства
получения дополнительной информации
об ошибке. Если ошибка не найдена или
система просто «зависла», переходят
ко второму этапу.
2 этап —
локализация ошибки — определение
конкретного фрагмента, при выполнении
которого произошло отклонение от
предполагаемого вычислительного
процесса. Локализация может выполняться:
• путем отсечения
частей программы, причем, если при
отсечении некоторой части программы
ошибка пропадает, то это может означать
как то, что ошибка связана с этой частью,
так и то, что внесенное изменение
изменило проявление ошибки;
• с использованием
отладочных средств, позволяющих
выполнить интересующих нас фрагмент
программы в пошаговом режиме и получить
дополнительную информацию о месте
проявления и характере ошибки, например,
уточнить содержимое указанных переменных.
При этом если были
получены неправильные результаты, то
в пошаговом режиме проверяют ключевые
точки процесса формирования данного
результата.Ошибка не обязательно
допущена в том месте, где она проявилась.
Если в конкретном случае это так, то
переходят к следующему этапу.
3 этап —
определение причины ошибки — изучение
результатов второго этапа и формирование
версий возможных причин ошибки. Эти
версии необходимо проверить, возможно,
используя отладочные средства для
просмотра последовательности операторов
или значений переменных.
4 этап —
исправление ошибки — внесение
соответствующих изменений во все
операторы, совместное выполнение
которых привело к ошибке.
5 этап —
повторное тестирование — повторение
всех тестов с начала, так как при
исправлении обнаруженных ошибок часто
вносят в программу новые.
Следует иметь в
виду, что процесс отладки можно
существенно упростить, если следовать
основным рекомендациям структурного
подхода к программированию:
• программу
наращивать «сверху-вниз», от интерфейса
к обрабатывающим подпрограммам, тестируя
ее по ходу добавления подпрограмм;
• выводить
пользователю вводимые им данные для
контроля и проверять их на допустимость
сразу после ввода;
• предусматривать
вывод основных данных во всех узловых
точках алгоритма (ветвлениях, вызовах
подпрограмм).
Кроме того, следует
более тщательно проверять фрагменты
программного обеспечения, где уже были
обнаружены ошибки, так как вероятность
ошибок в этих местах по статистике
выше. Это вызвано следующими причинами.
Во-первых, ошибки чаще допускают в
сложных местах или в тех случаях, если
спецификации на реализуемые операции
недостаточно проработаны. Во-вторых,
ошибки могут быть результатом того,
что программист устал, отвлекся или
плохо себя чувствует. В-третьих, как
уже упоминалось выше, ошибки часто
появляются в результате исправления
уже найденных ошибок.
Проще всего обычно
искать ошибки определения данных и
ошибки накопления погрешностей: их
причины локализованы в месте проявления.
Логические ошибки искать существенно
сложнее. Причем обнаружение ошибок
проектирования требует возврата на
предыдущие этапы и внесения соответствующих
изменений в проект. Ошибки кодирования
бывают как простые, например, использование
неинициализированной переменной, так
и очень сложные, например, ошибки,
связанные с затиранием памяти. Затиранием
памяти называют ошибки, приводящие к
тому, что в результате записи некоторой
информации не на свое место в оперативной
памяти, затираются фрагменты данных
или даже команд программы. Ошибки
подобного рода обычно вызывают появление
сообщения об ошибке. Поэтому определить
фрагмент, при выполнении которого
ошибка проявляется, несложно. А вот
определение фрагмента программы,
который затирает память — сложная
задача, причем, чем длиннее программа,
тем сложнее искать ошибки такого рода.
Именно в этом случае часто прибегают
к удалению из программы частей, хотя
это и не обеспечивает однозначного
ответа на вопрос, в какой из частей
программы находится ошибка. Эффективнее
попытаться определить операторы,
которые записывают данные в память не
по имени, а по адресу, и последовательно
их проверить. Особое внимание при этом
следует обращать на корректное
распределение памяти под данные.
-
Организация
испытаний, цель испытаний, предварительные
и совместные испытания, виды испытаний
в жизненном цикле ПО: опытного образца,
рабочей версии, модернизированной
версии; категории испытаний:
функциональные, стрессовые, использования
ресурсов ЭВМ, параллельного решения
задач.
Организация
испытаний комплексов программ.
Используются для программ, создаваемых
на уровне продукции производственно-технического
назначения и отчуждаемых от разработчика.
Важная особенность испытаний
программы состоит в наличии достаточно
полных эталонов, которым должен
соответствовать КП, требований
технического задания. Цель испытаний
— определение степени соответствия
созданного комплекса программ
техническому заданию, полученному
от заказчика.
Испытания сложных
КП являются наиболее формализованным
и регламентированным видом тестирования.
Для всесторонней проверки опытный
образец КП подвергается испытаниями
главного конструктора (предварительные
испытания) и заказчика-пользователя
с участием разработчиков (совместные
испытания).
При испытаниях
главного конструктора, которые зачастую
совмещаются с завершением комплексной
отладки, производится, по существу,
такое же тестирование, что и на совместных
испытаниях, только в меньшем объеме.
Эти проверки оформляются документально
и являются основанием для предъявления
КП заказчику на совместные испытания.
Любые испытания ограничены допустимым
объемом проверок и длительностью работы
комиссии, поэтому не могут гарантировать
всестороннюю проверку изделия. Для
повышения достоверности определения
и улучшения характеристик КП после
испытаний главного конструктора
программы целесообразно на некоторое
время передавать на опытную эксплуатацию
в типовых условиях. Это позволяет более
глубоко оценить эксплуатационные
характеристики созданного комплекса
и устранить некоторые ошибки. Опытная
эксплуатация КП проводится разработчиками
с участием испытателей и некоторых
пользователей, назначаемых заказчиком.
Результаты опытной эксплуатации после
испытаний главного конструктора могут
учитываться при совместных испытаниях
для их сокращения.
В жизненном цикле
КП можно выделить следующие виды
испытаний
-опытного образца
на полное соответствие требованиям
технического задания,
-рабочей версии
КП, адаптированной к условиям конкретного
применения,
-версии
модернизированного КП при сопровождении.
Функциональное
тестирование — наиболее обширное
и труднее всего систематизируемое.
Набор испытательных тестов полностью
определяется функциональными задачами
и сложностью КП. Эти тесты должны
обеспечивать проверку и демонстрацию
заказчику или пользователю качества
решения функциональных задач,
сформулированных в техническом задании
и конкретизированных в документации.
Поскольку исчерпывающее тестирование
для сложных КП невозможно, большое
значение имеют уточнение областей
варьирования тестовых данных и
выделение областей их изменения,
наиболее важных для последующего
использования программ
Стрессовое
тестирование (в критических ситуациях)
базируется на классификации областей
определения исходных данных и
использует граничные или экстремальные
значения параметров и условий. Комбинация
критических значений и условий
испытаний в большинстве случаев очень
разнообразна, и необходим тщательный
анализ для выделения достаточно
представительной выборки. Кроме того,
при стрессовых испытаниях должно
быть показано, что при изменении
исходных данных за допустимыми
пределами эти ситуации обнаруживаются,
селектируются и выдается диагностика
о нарушении ограничений на условии
эксплуатации программ.
Тестирование
использования ресурсов ЭВМ комплексом
программ в значительной степени является
стрессовым тестированием. При этом
внимание сосредоточивается на
исследовании зависимости объема памяти
и длительности решения задач от
характеристик исходной информации.
Определяются допустимые размерность
задач и интенсивности потоков
исходных данных, при которых возможно
нормальное функционирование КП на
данной ЭВМ
Тестирование
параллельного решения задач в
многомашинных или многопроцессорных
вычислительных комплексах состоит
в испытаниях взаимодействия программ
и данных при одновременном исполнений
компонент КП. Эти испытания можно
разделить на две части при детерминированных
запланированных ситуациях и при
случайном нормальном функционировании
программ. В первом случае основная
проблема состоит в создании
представительного многообразия
ситуаций параллельного функционирования
программ. Вторая часть тестирования
может совмещаться с остальными видами
испытаний и заключается в основном в
выделении случайных тестов и условий,
при которых проверяется недетерминированное
параллельное исполнение программ.
-
Испытания
программ на надежность: прямые
экспериментальные методы определения
показателей надежности программ в
условиях нормального функционирования,
форсированные методы испытаний реальных
систем на надежность.
Особенности
испытаний на надежность программ. В
теории надежности разработан ряд
методов, позволяющих определять
характеристики надежности сложных
систем: прямые экспериментальные методы
определения показателей надежности
систем в условиях нормального
функционирования и форсированные
методы испытаний реальных систем на
надежность.
Прямые
экспериментальные методы определения
показателей надежности программ в
нормальных условиях функционирования
в ряде случаев весьма трудно использовать
при испытаниях из-за большого времени
наработки на отказ (десятки и сотни
часов). Сложность выявления и
регистрации редких отказов, а также
высокая стоимость экспериментов при
длительном функционировании сложных
КП приводят к тому, что на испытаниях
получаются малые выборки зарегистрированных
отказов. Кроме того, при таких
экспериментах трудно гарантировать
представительность выборки исходных
данных, так как режимы эксплуатации
определяются конкретными условиями
использования данного КП на испытаниях.
При испытаниях
КП на надежность функционирования
необходимо разделять причины отказов
и отказовых ситуаций на обусловленные
ненадежностью аппаратуры и ошибками
в программах. Для диагностики и
локализации причин отказа обычно
требуется дополнительное тестирование,
которое позволяет либо выделить
первичную ошибку в программе, либо
отнести источник отказа к сбою в
аппаратуре.
На этапе испытаний
целесообразно устранять в программах
локализованные ошибки. Вследствие
этого характеристики надежности КП
в среднем улучшаются, однако возможны
изменения программы, которые их
ухудшают. Изменения показателей
надежности необходимо связывать во
времени с моментами корректировки
программ. Анализируя связь между
значениями надежности и процессом
изменения программ, можно выявить
корректировки, которые содержат ошибки
и ухудшают надежность.
Получающиеся при
этом показатели надежности позволяют
прогнозировать число ошибок, подлежащих
исправлению для достижения заданной
надежности. Для этого используются
математические модели изменения ошибок
и основных показателей надежности в
зависимости от длительности тестирования.
При высокой надежности КП организуются
многочасовые прогоны реального
функционирования программ в условиях
широкого варьирования исходных данных.
Такие прогоны позволяют измерить и
зафиксировать достигнутое показатели
надежности и степень их соответствия
требованиям технического задания, а
также закрепить их в технических
условиях на КП.
Форсированные
методы испытаний реальных систем
на надежность осуществляются путем
тестирования КП при повышенной
интенсивности искажений исходных
данных с широким варьированием их
значений, а также специальным увеличением
загрузки КП выше нормальной. Планирование
форсированных испытаний должно
предусматривать последующий пересчет
полученных показателей надежности на
условия нормального функционирования.
Для этого необходимо изучать надежность
испытываемых программ в зависимости
от интенсивности искажений данных или
от характеристик перегрузки ЭВМ и
способы пересчета получаемых показателей
на нормальные условия эксплуатации.
Особым видом
форсированных испытаний является
тестирование эффективности средств
контроля и восстановления программ,
данных и вычислительного процесса. Для
этого имитируются запланированные
экстремальные условия функционирования
программ, при которых в наибольшей
степени вызываются средства программного
рестарта. При таких испытаниях основная
задача состоит в проверке качества
функционирования средств повышения
надежности, а оценка интегральных
показателей надежности отходит на
второй план.
-
Достоверность
испытаний: методическая и статистическая
достоверность; документирование
результатов испытаний: исходных и
отчетные документы при испытаниях
программ – техническое задание,
государственные и отраслевые стандарты,
программа испытаний, методики испытаний,
протоколы испытаний, акт испытаний.
Достоверность
испытаний – организация испытаний
таким образом, чтобы результатам можно
было доверять.
Методическая
достоверность испытаний КП определяется
следующими факторами:
-полнотой программы
испытаний, корректностью методик
тестирования, степенью охвата
возможных условий функционирования
и областей изменения исходных данных
программ;
-достоверностью
и точностью эталонных значений, с
которыми сравниваются результаты
тестирования испытываемой программы
или которые служат опорными при расчете
параметров, зафиксированных в техническом
задании;
-адекватностью и
точностью моделей, используемых для
имитации внешней среды и их реакции
на управляющие воздействия;
-точностью и
корректностью регистрации и обработки
результатов тестирования, а также
сравнения полученных данных с требованиями
технического задания.
Статистическая
достоверность испытаний в значительной
степени ограничена допустимым объемом
и продолжительностью испытаний.
Методы теории планирования экспериментов
позволяют упорядоченно варьировать
исходные данные и наиболее эффективно
использовать ограниченные ресурсы
тестирования. При планировании
испытаний большое значение имеют
характеристики средств автоматизации,
используемых для имитации внешней
среды и обработки результатов.
Противоречия между необходимой степенью
достоверности тестирования и объемом
анализируемых данных при различных
видах испытаний привели к созданию
системы автоматизации испытаний
различной сложности и глубины
проверок.
Документы:
-
ТЗ
Техническое
задание представляет собой документ,
в котором сформулированы основные цели
разработки, требования к программному
продукту, определены сроки и этапы
разработки и регламентирован процесс
приемно-сдаточных испытаний. В
разработке технического задания
участвуют как представители заказчика,
так и представители исполнителя. В
основе этого документа лежат исходные
требования заказчика, анализ передовых
достижений техники, результаты
выполнения научно-исследовательских
работ, предпроектных исследований,
научного прогнозирования и т. п.
-
Государственные
и отраслевые стандарты -
Программа испытаний
— это план проведения серии экспериментов.
Он разрабатывается с позиции минимизации
объема тестирования при заданной и
согласованной с заказчиком достоверности
получаемых результатов. Для этого
методами факторного анализа и теории
планирования экспериментов определяются
последовательность и объем каждого
тестирования в процессе проведения
испытаний для проверки выполнения
требований технического задания
при минимальных затратах. Особенно
сложно выбрать набор стрессовых
ситуаций функционирования системы,
при которых следует провести испытания.
Программа испытаний должна содержать
следующие четко сформулированные
разделы:
-объект испытаний,
его назначение и перечень основных
документов, определивших его
разработку;
-цель испытаний
с указанием основных требований
технического задания, подлежащих
проверке, и ограничений на проведение
испытаний,
-собственно
программу испытаний, содержащую проверку
комплектности спроектированного КП в
соответствии с техническим заданием
и план тестирования для проверки
функционирования программ по всем
разделам технического задания и
дополнительным требованиям,
формализованным отдельными решениями;
-методики испытаний,
однозначно определяющие все понятия
проверяемых характеристик, условия
тестирования, средства, используемые
для испытаний, методики обработки и
оценки результатов тестирования по
каждому разделу программы испытаний.
Результаты
испытаний фиксируются в протоколах,
которые обычно содержат следующие
разделы:
-назначение
тестирования и раздел требований
технического задания, по которому
проводится испытание;
-указание методик,
в соответствии с которыми проводились
испытания, обработка и оценка результатов;
-условия проведения
тестирования и характеристика исходных
данных;
-обобщенные
результаты испытаний с оценкой их на
соответствие требованиям технического
задания и другим руководящим документам;
-выводы о результатах
испытаний и степени соответствия
созданного КП определенному разделу
требований технического задания.
Протоколы по всей
программе испытаний обобщаются в акте,
в результате чего делается заключение
о соответствии системы требованиям
заказчика и о завершении работы с
положительным или отрицательным
итогом. При полном выполнении всех
требований технического задания
заказчик обязан принять систему и
работа считается завершенной.
Однако, как уже
отмечалось, для сложных КП трудно на
начальных этапах проектирования
предусмотреть и корректно сформулировать
все требования технического задания.
Поэтому при отладке и испытаниях часто
выявляется, что некоторые требования
технического задания оказываются
невыполненными и иногда даже принципиально
не могут быть выполнены при самом
добросовестном отношении к этому со
стороны разработчика. В этом случае
необходима совместная работа заказчика
и разработчика в поисках компромиссного
решения при завершении испытаний и
составлении заключения. Некоторые
недостатки КП в процессе испытаний
только регистрируются и фиксируются
в плане устранения замечаний комиссии,
проводившей испытания. Этот план
является приложением к акту о результатах
испытаний и позволяет отделять
последующие доработки от непосредственных
испытаний.
-
Виды программной
документации: проектная и эксплуатационная
документация. Документирование
интерактивного ПО. Государственные
стандарты в области документирования
ПО. Средства автоматизации документирования.
К программным
относят документы, содержащие сведения,
необходимые для разработки, сопровождения
и эксплуатации программного
обеспечения. Документирование
программного обеспечения осуществляется
в соответствии с Единой системой
программной документации (ГОСТ 19.XXX).
Так ГОСТ 19.101-77 устанавливает виды
программных документов для программного
обеспечения различных типов. Ниже
перечислены основные программные
документы по этому стандарту и указано,
какую информацию они должны содержать.
Спецификация
должна содержать перечень и краткое
описание назначения всех файлов
программного обеспечения, в том числе
и файлов документации на него, и является
обязательной для программных систем,
а также их компонентов, имеющих
самостоятельное применение.
Ведомость
держателей подлинников (код вида
документа — 05) должна содержать список
предприятий, на которых хранятся
подлинники программных документов.
Необходимость этого документа
определяется на этапе разработки и
утверждения технического задания
только для программного обеспечения
со сложной архитектурой.
Текст программы
(код вида документа — 12) должен содержать
текст программы с необходимыми
комментариями. Необходимость этого
документа определяется на этапе
разработки и утверждения технического
задания.
Описание
программы
(код вида документа — 13) должно содержать
сведения о логической структуре и
функционировании программы, Необходимость
данного документа также определяется
на этапе разработки и утверждения
технического задания.
Ведомость
эксплуатационных документов
(код вида документа — 20) должна содержать
перечень эксплуатационных документов
на программу, к которым относятся
документы с кодами: 30, 31, 32, 33, 34, 35, 46.
Необходимость этого документа также
определяется на этапе разработки и
утверждения технического задания.
Формуляр
(код вида документа — 30) должен содержать
основные характеристики программного
обеспечения, комплектность и сведения
об эксплуатации программы.
Описание
применения
(код вида документа — 31) должно содержать
сведения о назначении программного
обеспечения, области применения,
применяемых методах, классе решаемых
задач, ограничениях для применения,
минимальной конфигурации технических
средств.
Руководство
системного программиста
(код вида документа — 32) должно содержать
сведения для проверки, обеспечения
функционирования и настройки программы
на условия конкретного применения.
Руководство
программиста
(код вида документа — 33) должно содержать
сведения для эксплуатации программного
обеспечения.
Руководство
оператора
(код вида документа — 34) должно содержать
сведения для обеспечения процедуры
общения оператора с вычислительной
системой в процессе выполнения
программного обеспечения.
Описание языка
(код вида документа — 35) должно содержать
описание синтаксиса и семантики языка.
Руководство по
техническому обслуживанию
(код вида документа — 46) должно содержать
сведения для применения тестовых и
диагностических программ при обслуживании
технических средств.
Программа и
методика испытаний
(код вида документа — 51) должны содержать
требования, подлежащие проверке при
испытании программного обеспечения,
а также порядок и методы их контроля.
Пояснительная
записка
(код вида документа -81) должна содержать
информацию о структуре и конкретных
компонентах программного обеспечения,
в том числе схемы алгоритмов, их общее
описание, а также обоснование принятых
технических и технико-экономических
решений. Составляется на стадии
эскизного и технического проекта.
Прочие документы
(коды вида документа — 90-99) могут
составляться на любых стадиях
разработки, т. е. на стадиях эскизного,
технического и рабочего проектов.
Допускается объединять отдельные
виды эксплуатационных документов,
кроме формуляра и ведомости. Необходимость
объединения указывается в техническом
задании, а имя берут у одного из
объединяемых документов.
-
Планирование
и организация разработки программных
систем: принципы планирования разработки,
принципы организации коллектива
программистов и распределения работ
по специалистам; методы бригадной
организации работ: бригада независимых
программистов, демократическая бригада,
бригада главного программиста; права
и обязанности членов бригад, организация
их взаимодействия, управление бригадой
на различных этапах проектирования.
На
этапе планирования разработки ПО
создаются планы и выбираются стандарты,
которые направляют этап разработки и
интегрированный этап. Его
целью
является определение средств для
создания ПО, которое будет удовлетворять
требования, предъявляемые к нему и
обеспечивать достаточный уровень
надежности. На этом этапе производиться:
1)
определение действий на этапах разработки
и интегрированном этапе, которые будут
посвящены определению системных
требований и уровня ПО;
2)
определение ЖЦ ПО, включая взаимодействие
между этапами, механизм взаимного
влияния этапов, критерии оценки ПО при
переходе от одного этапа к другому;
3)определение
среды ЖЦ, т.е. методы и инструментальные
средства, используемые на каждом этапе;
4)
формирование дополнительных замечаний
к ПО;
5)
рассмотрение стандартов разработки
ПО, соотношение их с системными целями
безопасности, относящиеся к разрабатываемому
ПО;
6)
разработка плана создания ПО;
7)
доработка и проверка плана создания
ПО.
Организация
коллективов для создания комплексов
программ. Никакая, даже очень
квалифицированная, небольшая бригада
специалистов не может сделать в разумные
сроки сложный КП объемом порядка 100
тыс. команд. В такой разработке
обязательно принимают участие
несколько десятков специалистов
различной квалификации и специализации.
Отсюда возникает задача организации
коллектива, координации его деятельности
и объединения индивидуальных усилий
для создания очень сложного изделия.
Организация коллектива и распределение
работ по специалистам могут производиться
по нескольким принципам:
-на основе
распределения системного анализа
(алгоритмизации) и разработки программ
по разным коллективам;
-по принципу
выделения коллективов, создающих всю
совокупность программных модулей,
и группы специалистов, объединяющих
программы в единый комплекс;
-по принципу
распределения достаточно сложных
законченных функциональных задач по
группам специалистов, осуществляющим
их полную разработку, и последующего
объединения функциональных задач
специальной группой ведущих
«комплексников».
Попытки полностью
разделить между двумя коллективами
специалистов функции непосредственного
программирования и функции постановки
задач и создания алгоритмов оказались
неудачными. При такой организации работ
невозможно определить ответственных
за законченные компоненты и возникают
многочисленные неразрешимые конфликты
при создании сложных КП. Эти конфликты
порождаются объективными трудностями
точной формализации алгоритмов со
стороны алгоритмистов и невозможностью
достаточно полной отладки программ
программистами без глубокого знания
содержания соответствующих
функциональных задач и алгоритмов. В
результате увеличивается длительность
работ и требуется множество документов
для взаимодействия алгоритмистов и
программистов.
Значительно более
продуктивными оказались методы
бригадной организации работ, когда
в бригаду входят и алгоритмисты, и
программисты. Такая бригада во главе
с алгоритмистом высокой квалификации
создает законченное, отлаженное изделие
и группу программ, выполняющую достаточно
автономные функции в системе. Подобная
группа может быть всесторонне проверена
и испытана руководителями проекта и
ответственным за нее является руководитель
бригады. Декомпозиция КП позволяет
специализировать бригады и отдельных
сотрудников в коллективе на нескольких
классах задач и квалифицированно решать
эти частные задачи. Тем самым обеспечивается
тематическая однородность специальных
знаний членов бригады, единство их
обучения и повышения квалификации в
области решаемых функциональных
задач. Целесообразно четко определять
ответственность каждого руководителя
за часть КП и обеспечивать его
минимально необходимой информацией
для управления процессом разработки.
Одним из вариантов
организационной структуры коллектива
при создании крупных КП является
иерархическая структура, базирующаяся
на группах специалистов, каждая из
которых составляет специализированную,
так называемую «хирургическую бригаду».
Такая бригада решает достаточно
автономную функциональную задачу
и должна разработать и отладить группу
взаимодействующих программ с
достаточно четкой целью функционирования.
«Хирургическая бригада» рекомендуется
в составе 7…10 специалистов с различными
задачами и квалификацией. Во главе
бригады стоит «хирург», который
разрабатывает функциональные задачи
программ, составляет алгоритм, пишет
и отлаживает программы, готовит и
проверяет документацию. Он должен
обладать значительным системным
опытом, высокой математической и
программистской квалификацией и
талантом разработки и отладки сложных
КП. «Второй пилот» является дублером
и может выполнить любую часть работы,
но менее опытен. Он принимает участие
в разработке, обсуждении и оценке
компонент, создаваемых бригадой, в
качестве оппонента или ответчика по
альтернативным решениям, а также несет
ответственность за взаимодействие
с другими бригадами и с разрабатываемыми
ими группами программ.
«Администратор»
позволяет избавить «хирурга» от
множества технических и административных
функций как внутри бригады, так и по
взаимодействию с администрацией всей
организации. При этом «хирургу»
принадлежит определяющее слово по
важнейшим вопросам организации и
проведения работ. «Редактор» критикует
документацию, созданную «хирургом»,
дорабатывает ее, снабжает ссылками и
наблюдает за ее публикацией. «Адвокат
языка» обеспечивает «хирурга»
консультациями по применению языка в
трудных или запутанных ситуациях,
способствует получению более
эффективных программ. «Инструментальщик»
— опытный системный программист —
является создателем специализированных
технологических и служебных программ,
каталогизированных процедур,
библиотек макрокоманд для расширения
функций технологического обеспечения
по заказу «хирурга». «Наладчик»
разрабатывает системные тесты в
соответствии с назначением и функциями
создаваемой группы программ. Он планирует
последовательность тестирования,
подготавливает имитаторы исходных
данных для комплексной отладки,
регистрирует процесс проведения
отладки и ее результаты. Кроме того, в
бригаду входят 2…3 технических работника
для выполнения секретарских функций
и различных вспомогательных технических
работ.
В другом варианте
организации бригады основные функции
программирования возлагаются на
нескольких специалистов средней
квалификации, каждый из которых
разрабатывает несколько программ.
Руководитель бригады формулирует
функциональные задачи, создает общее
техническое задание, контролирует
и корректирует спецификации требований
на программы, определяет состав тестов
для проверки программ. Детальную
разработку принципов решения задач и
алгоритмов каждой программы ведут сами
программисты под контролем бригадира.
В этом случае руководитель бригады или
совершенно не разрабатывает программ,
или создает только управляющие и
связывающие программы для группы,
создаваемой бригадой. На него ложится
основная «тяжесть» комплексной отладки
взаимодействия программ, разработанных
различными членами бригады. Один
наиболее опытный член бригады должен
быть дублером руководителя бригады.
Он может быть менее квалифицированным
в части методов решения функциональных
задач, однако должен обеспечивать
возможность замены руководителя при
комплексной отладке.
Для сложных ПС, в
создании которых участвуют десятки
специалистов, необходимо провести
четкое различие между архитектурой
КП и реализацией проекта в целом, а
также его составных частей.
«Системный архитектор» должен
специальными методами обучения
коллектива обеспечивать функциональное,
структурное и технологическое единство
проекта КП. Руководители, ответственные
за функциональные группы программ,
объединяют усилия бригад и обеспечивают
их взаимодействие по функциональному
и информационному сопряжению компонент,
созданных различными бригадами. Таким
образом, иерархическая структура
коллектива в верхних ярусах должна
соответствовать иерархической
структуре создаваемого КП, хотя следует
учитывать и обратное влияние структуры
коллектива на структуру КП.
Индустриальная
технология разработки сложных КП
позволяет снизить требования к
творческому уровню и профессиональной
квалификации основной массы специалистов,
тем не менее усложнение программ и
увеличение их объема еще больше повышают
роль системных программистов высшего
класса. Создание больших КП невозможно
обеспечить специалистами только
высшего класса, поэтому увеличение
количества разрабатываемых ПС при
одновременном возрастании их сложности
неуклонно повышают значение
автоматизированной технологии
проектирования программ.
-
Внедрение и
эксплуатация ПО, процесс сопровождения:
модификация, усовершенствование и
коррекция ПО; планирование и организация
сопровождения, методы конфигурационного
управления; тиражирование и использование
версий программ, методы сертификации
ПО.
Во время фазы
эксплуатации и сопровождения начинается
практическое использование
программного изделия.
Сопровождение
программного обеспечения связано с
внесением изменений в течение всего
времени использования программного
изделия. К причинам, определяющим
необходимость внесения изменений
в изделии, относятся:
• наличие ошибок
в используемом программном продукте;
• изменение
требований пользователя (расширение
или модификация);
• появление более
совершенных общесистемных программных
средств или технических устройств;
• изменение
организационной структуры, условий и
методов работы пользователя.
Первая причина
связана с качеством программного
изделия; остальные обусловлены, как
правило, длительным процессом
эксплуатации. Конечной целью любых
изменений является совершенствование
программного изделия: повышение его
корректности, надежности и
функциональной полезности. Однако
внесение изменений в программное
изделие может породить новые ошибки,
поэтому требуется жесткая регламентация
всех процессов внесения изменений.
В первую очередь
должны быть определены процедуры для
модификации программного изделия,
так как основной удельный вес работ по
сопровождению обусловлен изменениями,
связанными с модернизацией изделия
(расширение или улучшение функциональных
возможностей) и с адаптацией к условиям
конкретного пользователя. Эти
изменения требуют порядка восьмидесяти
процентов всех усилий, затрачиваемых
на сопровождение, и только около двадцати
процентов усилий тратится на корректировку
программ, выдающих неверные результаты.
В зависимости от
сложности программного изделия и числа
пользователей, сопровождение может
осуществляться в тесной увязке с группой
разработки изделия, т.е. сопровождение
поручается программистам-разработчикам.
В последнее время используется другая
схема. После гарантийного периода
сопровождение может быть передано от
разработчика к организации (или
специальному подразделению), которая
специально занимается сопровождением,
т.е. для каждого программного изделия,
находящегося в практическом
использовании, имеется организация,
ответственная за его сопровождение.
Задачи службы
сопровождения программного изделия
В процессе
эксплуатации программного изделия
пользователи взаимодействуют с
организацией (группой), ответственной
за сопровождение. Задачами службы
сопровождения являются:
1. Сбор и анализ
поступающих от пользователей сведений
об обнаруженных ошибках, замечаний и
предложений по совершенствованию
и изменению программного изделия.
2. Исправление
ошибок в программах, выдающих результаты,
не отвечающие установленным требованиям,
и внесение соответствующих изменений
в документацию.
3. Модернизация
программного изделия путем расширения
функциональных возможностей или
улучшения эксплуатационных характеристик
программного изделия.
4. Внесение изменений
в программы с целью их приспособления
к условиям работы конкретного
пользователя.
5. Контроль
правильности всех корректировок,
вносимых в изделие, и проверка
качества измененных программ.
6. Доведение до
пользователя информации о внесенных
изменениях.
7. Обучение и
постоянные консультации пользователя
с целью повышения эффективности
использования программного изделия.
Порядок внесения
изменений строго регламентирован.
Обычно в службе сопровождения хранится
подлинник программного изделия с
тестовыми данными, на основе которых
проводились его испытания. С подлинника
копируется дубликат, а пользователям
направляются копии с дубликата.
Все претензии
пользователей к программному изделию
рассматриваются как ошибки, которые
регистрируются, и после анализа
сопровождающих материалов (обычно это
данные, при которых произошла ошибка,
распечатки результатов и т.д.) определяется
уровень серьезности ошибки. Изменения,
связанные с ошибками, могут привести
к серьезным финансовым или юридическим
последствиям для организации-разработчика,
поэтому решения об изменениях могут
приниматься на уровне руководства
организации. Вместе с тем часть
претензий может возникать из-за
неправильной эксплуатации изделия,
низкой квалификации пользователя,
из-за ошибок в пользовательской
копии. Поэтому прежде всего проверяется
достоверность появления такой ошибки
на эталонном варианте изделия с
данными, представленными пользователем.
При отсутствии ошибки тестируется
копия пользователя, и, если ошибка не
появляется, она снимается с учета в
группе сопровождения, о чем делается
сообщение пользователю- Для принятых
предложений по корректировке
составляется план работ по внесению
изменений и определяются ресурсы
для их выполнения.
Какие существуют методы анализа и локализации ошибки
Под тестированием следует понимать процесс исполнения программы с целью обнаружения ошибок, в качестве которых принимается любое отклонение от эталонов. Хорошим считается тест, который имеет высокую вероятность обнаружения еще не выявленных ошибок.
Под отладкой понимается процесс, позволяющий получить программу, функционирующую с требуемыми характеристиками в заданной области входных данных. Таким образом, в результате отладки программа должна соответствовать некоторой фиксированной совокупности правил и показателей качества, принимаемой за эталонную для данной программы.
Существует три основных способа тестирования:
Алгоритмическое тестирование применяется для контроля этапов алгоритмизации и программирования. Проектируются тесты и начинаются готовиться эталонные результаты на этапе алгоритмизации, а используются они на этапе отладки.
Функциональное или аналитическое тестирование
Аналитическое тестирование служит для контроля выбранного метода решения задачи, правильности его работы в выбранных режимах и с установленными диапазонами данных. Тесты проектируют и начинают готовить сразу после выбора метода, а используют их на последнем этапе отладки, в ходе тестирования, наряду со сверкой на совпадение, применяются и качественные оценки результатов.
Содержательное тестирование служит для проверки правильности постановки задачи. Для контроля при этом используются, как правило, качественные оценки и статистические характеристики программы, физический смысл полученных результатов и т.п. в проведении содержательного тестирования, принципы которого формулируются в техническом задании, самое активное участие должны принимать заказчики или идущие пользователи программы.
Содержательные и аналитические тесты проверяют правильность работы программы в целом или крупных ее частей, в то время как алгоритмические тесты в первую очередь должны проверять работу отдельных блоков или операторов программы.
Тот вид контроля, который рассматривался выше, можно назвать тестированием основных функциональных возможностей программы — основной тест.
Этот тест затрагивает работу программы в самой минимальной степени. Обычно тест служит для проверки правильности выполнения самых внешних функций программы, например, обращения к ней и выхода из нее.
Тест граничных значений
Тест проверяет работу программы для граничных значений параметров, определяющих вычислительный процесс. Часто для граничных значений параметра работа программы носит особый характер, который, тем самым, требует и особого контроля.
Тест проверяет реакцию программы на возникновение разного рода аварийных ситуаций в программе, в частности, вызванных неправильными исходными данными. Другими словами, проверяется диагностика, выдаваемая программой, а также окончание ее работы или, может быть, попытка исправления неверных исходных данных.
Локализация ошибок
После того, как с помощью тестов (или каким либо другим путем) установлено, что в программе или в конкретном ее блоке имеется ошибка, возникает задача ее локализации, то есть установления точного места в программе, где находится ошибка.
Процесс локализации ошибок состоит из следующих трех компонент:
Получение на машине тестовых результатов.
Анализ тестовых результатов и сверка их с эталонными.
Выявление ошибки или формулировка предположения о характере и месте ошибки в программе.
Технология отладки автоматизированного рабочего места
При отладке программы использовались следующие методы контроля и локализации ошибок: просмотр текста программы с целью обнаружения явных синтаксических и логических ошибок и трансляция программы (транслятор выдает сообщения об обнаруженных им ошибках в тексте программы).
Тестирование проводилось посредством ввода исходных данных, с дальнейшей их обработкой, выводом результатов на экран. Результаты работы программы сравнивались с требованиями в техническом задании.
1) Отладка программы производилась следующим образом:
2) Запуск программы с набором тестовых входных данных и выявление наличия ошибок.
3) Выделение области программы, в которой может находиться ошибка.
4) Просмотр листинга программы с целью возможного визуального обнаружения ошибок. В противном случае — установка контрольной точки примерно в середине выделенной области.
Новая прогонка программы. Если работа программы прервалась до обработки контрольной точки, значит, ошибка произошла раньше. Контрольная точка переносится, и процесс отладки возвращается к шагу 2.
Если контрольная точка программы была обработана, то далее следует изучение значений стека, переменных и параметров программы с тем, чтобы убедиться в их правильности. При появлении ошибки — новый перенос контрольной точки и возврат к шагу 2.
В случае если ошибка не была обнаружена, далее выполнение программы производится покомандно, с контролем правильности выполнения переходов и содержимого регистров и памяти в контрольных точках. При локализации ошибки, она исправляется, и процесс возвращается к шагу 1.
В данном разделе были рассмотрены вопросы разработки, отладки и тестирования программных продуктов. Было приведено обоснование необходимости и важности этапа отладки в процессе разработки программного обеспечения, даны краткие описания основных способов отладки и тестирования.
В отношении разработанной в специальной части программы было дано описание алгоритма, использовавшегося при ее отладки и тестировании. Представлено обоснование выбора языка программирования.
7. Локализация ошибок
После того, как с помощью контрольных тестов (или каким либо другим путем) установлено, что в программе или в конкретном ее блоке имеется ошибка, возникает задача ее локализации, то есть установления точного места в программе, где находится ошибка.
Процесс локализации ошибок состоит из следующих трех компонент:
1. Получение на машине тестовых результатов.
2. Анализ тестовых результатов и сверка их с эталонными.
3. Выявление ошибки или формулировка предположения о характере и месте ошибки в программе.
По принципам работы средства локализации разделяются на 4 типа :
1. Аварийная печать.
2. Печать в узлах.
АВАРИЙНАЯ ПЕЧАТЬ осуществляется один раз при работе отлаживаемой программы, в момент возникновения аварийной ситуации в программе, препятствующей ее нормальному выполнению. Тем самым, конкретное место включения в работу аварийной печати определяется автоматически без использования информации от программиста, который должен только определить список выдаваемых на печать переменных.
ПЕЧАТЬ В УЗЛАХ включается в работу в выбранных программистом местах программы; после осуществления печати значений данных переменных продолжается выполнение отлаживаемой программы.
СЛЕЖЕНИЕ производится или по всей программе, или на заданном программистом участке. Причем слежение может осуществляться как за переменными (арифметическое слежение), так и за операторами (логическое слежение). Если обнаруживается, что происходит присваивание заданной переменной или выполнение оператора с заданной меткой, то производится печать имени переменной или метки и выполнение программы продолжается. Отличием от печати в узлах является то, что место печати может точно и не определяться программистом (для арифметического слежения); отличается также и содержание печати.
ПРОКРУТКА производится на заданных участках программы, и после выполнения каждого оператора заданного типа (например, присваивания или помеченного) происходит отладочная печать.
По типам печатаемых значений (числовые и текстовые или меточные) средства разделяются на арифметические и логические.
7.2. Классификация средств локализации ошибок
Ниже дана классификация средств локализации.
ТИПЫ СРЕДСТВ ЛОКАЛИЗАЦИИ ОШИБОК :
СРЕДСТВА ЛОКАЛИЗАЦИИ:
1. Аварийная печать (арифметическая).
1.1. Специальные средства языка.
1.2. Системные средства.
2. Печать в узлах (арифметическая).
2.1. Обычные средства языка.
2.2. Специальные средства языка.
3. Слежение (специальные средства).
4. Прокрутка (специальные средства).
8. Технология отладки программы автоматизации учета движения товаров на складе малого предприятия
При отладке программы использовались следующие методы контроля и локализации ошибок (обзор методов см. в теоретической части раздела) :
1. Просмотр текста программы и прокрутка с целью обнаружения явных синтаксических и логических ошибок.
2. Трансляция программы (транслятор выдает сообщения об обнаруженных им ошибках в тексте программы).
3. Тестирование. Тестирование проводилось посредством ввода исходных данных, с дальнейшей их обработкой, выводом результатов на печать и экран. Результаты работы программы сравнивались заданными в техническом задании.
4. При локализации ошибок преимущественно использовалась печать в узлах, которыми являлись в основном глобальные переменные, переменные, используемые при обмене данными основной программы с подпрограммами.
Отладка программы производилась по следующему алгоритму :
1. Прогонка программы с набором тестовых входных данных и выявление наличия ошибок.
2. Выделение области программы, в которой может находиться ошибка. Просмотр листинга программы с целью возможного визуального обнаружения ошибок. В противном случае — установка контрольной точки примерно в середине выделенной области.
3. Новая прогонка программы. Если работа программы прервалась до обработки контрольной точки, значит, ошибка произошла раньше. Контрольная точка переносится, и процесс отладки возвращается к шагу 2.
4. Если контрольная точка программы была обработана, то далее следует изучение значений регистров, переменных и параметров программы с тем, чтобы убедиться в их правильности. При появлении ошибки — новый перенос контрольной точки и возврат к шагу 2.
5. В случае не обнаружения ошибки продолжение выполнения программы покомандно, с контролем правильности выполнения переходов и содержимого регистров и памяти в контрольных точках. При локализации ошибки она исправляется и процесс возвращается к шагу 1.
В качестве тестовых входных данных использовалась последовательность частотных выборок, генерируемых имитатором в режиме 1. (Каждому интервалу соответствует фиксированное значение выборок.)
Итоговый тест по дисциплине «Поддержка и тестирование программных модулей»
Является ли программа аналогом математической формулы?
Варианты ответов
- Да
- Нет
- Математические формулы и программы не сводятся друг к другу
Вопрос 2
Какие подходы используются для обоснования истинности программ?
Варианты ответов
- использование аналогий
- эксперимент над программой
- доказательство программы
- формальный и интерпретационный
Вопрос 3
Отметьте верные утверждения
Варианты ответов
- тестирование – процесс поиска ошибок
- в фазу тестирования входят поиски и исправление ошибок
- отладка – процесс локализации и исправления ошибок
Вопрос 4
Зачем нужна спецификация тестирования?
Варианты ответов
- для формирования команды тестировщиков
- для разработки тестового набора
- для понимания смысла программы
Вопрос 5
Варианты ответов
- выполнение программы в уме
- пошаговое выполнение
- метод контрольных точек и анализа трасс
Вопрос 6
Зачем нужен Log-файл?
Варианты ответов
- для изучения результатов тестирования в режиме on-line
- для фиксации результатов прогона test-suite
- для записи комментариев после прогона тестов
Вопрос 7
Варианты ответов
- разработка тестового набора
- прогон программы на тестовом наборе
- доказательство правильности программы
- анализ результатов тестирования
Вопрос 8
Варианты ответов
- определение областей эквивалентности входных параметров
- анализ покрытия тестами всех возможных случаев поведения
- проверка граничных значений
Вопрос 9
Что такое управляющий граф программы (УГП)?
Варианты ответов
- множество операторов программы.
- граф, вершины которого кодируют операторы программы, а дуги — управления (порядок исполнения) операторов
- множество операторов управления
Вопрос 10
Варианты ответов
- множество связанных дуг УГП
- последовательность вершин и дуг УГП с фиксированными начальной и конечной вершиной
- последовательность ветвей УГП с фиксированными начальной вершиной первой ветви и конечной вершиной последней ветви пути
Вопрос 11
Варианты ответов
- нереализуемый путь недоступен при корректном исполнении программы
- нереализуемый путь недоступен всегда
- нереализуемый путь доступен при сбое
- нереализуемый путь доступен при реализации недопустимых состояний переменных программы
Вопрос 12
Возможно ли тестирование программы на всех допустимых значениях параметров?
Варианты ответов
- да, всегда
- никогда
- возможно в отдельных случаях
Вопрос 13
Какие предъявляются требования к идеальному критерию тестирования?
Варианты ответов
- достаточность
- достижимость
- полнота
- проверяемость
Вопрос 14
Какие классы критериев тестируемости известны
Варианты ответов
- структурные критерии
- мутационные критерии
- функциональные критерии
- сценарные критерии
- стохастические критерии
Вопрос 15
Варианты ответов
- сценарный критерий
- такого критерия не существует
- критерий «черного ящика»
Вопрос 16
Варианты ответов
- критерий тестирования команд
- критерий тестирования ветвей
- критерий тестирования циклов
- критерий тестирования путей
Вопрос 17
Варианты ответов
- не проверяется соответствие со спецификацией
- не проверяется соответствие со спецификацией, не зафиксированное в структуре программы
- не проверяются ошибки в структурах данных
Вопрос 18
Варианты ответов
- тестирование пунктов спецификации
- тестирование классов входных данных
- тестирование классов выходных данных
- тестирование функций
- тестирование правил
Вопрос 19
Варианты ответов
- не проверяется соответствие со спецификацией
- не проверяются ошибки, требования к которым не зафиксированы в спецификации
- не проверяются ошибки в структурах данных, требования к которым не зафиксированы в спецификации
Вопрос 20
Варианты ответов
- создание программ-мутантов на основе изменения модульной структуры основной программы
- создание программ-мутантов с функциональными дефектами
- оценка числа ошибок в программе на основе искусственно внесенных мелких ошибок
Вопрос 21
Варианты ответов
- оценка проекта интегрирует оценки оттестированности модулей
- оценка проекта может вычисляться инкрементально
- в результате получаем наихудшую оценку оттестированности
- в результате получаем наилучшую оценку оттестированности
Вопрос 22
Какие существуют разновидности уровней тестирования?
Варианты ответов
- модульное
- интеграционное
- структурное
- системное
- регрессионное
Вопрос 23
Какие задачи у модульного тестирования?
Варианты ответов
- выявление ошибок при вызове модулей
- выявление ошибок взаимодействия модуля с окружением
- выявление локальных ошибок реализации алгоритмов модулей
Вопрос 24
На основе каких принципов строятся тесты для модульного тестирования?
Варианты ответов
- анализ потоков управления модуля
- анализ потоков данных модуля
- анализ покрытия в соответствии с заданными структурными критериями
Вопрос 25
Варианты ответов
- построение УГП (управляющего графа программы)
- выбор тестовых путей
- генерация тестов, соответствующих выбранным тестовым путям
Вопрос 26
Варианты ответов
- статические
- динамические
- методы реализуемых путей
Вопрос 27
Варианты ответов
- Регрессионное тестирование
- монолитное тестирование
- нисходящее тестирование
- восходящее тестирование
Вопрос 28
Варианты ответов
- необходимость разработки заглушек
- параллельная разработка эффективных модулей
- необходимость разработки среды управления очередностью вызовов модулей
- необходимость разработки драйверов
Вопрос 29
Варианты ответов
- тесты оперируют пользовательским или другими внешними интерфейсами
- структура проекта тестируется на уровне подсистем
- тестированию подлежит система в целом
- тестирование осуществляется по методу «черного ящика»
Вопрос 30
Варианты ответов
- выявление дефектов в функционировании приложения или в работе с ним
- выявление дефектов использования ресурсов
- выявление несовместимости с окружением
- выявление непредусмотренных сценариев применения или использования непредусмотренных комбинаций данных
Вопрос 31
Варианты ответов
- перетестирование предусматривает только контроль частей приложения, связанных с изменениями
- выбор между полным и частичным перетестированием и пополнением тестовых наборов
- регрессионное тестирование является подмножеством системного тестирования
Вопрос 32
Какие типы дефектов выявляются при системном и регрессионном тестировании
Программные ошибки. Методы отладки
Прежде всего определимся с некоторыми понятиями, связанными с отладкой программного обеспечения.
Программная ошибка — это расхождение между программой и ее спецификацией, причем тогда и только тогда, когда спецификация существует и она правильна. Также можно определить, что программная ошибка — это ситуация, когда программа не делает того, что пользователь от нее вполне обоснованно ожидает.
Отладкой называют процесс локализации и исправления ошибок, обнаруженных при тестировании программного обеспечения.
Локализация — это определение оператора/операторов программы, выполнение которого вызвало нарушение вычислительного процесса.
Для исправления ошибки необходимо определить ее причину, т.е. определить оператор или фрагмент, содержащие ошибку. Причины ошибок могут быть и очевидными, и очень глубоко скрытыми.
В соответствии с этапом обработки, на котором появляются ошибки, различают ошибки компиляции, ошибки компоновки, ошибки выполнения (рис. 5.1) [7].
Примеры и причины возникновения речевых ошибок
С. Н. Цейтлин пишет: «В качестве фактора, способствующего возникновению речевых ошибок, выступает сложность механизма порождения речи». Давайте рассмотрим частные случаи, опираясь на предложенную выше классификацию видов речевых ошибок.
Произносительные ошибки
Произносительные или орфоэпические ошибки возникают в результате нарушения правил орфоэпии. Другими словами, причина кроется в неправильном произношении звуков, звукосочетаний, отдельных грамматических конструкций и заимствованных слов. К ним также относятся акцентологические ошибки – нарушение норм ударения. Примеры:
Произношение: «конечно» (а не «конешно»), «пошти» («почти»), «плотит» («платит»), «прецендент» («прецедент»), «иликтрический» («электрический»), «колидор» («коридор»), «лаболатория» («лаборатория»), «тыща» («тысяча»), «щас» («сейчас»).
Неправильное ударение: «зво́нит», «диа́лог», «до́говор», «ката́лог», «путепро́вод», «а́лкоголь», «свекла́», «феноме́н», «шо́фер», «э́ксперт».
Лексические ошибки
Лексические ошибки – нарушение правил лексики, прежде всего – употребление слов в несвойственных им значениях, искажение морфемной формы слов и правил смыслового согласования. Они бывают нескольких видов.
Употребление слова в несвойственном ему значении. Это самая распространённая лексическая речевая ошибка. В рамках этого типа выделяют три подтипа:
- Смешение слов, близких по значению: «Он обратно прочитал книжку».
- Смешение слов, близких по звучанию: экскаватор – эскалатор, колос – колосс, индианка – индейка, одинарный – ординарный.
- Смешение слов, близких по значению и звучанию: абонент – абонемент, адресат – адресант, дипломат – дипломант, сытый – сытный, невежа – невежда. «Касса для командировочных» (нужно – командированных).
Словосочинительство. Примеры ошибок: грузинец, героичество, подпольцы, мотовщик.
Нарушение правил смыслового согласования слов. Смысловое согласование – это взаимное приспособление слов по линии их вещественных значений. Например, нельзя сказать: «Я поднимаю этот тост», поскольку «поднимать» значит «перемещать», что не согласовывается с пожеланием. «Через приоткрытую настежь дверь», – речевая ошибка, потому что дверь не может быть и приоткрыта (открыта немного), и настежь (широко распахнута) одновременно.
Сюда же относятся плеоназмы и тавтологии. Плеоназм – словосочетание, в котором значение одного компонента целиком входит в значение другого. Примеры: «май месяц», «маршрут движения», «адрес местожительства», «огромный мегаполис», «успеть вовремя». Тавтология – словосочетание, члены которого имеют один корень: «Задали задание», «Организатором выступила одна общественная организация», «Желаю долгого творческого долголетия».
Фразеологические ошибки
Фразеологические ошибки возникают, когда искажается форма фразеологизмов или они употребляются в несвойственном им значении. Ю. В. Фоменко выделяет 7 разновидностей:
- Изменение лексического состава фразеологизма: «Пока суть да дело» вместо «Пока суд да дело»;
- Усечение фразеологизма: «Ему было впору биться об стенку» (фразеологизм: «биться головой об стенку»);
- Расширение лексического состава фразеологизма: «Вы обратились не по правильному адресу» (фразеологизм: обратиться по адресу);
- Искажение грамматической формы фразеологизма: «Терпеть не могу сидеть сложив руки». Правильно: «сложа»;
- Контаминация (объединение) фразеологизмов: «Нельзя же все делать сложа рукава» (объединение фразеологизмов «спустя рукава» и «сложа руки»);
- Сочетание плеоназма и фразеологизма: «Случайная шальная пуля»;
- Употребление фразеологизма в несвойственном значении: «Сегодня мы будем говорить о фильме от корки до корки».
Морфологические ошибки
Морфологические ошибки – неправильное образование форм слова. Примеры таких речевых ошибок: «плацкарт», «туфель», «полотенцев», «дешевше», «в полуторастах километрах».
Синтаксические ошибки
Синтаксические ошибки связаны с нарушением правил синтаксиса – конструирования предложений, правил сочетания слов. Их разновидностей очень много, поэтому приведём лишь некоторые примеры.
- Неправильное согласование: «В шкафу стоят много книг»;
- Неправильное управление: «Оплачивайте за проезд»;
- Синтаксическая двузначность: «Чтение Маяковского произвело сильное впечатление» (читал Маяковский или читали произведения Маяковского?);
- Смещение конструкции: «Первое, о чём я вас прошу, – это о внимании». Правильно: «Первое, о чём я вас прошу, – это внимание»;
- Лишнее соотносительное слово в главном предложении: «Мы смотрели на те звёзды, которые усеяли всё небо».
Орфографические ошибки
Этот вид ошибок возникает из-за незнания правил написания, переноса, сокращения слов. Характерен для письменной речи. Например: «сабака лаяла», «сидеть на стули», «приехать на вогзал», «русск. язык», «грамм. ошибка».
Пунктуационные ошибки
Пунктуационные ошибки – неправильное употребление знаков препинания при письме.
Стилистические ошибки
Этой теме мы посвятили отдельный материал.
Пути исправления и предупреждения речевых ошибок
Как предупредить речевые ошибки? Работа над своей речью должна включать:
- Чтение художественной литературы.
- Посещение театров, музеев, выставок.
- Общение с образованными людьми.
- Постоянная работа над совершенствованием культуры речи.
Онлайн-курс «Русский язык»
Речевые ошибки – одна из самых проблемных тем, которой уделяется мало внимания в школе. Тем русского языка, в которых люди чаще всего допускают ошибки, не так уж много — примерно 20. Именно данным темам мы решили посвятить курс «Русский язык». На занятиях вы получите возможность отработать навык грамотного письма по специальной системе многократных распределенных повторений материала через простые упражнения и специальные техники запоминания.
Подробнее Купить сейчас
Источники
- Беззубов А. Н. Введение в литературное редактирование. – Санкт-Петербург, 1997.
- Савко И. Э. Основные речевые и грамматические ошибки
- Сергеева Н. М. Ошибки речевые, грамматические, этические, фактологические…
- Фоменко Ю. В. Типы речевых ошибок. – Новосибирск: НГПУ, 1994.
- Цейтлин С. Н. Речевые ошибки и их предупреждение. – М.: Просвещение, 1982.
Отзывы и комментарии
А теперь вы можете потренироваться и найти речевые ошибки в данной статье или поделиться другими известными вам примерами. Кроме того, обратите внимание на наш курс по развитию грамотности.
-
Общая методика отладка по: изучение проявления ошибки, локализация ошибки, определение причины ошибки, исправление ошибки, повторное тестирование.
1 этап —
изучение проявления ошибки — если выдано
какое-либо сообщение или выданы
неправильные или неполные результаты,
то необходимо их изучить и попытаться
понять, какая ошибка могла так проявиться.
При этом используют индуктивные и
дедуктивные методы отладки. В результате
выдвигают версии о характере ошибки,
которые необходимо проверить. Для этого
можно применить методы и средства
получения дополнительной информации
об ошибке. Если ошибка не найдена или
система просто «зависла», переходят
ко второму этапу.
2 этап —
локализация ошибки — определение
конкретного фрагмента, при выполнении
которого произошло отклонение от
предполагаемого вычислительного
процесса. Локализация может выполняться:
• путем отсечения
частей программы, причем, если при
отсечении некоторой части программы
ошибка пропадает, то это может означать
как то, что ошибка связана с этой частью,
так и то, что внесенное изменение
изменило проявление ошибки;
• с использованием
отладочных средств, позволяющих
выполнить интересующих нас фрагмент
программы в пошаговом режиме и получить
дополнительную информацию о месте
проявления и характере ошибки, например,
уточнить содержимое указанных переменных.
При этом если были
получены неправильные результаты, то
в пошаговом режиме проверяют ключевые
точки процесса формирования данного
результата.Ошибка не обязательно
допущена в том месте, где она проявилась.
Если в конкретном случае это так, то
переходят к следующему этапу.
3 этап —
определение причины ошибки — изучение
результатов второго этапа и формирование
версий возможных причин ошибки. Эти
версии необходимо проверить, возможно,
используя отладочные средства для
просмотра последовательности операторов
или значений переменных.
4 этап —
исправление ошибки — внесение
соответствующих изменений во все
операторы, совместное выполнение
которых привело к ошибке.
5 этап —
повторное тестирование — повторение
всех тестов с начала, так как при
исправлении обнаруженных ошибок часто
вносят в программу новые.
Следует иметь в
виду, что процесс отладки можно
существенно упростить, если следовать
основным рекомендациям структурного
подхода к программированию:
• программу
наращивать «сверху-вниз», от интерфейса
к обрабатывающим подпрограммам, тестируя
ее по ходу добавления подпрограмм;
• выводить
пользователю вводимые им данные для
контроля и проверять их на допустимость
сразу после ввода;
• предусматривать
вывод основных данных во всех узловых
точках алгоритма (ветвлениях, вызовах
подпрограмм).
Кроме того, следует
более тщательно проверять фрагменты
программного обеспечения, где уже были
обнаружены ошибки, так как вероятность
ошибок в этих местах по статистике
выше. Это вызвано следующими причинами.
Во-первых, ошибки чаще допускают в
сложных местах или в тех случаях, если
спецификации на реализуемые операции
недостаточно проработаны. Во-вторых,
ошибки могут быть результатом того,
что программист устал, отвлекся или
плохо себя чувствует. В-третьих, как
уже упоминалось выше, ошибки часто
появляются в результате исправления
уже найденных ошибок.
Проще всего обычно
искать ошибки определения данных и
ошибки накопления погрешностей: их
причины локализованы в месте проявления.
Логические ошибки искать существенно
сложнее. Причем обнаружение ошибок
проектирования требует возврата на
предыдущие этапы и внесения соответствующих
изменений в проект. Ошибки кодирования
бывают как простые, например, использование
неинициализированной переменной, так
и очень сложные, например, ошибки,
связанные с затиранием памяти. Затиранием
памяти называют ошибки, приводящие к
тому, что в результате записи некоторой
информации не на свое место в оперативной
памяти, затираются фрагменты данных
или даже команд программы. Ошибки
подобного рода обычно вызывают появление
сообщения об ошибке. Поэтому определить
фрагмент, при выполнении которого
ошибка проявляется, несложно. А вот
определение фрагмента программы,
который затирает память — сложная
задача, причем, чем длиннее программа,
тем сложнее искать ошибки такого рода.
Именно в этом случае часто прибегают
к удалению из программы частей, хотя
это и не обеспечивает однозначного
ответа на вопрос, в какой из частей
программы находится ошибка. Эффективнее
попытаться определить операторы,
которые записывают данные в память не
по имени, а по адресу, и последовательно
их проверить. Особое внимание при этом
следует обращать на корректное
распределение памяти под данные.
-
Организация
испытаний, цель испытаний, предварительные
и совместные испытания, виды испытаний
в жизненном цикле ПО: опытного образца,
рабочей версии, модернизированной
версии; категории испытаний:
функциональные, стрессовые, использования
ресурсов ЭВМ, параллельного решения
задач.
Организация
испытаний комплексов программ.
Используются для программ, создаваемых
на уровне продукции производственно-технического
назначения и отчуждаемых от разработчика.
Важная особенность испытаний
программы состоит в наличии достаточно
полных эталонов, которым должен
соответствовать КП, требований
технического задания. Цель испытаний
— определение степени соответствия
созданного комплекса программ
техническому заданию, полученному
от заказчика.
Испытания сложных
КП являются наиболее формализованным
и регламентированным видом тестирования.
Для всесторонней проверки опытный
образец КП подвергается испытаниями
главного конструктора (предварительные
испытания) и заказчика-пользователя
с участием разработчиков (совместные
испытания).
При испытаниях
главного конструктора, которые зачастую
совмещаются с завершением комплексной
отладки, производится, по существу,
такое же тестирование, что и на совместных
испытаниях, только в меньшем объеме.
Эти проверки оформляются документально
и являются основанием для предъявления
КП заказчику на совместные испытания.
Любые испытания ограничены допустимым
объемом проверок и длительностью работы
комиссии, поэтому не могут гарантировать
всестороннюю проверку изделия. Для
повышения достоверности определения
и улучшения характеристик КП после
испытаний главного конструктора
программы целесообразно на некоторое
время передавать на опытную эксплуатацию
в типовых условиях. Это позволяет более
глубоко оценить эксплуатационные
характеристики созданного комплекса
и устранить некоторые ошибки. Опытная
эксплуатация КП проводится разработчиками
с участием испытателей и некоторых
пользователей, назначаемых заказчиком.
Результаты опытной эксплуатации после
испытаний главного конструктора могут
учитываться при совместных испытаниях
для их сокращения.
В жизненном цикле
КП можно выделить следующие виды
испытаний
-опытного образца
на полное соответствие требованиям
технического задания,
-рабочей версии
КП, адаптированной к условиям конкретного
применения,
-версии
модернизированного КП при сопровождении.
Функциональное
тестирование — наиболее обширное
и труднее всего систематизируемое.
Набор испытательных тестов полностью
определяется функциональными задачами
и сложностью КП. Эти тесты должны
обеспечивать проверку и демонстрацию
заказчику или пользователю качества
решения функциональных задач,
сформулированных в техническом задании
и конкретизированных в документации.
Поскольку исчерпывающее тестирование
для сложных КП невозможно, большое
значение имеют уточнение областей
варьирования тестовых данных и
выделение областей их изменения,
наиболее важных для последующего
использования программ
Стрессовое
тестирование (в критических ситуациях)
базируется на классификации областей
определения исходных данных и
использует граничные или экстремальные
значения параметров и условий. Комбинация
критических значений и условий
испытаний в большинстве случаев очень
разнообразна, и необходим тщательный
анализ для выделения достаточно
представительной выборки. Кроме того,
при стрессовых испытаниях должно
быть показано, что при изменении
исходных данных за допустимыми
пределами эти ситуации обнаруживаются,
селектируются и выдается диагностика
о нарушении ограничений на условии
эксплуатации программ.
Тестирование
использования ресурсов ЭВМ комплексом
программ в значительной степени является
стрессовым тестированием. При этом
внимание сосредоточивается на
исследовании зависимости объема памяти
и длительности решения задач от
характеристик исходной информации.
Определяются допустимые размерность
задач и интенсивности потоков
исходных данных, при которых возможно
нормальное функционирование КП на
данной ЭВМ
Тестирование
параллельного решения задач в
многомашинных или многопроцессорных
вычислительных комплексах состоит
в испытаниях взаимодействия программ
и данных при одновременном исполнений
компонент КП. Эти испытания можно
разделить на две части при детерминированных
запланированных ситуациях и при
случайном нормальном функционировании
программ. В первом случае основная
проблема состоит в создании
представительного многообразия
ситуаций параллельного функционирования
программ. Вторая часть тестирования
может совмещаться с остальными видами
испытаний и заключается в основном в
выделении случайных тестов и условий,
при которых проверяется недетерминированное
параллельное исполнение программ.
-
Испытания
программ на надежность: прямые
экспериментальные методы определения
показателей надежности программ в
условиях нормального функционирования,
форсированные методы испытаний реальных
систем на надежность.
Особенности
испытаний на надежность программ. В
теории надежности разработан ряд
методов, позволяющих определять
характеристики надежности сложных
систем: прямые экспериментальные методы
определения показателей надежности
систем в условиях нормального
функционирования и форсированные
методы испытаний реальных систем на
надежность.
Прямые
экспериментальные методы определения
показателей надежности программ в
нормальных условиях функционирования
в ряде случаев весьма трудно использовать
при испытаниях из-за большого времени
наработки на отказ (десятки и сотни
часов). Сложность выявления и
регистрации редких отказов, а также
высокая стоимость экспериментов при
длительном функционировании сложных
КП приводят к тому, что на испытаниях
получаются малые выборки зарегистрированных
отказов. Кроме того, при таких
экспериментах трудно гарантировать
представительность выборки исходных
данных, так как режимы эксплуатации
определяются конкретными условиями
использования данного КП на испытаниях.
При испытаниях
КП на надежность функционирования
необходимо разделять причины отказов
и отказовых ситуаций на обусловленные
ненадежностью аппаратуры и ошибками
в программах. Для диагностики и
локализации причин отказа обычно
требуется дополнительное тестирование,
которое позволяет либо выделить
первичную ошибку в программе, либо
отнести источник отказа к сбою в
аппаратуре.
На этапе испытаний
целесообразно устранять в программах
локализованные ошибки. Вследствие
этого характеристики надежности КП
в среднем улучшаются, однако возможны
изменения программы, которые их
ухудшают. Изменения показателей
надежности необходимо связывать во
времени с моментами корректировки
программ. Анализируя связь между
значениями надежности и процессом
изменения программ, можно выявить
корректировки, которые содержат ошибки
и ухудшают надежность.
Получающиеся при
этом показатели надежности позволяют
прогнозировать число ошибок, подлежащих
исправлению для достижения заданной
надежности. Для этого используются
математические модели изменения ошибок
и основных показателей надежности в
зависимости от длительности тестирования.
При высокой надежности КП организуются
многочасовые прогоны реального
функционирования программ в условиях
широкого варьирования исходных данных.
Такие прогоны позволяют измерить и
зафиксировать достигнутое показатели
надежности и степень их соответствия
требованиям технического задания, а
также закрепить их в технических
условиях на КП.
Форсированные
методы испытаний реальных систем
на надежность осуществляются путем
тестирования КП при повышенной
интенсивности искажений исходных
данных с широким варьированием их
значений, а также специальным увеличением
загрузки КП выше нормальной. Планирование
форсированных испытаний должно
предусматривать последующий пересчет
полученных показателей надежности на
условия нормального функционирования.
Для этого необходимо изучать надежность
испытываемых программ в зависимости
от интенсивности искажений данных или
от характеристик перегрузки ЭВМ и
способы пересчета получаемых показателей
на нормальные условия эксплуатации.
Особым видом
форсированных испытаний является
тестирование эффективности средств
контроля и восстановления программ,
данных и вычислительного процесса. Для
этого имитируются запланированные
экстремальные условия функционирования
программ, при которых в наибольшей
степени вызываются средства программного
рестарта. При таких испытаниях основная
задача состоит в проверке качества
функционирования средств повышения
надежности, а оценка интегральных
показателей надежности отходит на
второй план.
-
Достоверность
испытаний: методическая и статистическая
достоверность; документирование
результатов испытаний: исходных и
отчетные документы при испытаниях
программ – техническое задание,
государственные и отраслевые стандарты,
программа испытаний, методики испытаний,
протоколы испытаний, акт испытаний.
Достоверность
испытаний – организация испытаний
таким образом, чтобы результатам можно
было доверять.
Методическая
достоверность испытаний КП определяется
следующими факторами:
-полнотой программы
испытаний, корректностью методик
тестирования, степенью охвата
возможных условий функционирования
и областей изменения исходных данных
программ;
-достоверностью
и точностью эталонных значений, с
которыми сравниваются результаты
тестирования испытываемой программы
или которые служат опорными при расчете
параметров, зафиксированных в техническом
задании;
-адекватностью и
точностью моделей, используемых для
имитации внешней среды и их реакции
на управляющие воздействия;
-точностью и
корректностью регистрации и обработки
результатов тестирования, а также
сравнения полученных данных с требованиями
технического задания.
Статистическая
достоверность испытаний в значительной
степени ограничена допустимым объемом
и продолжительностью испытаний.
Методы теории планирования экспериментов
позволяют упорядоченно варьировать
исходные данные и наиболее эффективно
использовать ограниченные ресурсы
тестирования. При планировании
испытаний большое значение имеют
характеристики средств автоматизации,
используемых для имитации внешней
среды и обработки результатов.
Противоречия между необходимой степенью
достоверности тестирования и объемом
анализируемых данных при различных
видах испытаний привели к созданию
системы автоматизации испытаний
различной сложности и глубины
проверок.
Документы:
-
ТЗ
Техническое
задание представляет собой документ,
в котором сформулированы основные цели
разработки, требования к программному
продукту, определены сроки и этапы
разработки и регламентирован процесс
приемно-сдаточных испытаний. В
разработке технического задания
участвуют как представители заказчика,
так и представители исполнителя. В
основе этого документа лежат исходные
требования заказчика, анализ передовых
достижений техники, результаты
выполнения научно-исследовательских
работ, предпроектных исследований,
научного прогнозирования и т. п.
-
Государственные
и отраслевые стандарты -
Программа испытаний
— это план проведения серии экспериментов.
Он разрабатывается с позиции минимизации
объема тестирования при заданной и
согласованной с заказчиком достоверности
получаемых результатов. Для этого
методами факторного анализа и теории
планирования экспериментов определяются
последовательность и объем каждого
тестирования в процессе проведения
испытаний для проверки выполнения
требований технического задания
при минимальных затратах. Особенно
сложно выбрать набор стрессовых
ситуаций функционирования системы,
при которых следует провести испытания.
Программа испытаний должна содержать
следующие четко сформулированные
разделы:
-объект испытаний,
его назначение и перечень основных
документов, определивших его
разработку;
-цель испытаний
с указанием основных требований
технического задания, подлежащих
проверке, и ограничений на проведение
испытаний,
-собственно
программу испытаний, содержащую проверку
комплектности спроектированного КП в
соответствии с техническим заданием
и план тестирования для проверки
функционирования программ по всем
разделам технического задания и
дополнительным требованиям,
формализованным отдельными решениями;
-методики испытаний,
однозначно определяющие все понятия
проверяемых характеристик, условия
тестирования, средства, используемые
для испытаний, методики обработки и
оценки результатов тестирования по
каждому разделу программы испытаний.
Результаты
испытаний фиксируются в протоколах,
которые обычно содержат следующие
разделы:
-назначение
тестирования и раздел требований
технического задания, по которому
проводится испытание;
-указание методик,
в соответствии с которыми проводились
испытания, обработка и оценка результатов;
-условия проведения
тестирования и характеристика исходных
данных;
-обобщенные
результаты испытаний с оценкой их на
соответствие требованиям технического
задания и другим руководящим документам;
-выводы о результатах
испытаний и степени соответствия
созданного КП определенному разделу
требований технического задания.
Протоколы по всей
программе испытаний обобщаются в акте,
в результате чего делается заключение
о соответствии системы требованиям
заказчика и о завершении работы с
положительным или отрицательным
итогом. При полном выполнении всех
требований технического задания
заказчик обязан принять систему и
работа считается завершенной.
Однако, как уже
отмечалось, для сложных КП трудно на
начальных этапах проектирования
предусмотреть и корректно сформулировать
все требования технического задания.
Поэтому при отладке и испытаниях часто
выявляется, что некоторые требования
технического задания оказываются
невыполненными и иногда даже принципиально
не могут быть выполнены при самом
добросовестном отношении к этому со
стороны разработчика. В этом случае
необходима совместная работа заказчика
и разработчика в поисках компромиссного
решения при завершении испытаний и
составлении заключения. Некоторые
недостатки КП в процессе испытаний
только регистрируются и фиксируются
в плане устранения замечаний комиссии,
проводившей испытания. Этот план
является приложением к акту о результатах
испытаний и позволяет отделять
последующие доработки от непосредственных
испытаний.
-
Виды программной
документации: проектная и эксплуатационная
документация. Документирование
интерактивного ПО. Государственные
стандарты в области документирования
ПО. Средства автоматизации документирования.
К программным
относят документы, содержащие сведения,
необходимые для разработки, сопровождения
и эксплуатации программного
обеспечения. Документирование
программного обеспечения осуществляется
в соответствии с Единой системой
программной документации (ГОСТ 19.XXX).
Так ГОСТ 19.101-77 устанавливает виды
программных документов для программного
обеспечения различных типов. Ниже
перечислены основные программные
документы по этому стандарту и указано,
какую информацию они должны содержать.
Спецификация
должна содержать перечень и краткое
описание назначения всех файлов
программного обеспечения, в том числе
и файлов документации на него, и является
обязательной для программных систем,
а также их компонентов, имеющих
самостоятельное применение.
Ведомость
держателей подлинников (код вида
документа — 05) должна содержать список
предприятий, на которых хранятся
подлинники программных документов.
Необходимость этого документа
определяется на этапе разработки и
утверждения технического задания
только для программного обеспечения
со сложной архитектурой.
Текст программы
(код вида документа — 12) должен содержать
текст программы с необходимыми
комментариями. Необходимость этого
документа определяется на этапе
разработки и утверждения технического
задания.
Описание
программы
(код вида документа — 13) должно содержать
сведения о логической структуре и
функционировании программы, Необходимость
данного документа также определяется
на этапе разработки и утверждения
технического задания.
Ведомость
эксплуатационных документов
(код вида документа — 20) должна содержать
перечень эксплуатационных документов
на программу, к которым относятся
документы с кодами: 30, 31, 32, 33, 34, 35, 46.
Необходимость этого документа также
определяется на этапе разработки и
утверждения технического задания.
Формуляр
(код вида документа — 30) должен содержать
основные характеристики программного
обеспечения, комплектность и сведения
об эксплуатации программы.
Описание
применения
(код вида документа — 31) должно содержать
сведения о назначении программного
обеспечения, области применения,
применяемых методах, классе решаемых
задач, ограничениях для применения,
минимальной конфигурации технических
средств.
Руководство
системного программиста
(код вида документа — 32) должно содержать
сведения для проверки, обеспечения
функционирования и настройки программы
на условия конкретного применения.
Руководство
программиста
(код вида документа — 33) должно содержать
сведения для эксплуатации программного
обеспечения.
Руководство
оператора
(код вида документа — 34) должно содержать
сведения для обеспечения процедуры
общения оператора с вычислительной
системой в процессе выполнения
программного обеспечения.
Описание языка
(код вида документа — 35) должно содержать
описание синтаксиса и семантики языка.
Руководство по
техническому обслуживанию
(код вида документа — 46) должно содержать
сведения для применения тестовых и
диагностических программ при обслуживании
технических средств.
Программа и
методика испытаний
(код вида документа — 51) должны содержать
требования, подлежащие проверке при
испытании программного обеспечения,
а также порядок и методы их контроля.
Пояснительная
записка
(код вида документа -81) должна содержать
информацию о структуре и конкретных
компонентах программного обеспечения,
в том числе схемы алгоритмов, их общее
описание, а также обоснование принятых
технических и технико-экономических
решений. Составляется на стадии
эскизного и технического проекта.
Прочие документы
(коды вида документа — 90-99) могут
составляться на любых стадиях
разработки, т. е. на стадиях эскизного,
технического и рабочего проектов.
Допускается объединять отдельные
виды эксплуатационных документов,
кроме формуляра и ведомости. Необходимость
объединения указывается в техническом
задании, а имя берут у одного из
объединяемых документов.
-
Планирование
и организация разработки программных
систем: принципы планирования разработки,
принципы организации коллектива
программистов и распределения работ
по специалистам; методы бригадной
организации работ: бригада независимых
программистов, демократическая бригада,
бригада главного программиста; права
и обязанности членов бригад, организация
их взаимодействия, управление бригадой
на различных этапах проектирования.
На
этапе планирования разработки ПО
создаются планы и выбираются стандарты,
которые направляют этап разработки и
интегрированный этап. Его
целью
является определение средств для
создания ПО, которое будет удовлетворять
требования, предъявляемые к нему и
обеспечивать достаточный уровень
надежности. На этом этапе производиться:
1)
определение действий на этапах разработки
и интегрированном этапе, которые будут
посвящены определению системных
требований и уровня ПО;
2)
определение ЖЦ ПО, включая взаимодействие
между этапами, механизм взаимного
влияния этапов, критерии оценки ПО при
переходе от одного этапа к другому;
3)определение
среды ЖЦ, т.е. методы и инструментальные
средства, используемые на каждом этапе;
4)
формирование дополнительных замечаний
к ПО;
5)
рассмотрение стандартов разработки
ПО, соотношение их с системными целями
безопасности, относящиеся к разрабатываемому
ПО;
6)
разработка плана создания ПО;
7)
доработка и проверка плана создания
ПО.
Организация
коллективов для создания комплексов
программ. Никакая, даже очень
квалифицированная, небольшая бригада
специалистов не может сделать в разумные
сроки сложный КП объемом порядка 100
тыс. команд. В такой разработке
обязательно принимают участие
несколько десятков специалистов
различной квалификации и специализации.
Отсюда возникает задача организации
коллектива, координации его деятельности
и объединения индивидуальных усилий
для создания очень сложного изделия.
Организация коллектива и распределение
работ по специалистам могут производиться
по нескольким принципам:
-на основе
распределения системного анализа
(алгоритмизации) и разработки программ
по разным коллективам;
-по принципу
выделения коллективов, создающих всю
совокупность программных модулей,
и группы специалистов, объединяющих
программы в единый комплекс;
-по принципу
распределения достаточно сложных
законченных функциональных задач по
группам специалистов, осуществляющим
их полную разработку, и последующего
объединения функциональных задач
специальной группой ведущих
«комплексников».
Попытки полностью
разделить между двумя коллективами
специалистов функции непосредственного
программирования и функции постановки
задач и создания алгоритмов оказались
неудачными. При такой организации работ
невозможно определить ответственных
за законченные компоненты и возникают
многочисленные неразрешимые конфликты
при создании сложных КП. Эти конфликты
порождаются объективными трудностями
точной формализации алгоритмов со
стороны алгоритмистов и невозможностью
достаточно полной отладки программ
программистами без глубокого знания
содержания соответствующих
функциональных задач и алгоритмов. В
результате увеличивается длительность
работ и требуется множество документов
для взаимодействия алгоритмистов и
программистов.
Значительно более
продуктивными оказались методы
бригадной организации работ, когда
в бригаду входят и алгоритмисты, и
программисты. Такая бригада во главе
с алгоритмистом высокой квалификации
создает законченное, отлаженное изделие
и группу программ, выполняющую достаточно
автономные функции в системе. Подобная
группа может быть всесторонне проверена
и испытана руководителями проекта и
ответственным за нее является руководитель
бригады. Декомпозиция КП позволяет
специализировать бригады и отдельных
сотрудников в коллективе на нескольких
классах задач и квалифицированно решать
эти частные задачи. Тем самым обеспечивается
тематическая однородность специальных
знаний членов бригады, единство их
обучения и повышения квалификации в
области решаемых функциональных
задач. Целесообразно четко определять
ответственность каждого руководителя
за часть КП и обеспечивать его
минимально необходимой информацией
для управления процессом разработки.
Одним из вариантов
организационной структуры коллектива
при создании крупных КП является
иерархическая структура, базирующаяся
на группах специалистов, каждая из
которых составляет специализированную,
так называемую «хирургическую бригаду».
Такая бригада решает достаточно
автономную функциональную задачу
и должна разработать и отладить группу
взаимодействующих программ с
достаточно четкой целью функционирования.
«Хирургическая бригада» рекомендуется
в составе 7…10 специалистов с различными
задачами и квалификацией. Во главе
бригады стоит «хирург», который
разрабатывает функциональные задачи
программ, составляет алгоритм, пишет
и отлаживает программы, готовит и
проверяет документацию. Он должен
обладать значительным системным
опытом, высокой математической и
программистской квалификацией и
талантом разработки и отладки сложных
КП. «Второй пилот» является дублером
и может выполнить любую часть работы,
но менее опытен. Он принимает участие
в разработке, обсуждении и оценке
компонент, создаваемых бригадой, в
качестве оппонента или ответчика по
альтернативным решениям, а также несет
ответственность за взаимодействие
с другими бригадами и с разрабатываемыми
ими группами программ.
«Администратор»
позволяет избавить «хирурга» от
множества технических и административных
функций как внутри бригады, так и по
взаимодействию с администрацией всей
организации. При этом «хирургу»
принадлежит определяющее слово по
важнейшим вопросам организации и
проведения работ. «Редактор» критикует
документацию, созданную «хирургом»,
дорабатывает ее, снабжает ссылками и
наблюдает за ее публикацией. «Адвокат
языка» обеспечивает «хирурга»
консультациями по применению языка в
трудных или запутанных ситуациях,
способствует получению более
эффективных программ. «Инструментальщик»
— опытный системный программист —
является создателем специализированных
технологических и служебных программ,
каталогизированных процедур,
библиотек макрокоманд для расширения
функций технологического обеспечения
по заказу «хирурга». «Наладчик»
разрабатывает системные тесты в
соответствии с назначением и функциями
создаваемой группы программ. Он планирует
последовательность тестирования,
подготавливает имитаторы исходных
данных для комплексной отладки,
регистрирует процесс проведения
отладки и ее результаты. Кроме того, в
бригаду входят 2…3 технических работника
для выполнения секретарских функций
и различных вспомогательных технических
работ.
В другом варианте
организации бригады основные функции
программирования возлагаются на
нескольких специалистов средней
квалификации, каждый из которых
разрабатывает несколько программ.
Руководитель бригады формулирует
функциональные задачи, создает общее
техническое задание, контролирует
и корректирует спецификации требований
на программы, определяет состав тестов
для проверки программ. Детальную
разработку принципов решения задач и
алгоритмов каждой программы ведут сами
программисты под контролем бригадира.
В этом случае руководитель бригады или
совершенно не разрабатывает программ,
или создает только управляющие и
связывающие программы для группы,
создаваемой бригадой. На него ложится
основная «тяжесть» комплексной отладки
взаимодействия программ, разработанных
различными членами бригады. Один
наиболее опытный член бригады должен
быть дублером руководителя бригады.
Он может быть менее квалифицированным
в части методов решения функциональных
задач, однако должен обеспечивать
возможность замены руководителя при
комплексной отладке.
Для сложных ПС, в
создании которых участвуют десятки
специалистов, необходимо провести
четкое различие между архитектурой
КП и реализацией проекта в целом, а
также его составных частей.
«Системный архитектор» должен
специальными методами обучения
коллектива обеспечивать функциональное,
структурное и технологическое единство
проекта КП. Руководители, ответственные
за функциональные группы программ,
объединяют усилия бригад и обеспечивают
их взаимодействие по функциональному
и информационному сопряжению компонент,
созданных различными бригадами. Таким
образом, иерархическая структура
коллектива в верхних ярусах должна
соответствовать иерархической
структуре создаваемого КП, хотя следует
учитывать и обратное влияние структуры
коллектива на структуру КП.
Индустриальная
технология разработки сложных КП
позволяет снизить требования к
творческому уровню и профессиональной
квалификации основной массы специалистов,
тем не менее усложнение программ и
увеличение их объема еще больше повышают
роль системных программистов высшего
класса. Создание больших КП невозможно
обеспечить специалистами только
высшего класса, поэтому увеличение
количества разрабатываемых ПС при
одновременном возрастании их сложности
неуклонно повышают значение
автоматизированной технологии
проектирования программ.
-
Внедрение и
эксплуатация ПО, процесс сопровождения:
модификация, усовершенствование и
коррекция ПО; планирование и организация
сопровождения, методы конфигурационного
управления; тиражирование и использование
версий программ, методы сертификации
ПО.
Во время фазы
эксплуатации и сопровождения начинается
практическое использование
программного изделия.
Сопровождение
программного обеспечения связано с
внесением изменений в течение всего
времени использования программного
изделия. К причинам, определяющим
необходимость внесения изменений
в изделии, относятся:
• наличие ошибок
в используемом программном продукте;
• изменение
требований пользователя (расширение
или модификация);
• появление более
совершенных общесистемных программных
средств или технических устройств;
• изменение
организационной структуры, условий и
методов работы пользователя.
Первая причина
связана с качеством программного
изделия; остальные обусловлены, как
правило, длительным процессом
эксплуатации. Конечной целью любых
изменений является совершенствование
программного изделия: повышение его
корректности, надежности и
функциональной полезности. Однако
внесение изменений в программное
изделие может породить новые ошибки,
поэтому требуется жесткая регламентация
всех процессов внесения изменений.
В первую очередь
должны быть определены процедуры для
модификации программного изделия,
так как основной удельный вес работ по
сопровождению обусловлен изменениями,
связанными с модернизацией изделия
(расширение или улучшение функциональных
возможностей) и с адаптацией к условиям
конкретного пользователя. Эти
изменения требуют порядка восьмидесяти
процентов всех усилий, затрачиваемых
на сопровождение, и только около двадцати
процентов усилий тратится на корректировку
программ, выдающих неверные результаты.
В зависимости от
сложности программного изделия и числа
пользователей, сопровождение может
осуществляться в тесной увязке с группой
разработки изделия, т.е. сопровождение
поручается программистам-разработчикам.
В последнее время используется другая
схема. После гарантийного периода
сопровождение может быть передано от
разработчика к организации (или
специальному подразделению), которая
специально занимается сопровождением,
т.е. для каждого программного изделия,
находящегося в практическом
использовании, имеется организация,
ответственная за его сопровождение.
Задачи службы
сопровождения программного изделия
В процессе
эксплуатации программного изделия
пользователи взаимодействуют с
организацией (группой), ответственной
за сопровождение. Задачами службы
сопровождения являются:
1. Сбор и анализ
поступающих от пользователей сведений
об обнаруженных ошибках, замечаний и
предложений по совершенствованию
и изменению программного изделия.
2. Исправление
ошибок в программах, выдающих результаты,
не отвечающие установленным требованиям,
и внесение соответствующих изменений
в документацию.
3. Модернизация
программного изделия путем расширения
функциональных возможностей или
улучшения эксплуатационных характеристик
программного изделия.
4. Внесение изменений
в программы с целью их приспособления
к условиям работы конкретного
пользователя.
5. Контроль
правильности всех корректировок,
вносимых в изделие, и проверка
качества измененных программ.
6. Доведение до
пользователя информации о внесенных
изменениях.
7. Обучение и
постоянные консультации пользователя
с целью повышения эффективности
использования программного изделия.
Порядок внесения
изменений строго регламентирован.
Обычно в службе сопровождения хранится
подлинник программного изделия с
тестовыми данными, на основе которых
проводились его испытания. С подлинника
копируется дубликат, а пользователям
направляются копии с дубликата.
Все претензии
пользователей к программному изделию
рассматриваются как ошибки, которые
регистрируются, и после анализа
сопровождающих материалов (обычно это
данные, при которых произошла ошибка,
распечатки результатов и т.д.) определяется
уровень серьезности ошибки. Изменения,
связанные с ошибками, могут привести
к серьезным финансовым или юридическим
последствиям для организации-разработчика,
поэтому решения об изменениях могут
приниматься на уровне руководства
организации. Вместе с тем часть
претензий может возникать из-за
неправильной эксплуатации изделия,
низкой квалификации пользователя,
из-за ошибок в пользовательской
копии. Поэтому прежде всего проверяется
достоверность появления такой ошибки
на эталонном варианте изделия с
данными, представленными пользователем.
При отсутствии ошибки тестируется
копия пользователя, и, если ошибка не
появляется, она снимается с учета в
группе сопровождения, о чем делается
сообщение пользователю- Для принятых
предложений по корректировке
составляется план работ по внесению
изменений и определяются ресурсы
для их выполнения.
Какие существуют методы анализа и локализации ошибки
Под тестированием следует понимать процесс исполнения программы с целью обнаружения ошибок, в качестве которых принимается любое отклонение от эталонов. Хорошим считается тест, который имеет высокую вероятность обнаружения еще не выявленных ошибок.
Под отладкой понимается процесс, позволяющий получить программу, функционирующую с требуемыми характеристиками в заданной области входных данных. Таким образом, в результате отладки программа должна соответствовать некоторой фиксированной совокупности правил и показателей качества, принимаемой за эталонную для данной программы.
Существует три основных способа тестирования:
Алгоритмическое тестирование применяется для контроля этапов алгоритмизации и программирования. Проектируются тесты и начинаются готовиться эталонные результаты на этапе алгоритмизации, а используются они на этапе отладки.
Функциональное или аналитическое тестирование
Аналитическое тестирование служит для контроля выбранного метода решения задачи, правильности его работы в выбранных режимах и с установленными диапазонами данных. Тесты проектируют и начинают готовить сразу после выбора метода, а используют их на последнем этапе отладки, в ходе тестирования, наряду со сверкой на совпадение, применяются и качественные оценки результатов.
Содержательное тестирование служит для проверки правильности постановки задачи. Для контроля при этом используются, как правило, качественные оценки и статистические характеристики программы, физический смысл полученных результатов и т.п. в проведении содержательного тестирования, принципы которого формулируются в техническом задании, самое активное участие должны принимать заказчики или идущие пользователи программы.
Содержательные и аналитические тесты проверяют правильность работы программы в целом или крупных ее частей, в то время как алгоритмические тесты в первую очередь должны проверять работу отдельных блоков или операторов программы.
Тот вид контроля, который рассматривался выше, можно назвать тестированием основных функциональных возможностей программы — основной тест.
Этот тест затрагивает работу программы в самой минимальной степени. Обычно тест служит для проверки правильности выполнения самых внешних функций программы, например, обращения к ней и выхода из нее.
Тест граничных значений
Тест проверяет работу программы для граничных значений параметров, определяющих вычислительный процесс. Часто для граничных значений параметра работа программы носит особый характер, который, тем самым, требует и особого контроля.
Тест проверяет реакцию программы на возникновение разного рода аварийных ситуаций в программе, в частности, вызванных неправильными исходными данными. Другими словами, проверяется диагностика, выдаваемая программой, а также окончание ее работы или, может быть, попытка исправления неверных исходных данных.
Локализация ошибок
После того, как с помощью тестов (или каким либо другим путем) установлено, что в программе или в конкретном ее блоке имеется ошибка, возникает задача ее локализации, то есть установления точного места в программе, где находится ошибка.
Процесс локализации ошибок состоит из следующих трех компонент:
Получение на машине тестовых результатов.
Анализ тестовых результатов и сверка их с эталонными.
Выявление ошибки или формулировка предположения о характере и месте ошибки в программе.
Технология отладки автоматизированного рабочего места
При отладке программы использовались следующие методы контроля и локализации ошибок: просмотр текста программы с целью обнаружения явных синтаксических и логических ошибок и трансляция программы (транслятор выдает сообщения об обнаруженных им ошибках в тексте программы).
Тестирование проводилось посредством ввода исходных данных, с дальнейшей их обработкой, выводом результатов на экран. Результаты работы программы сравнивались с требованиями в техническом задании.
1) Отладка программы производилась следующим образом:
2) Запуск программы с набором тестовых входных данных и выявление наличия ошибок.
3) Выделение области программы, в которой может находиться ошибка.
4) Просмотр листинга программы с целью возможного визуального обнаружения ошибок. В противном случае — установка контрольной точки примерно в середине выделенной области.
Новая прогонка программы. Если работа программы прервалась до обработки контрольной точки, значит, ошибка произошла раньше. Контрольная точка переносится, и процесс отладки возвращается к шагу 2.
Если контрольная точка программы была обработана, то далее следует изучение значений стека, переменных и параметров программы с тем, чтобы убедиться в их правильности. При появлении ошибки — новый перенос контрольной точки и возврат к шагу 2.
В случае если ошибка не была обнаружена, далее выполнение программы производится покомандно, с контролем правильности выполнения переходов и содержимого регистров и памяти в контрольных точках. При локализации ошибки, она исправляется, и процесс возвращается к шагу 1.
В данном разделе были рассмотрены вопросы разработки, отладки и тестирования программных продуктов. Было приведено обоснование необходимости и важности этапа отладки в процессе разработки программного обеспечения, даны краткие описания основных способов отладки и тестирования.
В отношении разработанной в специальной части программы было дано описание алгоритма, использовавшегося при ее отладки и тестировании. Представлено обоснование выбора языка программирования.
7. Локализация ошибок
После того, как с помощью контрольных тестов (или каким либо другим путем) установлено, что в программе или в конкретном ее блоке имеется ошибка, возникает задача ее локализации, то есть установления точного места в программе, где находится ошибка.
Процесс локализации ошибок состоит из следующих трех компонент:
1. Получение на машине тестовых результатов.
2. Анализ тестовых результатов и сверка их с эталонными.
3. Выявление ошибки или формулировка предположения о характере и месте ошибки в программе.
По принципам работы средства локализации разделяются на 4 типа :
1. Аварийная печать.
2. Печать в узлах.
АВАРИЙНАЯ ПЕЧАТЬ осуществляется один раз при работе отлаживаемой программы, в момент возникновения аварийной ситуации в программе, препятствующей ее нормальному выполнению. Тем самым, конкретное место включения в работу аварийной печати определяется автоматически без использования информации от программиста, который должен только определить список выдаваемых на печать переменных.
ПЕЧАТЬ В УЗЛАХ включается в работу в выбранных программистом местах программы; после осуществления печати значений данных переменных продолжается выполнение отлаживаемой программы.
СЛЕЖЕНИЕ производится или по всей программе, или на заданном программистом участке. Причем слежение может осуществляться как за переменными (арифметическое слежение), так и за операторами (логическое слежение). Если обнаруживается, что происходит присваивание заданной переменной или выполнение оператора с заданной меткой, то производится печать имени переменной или метки и выполнение программы продолжается. Отличием от печати в узлах является то, что место печати может точно и не определяться программистом (для арифметического слежения); отличается также и содержание печати.
ПРОКРУТКА производится на заданных участках программы, и после выполнения каждого оператора заданного типа (например, присваивания или помеченного) происходит отладочная печать.
По типам печатаемых значений (числовые и текстовые или меточные) средства разделяются на арифметические и логические.
7.2. Классификация средств локализации ошибок
Ниже дана классификация средств локализации.
ТИПЫ СРЕДСТВ ЛОКАЛИЗАЦИИ ОШИБОК :
СРЕДСТВА ЛОКАЛИЗАЦИИ:
1. Аварийная печать (арифметическая).
1.1. Специальные средства языка.
1.2. Системные средства.
2. Печать в узлах (арифметическая).
2.1. Обычные средства языка.
2.2. Специальные средства языка.
3. Слежение (специальные средства).
4. Прокрутка (специальные средства).
8. Технология отладки программы автоматизации учета движения товаров на складе малого предприятия
При отладке программы использовались следующие методы контроля и локализации ошибок (обзор методов см. в теоретической части раздела) :
1. Просмотр текста программы и прокрутка с целью обнаружения явных синтаксических и логических ошибок.
2. Трансляция программы (транслятор выдает сообщения об обнаруженных им ошибках в тексте программы).
3. Тестирование. Тестирование проводилось посредством ввода исходных данных, с дальнейшей их обработкой, выводом результатов на печать и экран. Результаты работы программы сравнивались заданными в техническом задании.
4. При локализации ошибок преимущественно использовалась печать в узлах, которыми являлись в основном глобальные переменные, переменные, используемые при обмене данными основной программы с подпрограммами.
Отладка программы производилась по следующему алгоритму :
1. Прогонка программы с набором тестовых входных данных и выявление наличия ошибок.
2. Выделение области программы, в которой может находиться ошибка. Просмотр листинга программы с целью возможного визуального обнаружения ошибок. В противном случае — установка контрольной точки примерно в середине выделенной области.
3. Новая прогонка программы. Если работа программы прервалась до обработки контрольной точки, значит, ошибка произошла раньше. Контрольная точка переносится, и процесс отладки возвращается к шагу 2.
4. Если контрольная точка программы была обработана, то далее следует изучение значений регистров, переменных и параметров программы с тем, чтобы убедиться в их правильности. При появлении ошибки — новый перенос контрольной точки и возврат к шагу 2.
5. В случае не обнаружения ошибки продолжение выполнения программы покомандно, с контролем правильности выполнения переходов и содержимого регистров и памяти в контрольных точках. При локализации ошибки она исправляется и процесс возвращается к шагу 1.
В качестве тестовых входных данных использовалась последовательность частотных выборок, генерируемых имитатором в режиме 1. (Каждому интервалу соответствует фиксированное значение выборок.)
Итоговый тест по дисциплине «Поддержка и тестирование программных модулей»
Является ли программа аналогом математической формулы?
Варианты ответов
- Да
- Нет
- Математические формулы и программы не сводятся друг к другу
Вопрос 2
Какие подходы используются для обоснования истинности программ?
Варианты ответов
- использование аналогий
- эксперимент над программой
- доказательство программы
- формальный и интерпретационный
Вопрос 3
Отметьте верные утверждения
Варианты ответов
- тестирование – процесс поиска ошибок
- в фазу тестирования входят поиски и исправление ошибок
- отладка – процесс локализации и исправления ошибок
Вопрос 4
Зачем нужна спецификация тестирования?
Варианты ответов
- для формирования команды тестировщиков
- для разработки тестового набора
- для понимания смысла программы
Вопрос 5
Варианты ответов
- выполнение программы в уме
- пошаговое выполнение
- метод контрольных точек и анализа трасс
Вопрос 6
Зачем нужен Log-файл?
Варианты ответов
- для изучения результатов тестирования в режиме on-line
- для фиксации результатов прогона test-suite
- для записи комментариев после прогона тестов
Вопрос 7
Варианты ответов
- разработка тестового набора
- прогон программы на тестовом наборе
- доказательство правильности программы
- анализ результатов тестирования
Вопрос 8
Варианты ответов
- определение областей эквивалентности входных параметров
- анализ покрытия тестами всех возможных случаев поведения
- проверка граничных значений
Вопрос 9
Что такое управляющий граф программы (УГП)?
Варианты ответов
- множество операторов программы.
- граф, вершины которого кодируют операторы программы, а дуги — управления (порядок исполнения) операторов
- множество операторов управления
Вопрос 10
Варианты ответов
- множество связанных дуг УГП
- последовательность вершин и дуг УГП с фиксированными начальной и конечной вершиной
- последовательность ветвей УГП с фиксированными начальной вершиной первой ветви и конечной вершиной последней ветви пути
Вопрос 11
Варианты ответов
- нереализуемый путь недоступен при корректном исполнении программы
- нереализуемый путь недоступен всегда
- нереализуемый путь доступен при сбое
- нереализуемый путь доступен при реализации недопустимых состояний переменных программы
Вопрос 12
Возможно ли тестирование программы на всех допустимых значениях параметров?
Варианты ответов
- да, всегда
- никогда
- возможно в отдельных случаях
Вопрос 13
Какие предъявляются требования к идеальному критерию тестирования?
Варианты ответов
- достаточность
- достижимость
- полнота
- проверяемость
Вопрос 14
Какие классы критериев тестируемости известны
Варианты ответов
- структурные критерии
- мутационные критерии
- функциональные критерии
- сценарные критерии
- стохастические критерии
Вопрос 15
Варианты ответов
- сценарный критерий
- такого критерия не существует
- критерий «черного ящика»
Вопрос 16
Варианты ответов
- критерий тестирования команд
- критерий тестирования ветвей
- критерий тестирования циклов
- критерий тестирования путей
Вопрос 17
Варианты ответов
- не проверяется соответствие со спецификацией
- не проверяется соответствие со спецификацией, не зафиксированное в структуре программы
- не проверяются ошибки в структурах данных
Вопрос 18
Варианты ответов
- тестирование пунктов спецификации
- тестирование классов входных данных
- тестирование классов выходных данных
- тестирование функций
- тестирование правил
Вопрос 19
Варианты ответов
- не проверяется соответствие со спецификацией
- не проверяются ошибки, требования к которым не зафиксированы в спецификации
- не проверяются ошибки в структурах данных, требования к которым не зафиксированы в спецификации
Вопрос 20
Варианты ответов
- создание программ-мутантов на основе изменения модульной структуры основной программы
- создание программ-мутантов с функциональными дефектами
- оценка числа ошибок в программе на основе искусственно внесенных мелких ошибок
Вопрос 21
Варианты ответов
- оценка проекта интегрирует оценки оттестированности модулей
- оценка проекта может вычисляться инкрементально
- в результате получаем наихудшую оценку оттестированности
- в результате получаем наилучшую оценку оттестированности
Вопрос 22
Какие существуют разновидности уровней тестирования?
Варианты ответов
- модульное
- интеграционное
- структурное
- системное
- регрессионное
Вопрос 23
Какие задачи у модульного тестирования?
Варианты ответов
- выявление ошибок при вызове модулей
- выявление ошибок взаимодействия модуля с окружением
- выявление локальных ошибок реализации алгоритмов модулей
Вопрос 24
На основе каких принципов строятся тесты для модульного тестирования?
Варианты ответов
- анализ потоков управления модуля
- анализ потоков данных модуля
- анализ покрытия в соответствии с заданными структурными критериями
Вопрос 25
Варианты ответов
- построение УГП (управляющего графа программы)
- выбор тестовых путей
- генерация тестов, соответствующих выбранным тестовым путям
Вопрос 26
Варианты ответов
- статические
- динамические
- методы реализуемых путей
Вопрос 27
Варианты ответов
- Регрессионное тестирование
- монолитное тестирование
- нисходящее тестирование
- восходящее тестирование
Вопрос 28
Варианты ответов
- необходимость разработки заглушек
- параллельная разработка эффективных модулей
- необходимость разработки среды управления очередностью вызовов модулей
- необходимость разработки драйверов
Вопрос 29
Варианты ответов
- тесты оперируют пользовательским или другими внешними интерфейсами
- структура проекта тестируется на уровне подсистем
- тестированию подлежит система в целом
- тестирование осуществляется по методу «черного ящика»
Вопрос 30
Варианты ответов
- выявление дефектов в функционировании приложения или в работе с ним
- выявление дефектов использования ресурсов
- выявление несовместимости с окружением
- выявление непредусмотренных сценариев применения или использования непредусмотренных комбинаций данных
Вопрос 31
Варианты ответов
- перетестирование предусматривает только контроль частей приложения, связанных с изменениями
- выбор между полным и частичным перетестированием и пополнением тестовых наборов
- регрессионное тестирование является подмножеством системного тестирования
Вопрос 32
Какие типы дефектов выявляются при системном и регрессионном тестировании
Программные ошибки. Методы отладки
Прежде всего определимся с некоторыми понятиями, связанными с отладкой программного обеспечения.
Программная ошибка — это расхождение между программой и ее спецификацией, причем тогда и только тогда, когда спецификация существует и она правильна. Также можно определить, что программная ошибка — это ситуация, когда программа не делает того, что пользователь от нее вполне обоснованно ожидает.
Отладкой называют процесс локализации и исправления ошибок, обнаруженных при тестировании программного обеспечения.
Локализация — это определение оператора/операторов программы, выполнение которого вызвало нарушение вычислительного процесса.
Для исправления ошибки необходимо определить ее причину, т.е. определить оператор или фрагмент, содержащие ошибку. Причины ошибок могут быть и очевидными, и очень глубоко скрытыми.
В соответствии с этапом обработки, на котором появляются ошибки, различают ошибки компиляции, ошибки компоновки, ошибки выполнения (рис. 5.1) [7].
Рис. 5.1. Группы программных ошибок
Ошибки компиляции — это синтаксические ошибки, фиксируемые компилятором (транслятором, интерпретатором). Ошибки компиляции являются самыми простыми, так как синтаксис языка, как правило, строго формализован, и ошибки сопровождаются подробным комментарием с указанием местоположения ошибки. Чем лучше формализованы правила синтаксиса языка, тем больше ошибок из общего количества может обнаружить компилятор и, соответственно, меньше ошибок возникнет на следующих этапах.
Ошибки компоновки — ошибки, обнаруженные компоновщиком (редактором связей) при объединении модулей программы. Ошибки компоновки связаны с проблемами, обнаруженными при разрешении внешних ссылок. Например, предусмотрено обращение к подпрограмме другого модуля, а при объединении модулей данная подпрограмма не найдена или не стыкуются списки параметров.
Ошибки выполнения — ошибки, обнаруженные операционной системой, аппаратными средствами или пользователем при выполнении программы. Ошибки выполнения являются самыми непредсказуемыми. Некоторые из них обнаруживаются и документируются операционной системой. Они могут иметь разную природу и поэтому по-разному проявляться:
- • появление сообщения об ошибке, например, деление на ноль, нарушение адресации, переполнение разрядов и т.п.;
- • появление сообщения об ошибке, обнаруженной операционной системой, например при попытке записи на защищенные устройства памяти, при ссылке на отсутствующий файл и т.п.;
- • «зависание» компьютера (иногда для продолжения работы необходима его перезагрузка);
- • несовпадение полученных результатов с ожидаемыми.
Причины ошибок выполнения очень разнообразны, а потому их
сложно локализовать. Все возможные причины ошибок выполнения можно разделить на следующие группы:
- • ошибки определения данных;
- • логические ошибки;
- • ошибки накопления погрешностей.
Ошибки определения данных (неверное определение исходных данных) возникают при выполнении операций ввода-вывода: ошибки передачи, ошибки преобразования, ошибки перезаписи, ошибки данных. Использование специальных технических средств и программирование с защитой от ошибок позволяют обнаружить и предотвратить только часть этих ошибок.
Логические ошибки имеют разную природу и могут следовать из ошибок, допущенных при проектировании, например при выборе методов, разработке алгоритмов или определении структуры данных (классов), а могут быть непосредственно внесены при кодировании модуля. К ошибкам кодирования относятся:
- • ошибки некорректного использования переменных, например неудачный выбор типов данных, использование переменных до их инициализации, использование индексов, выходящих за границы определения массивов, нарушения соответствия типов данных и т.п.;
- • ошибки вычислений, например некорректная работа с переменными, некорректное преобразование типов данных в процессе вычислений и т.п.;
• ошибки взаимодействия модулей, т.е. межмодульного интерфейса, например нарушение типов и последовательности при передаче параметров, несоблюдение единства единиц измерения формальных и фактических параметров, нарушение области действия локальных и глобальных переменных.
Возможны и другие ошибки кодирования, например неправильная реализация логики программы при кодировании, игнорирование особенностей или ограничений конкретного языка программирования.
Ошибки накопления погрешностей возникают в результате накопления погрешностей результатов числовых вычислений, например при некорректном отбрасывании дробных цифр чисел, при некорректном использовании приближенных методов вычислений и т.п.
Процесс отладки требует от разработчика глубоких знаний специфики среды и языка программирования, используемых технических средств, операционной системы. На сложность отладки оказывают влияние следующие факторы:
- • опосредованное проявление ошибок;
- • возможность взаимного влияния ошибок;
- • возможность получения внешне одинаковых проявлений разных ошибок;
- • стохастические ошибки, которые могут не проявиться от запуска к запуску;
- • может аннулироваться или измениться внешнее проявление ошибок при внесении некоторых изменений в программу, например, при включении в программу диагностических фрагментов. Отладка программы всегда предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. Большинство ошибок можно обнаружить, тщательно анализируя текст программы и результаты тестирования.
Методы отладки программного обеспечения можно классифицировать следующим образом [7]:
- • метод ручного тестирования;
- • метод индукции;
- • метод дедукции;
- • метод обратного прослеживания.
Метод ручного тестирования — самый простой и естественный способ отладки программы. При обнаружении ошибки необходимо выполнить тестируемую программу вручную, используя тестовый набор, при работе с которыми была обнаружена ошибка. Метод эффективен, но не применим для больших программных систем и программ со сложными вычислениями. Этот метод часто используют как составную часть других методов отладки.
Метод индукции предусматривает подробный анализ проявления ошибки. Это могут быть неверные результаты вычислений или сообщение об ошибке. Если компьютер просто «зависает», то место проявления ошибки в программном обеспечении определяют исходя из последних полученных результатов и действий пользователя. Полученную таким образом информацию можно изучить, просматривая соответствующий фрагмент программы. В результате выдвигаются гипотезы об ошибках, которые затем проверяются. Если гипотеза верна, то детализируют информацию об ошибке, иначе — выдвигают другую гипотезу. Если в результате изучения данных никаких гипотез не появляется, то необходима дополнительная информация об ошибке.
Метод дедукции работает по следующему алгоритму. Сначала формируют множество причин, которые могли бы вызвать данное проявление ошибки. Затем, анализируя причины, исключают те, которые противоречат имеющимся данным. Если все причины исключены, то необходима дополнительная информация об ошибке и следует выполнить дополнительное тестирование исследуемого фрагмента. В противном случае наиболее вероятную гипотезу пытаются доказать. Если гипотеза объясняет полученные признаки ошибки, то ошибка найдена, иначе — проверяют следующую причину.
Метод обратного прослеживания используется для небольших программ и заключается в следующем. Определяется точка вывода неправильного результата. Затем строится гипотеза о значениях основных переменных, которые могли бы привести к получению этого результата. Исходя из этой гипотезы, делают предположения о значениях переменных в предыдущей точке. Процесс продолжают, пока не обнаружат причину ошибки.
Рассмотрим категории программных ошибок, которые встречаются наиболее часто.
Функциональные недостатки. Данные недостатки присущи программе, если она не делает того, что должна, выполняет одну из своих функций плохо или не полностью. Функции программы должны быть подробно описаны в ее спецификации, и именно на основе утвержденной спецификации тестировщик строит свою работу.
Недостатки пользовательского интерфейса. Лучше всего оценить удобство и правильность работы пользовательского интерфейса может только пользователь в процессе работы с ним. Проверить это возможно с помощью прототипа программного обеспечения, на котором проводятся обкатка и согласование всех требований к пользовательскому интерфейсу с дальнейшей фиксацией их в спецификации требований. После утверждения спецификации требований любые отклонения от нее или невыполнение последних являются ошибкой. Это в полной мере касается и пользовательского интерфейса.
Недостаточная производительность. При разработке некоторого программного продукта очень важной его характеристикой может оказаться скорость работы, иногда этот критерий задается в требованиях заказчика к программному обеспечению. Недопустимо, если программа не удовлетворяет заданным в спецификации требований характеристикам. Это уже ошибка, которая должна быть обязательно устранена.
Некорректная обработка ошибок. Правильно определив ошибку, программа должна выдать о ней сообщение. Отсутствие такого сообщения является ошибкой в работе программы.
Некорректная обработка граничных условий. Существует много различных граничных ситуаций. Любой аспект работы программы, к которому применимы понятия «больше» или «меньше», «раньше» или «позже», «первый» или «последний», «короче» или «длиннее», обязательно должен быть проверен на границах диапазона. Внутри диапазонов программа может работать правильно, а на их границах могут происходить неожиданные ситуации, которые, в свою очередь, приводят к ошибкам в работе программного обеспечения.
Ошибки вычислений. К ошибкам вычислений относятся ошибки, вызванные неправильным выбором алгоритма вычислений, неправильными формулами либо формулами, неприменимыми к обрабатываемым данным. Самыми распространенными среди ошибок вычислений являются ошибки округления.
Ошибки управления потоком. По логике работы программы вслед за первым действием должно быть выполнено второе. Если вместо этого выполняется третье или четвертое действие, значит, в управлении потоком допущена ошибка.
Ситуация гонок. Предположим, в системе ожидаются два события: А и Б. Если первым наступит событие А, то выполнение программы продолжится, а если событие Б, то в работе программы произойдет сбой. Разработчики предполагают, что первым всегда должно быть событие А, и не ожидают, что Б может выиграть гонки и наступить раньше. Такова классическая ситуация гонок. Тестировать ситуации гонок довольно сложно. Наиболее типичны они для систем, где параллельно выполняются взаимодействующие процессы и потоки, а также для многопользовательских систем реального времени. Ошибки в таких системах трудно воспроизвести, и на их выявление обычно требуется очень много времени.
Перегрузки. Сбои в работе программы могут происходить из-за нехватки памяти или отсутствия других необходимых системных ресурсов. У каждой программы свои пределы, программа может не справляться с повышенными нагрузками, например со слишком большими объемами данных. Вопрос в том, соответствуют ли реальные возможности программы, ее требования к ресурсам спецификации программы, и как она себя поведет при перегрузках.
Некорректная работа с аппаратурой компьютера. Программы могут отправлять аппаратным устройствам неверные данные, игнорировать их сообщения об ошибках, пытаться использовать устройства, которые заняты или вообще отсутствуют. Даже если нужное устройство просто неисправно, программа должна понять это, а не «зависать» при попытке к нему обратиться.