- •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. Защита программного кода
6. Задача профессионального программирования
Основная задача профессионального программирования заключается в создании качественного программного обеспечения.
Стержневая подзадача – осуществление переходов от уровня постановки задачи в предметной области к уровню моделей, алгоритмов и машинного кода.
Цель программирования – получение результатов работы программы.
Рекомендации к решению основной задачи программирования на профессиональном уровне:
Сначала следует определить методологию программирования, которая будет включать совокупность методов и концепций, объединённых общим философским подходом.
Далее следует выбрать технологический подход, который будет определять совокупность процессов, применяемых при разработке программного продукта. Определённая ранее методология включает совокупность методов, которые будут применены в технологическом подходе.
Методология и технология определяют языки и системы программирования, необходимые для каждого процесса избранного технологического подхода.
Технологические процессы будут исполняться на некоторых аппаратной и операционной платформах. Следует отметить, что аппаратная и операционная платформы могут существенно определять наличие и специфику инструментов (систем программирования). В большинстве разработок следует избегать зависимости от платформ, однако ряд проектов (как правило, системных) в большой степени опирается на их хорошее знание.
Таким образом, можно резюмировать, что технология программирования, как таковая, изучает технологические процессы и порядок их выполнения при решении основной задачи профессионального программирования, опираясь на использование соответствующих знаний, методов и средств.
7. Алгоритмы
Алгоритм – точное и конечное описание того или иного общего метода, основанного на применении исполнимых элементарных тактов обработки данных. Алгоритм имеет пять важных свойств:
Конечность. Алгоритм всегда должен заканчиваться после выполнения конечного числа шагов.
Определённость. Каждый шаг алгоритма должен быть точно определён.
Наличие входных данных. Алгоритм имеет некоторое число входных данных, задающихся до начала его работы или определяющихся динамически во время его выполнения.
Наличие выходных данных. Алгоритм имеет одно или несколько выходных данных, имеющих определённую связь с входными данными.
Эффективность. Алгоритм обычно считается эффективным, если его операторы достаточно просты для того, чтобы их можно было точно выполнить в течение конечного промежутка времени с помощью карандаша и бумаги.
С алгоритмами связаны следующие области исследований:
Анализ алгоритмов. Предмет этой области состоит в том, чтобы для заданного алгоритма определить рабочие характеристики.
Теория алгоритмов. В этой области рассматриваются вопросы существования или не существования эффективных алгоритмов вычисления определённых величин.
Построение алгоритмов. В этой области рассматриваются стандартные приёмы и методы, используемые при написании алгоритмов.
Большинство практических алгоритмов, с которыми работают программисты, являются полиномиальными. Это означает, что время работы алгоритма с данными на входе длины n составляло не более o(nk) для некоторой константы k, не зависящей от n.
Не всякая задача может быть решена за полиномиальное время. Некоторые решаются лишь за экспоненциальное, а некоторые вообще не могут быть решены никаким алгоритмом.
Имеется особый класс задач, называемый «NP-полными» задачами. Для этих задач не известны полиномиальные алгоритмы, однако и не доказано, что таких алгоритмов не существует. Для программиста знание о NP-полных задачах важно по следующей причине. Если для некоторой задачи удалось доказать, что она NP-полная, то есть основания считать её практически неразрешимой. В этом случае лучше потратить время на построение приближенного алгоритма, чем продолжать искать быстрый алгоритм, решающий её точно.