Похожие презентации:
ПАКПС 1
1. Проектирование, архитектура и конструирование программных систем
П.Сычев Университет «Дубна»Лекция 1
2. Введение
› Современное программного обеспечение – это оченьсложная программная система, часто содержащая
много тысяч и, даже, миллионов строк кода.
› Как проектируются и создаются такие программные
системы?
3. Сложность программирования
› Истребитель F-35› Разработка – 1996 г.
› Прототип – 2001 г.
› Ввод в эксплуатацию –
2016-2018 г.
› Цена – 70-100 млн.$
› Количество деталей –
около 1 млн.
› Размер программного кода
– около 10 млн строк.
4. Основные этапы разработки ПО
1. Требования к системе;2. Архитектура системы;
3. Конструирование системы;
4. Кодирование;
5. Приемочные испытания;
6. Сопровождение системы.
› Тестирование – не этап. Оно производится на всех
этапах, непрерывно!!!
5. Литература
› Р.Мартин Чистая архитектура.Искусство разработки
программного обеспечения –
Спб.:Питер,2018
6. Литература
› Р.Мартин Чистый код.Создание, анализ и
рефакторинг –Спб.:
Питер,2019
7. Литература
› Гамма Э., Хелм Р., Джонсон Р.,Влиссидес Дж. Приемы объектноориентированного проектирования.
Паттерны проектирования. – СПб.:
Питер, 2016.
› Тепляков С. Паттерны
проектирования на платформе .Net.
– СПб.: Питер, 2016.
› Мартин Р. Принципы, паттерны и
методики гибкой разработки на
языке С# - СПб.: Символ, 2012..
8. Конструирование (design) ПС
› Мы начнем с середины - с вопросов построениясистемы. Архитектуру мы рассмотрим позже, будем
считать, что требования и архитектура у нас есть.
› Как построить программу чуть более сложную, чем
“Hello world!”?
› Как и в любой другой инженерии в программной
инженерии накоплен богатый опыт хороших проектных
решений, который оформлен в виде шаблонов (или
паттернов) проектирования.
9. Откуда берутся шаблоны проектирования?
› Шаблоны проектирования не изобретаются именно вэтом качестве. Они возникают в реальных проектах, как
удачные решения возникающих проблем
проектирования при создании конкретных программных
продуктов. Впоследствии, как правило, другими
людьми, они вычленяются из этого проекта,
обобщаются и публикуются как шаблон
проектирования.
10. Шаблоны проектирования
› Идея шаблонов проектированиявозникла в конце 80-х годов
прошлого века. Ключевой стала
публикация книги четырех авторов
(bang of four - банда четырех)
› Гамма Э., Хелм Р., Джонсон Р.,
Влиссидес Дж. Приемы объектноориентированного проектирования.
Паттерны проектирования. – СПб.:
Питер, 2016.
› Оригинал книги вышел в 1994 году
11. Перечень шаблонов
› Мы с вами будем рассматривать 22 паттерна изклассической книги. Паттерны разбиты на три группы:
порождающие паттерны (5), структурные паттерны (7),
поведенческие паттерны (10).
› Порождающие паттерны связаны с созданием новых
объектов.
- Singleton
- Factory method
- Prototype
- Abstract factory
- Builder
12. Перечень шаблонов
› Структурные паттерны позволяют создать сложныйобъект из простых, не используя наследования
- Adapter
- Decorator
- Composite
- Proxy
- Façade
- Bridge
- Flyweight
13. Перечень шаблонов
› Поведенческие паттерны- Chain of Responsibility
- Command
- Iterator
- Observer
- State
- Strategy
- Mediator
- Memento
- Template method
- Visitor
14. Перечень шаблонов
› Кроме этих базовых паттернов проектирования, мырассмотрим несколько паттернов более высокого
уровня, часто используемых при разработке
распределенных приложений.
› Особое место в курсе занимают принципы объектноориентировнного проектирования, обычно
обозначаемые аббревиатурой SOLID.
15. Пример паттерна - Singleton
› На собеседовании при приеме на работу на позициюразработчика, часто задают вопрос:
Имеет ли смысл создание класса, у которого нет ни
одного публичного конструктора?
Правильный ответ – да! Пример – Singleton.
› Сформулируем проблему. Необходимо спроектировать
класс, который бы:
- гарантировано имел бы единственный экземпляр
этого класса во всем приложении;
- этот единственный экземпляр должен быть доступен
в любой точке приложения.
16. Singleton
› Пример класса (наC#) приведен
справа.
› Пример
использования –
ниже.
public class Singleton
{
private Singleton() { }
private static Singleton _instance = null;
public void DoSome() { }
public static Singleton GetInstance()
{
if (_instance == null)
_instance = new Singleton();
return _instance;
}
}
Singleton single = Singleton.GetInstance();
single.DoSome();
17. Singleton
› Сделаем формальное описание этого шаблона.› Этот формат мы будем использовать для описания
всех шаблонов.
18. Singleton
› Тип:порождающий.
› Синоним: нет.
› Назначение:
гарантирует, что у класса есть только один экземпляр, и
предоставляет к нему глобальную точку доступа.
› Мотивация:
для многих программных систем иногда нужно, чтобы
существовал единственный экземпляр класса.
Например оконный менеджер. Как гарантировать
единственность и доступность этого экземпляра?
19. Singleton
› Структура:Singleton
-Singleton()
+Some()
(s)+GetInstance():Singleton
(s) -_instance:Singleton
20. Singleton
› Реализация:здесь приводится пример реализации,
рассматриваются особенности реализации в тех или
иных ситуациях.
› Например есть проблемы использования этого
шаблона в многониточных приложениях из-за
необходимости блокировок и, как результат, возможно
неэффективного кода.
21. Singleton
› Результаты:Здесь рассматриваются плюсы и минусы данного
шаблона
(+) гарантируется единственность экземпляра класса и
его глобальная доступность;
(+) большая гибкость в сравнении со статическим
классом;
(-) может создавать проблемы в параллельных и/или
распределенных приложениях. В этих случаях
необходимо более сложное решение.
Программирование