· размер модуля,
· прочность модуля,
· сцепление с другими модулями,
· рутинность модуля (независимость от предыстории обращений к нему).
В процессе разработки программы ее модульная структура может по-разному формироваться и использоваться для определения порядка программирования и отладки модулей, указанных в этой структуре. Поэтому можно говорить о разных методах разработки структуры программы. Обычно в литературе обсуждаются два метода [7.1, 7.7]: метод восходящей разработки и метод нисходящей разработки.
Метод восходящей разработки заключается в следующем. Сначала строится модульная структура программы в виде дерева. Затем поочередно программируются модули программы, начиная с модулей самого нижнего уровня (листья дерева модульной структуры программы), в таком порядке, чтобы для каждого программируемого
Метод нисходящей разработки заключается в следующем. Как и в предыдущем методе сначала строится модульная структура программы в виде дерева. Затем поочередно программируются модули программы, начиная с модуля самого верхнего уровня (головного), переходя к программированию какого-либо другого модуля только в том случае, если уже запрограммирован модуль, который к нему обращается. После того, как все модули программы запрограммированы, производится их поочередное тестирование и отладка в таком же (нисходящем) порядке.
Для контроля структуры программы можно использовать три метода [7.5]:
· статический контроль,
· смежный контроль,
· сквозной контроль.
Основная литература: 1, 4, 5, 8
Дополнительная литература: 14-16, 20
Тема 9. Тестирование и отладка программного средства.
Отладка ПС - это деятельность, направленная на обнаружение и исправление ошибок в ПС с использованием процессов выполнения его программ. Тестирование ПС - это процесс выполнения его программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом.

Рис. 1. Спектр подходов к проектированию тестов.
При автономной отладке ПС каждый модуль на самом деле тестируется в некотором программном окружении, кроме случая, когда отлаживаемая программа состоит только из одного модуля.
При комплексной отладке тестируется ПС в целом, причем тесты готовятся по каждому из документов ПС. Тестирование этих документов производится, как правило, в порядке, обратном их разработке. Тестирование при комплексной отладке представляет собой применение ПС к конкретным данным, ко-торые в принципе могут возникнуть у пользователя (в частности, все тесты готовятся в форме, рассчитанной на пользователя), но, возможно, в моделируемой (а не в реальной) среде.
Основная литература: 1-5
Дополнительная литература: 13, 15, 18, 19
Тема 10. Документирование программных средств
При разработке ПС создается и используется большой объем разнообразной документации. Она необходима как средство передачи информации между разработчиками ПС, как средство управления разработкой ПС и как средство передачи пользователям информации, необходимой для применения и сопровождения ПС. На создание этой документации приходится большая доля стоимости ПС.
Эту документацию можно разбить на две группы [1]:
· Документы управления разработкой ПС.
· Документы, входящие в состав ПС.
· Документы управления разработкой ПС (software process documentation) управляют и протоколируют процессы разработки и сопровождения ПС, обеспечивая связи внутри коллектива разработчиков ПС и между коллективом разработчиков и менеджерами ПС (software managers) - лицами, управляющими разработкой ПС.
Документы, входящие в состав ПС (software product documentation), описывают программы ПС как с точки зрения их применения пользователями, так и с точки зрения их разработчиков и сопроводителей (в соответствии с назначением ПС). Здесь следует отметить, что эти документы будут использоваться не только на стадии эксплуатации ПС (в ее фазах применения и сопровождения), но и на стадии разработки для управления процессом разработки (вместе с рабочими документами) - во всяком случае, они должны быть проверены (протестированы) на соответствие программам ПС.
В соответствии с работами [1, 2] можно считать типичным следующий состав пользовательской документации для достаточно больших ПС:
· Общее функциональное описание ПС.
· Руководство по инсталяции ПС.
· Инструкция по применению ПС.
· Справочник по применению ПС.
· Руководство по управлению ПС.
Документация по сопровождению ПС (system documentation) описывает ПС с точки зрения ее разработки. Эта документация необходима, если ПС предполагает изучение того, как оно устроена (сконструирована), и модернизацию его программ.
Документация по сопровождению ПС можно разбить на две группы:
(1) документация, определяющая строение программ и структур данных ПС и технологию их разработки;
(2) документацию, помогающую вносить изменения в ПС.
Основная литература: 1, 4-6
Дополнительная литература: 13, 15, 20
Тема 11. Компьютерная поддержка разработки и сопровождения программных средств
ПС, предназначенное для поддержки разработки других ПС, будем называть программным инструментом разработки ПС, а устройство компьютера, специально предназначенное для поддержки разработки ПС, будем называть аппаратным инструментом разработки ПС.
С точки зрения функций, которые инструменты выполняют при разработке ПС, их можно разбить на следующие четыре группы:
* редакторы,
* анализаторы,
* преобразователи,
* инструменты, поддерживающие процесс выполнения программ.
Компьютерная поддержка процессов разработки и сопровождения ПС может производиться не только за счет использования отдельных инструментов (например, компилятора), но и за счет использования некоторой логически связанной совокупности программных и аппаратных инструментов. Такую совокупность будем называть инструментальной средой разработки и сопровождения ПС.
Инструментальную среду, интегрированную хотя бы по данным или по действиям, будем называть инструментальной системой. При этом интегрированность по данным предполагает наличие в системе специализированной базы данных, называемой репозиторием.
В настоящее время выделяют [1] три основных класса инструментальных сред разработки и сопровождения ПС:
· инструментальные среды программирования,
· рабочие места компьютерной технологии,
· инструментальные системы технологии программирования.
Инструментальная система технологии программирования предназначена для поддержки всех процессов разработки и сопровождения в течение всего жизненного цикла ПС и ориентирована на коллективную разработку больших программных систем с продолжительным жизненным циклом.
Имеются некоторые трудности в выработке строгого опре-деления CASE-технологии (компьютерной технологии разработ-ки ПС). Но без помощи (поддержки) компьютера ПС уже давно не разрабатываются (используется хотя бы компилятор).
В настоящее время компьютерную технологию разработки ПС можно характеризовать [1] использованием
· программной поддержки для разработки графических требований и графических спецификаций ПС,
· автоматической генерации программ на каком-либо языке программирования или в машинном коде (частично или полностью),
· программной поддержки прототипирования.
Рабочее место компьютерной технологии разработки ПС представляет собой инструментальную среду, поддерживающую все этапы жизненного цикла этой технологии. В этой среде существенно используется репозиторий.
Инструментальная система технологии программирования - это интегрированная совокупность программных и аппаратных инструментов, поддерживающая все процессы разработки и сопровождения больших ПС в течение всего его жизненного цикла в рамках определенной технологии.
С учетом обсужденных свойств инструментальных систем технологии программирования можно выделить три их основные компоненты:
· репозиторий,
· инструментарий,
· интерфейсы.
Основная литература: 1, 2, 5, 8
Дополнительная литература: 13, 14, 15, 20
Тема 12. Парадигмы программирования.
Некоторые методы и стили становятся общепринятыми и образуют на некоторое время так называемую парадигму программирования.
Возникла идея объединить исходные данные и все процедуры их обработки в один модуль. Эта идея модульного программирования на некоторое время стала парадигмой
Оказалось удобным разбить программу на модули так, чтобы она превратилась в совокупность взаимодействующих объектов. Так возникло объектно-ориентированное программирование (ООП) – современная парадигма программирования, в основе которой лежит понятие объекта, как некоторой структуры, описывающей объект реального мира, его поведение.
Как известно, все программы состоят из двух элементов: кода и данных. Любая программа может быть концептуально организована либо вокруг ее кода («кодовое воздействие на данные»), либо вокруг данных («управляемый данными доступ к коду»). При первом (процедурном) подходе программу определяет последовательность операторов ее кода. Второй подход организует программу вокруг данных (т. е. вокруг объектов) и набора хорошо организованных интерфейсов (взаимодействий) с этими данными.
Объектно-ориентированное программирование - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя.
Иерархия - это упорядочение абстракций, расположение их по уровням.
С точки зрения разработчиков ПС следует различать следующие категории объектов (и, соответственно, их классов):
· объекты модельного (вещественного или умственного) мира,
· информационные модели объектов реального мира (будем называть их пользовательскими объектами),
· объекты процесса выполнения программ,
· объекты процесса разработки ПС (технологические объекты программирования).
Когда говорят об объектно-ориентированном подходе к разработке ПС, имеют в виду объектный подход с ориентацией на описание объектов модельного мира и построением их информационных моделей, причем используются, в основном, активные объекты. При этом многие процессы разработки ПС приобретают специфические («объектные») черты:
· использование системы понятий, позволяющих описывать объекты и их классы,
· декомпозиция объектов является основным средством упрощения ПС,
· использование внепрограммных абстракций для упрощения процессов разработки,
· предпочтение (приоритет) разработки структуры данных перед реализацией функций.
Объект- это совокупность свойств (структур данных, характерных для этого объекта), методов их обработки (подпро-грамм изменения свойств) и событий, на которые данный объект может реагировать и которые приводят, как правило, к измене-нию свойств объекта.
Объекты могут иметь идентичную структуру и отличаться только значениями свойств. В таких случаях в программе создает-ся новый тип, основанный на единой структуре объекта (по ана-логии с тем, как создаются новые типы для структурданных). Он называется классом, а каждый конкретный объект, имеющий структуру этого класса, называется экземпляром класса.
Класс содержит описание переменных и констант, характеризую-щих объект. Они называются полями класса.
Операцией называется функция, которую можно применять к объектам данного класса.
Процедуры, описывающие поведение объекта, называются методами класса.
Конструктор- это специальный метод, инициализирующий объект, содержащий виртуальные методы, он объявляется специально зарезервированным словом constructor.
Деструктор- это специальный метод, освобождающий память «кучи» от динамических объектов. Он объявляется с использованием специально зарезервированного слова destructor.
Основная литература: 1, 2-5
Дополнительная литература: 13-15, 18, 19
Тема 13. Концепция объектно-ориентированного программирования
Объектно - ориентированная методология проектирования программ основана на концепциях упрятывания информации и абстрактных типах данных. Такой подход рассматривает все такие ресурсы как данные, модули и системы в качестве объек-тов. Каждый объект содержит некоторую структуру данных ( или тип данных), обрамленную набором процедур(методов), предназ-наченных для манипулирования этими данными.
К базовым принципам объектно - ориентированного стиля программирования относятся: инкапсуляция, наследование и полиморфизм.
В неформальной постановке вопроса под инкапсуляцией будем понимать доступность объекта исключительно посредством его свойств и методов.
Инкапсуляция, encapsulation - процесс разделения элементов абстракции, которые образуют ее структуру и поведение. Служит для отделения внешних обязательств объекта от его реализации.
Интерфейс (interface) - внешний вид класса, объекта или модуля, выделяющий его существенные черты и не показывающий внутреннего устройства и секретов поведения.
Концепция объектно-ориентированного программирования предполагает возможность определять новые классы посредством добавления полей, свойств и методов к уже существующим клас-сам. Такой механизм получения новых классов называется порождением.
При этом новый, порожденный, класс (потомок) наследует свойства и методы своего базового, родительского класса.
Определим наследование следующим образом:
Наследование, inheritance - отношение между классами, при котором класс использует структуру или поведение другого (одиночное наследование) или других (множественное наследование) классов. Наследование вводит иерархию "общее/частное", в которой подкласс наследует от одного или нескольких более общих суперклассов.
Полиморфизм — это возможность использовать одинаковые имена для методов, входящих в различные классы.
Концепция полиморфизма обеспечивает при применении метода к объекту использование именно того метода, который соответствует классу объекта и обеспечивает применение объекту именно того метода, который соответствует типу объекта.
Полиморфизм (polymorphism) - положение теории типов, согласно которому имена (например, переменных) могут обозначать объекты разных (но имеющих общего родителя) классов. Следовательно, любой объект, обозначаемый полиморфным именем, может по-своему реагировать на некий общий набор операций.
Концепцию полиморфизма часто выражают фразой «один интерфейс, много методов».
С точки зрения языка, событие - это поле процедурного типа, предназначенное для создания пользовательской реакции на те или иные входные воздействия:
Property OnMyEvent: tMyEvent read FMyEvent write FMyEvent;
Здесь OnMyEvent - поле объекта, содержащее адрес некоторого метода. Присвоить такому свойству значение - значит указать программе адрес метода, который будет вызываться в момент наступления события. Такие методы называются обработчиками событий.
Объектно-ориентированное программирование позволяет легко создавать и использовать абстрактные типы данных.
Абстрактный тип данных (АТД, abstract data type) – это определяемое пользователем расширение исходных типов языка. АТД состоит из набора значений и операций, которые могут влиять на эти значения.
Основная литература: 1, 2- 4, 5
Дополнительная литература: 13-15, 18,19
Тема 14. Форма Бэкуса-Наура
Один из наиболее распространенных способов описания синтаксиса языка – это форма Бэкуса-Наура (Backus J.W., Naur P.). Этот способ был разработан для описания Алгола-60, однако, в дальнейшем он использован для многих других языков. При записи грамматики в форме Бэкуса-Наура используются два типа объектов:
· основные символы (или терминальные символы, в частности, ключевые слова)
· металингвистические переменные (или нетерминальные символы), значениями которых являются цепочки основных символов описываемого языка. Металингвистические переменные изображаются словами (русскими или английскими), заключенными в угловые скобки (<...>)
· металингвистические связки (::=, |)
Металингвистическая переменная служит для обозначения не -
которого понятия языка. Она может представлять собой
последовательность прописных букв, между которыми может быть разделитель "подчеркивание"; в конце может иметься индекс.
Металингвистическая связка служит для обозначения самой
себя и записывается в виде последовательности строчных букв,
знаков препинания и специальных литер.
Язык ассемблера — это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде.
Язык ассемблера позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др.
Основная литература: 1-5, 10
Дополнительная литература: 13, 14, 18
2.3 Семинарские занятия по плану не предусмотрены.
2.4 Планы лабораторных занятий
Лаб. работа 1. Алгоритмы и данные.
Контрольные вопросы:
1) Что называется алгоритмом?2) Что называется командой? 3)Способы задания алгоритма 4) Какая структура является: А) следованием; Б) ветвлением; В) циклом с параметром ; Г) циклом – пока;Д) циклом - до; Е) выбором. 5) В чем отличие алгоритма от процесса решения задачи?
Задания: Составить блок - схемы к упражнениям [10]
Домашнее задание:[ Составить блок - схемы [10] стр.уровень)
Основная литература: 1, 4, 5-9,10
Дополнительная литература: 12, 13-16
Лаб. работа 2. Базовые управляющие структуры
Контрольные вопросы:
1) В чем разница между операторами цикла с предусловием и с постусловием?
2) В каком случае тело цикла с предусловие не выполняется? 3) Какие типы данных используются для параметров for-циклов?4) Какое значение имеет параметр for-цикла после его окончания, если цикл не был прерван? 5) Укажите причины зацикливания? 6) В чем разница между операторами циклов for-to и for- downto? 7)Из каких базовых управляющих структур состоит линейный алгоритм? 8) Нелинейный алгоритм из каких базовых управляющих структур может состоять? 9)Какие управляющие структуры использует циклический алгоритм? 10) Какие управляющие структуры использует разветвляющийся алгоритм?
Задания: [10] стр.уровень)
Домашнее задание:[10] стр.уровень)
Основная литература: 1, 4, 5-9,10
Дополнительная литература: 12, 13-16
Лаб. работа 3. Переменная и тип.
Контрольные вопросы:
1) Константы, переменные, простые типы данных; 2) Из каких основных структурных частей состоит программа на языке Турбо Паскаль? 3) Линейная программа ; 4) Нелинейная программа; 5) Операторы ввода/вывода, присваивания; 6) Использование операторов условного/безусловного переходов и циклических операторов; 7) Что такое тип данных? 8) Что такое переполнение? 9) Какой тип имеют условия в условных операторах? 10) Может ли селектор вариантов иметь действительный тип?
Задания: [10] стр.163 (2уровень), стр.299(3уровень)
Домашнее задание: [10] стр.162 (1уровень), стр.297 (2уровень)
Основная литература: 1, 4-6, 10
Дополнительная литература: 13, 15, 20
Лаб. работа 4. Структурное программирование
Контрольные вопросы:
1) Чем отличается семантика функций и процедур и как это отражается в их заголовках? 2) Чем отличается подстановка аргументов на место параметров- значений и параметров – переменных? 3) Какое имя называется в подпрограмме локальным, а какое глобальным? 4) Чем отличаются фактические от формальных параметров и какое соответствие должно быть между ними? 5) С какой целью используются подпрограммы? 6) Как функция возвращает значение; 7) В чем состоит идея нисходящего программирования
Задания: [10] стр.163 (2уровень), стр.299(3уровень)
Домашнее задание: [10] стр.162 (1уровень), стр.297 (2уровень)
Основная литература: 1, 4-6, 10
Дополнительная литература: 13, 15, 20
Лаб. работа 5. Понятие программного модуля
Контрольные вопросы:
1 ) Что такое модуль? 2) Что входит в состав модуля? 3) В чем состоит назначение функций? Процедур? Модулей? 4) Какие преимущества дает использование модулей? 5) В чем разница между записью заголовков подпрограмм в разделах интерфейса и реализации? 6) Можно ли в одном модуле определить несколько типов данных? 7) Почему модули не являются полноценным средством реализации абстрактных типов данных?
Задание: 1) Реализовать в виде модуля набор подпрограмм для выполнения операций а) сложения, б) вычитания, в) умножения, г) деления, д) сокращения дроби над обыкновенными дробями вида P/Q ( P- целое, Q- натуральное).
Домашнее задание: Добавить в рассмотренную на лаб. занятии программу операции: а) возведения дроби в степень N, б) функции, реализующей операции отношения дроби над обыкновенными дробями вида P/Q ( P- целое, Q- натуральное).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |


