Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Принципы объектно-ориентированного программирования



В основу ООП положены следующие принципы:

1. Абстрагирование – процесс выделения абстракций в предметной области задачи. Абстракция – совокупность существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов и, таким образом, четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа.

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

Современный уровень абстракции предполагает объединение всех свойств абстракции (как касающихся состояния анализируемого объекта, так и определяющих его поведение) в единую программную единицу некий абстрактный тип (класс).

2. Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих существенных характеристик ее как целого.

Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:

· интерфейс – совокупность доступных извне элементов реализации абстракции (основные характеристики состояния и поведения);

· реализация – совокупность недоступных извне элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).

Ограничение доступа в ООП позволяет разработчику:

· выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых абстракций;

· легко модифицировать реализацию отдельных объектов, что в правильно организованной системе не потребует изменения других объектов.

Сочетание объединения всех свойств предмета (составляющих его состояния и поведения) в единую абстракцию и ограничения доступа к реализации этих свойств получило название инкапсуляции.

3. Модульность – принцип разработки программной системы, предполагающий реализацию ее в виде отдельных частей (модулей). При выполнении декомпозиции системы на модули желательно объединять логически связанные части, по возможности обеспечивая сокращение количества внешних связей между модулями.

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

В ООП используются два вида иерархии:

· иерархия «целое/часть» – показывает, что некоторые абстракции включены в рассматриваемую абстракцию как ее части, например, лампа состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования;

· иерархия «общее/частное» – показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол – конкретный вид стола», а «столы – конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.

Один из важнейших механизмов ООП – наследование свойств в иерархии общее/частное. Наследование – такое соотношение между абстракциями, когда одна из них использует структурную или функциональную часть другой или нескольких других абстракций (соответственно простое и множественное наследование).

5. Типизация – ограничение, накладываемое на свойства объектов и препятствующее взаимозаменяемости абстракций различных типов (или сильно сужающее возможность такой замены).

Использование принципа типизации обеспечивает:

· раннее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами (ошибки обнаруживаются на этапе компиляции программы при проверке допустимости выполнения данной операции над программным объектом);

· упрощение документирования;

· возможность генерации более эффективного кода.

Тип может связываться с программным объектом статически (тип объекта определен на этапе компиляции – раннее связывание) и динамически (тип объекта определяется только во время выполнения программы – позднее связывание). Реализация позднего связывания в языке программирования позволяет создавать переменные-указатели на объекты, принадлежащие различным классам (полиморфные объекты), что существенно расширяет возможности языка.

6. Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции.

Существует целый ряд задач, решение которых требует одновременного выполнения некоторых последовательностей действий. К таким задачам, например, относятся задачи автоматического управления несколькими процессами.

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

7. Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего данный программный объект, и/или в пространстве, перемещаясь из адресного пространства, в котором он был создан.

Различают:

· временные объекты, хранящие промежуточные результаты некоторых действий, например, вычислений;

· локальные объекты, существующие внутри подпрограмм, время жизни которых исчисляется от вызова подпрограммы до ее завершения;

· глобальные объекты, существующие пока программа загружена в память;

· сохраняемые объекты, данные которых хранятся в файлах внешней памяти между сеансами работы программы.

Все указанные выше принципы в той или иной степени реализованы в различных версиях объектно-ориентированных языков.

Язык считается объектно-ориентированным, если в нем реализованы первые четыре из рассмотренных семи принципов.

Несмотря на то, что принципиально ООП возможно на многих языках программирования, желательно для создания объектно-ориентированных программ использовать объектно-ориентированные языки, включающие специальные средства, например, Borland Pascal (начиная с версии 5.5), С++, Delphi и т.д.


 

21. Delphi - интегрированная среда разработки (Integrated Development Environment -IDE). Delphi дает возможность создавать программы в стиле визуального конструирования формы, разместив на ней какие-либо визуальные элементы. Delphi имеет сложный интерфейс.

В Delphi имеются 10 окон, но после загрузки появляются четыре окна:

• главное окно Delphi - < имя проекта>;

• окно с формой для проектирования приложения Forml (окно проектировщика формы);

• окно инспектора объектов Object Inspector;

• окно редактора кода Unitl.pas.

В главном окне реализуется основные функции управления проектом создаваемой программы. Главное управляющее окно системы Delphi обычно располагается в верхней части экрана. Оно содержит средства управления созданием программы и выглядит наиболее загруженным из всех окон

Это окно содержит:

• строку заголовка;

• строку меню;

• панель инструментов;

• палитру компонентов. Строка заголовка главного окна отображает имя открытого в данный момент проекта Projectl. Под строкой заголовка окна системы располагается строка меню, содержащая команды системы Delphi.

Рис. 1.

Строка меню содержит команды, необходимые для разработки и тестирования приложений, и используется так же, как любое стандартное меню Windows. Строка меню — это очень важный элемент управления любой программы или системы. Кроме строки меню программы обычно содержат и другие элементы управления: командные кнопки, кнопки инструментов и прочие. Кнопками удобно пользоваться для исполнения операций, но не для всякой операции есть кнопка, а только для тех, которые встречаются особенно часто. Зато с помощью строки меню можно найти любую команду, на которую система способна.

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

Одна из панелей инструментов, имеющихся в главном окне системы Delphi, заметно отличается от остальных. Это палитра компонентов. Палитра компонентов устроена в виде набора пиктограмм. Палитра компонентов содержит множество вкладок. Каждая из них содержит свой набор компонентов. Общее число компонентов достигает нескольких сотен. Совокупность наборов составляет библиотеку визуальных компонентов (Visual Components Library - VCL). Имеется несколько категорий компонентов, каждая из которых расположена на своей вкладке. С помощью палитры компонентов создаются экземпляры компонентов (объекты) на форме.

Рис. 2.

Окно инспектора объектов (Object Inspector) отображает свойства какого-либо компонента, активизированного щелчком мышью, или самой формы. Имя активизированного компонента находится под заголовком окна. Именно с помощью инспектора объектов настраивают объекты, используемые в программах. Это же окно используется для выбора и настройки событий, на которые будут реагировать объекты нашей программы. С его помощью создаются или выбираются нужные процедуры обработки.

Окно проектировщика формы - главное место, где происходит сборка программы из компонентов, содержащихся в палитре компонентов. Сама форма - это уже готовая к выполнению программа. Вначале окно формы пустое, но, создавая программу, в указанное место формы добавляются объекты - экземпляры компонента выбранного типа. Сетка из точек в окне формы поможет разместить объекты ровно и аккуратно. При работе программы ее не видно.

Форма — это заготовка окна будущей программы. Каждая программа содержит хотя бы одно окно и, следовательно, одну форму. Поэтому при работе над программой окно формы мы видим на экране всегда. Заготовка первого окна называется Forml. Если в программе будет два окна, то заготовка второго будет называться Form2 и так далее. Возможна замена стандартного названия более подходящим для программы.

Рис. 3.

Последнее из открытых окон содержит код программы. Часть программы система Delphi формирует автоматически. Даже " пустая" программа для Windows собирается из нескольких тысяч операторов языка Pascal. Добавлять нужные операторы система Delphi начинает еще до того, как программист приступил к созданию своей программы.

Рис. 4.

Добавляются операторы именно в этом окне. Некоторые операторы система Delphi добавит сама, другие мы введем вручную. Именно поэтому окно кода никогда не бывает пустым.

 


 

22. Для системы Delphi каждая незавершенная программа - это проект. Проект включает в себя множество файлов. Наиболее важными являются три файла: файл формы, файл кода и файл проекта.

Проект, состоит из:

• файла проекта Projectl.dpf,

• файла параметров проекта Projectl.dof,

• файла ресурсов проекта Project.res,

• файла настроек проекта Projectl.cfg,

• файла описания формы Unitl.dfm,

• файла модуля формы Unitl.pas.

Файл модуля формы доступен для редактирования, именно он отображается в Редакторе Кода. Остальные файлы создаются Delphi автоматически. В процессе компиляции программы файлы преобразуются в исполняемый exe-файл, который, по умолчанию, создается в той же папке, в которой расположен файл проекта.

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

Для сохранения проекта нужно воспользоваться пунктом главного меню Save Project

As...

Чтобы не смешивать файлы разных проектов, желательно каждый новый проект сохранять в отдельную папку. Сначала предлогается ввести имя для модуля формы, а затем имя проекта.

Когда программа сохранена, можно начать написание новой программы. Для этого выберается пункт главного меню File — New Application.

В результате на экране появляется пустая заготовка формы. Если же необходимо загрузить старую программу, нужно выбрать в главном меню Open Project либо воспользоваться кнопкой на панели инструментов и загрузить соответствующий файл проекта.

Вместе со средой Delphi поставляется более сотни различных компонентов, а в Интернете можно найти тысячи. Они отличаются по своему внешнему виду, функциям, способам реализации, требованиям к аппаратной части и т.п., но, тем не менее, все они построены на едином фундаменте, единой объектной основе.

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

Визуальные компоненты являются элементами управления, которые добавляются на форму: это кнопки, поля ввода, картинки, панели и т.д. Те из них, что предназначены для ввода данных, могут принимать фокус ввода, обеспечивая управление с клавиатуры.

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

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

Часть свойств отвечает за положение на форме: отступ слева, отступ сверху, высота, ширина, выравнивание.

Некоторые определяют внешний вид: цвет, шрифт, заголовок. Некоторые задают поведение компонента во время исполнения программы: доступен, виден, курсор, подсказка.

Механизм событий позволяет связать действия пользователя с необходимыми действиями программы. События определяют всю структуру программы, поскольку фактически весь код, то есть, собственно работа программиста, пишется в обработчиках событий.

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

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

 


 

23. 5.1. ПРОГРАММНЫЕ ОШИБКИ

Программ без ошибок не существует. Практика пока-зывдет, что виновниками ошибок в программах чаще всего бывают сами программисты. Один из общих законов практического про­граммирования состоит в том, что ни одна программа не дает же­лаемых результатов при первой попытке трансляции и выполнения. Некоторое представление о действительных причинах появления ошибок в работе программы дает следующее процентное соотно­шение источников сбоев:

Входные данные 1%

Ошибки пользователя 5%

Аппаратура 1%

Системное программное обеспечение 3%

Разработка системы 15%

Программирование 75%

Программист должен не только писать эффективные програм­мы, но и находить в них всевозможные ошибки. Современная практика обучения программированию ориентирована, в основном, только на выполнение программистом первой половины своей ра­боты. Это все равно, как если обучать летчика только взлету, пред­полагая, что с посадкой машины он как-нибудь разберется сам, ес­ли будет выполнять все операции взлета в обратном порядке.

Существуют два типа программных ошибок:

синтаксические ошибки — возникают из-за нарушения правил языка программирования. Такие ошибки обычно выявляются во время компиляции. Могут быть исключены сравнительно легко. Даже если не просматривать текст программы можно быть уверен­ным, что компилятор на стадии трансляции найдет ошибки и вы­даст соответствующие предупреждения. Фактически поиск ошибок осуществляет компилятор, а их исправление — программист;

семантические (логические) ошибки - те, что приводят к некор­ректным вычислениям или ошибкам во время выполнения (run-time error). Семантические, ошибки устраняют обычно посредством выполнения программы с тщательно подобранными проверочными данными, для которых известен правильный ответ.


 

24. Процесс тестирования нельзя путать с процессом от­ладки (debugging). Первый служит лишь для обнаружения факта существования ошибок, а не для их локализации и устранения.

Отладка программ обычно осуществляется с использованием специальных программных средств. Последние используются для исследования внутреннего поведения программы. Типичный от­ладчик позволяет вводить в программу точки останова для оценки промежуточных результатов и производить проверку и модифика­цию значений переменных в этих точках.

Существуют несколько способов отладки программы.

Распечатка текущего состоя н и я. Используется с це­лью фиксации фактических значений переменных для проверки хода вычислений. Для этого во время отладки программы в места, которые программист считает критическими, помещают процеду­ры распечатки текущего состояния переменных. После окончания теста вызовы этих процедур удаляются, и программа снова пере­компилируется.

Точки останова. Используются в случае разного рода за­цикливаний, когда программа в какой-то момент «зависает». В текст программы включают процедуры останова программы. Например, можно поместить процедуру вывода обычного сообщения вроде «Достигнута точка #ппп» и инициировать паузу до нажатия на лю­бую клавишу. При таком подходе программист точно знает, до ка­кой точки дошла программа перед зацикливанием.

Метод деления п о п о л а м. Этот метод используют свя­зисты, когда ищут обрыв в кабеле, закопанном в землю. Например, если приблизительно известно до какого момента программа ус­пешно выполняется, то в этом месте программы ставят точку ос­танова. Затем ставят точку в конце «подозреваемой» процедуры и посредине - между первой и последней точками. Снова компили­руют и выполняют программу. Если программа дошла до второй точки, то зацикливание произошло где-то между второй и третьей точками, если не дошла - между первой и второй. После этого вставляется новая точка останова в локализованный участок и про­грамма снова компилируется. Таким образом, постоянно сжимая район поисков, можно найти ошибочный участок.

Трассировка. Является последним средством обнаружения ошибки. Она может оказаться очень эффективной, но значительно замедляет выполнение программы и, не будучи тщательно сплани­рованной, приводит к колоссальным объемам выдаваемой инфор­мации. При трассировке происходит пошаговое выполнение про­граммы с возможностью просмотра состояния всех переменных.

ОПТИМИЗАЦИЯ

Обычно программа создается в достаточно жестком временном режиме, что заставляет программиста искать, скорее, более правильные решения, чем более эффективные. Под эффек­тивностью программы понимают, прежде всего, скорость ее вы­полнения, а также ее объем. Сегодня, когда уделяется особое вни­мание пользовательскому интерфейсу, в список влияющих на эф­фективность программы факторов можно, пожалуй, также занести и удобство интерфейса. Таким образом, под оптимизацией пони­мается процесс улучшения программы.

Оптимизация не является обязательным условием разработки программы. Однако существует целый класс программ, критичных как к скорости выполнения, так и к размеру. Таковыми являются программы графического вывода в силу большого объема вычис­лений, связанных с графическими преобразованиями.

При проектировании больших систем оптимизация произво­дится в два этапа, Сначала оптимизируют текст программы на язы­ке высокого уровня, а затем наиболее критичные ко времени вы­полнения процедуры переписывают на язык ассемблера. Сущест­вуют следующие способы оптимизации программных кодов.

Разгрузка участков повторяемости. Является спо­собом оптимизации, который чаще всего подразумевает разгрузку циклов путем вынесения из них выражений, которые могут быть вычислены вне циклов.

К этому виду преобразований относятся также «чистки» тел ре­курсивных процедур, когда выражения в соответствующем цикле (или теле многократно вызываемой процедуры) выносятся и раз­мещаются перед входом в участок повторяемости — это так назы­ваемая чистка вверх.

Иногда применяют чистку вниз, когда соответствующие фраг­менты кода помещаются после цикла. При этом нужно обратить внимание на то, что выносить можно только такие выражения, ко­торые обязательно исполняются при каждом прохождении разгру­жаемого цикла.

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

Например, операция сложения выполняется быстрее операции умножения, а умножение быстрее операции деления. Поэтому один оператор умножения переменной на некоторое небольшое целое число (обычно не более трех) лучше заменить на эквивалентное количество сложений. Выражение:

Total: = Summa + Summa + Summa;

эффективнее выражения: Total: = 3 * Summa;

а операцию деления Summa: = Summa/2; лучше заменить на более быстрое умножение, которое приведет к тому же самому результату Summa: = Summa * 0.5;

Чистка программы. Данный способ повышает качество программы за счет удаления из нее ненужных объектов и конст­рукций. Набор преобразований этого типа включает в себя сле­дующие варианты оптимизации:

удаление несущественных операторов, то есть операторов, не влияющих на результат программы;

удаление бесполезных операторов, вычисляющих вспомога­тельные переменные, используемые только для подстановки в дру­гие выражения;

удаление объявленных, но неиспользуемых переменных и типов;

удаление идентичных операторов;

удаление процедур, к которым нет обращений.

Необходимость в такого рода чистках возникает потому, что очень часто программист «захлебывается» в общем количестве пе­ременных и процедур одного слишком большого модуля. Подчас он объявляет переменные, которые потом нигде в программе не использует.

Например, программист может объявить целочисленную пере­менную для организации цикла, а затем, спустя какое-то время, для организации другого цикла объявляет еще одну переменную, забыв о существовании предыдущей и возможности ее повторного ис­пользования.

Экономия памяти. Одним из главных ресурсов после процессорного времени, который использует программа, является объем оперативной памяти. Объем памяти зависит как от размера кода самой программы, так и от количества статических и динамических переменных.

Программист должен учиться как можно экономнее использо­вать память. Каждую структуру следует тщательно продумывать и не требовать, скажем, для переменной, в которой будут хранить­ся координаты текстового экрана, двухбайтового типа.

Это так называемая экономия на типе переменной. Существует и еще ряд способов более экономного расходования памяти:

1) Глобальная экономия памяти подразумевает совмещение по памяти не существующих одновременно статических переменных. Модульное программирование также подразумевает разнесение объявлений несвязанных переменных в различные модули.

2) Изменение области существования переменной.

3) Перемещение оператора объявления переменной (резервиро­вания памяти) ближе к тому участку программы, в котором содер­жатся операторы, использующие эту переменную, то есть перемен­ную следует объявлять в границах того блока, где она используется.

4) Экономия стека: при передаче массива в качестве параметра подпрограммы, следует использовать ссылку на массив. Помимо экономии памяти это приводит также и к экономии времени за счет того, что система не создает копии передаваемого массива в стеке.

 


 

25. Виды тестирования, разработка и выполнение тестов

Тестирование (testing) - любой вид деятельности, в рам­ках которого путем реального выполнения каких-либо задач прове­ряется соответствующая работа либо системы в целом, либо состав­ной ее части.

Тестирование программы (program testing) - проверка, которая проводится в ходе прогона программы с целью убедиться, работает ли она так, как требуется. Это осуществляется при выполнении од­ного или нескольких тестовых прогонов, при которых в программ­ную систему подаются входные (тестовые данные), а реакция сис­темы фиксируется для последующего анализа. Может осуществ­ляться как с ЭВМ, так и без ЭВМ.

Один из главных законов тестирования гласит: «Тестирование программы или ее отдельных модулей не должен осуществлять программист (группа программистов), создавший эту программу или модуль».

Для обеспечения достаточной степени надежности тестирова­ния должен быть специальный отдел в фирме или привлечены про­граммисты из сторонних организаций. Первоначально разработчик сам устраняет мелкие ошибки. Когда компиляция модуля заверша­ется, и компилятор выдает соответствующее сообщение «Compile successful", программист обычно запускает откомпилированный фрагмент и производит несколько тестов.

После такого поверхностного тестирования разработчиком за­конченный модуль должен быть протестирован другим программи­стом. Дело в том, что разработчик изначально настраивается на ка­кой-то один вид возможной ошибки и, не обнаружив ее при пред­варительном тестировании, не склонен проверять другие участки модуля. Сторонний программист рассматривает модуль, подклю­ченный к программе как своего рода «черный ящик» и пытается запускать его на предельных нагрузках.

Статистика свидетельствует, что стоимость тестирования со­ставляет не менее 50% всей стоимости начальной разработки.

Сколько бы сил, времени и денег не было потрачено на тести­рование, один из главных законов программирования действует с неотвратимостью рока: «Тесты могут доказать наличие ошибок в программе, но они не могут доказать их отсутствия» (Э. Дейкстра «Заметки по структурному программированию»).

При тестировании могут возникать следующие вопросы:

1) Искать все ошибки или грубейшие?

2)Если не все, то как установить порог допустимости ошибки?

3)Когда завершать тестирование?

4)Что делать, если сроки поджимают или нет ресурсов на дальнейшее тестирование?

5) Где остановиться в документировании тестов?

Ответы на них во многом зависят от того, что считать качест­венной программой?

Качественная программа - это программа, выполняющая зара­нее объявленные действия известным способом и не выполняющая никаких необъявленных действий.

Под объявленными действиями понимаются, в том числе, и ал­горитмы обработки данных. Таким образом, тестирование должно выполняться до тех пор, пока программа не избавится от всех не­объявленных действий (частным случаем которых является невер­ная обработка, то есть, в сущности, просто порча данных).

ХОД ТЕСТИРОВАНИЯ

В процессе тестирования программного обеспечения осуществляются следующие виды деятельности:

Ручной прогон. На этом шаге программист с помощью ка­рандаша и листа бумаги моделирует прохождение данных через программу. При изучении текста программы от начала до конца, трудно проверить всевозможные комбинации данных. Самое боль­шее, что можно сделать на практике, - проверить всевозможные типы или наиболее вероятные наборы комбинаций данных. Если они дают правильные результаты, предполагается, что непроверен­ные комбинации также дадут правильные результаты.

Проектирование тестов. Является наиболее ответст­венным процессом. Очень часто тест создается вручную. Иногда применяют генераторы тестовых данных - специальные програм­мы, формирующие данные в соответствии со спецификациями, задаваемыми программистом. Тестовые данные могут систематиче­ски или случайно выбираться из другого заданного набора данных для уменьшения их общего количества.

Выполнение тестов. На этом этапе осуществляется про­верка всех возможных алгоритмов специально подготовленными тестами, а также выявляется, насколько интерфейс программы вы­держит реальную нагрузку. Проблема заключается в том, что тес­тирование происходит на очень ограниченных объемах данных. Когда база данных будет насчитывать десятки, а то и сотни тысяч записей, скорость выполнения запросов пользователей может стать неприемлемой.

Изучение результатов тестирования. Выявление и устранение ошибок часто имеет циклический характер. Устране­ние одной ошибки может порождать другие ошибки. Особенно это касается работы с глобальными переменными, которые коварны тем, что нельзя сказать с полной уверенностью, что где-то на ниж­нем уровне подпрограмм изменение состояния переменной не при­ведет к новой ошибке.


Поделиться:



Последнее изменение этой страницы: 2017-03-14; Просмотров: 599; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.073 с.)
Главная | Случайная страница | Обратная связь