Я инженер-программист / архитектор, специализируюсь на искусственном интеллекте и распределенных системах, и у меня есть образование в области электроники и коммуникаций.
Во время моего путешествия в области программного обеспечения я всегда задавался вопросом, почему в этой области инженерии не хватает формальных методов проектирования, таких как те, что доступны в электронике (математическое моделирование и реализация), а также в разработке оптимальных систем связи со многими ограничениями, большинство из этих систем являются намного сложнее, чем самое сложное программное обеспечение на земле (например, ИС, которые запускают программное обеспечение, которое мы используем и разрабатываем), и единственной областью, связанной с программным обеспечением, в которой были формальные методы, были языки описания оборудования.
Недавно я узнал, что существуют формальные методы для проектирования, спецификации и проверки программного обеспечения, такие как нотация и язык Z, венский метод разработки и язык B.
но каково состояние дел в этой области и как их может использовать средний инженер (например, в моей команде)?