Что нужно знать перед началом разработки большого проекта?
Если к проекту будет подключатся команда разработчиков, а если проект большой я думаю рано или поздно вам понадобятся помощники, тогда вам будет необходим свой code-style-guide ну или позаимствованный например от гугла.
Насчет проектирования, тут не всегда обязательно UML, проектировать можно по разному, зависит от методологии, если вы не боитесь, что во время разработки проект будет терпеть много изменений, то пишите спеку (SRS) в виде  IEEE 830 или RUP. В ходе написания спецификации вам и понадобятся разные UML диаграмки.
Если вы любите более гибкую разработку, то можете позаимствовать так называемые user story, суть которых состоит не в подробном техническом документировании каждой функции, а в том, что функционал проекта разбивается на фичи которые описываются человеческим языком, можете примеры из scrum посмотреть.
Вообще все сводится к выбору методологии разработки ПО, их сейчас множество, от себя скажу, что не обязательно зацикливаться на одной, их можно синтезировать подстраивая под себя.
Я для себя понял одно общее правило: большей проект в начале упрощать максимально, отбрасывая все лишнее, стараясь в первом же прототипе, реализовать главную бизнес цель проекта, а потом уже наращивать все остальное. 
Это правило помогает, меньше рассуждать и философствовать над проектом и просто делать его, а то много проектов завершаются еще на стадии проектирования, когда ты входишь в ступор от обилия вариантов реализации и возможных проблем и сценариев. Just do it)
Очень удобно и очень эффективно использовать какой-то багтрекер-командный-менеджер-механизм.... аля Jira, Redmine, etc...
Ну и помнить про сроки и бюджет.