Мета закинута
Автор не відписував в цілі 7 років 8 месяців 24 дня
Научиться проектировать архитектуры программного обеспечения (ООАП)
Цель
Научиться уверенно проектировать сложные архитектуры и системы программного обеспечения с помощью систематической постоянной практики. Практика выражается в моделировании разнообразных предметных областей (от простых до сложных, по возрастанию) при помощи UML-диаграмм, и финальной их реализации на каком-либо языке программирования.
Проблема
В наше стремительное время бизнес во всю юзает фреймворки при разработки ПО, оно и понятно - и быстро получается, и разработчиков легче найти/заменить. Разработчикам, в свою очередь, тоже хорошо - низкий порог вхождения в IT-индустрию получается. Вот разработчик клиентской части, к примеру, выучил AngularJS, углубился в детали и тонкости своего конкретного фреймворка. Затем он переключается, допустим, на React.js в силу того, что "тренды" поменялись. Повседневной задачей такого разработчика зачастую становится поддержание некоей огромной кодовой базы определенного продукта, оперативное закрытие "тасок" в джире. Пределом развития такого разработчика становятся компании-"галеры", в которых работает 200+ программистов, разделенных на многочисленные команды по 5-7 человек, работающих по scrum-системе с вечно горящими сроками. Жизнь такого разработчика превращается в день сурка, работе за станком каким-то, хождением по струнке в этих стеклянных многоэтажных офисах и утопанию в корпоративном сумашествии. Далее есть два варианта развития событий: либо человека целиком полгощает такая работа, он оседает в каком-нибудь EPAM на пять лет, дослуживается до сеньора там, берет ипотеку, дорогую машину в кредит, женится, заводит детей, отращивает пузо, притупляется в мышлении, и его все устраивает. Либо второе: он начинает подозревать что-то, осматриваться по сторонам, просыпаться. Он начинает какие-то поиски чего-то, беспокоится, и находит: малоизвестные компании, с небольшим числом сильных программистов, с нетривиальными инженерными задачами, с гораздо большими зарплатами, причем в сразу в иностранной валюте из кармана инвесторов. Команды, в которых люди друг другу становятся друзьями и единомышленниками, где нет рабочего дня с 11 до 21 и тимбилдингами по пятницам, где нет формальностей и корпоративной культуры. Но, к сожалению, понимает, что за плечами у него лишь ковыряния многолетние в десятиэтажных абстракциях, называемых "фреймворки", которые таким компаниям не нужны, потому как они ценят высокую производительность и качество своего продукта. Они создают прекрасные и гибкие архитектурные решения высокой сложности, кодовая база становится прозрачной и чистой, а работа превращается в удовольствие, стимулируя профессиональный рост. Вопрос лишь в том, что ближе душе.
Почему ООП?
Потому что объектно-ориентированный подход является единственным подходом на сегодня, который позволяет управлять невероятно сложными и хаотичными системами. Это проверено десятилетиями на примере мировых корпораций с гигантскими инфраструктурами. ООП и точка.
Критерій завершення
Я умею проектировать системы высокой сложности
Особисті ресурси
Свободное от работы время, больше ничего не требуется
-
Почитать про обозначения классовых диаграмм UML
Прежде всего необходимо разобраться со всеми обозначениями, при помощи которых я буду производить моделирование, буквально одним вечером после работы:
-
Необходимое программное обеспечение
Нужно найти программу под Linux или веб-сервис для UML моделирования, с ходу какое-то бесплатное решение найти не удалось.
-
Найти ресурсы и сообщества, в которых можно попросить о ревью спроектированных диаграмм
Необходима самопроверка, потому как мои диаграммы всегда будут казаться "нормальными" для меня самого. Посему нужно найти компетентных в данном вопросе людей, которые смогли бы дать ревью и указать на ошибки. Поиски буду производить где-нибудь в slack, reddit, stackoverflow и прочие. Предположительно ревьювирами могут быть джависты и плюсовики, потому как они чаще всего имеют дело с ООП, посмотрим.
-
Первая система - "Стол заказов Macdonalds"
Предметная область
Макдональдс - заведения для быстрого питания, распологаются в небольших зданиях и торговых центрах.
- существует стол для заказов, разделяющий клиентов и зал по одну сторону, кассиров и кухню по другую сторону;
- клиент может совершить заказ и покупку обратившись к кассиру;
- клиент может заказать разную еду: напитки, гамбургеры, гарниры, соус;
- клиент может заплатить только рублями;
- имеется табло с очередью заказов;
- скорость обработки заказов напрямую зависит от количества сотрудников на кухне;
- количество кассиров напрямую влияет на скорость создания заказов;
- каждый продукт имеет свою длительность приготовления и свою длительность заказа.
Зал для питания и кухня "мокаются", т. е. эти предметные области нас не интересуют - проектируем только систему стола заказов.
Дополнительные фичи
После проектирования системы нужно внедрить следующие фичи:
- поддержка иностранной валюты (евро и доллар) по текущему курсу рубля;
- введение нового продкута - алкогольные напитки;
- установление электронных терминалов для совершения заказов без участия кассира.
Трудно ли вносить новые фичи приходится ли серьезно переписывать архитектуру? В чем заключаются ошибки в таком случае, какие нужно сделать выводы?
- 821
- 24 березня 2018, 14:47
Не пропустіть нові записи!
Підпишіться на ціль і стежте за її досягненням