
- •Тема 1 Основные понятия и определения
- •Тема 3 Проектирование программных продуктов.
- •Основные группы методов
- •Эвристические методы
- •Метод итераций (последовательного приближения)
- •Метод декомпозиции
- •Метод контрольных вопросов
- •Тема 4 Структура и формат, статические и динамические данные.
- •Тема 5 Стандартизация программных продуктов
- •Стандартизация программных продуктов
- •Система качества пп
- •Тема 6 Модульное программирование
- •Тема 6 Модульное программирование
- •2. Минимизации количества передаваемых параметров
- •Тема 7 Эффективность и оптимизация программ
- •1. Эффективность и технологичность. Способы экономии памяти. Способы уменьшения времени выполнения
- •2. Правила оптимизации программ
- •Жертвуем памятью ради скорости
- •Жертвуем скоростью ради памяти
- •Логические правила
- •Составление процедур
- •Составление выражений
- •Тема 8 Требования и спецификация качества к программных продуктов
- •Тема 9 Защита программ
- •Тема 10 Инструментальные средства разработки программ
- •Тема 11 Коллективная разработка программных средств
- •1.1 Структура управления разработкой программных средств.
- •Тема 12 Объектный подход к разработке программных продуктов
- •Тема 13 Факторы надежности программных продуктов
- •Тема 14 Структурное программирование программных продуктов
- •Тема 15 Объектно-ориентированное программирование (ооп)
- •Тема 15 Объектно-ориентированное программирование (ооп)
- •Тема 16 Стиль программирования
- •Тема 16 Стиль программирования
- •Тема 17 Отладка, тестирование, сопровождение программ
- •2.Тестирование «белым ящиков»
- •6.Виды сопровождения и отладок пп.
- •Тема 18 Экономические аспекты создания и использования программных средств
- •Тема 20 Пакеты прикладных программ
- •Тема 21 Язык программирования Турбо-Пролог
- •Язык Пролог
- •Тема 22 Списки и структуры в Прологе.
- •Списки в Прологе
- •Тема 23 Работа с файлами и динамическими базами данных в Прологе
- •Работа с файлами
- •Работа с файлами
- •3.6.3. Динамические базы данных
Тема 12 Объектный подход к разработке программных продуктов
Виды моделей: функциональная, реляционная, динамическая. Сущности. Отношения. Атрибуты.
Объектный подход к разработке программных продуктов
Функциональная модель -определяет то, что случается.
Она показывает как вычисляются выходные значения из входных, без указания порядка, в котором эти значения вычисляются.
Она определяет все операции, условия и ограничения, использующие в объектной и динамической модели.
Она соответствует определению внешних функций при реляционном подходе к разработке п.п.
Динамическая модель- необходимо если в соответствующий объектной модели имеются активные объекты.
Под событием здесь понимается элементарное воздействие одного объекта на другой , происходящее в определенный момент времени.
Одно событие может предшествовать другому, или быть несвязанным с другим.
При реляционном подходе.
Динамическая модель показывает допустимые последовательности изменения состояния объектов, из объектной модели модельного мира, которой должно представлять разрабатываемое п.с
Она описывает последовательности операции в ответ на внешние сигналы взаимодействия.
Отношения объединяют объекты, и они обладают свойствами , если отношение связывает n-объектов, то его называют n-местным.
Одноместное отношение- простое свойство объекта.
Многоместные отношение- ассоциативным свойствам объекта если этот объект участвует в этом отношении.
Состояние объекта может быть изучено по значению простых или ассоциативных свойств этого объекта.
Множество объектов , которые обладают каким-то общим набором свойств наз-ся классом объектом.
Каждый объект информационно может быть представлен некоторый структурой данных, отображающих его состояние.
Атрибут класса выражает некоторое простое свойство объектов этого класса.
Представление некоторых простых свойств объектов атрибутами удобно тогда когда по значению этим объектов осуществляется классификация объектов.
Отношение между 2-мя и более объектами будут называться связями, а их обобщение- ассоциации.
Виды ассоциаций:
-Взаимодействия состояний объекта
-Агрегирование (структруирование объектов)
-Акстрасирование (поражение объектов)
Ассоциация- означает что объекты классов находящихся в таком отношении могут быть параметрами некоторых операций.
Ассоциация агреирования- означает что объект одного из классов , находящихся в таком отношении включает в себя объекты другого из этих классов.
Ассоциация абстрагирования означает что один из классов , находящихся в таком отношении наследует свойство другого из этих классов и может обладать дополнительными свойствами.
Тема 13 Факторы надежности программных продуктов
Свойства и характеристики надежности ПП. Оценки качества надежности ПП. Внешние и внутренние факторы.
Тема 14 Структурное программирование программных продуктов
Методы и правила структурированности ПП. Критерии и достоинства структурированности программ.
Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом В соответствии с данной методологией.
Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
Разработка программы ведётся пошагово, методом «сверху вниз».
Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.
Перечислим некоторые достоинства структурного программирования:
Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.
В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
Сильно упрощается процесс тестирования и отладки структурированных программ.