- •1. Кризис программирования
- •2. Понятие жизненного цикла по
- •3. Требования к технологии проектирования
- •4. Понятия профессионального программирования
- •5. Проект и команда
- •6. Задача профессионального программирования
- •7. Алгоритмы
- •8. Модели и моделирование
- •9. Структурный подход
- •9.1. Проблема сложности
- •9.2. Сущность структурного подхода
- •9.3. Метод функционального моделирования (sadt)
- •9.3.1. Состав функциональных моделей
- •9.3.2. Методика построения модели
- •9.4. Метод моделирования процессов - потоков данных (dfd)
- •9.4.1. Общая концепция
- •9.4.2. Состав диаграмм потоков данных
- •13. Венгерская нотация
- •14. Методология и парадигма программирования
- •15. Современные методологии программирования
- •16. Методология императивного программирования
- •17. Методология объектно-ориентированного программирования
- •18. Методология функционального программирования
- •19. Методология логического программирования
- •20. Методология программирования в ограничениях
- •21. Методология структурного императивного программирования
- •22. Методология параллельного императивного программирования
- •23. Методология нейросетевого программирования
- •23.1. Модель нейрона с линейной функцией активации
- •23.2. Модель нейрона с радиальной функцией активации
- •23.3. Разработка нейросетевой модели
- •24. Основные типы ошибок в программах
- •25. Отладка и тестирование
- •26. Режимы работы компилятора Delphi для поиска ошибок
- •27. Задание режимов работы отладчика с помощью переключающих директив
- •28. Пользователи и их поддержка
- •29. Поддержка программиста: общие требования
- •29.1. Пролог модуля
- •29.2. Проектная документация
- •29.3. Оформление текста программы
- •30. Поддержка конечного пользователя
- •31. Технология программирования графики
- •31.1. Графическая подсистема оболочек Win32/64
- •31.2. Графические средства Delphi
- •31.3. Проектирование интерфейса с пользователем: компоненты стандартных диалогов
- •32.Технология компонентного программирования
- •32.1. Технология com
- •32.1.1. Общая концепция
- •32.1.2. Интерфейс com
- •32.1.3. Сервер com
- •32.2. Технология ole
- •32.2.1 Суть и содержание ole
- •32.2.2.Терминология ole
- •32.2.3. Автоматизация ole
- •32.2.4. Структурированная память
- •32.3. Технология corba
- •32.4. Технология Java
- •32.5.Технология .Net
- •33. Технология описания аппаратуры
- •Input clock, reset, en;
- •If(!reset)
- •34. Технология коллективной разработки
- •34.1. Авторская разработка
- •34.2. Коллективная разработка
- •34.2.1. Технические командные роли
- •34.2.2. Психологические командные роли
- •34.2.3. Типы совместной деятельности
- •34.3. Общинная модель разработки
- •35. Технология оценки качества по
- •35.1. Подходы к оценке качества по
- •35.2. Характеристики качества по
- •35.3. Оценка качества процесса разработки
- •35.3.1. Модель зрелости процесса разработки по
- •35.3.2. Определение возможностей и улучшение процесса создания по
- •35.4. «Достаточно хорошее» по
- •33.5. Стандартизация информационных технологий
- •Международные организации, входящие в структуру оон.
- •Промышленные профессиональные или административные организации.
- •Промышленные консорциумы.
- •36. Инструментальные средства поддержки некоторых технологических подходов
- •36.1. Инструментальные системы
- •36.1.1. Инструментальные среды программирования
- •36.1.2. Средства автоматизации разработки программ (case-средства)
- •36.1.3. Интегрированные среды
- •36.1.4. Репозитории проекта
- •36.2. Поддержка коллективной разработки: системы управления версиями
- •37. Организация диалогов
- •38. Защита программного кода
19. Методология логического программирования
В соответствии с этим подходом проблема описывается в виде программы, которая состоит из фактов и логических формул, и решается с помощью механизмов логического вывода.
Методы и концепции:
Применение единого механизма логического доказательства ко всей программе.
Унификация структур данных при декомпозиции.
Синтаксис и семантика задаются при помощи фактов (аксиом) и правил вывода. Правила вывода имеют вид так называемых «дизъюнктов Хорна» – утверждений вида:
А <= B1& … &Bn
Аксиомы в программах обычно представляются, как правила с пустой «посылкой»:
А
Известные языки логического программирования:
Prolog (1971)
LOGLISP (1982)
Mercury (1993)
Класс задач, решаемых с помощью методологии логического программирования, совпадает с классом задач функционального программирования.
20. Методология программирования в ограничениях
Для данной методологии характерно, что в программе определяются:
тип данных решения;
предметная область решения;
ограничения на значение искомого решения.
Синтаксис и семантика. В данном случае постановка задачи – это:
Конечный набор переменных V = {v[1], …, v[n]}.
Набор соответствующих им конечных множеств значений
D = {d[1], …, d[n]}.
Набор ограничений C = {c[1], …, c[m]}.
Ограничения представляются как утверждения, в которые в качестве «параметров» входят переменные из некоторого подмножества V[j], j=1..m набора V.
Решение задачи – это набор значений переменных, удовлетворяющий всем ограничениям C[j].
Исполнение программы – это нахождение значений переменных.
Языки программирования в ограничениях:
Sketchpad (1963)
УТОПИСТ (1980)
Thinglab (1980)
IDEAL (1981)
OPS5 (1987)
Bertrand (1998)
OPL (1998)
Пример программы на языке УТОПИСТ (Универсальные Текстовые ОПИСания Терминов):
ПУСТЬ`
СХЕМА: (I1, I2, I3, U1, U2, U3, R1, R2, R3: ВЕЩ`;
УРАВ` U1 = I1 * R1;
УРАВ` U2 = I2 * R2;
УРАВ` U3 = I3 * R3;
УРАВ` I1 + I2 + I3 = 0);
СХЕМА1: СХЕМА
R1 = 16, R2 = 32, R3 = 5,
U1 = 50, U2 = -28;
ДЕЙСТВИЯ`
НА` СХЕМА1 ВЫЧИСЛИТЬ` U3;
В класс задач, решаемых с помощью данной методологии, в основном входят задачи исследования операций и задачи искусственного интеллекта.
21. Методология структурного императивного программирования
Подход заключается в задании хорошей топологии императивных программ за счёт следующих приёмов:
Отказ от использования глобальных данных.
Отказ от оператора безусловного перехода.
Разработка модулей с сильной связностью и обеспечение их независимости от других модулей.
Методы и концепции:
Метод алгоритмической декомпозиции сверху вниз. Заключается в пошаговой детализации постановки задачи, начиная с наиболее общей задачи.
Метод модульной организации частей программы. Заключается в использовании при кодировании трёх основных управляющих конструкций (следование, ветвление, цикл).
Основное отличие в языках структурного императивного программирования от классической методологии «чистого» императивного программирования заключается в отказе от оператора безусловного перехода.
Класс задач для данной методологии соответствует классу задач для императивной методологии. Однако с применением данной методологии удаётся разрабатывать более сложные программы, поскольку их легко воспринимать и анализировать.