Много, много лет назад я получил степень магистра в области объектно-ориентированной разработки программного обеспечения. Я охватил все: инициацию проекта, требования, анализ, дизайн, архитектуру, разработку и т. Д. И т. Д. Моя любимая книга по ИТ всех времен была «Разработка объектно-ориентированного программного обеспечения, основанный на опыте подход» (IBM-1996). Книга, созданная группой настоящих экспертов своего времени. В нем описывается подход, ориентированный на рабочий продукт, к объектно-ориентированному анализу, методам проектирования и разработки.
Я спроектировал и разработал и был счастлив и во главе своей игры, но я начал чувствовать себя немного устаревшим: гибкие движения стали модой дня и переименовали некоторые хорошо известные итеративные и инкрементальные подходы с новыми модными словами. Неожиданно неопытные разработчики начали хмуриться, когда я сказал «требования» или «архитектура», как будто эти вещи были заменены магией.
Дизайн и разработка потеряли веселье, и я собирался оставить позади всю ИТ-индустрию.
Затем я обнаружил Скала. О, как мягкий дождь на пыльной дороге. Просто все стало ясно, воздух снова стал сладким, и маленький свет моего жесткого диска замерцал до глубокой ночи, весело поддерживая меня в моем мире открытий.
Мне нравится дизайн системы. В глубине души я архитектор, а не программист. Я люблю анализировать, проектировать, думать, спорить, улучшать - я просто люблю простой, чистый и четкий дизайн.
Как мы разрабатываем чистые решения Scala?
Конечно, обычные диаграммы последовательности, диаграммы взаимодействия, диаграммы объектов и т. Д. Могут быть заменены или улучшены для лучшего смешения императивных и функциональных объектно-ориентированных систем. Конечно, есть возможность для чего-то совершенно другого!
Я не ищу раздутой сложности - я ищу гибкую простоту. Так же, как Scala на самом деле прост и легок (хотя и отличается), но может быть расширен, чтобы соответствовать вашим требованиям, как пара штанов для йоги. Для этого прекрасного языка должна существовать система проектирования, которая будет простой и может быть расширена в соответствии с вашими требованиями и вашим доменом. Конечно, UML не может быть этим!
Так, как мы проектируем чистые системы Scala? Представьте себе на мгновение, что вы можете позволить себе создать полноценную систему с нуля, и знаете, что вы будете использовать только Scala - как будут выглядеть ваши модели? Какие типы диаграмм вы бы описали структуру и поведение? Как бы вы моделировали параметры, совпадения, миксины, одиночные объекты и т. Д., Не вдаваясь в сложность расширения существующих методов моделирования, а не в новый, легкий, инновационный набор инструментов.
Существует ли такой дизайн / процесс / решение или пришло время его изобрести?