Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КЛ_ТехнолПрогр2010_090103.doc
Скачиваний:
22
Добавлен:
27.04.2019
Размер:
1.35 Mб
Скачать

1.4. Проектирование и реализация программы

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

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

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

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

При объектно-ориентированном подходе модель построения программы – это иерархия классов, объектная декомпозиция. В результате декомпозиции получается структурная схема программы, представляющая собой многоуровневую, иерархическую схему взаимодействия классов. Следующий этап проектирования программного обеспечения заключается в разработке классов и их интерфейсов с описанием элементов-данных и элементов-функций каждого класса. Для проектирования пользовательских интерфейсов используются сложные интерфейсы: меню с иерархической структурой команд, свободная навигация, не привязанная к уровням иерархии (используется в Windows-приложениях).

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

Реализация – это процесс программирования компонентов программного обеспечения на выбранном языке программирования, их тестирования и отладки.

При процедурном подходе реализация заключается в программировании функций и файлов (модулей) с использованием методов структурного программирования функций и программирования "сверху-вниз" ("top-down").

Этап программирования задачи выполняется в следующей последовательности:

  • - программирование функций верхнего уровня схемы;

  • - программирование функций нижнего уровня схемы и т.д.

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

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

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

В соответствии с этапами обработки программы (компиляция, компоновка, выполнение) различают следующие группы ошибок:

  • синтаксические ошибки, обнаруживаемые компилятором при синтаксическом и семантическом анализе программы;

  • ошибки компоновки, фиксируемые компоновщиком (редактором связей) при объединении модулей программы;

  • ошибки выполнения, обнаруживаемые операционной системой или пользователем при выполнении программы.

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

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

  • модульное тестирование, проверяющее небольшие, отдельные части программы – циклы, блоки, подпрограммы;

  • компоновочное тестирование, проверяющее следующий уровень – программные файлы (модули), объединение, взаимодействие отдельных частей программы;

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

  • стресс-тестирование, изучающее работу программы при ограниченных системных ресурсах;

  • бета-тестирование, позволяющее узнать мнение специалистов-пользователей;

  • тестирование-приемка пользователями в реальных условиях.

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

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

Имеются методы отладки, позволяющие получать дополнительную информацию об ошибке и облегчающие процесс поиска и исправления ошибки. К ним относятся метод отладочного вывода и интегрированные средства отладки. Метод отладочного вывода заключается в добавлении в программу дополнительного отладочного вывода в узловых точках. Но безусловно наиболее эффективными методами являются интегрированные средства отладки, имеющиеся в современных средах программирования (Visual C++, Visual Basic фирмы Microsoft, Delphi, Turbo C++, C++ Builder фирмы Borland). Например, отладчик Visual C++ встроен в среду Visual Studio, имеет свои меню и панели инструментов, позволяют выполнять следующие действия:

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

  • выполнение программы до точки прерывания;

  • просмотр в 6 окнах отладчика информации о текущем состоянии программы при остановке программы в точке прерывания и при пошаговом выполнении;

  • пошаговое выполнение программы с заходом в функции и без захода;

  • выполнение программы до строки с курсором.

Контрольные вопросы

  1. Перечислите этапы эволюции программного обеспечения

  2. Какие языки и методы программирования Вы знаете?

  3. Охарактеризуйте технологию процедурного программирования.

  4. Охарактеризуйте технологию объектно – ориентированного программирования.

  5. Чем достигается высокий уровень создания Windows- приложений на объектно-ориентированном языке Visual C++?

  6. Что такое компонентные технологии и CASE-технологии

  7. Что такое жизненный цикл программного обеспечения?

  8. Объясните эволюцию моделей жизненного цикла программного обеспечения.

  9. Каковы основные результаты постановки задачи и спецификации программы?

  10. Каковы основные результаты проектирования и реализации программы?

Тема 2 Базовый язык С++

Будем использовать термин базовый язык (kernel language) для обозначения подмножества С++, которое эквивалентно ANSI C, с не значительными расширениями. Он будет включать в себя не объектно-ориентированные расширения языка.