Файл: Отладка и тестирование программ: основные подходы и ограничения (Проектирование программы).pdf
Добавлен: 28.03.2023
Просмотров: 102
Скачиваний: 1
ВВЕДЕНИЕ
Распространение современных информационных технологий и различных аппаратных средств привело к созданию абсолютно новой сферы – программирования. Этот переворот оказал значительное влияние на многие стороны жизни общества – и на социальную, и на политическую, и на рынок труда. Рынок труда действительно сильно изменился благодаря повсеместной информатизации – некоторые профессии безнадежно устарели и полностью исчезли, некоторые изменились лишь частично, а также появились и новые, такие как программист, веб-программист, разработчик приложений и мн. др.
И к представителям новых профессий, как и ко всем остальным, предъявляются определенные требования, которые говорят о квалификации и качестве работы сотрудника. Так, одним из ключевых требований является соответствие полученного продукта изначальным требованиям. Иначе говоря – нужно сделать так, чтобы программа работала как надо. Для этого программисты используют специальные языки программирования, с помощью которых реализуют весь необходимый функционал. Важно отметить, что программирование всегда производится в виде совокупности определенных этапов, некоторые из которых являются обязательными, а некоторые – нет. Одним из обязательных этапов программирования является этап тестирования и отладки программы – один из завершающих шагов. Данная стадия позволяет не только найти ошибки в программе, но и исправить их, и сделать все именно в том виде, в котором необходимо заказчику.
К сегодняшнему дню сложилось несколько подходов к тестированию программных продуктов и их последующей отладке, и каждый из таких подходов обладает определенными ограничениями. Выбор того или иного подхода зависит от множества факторов – это и профессионализм и опыт программиста, и размер тестируемой программы, бюджет проекта, сроки выполнения тестирования и мн. др.
Таким образом, для подробного изучения вопроса необходимо выполнить цель исследования – рассмотреть основные подходы и ограничения к отладке и тестированию программ.
Для достижения данной цели необходимо выполнить следующие задачи:
- рассмотреть понятие и сущность программы;
- проанализировать основные этапы проектирования программ;
- охарактеризовать цели и этапы отладки и тестирования программ;
- осуществить краткий обзор основных видов тестирования и отладки программ;
- подробно рассмотреть подходы и ограничения к отладке и тестированию программ.
Объектом исследования выступают процессы тестирования и отладки программ, а предметом – основные подходы и ограничения к данным процессам.
Теоретической основой исследования выступили научные труды таких отечественных исследователей проблемы, как Герман О., Макаров В. Л., Павловская Т. А., Хабибуллин И. и др.
Структура работы содержит две главы и пять параграфов. В исследование также включены такие структурные элементы, как введение, заключение и список использованных источников.
1. Проектирование программы
Понятие программы
Возможности компьютера как технической основы системы обработки данных связаны с используемым программным обеспечением.
Программа – упорядоченная последовательность команд (инструкций) компьютеру для решения задачи [12]. Конечная цель любой компьютерной программы – управление аппаратными средствами.
Основные элементы программирования:
- ввод данных;
- вычисления, действия;
- ветвление;
- условный и безусловный переход;
- цикл;
- вывод результатов;
- массивы;
- подпрограммы и т.д. [3]
Программное обеспечение – совокупность программ обработки данных.
Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и непрерывном взаимодействии. Несмотря на то, что программное и аппаратное обеспечение рассматриваются раздельно, нельзя забывать, что между ними существует диалектическая связь, и раздельное рассмотрение их является условным.
Термин «компьютерная программа» в зависимости от своего контекста, может применяться также к исходным текстам (или кодам) программы. Вместе с правилами и процедурами, а также с документацией по функционированию программных систем обработки данных, компьютерные программы составляют понятие программного обеспечения [8].
Существует несколько уровней программного обеспечения. Эти уровни взаимодействуют между собой. Они представляют пирамидальную конструкцию. Каждый последующий уровень опирается на программное обеспечение предшествующих уровней, при этом каждый вышележащий уровень повышает функциональность всей системы. Так, например, вычислительная система с программным обеспечением базового уровня не способна выполнять большинство функций, но позволяет установить системное программное обеспечение.
Различают четыре уровня программного обеспечения:
- базовый уровень;
- системный уровень;
- служебный уровень (инструментальное обеспечение);
- прикладной уровень.
Основная классификация программного обеспечения представлена на рисунке 1 [20].
Рис. 1 Общая классификация программного обеспечения
В системном программировании имеет место более формальное определение программы как машинных кодов и данных, загруженных в оперативную память компьютера, и исполняемых процессором машины для достижения поставленной цели. В этом определении подчеркиваются две особенности компьютерной программы: нахождение ее в памяти и исполнение процессором машины.
Процесс создания компьютерной программы называется «программированием», а люди, занимающиеся этим видом деятельности, называются программистами. При разработке компьютерных программ в них довольно часто возникают ошибки. Считается, что в программе содержатся ошибки, если для каких–то данных программа дает неправильные результаты, сбои или отказы. Если программа выдает правильные результаты обработки для всех возможных входных данных, то можно считать, что она не содержит ошибок [18].
Процесс поиска ошибок в программах и их исправления называется отладкой программ. Обычно, заранее неизвестно, сколько ошибок содержит программа. По этой причине заранее неизвестна и продолжительность отладки программ.
Запись исходных текстов компьютерных программ при помощи специальных языков программирования (ЯП) облегчает человеку понимание и редактирование программ. Этому, также, помогают комментарии, допускаемые синтаксисом большинства языков программирования. Для выполнения программы на компьютере ее готовый исходный текст преобразуется (компилируется или интерпретируется) в машинный код, исполняемый процессором.
Программы с исходными текстами, доступными для прочтения и изменения любым желающим, называются открытыми программами. Любая компьютерная программа является объектом авторского права. Авторы или собственники программ имеют право ограничивать и даже полностью закрывать доступ к их исходным текстам, которые являются интеллектуальной собственностью правообладателей [4].
Некоторые языки программирования (интерпретируемые) позволяют обойтись без предварительной компиляции написанных на них программ, и специальные программы–интерпретаторы переводят такие программы в машинный код уже во время исполнения программы. Этот процесс называется интерпретированием или динамической компиляцией. Он позволяет улучшить переносимость программ между различными программными и аппаратными платформами. Интерпретируемые программы часто называются сценариями или скриптами.
В большинстве распространенных ЯП исходные тексты программ состоят из списков инструкций, описывающих заложенный в программе алгоритм. Такой подход называется императивным. Но применяются и иные методологии программирования. Так, например, в декларативном программировании описываются исходные и требуемые характеристики обрабатываемых данных, а выбор подходящего алгоритма решения описанной задачи поручается специализированной программе–интерпретатору. Применяются также логическое и функциональное программирование [4].
1.2. Основные этапы проектирования программы
Разработка любой программы, будь то небольшая процедура по обработке поступающей на консоль информации или комплексный программный продукт, состоит из нескольких этапов, грамотная реализация которых является обязательным условием для получения хорошего результата. Четкое следование выверенным временем этапам разработки программного обеспечения становится основополагающим критерием для занимающихся созданием ПО компаний и их заказчиков, заинтересованных в получении превосходно выполняющей свои функции программы. Подробно рассмотрим каждую стадию общепризнанной методологии разработки ПО, чтобы оценить их высокую значимость для достижения поставленной перед исполнителями цели.
Анализ требований
Самым первым этапом разработки программного обеспечения по праву называется процедура проведения всестороннего анализа выдвинутых заказчиком требований к создаваемому ПО, чтобы определить ключевые цели и задачи конечного продукта. В рамках этой стадии происходит максимально эффективное взаимодействие нуждающегося в программном решении клиента и сотрудников компании–разработчика, в ходе обсуждения деталей проекта помогающих более четко сформулировать предъявляемые к ПО требования. Результатом проведенного анализа становится формирование основного регламента, на который будет опираться исполнитель в своей работе – технического задания на разработку программного обеспечения. ТЗ должно полностью описывать поставленные перед разработчиком задачи и охарактеризовать конечную цель проекта в понимании заказчика [5].
Проектирование
Следующий ключевой этап в разработке программного обеспечения – стадия проектирования, то есть моделирования теоретической основы будущего продукта. Самые современные средства программирования позволяют частично объединить этапы проектирования и кодирования, то есть технической реализации проекта, будучи основанными на объектно–ориентированном подходе, но полноценное планирование требует более тщательного и скрупулезного моделирования. Качественный анализ перспектив и возможностей создаваемого продукта станет основой для его полноценного функционирования и выполнения всего комплекса возлагаемых на ПО задач. Одной из составных частей этапа проектирования, к примеру, является выбор инструментальных средств и операционной системы, которых сегодня на рынке присутствует очень большое количество.
В рамках данного этапа стороны должны осуществить:
- оценку результатов проведенного первоначально анализа и выявленных ограничений;
- поиск критических участков проекта;
- формирование окончательной архитектуры создаваемой системы;
- анализ необходимости использования программных модулей или готовых решений сторонних разработчиков;
- проектирование основных элементов продукта – модели базы данных, процессов и кода;
- выбор среды программирование и инструментов разработки, утверждение интерфейса программы, включая элементы графического отображения данных;
- определение основных требований к безопасности разрабатываемого ПО [11].
Кодирование
Следующим шагом становится непосредственная работа с кодом, опираясь на выбранный в процессе подготовки язык программирования. Описывать особенности и тонкости самого трудоемкого и сложного этапа вряд ли стоит, достаточно указать, что успех реализации любого проекта напрямую зависит от качества предварительного анализа и оценки конкурирующих решений, с которыми создаваемой программе предстоит «бороться» за право называться лучшей в своей нише. Если речь идет о написании кода для выполнения узкоспециализированных задач в рамках конкретного предприятия, то от грамотного подхода к этапу кодирования зависит эффективность работы компании, заказавшей разработку. Кодирование может происходить параллельно со следующим этапом разработки – тестированием программного обеспечения, что помогает вносить изменения непосредственно по ходу написания кода. Уровень и эффективность взаимодействия всех элементов, задействованных для выполнения сформулированных задач компанией–разработчиком, на текущем этапе является самым важным – от слаженности действий программистов, тестировщиков и проектировщиков зависит качество реализации проекта [12].
Тестирование и отладка
После достижения задуманного программистами в написанном коде следуют не менее важные этапы разработки программного обеспечения, зачастую объединяемые в одну фазу – тестирование продукта и последующая отладка, позволяющая ликвидировать огрехи программирования и добиться конечной цели – полнофункциональной работы разработанной программы. Процесс тестирования позволяет смоделировать ситуации, при которых программный продукт перестает функционировать. Отдел отладки затем локализует и исправляет обнаруженные ошибки кода, «вылизывая» его до практически идеального состояния. Эти два этапа занимают не меньше 30% затрачиваемого на весь проект времени, так как от их качественного исполнения зависит судьба созданного силами программистов программного обеспечения. Нередко функции тестировщика и отладчика исполняет один отдел, однако самым оптимальным будет распределить эти обязанности между разными исполнителями, что позволит увеличить эффективность поиска имеющихся в программном коде ошибок [8].