Проектирую на бумаге. Документирую в wiki, Javadoc-е и в package.html. Для коммуникации использую UML-подобные диаграммы (не в электронном виде, на whiteboard-е обычно).
Результат проектирования? Кому? Я обычно на основе проектирования сроки прикидываю и уже эти цифры показываю менеджеру.
А вообще я обычно не выделяю на чистое проектирование много времени, продумываю общие детали и глобальные решения, обычно не более недели (в основном зависит от ТЗ, иногда приходится долго с заказчиком общаться, пока не поймёшь, что ему реально нужно), а потом начинаем писать, продумывая конкретные решения на месте. Иногда приходится переделывать, но редко и быстро (т.к. юниттестов хватает). Что то вроде agile без фанатизма.
Сразу оговорюсь, проекты больше 100000 строк/4 разработчиков я не проектировал. И с индусоподобными кодерами, которым нужно объяснять каждый шаг, тоже не работал. Думаю, от этого сильно зависит необходимая степень бюрократизма.
Прежде всего - листочег и карадашег. Все остальное служит только в качестве способа красивой записи того что было придумано с помощью карандашика и листочка
> Прежде всего - листочег и карадашег. Все остальное служит только в качестве способа красивой записи того что было придумано с помощью карандашика и листочка
+1
А ещё ластег :) Карандашом можно гораздо больше мыслей в понятных для тебя образах на лист занести, чем кругленькими юзкейсами по монитору елозить :)