Это первая из заметок об архитектуре программного обеспечения(далее архитектура ПО). В этих заметках я постараюсь рассказать о том что такое архитектура ПО, поделиться своим мнением об этом вопросе и рассказать как знания об архитектуре ПО могут быть использованы на практике.
Оглавление
Развернуть/свернуть оглавление
Важно знать историю
«Кто забывает уроки истории, обречён на их повторение»
— Джордж Сантаяна
История может многому нас научить и было бы глупо игнорировать эти знания.
Мы, как разработчики можем опираться на опыт прошлых поколений разработчиков. Это позволяет нам учиться на их ошибках, перенимать их опыт и добиваться выдающихся результатов “стоя на плечах гигантов”.
За время своей карьеры разработчика я прочитал огромное количество статей,посмотрел кучу видео с различных конференция и прочитал много книг. Я стараюсь сделать всё возможное, чтобы использовать накопленный другими разработчиками опыт!
К сожалению, часто материалы, которые мы используем, похожи на результат игры “испорченный телефон”. Это связано что в этих материалах изложено мнение о мнении и т.д.
Именно поэтому я решил собрать материалы, которые я считаю наиболее важными для своей работы и немного порассуждать о них.
Эти заметки результат моих размышлений, где я пытаюсь понять как возникли те или иные концепции и упорядочить их хронологически.
Написание этих заметок позволило мне лучше понять техники, которые используются в разработке ПО. Надеюсь, что данные заметки будут полезны моим коллегам.
Если в процессе чтения вы будете несогласны с какими-то аспектами, то я всегда открыт для обсуждений.
Заметки серии “Хроники архитектуры программного обеспечения”
- Хроники архитектуры программного обеспечения
- Предпосылки для появления архитектуры ПО
- Эволюция языков программирования
- Архитектурные стили vs. архитектурные паттерны vs. шаблоны проектирования
- Монолитная архитектура
- Слоистая архитектура
- MVC и альтернативы
- EBI архитектура
- Упаковка и пространства имён
- DDD
- Гексагональная архитектура
- Луковая архитектура
- Чистая архитектура
- Событийно-ориентированная архитектура
- От CQS к CQRS
- Сервис-ориентированная архитектура (SOA)
- Явная архитектура. #01: DDD, гексогональная, луковая, чистая, CQRS, … Как я собрал всё вместа
- Явная архитектура. #02: Больше чем концентрические слои
- Явная архитектура. #03: Отражение архитектуры и предметной области в коде
- Явная архитектура. #04: Документирование архитектуры
Временной график
Это примерный временной график эволюции разработки ПО, который сложился в моей голове после прочтения большого количества материалов на эту тему. Знак «~» я указал для дат, которые указаны приблизителько. Для точных дат я указал ссылки на материалы первоисточнки. Много полезной информации на эту тему можно найти
Я добавил ссылки на места, где нашел ссылку на дату, и поставил знак «~» там, где я не совсем уверен в дате, что означает «приблизительно». Мы также можем найти множество информации об этих вещах на странице «Парадигмы программирования» в Wikipedia.
- 50-е годы
- Неструктурированное программирование
- ~1951 – Assembly (встречаются даты с 1947 по 1954 )
- 60-е годы
- Структурированное программирование
- Слоистая (1 слой): 1 слой с UI, бизнес логикой и хранилищем данных
- ~1958 – Algol
- 70-е
- Процедурное/ функциональное программирование
- ~1970 – Pascal
- ~1972 – C
- 1979 – Model-View-Controller
- 80-е
- 90-е
- Слоистая(3 слоя): 1 слой с UI, 2 слой с бизнес логикой и 3 слой с хранилищем данных
- ~1991 – шина сообщений
- ~1991 – Python
- 1992 – EBC
- ~1993 – Ruby
- ~1995 – Delphi, Java, Javascript, PHP
- 1996 – Model-View-Presenter (MVP)
- 1996 – OCP, ISP, DIP (~SOLID), REP, CRP, CCP, ADP
- 1997 – SDP, SAP
- ~1997 – Aspect Oriented Programming
- ~1997 – Аспектно-ориентированное программирование
- ~1997 – Web сервисы
- ~1997 – ESB
- 2000-е
- 2002 – Принцип единственной ответственности(SRP) (~SOLID)
- 2003 – Предметно-ориентированное проектирование(DDD)
- 2005 – Model-View-ViewModel
- 2005 – Гексагональная архитектура
- 2006? – CQRS & ES (Command Query Responsibility Segregation & Event Sourcing)
- 2008 – Луковичная архитектура
- 2009 - микросервисы
- 2010-е