Я бы посоветовал вам написать два документа:
Одно техническое описание: Где вы будете писать все технические вещи, от структуры базы данных для описания протоколов, если это необходимо.
Описание: Если вы напишете весь функциональный материал, с целью проекта, описание каждой функциональности вашего приложения.
Каждый документ будет нацелен на разных людей, некоторые из них очень хороши с техническими деталями, а другие очень хороши с удобством использования приложения.
Когда я хочу быть уверенным, что мои технические и функциональные документы полезны, я пишу им: «Если я умру завтра, я хочу, чтобы люди, которые прочитали эти документы, все время поняли приложение, и я хочу, чтобы они будьте уверены, как это сделать, точно так же, как я бы хотел, чтобы это было сделано ». В конечном итоге я вникаю в детали приложения, но это, как правило, хорошая идея. Я заметил, что чем больше времени я трачу на запись этих документов, тем меньше звонков, которые я получаю позже, и менее плохие сюрпризы, которые я получаю, когда приложение переходит на стадию тестирования.
Cliffnotes: два документа, предназначенные для двух разных аудиторий. Один из них очень заинтересован техническими лакомыми кусочками, а другой не знает о технических лакомых кусочках. Не спешите, объясняйте вещи, делайте схемы и диаграммы (если вы уверены, что вы им хороши), читайте ваши документы снова и снова, и у вас будет прочная документация.
Редактировать: Word (или любой альтернативный текстовый процессор) обычно достаточно хорош, чтобы делать такие документы. Использование UML не всегда является хорошей идеей, особенно если вы не хорошо разбираетесь в UML (не стыдно в ней :).
Один маленький трюк Я считаю полезным: использование редактора веб-страниц WYSIWYG может помочь вам создать прототипы быстрых и грязных страниц, которые вы можете вставить в свои документы. Я даже зашел так же, как переустановить VB6 на старом компьютере, чтобы создать прототип прототипа для быстрого и грязного окон для этой цели. Он отлично работает и занимает очень мало времени.
Мне нужны некоторые разъяснения, чтобы ответить на это за вас. Для кого вы готовите этот документ? Сам? Клиент? Другие разработчики? Вы надеетесь сделать этот документ полной спецификацией для всего проекта, или это должно быть способом компиляции системных реквизитов? Вы говорите о многих уровнях абстракции, когда вы говорите «предложение для проекта» в том же раскладе, что и «точное решение о том, как выполнять все детали», - как-то это смешение абстракции кажется странным. Это действительно то, что вы хотите? –