Similar presentations:
Введение в технологию проектирования программного обеспечения (тема 1)
1.
АНОО ВО СИБИРСКИЙ ИНСТИТУТ БИЗНЕСА И ИНФОРМАЦИОННЫХТЕХНОЛОГИЙ
Учебная дисциплина:
Основы проектирования ПО
Куликова Елена Васильевна
2.
Что изучает?- ознакомление студентов с методами, подходами и
технологиями проектирования ПО;
- ознакомление студентов с инструментальными
средствами проектирования ПО;
- приобретение навыков разработки, тестирования,
отладки и оценки компонентов программных
проектов.
3.
Лекции: 18 часов (9 пар)• Лабораторные работы: 36 часов (18 пар)
• Зачет
4.
Тема 1. Введение в технологию проектированияпрограммного обеспечения
5.
1.1 Процесс проектирования. Цели, основныевиды деятельности проектирования ПО
6.
Программирование ≠ ПроектированиеПрограммирование – деятельность, которая
может
происходить во многих различных контекстах:
«просто нравиться»;
«чтобы научиться»;
«потому что надо»;
«в рамках разработки проекта»;
…..
6
7.
Раньше…All rights reserved.
Программные продукты
могли в обозримые
сроки разрабатываться
одиночками
или IT-подразделениями
автоматизируемых
предприятий.
8.
Разработка программных продуктов сейчас?9.
СейчасAll rights reserved.
1. Разработка ПО – это производственный
процесс, в который вовлечено огромное количество
различных специалистов, находящихся в разных
странах и городах. Наличие ИТ-команды!
10.
ИТ-команда?11.
СейчасAll rights reserved.
2. Создание программного обеспечения – сложный
высоко-конкурентный бизнес, содержащий
большую долю творческой составляющей.
12.
СейчасAll rights reserved.
3. Эффективное взаимодействие внутри команды и
между командами, включенными в общий проект,
невозможно без наличия общих договоренностей,
реализуемых в виде стандартов и методологий.
13.
Стандарты и методологии?14.
Проектирование программного обеспеченияПроектирование программного обеспечения —
процесс создания проекта программного
обеспечения (ПО), а также дисциплина,
изучающая методы проектирования.
Целью проектирования является определение
внутренних свойств системы и детализации её
внешних (видимых) свойств на основе выданных
заказчиком требований к ПО (исходные условия
задачи).
15.
Эффективность ИТ-проектов, статистикауспешности
Статистика успешности ИТ проектов (по данным
компании «Standish Group» —компании,
предоставляющей услуги по исследованию и
анализу эффективности работы ИТ-проектов»)
15
Succeeded – выполнены в срок,
в
пределах
бюджета
и
реализовали
нужную
функциональность;
Challenged
–
превысили
бюджет
и/или
сроки,
реализовали
только
часть
функционала;
Failed
–
отменены
до
завершения либо завершены,
но не внедрены или результаты
не используются.
16.
Почему падают ИТ-проекты? Анализ,выводы, собственная оценка…
16
17.
Особенности программных проектовВысокая
сложность
Часто –
недостаточный
профессионализм
участников
17
Высокая
изменчивость
18.
Сложность ИТ-проектов.Причины сложности ИТ-проектов:
большой объем сложной функциональности;
сложность документирования и затруднительность оценки
документов;
высокая сложность и быстрое изменение технологий разработки;
высокая сложность программной архитектуры;
необходимость обеспечить работоспособность на разных
All rights reserved.
аппаратно-программных платформах;
сложность и вариативность среды исполнения;
нематериальность артефактов;
относительно низкий объем повторяемой, рутинной деятельности;
проблема «собственности на код».
19.
Изменчивость ИТ-проектовСоставляющие высокой изменчивости ИТ-проектов:
изменчивость бизнес-среды заказчика;
сильная изменчивость пользовательских требований;
увеличение сложности по мере углубления в задачу.
All rights reserved.
Сложность
проектов
Невозможность предусмотреть
все заранее и избежать ошибок
Необходимость внесения уточнений
и исправлений в проектные решения
20.
Что в итоге?отсутствие порядка в процессе разработки (разработка – есть,
упорядоченного процесса – нет);
высокая трудоемкость проверки соответствия работы системы
спецификациям;
отсутствие гарантий работоспособности системы в реальной
среде;
All rights reserved.
сложность дальнейшего развития.
Итог: недовольный Заказчик со всеми вытекающими…
21.
Что делать?Знать и учитывать уникальность отрасли
разработки ПО.
Знать и использовать лучшие практики, как
основу успешного выполнения ИТ-проектов.
Постоянно и активно учиться:
• читать, слушать и слышать;
• пробовать;
• приспосабливать знания к текущей ситуации.
21
22.
software engineeringИнженерия разработки программного обеспечения
(software engineering) – это инженерная дисциплина,
охватывающая все аспекты разработки ПО.
Термин – software engineering (программная
инженерия) – впервые был озвучен в октябре 1968
года на конференции подкомитета НАТО по науке и
технике ( г. Гармиш , Германия):
Рассматривались проблемы проектирования,
разработки,
распространения и поддержки программ.
Впервые прозвучал термин «программная инженерия» как
некоторая дисциплина , которую надо создавать и которой
надо руководствоваться в решении перечисленных проблем .
22
23.
Разные трактовки термина «Программнаянженерия»
установление и использование обоснованных инженерных
принципов (методов) для экономного получения ПО,
которое надежно и работает на реальных машинах [Bauer
1972].
та форма инженерии, которая применяет принципы
информатики (computer science) и математики для
рентабельного решения проблем ПО [CMU/SEI-90- TR-003]
применение систематического, дисциплинированного,
измеряемого подхода к разработке, использованию и
сопровождению ПО [IEEE 1990].
дисциплина, целью которой является создание
качественного ПО, которое завершается вовремя, не
превышает выделенных бюджетных средств и
удовлетворяет выдвигаемым требованиям [Schach, 99]
23
24.
Промышленное программированиеПредметом программной инженерии является
круг вопросов и проблем, возникающих при
промышленной разработке программных
продуктов.
Промышленное программирование
24
25.
Промышленное программированиеПромышленное программирование
обычно
ассоциируется с разработкой больших и
сложных программ коллективами
разработчиков .
Становление и развитие этой области
деятельности было вызвано рядом проблем ,
связанных с высокой стоимостью программного
обеспечения , сложностью его создания ,
необходимостью управления и прогнозирования
процессов разработки .
25
26.
Особенности промышленной разработкипрограммных средств
коммерческий характер разрабатываемых
программ;
конструктивная сложность программ;
коллективный характер работы;
другие специфические характеристики.
26
27.
Промышленное программированиеОплата
работы
Четкое
понимание
конечного
результата
(«что нужно
Заказчику?»)
Определен
ные сроки
Заказчик
Команда
27
Промышлен
ное
программир
ование
Результат
должен быть
нужного
качества
28.
Программная инженерия =программирование + дополнительные
виды деятельности
Дополнительные виды деятельности:
анализ,
разработка требований,
планирование,
организация процесса разработки
учет удобств дальнейшего сопровождения, повторного
использования и интеграции с другими системами
проектирование,
тестирование,
конфигурационное управление,
проектный менеджмент,
создание различной документации (проектной,
пользовательской и пр.).
28
29.
Связь промышленного программирования ипрограммной инженерии
Программная инженерия (software engineering) –
виды деятельности, выполняемые в процессе
промышленного программирования и
необходимые для успешного выполнения
заказов.
29
30.
Методы проектированияМетоды
проектирования
Метод структурного
анализа и
проектирования
SADT, DFD,
IDEF3
30
Метод сущность-связь
проектирования
информационных
систем
Нотация Чена, нотация
Мартина, IDEF1X и др.
Метод объектноориентированного
анализа
Язык UML
31.
Методология структурного анализаМетодология структурного анализа —
систематический пошаговый подход к анализу
требований и проектированию спецификаций
системы.
Целью этой методологии: преобразование общих,
неясных знаний о требованиях к системе в как можно
более точные определения.
Том Демарко — американский инженер-программист,
писатель и консультант по программной инженерии.
31
32.
Модели в структурном анализе ипроектировании
Используются различные модели, описывающие:
Функциональную структуру системы;
Последовательность выполняемых действий;
Передачу информации между функциональными
процессами;
Отношения между данными.
32
33.
Модели в структурном анализе ипроектировании
Наиболее распространенные модели :
функциональная модель SADT (Structured
Analysis and Design Technique);
DFD (Data Flow Diagrams) - диаграммы потоков
данных;
IDEF3 (Integrated DEFinition for Process Description
Capture Method) — методология моделирования и
стандарт документирования процессов,
происходящих в системе.
33
34.
SADTSADT (structured analysis and design technique) —
методология структурного анализа и
проектирования, интегрирующая процесс
моделирования, управление конфигурацией
проекта, использование дополнительных
языковых средств и руководство проектом со
своим графическим языком.
34
Процесс моделирования может быть разделен на
несколько этапов: опрос экспертов, создание
диаграмм и моделей, распространение документации,
оценка адекватности моделей и принятие их для
дальнейшего использования.
35.
SADTФормализовать процесс создания системы можно,
разбив его на следующие фазы:
• Анализ — определение того, что система будет
делать
• Проектирование — определение подсистем и их
взаимодействие
• Реализация — разработка подсистем по
отдельности, объединение — соединение
подсистем в единое целое
• Тестирование — проверка работы системы
• Установка — введение системы в действие
• Эксплуатация — использование системы
35
36.
Основные элементы SADT-диаграммы36
37.
Пример. SADT-диаграмма37
38.
Пример. SADT-диаграмма38
39.
Пример. SADT-диаграмма39
40.
DFDDFD (Data Flow Diagrams) – метод структурного
анализа, использующий понятия «процесс»,
«поток данных» и «хранилище данных» для
описания системы в виде набора диаграмм,
отражающих и структурирующих назначение
проектируемой системы.
40
Требования к системе разбиваются на
функциональные компоненты (процессы) и
представляются в виде сети процессов, связанных
потоками данных.
41.
Основные элементы DFD41
42.
Пример. DFD-диаграмма42
43.
Пример. DFD-диаграммаС точки зрения DFD:
Клиент– это внешняя
сущность, которая
является источником
данных и получением
результата.
Процесс обработки заказа
(подтверждение и
проводка данных в
системе менеджером).
Сбор заказа на складе
(после получения заявки).
Оформление отгрузки
(создание необходимых
документов).
43
44.
DFD и SADT?DFD создавались как средство проектирования ИС
любой класс систем моделируется при помощи DFDориентированных методов
большой набор элементов, адекватно отражающих
специфику различных систем (например, хранилища
данных являются прообразами файлов или баз данных,
внешние сущности отражают взаимодействие
моделируемой системы с внешним миром)
акцент на взаимодействие между собой потоков данных
SADT создавались как средство моделирования
систем вообще
SADT-диаграммы менее выразительны и удобны при
моделировании ПО
Дуги в SADT жестко типизированы (вход, выход,
управление, механизм)
44
45.
IDEF3IDEF3 (Integrated DEFinition for Process Description
Capture Method) — методология моделирования и
стандарт документирования процессов,
происходящих в системе (показывает причинноследственные связи между ситуациями и событиями
в понятной эксперту форме).
использует графическое описание информационных
потоков, взаимоотношений между процессами обработки
информации и объектов, являющихся частью этих
процессов.
дает возможность аналитикам описать ситуацию, когда
процессы выполняются в определенной
последовательности, а также описать объекты,
участвующие совместно в одном процессе
45
46.
IDEF3, типы диаграммМодель в нотации IDEF3 может содержать два типа
диаграмм:
диаграмму Описания Последовательности
Этапов Процесса (Process Flow Description
Diagrams, PFDD)
диаграмму Сети Трансформаций Состояния
Объекта (Object State Transition Network, OSTN)
46
47.
Основные элементы IDEF347
48.
Пример. IDEF3-диаграмма48
49.
Пример. IDEF3-диаграмма49
50.
Нотация IDEF1XСм. Тема «Проектирование базы данных»
50
51.
Нотация ЧенаСм. Тема «Реляционные базы данных»
51
52.
Нотация МартинаСм. Тема «Реляционные базы данных»
52
53.
Методы объектно-ориентированногоанализа и проектирования
53
54.
Главная цель объектного анализаГлавная цель объектного анализа -
представить предметную область как множество
объектов со свойствами и характеристиками,
которые достаточны для их определения и
идентификации, а также для задания поведения
объектов в рамках выбранной системы понятий и
абстракций.
54
55.
Примеры методов объектно-ориентированногоанализа (их очень много! «Проверенных» более 50)
объектно-ориентированного системного анализа,
OOAS (Object- • метод
позволяющий выделить сущности и объекты ПрО (предметной
определить их свойства и отношения, а также
Oriented system области),
построить на их основе информационную модель, модель
состояний объектов и процессов представления потоков данных
analysis)
(dataflow);
OOA (ObjectOriented
analysis)
• метод объектно-ориентированного анализа ,
обеспечивающий моделирование ОМ (объектной модели) и
формирование требований к ПрО с помощью понятия
"сущность-связь", спецификацию потоков данных и
соответствующих процессов;
SD (Structured
Design)
• метод структурного проектирования системы, данных и
программ преобразования входных данных в выходные с
помощью структурных карт Джексона;
55
56.
Примеры методов объектно-ориентированногоанализа
OMT (Object
Modeling
Technique)
• технология объектного моделирования включает в
себя процессы (анализа, проектирования и
реализации), набор нотаций для задания четырех
моделей (объектной, динамической, функциональной и
взаимодействия)
UML
• объединенный метод , включающий средства и
понятия метода Г. Буча (объекты, классы,
суперклассы), принципы наследования, полиморфизма
и инкапсуляции, диаграммные средства
взаимодействия объектов Румбауха и др.
CORBA
• метод определения распределенных объектов на
основе объектной модели CORBA и набора сервисных
системных компонентов общего пользования,
обеспечивающих их функционирование в среде
распределенных приложений
56
57.
Принципы объектно-ориентированногоанализа и проектирования
принцип абстрагирования –
• предписывает включать в модель только те аспекты предметной области, которые имеют
непосредственное отношение к выполнению проектируемой системой своих функций
принцип инкапсуляции –
• предписывает разделять элементы абстракции на секции с различной видимостью, что
позволяет отделить интерфейс абстракции от его реализации; обычно скрываются структура
объектов и реализация их методов;
принцип модульности –
• определяет возможность декомпозиции проектируемой системы на совокупность сильно
связанных и слабо сцепленных модулей;
принцип иерархии –
• предписывает выполнять иерархическое построение моделей сложных систем на различных
уровнях детализации;
принцип многомодельности –
• обозначает, что при моделировании предметной области необходимо разрабатывать
различные модели проектируемой сложной системы, отражающие различные аспекты ее
поведения или структуры.
57
Куликова Елена Васильевна
58.
ОбъектКонкретным представлением абстракции является
объект
Каждый объект характеризуется
индивидуальностью, состоянием и поведением.
Индивидуальность – характеристики объекта, отличающие
его от других объектов.
Состояние – перечень свойств объекта, имеющих текущие
значения.
Поведение – воздействие объекта на другие объекты или его
реакция на воздействия других объектов, выраженная в
терминах изменения его состояний и передачи сообщений.
58
Куликова Елена Васильевна
59.
UML (сокр. от англ. Unified Modeling Language –унифицированный язык моделирования) – язык
графического описания для визуального
(объектного) моделирования в области
разработки программного обеспечения.
59
60.
Использование UML:моделирование
программного
обеспечения
системное
проектирование
60
моделирование
бизнеспроцессов (BPM Business Process
Modeling)
отображение
организационных
структур
Куликова Елена Васильевна
61.
UML – язык программирования???UML является языком широкого профиля, это
открытый стандарт, использующий графические
обозначения для создания абстрактной модели
системы, называемой UML моделью.
UML не является языком программирования, но в
средствах выполнения UML-моделей как
интерпретируемого кода возможна
кодогенерация.
61
Куликова Елена Васильевна