- •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. Защита программного кода
14. Методология и парадигма программирования
Методология программирования – совокупность методов, применяемых в жизненном цикле программного продукта и объединенных общим философским подходом.
С каждой методологией программирования можно связать некоторые характерные для нее атрибуты:
Философский подход (или основной принцип).
Связное множество методов реализации.
Концепции (понятия, замыслы), поддерживающие методы и позволяющие более точно их определять.
Для каждой методологии существует явный создатель - основоположник методологии. Каждая методология создается на основе накопленных в предметной области эмпирических фактов и практических результатов. Для методологий программирования такими фактами и результатами являлись уже существующие языки программирования.
Когда методология применяется на стадии программирования программного продукта, очень часто ее называют парадигмой программирования – способом мышления и программирования, не связанным с конкретным языком программирования.
Термин «парадигма» был впервые предложен Томасом Куном. Он определял парадигму как свод норм научного мышления.
В общем случае парадигма – это правило (modus operandi) развития научного знания. Оно в течение определенного времени дает научному сообществу модель постановки проблем и их решений.
15. Современные методологии программирования
Классификацию современных методологий можно определить на основе способов описания алгоритмов:
Методология императивного программирования.
Методология объектно-ориентированного программирования.
Методология функционального программирования.
Методология логического программирования.
Методология программирования в ограничениях.
Методология нейросетевого программирования.
Следует особо отметить, что любая методология находятся в диапазоне между двумя фундаментальными понятиями информатики – алгоритма и модели.
В приведенной классификации они указаны в порядке уменьшения связи методологии с понятием алгоритм и увеличением связи с понятием модель.
На данный момент также выделяют две разновидности организации аппаратной поддержки методологий: централизованную и параллельную.
Получение качественной оценки любой методологии основано на использовании двух параметров:
Эффективность ПО на современных компьютерах.
Общие затраты на разработку ПО.
Соответственно выделяют две ветви в развитии языков, поддерживающих методологии:
Языки (как правило, компилируемые), ориентируемые на скорость исполнения кода программы.
Языки (и компилируемые, и интерпретируемые), ориентированные на высокий уровень и удобство программирования.
16. Методология императивного программирования
Методология императивного программирования – это подход, основанный на последовательном изменении состояния вычислителя пошаговым образом.
Императивное программирование – это исторически первая поддерживаемая аппаратно методология программирования. Она ориентирована на классическую фон Неймановскою модель, которой присущи следующие характеристики:
Единственная последовательно адресуемая память (программа и данные хранятся в одной памяти, адреса областей которой составляют единую последовательность).
Память является линейной одномерной.
Отсутствует явное различие между командами и данными (их идентифицируют неявным способом при выполнении операций).
Назначение данных определяется логикой программы.
Методы и концепции:
Последовательное изменение состояний вычислителя.
Пошаговый контроль управления потоком команд.
Вычислительная модель представляет собой описание последовательного изменения состояний вычислителя (применяемая математическая модель - машина Тьюринга).
Применяемая структура данных – последовательность пар ячеек «адрес -> значение».
Синтаксис и семантика. Основным синтаксическим понятие - оператор. При этом различают:
Атомарные операторы – никакая их часть не является самостоятельным оператором (например, оператор присваивания, оператор безусловного перехода, вызова процедуры и т.п.).
Структурные операторы, объединяющие другие операторы в новый, более крупный оператор (например, составной оператор, операторы выбора, цикла и т.п.).
На практике для описания синтаксиса языков широко применяется формальная система обозначений Бэкуса – Наура. В ней одни синтаксические категории определяются через другие последовательно. В данной системе обозначений используются:
Метапеременные — представляют собой слова или группы русских слов, заключённых в угловые скобки. Под значением метапеременной понимается некоторая конечная последовательность основных символов языка, из которых, в конечном счёте, состоят программы.
Символ ::= означает «определяется как».
Символ | означает «или».
Символ * означает «произвольное количество повторений (в том числе ноль раз) того символа, за которым он указан».
Символы, указанные в квадратных скобках — являются необязательными.
Пример варианта синтаксиса описания алгоритмов в императивной модели программирования:
<оператор> ::= <простой оператор>|
|<структурный оператор>;
<простой оператор> ::=<оператор присваивания>|
|<оператор вызова>|
|<оператор возврата>;
<структурный оператор> ::=
<оператор последовательного исполнения>|
|<оператор ветвления>|<оператор цикла>;
<оператор присваивания> ::= <переменная>::=<выражение>;
<оператор вызова> ::= <имя программы>(<список параметров>);
<оператор возврата> ::= return [<выражение>];
<оператор последовательного исполнения> ::=
begin <оператор>* end;
<оператор выбора> ::= if <выражение> then <оператор>*
(elseif <выражение> then <оператор>*)*
[else <оператор>*]
end;
<оператор цикла> ::= while <выражение > dо <оператор>* end;
Средство структурирования – подпрограмма (процедура или функция). Подпрограммы имеют параметры и локальные определения и могут быть вызваны рекурсивно. Функции возвращают значения как результат своей работы.
Типичный подход к решению задачи: сначала исполняется алгоритм, решающий первую задачу. Результаты его работы сохраняются в специальном месте памяти, которое известно следующему алгоритму, и используется им и т.д.
Императивные языки программирования представляют собой компактное средство описания функции переходов между состояниями вычислителя.
Считается, что первым алгоритмическим языком программирования был язык Plankalkuel (от plan calculus), разработанный в 1945-1946 гг. Конрадом Цузе (Konrad Zuse).
Наиболее известные и распространённые императивные языки программирования, были созданы в конце 50-х – середине 70-х годов XX века.
Fortran (1954)
Algol (1960)
Pascal (1970)
C (1972)
ICON (1974)
Класс задач. Данная методология наиболее пригодна для решения задач, в которых последовательное исполнение каких-либо команд является естественным. Пример – управление современными аппаратными средствами. С ростом сложности задачи императивные программы становятся менее читаемыми.