Статью о том, как писать пакеты, я на хабре публиковал в конце октября. А касаемо проектирования, думаю, что для julia надо использовать именно принципы функционального проектирования. SADT, IDEF0 и пр.
Я обычно не рекомендую использовать SADT, IDEF0 и т.д. — люди путают функциональное проектирование (плюс модульный синтез, не отражаемый в этом подходе) и обычную развёртку во времени, "процедуры". Никто не читает диаграммы IDEF0 как "самая важная функция вверху слева, самая неважная — внизу справа". Все читают как "последовательное выполнение шагов", то есть как в BPMN и IDEF3.
Кроме этого, это диаграммные техники. А программирование не живёт блок-схемами, проектирование должно вестись на каком-то текстовом представлении (псевдокод тут не самое плохое решение, но DSL как язык проектирования/моделирования на самой Julia был бы лучше. Конечно, в этом DSL должна быть возможность указания функциональных объектов, функций, сервисов и т.д. — полноценное представление системного подхода).
У меня идёт обсуждение такого моделирования и DSL в Julia, вот последний пост был на эту тему:
https://ailev.livejournal.com/1488488.html (и там было содержательное продолжение —
https://ailev.livejournal.com/1489546.html, но после этого всё подзаглохло).
Ежели чего, то аргументы против диаграммных языков у меня в книжке "Визуальное мышление. Доклад о том, почему им нельзя обольщаться". Книжка в .pdf вот:
https://yadi.sk/i/9GT3TzbV3ZPPab (а в 13 электронных форматах за 36 рублей вот:
https://ridero.ru/books/vizualnoe_myshlenie/).