Ух сколько намолотили за 1 день !
Богатого практического опыта управления проектами у меня нет, но я обучался и стажировался в серьезной компании (TelesensKSCL Ukraine) и интересовался опытом управления проектами в других компаниях.
Project Manager не должен заниматься проектированием архитектуры и дизайна системы, это прямая обязанность системного аналитика. PM планирует объем работ, колиество ресурсов, стоимость, разрабатывает план-график и управляет процессом разработки. UML я изучал в рамках курса PM и самостоятельно, будучи ранее девелопером.
UML высоко ценю как средство универсальное средство проектирования объектно-ориентированных систем. Сколько уже было создано различных методологий, что можно было умом поехать пытаясь разобраться в каждой из них. UML стал стандартом и снял проблему непонимания.
UML в первую очередь полезен для реализации больших проектов, где в разработке участвуют много людей и полностью структуру системы знают только ведущие специалисты. Остальным разработчикам знать ее не обязательно, они обязаны знать только тот кусок программы, который они непосредственно разрабатывают и точки взаимодействия с другими частями системы. Объектная модель системы (на UML) в таком случае оказывается весьма кстати.
Чем полезен UML при разработке мини проектов :
лучше изложить модель системы на бумаге (на экране) чем постоянно держать его в голове - это экономит время при кодировании (написании кода программы), позволяет видеть всю картину вцелом, связи между модулями программы и т.д.
К тому же удобнее рисовать структуру классов в виде схемы, а потом ее сгенерить, чем долбить руками, мотаясь по файлам и тексту программы выискивая названия связанных классов, названия методов и полей.
Насчет XP и UML : В книге "Практическое руководство по ХР" пишут что можно юзать UML-диаграмки если это упростит или ускорит работу, не нужно рисовать ненужные диаграммы. А если нужная диаграмма стала уже не нужна, то ее нужно выбросить
Вообще ХР вещь эффективная, только есть одна проблемка:
организация коллектива. ХР-команда должна быть очень квалифицирована и эффективно взаимодействовать между собой. На ХР переходят в течение года а то и больше. Если в команде есть неквалифицированные кадры или ранее не был налажен механизм коллективного техпроцесса, то попытки применения ХР не дадут ожидаемого результата.
В RUP все несколько по другому - управлением проекта и разработкой архитектуры и дизайна занимаются профессионалы, а кодирование и тестирование можно поручить менее квалифицированным кадрам. Получается, что каждый квалифированно занимается своим делом и не распыляется на другие дела.
Из опыта работы одной компании со слов девелопера : "Аналитики рисуют нам диаграммы, только мы все равно делаем все по своему. Получается, что аналитики у нас только бумагу марают."
У них явно прослеживается конфликт в том, что аналитики разрабатывют дизайн системы, не владея профессионально навыками программирования на данном языке. Поэтому, аналитики или должны научиться программить или дизайн системы должны разрабатывать сами девелоперы. Аналитики при этом должны ограничиться только разработкой архитектуры: UseCase, описанием системы и общей структурой.
Че-то меня понесло....
Буду закругляться...