Международный Институт XXI Века
Высокоуровневые
Методы Информатики
Программа дисциплины
МОСКВА
-
2004
1. Аннотация
Целью дисциплины является изучение
высокоуровневых методов информатики в области программирования. Сюда
относится объектно-ориентированный (ОО) метод и язык программирования
как основа построения качественного ПО и низкоуровневый язык ассемблера
как вспомогательного инструмента создания отдельных компонентов
программного обеспечения. Содержание курса посвящено бесшовному,
объектно-ориентированному процессу разработки, включающему весь
жизненный цикл, анализ, проектирование, разработку и сопровождение.
Теоретические знания, получаемые
студентами в рамках данного курса, содержат обоснование ОО метода, его
основных концепций. Упор делается на проектирование ПО с гарантированным
качеством на основе технологии Проектирования по Контракту, включающей
построение спецификаций классов.
Успешное достижение поставленных целей
возможно лишь при условии, что теоретическая часть курса поддерживается
практическим работой в современной объектно-ориентированной среде и
соответствующим языком программирования. Данный курс опирается на
открытую языковую среду разработки
Visual
Studio
.Net
и язык программирования
C#.
Необходимость одновременного освоения
новых концепций разработки проектов, новой среды разработки и нового
языка программирования ставит непростые задачи, как перед студентами,
так и перед преподавателями, ведущими курс. Тем не менее, выбор этой
среды программирования и языка
C#
оправдан тем, что появление
Visual
Studio
.Net
можно считать одним из наиболее значительных явлений в современной
технологии программирования, а язык
C#
одним из наиболее перспективных объектных языков, применяемых сегодня в
индустрии создания ПО. Важно также подчеркнуть, что теоретическая часть
курса опирается на фундаментальные свойства ОО метода, не зависящие от
появления новых языков и сред программирования, от сиюминутных
предпочтений рынка. В этом сочетании фундаментальных знаний и
современных промышленных средств достоинство данной программы.
Материал курса изучается на лекциях,
практических занятиях, в процессе выполнения домашних и контрольных
работ, курсовой работы и в ходе самостоятельной работы студентов.
На лекциях студенты приобретают
теоретические знания по основам ОО разработки качественного ПО, языкам
C#
и ассемблера.
На практических занятиях студенты
осваивают возможности среды
Visual
Studio
.Net
и языка C#,
а также ассемблера и приобретают умение программирования в классах.
Контрольная работа и домашнее задание
позволяют контролировать степень усвоения материала.
При выполнении курсовой работы студенты
создают проект, включающий основные изучаемые концепции данного курса.
Программа разработана академиком
Международной академии информатизации, доктором технических наук,
профессором С.В. Назаровым.
Обязательный
минимум содержания дисциплины по ГОС предусматривает следующий перечень
вопросов, подлежащих изучению.
Основные понятия инженерии ПО
(программного обеспечения): жизненный цикл разработки ПО и критерии
качества. Объектно-ориентированный анализ, проектирование, разработка и
сопровождение.
Классы как модули и как типы.
Инкапсуляция и скрытие информации. Классы и объекты. Статическая
структура классов и динамическая структура объектов в период выполнения.
Статическая типизация.
Построение спецификаций. Абстрактные
типы данных и классы.
Наследование. Построение семейства
классов. Одиночное и множественное наследование. Отношения между
классами: отношение наследования is
a
и клиентское отношение вложенности has.
Полиморфизм и динамическое связывание.
Универсализация. Классы с родовыми
параметрами. Ограниченная и неограниченная универсализация.
Предполагается, что студенты знакомы с
алгоритмическими языками (VB
или
C)
и обладают опытом модульного программирования в среде
Windows..
В результате изучения дисциплины студент
должен:
ЗНАТЬ:
принципы бесшовного, объектно-ориентированного
проектирования ПО на основе технологии Проектирования по Контракту;
методы спецификации классов;
методы объектно-ориентированной декомпозиции системы.
отношения наследования и вложенности между классами,
входящими в проект;
способы организации наследования, универсализации;
понятия статической типизации, полиморфизма,
динамического связывания;
основные характеристики существующих и перспективных ПЭВМ,
форматы машинных команд и команд ассемблера, основные способы задания
операндов;
организацию ввода и вывода данных, обработку различных
видов прерываний;
порядок обработки массивов данных, работу со структурами,
объединениями и записями;
порядок использования макросредств языка ассемблера и
процедур;
организацию связи ассемблера с языками высокого уровня;
организацию защищенного режима работы процессора.
УМЕТЬ:
проектировать класс на основе абстрактного типа данных;
проектировать семейство классов, используя отношения
вложенности и наследования;
работать в среде Visual Studio .Net
и реализовывать классы на языке программирования C#;
создать проект на основе семейства классов;
разрабатывать отдельные компоненты программного
обеспечения на языке ассемблера.
ИМЕТЬ ПРЕДСТАВЛЕНИЕ:
о проблемах и основных
направлениях развития ОО технологии создания качественного ПО на основе
повторно используемых компонентов;
об особенностях архитектуры персональных
ЭВМ, представлении в них числовых и текстовых данных, особенностях
выполнения машинных команд и команд ассемблера, макросредствах языка,
защищенном режиме работы процессора, программировании в ОС WINDOWS.
ОБЛАДАТЬ НАВЫКАМИ:
проектирования и разработки повторно используемых компонентов в
современной ОО среде программирования и на языке ассемблера.
Тематика контрольной работы: Создание класса для динамической структуры
данных.
Тематика домашней работы: Создание семейства классов с наследованием и
встраиванием.
Тематика курсовой работы:
Курсовая работа предполагает разработку
более серьезного проекта. Предлагаются две основные темы курсовой
работы:
Проектирование многопанельной интерактивной системы (заказ
билетов, выбор гостиницы, зарубежного тура, женихи и невесты и т.д.).
Проектирование командной системы с откатами (текстовый или
графический редактор, система сложных вычислений и т.д.).
Примечание.
В обоих случаях речь идет о создании образцов проектирования,
системы классов допускающих повторное использование в любой системе,
соответствующей образцу.
Так в первом случае речь идет о
семействе классов, описывающих работу с панелями и переходы между ними,
независимо от того, что вынесено на панель и содержательной стороны
диалога.
Во втором случае главной задачей
является разработка классов , позволяющих вести откаты и повторы команд
в любой командной системе.
Основу построения образцов можно найти в главах 20 и 21 основного
учебника.
3.
Тематический план изучения дисциплины
N
пп/п |
Наименование темы |
Объем,
час. |
В том
числе, час. |
лекции |
пр.зан. |
|
Раздел 1.
Объектно-ориентированный анализ и программирование |
40 |
16 |
24 |
1. |
Тема 1.
Принципы создания программного обеспечения. Качество ПО. |
2 |
2 |
|
2. |
Тема 2.
Основы объектной технологии |
4 |
2 |
2 |
3. |
Тема 3.
Абстрактные типы данных (АТД) |
4 |
2 |
2 |
4. |
Тема 4.
Статическая структура: классы |
6 |
2 |
4 |
5. |
Тема 5.
Динамическая структура: объекты |
6 |
2 |
4 |
6. |
Тема 6.
Управление памятью. Универсальность |
6 |
2 |
4 |
7. |
Тема 7.
Наследование, множественное наследование |
6 |
2 |
4 |
. |
Раздел 2.
Программирование на языке ассемблера |
24 |
12 |
12 |
8. |
Тема 1.
Особенности архитектуры ПЭВМ |
4 |
4 |
0 |
9. |
Тема 2.
Язык ассемблера
IBM-совместимых
ПЭВМ |
8 |
4 |
4 |
10. |
Тема 3.
Организация программ на языке ассемблера |
12 |
4 |
8 |
|
ВСЕГО по дисциплине |
64 |
28 |
36 |
4. Содержание программы
Раздел 1. Объектно-ориентированный
анализ и программирование
Тема 1. Принципы создания
программного обеспечения. Качество ПО
Качество основная цель инженерии ПО.
Внешние и внутренние критерии качества. Корректность. Устойчивость.
Расширяемость. Повторное использование. Совместимость. Эффективность.
Переносимость. Функциональность. Своевременность. Документация. Затраты
на сопровождение
Литература:
[1.1], гл. 1
Контрольные вопросы по теме:
- Перечислите внешние и внутренние
факторы качества ПО.
- Как достигается выполнение внешних
факторов?
- Компромисс между факторами.
- Функциональность и кривые Осмонда.
- Роль сопровождения в общем цикле
процесса разработки ПО. Как распределяются затраты на сопровождение?
Тема 2. Основы объектной технологии
Пять критериев модульного метода:
Декомпозиция, Композиция, Понятность, Непрерывность, Защищенность. Пять
правил обеспечения модульности: Прямое отображение, Минимум интерфейсов,
Слабая связность, Явные интерфейсы, Скрытие информации. Пять принципов
построения модульной системы: Лингвистических единиц,
Самодокументируемости, Унифицированного доступа, Открыт-Закрыт,
Единственного выбора.
Повторное использование. Изменчивость и
постоянство. Пять требований к модульной структуре: Вариации типа,
Группирование подпрограмм, Вариации реализации, Независимость
представления, Факторизация общего поведения. Традиционные модульные
структуры. Перегрузка и универсальность. Функциональная декомпозиция.
Декомпозиция, основанная на объектах. Нахождение объектных типов.
Литература:
[1.1], гл 3, [1.1], гл. 4; [1.1], гл.
5
Контрольные вопросы по теме:
- В чем суть каждого критерия
модульности?
- Можно ли назвать метод разработки
модульным, если он не удовлетворяет всем критериям?
- Определите смысл каждого правила
обеспечения модульности.
- Какими средствами обеспечиваются
принципы построения модульной системы?
- Предложите метрики для количественного
измерения модульности проекта.
-
В чем главная трудность повторного
использования?
- Формы повторного использования.
- В чем суть универсальности модуля?
- Какие проблемы решает, а какие не
решает универсальность?
- Достоинства и недостатки
функциональной декомпозиции.
- Объясните сущность объектного подхода
к декомпозиции системы.
- Как найти релевантные типы объектов?
- Почему при проектировании программной
системы объектный подход имеет преимущества над функциональным?
Тема 3.
Абстрактные типы данных (АТД)
Необходимость абстракции. Вариации
реализации. Формализация спецификаций: типы, функции, аксиомы,
предусловия. Спецификация типов. Перечисление функций. Задание аксиом.
Предусловия. Спецификация стека как АТД. От АТД к классам. Роль
отложенных классов на этапе анализа и проектирования системы.
Литература:
[1.1], гл 6
Контрольные вопросы по теме:
- С чего следует начинать при
проектировании класса?
- Что входит в описание АТД?
- Должно ли описание АТД быть полным?
- Каково взаимоотношение между классом и
АТД?
- Что такое отложенный класс и какова их
роль?
-В чем суть бесшовности ОО процесса
разработки ПО?
Тема 4. Статическая структура: классы
Роль классов. Унифицированная система
типов. Базисные соглашения. ОО стиль вычислений. Клиенты и поставщики.
Вызов компонентов класса. Выборочный экспорт и скрытие информации. Общий
взгляд на ОО систему и процесс ее выполнения. Обсуждение деталей.
Литература:
[1.1], гл. 7.
Контрольные вопросы по теме:
- Что есть класс и что есть объект.
- Каковы две главные роли класса при
построении ПО?
- Объясните базисный механизм вычислений
в ОО системе.
- Класс с точки зрения поставщика.
- Класс с точки зрения клиента.
- Должна ли ОО система иметь
централизованную структуру?
-Должна ли ОО система иметь главную
программу?
Тема 5.
Динамическая
структура: объекты
Объекты. Поля объекта. Объекты и ссылки.
Идентичность объектов. Структура ОО системы периода выполнения.
Манипулирование объектами и ссылками. Процедуры создания (конструкторы)
объектов. Операции над ссылками. Проблемы сохранения динамической
структуры в постоянной памяти. Развернутые типы. Присоединение объекта к
сущности. Ссылочная семантика и семантика значений. Псевдонимы.
Литература:
[1.1], гл.7.
Контрольные вопросы по теме:
- Приведите пример динамической
структуры ОО системы в период выполнения.
- Как выполняется присоединение
сущностей к объектам?
- Может ли динамическая структура
содержать циклы?
- Поясните ссылочную семантику и
операции над ссылками.
- Зачем нужны развернутые типы?
- Специфика операций над значениями.
Тема 6. Управление памятью.
Универсальность
Три режима управления памятью:
статическое распределение, распределение в стеке, динамическая память
типа куча. Достижимые и недостижимые объекты. Проблемы освобождения
памяти. Стратегия освобождения, управляемая программистом. Подсчет
ссылок. Автоматическое управление памятью. Сборка мусора. Внешнее
окружение и сборщик мусора.
Литература:
[1.1], гл. 9
Контрольные вопросы по теме:
- Охарактеризуйте три стратегии
распределения памяти.
- Нужно ли экономить память?
-
В чем недостатки подхода, когда
освобождением памяти занимается сам программист?
- Опишите различные подходы к
автоматической сборке мусора.
- Почему простой подсчет ссылок не
является универсальным приемом.
Тема 7. Наследование, множественное
наследование
Наследование.
Родители и дети Потомки и предки. Полиморфизм. Типизация и наследование.
Динамическое связывание. Отложенные компоненты и классы. Техника
переобъявлений. Смысл наследования. Роль отложенных классов.
Множественное наследование. Дублирующее наследование. Устранение
конфликтов при множественном наследовании. Наследование и утверждения.
Глобальная структура наследования. Наследование и универсальность.
Попытка присваивания. Закрепленные объявления. Наследование и скрытие
информации. Статическая проверка типов и динамическое связывание.
Литература:
[1.1], гл. 14 -17
Контрольные вопросы по теме:
- Рассмотрите наследование с позиций
модульности.
- Рассмотрите наследование с позиций
типа и отношения is
a.
- В чем суть полиморфизма?
- Что происходит с утверждениями класса
при наследовании?.
- Следует ли иметь два вида связывании
статическое и динамическое?
- Может ли аэроплан быть имуществом?
- Может ли дерево быть списком и
одновременно элементом списка?
- Какие проблемы возникают при
множественном наследовании?
- Когда следует закреплять объявления?
Почему важно иметь статическую проверку
типов и динамическое связывание?
Раздел 2. Программирование на языке
ассемблера
Тема 1. Особенности архитектуры ПЭВМ
Организация памяти ПЭВМ. Программно -
доступные регистры. Понятие о защищенном режиме. Представление числовых
и текстовых данных, особенностях выполнения машинных команд. Основные
характеристики существующих и перспективных ПЭВМ.
Системные регистры микропроцессора:
регистры управления, регистры системных адресов и регистры отладки.
Переключение микропроцессора в защищенный режим. Обработка прерываний в
защищенном режиме работы процессора. Переключение задач. Уровни
привилегий и защита по привилегиям.
Тема 2. Язык ассемблера
IBM-совместимых
ПЭВМ
Форматы команд и директив ассемблера.
Типы данных, основные способы задания операндов.
Команды пересылки. Арифметические и
логические команды. Команды передачи управления: безусловные и условные
переходы.
Организация ввода - вывода информации
средствами ОС и BIOS.
Разработка простейших программ на
ассемблере.
Тема 3. Организация программ на языке
ассемблера
Обработка различных видов прерываний;
организация и обработка массивов данных, работа со структурами,
объединениями и записями; порядок использования макросредств языка
ассемблера и процедур.
Организация связи ассемблера с языками
высокого уровня.
5.
Литература
1. Базовый учебник
Теоретическая часть курса строится на
основе книги:
1.1 Бертран Мейер
Объектно-ориентированное конструирование программных систем, Изд.
Русская Редакция, т.1, 2. 2004 г. (подготовлена к изданию на момент
написания программы).
2. Основная литература
В практической части курса используется
литература по среде
Visual
Studio
.Net
и языку программирования
C#:
2.1 Брайан Джонсон, Крэйг Скибо, Марк
Янг Основы Visual
Studio
.Net
2003, Изд. Русская Редакция, М., 2003 г
2.2 Чарльз Петцольд Программирование
для Windows
на С#, Изд. Русская Редакция, т.1, 2. , 2002 г
3.Дополнительная
литература
Литература по программированию на
C#
и Visual
Studio
.Net
по выбору преподавателя, ведущего практические занятия.
|