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

Содержание

Общие принципы разработки программных продуктовПрограммные продукты и их основные характеристики

Слайд 1Технология разработки программного обеспечения

Технология разработки программного обеспечения

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

Общие принципы разработки программных продуктовПрограммные продукты и их основные характеристики

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

программным обеспечением (программами).
Программа (program, routine) - упорядоченная последовательность команд (инструкций) компьютера для решения задачи.
Программное обеспечение (sowtware) - совокупность программ обработки данных и необходимых для их эксплуатации документов.
Программы предназначены для машинной реализации задач. Термины задачи и приложение имеют очень широкое употребление в контексте информатики и программного обеспечения.
Задача (problem, task) - проблема, подлежащая решению. Приложение (application) - программная реализация на компьютере решения задачи.
Таким образом, задача означает проблему, подлежащую реализации с использованием средств информационных технологий, а приложение - реализованное на компьютере решение по задаче. Приложение, являясь синонимом слова "программа", считается более удачным термином и широко используется в информатике.

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

Слайд 4Технологические и функциональные задачи. Показатели качества.
Существует большое число разнообразных классификаций задач.

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

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

Слайд 5Процесс создания программ можно представить как последовательность действий, представленных на рис.

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

Процесс создания программ можно представить как последовательность действий, представленных на рис. 8.1.Постановка задачи (problem definition) - это

Слайд 6-цель или назначение задачи, ее место и связи с другими задачами;
-условия

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

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

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

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

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

Слайд 8Программные продукты могут создаваться как:
 
- индивидуальная разработка под заказ;
 
- разработка для

массового распространения среди пользователей.

Программные продукты могут создаваться как: - индивидуальная разработка под заказ; - разработка для массового распространения среди пользователей.

Слайд 9Основными характеристиками программ являются:
алгоритмическая сложность (логика алгоритмов обработки информации);
- состав

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

Основными характеристиками программ являются: алгоритмическая сложность (логика алгоритмов обработки информации);- состав глубина проработки реализованных функций обработки;- полнота

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

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


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

Слайд 11Расход вычислительных ресурсов оценивается через объем внешней памяти для размещения программ

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

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

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

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

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

Слайд 13В СПО традиционно включают
системные управляющие и
системные обрабатывающие программы.

В СПО традиционно включаютсистемные управляющие и системные обрабатывающие программы.

Слайд 14Примерная классификация и типовые представители прикладного программного обеспечения представлены ниже    Проблемно-ориентированные ППП    Программные

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

Примерная классификация и типовые представители прикладного программного обеспечения представлены ниже     Проблемно-ориентированные ППП    Программные продукты данного класса

Слайд 15Многочисленные программные средства для решения различных типов вычислительных задач можно разделить

на 4 группы:
отдельные прикладные программы;
библиотеки прикладных программ;
пакеты прикладных программ;
интегрированные программные системы.

Многочисленные программные средства для решения различных типов вычислительных задач можно разделить на 4 группы: отдельные прикладные программы;

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

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

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

Слайд 17САSE-технологии
CASE (англ. Computer-Aided Software Engineering) — набор инструментов и методов программной инженерии для проектирования

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

САSE-технологииCASE (англ. Computer-Aided Software Engineering) — набор инструментов и методов программной инженерии для проектирования программного обеспечения, который помогает обеспечить высокое

Слайд 19Типичными CASE инструментами являются:
инструменты управления конфигурацией;
инструменты моделирования данных;
инструменты анализа и проектирования;
инструменты

преобразования моделей;
инструменты редактирования программного кода;
инструменты рефакторинга кода;
генераторы кода;
инструменты для построения UML-диаграмм.
]Примеры CASE программ: Rational Software
ERwin
 
 

Типичными CASE инструментами являются:инструменты управления конфигурацией;инструменты моделирования данных;инструменты анализа и проектирования;инструменты преобразования моделей;инструменты редактирования программного кода;инструменты рефакторинга кода;генераторы кода;инструменты

Слайд 22Ядром системы является база данных проекта - репозиторий (словарь данных). Он

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

Слайд 23Документатор проекта позволяет получать информацию о состоянии проекта в виде различных

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

Документатор проекта позволяет получать информацию о состоянии проекта в виде различных отчетов. Отчеты могут строиться по нескольким

Слайд 24Сервис представляет собой набор системных утилит по обслуживанию репозитория. Данные утилиты

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

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

Слайд 25Самостоятельная работа.
Что такое ПО?
Сколько этапов создания ПО?Дайте им характеристику.
Перечислите показатели качества

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

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

ПО показывает, что это сложная и трудоемкая работа, требующая высокой квалификации участвующих в ней специалистов. Однако до настоящего времени создание таких систем нередко выполняется на интуитивном уровне с применением неформализованных методов, основанных на искусстве, практическом опыте, экспертных оценках и дорогостоящих экспериментальных проверках качества функционирования ПО. По данным Института программной инженерии (Software Engineering Institute, SEI) в последние годы до 80% всего эксплуатируемого ПО разрабатывалось вообще без использования какой-либо дисциплины проектирования, методом "code and fix" (кодирования и исправления ошибок).
Проблемы создания ПО следуют из его свойств. Еще в 1975 г. Фредерик Брукс, проанализировав свой уникальный по тем временам опыт руководства крупнейшим проектом разработки операционной системы OS/360, определил перечень неотъемлемых свойств ПО: сложность, согласованность, изменяемость и незримость [1]. Что же касается современных крупномасштабных проектов ПО, то они характеризуются, как правило, следующими особенностями:

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

Слайд 27В начале 2001 года века ряд ведущих специалистов в области программной

инженерии (Алистер Коберн, Мартин Фаулер, Джим Хайсмит, Кент Бек и другие) сформировали группу под названием Agile Alliance. Слово agile (быстрый, ловкий, стремительный) отражало в целом их подход к разработке ПО, основанный на богатом опыте участия в разнообразных проектах в течение многих лет. Этот подход под названием "Быстрая разработка ПО" (Agile software development) [10] базируется на четырех идеях, сформулированных ими в документе "Манифест быстрой разработки ПО" (Agile Alliance's Manifesto) и заключающихся в следующем:
индивидуумы и взаимодействия между ними ценятся выше процессов и инструментов;
работающее ПО ценится выше всеобъемлющей документации;
сотрудничество с заказчиками ценится выше формальных договоров;
реагирование на изменения ценится выше строгого следования плану.
При таком подходе технология занимает в процессе создания ПО вполне определенное место. Она повышает эффективность деятельности разработчиков при наличии любых из следующих четырех условий:
когда она позволяет людям легче выразить свои мысли;
когда она выполняет задачи, невыполнимые вручную;
когда она автоматизирует утомительные и подверженные ошибкам действия.;
когда она облегчает общение между людьми;

В начале 2001 года века ряд ведущих специалистов в области программной инженерии (Алистер Коберн, Мартин Фаулер, Джим

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

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

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

Слайд 29Быстрая разработка приложений - Rapid Application Development (RAD) - это жизненный цикл

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

Быстрая разработка приложений - Rapid Application Development (RAD) - это жизненный цикл процесса проектирования, созданный для достижения более

Слайд 30Экстрема́льное программи́рование (англ. Extreme Programming, XP) — одна из гибких методологий разработкипрограммного обеспечения. Авторы методологии — Кент Бек, Уорд

Каннингем, Мартин Фаулер и другие.
Экстрема́льное программи́рование (англ. Extreme Programming, XP) — одна из гибких методологий разработкипрограммного обеспечения. Авторы методологии — Кент Бек, Уорд Каннингем, Мартин Фаулер и другие.

Слайд 31Двенадцать основных приёмов экстремального программирования (по первому изданию книги Extreme programming explained)

могут быть объединены в четыре группы:
Короткий цикл обратной связи (Fine scale feedback)
Разработка через тестирование (Test driven development)
Игра в планирование (Planning game)
Заказчик всегда рядом (Whole team, Onsite customer)
Парное программирование (Pair programming)
Непрерывный, а не пакетный процесс
Непрерывная интеграция (Continuous Integration)
Рефакторинг (Design Improvement, Refactor)
Частые небольшие релизы (Small Releases)
Понимание, разделяемое всеми
Простота (Simple design)
Метафора системы (System metaphor)
Коллективное владение кодом (Collective code ownership) или выбранными шаблонами проектирования (Collective patterns ownership)
Стандарт кодирования (Coding standard or Coding conventions)
Социальная защищенность программиста (Programmer welfare):
40-часовая рабочая неделя (Sustainable pace, Forty hour week)

Двенадцать основных приёмов экстремального программирования (по первому изданию книги Extreme programming explained) могут быть объединены в четыре группы:Короткий

Слайд 32Основная идея ХР — устранить высокую стоимость изменения, характерную для приложений

с использованием объектов, паттернов* и реляционных баз данных. Поэтому ХР-процесс должен быть высокодинамичным процессом. ХР-группа имеет дело с изменениями требований на всем протяжении итерационного цикла разработки, причем цикл состоит из очень коротких итераций. Четырьмя базовыми действиями в ХР-цикле являются: кодирование, тестирование, выслушивание заказчика и проектирование. Динамизм обеспечивается с помощью четырех характеристик: непрерывной связи с заказчиком (и в пределах группы), простоты (всегда выбирается минимальное решение), быстрой обратной связи (с помощью модульного и функционального тестирования), смелости в проведении профилактики возможных проблем.
Основная идея ХР — устранить высокую стоимость изменения, характерную для приложений с использованием объектов, паттернов* и реляционных

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

(heavyweight) процессы. В этих процессах прогнозируется весь объем предстоящих работ, поэтому они называются прогнозирующими (predictive) процессами. Порядок, который должен выполнять при этом человек-разработчик, чрезвычайно строг — «шаг вправо, шаг влево — виртуальный расстрел!». Иными словами, человеческие слабости в расчет не принимаются, а объем необходимой документации способен отнять покой и сон у «совестливого» разработчика.
В последние годы появилась группа новых, облегченных (lightweight) процессов [29]. Теперь их называют подвижными (agile) процессами [8], [25], [36]. Они привлекательны отсутствием бюрократизма, характерного для тяжеловесных (прогнозирующих) процессов. Новые процессы должны воплотить в жизнь разумный компромисс между слишком строгой дисциплиной и полным ее отсутствием. Иначе говоря, порядка в них достаточно для того, чтобы получить разумную отдачу от разработчиков.
Подвижные процессы требуют меньшего объема документации и ориентированы на человека. В них явно указано на необходимость использования природных качеств человеческой натуры (а не на применение действий, направленных наперекор этим качествам).

Традиционно для упорядочения и ускорения программных разработок предлагались строго упорядочивающие тяжеловесные (heavyweight) процессы. В этих процессах прогнозируется

Слайд 34Самостоятельная работа.
Что такое быстрая разработка приложений? Кто ее автор? почему она

появилась?
Какие принципы быстрой разработки приложений?
Что такое экстремальное программирование? Каковы их принципы?
В чем разница тяжеловесных и облегченных процессов?
Самостоятельная работа. Что такое быстрая разработка приложений? Кто ее автор? почему она появилась?Какие принципы быстрой разработки приложений?Что

Слайд 35Методы проектирования ПО

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

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

Слайд 36Проектирование алгоритмов и программ может основываться на различных подходах, среди которых

наиболее распространены:
структурное проектирование программных продуктов;
информационное моделирование предметной области и связанных с ней приложений;
объектно-ориентированное проектирование программных продуктов.
 
В условиях использования оригинальной технологии и канонического проектирования к методам и инструментальным средствам проектирования программного обеспечения задач относят методы IРТ-технологии проектирования и процедурно-ориентированные языки программирования.
В первую группу входит совокупность взаимосвязанных методов проектирования, которые были разработаны фирмой IBM:
метод структурного проектирования;
метод модульного проектирования;
метод проектирования сверху-вниз;
метод структурного программирования;
метод HIРО-документирования.

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

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

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

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

Слайд 38Модульное программирование
Модульное программирование. Здесь основная идея заключалась в том, чтобы "спрятать" данные

и процедуры внутри независимых программных единиц - модулей. Эту идею впервые реализовал Н. Вирт в алгоритмическом языке Modula (1975-1979 годы), а затем "подхватили" и остальные, распространенные в то время языки программирования. Например, известные системы программирования Turbo Pascal и Turbo С.
На этом можно было бы остановиться, т.к. я дошел темы моей работы, но я не могу обойти без внимания дальнейшее развитие технологий программирования, поэтому продолжу хронологию развития программирования.

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

Слайд 39Модульное программирование является воплощением в процессе разработки программ обоих общих методов

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

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

Слайд 40Не всякий программный модуль способствует упрощению программы [2]. Выделить хороший с

этой точки зрения модуль является серьезной творческой задачей. Для оценки приемлемости выделенного модуля используются некоторые критерии. Так, Хольт [4] предложил следующие два общих таких критерия:
· хороший модуль снаружи проще, чем внутри;
· хороший модуль проще использовать, чем построить.
Майерс [5] предлагает для оценки приемлемости программного модуля использовать более конструктивные его характеристики:
· размер модуля;
· прочность модуля;
· сцепление с другими модулями;
· рутинность модуля (независимость от предыстории обращений к нему).

Не всякий программный модуль способствует упрощению программы [2]. Выделить хороший с этой точки зрения модуль является серьезной

Слайд 41Модульное проектирование относится к процессу расчленения больших проблем на более узкие,

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


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

Слайд 42Использование нескольких предложений RET в модуле не должно нарушать правило одного

входа, поскольку все инструкции RET возвращают управление в одну и туже точку. Точно также, переход к общему RET в конце модуля, не изменяет его структуру, а добавляет лишь коды и увеличивает его сложность. С другой стороны, вход или выход из модуля не по этому правилу перечеркивает наибольшие преимущества модульного программирования: ясность и удобство сопровождения.
Имеется исключение из правила входа в модуль. Это происходит при использовании таблицы переходов для реализации потока управления внутри программы. Таблица перехода используется путем «проталкивания» адреса возврата в стек, вычисления индекса требуемого адреса перехода в таблице и выполнения перехода в памяти.
При практическом выполнении декомпозиции модулей можно самим найти некоторое количество альтернативных решений. Прежде чем осуществить правильный выбор, необходимо знать альтернативы. Цель состоит в выборе таких вариантов, которые создадут наилучшие условия проектирования
Использование нескольких предложений RET в модуле не должно нарушать правило одного входа, поскольку все инструкции RET возвращают

Слайд 43Методы разработки структуры модульной программы
Как уже отмечалось выше, в качестве модульной

структуры программы принято использовать древовидную структуру, включая деревья со сросшимися ветвями. В узлах такого дерева размещаются программные модули, а направленные дуги (стрелки) показывают статическую подчиненность модулей, т.е. каждая дуга показывает, что в тексте модуля, из которого она исходит, имеется ссылка на модуль, в который она входит. Другими словами, каждый модуль может обращаться к подчиненным ему модулям, т.е. выражается через эти модули. При этом модульная структура программы, в конечном счете, должна включать и совокупность спецификаций модулей, образующих эту программу. Спецификация программного модуля содержит:
· синтаксическую спецификацию его входов, позволяющую построить на используемом языке программирования синтаксически правильное обращение к нему (к любому его входу);
· функциональную спецификацию модуля (описание семантики функций, выполняемых этим модулем по каждому из его входов).
В процессе разработки программы ее модульная структура может по-разному формироваться и использоваться для определения порядка программирования и отладки модулей, указанных в этой структуре. Поэтому можно говорить о разных методах разработки структуры программы. Обычно в литературе обсуждаются два метода [1, 7]: метод восходящей разработки и метод нисходящей разработки.

Методы разработки структуры модульной программыКак уже отмечалось выше, в качестве модульной структуры программы принято использовать древовидную структуру,

Слайд 44Самостоятельная работа.
Что такое метод проектирования?
Охарактеризуйте структурный метод проектирования?
Какая существует классификация методов?
В

чем их отличия, преимущества и недостатки?
Самостоятельная работа.Что такое метод проектирования?Охарактеризуйте структурный метод проектирования?Какая существует классификация методов?В чем их отличия, преимущества и недостатки?

Слайд 45Объектно-ориентированное проектирование.

Объектно-ориентированное проектирование.

Слайд 46Объектно-ориентированный подход к проектированию программных продуктов основан на:
выделении классов объектов;
установлении характерных свойств объектов и методов их

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

Объектно-ориентированный подход к проектированию программных продуктов основан на:выделении классов объектов;установлении характерных свойств объектов и методов их обработки;создании иерархии классов, наследовании свойств объектов и методов

Слайд 47Объектно-ориентированный анализ - анализ предметной области и выделение объектов, определение свойств и

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

Объектно-ориентированный анализ - анализ предметной области и выделение объектов, определение свойств и методов обработки объектов, установление их взаимосвязей.Объектно-ориентированное

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

четко очерченными границами, имеющую смысл в контексте рассматриваемой прикладной проблемы. Введение объектов преследует две цели:
понимание прикладной задачи (проблемы);
введение основы для реализации на компьютере.
Примеры объектов: форточка, Банк "Империал", Петр Сидоров, дело № 7461, сберкнижка и т.д.
Цель разработки объектной модели - описать объекты, составляющие в совокупности проектируемую систему, а также выявить и указать различные зависимости между объектами. Декомп
Объекты и классыОбъектыПо определению будем называть объектом понятие, абстракцию или любую вещь с четко очерченными границами, имеющую смысл в

Слайд 49Классы
Два яблока из предыдущего примера принадлежат одному и тому же классу объектов (именно

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

КлассыДва яблока из предыдущего примера принадлежат одному и тому же классу объектов (именно с этим связана их одинаковость). Цвет,

Слайд 50Объектно-ориентированное проектирование ЭИС
Структурная декомпозиция ЭИС на основе объектно-ориентированного подхода отличается от

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

Слайд 51В настоящее время для объектно-ориентированного модели­рования проблемной области широко используется унифициро­ванный

язык моделирования UML (Unified Modeling Language), который разработан группой ведущих компьютерных фирм мира OMG (Object Management Group) [89] и фактически является стандартом по объектно-ориентированным технологиям. Язык UML реализован многими фирмами - производителями программно­го обеспечения в рамках CASE-технологий, например Rational Rose (Rational), Natural Engineering Workbench (Software AG), ARIS Toolset (IDS prof. Scheer) и др.

В настоящее время для объектно-ориентированного модели­рования проблемной области широко используется унифициро­ванный язык моделирования UML (Unified Modeling Language),

Слайд 52Самостоятельная работа.
Что такое объектно-ориентированное проектирование и программирование?
Что такое класс,атрибут и метод?
Как

вы считаете почему появился объектный метод?В чем его преимущество?


Самостоятельная работа.Что такое объектно-ориентированное проектирование и программирование?Что такое класс,атрибут и метод?Как вы считаете почему появился объектный метод?В

Слайд 53Внутренняя организация ПП. Библиотеки. Стиль программирования

Внутренняя организация ПП. Библиотеки. Стиль программирования

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

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

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

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


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

Слайд 56Структура программного продукта
Среди множества модулей различают:
головной модуль - управляет запуском программного продукта

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

Структура программного продуктаСреди множества модулей различают:головной модуль - управляет запуском программного продукта (существует в единственном числе);управляющий модуль - обеспечивает

Слайд 57Библиотека стандартных программ
Библиотека стандартных подпрограмм — это совокупность подпрограмм, составленных на

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

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

Слайд 58Стиль программирования – это набор правил и принципов написания кода для удобного чтения и восприятия кода

программы. Стиль программирования – залог успеха программиста, почему?
Правила хорошего стиля диктуют использование комментариев, отступов и т.д

Стиль программирования – это набор правил и принципов написания кода для удобного чтения и восприятия кода программы. Стиль программирования – залог успеха программиста, почему? Правила хорошего

Слайд 59Самостоятельная работа.
Зачем программисту стиль программирования?
Какие существуют правила хорошего стиля?
Что представляет собой

внутренняя структура ПО?
Зачем нужны библиотеки?

Самостоятельная работа.Зачем программисту стиль программирования?Какие существуют правила хорошего стиля?Что представляет собой внутренняя структура ПО?Зачем нужны библиотеки?

Слайд 60Интерфейс. Диалоговые системы.

Интерфейс. Диалоговые системы.

Слайд 61Мое любимое определение интерфейса дал Джефф Раскин, это такой гуру интерфейсов.

«Интерфейс – это способ, которым выполняется какая-то задача при помощи каких-то средств, а именно: действие и ответ системы». На самом деле это понятие гораздо шире того, что обычно вкладывается в интерфейс, потому что интерфейсом обладают практически все окружающие нас вещи, при помощи которых мы выполняем определенные функции.

Мое любимое определение интерфейса дал Джефф Раскин, это такой гуру интерфейсов. «Интерфейс – это способ, которым выполняется

Слайд 62Интерфейс-это способ взаимодействия пользователя с программой и программ между собой.
Диалоговый режим Большинство

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

Слайд 63системы с жестким сценарием диалога – стандартизированное представление информации обмена; дескрипторные системы

– формат ключевых слов сообщений; тезаурусные системы – семантическая сеть дескрипторов, образующих словарь системы (аналог – гипертекстовые системы); системы с языком деловой прозы – представление сообщений на языке, естественном для профессионального пользования. Наиболее просты для реализации и распространены диалоговые системы с жестким сценарием диалога, которые представлены в виде: меню – диалог инициируется программой; пользователю предлагается выбор альтернативы функций обработки из фиксированного перечня; предоставляемое меню может быть иерархическим и содержать вложенные подменю следующего уровня; действия запрос-ответ – фиксирован перечень возможных значений, выбираемых из списка, или ответы типа Да/Нет; запрос по формату – с помощью ключевых слов, фраз или путем заполнения экранной формы с регламентированным по составу и структуре набором реквизитов осуществляется подготовка сообщений.

системы с жестким сценарием диалога – стандартизированное представление информации обмена;  дескрипторные системы – формат ключевых слов

Слайд 64Самостоятельная работа.
Что такое интерфейс?
Что такое диалоговые системы?
Охарактеризуйте их, составьте классификацию.

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

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

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

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

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

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

Слайд 67Правила оптимизации программ
 
Жертвуем памятью ради скорости
Жертвуем скростью ради памяти
Циклы
Составление процедур

Правила оптимизации программ Жертвуем памятью ради скоростиЖертвуем скростью ради памятиЦиклыСоставление процедур

Слайд 68Корректность ПО-это способность ПО выполнять точные задачи так, как они определены их спецификацией.

Корректность ПО-это способность ПО выполнять точные задачи так, как они определены их спецификацией.

Слайд 69Стадии разработки программ и программной документации.
ГОСТ 19.102-77 устанавливает пять стадий разработки программ и программнойдокументации для ЭВМ, комплексов

и систем: техническое задание; эскизный проект; технический проект; рабочий проект; внедрение.
Стадии разработки программ и программной документации.ГОСТ 19.102-77 устанавливает пять стадий разработки программ и программнойдокументации для ЭВМ, комплексов и систем: техническое задание; эскизный проект; технический

Слайд 70Самостоятельная работа.
Что такое эффективность,оптимизация и корректность?
Правила оптимизации?
Как осуществить эффективность ПО?

Самостоятельная работа. Что такое эффективность,оптимизация и корректность?Правила оптимизации?Как осуществить эффективность ПО?

Что такое shareslide.ru?

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


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть