Ну а теперь - обещанная критика. Буду столь же беспощаден, как компилятор, который к каждой запятой придирается.
Начать мы решили, как обычно, с обзора проекта. Это самый первый документ, после чтения которого каждое заинтересованное лицо должно прояснить интересующие его вопросы: руководитель проекта - во что же он ввязался на этот раз; потенциальный потребитель - какие проблемы решает программа и нужно ли ему это вообще; спонсор проекта - на что пойдут его кровные; и т.д.
Итак, по пунктам:
Цель:
Разработка программы, которая будет выполнять роль сортировки
Сразу же сбиваем читателя с толку: каждый знает, что сортировку можно выполнить в проводнике, не нужно никаких других программ. Мы-то понимаем, что речь идет совсем о другом, но те, кто не читали предысторию, не поймут.
и синхронизации файлов
Finch, увидев слово "синхронизация", сразу же задал вполне уместный вопрос: а почему бы не воспользоваться готовыми программами синхронизации, в которых нет недостатка? И многие другие его еще зададут, прочитав эту строчку. Нужно обязательно сначала сказать несколько слов о проблеме, которую мы взялись решать, и о том, что штатными средствами (какими именно?) ее решить не удается.
(архивы книг, статей, текстов с возможностью развития для работы в видео и аудио архивами).
Сразу возникает вопрос: почему программа, способная синхронизировать книги, не справится с фильмами? В чем именно будет состоять ее дальнейшее развитие?
Функциональность программы:
...
Детали реализации:
...
Рано пока. Функциональность программы и детали должны определяться решаемой задачей, а мы с ней еще не разобрались.
Кроссплатформенность: один из инструментов обеспечения кроссплатформенности — использование C++ + Qt.
Тоже рано. В этом месте уместнее упомянуть, что мы хотим получить программу, работающую, как уже упоминалось, в Windows, Linux и, возможно, Windows Mobile. Выбор языков, библиотек, инструментария и т.д. архитектор проекта сделает позднее, определившись с задачей. Может, это будет C++ + Qt? а может, и Java, или Mono, или... В общем, всему свое время.
Лучше все же следовать шаблону ReadySET, он неплохо продуман. Согласно ему, на первом этапе мы должны описать:
1. В чем состоит суть проблемы, которую мы взялись решать.
2. Какую цель мы ставим перед собой в ходе проекта.
3. Границы проекта.
Пока никаких технических подробностей. Они должны всплыть в ходе решения, а не тогда, когда еще не сформулирована задача.
Ну вот пока вся критика...