Технология программирования

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

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 26.10.2013
Размер файла 1,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Республики Казахстан

РГП ПХВ "Евразийский национальный университет им.Л.Н. Гумилева"

Кафедра Вычислительная техника

УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ

наименование дисциплины по рабочему учебному плану:

Инструментальные средства разработки программ

Автор, составитель: Мухитова А.А.

Астана 2013

Содержание

  • Глоссарий
  • Конспект лекций
  • Тема 1. Вводная. Порядок разработки. Требования к содержанию и документам. История развития ИСРП
  • Тема 2. Выработка требований. ТЗ. Методы и инструменты логического проектирования
  • Тема 3. UML. Описание функциональности разработки. Методы и инструменты
  • Тема 4. Построение диаграммы классов. Методы, технологии, инструменты
  • Тема 5. Определение языка разработки, среды реализации, инструментов разработки. Особенности виртуальной среды реализации программ и их учет в разработке ПП
  • Тема 6. Определение инструментов разработки. Системные макросы и их применение в текстах разработки. Инструментальные средства и технологии Windows. MFC. SDK
  • Тема 7. Средства визуального программирования - MS Visual Studio, Borland Delphi и др.
  • Тема 8. Средства визуального программирования. Результаты компиляции. Список опций компилятора и компоновщика. Управление компилятором (С++Builder)
  • Тема 9. Построение интерфейса программы. Принципы разработки инструментария
  • Тема 10. Отладка программ. Инструменты. Методика отладки
  • Тема 11. Тестирование. Разработка инвариантов и тестовых примеров
  • Тема 12-13. Построение Help. Инструменты и методы. Требования на защиту и инсталляцию программ
  • Тема 14-15. Файл менеджеры и их использование в работе с программами
  • Списки основной и дополнительной литературы
  • Задания для самостоятельной работы обучающегося
  • План проведения лабораторных занятий
  • Лабораторная работа 1. Создание диаграммы вариантов использования и действующих лиц
  • Лабораторная работа 2. Создание диаграммы Последовательности
  • Лабораторная работа 3. Создание Кооперативной диаграммы
  • Добавление на диаграмму дополнительных объектов
  • Лабораторная работа 4. Диаграмма Состояний для класса Заказ
  • Лабораторная работа 5. Построение диаграммы Активности для варианта использования "Выполнить поставку Заказа"
  • Лабораторная работа 6. Пакеты и классы
  • Лабораторная работа 7. Уточнение методов и свойств классов
  • Добавление атрибутов
  • Лабораторная работа 9. Исключение кириллизованного текста в информации классов
  • Лабораторная работа 10. Построение диаграммы компонентов
  • Лабораторная работа 11. Кодогенерация проекта в Delphi
  • Лабораторная работа 12. Анализ Delphi проекта, добавление визуальных объектов, реинжениринг в Rose
  • Лабораторная работа 13. Кодогенерация модельных элементов из Приложения Б
  • Лабораторная работа 14. Построение диаграммы размещения

Глоссарий

Абстрактный класс (abstract class)

Класс, объект которого не может быть создан непосредственно

Агрегат (aggregate)

Класс, описывающий "целое" в отношении агрегации

Агрегация (aggregation)

Специальная форма ассоциации, определяющая отношение "часть-целое" между агрегатом (целым) и частями

Актер (actor)

Связанный набор ролей, исполняемый пользователями при взаимодействии с элементами Use Case

Активация (activation)

Выполнение соответствующего действия

Активный класс (active class)

Класс, экземпляры которого являются активными объектами. См. процесс, задача, поток

Активный объект (active object)

Объект, являющийся владельцем процесса или потока, которые инициируют управляющую деятельность

Артефакт (artifact)

Документ, отчет или выполняемый элемент. Артефакт может вырабатываться, обрабатываться или потребляться

Асинхронное действие (asynchronous action)

Запрос, отправляемый объекту без паузы для ожидания результата

Ассоциация (association)

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

Бизнес-модель (business model)

Определяет абстракцию организации, для которой создается система

Бинарная ассоциация (binary association)

Ассоциация между двумя классами

Взаимодействие (interaction)

Поведение, заключающееся в обмене набором сообщений между набором объектов (в определенном контексте и для достижения определенной цели)

Видимость (visibility)

Показывает, как может быть увидено и использовано другими данное имя

Временный объект (transient object)

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

Действие (action)

Исполняемое атомарное вычисление. Действие инициируется при получении объектом сообщения или изменении значения его свойства. В результате действия изменяется состояние объекта

Делегирование (delegation)

Способность объекта посылать сообщение другому объекту в ответ на прием чужого сообщения

Деятельность (activity)

Состояние, в котором проявляется некоторое поведение

Диаграмма (diagram)

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

Диаграмма Use Case (use case diagram)

Диаграмма, показывающая набор элементов Use Case,

актеров и их отношений. Диаграмма Use Case относится к статическому представлению Use Case, создаваемому для системы

Диаграмма взаимодействия (interaction diagram)

Диаграмма, показывающая взаимодействие, включающее в себя набор объектов и их отношений, а также пересылаемые между объектами сообщения. Диаграммы взаимодействия относятся к динамическому представлению системы. Это общий термин, применяемый к различным видам диаграмм, на которых изображено взаимодействие объектов, включая диаграммы сотрудничества и диаграммы последовательности

Диаграмма деятельности (activity diagram)

Диаграмма, показывающая переходы от одного вида деятельности к другому. Диаграммы деятельности относятся к динамическому представлению системы. Диаграмма деятельности является специальной разновидностью диаграммы схем состояний, в которой все или большинство состояний являются состояниями действий, а все или большинство переходов срабатывают при завершении действий в исходных состояниях

Диаграмма классов (class diagram)

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

Диаграмма объектов (object diagram)

Диаграмма, показывающая набор объектов и их отношений в некоторый момент времени. Диаграмма объектов относится к статическому проектному представлению или статическому представлению процессов системы

Диаграмма последовательности (sequence diagram)

Диаграмма взаимодействия, выделяющая временную последовательность передачи сообщений

Диаграмма размещения (deployment diagram)

Диаграмма, показывающая набор узлов и их отношения. Диаграмма размещения относится к статическому представлению размещения системы

Диаграмма сотрудничества (collaboration diagram)

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

Диаграмма схем состояний (statechart diagram)

Диаграмма, показывающая конечный автомат. Диаграммы схем состояний относятся к динамическому представлению системы

Единица дистрибуции (distribution unit)

Набор объектов или компонентов, которые предназначены для выполнения одной задачи или работы на одном процессоре

Зависимость (dependency)

Семантическое отношение между двумя предметами, при котором изменение одного предмета (независимого предмета) влияет на семантику другого предмета (зависимого предмета)

Задача (task)

Единичный путь выполнения программы, динамической модели или другого представления потока управления; нить или процесс

Запустить (fire)

Выполнить переход из состояния в состояние

Иерархия вложенности (containment hierarchy)

Иерархия пространств имен, содержащих элементы и отношения вложенности между ними

Импорт (import)

В контексте пакетов - зависимость, показывающая, на классы какого пакета могут ссылаться классы данного пакета (включая пакеты, рекурсивно вложенные в данный)

Имя (name)

То, как вы называете предмет, отношение или диаграмму; строка, используемая для идентификации элемента

Интерфейс (interface)

Набор операций, используемых для описания услуг класса или компонента

Исполняемый модуль (executable)

Программа, которая может выполняться в узле

Использование (usage)

Зависимость, при которой один элемент (клиент) для корректного функционирования нуждается в присутствии другого элемента (поставщика)

Кардинальное число (cardinality)

Число элементов в наборе

Каркас (framework)

Архитектурный паттерн, предоставляющий расширяемый шаблон приложения в какой-либо предметной области

Класс (class)

Описание набора объектов, имеющих одинаковые свойства, операции, отношения и семантику

Класс-ассоциация (association class)

Элемент моделирования, имеющий одновременно характеристики класса и ассоциации. Класс-ассоциация может рассматриваться как ассоциация, имеющая также характеристики класса, или как класс, обладающий характеристиками ассоциации

Классификатор (classifier)

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

Клиент (client)

Классификатор, запрашивающий услуги у другого классификатора

Композит (composite)

Класс, связанный с одним или более классами отношением композиции

Композиция (composition)

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

Компонент (component)

Физическая заменяемая часть системы, которая соответствует набору интерфейсов и обеспечивает реализацию набора интерфейсов

Компонентная диаграмма (component diagram)

Диаграмма, показывающая набор компонентов и их отношений. Компонентные диаграммы относятся к статическому компонентному представлению системы

Конечный автомат (state machine)

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

Конкретный класс (concrete class)

Класс, для которого возможно создание экземпляров

Контейнер (container)

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

Контекст (context)

Набор связанных элементов, ориентированных на достижение определенной цели, например, определение операции

Кооперация (collaboration)

Сообщество классов, интерфейсов и других элементов, работающих вместе с целью реализации некоторого кооперативного поведения. Кооперация больше, чем простая сумма элементов. Описание того, как элементы, такие как элементы Use Case или операции, реализуются набором классификаторов и ассоциаций, играющих определенные роли определенным образом

"Линия жизни" (lifeline)

См. линия жизни объекта

Линия жизни объекта (object lifeline)

Линия на диаграмме последовательности, которая отражает существование объекта в течение некоторого периода времени

Местоположение (location)

Место размещения компонента в узле

Метакласс (metaclass)

Класс, экземпляры которого являются классами

Метод (method)

Реализация операции. Определяет алгоритм или процедуру, обеспечивающую операцию.

Механизм расширения (extensibility mechanism)

Один из трех механизмов (стереотипы, теговые величины и ограничения), который может использоваться для контролируемого расширения UML

Множественная классификация (multiple classification)

Семантическая вариация обобщения, в которой объект может принадлежать более чем одному классу

Множественное наследование (multiple inheritance)

Семантическая вариация обобщения, в которой тип может иметь более одного супертипа

Множественность (multiplicity)

Спецификация диапазона возможных кардинальных чисел набора

Модель (Model)

Семантически ограниченное абстрактное представление системы

Модель Use Case (Use case model)

Определяет функциональные требования к системе

Модель анализа (analysis model)

Интерпретирует требования к системе в терминах проектной модели

Модель области определения (domain model)

Фиксирует контекстное окружение системы

Модель процессов (process model)

Определяет параллелизм в системе и механизмы синхронизации

Модель размещения (deployment model)

Определяет аппаратную топологию, в которой исполняется система

Модель реализации

Определяет части, которые используются для сборки

(implementation model)

и реализации физической системы

Наследование (inheritance)

Механизм, при помощи которого более специализированные элементы включают в себя структуру и поведение более общих элементов

Наследование интерфейса (interface inheritance)

Наследование интерфейса более специализированным элементом, не включает наследования реализации

Нить (thread)

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

Область действия (scope)

Контекст, который придает имени определенный смысл

Обобщение (generalization)

Отношение обобщения/специализации, когда объекты специализированного элемента (подтипа) могут замещать объекты обобщенного элемента (супертипа)

Объект (object)

См. экземпляр

Объект длительного хранения (persistent object)

Объект, сохраняющийся после завершения процесса или задачи, в ходе которой он был создан

Объектный язык ограничений (object constraint language (OCL))

Формальный язык, используемый для создания ограничений, не имеющих побочных эффектов

Обязанность (responsibility)

Контракт или обязательство типа или класса

Ограничение (constraint)

Расширение семантики элемента UML, позволяющее добавлять к нему новые правила или изменять существующие

Одиночное наследование (single inheritance)

Семантический вариант обобщения, при котором каждый тип может иметь только один супертип

Операция (operation)

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

Отношение (relationship)

Семантическая связь между элементами

Отношение трассировки (trace)

Зависимость, указывающая на историческую связь или связь обработки между двумя элементами, представляющими одну и ту же концепцию, без определения правил вывода одного элемента из другого

Отправитель (сообщения) (sender)

Объект, посылающий экземпляр сообщения объекту-получателю

Отправление (send)

Посылка экземпляра сообщения от отправителя получателю

Пакет (package)

Механизм общего назначения для группировки элементов

Параллелизм (concurrency)

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

Параметр (parameter)

Определение переменной, которая может изменяться, передаваться или возвращаться

Паттерн (pattern)

Паттерн является решением типичной проблемы в определенном контексте

Переход (transition)

Отношение между двумя состояниями, показывающее, что объект, находящийся в первом состоянии, в случае некоторого события и выполнения определенных условий совершит некоторые действия и перейдет во второе состояние

Плавательная дорожка (swim lane)

Область на диаграмме деятельности для назначения ответственного за действие

Побуждение (stimulus)

Операция или сигнал

Подсистема (subsystem)

Группировка элементов, в которой каждый элемент содержит описание поведения, предоставляемого другим элементам подсистемы

Подтип (subtype)

В отношении обобщения - специализация другого типа, супертипа

Получатель (receiver)

Объект, обрабатывающий экземпляр сообщения, поступивший от объекта-отправителя

Полюс (конец) ассоциации (association end)

Конечная точка ассоциации, которая связывает ассоциацию с классификатором

Полюс (конец) связи (link end)

Экземпляр полюса (конца) ассоциации

Поставщик (supplier)

Тип, класс или компонент, предоставляющие услуги, используемые другими

Постусловие (postcondition)

Условие, которое должно выполняться после завершения операции

Представление (view)

Проекция модели, рассматриваемая с определенной точки зрения, в которой показаны существенные и опущены несущественные детали

Предусловие (precondition)

Условие, которое должно выполняться при вызове операции

Прием (receive)

Обработка экземпляра сообщения, поступившего от объекта - отправителя

Примечание (comment)

Примечание, добавляемое к элементу или группе элементов

Примечание (note)

Комментарий, добавляемый к элементу или набору элементов

Примитивный тип (primitive type)

Предопределенный базовый тип, например целое число или строка

Проектная модель (design model)

Определяет словарь проблемы и ее решение

Пространство имен (namespace)

Часть модели, в которой могут определяться и использоваться имена. Внутри пространства имен каждое имя имеет единственный смысл

Процесс (process)

Тяжеловесный поток управления, который может выполняться параллельно с другими процессами

Рабочий поток процесса (process workflow)

Логическая группировка действий

Реализация (realization)

Семантическое отношение между классификаторами, когда один классификатор определяет контракт, который другие классификаторы должны гарантированно выполнять

Роль (role)

Определенное поведение сущности в определенном контексте

Свойство (attribute)

Именованная характеристика классификатора, задающая набор возможных значений, которые определяют состояния экземпляров классификатора (например, объектов)

Связывание (binding)

Создание конкретного элемента на основе шаблона (путем сопоставления параметрам шаблона конкретных аргументов)

Связь (link)

Семантическая связь между объектами, экземпляр ассоциации

Сигнал (signal)

Спецификация асинхронного стимула, передаваемого от экземпляра к экземпляру

Сигнатура (signature)

Имя и параметры характеристики поведения

Синхронное действие (synchronous action)

Запрос, при работу, ожидая результата котором отправивший его объект прерывает

Система (system)

Набор подсистем, организованный для достижения определенной цели и описываемый набором моделей с разных точек зрения

Событие (event)

Определение значимого происшествия, ограниченного во времени и пространстве, в контексте конечных автоматов. Событие может запустить переход из одного состояния в другое состояние

Сообщение (message)

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

Состояние (state)

Условия или ситуация в течение жизни объекта, когда он удовлетворяет некоторому условию, выполняет некоторую деятельность или ждет некоторого события

Состояние действия (action state)

Состояние, которое представляет собой исполнение единичного действия, обычно вызов операции

Спецификация (specification)

Текстовая запись синтаксиса и семантики определенного строительного блока, описание того, что он из себя представляет или что он делает

Стереотип (stereotype)

Расширение словаря UML, позволяющее нам создавать новые типы строительных блоков, порождая их от существующих. Новые блоки специализированы для решения определенных проблем

Сторожевое условие (guard condition)

Условие, которое должно быть выполнено для запуска ассоциированного с ним перехода

Супертип (supertype)

В отношении обобщения - обобщение другого типа, подтипа

Сценарий (scenario)

Определенная последовательность действий, иллюстрирующая поведение

Теговая величина (tagged value)

Расширение характеристик элемента UML, позволяющее помещать в спецификацию элемента новую информацию

Тестовая модель (test model)

Определяет тестовые варианты для проверки системы

Тип (type)

Стереотип класса, используемый для определения предметной области объекта и операций (но не методов), применимых к этому объекту

Тип данных (datatype)

Тип, задающий набор неидентифицированных значений и операций для их обработки. Типы данных включают в себя как простые встроенные типы (такие, как числа и строки), так и перечислимые типы (например, логический тип)

Узел (node)

Физический элемент, существующий во время работы системы и предоставляющий вычислительный ресурс, обычно имеющий память, а часто - и возможность выполнения операций

Украшение (adornment)

Детализация спецификации элемента, добавляемая к его основной графической нотации

Фасад (facade)

Фасад - это стереотипный пакет, не содержащий ничего, кроме ссылок на элементы модели, находящиеся в другом пакете. Он используется для обеспечения "публичного" представления некоторой части содержимого пакета

Фокус управления (focus of control)

Символ на диаграмме последовательности, указывающий период времени, в течение которого объект выполняет действие

Характеристика (property)

Именованная величина, обозначающая характеристику элемента

Шаблон (template)

Параметризованный элемент

Экземпляр (instance)

Конкретная реализация абстракции, сущность, к которой может быть применен набор операций, она имеет состояние для сохранения результатов применения операций. Синоним объекта

Экспорт (export)

В контексте пакетов - действие, делающее элемент видимым вне его собственного пространства имен

Элемент (element)

Единичная составная часть модели

Этап Конструирование (Construction phase)

Этап построения программного продукта в виде серии инкрементных итераций

Этап Начало (Inception phase)

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

Этап Переход (Transition phase)

Этап внедрения программного продукта в среду пользователя (промышленное производство, доставка и применение)

Этап Развитие (Elaboration phase)

Этап планирования необходимых действий и требуемых ресурсов

n-арная ассоциация (n-ary association)

Ассоциация между п классами. Если п равно двум, ассоциация бинарная. См. бинарная ассоциация

Элемент Use Case (use case)

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

Конспект лекций

Тема 1. Вводная. Порядок разработки. Требования к содержанию и документам. История развития ИСРП

Технология программирования - это научная и практически-апробированная стратегия разработки программ, содержащая описание совокупности методов и средств разработки программ, а также порядок применения этих методов и средств.

Программный продукт - программа, которую можно запускать, тестировать, исправлять и развивать. Такая программа должна быть написана в едином стиле, тщательно оттестирована до требуемого уровня надежности, сопровождена подробной документацией и подготовлена для тиражирования.

Программа - очень сложный объект. Она обуславливается:

1) сложностью задачи,

2) сложностью управления,

3) сложностью описания поведения отдельных подсистем,

4) сложности обеспечения гибкости отдельных конечного программного продукта.

Проектирование - это разработка проекта, процесс создания спецификаций, необходимых для построения в заданных условиях еще не существующего объекта на основе первичного описания этого объекта. Результатом проектирования является проектное решение или совокупность проектных решений, удовлетворяющих заданным требованиям, включающим форму представления решения.

Спецификация - это какое-либо описание в точных терминах.

Проектным документом называют документ, выполненный по заданной форме, в котором представлено какое-либо проектное решение. В программировании проектные решения оформляются в виде программной документации. Различают внешнюю - согласующуюся с заказчиком, и внутреннюю - для работы программистов, программные документации.

Проект (от лат. project - брошенный вперед) - совокупность проектных документов в соответствии с установленным перечнем, который представляет результат проектирования.

Объектом проектирования является программа.

Решение проектной задачи должно быть найдено в рамках ограничений внешней среды проектирования: доступных денежных средств, заранее заданных сроков, возможностями технических средств и инструментария программирования, научных знаний и т.д.

Общие принципы разработки программ.

Частотный принцип

Выделение в агоримтмах и данных особых групп по частоте использования. Для действий, наиболее часто встречающихся в работе программ, создаются условия для их быстрого выполнения. К часто исользуемым данным обеспечивается наиболее быстрый доступ. "Частые" операции стараются делать более короткими. Известно, что только не более 5% операторов программы оказывают ощутимое влияние на скорость выполнения программы. Этот факт позволяет значительную часть операторов программы кодировать бе учета скорости вычислений, обращая основное внимание на "красоту" и наглядность текстов.

Принцип модульности

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

Принцип функциональной избирательности

В программах выделяется некоторая часть важных модулей, которые постоянно должны быть в состоянии готовности для эффективной организации вычислительного процесса. Эту часть программы называют ядром или монитором. Программы, входящие в состав монитора постоянно хранятся в ОП, остальные модули - подгружаются.

Принцип генерируемости

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

Принцип функциональной избыточности

Принцип предусматривает возможность проведения одной и той же работы различными средствами (для удобства пользователя).

Принцип "по умолчанию"

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

Системный подход.

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

Компонентный анализ - рассмотрение объекта, включающего в себя составные элементы, и входящего в свою очередь в системы более высокого ранга. Структурный анализ - выявление элементов объекта и связей между ними. Функциональный анализ - рассмотрение объекта как комплекса выполняемых им функций. Параметрический анализ - установление качественных пределов развития объекта: время выполнения алгоритма, размер занимаемой памяти и т.д. Возникшие противоречия решаются за счет новых технологических решений.

Частотный случай системного подхода - в блочно-иерархический подход. В нем процесс проектирования расчленяется на уровни.

Парадигмы программирования.

Процедурно-ориентированное программирование (алгоритмы)

Объектно-ориентированное программирование (классы и объекты)

Логически ориентированное программирование (цели, выраженные в исчислении предикатов)

Ориентированное на правила программирование (правила "если …, то …")

Ориентированное на соотношения программирование (инвариантные соотношения)

Параллельное программирование (потоки данных)

Стандарты программирования

Группа стандартов ГОСТ "Единая система программоной документации" (ЕСПД)

Стандарты ANSI (Американский Национальный институт стандартов)

Описание жизненного цикла ПО

Жизненный цикл - это совокупность взаимосвязанных процессов создания и последовательного изменения состояния продукции от формирования к ней исходных требований до окончания ее эксплуатации или потребления

Стадии и этапы разработки программ (по ГОСТ 19.102-77).

программирование визуальное язык макрос

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

Заказчик принимает решение по дальнейшему продолжению проектных работ.

Этапы проекта - части стадии проекта, выделяемые по соображениям единства характера работ.

Программный документ Техническое задание (ТЗ) помимо основных требований к программному изделию содержит проект порядка взаимодействия заказчика и исполнителя по окончании конкретных этапов и требований к их выполнению.

Эскизный проект (ЭП) - несколько альтернативных вариантов будущего изделия и уточнения требований на основе их анализа.

Технический проект (ТП) - выполняется для получения однозначного описания конечного (оптимального) варианта построения программного изделия и порядка его реализации.

Рабочий проект (РП) - необходим для реализации изделия в соответствии с ранее намеченным планом.

Стадия "Внедрение" необходима для размножения программной документации в нужном количестве, обучения пользователей, помощи в освоении программы, сопровождение программы.

НИР - научно-исследовательская работа.

Модели играют важнейшую роль в проектировании программ. При построении моделей используется абстрагирование и декомпозиция.

Тема 2. Выработка требований. ТЗ. Методы и инструменты логического проектирования

1. Первые универсальные языки

Это была эра программирования непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были знать архитектуру ЭВМ досконально. Программы были простыми, так как из-за ограниченных возможностей этих машин и большой сложностью разработки и отладки программ непосредственно на машинном языке. Программисты могли применять хитроумные алгоритмы, такие как самомодифицирующийся код.

2. Ассемблер

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

Становилось невозможным применение хитроумных приемов. Впервые в истории программирования появилось два представления программы: в исходных текстах и в откомпилированном виде.

Перевод вначале из машинных кодов в ассемблер (дизассемблирование) был возможен, но с появлением меток и макросов, процесс затруднился, а затем и вовсе стал невозможен.

3. Фортран

1954 г. Корпорация IBM, группа разработчиков во главе с Джоном Бакусом

Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от особенностей машинной архитектуры.

Ключевой идеей, отличающей Фортран от ассемблера, была идея подпрограмм. Но синтаксис языка был не удобным, так как пробелы как синтаксическая единица вообще не использовались.

Пр.: Do 10 I = 1, 100 или Do10I=1.100 (отличаются только запятой, первая - цикл, вторая объявление вещественной переменной)

Сейчас Фортран используется для научных вычислений. Компилятор практически никак не проверяет синтаксически-правильную программу. В нем нет современных способов поддержки структурирования кода и данных.

Появление фортрана было встречено яростной критикой, так как их пугало снижение эффективности программ из-за появления дополнительного звена в виде компилятора. Действительно, небольшая программа, созданная непосредственно в машинных кодах работает быстрее, чем автоматически созданная компилятором.

Через некоторое время пришло понимание того, что реализация больших проектов невозможна без применения языков программирования высокого уровня. Мощность ЭВМ росла, и вместе с тем, падение эффективности, которое раньше казалось угрожающим, стало не такое значительное.

4. Cobol.

1960 г.

Cobol - язык коммерческих приложений, возможность работы с большими массивами данных. До сих пор появляются новые диалекты.

5. PL/1

1964 г. IBM, создан для замены Фортрана и Кобола.

Неудачный синтаксис, не распространился.

6. Basic.

1963 г. в Дартмуртском колледже был создан BASIC - многоцелевой язык символических инструкций для начинающих. Он легко интерпретируется и компилируется. Распространился как язык для обучения программированию. Современный язык Microsoft Visual Basic поддерживает объектно-ориентированное программирование (ООП).

7. Algol.

1960 г. Петер Наур создал язык Алгол. Затем возникла целая серия алгол подобных языков, куда входит и Паскаль.

Не распространился.

8. Pascal.

1970 г. Никлаус Вирт.

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

Отрицательная черта - отсутствие в нем средств для разбиения программы на модули.

1978 г. Modula2

1988 г. Modula3

Современные ОО версии этих языков Oberon, Oberon2.

9. С и С++

1972 г. Керниган и Ритчи, язык С, как язык для разработки Операционной системы UNIX (поэтому его называют переносимым Ассемблером). Компилятор С очень слабо контролирует типы, поэтому очень легко написать внешне совершенно правильную, но логически-ошибочную программу.

1986 г. Бьярн Страуструп создал первую версию языка С++, добавив объектно-ориентированные черты в С, взятые из языка Simula.

1988 г. последняя версия С++.

Язык стал основой для разработки больших и сложных проектов. Имеются и слабые стороны, вытекающие из требований эффективности.

10. Java

1995 г. корпорация Sun Microsystems, Кен Арнольд и Джеймс Гослинг.

Наследовал синтаксис С и С++ и был избавлен от некоторых неприятных черт последнего.

Отличительной чертой языка является компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор (Java Virtual Machine) для реальных систем. В Java нет указателей и множественного наследования, что сильно повышает надежность программирования.

11. С#

1999-2000 г. Корпорация Microsoft.

Схож с Java, ориентирован, в основном, на разработку многокомпонентных Интернет-приложений.

Языки обработки данных.

1957 г. APL (Aplication Programming Language) - математическая обработка данных - не получил распространения.

1962 г. Snobol и Icon - мощные средства обработки строк и текста. Наследник - Perl.

В Perl добавлены некоторые принципы ООП, создавался в помощь системному администратору для обработки различного рода текстов и выделения нужной информации, очень практичный язык, но не достает элегантности. Является интерпретатором и реализован почти на всех платформах. Применяется также для автоматической генерации веб-страниц на веб-серверах.

1969 г. SETL - язык для описания операций над множествами.

1958 г. Lisp - язык для обработки списков, получил широкое распространение в системах искусственного интеллекта. Потомки: Planner (1967), Scheme (1975), Common Lisp (1984). Многие черты были унаследованы языками функционального программирования.

Скриптовые языки:

для использования в часто изменяемых программах, очень небольших программах, когда для выполнения операторов языка затрачивается время несопостовимое со временем их разбора.

Java Script - создан в компании Netscape Communications для описания сложного поведения веб-страниц. Интерпретируется браузером во время отображения веб-страницы.

VB Script - создан в компании Microsoft, альтернатива Java Script, схож с Visual Basic.

Perl

Python (как Perl, но менее распространен).

1967 г. Simula

1972 г. Smalltalk

1986 г. Eiffel

Тема 3. UML. Описание функциональности разработки. Методы и инструменты

В таких специальных областях, как графика, базы данных, синтаксический разбор, цифровой анализ и моделирование, возможность решения задачи целиком и полностью зависит от наличия специальных алгоритмов и структур данных. Если вы разрабатываете программы в новых для вас областях программирования, то вы должны выяснить, какие наработки уже существуют, иначе вы потратите свое время впустую в попытках плохо сделать то, что уже кем-то было сделано хорошо.

Каждая программа зависит от алгоритмов и структур данных, но редко бывает нужно изобретать новые алгоритмы. Даже в сложной программе, например в компиляторе или Web-браузере, структуры данных по большей части являются массивами, списками, деревьями и хэш-таблицами. Когда программе нужна более изощренная структура, она, скорее всего, будет основываться на этих более простых структурах. Соответственно, задача программиста - знать, какие алгоритмы и структуры доступны, а также понимать, как выбрать среди них нужные.

Структура данных - это совокупность элементов данных, между которыми существуют некоторые отношения, причем элементами данных могут быть простые данные и структуры данных. Структуру данных можно определить, как S = (D,R), где D - множество элементов данных, R-множество отношений (связей) между элементами данных.

Структуру можно изображать в виде графа, при этом элементам данных соответствуют вершины, а связям или отношениям - ориентированные или неориентированные ребра. В зависимости от отсутствия или наличия явно заданных связей между элементами данных различают структуры несвязные (вектор, массив, строка, стек, очередь) и связные (списки). Важный признак структуры - ее изменчивость.

По этому признаку различают структуры статические, полустатические и динамические. В зависимости от характера взаимного расположения элементов в памяти ЭВМ структуры делят на структуры данных с последовательным расположением элементов в памяти (вектор, массив, стек, очередь) и структуры с произвольным распределением - (односвязные, двусвязные, ассоциативные списки).

1. Статические структуры данных (векторы, массивы, записи и таблицы).

Вектор - конечное упорядоченное множество простых данных или скаляров одного и того же типа. Элементы вектора находятся между собой в отношении непосредственного следования. В памяти ЭВМ элементы вектора представляются последовательностью одинаковых по длине участков памяти, как правило, расположенных в порядке следования элементов в группе.

к-мерным массивом называется конечное упорядоченное множество (к-1) мерных массивов, все элементы которых принадлежат одному и тому же типу. При к=1 получаем вектор.

Запись - конечное упорядоченное множество элементов, характеризующихся в общем случае различным типом данных. Элементы записи называются полями. Примером структкры данных может служить таблица. Таблица - конечное упорядоченное множество записей, имеющих одну и ту же организацию. Наиболее распространена форма таблицы, в которой элемент представляет собой одноуровневую запись, состоящую из упорядоченной последовательности полей, имеющих в общем случае различный размер и соответствующих различным типам простых данных. Логическая структура представляется в виде последовательности расположенных друг под другом строчек одинаковой длины, представляющих элементы таблицы и разделенных на графы. Обычно одно из полей всех элементов таблицы отводится для хранения ключа, являющегося уникальным для каждой записи таблицы. Доступ к записям таблицы может осуществляться по номеру записи, но чаще доступ осуществляется по ключу, причем целью доступа является получение не отдельного поля записи, а как правило, сначала ищется какая-то одна запись (или группа записей), а затем осуществляется обработка полей этой записи или группы записей.

Отличие массива от таблицы: доступ осуществляется не с помощью индексов, а по ключу, и целью доступа служит не отдельные данные, а запись.

2. Полустатические структуры данных (стеки, очереди).

Определения этих структур данных основаны на понятии списка или списковой структуры. Списком называется линейно-упорядоченная последовательность элементов данных E (1),E (2) …E (n), где n>0, причем каждый элемент E (i) характеризуется одним и тем же набором полей. Такой список называют линейным списком из-за линейной упорядоченности элементов. При n=const и соответствующем выборе элемента данных, последовательный линейный список сводится к вектору, к массиву, записи или таблице. Так, вектор может быть определен как последовательный линейный список, в котором каждый элемент-скаляр одного и того же типа. При n = Var последовательный линейный список представляет собой структуру, не обладающую свойством постоянства. Однако, хотя n = Var, максимальное значение n задается явно и ограничивает длину списка. Такие структуры называют полустатические. Полустатические структуры данных - это последовательные линейные списки с переменной длиной, ограниченной фиксированной максимальной величиной и с ограниченным доступом. К таким структурам относятся стеки и очереди.

3. Динамические структуры данных (односвязные, двусвязные списки).

Динамическая структура имеет следующие основные признаки:

1. Непостоянство и непредсказуемость размера (числа элементов) структуры в процессе ее обработки.

2. Отсутствие физической смежности элементов структуры в физической памяти. Логическая последовательность элементов задается в явном виде с помощью одного или нескольких указателей или связок, хранящихся в самих элементах. Часто динамические структуры физически представляются в форме связных списков. Связный список - такая структура, элементами которой служат записи с одним и тем же форматом, связанные друг с другом с помощью указателей, хранящихся в самих элементах списка.

Списком называется линейно-упорядоченная последовательность элементов данных E (1), E (2) …E (n), где n>0, причем каждый элемент E (i) характеризуется одним и тем же набором полей. Такой список называют линейным списком из-за линейной упорядоченности элементов. Связный список - такая структура, элементами которой служат записи с одним и тем же форматом, связанные друг с другом с помощью указателей, хранящихся в самих элементах списка. В односвязном линейном списке каждый элемент состоит из двух различных по назначению полей: содержательного и поля указателя. Линейный двусвязный список отличается от односвязного тем, что каждый его элемент содержит два указателя, один из которых (прямой указатель) адресует следующий элемент в списке, а другой (обратный указатель) - адресует предыдущий элемент списка. Примером двусвязного списка является дерево.

Бинарное дерево поиска - в бинарном дереве поиска каждая вершина имеет два указателя left и right, которые указывают на дочерние вершины. Эти указатели могут быть равны null, если у дерева меньше двух вершин. Структуру бинарного дерева поиска определют значения в его вершинах: все дочерние узлы, расположенные левее данной, имеют меньшие значения, а все дочерние вершины правее - большие.

Двоичный поиск занимает меньшее время, чем обычный (O (log n)). Дерево бинарного поиска достраивается рекурсивным спуском по дереву: на каждом шаге спуска выбирается соответстующая левая или правая ветка, пока не найдется место для вставки новой вершины. Новая вершина добавляется как лист дерева, т.е. у него пока отсутствуют дочерние вершины.

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

Хэш-таблицы - сочетание массивов и списков с использованием специального механизма, называемого "хэшированием".

При хэшировании информационное содержание ключа используется, чтобы определить уникальное значение, называемое его хэш-кодом. Затем хэш-код применяется как индекс (номер) элемента, в котором хранятся данные, связанные с ключом. Преобразование ключа в его хэш код выполняется автоматически при помощи хэш-функции (мы не можем увидеть хэш код). С каждым хэш значением ассоциируется список элементов, которые обладают этим значением. Хэш-код равномерно распределен по диапазону целых чисел приемлемого размера. Каждый элемент массива - это список, который сцепляет вместе элементы, имеющие общее хэш-значение.

Хэш-функция, которая подходит для одного набора данных может плохо подходить для других (неравномерное распределение данных).

Для выполнение основных операции: вставка, удаление, поиска в хэш таблицах затрачивается константное время O (1). Хэш-таблицы применяются для символьных таблиц.

Тема 4. Построение диаграммы классов. Методы, технологии, инструменты

Цель структурного программирования - разработка программы, которой присуща определенная структура, основанная на применении принципов структурного программирования. Перечислим эти принципы:

1. Каждый программный модуль (блок, функция, процедура) должен иметь только один вход и один выход. Это позволяет максимально упростить стыковку модулей в программе.

2. В программах рекомендуется применять 4 типа конструкций: а) последовательность (модулей, операторов) б) разветвление (условный оператор); в) цикл 1) с предусловием 2) с постусловием 3) выбор из нескольких альтернатив

3. Разработку программ рекомендуется вести сверху - вниз или по нисходящей стратегии. Суть нисходящей стратегии в том, что проектировщик должен приступить к работе, имея только концептуальный, абстрактный замысел о том, что система или программа будет делать. Затем этот замысел постепенно конкретизируется шаг за шагом, тем самым погружаясь в подробности окончательного программного продукта до тех пор, пока не будет достигнуто "дно", под которым понимаются программные модули, реализующие отдельные функции или процедуры преобразования данных

Модуль - это замкнутая программа, которую можно вызвать из другого модуля и самостоятельно откомпилировать. Другое определение: программный модуль - это любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт, пригодный для использования в описаниях процесса.

Модуль - это программа, обладающая тремя основными атрибутами:

1. он выполняет одну или несколько функций;

2. модуль реализует некоторую логику (алгоритм).

3. используется в одном или нескольких контекстах.

При этом функция - это то, что делает модуль, а не то, как он это делает. А вот логика характеризует, как модуль выполняет свои функции. Контекст описывает конкретное применение.

Принципы модульного программирование следующие:

а) усиление внутренних связей в каждом модуле (иначе принцип называется повышением прочности модуля);

б) ослабление взаимосвязи между модулями (иначе этот принцип называется ослаблением сцепления модулей).

Процедурное программирование основано на потоке управления. Суть его заключается в алгоритмической декомпозиции процесса решения задачи (разбиение на операторы), таким образом, чтобы из операторов языка программирования сконструировать программу, выполняющую некоторое заданное преобразование данных. Этот стиль программирования является базовым инструментарием для всех остальных технологий программирования. Процедурный стиль выражается в четком выделении в программе двух составляющих: непроцедурной (описание переменных, функций, процедур) и процедурной (описание действий). Существенный недостаток процедурного программирования - сложная реализация параллельного программирования. Также как недостаток можно отметить существенный объем программного кода.

Функциональный стиль программирования основан на аргументной постановке задачи абстракции математической функции и аналитическом методе построения программ подобно математическим преобразованиям. Функциональное программирование широко используется в языке Лисп. Можно привести пример на языке Паскаль: Begin {Функциональный стиль) Writeln (Ln (Abs (Sin (5.5)); End., а если бы использовали процедурный стиль программирования то: Var x,y,z,t: Real; {Процедурный стиль} Begin х: =5.5; y: =Sin (x); z: =Abs (y); t: = Ln (z); Writeln (t); End.

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

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

Функциональность - это способность ПП выполнять набор функций, определенных его внешними спецификациями.

Надежность ПП - это способность безотказно выполнять заданные функции при заданных условиях в течение заданного периода времени с высокой степенью вероятности.

Легкость применения - это способность минимизировать затраты пользователя на подготовку и ввод исходных данных и оценку полученных результатов, а также вызывать положительные эмоции пользователя.

Эффективность - это отношение уровня услуг, предоставляемых ПП к объему используемых вычислительных ресурсов.

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

Мобильность - это способность ПП быть перенесенным из одной вычислительной среды (окружения) в другую, в частности, с одной ЭВМ на другую (применяют термин "перенос с одной платформы на другую”.

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

Предварительное внешнее проектирование.

Следует отметить, что наиболее общей рекомендацией для этого этапа является структурирование (декомпозиция) целей программного продукта по схеме: основные цели - > подцели 1-го уровня. - >. подцели i-го уровня - >.. - > подцели n-го уровня - > функции для пользователя ПО.

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

В результате выполнения декомпозиции целей получают системную архитектуру. СА представляет собой документ, отражающий модульно-иерархическую структуру проектируемого программного продукта с подробным описанием функциональных спецификаций отдельных модулей

Схема - графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения операций, данных, потока, оборудования и т.д. Различают:

схемы данных;

схемы программ;

схемы работы системы;

схемы взаимодействия программ;

схемы ресурсов системы.

Схемы данных отображают путь данных при решении задач и определяют этапы обработки и применяемые носители данных.

Схемы программ отображают последовательность операций в программе.

Схемы работы системы отображают управление операциями и поток данных в системе.

Схемы взаимодействия программ отображают путь активации программ и взаимодействий с данными. Каждая программа показывается только один раз (в схеме работы системы может изображаться более чем в одном потоке управления).


Подобные документы

  • Эффективные средства разработки программного обеспечения. Технология визуального проектирования и событийного программирования. Конструирование диалоговых окон и функций обработки событий. Словесный алгоритм и процедуры программы Borland Delphi 7 Studio.

    дипломная работа [660,2 K], добавлен 21.05.2012

  • Разложение функции в ряд Тейлора, алгоритм работы программного интерфейса сокетов, исходный текст программ с комментариями. Возможности языка программирования Си и среда разработки приложений в ОС Linux. Виртуальная среда VMWare Player и VirtualBox.

    лабораторная работа [1,8 M], добавлен 02.09.2014

  • Основные этапы разработки программного обеспечения (пакета программ), анализ требований к системе. Метод пошаговой детализации. Языки программирования низкого уровня и высокого уровня (императивные, объектно-ориентированные, функциональные, логические).

    презентация [41,4 K], добавлен 13.10.2013

  • Функциональные возможности веб-сайтов и их применение. Сравнительный анализ языков программирования для веб-разработки. Методические аспекты разработки образовательного веб-сайта. Определение трудозатрат на разработку и отладку программного продукта.

    дипломная работа [2,8 M], добавлен 03.09.2021

  • Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.

    презентация [1,4 M], добавлен 29.04.2014

  • Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.

    презентация [11,9 K], добавлен 23.10.2013

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

    презентация [793,8 K], добавлен 15.11.2010

  • Требования к пользовательскому интерфейсу программного продукта. Выбор инструментальных средств разработки программы. Описание функциональной схемы, модульной структуры, структурной схемы. Технология разработки справочной системы программного продукта.

    дипломная работа [2,7 M], добавлен 12.05.2016

  • Системы визуального объектно-ориентированного программирования. Среда разработки Delphi. Microsoft Access как система управления базами данных реляционного типа. Структурированный язык запросов SQL. Программирование базы данных Библиотечного фонда.

    курсовая работа [2,5 M], добавлен 08.01.2012

  • Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.

    курсовая работа [1,3 M], добавлен 25.11.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.