Сравнительно недавно (менее полугода) я стал работать в команде программистов над одним крупным веб-проектом. Исторически сложилось так, что проект практически держится в голове у разработчиков, а документации - почти ноль (не считая нескольких документов Visio). Сложно разбираться с существующим кодом и вносить в него новую функциональность. В коде чёрт ногу сломит. Знаю, что я новичок в коллективе, но мне и сейчас непросто, потому что есть много неясностей и неоднозначностей. Я могу полдня въезжать что конкретно от меня требуется сделать, копаясь в горсти исходного кода, ибо задача описывается попросту на пальцах, в двух предложениях. Из-за нечётко поставленных задач мне приходится додумывать и продумывать все возможные ситуации и, само собой, я где-то обязательно что-нибудь упускаю.
Вот такая у нас суровая действительность.

С этим надо что-то делать, но следует принимать в учёт нынешнее положение состояние. Хочется повысить квалификацию коллектива и улучшить понимание между нами. Основную часть продумывания задания составляет работа с событиями и состояниями. Но всё это на бумажке. Так что логично, что стоит пользоваться какими-то диаграммами. Помогут ли в данном случае диаграммы UML? Я с UML не имел дела до этого.

Посоветуйте каким способом лучше всего проектировщику давать задание нашему коллективу, чтобы нам было понятно что делать. Каким подходам стоит следовать, каким ПО пользоваться (желательно с открытым кодом, а то бюджет малый) для построения диаграмм. Чтобы и для Linux и для Windows.
Просьба дать советы, которыми можно воспользоваться на практике.