Скачиваний:
151
Добавлен:
08.07.2017
Размер:
4.08 Mб
Скачать

1.Уровниязыков программирования. Семантика и интерпретация языка программирования. Семантические уровни программной системы. Основные источники, предпосылки и составные элементы объектного подхода к разработке программ. Принципы объектного подхода ­ абстрагирование, ограничение доступа, модульность, иерархия, типизация, параллелизм и устойчивость. ​(Богаевский)

2.Жизненныйцикл программного обеспечения. Модели жизненного цикла. Программное обеспечение поддержки жизненного цикла. Классификация CASE. Понятия методологии, метода, нотации и средства CASE. Уровень развития технологии разработки программного обеспечения, СММ. ​(Богаевский)

3.Репозиторийи артефакты процесса разработки. Возвратное проектирование. Реинжиниринг. ​(Баканов)

4.Рефакторинг, цели, правила применения. Каталог рефакторингов, классификация, примеры применения. ​(Баканов)

5.Шаблоны проектирования, цели, правила применения. Каталог шаблонов проектирования, классификация, примеры применения создающих, структурных и поведенческих шаблонов. Архитектурные шаблоны​(Гаврилов)

6.RationalUnified Process. Модель жизненного цикла. Рабочие процессы и работы. Работники. Артефакты. Планирование и контроль хода выполнения проекта.​(Гаврилов)

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

8.Структурныйподход к разработке программного обеспечения. Основные виды диаграмм. Методология OMT основные отличия от UML. ​(Тарасов)

9.МетодикаШлеера­Меллора. Информационное моделирование, модели состояний и процессов. ​(Тарасов)

10.UML. Элементы моделей, основные отношения. Механизмы расширения UML. (Гарченко)

11.​Основные диаграммы UML. Статический и динамический виды.​(Данилова)

12.Архитектураи стиль программной реализации. Идентификаторы и управление видимостью. Явное управление видимостью, пространства имен. ​(Черницын)

13.Стильреализации класса. Ссылки. Локальные и вложенные классы. Контроль доступа. Функции­члены и функции­друзья. Совместное использование. Статические члены. Конструкторы, деструкторы, особые операции класса. (Камышова)

14.Иерархииклассов. Структура объекта при разных видах наследования. Неоднозначности и проблемы с повторным вызовом методов. "Подклеенные" классы. Полные объекты конечных производных классов. Таблицы виртуальных функций. Варианты динамического определения типа объекта​.(Камышова)

15.Шаблоны. Раздельная компиляция. Наследование шаблонов. Выбор алгоритма через параметр шаблона. Специализация шаблонов. Шаблоны как параметры шаблонов.​(Черницын)

16.Обработкаисключительных ситуаций. Особые случаи при обработке исключительных ситуаций. Исключительные ситуации и потребление ресурсов. (Козицкий)

17.Контрольсемантической корректности программ. Предусловия, постусловия, правила вывода, инварианты циклов. Подтверждения, инварианты объектов, сигналы. ​(Козицкий)

18.Типыклассов: конкретный, абстрактный, узловой, интерфейсный. Множественные и насыщенные интерфейсы. Фабрики классов. Сериализация. Дескриптор и представление. ​(Грейнер)

19.Библиотекиконтейнерных классов. Библиотеки интрузивных и неинтрузивных контейнеров. Стандартная библиотека шаблонов и ее особенности. STL­контейнеры, адаптеры контейнеров, итераторы, алгоритмы, аллокаторы, функциональные объекты, адаптеры функциональных объектов. ​(Грейнер)

20.Численныеметоды. Численный массив, срез, композитор, маска, косвенный массив. Обобщенные численные алгоритмы.​(Данилова)

ТЕМЫ ПРАКТИЧЕСКИХ ЗАДАНИЙ

1.​Бизнесмоделирование и планирование проекта по индивидуальному заданию.

2.Объектно­ориентированный анализ и проектирование на UML с использованием шаблонов проектирования.

3.​Улучшениестиля программной реализации на основе рефакторингов. 4.​Программированиеконтейнерных классов.

5. Проектированиеконтроля аномального поведения программ, контрактное программирование.

1. Уровни языков программирования.

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

МЯ – машинный язык (assembler)

ЯСП – язык системного программирования. (C++, Java) ЯМ – язык моделирования. (UML)

ЯКП – язык конечного пользователя. (подмножество естественного языка, техническое задание)

ЕЯ – естественный язык.

Язык​– средство коммуникации между партнерами в целях их кооперации. Для кооперации необходима общая модель мира и согласованные действия в этом мире. Поэтому ​цель ​любого ​языка ​– это описание модели мира, а также описание и предписание действий.

Основной семантической и синтаксической единицей ЕЯ является

предложение​.

Типы предложений​:

­ повелительное – предписывает действие.

*непроцедурное (описывают результат действий)

*процедурное (описывают последовательность действий)

­повествовательное, вопросительное (служат для передачи личной модели

мира)

МЯ полностью процедурный. ЕЯ – непроцедурный. ЕЯ => МЯ ~ Непроцедурный => Процедурный.

ЕЯ – предикативный язык с редкими процедурными вставками. Парадигмы программирования.

­процедурное (необходимо для эффективной реализации алгоритмов).

­логическое (описывается модель мира, строятся запросы в непроцедурном

стиле).

­ООП. Сочетает возможность построения модели мира в терминах объектов и эффективно реализует их поведение на уровне методов в процедурном стиле.

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

Тезис Черча. Любое вычисление может быть реализовано на машине Тьюринга.

Семантические уровни программной системы.

Основные источники, предпосылки и составные элементы объектного подхода к разработке программ.

Составные элементы ОО подхода.

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

Класс – тип объекта.

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

ООанализ– это создание моделей взаимодействия сущностей предметной области в терминах объектов и классов.

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

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

Источники ОО подхода.

1)​Развитиетипизации в языках программирования и понятие абстрактного типа данных.

2)​Структурноепрограммирование (без меток). ОО языки позволяют структурировать программы за счет наследования и понятия класса.

3)​Модульноеи сборочное программирование (библиотеки мат функций и подпрограмм)

– попытка собирать программы из готовых модулей.

4)​Синтезпрограмм – автоматическое построение программ из готовых модулей по исходным данным и результатам.

5)​Языкимоделирования.

Предпосылки ОО подхода.

1)​«Дешевая память». Разница в ООП и в функциональном программировании в таблице виртуальных функций.

2)​Интерактивнаясреда выполнения программ. Появление ОС с GUI. (Win 95) 3)​Осознаннаяпотребность в модульной технологии.

Для универсальных классов нужно больше времени, но потом это окупается.

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

Абстрагирование.

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

Уровни абстракции:

­Абстракция сущности.

­Абстракция поведения.

­Архитектурная абстракция.

­Произвольная абстракция.

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

Интерфейс​отражает внешнее проявление объекта (контрактные обязательства) и представляет собой абстракцию поведения.

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

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

Классы и объекты – логическая структура программы, а распределение их по модулям

– физическая структура.

Причины отступления от модульности:

­Эффективность.

­Секретность.

Иерархия– ранжированная и упорядоченная система абстракций. Существует 2 вида иерархии:

­Наследование (иерархия классов).

* Таксономия (наследование свойств) * Партномия (наследование частей)

­Агрегирование (иерархия объектов).

Цели наследования:

­Для специализации (порождение подтипов).

­Для спецификации (описание общего интерфейса, характерного для всех наследников)

­Для конструирования.

­Для ограничения.

­Для комбинирования. Виды наследования:

­Одиночное (1 базовый класс).

­Множественное (Несколько базовых классов). Проблемы множественного наследования:

­Дублирование полей.

­Дублирование вызовов.

Типизация – ограничения на взаимную замену класса в операциях на уровне исходного языка программирования.

Виды:

­Строго типизированные (Ada, Pascal)

­Не строго типизированные (C++, Java)

­Не типизированные (Smalltalk)

Полиморфизм – возможность использовать одно имя для работы с объектами разных классов. Бывает простой (1 шаблон) и множественный (более 1 шаблона). Проявление полиморфизма в C++:

­Полиморфизм виртуальных функций (простой).

­Шаблоны (множественный).

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

Процессы бывают:

­Последовательные.

­Квазипараллельные (существует несколько, но выполняется один).

­Параллельные (все выполняются параллельно).

ООП языки с параллелизмом:

­Ортогональные (средства параллелизма добавлены не зависимо от объектной ориентации).

­Однородные (один вид параллельных объектов).

* Интегрируемые (параллелизм внутри объектов).

*Не интегрируемые.

­Неоднородные.

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

Уровни устойчивости:

­Результаты промежуточных вычислений в выражениях.

­Локальные.

­Глобальные.

­Объекты, сохраняющиеся между запусками программы.

­Объекты, сохраняющиеся между версиями программы.

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

2. Жизненный цикл программного обеспечения.

Жизненный цикл программного обеспечения

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

­Планирование разработки.

­Анализ требований и предметной области.

­Проектирование.

­Программирование и отладка (исправление ошибок).

­Тестирование (поиск ошибок).

­Эксплуатация и сопровождение.

­Модернизация и масштабирование.

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

3 основные модели жизненного цикла:

­Каскадная (водопадная). Переход при полном завершении работы на предыдущем этапе.

­Каскадная с перекрытиями.

­Итерационная. Добавляются циклы обратной связи между этапами. Пример RUP.

Недостаток. Начальные этапы могут растягиваться на неопределенное время.

­ Спиральные.

Программная поддержка жизненного цикла. Классификация CASE. Понятия методологии, метода, нотации и средства CASE.

CASE – комплекс программ для поддержки этапов жизненного цикла. (Computer Aided Software Engineerings)

Типы CASE­средств:

­Uppercase – средства планирования для руководителей.

­Middlecase – средства анализа и проектирования.

­Lowercase – средства разработки ПО и проектирования БД.

Любая CASE система основана на парадигме Методология­Метод­Нотация­Средство. Парадигма – концептуальная схема, модель постановки задачи.

Методология ​– последовательность и этап работы, правило применения методов. Метод ​– процесс описания ПО.

Нотация ​– форма описания продукта (UML диаграммы). Средство ​– инструментарий (tool).

Существуют комплексные системы, ориентированные на проектирование ПО, но они имеют высокую стоимость.

Внастоящее время применяются 2 ​парадигмы​:

­Традиционная.

­Объектно­ориентированная.

Задачи поддержки.

­ Управление проектом. Сетевые графики, диаграмма Ганта, PERT.

*Планирование.

*Распределение ресурсов.

*Контроль сроков.

­Организация среды и хранения рабочих версий проекта (репозиторий). Чаще всего репозиторий – надстройка над реляционной БД.

­Визуальное моделирование. Microsoft Visio, Rational Rose.

­Среда разработки программы (включает средства отладки, тестирования и

т.д.).

­Генерация прототипов.

* RAD – Rapid App Development. * 4GL – 4 Generation Language.

­Управление конфигурациями ПО.

*Контроль версий.

*Параллельная и распределенная разработка.

*Отслеживание ошибок и изменений.

­Тестирование, отладка, контроль качества.

*Тесты.

*Сценарии.

*Метрики программ.

*Системы авт. тестирования.

*Системы авт. верификации.

*Программы профилирования.

­Документирование и генерация документации.

Уровень развития технологии разработки программного обеспечения, СММ.

CMM – Capability Maturity Model.

5уровней:

­Initial. Главная фигура – разработчик.

­Repeatable. Стандартный, повторяющийся от одного проекта к другому процесс управления и график разработки. Главное лицо – менеджер проекта.

­Defined. Устранена зависимость сроков и качества от менеджера, так как все процедуры документированы.

­Managed. Ведется сбор и обработка информации о проекте, анализируется труд программистов.

­Optimized. Собираемая информация о проекте динамически используется для улучшения процесса разработки.

Первые два уровня не сертифицируются.

3. Репозиторий и артефакты процесса разработки

Артефакт ​– информационный элемент, который создается или используется в процессе разработки.

4 пончика в разработке:

работники (workers roles) (кто?)

рабочие процессы (workflow) (когда?)

работы (activities) (как?)

артефаткы (что?)

Примеры артефактов​:

vision – документ, описывающий вид конечного user’а или поизлетели разработанного ПО.

stake holder – потребности заинтересованных лиц, любой человек / представитель организации, имеющий обоснованный интерес в проекте и чьё мнение должно быть учтено.

use case specification – спецификации прецедентов использования. Включает use case модель (диаграмма UML Use case), детализацию прецедентов с помощью диаграммы последовательностей или сотрудничества и херобора.

словарь – описывает термины проекта.

прототип UI.

описание архитектуры системы, диаграммы пакетов, классов, динамические диаграммы

класс, пакет, интерфейс

учебные материалы

план проекта и итераций

тесты

файлы

Репозиторий ​– средство хранения, доступа и обновления артефактов. Фактически репозиторий работает с мета­объектами, т.е. с объектами, хранящими информацию о других объектах.

Свойства репозитория​:

иерархическое хранение мета­данных

хранение документации по проектам

поддержка множественных версий объектов

возможность оповещения о событиях с контролируемыми объектами

возможность описания потоков работ над объектами