![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Software Project Manager среднего проекта – кто он? |
Евгений Игумнов Геокад плюс (Новосибирск) От маленьких проектов к средним проектам – было два программиста, а стало восемь. По моим наблюдениям, основная масса проектов, которые делают Российские оффшорные фирмы, обычно длятся не более двух месяцев с участием одного или двух программистов. Многие фирмы даже умышленно не берут заказы среднего размера, рассчитанные на полгода или год с участием 6 или 10 программистов. Некоторые фирмы решаются на такие проекты, но им приходится проводить реструктуризацию организации для того, что бы было возможно выполнять такие заказы. Общеизвестно, что понятие “проект” подразумевает под собой процесс, имеющий точные временные ограничения, т.е. дату начала и дату окончания. Ключевую роль в любом проекте играет так называемый Руководитель Проекта (Projec Ma ager). Естественно, что Руководитель Программного Проекта (Sof ware Projec Ma ager) имеет специфические особенности, связанные с отраслью создания программного обеспечения. В этой статье я постараюсь рассказать о функциях руководителя средних проектов, а также о стадиях, через которые должен пройти проект под его руководством. В статье я делаю ставку на объектно-ориентированные проекты и упускаю из виду такие вещи как тестирование и управление рисками. На мой взгляд, руководитель проекта должен обладать знанием технологий, на которых будет реализован проект. Представим, что во главе проекта стоит руководитель, который имеет только общее представление о работе своих подчиненных - программистов. В лучшем случае вы получите надзирателя, который всегда полагается на честность программистов, а в худшем - нахлебника, которому будут «пудрить мозги» «ушлые» программисты и проект будет, мягко говоря, отставать от графика, а, скорее всего, вообще не придет к стадии завершения. По какой причине я выставил такие требования к руководителю проекта, будет видно из последующего материала. Дело в том, что один квалифицированный программист с большим опытом работает в десять раз эффективнее начинающего, так утверждает Брукс или Йордан, но, как правило, фирмы не торопятся нанимать высокооплачиваемых программистов. В сложившейся ситуации намного эффективнее из такого специалиста сделать руководителя проекта и дать ему в подчинение не таких дорогостоящих программистов. Но ни в коем случае не нужно делать наоборот, так как забивать гвозди микроскопом это очень дорогое и не эффективное занятие. Другими словами, руководитель проекта должен иметь очень высокую квалификацию, а не мешать своими неразумными указаниями слишком умному исполнителю. Существует масса книг зарубежных авторов на тему Sof ware Projec Ma ageme , которые ориентированы на большие проекты и, естественно, управление такими проектами отличаются от управления средними проектами. В этой статье я постарался выделить конструктивные моменты деятельности и обязанностей руководителя именно среднего проекта. Анализ предметной области – концептуальная модель Прежде чем приступить к реализации какого либо проекта, руководитель проекта должен хорошо представлять предметную область поставленной перед ним задачи.
Настоятельно рекомендую начать с построения диаграмм вариантов использования системы (use case diagram). Пример такой диаграммы изображен на рис.1. Данная диаграмма была позаимствована мной из некоммерческого проекта “Агент Интеллектуальных Услуг”, проект в котором я принимал участие. Рис.1. На рис.1 изображены укрупненные прецеденты, которые можно будет в дальнейшем детализировать. Человечками обозначаются актеры, которые взаимодействуют с разрабатываемой системой и выполняют определенные роли. Овалы показывают виды этих взаимодействий или прецедентов использования системы. Актерами могут быть как пользователи, так и части самой системы, которые функционируют самостоятельно. Более подробную нотацию данного вида диаграммы можно найти в любой литературе по UML. После того как руководитель проекта осознал, кто и как будет пользоваться будущей системой, необходимо переходить к разработке концептуальной (понятийной) модели системы или, другими словами, составить словарь понятий предметной области, с которыми работает разрабатываемая система и установить связи между понятиями. Для этой цели я предлагаю построить диаграмму классов (class diagram). Пример такой диаграммы изображен на рис.2. Рис. 2 Данную диаграмму я позаимствовал из того же проекта. Понятия из предметной области необходимо объединить в классы и показать между ними связи. Связи должны иметь названия и кратности. Например, потребитель может послать ноль или много сообщений, но каждое сообщение должно иметь одного потребителя, это видно из связи между классами Co sumer и Message. Более подробную нотацию данного вида диаграммы также можно найти в литературе по UML. После построения этих диаграмм руководитель проекта получит, во-первых, функционально ориентированную картину системы, а во-вторых, объектно-ориентированную. Первое необходимо, для того чтобы понять, что будет происходить внутри и снаружи системы, а второе для того, что бы получить основу для будущей объектно-ориентированной системы. Настоятельно требуйте это от своих руководителей проектов. С одной стороны, это заставит их лучше разобраться с задачей, которую они решают, а с другой, вы получите контрольные точки в виде диаграммы использования, по которым сможете отслеживать состояние проекта, спрашивая с руководителя проекта, какие прецеденты использования уже реализованы. Разработка спецификации архитектуры системы – переход от концептуальной модели к программной модели После того как руководитель проекта получил функционально-ориентированную и объектно-ориентированную картину системы, ему необходимо «объединить» их воедино и получить спецификацию системы, которую можно выдавать программистам на реализацию в программный код. Необходимо взять часть прецедентов использования и построить для каждого из них диаграмму взаимодействия, например, диаграмму кооперации (collabora io diagram). Пример такой диаграммы изображен на рис.3. Рис. 3. Во время построения диаграмм взаимодействия будут выделены публичные (public) методы классов, а также появятся классы чисто синтетической природы, которые не имеют аналогов в реальном мире.
Этот этап, на мой взгляд, самый сложный и в нем можно допустить ошибки, которые будут тянуться на протяжении всего проекта. Вот по этой причине руководитель среднего программного проекта должен уметь не только программировать, но и иметь навыки работы программным архитектором (Sof ware Archi ec ). Существуют так называемые шаблоны проектирования (desig pa er s), которые следует применять на этом этапе. Встает проблема распределения обязанностей между объектами и разработке взаимодействия объектов. Для успешного конструирования следует систематизировать и тщательно проанализировать принципы разработки. Такой подход к пониманию и использованию этих принципов основывается на применении шаблонов распределения обязанностей GRASP. Другой набор шаблонов – шаблоны GoF, которые не строго ориентированы на распределение обязанностей, а ориентированы на повторное использование дизайна и являются чисто синтетическими конструкциями, не имеющими никакого отношения к объектам реального мира. Всего выделяются три группы шаблонов. Порождающие шаблоны проектирования абстрагируют процесс создания объектов. В структурных шаблонах рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры. Шаблоны поведения связаны с алгоритмами и распределением обязанностей между объектами. Результатом дизайна будет несколько диаграмм классов. Пример такой диаграммы показан на рис. 4. Рис.4. После получения хорошего дизайна системы следует разбить систему на пакеты, которые будут объединять классы, имеющие общую функциональную направленность и работающие вместе над осуществлением какой-то объединяющей их задачи. Возможно, что разбиение на пакеты руководитель проекта сделает во время этого этапа, а не в его конце, но если он об этом задумался как раз в последний момент, то разбиение системы на пакеты должно отразиться на дизайне классов. Стоит также построить диаграмму пакетов. Пример такой диаграммы изображен на рис.5. Рис.5. На этой диаграмме изображены зависимости между пакетами. Зависимость показывает использование классов из одного пакета классами другого. Другими словами, пока классы второго пакета не будут реализованы, классы первого пакета не смогут функционировать. Хотя, конечно, эту проблему можно обойти, используя заглушки. Исследуя полученную диаграмму, можно увидеть какие пакеты следует писать первыми, а какие пакеты придется вообще писать параллельно. Например, пакет server.clie .model.fac не зависит от других пакетов, но от него зависят многие. Значит, его следует реализовать в первую очередь. Вот собственно, какова практическая ценность этой диаграммы. Сетевое планирование – Кто? Когда? Сколько? После того, как руководитель проекта получил спецификацию системы, как-то: диаграммы пакетов, диаграммы классов этих пакетов и диаграммы взаимодействия, - то следует приступать к сетевому планированию задач по реализации кода между программистами, которые находятся в его подчинении. Для этой цели, на мой взгляд, следует применять диаграмму Ганта. Пример такой диаграммы изображен на рис. 6. Рис.6 Сначала руководитель проекта должен создать список ресурсов, т.е
We will revisit this theme throughout the rest of the book: How do we identify the area of applicability of a methodology, and how do we tailor a methodology to a project in time to benefit the project? Methodologically Successful Projects You may be wondering about these project interviews I keep referring to. My work is based on looking for "methodologically successful" projects. These have three characteristics: · The project was delivered. I don't ask if it was completed on time and on budget, just that the software went out the door and was used. · The leadership remained intact. They didn't get fired for what they were doing. · The people on the project would work the same way again. The first criterion is obvious. I set the bar low for this criterion, because there are so many strange forces that affect how people refer to the "successfulness" of a project. If the software is released and gets used, then the methodology was at least that good. The second criterion was added after I was called in to interview the people involved with a project that was advertised as being "successful." I found, after I got there, that the project manager had been fired a year into the project because no code had been developed up to that time, despite the mountains of paperwork the team had produced
1. А все-таки, "Свидетели Иеговы" - кто они на самом деле?
3. Валютные риски: кто они и как с ними бороться?
5. Мормоны - кто они и откуда они?
9. Microsoft Project в управлении проектами
10. Несовершеннолетние преступники: кто они?
12. Кто были три священных царя? Откуда они пришли? Что за звезда вела их в Вифлеем?
13. Проект разработки стратегического плана предприятия с помощью Microsoft Project
15. Использование учебного проекта на уроках английского языка в средней школе
16. Разработка основных разделов проекта производства работ
17. Проект "Глобалстар". Геодезические спутники /ERS-1,ERS-2/
18. Кто будет защищать тебя, Родина
19. Экспертиза проекта генплана промышленного предприятия
20. Интегрированный проект учебного процесса
21. Технический проект аэрофотосъемки
26. Кримінальний кодекс України (Проект криминального кодекса Украины, варианты 1998-2001гг.)
27. Two approches to the scientific management
29. Quien Soy Yo? (Кто это - я?)
32. Шпаргалки для контрольной по немецкому (средняя ступень)
33. Контроль в обучении поисковому чтению на среднем этапе обучения иностранного языка в школе
34. Імпресіонізм, модернизм, символизм, експрессионизм...
36. Рыцарство как эстетический и нравственный идеал средних веков
37. Кто же Чацкий: победитель или побежденный
41. История Византии "От рождения до средних веков"
42. Античность - средние века - новое время. Причины и механизмы смены эпохи
43. Реформаторские проекты Александра I и М.М.Сперанского
44. Военная экспансия кочевых народов Азии в средние века
45. Культурно-бытовой облик учащихся начальной и средней школы XIX начала ХХ века
46. Российская цивилизация в средние века
47. Проект структурированной кабельной системы для здания газопромыслового управления в поселке Пангоды
48. Интегрированный проект учебного процесса
49. Методичний посібник до курсового проекту з дисципліни "Цифрові обчислювальні машини"
50. Создание проекта с использованием программы GeniDAQ и контроллеров серии АДАМ-4000
52. Проблема выбора средней величины
53. Гистология: средний отдел ЖКТ
57. Экологические проблемы государств Средней Азии и Казахстана
58. Подземные топливные баки: насколько они опасны ?
59. Место интенсивной методики в системе обучения иностранному языку в средней школе ([Курсовая])
60. Формирование личности в среднем школьном возрасте
61. Региональная культура и история на уроках немецкого языка в средней школе
62. История развития системы среднего проффесионального образования на примере техникума
63. Ролевые игры на уроках английского языка на основной ступени обучения в средней школе
64. Контроль в обучении поисковому чтению на среднем этапе обучения иностранного языка в школе
65. Принятие России в совет Европы: кто "за" и "против" ?
66. Кто правит и что правит. Сила власти или власть силы
67. Проект трехкорпусной выпарной установки для концентрирования Gн=4,2 кг/с цельного молока
76. Проект линии по производству кеты чанового охлажденного посола, производительность 3 тонны в смену
77. Проект механосборочного участка изготовления крана вспомогательного тормоза локомотива 172
78. Проект модернизации электропривода скребкового конвейера ОАО «Нойзидлер Сыктывкар»
79. Проект зон ТО-2 и ТР с разработкой слесарно-механического отделения
80. Проект производственного комплекса базы МСУ
81. Конфликтологические аспекты социальных взглядов мыслителей в средние века и эпоху Возрождения
82. Семья: как она складывается
83. Проект консультационной службы
85. Проект новой участковой станции
89. Физическое воспитание школьников, средних и старших классов
90. Тайные общества средних веков
92. Порядок разработки схемы финансирования инвестиционного проекта
95. Проект организации бухгалтерского учета в условиях внутрихозяйственного коммерческого расчета
96. Управление проектом: развертывание систем персонального радиовызова
97. Инвестиционный анализ проекта (хлебо-булочной)
98. Организация управления проектами
99. Пути совершенствования управления персоналом на малом и среднем предприятии