(装载)项目管理的一点想法

关键字: 项目管理

1. 根据需求,将项目尽可能拆分

可能出现的情况是:将一个项目进行拆分,分成2到3个子项目进行单独开发。当前设想的主要可能性:主项目、统计和调度项目、核心框架项目等。

核心框架项目成熟后可以以Jar包方式发布。该项目主要包含对传统框架的一些封装和扩展。

统计和调度项目主要为主项目提供统计支持和后台调度运行支持,独立运行在一台机器上。理想的状况:将整个调度运行在一个大的Framework中,这个Framework能够查看系统的统计、调度的日志;同时可以对其中的统计模块、调度模块的进行状态进行监控;也可以以系统的方式暂定或者重启某个统计模块或者调度模块。针对具体项目的主要工作,是在这个Framework中,进行具体业务逻辑的编写。对于统计,可以指定统计的接口、统计的实施时间和内容等等。对于调度,可以指定调度的接口以及调度时间和频度。

主项目承担主要业务逻辑,可能根据项目规模的不同需要支持集群。主项目需要依赖于其他项目而存在。也有可能需要根据实际情况,对主项目进行进一步的拆分。

2. 人员管理

项目人员主要包含3部分:核心人员、外包人员和实习生。

核心人员主要承担项目需求转化为技术内容的工作。这些工作主要包含项目需求获取、项目设计、项目核心代码编写、项目代码Review和项目代码Merge的工作。
外包人员主要根据被分配的模块不同,进行代码的编写工作。在他们编写代码时,需要严格按照核心Framework的规定进行编码。涉及到复杂业务逻辑的地方,应配合核心人员对业务逻辑接口和业务逻辑流程进行代码化整理。外包人员的组成将主要是具有若干年工作经验的民工,以模块的工作量进行结算。
实习生的主要工作是编写简单代码、一切辅助工作和测试。他们需要承担简单的代码编写工作以及测试工作。同时,项目中的数据准备、文件管理、数据库管理等杂乱工作,也需要由实习生完成。实习生的结算方式为月结。

3.  角色分配

根据项目人员的组成结构和项目需要,可以划分以下系统角色:
1) BA
目前情况下,BA应该就是整个项目的PM,需要完成所有的商务上的所有事项,同时需要进行需求整理,项目的总体管理等。BA需要与Architect和Assist共同工作,从而完成工作任务划分和任务分配以及在需求基础上的Prototype的搭建工作。
2) Architect
这个角色主要在技术上保证项目的顺利进行,其职责将包括与BA一起进行项目设计、项目范围界定、项目模块和任务的划分、核心代码的编写等。Architect的另外一个重要的工作是把握整个项目的进程和代码管理,包括Code Review,Code Merge等工作。此外,Architect需要负责项目的开发环境、测试环境、文档环境搭建等。
3) Developer
这个角色可能主要由外包人员和实习生构成,是所有角色中的核心力量。Developer的重要原则是在既定的Framework下,高质量的完成Coding任务。
4) SA
SA这个角色不一定在所有的项目中都包含。其主要职责是在操作系统、系统构架、数据库等底层层面提供优化策略和技术支持。这部分工作,当前情况下,如果需要,可以进行外包。
5) Assist
Assist角色主要由实习生完成,这个角色可以承包项目中所有的杂务,同时也需要完成Coding任务。

4. 项目管理工具

项目管理的工具很多,可以选择一个功能相对较全,而且相对比较集中的工具:http://www.redmine.org/projects/show/redmine
上述工具可以管理的内容包含:项目新闻(进度)发布、Bug Tracking、文档管理、Wiki和论坛等。我们在项目中所涉及到的一些功能可能只需要其中的进度发布、Bug Tracking、文档管理等。

项目中的版本管理工具可以使用SVN。

5. 版本管理方法

由于当前项目的状况比较特殊,项目的版本管理变得比较重要。在吸取了一些典型的外包项目管理的经验之后,我们可以使用分Project、分Branch的方式对项目进行版本管理。

分项目是指,项目拆分后,不同的项目将使用不同的Reposity。

分Branch是指,针对某个项目,对每个Developer小组,创建多个Branch进行独立开发,频繁Merge的方式进行管理。基本原则:在Trunk上创建一个主Branch,由Architect负责Trunk和这个主Branch进行管理,包括代码的Merge和Merge前的Code Review等。然后以Developer小组为单位,创建基于模块的Branch,所有的Developer,在各自的Branch上进行开发。每个基于模块的Branch,以3天为单位,由Architect负责将代码Merge到主Branch上,同时做Code Review。在Trunk上,以周为单位,保持可运行版本
(装自: http://downpour.iteye.com/blog/186429) 1. 根据需求,将项目尽可能拆分

可能出现的情况是:将一个项目进行拆分,分成2到3个子项目进行单独开发。当前设想的主要可能性:主项目、统计和调度项目、核心框架项目等。

核心框架项目成熟后可以以Jar包方式发布。该项目主要包含对传统框架的一些封装和扩展。

统计和调度项目主要为主项目提供统计支持和后台调度运行支持,独立运行在一台机器上。理想的状况:将整个调度运行在一个大的Framework中,这个Framework能够查看系统的统计、调度的日志;同时可以对其中的统计模块、调度模块的进行状态进行监控;也可以以系统的方式暂定或者重启某个统计模块或者调度模块。针对具体项目的主要工作,是在这个Framework中,进行具体业务逻辑的编写。对于统计,可以指定统计的接口、统计的实施时间和内容等等。对于调度,可以指定调度的接口以及调度时间和频度。

主项目承担主要业务逻辑,可能根据项目规模的不同需要支持集群。主项目需要依赖于其他项目而存在。也有可能需要根据实际情况,对主项目进行进一步的拆分。

2. 人员管理

项目人员主要包含3部分:核心人员、外包人员和实习生。

核心人员主要承担项目需求转化为技术内容的工作。这些工作主要包含项目需求获取、项目设计、项目核心代码编写、项目代码Review和项目代码Merge的工作。
外包人员主要根据被分配的模块不同,进行代码的编写工作。在他们编写代码时,需要严格按照核心Framework的规定进行编码。涉及到复杂业务逻辑的地方,应配合核心人员对业务逻辑接口和业务逻辑流程进行代码化整理。外包人员的组成将主要是具有若干年工作经验的民工,以模块的工作量进行结算。
实习生的主要工作是编写简单代码、一切辅助工作和测试。他们需要承担简单的代码编写工作以及测试工作。同时,项目中的数据准备、文件管理、数据库管理等杂乱工作,也需要由实习生完成。实习生的结算方式为月结。

3.  角色分配

根据项目人员的组成结构和项目需要,可以划分以下系统角色:
1) BA
目前情况下,BA应该就是整个项目的PM,需要完成所有的商务上的所有事项,同时需要进行需求整理,项目的总体管理等。BA需要与Architect和Assist共同工作,从而完成工作任务划分和任务分配以及在需求基础上的Prototype的搭建工作。
2) Architect
这个角色主要在技术上保证项目的顺利进行,其职责将包括与BA一起进行项目设计、项目范围界定、项目模块和任务的划分、核心代码的编写等。Architect的另外一个重要的工作是把握整个项目的进程和代码管理,包括Code Review,Code Merge等工作。此外,Architect需要负责项目的开发环境、测试环境、文档环境搭建等。
3) Developer
这个角色可能主要由外包人员和实习生构成,是所有角色中的核心力量。Developer的重要原则是在既定的Framework下,高质量的完成Coding任务。
4) SA
SA这个角色不一定在所有的项目中都包含。其主要职责是在操作系统、系统构架、数据库等底层层面提供优化策略和技术支持。这部分工作,当前情况下,如果需要,可以进行外包。
5) Assist
Assist角色主要由实习生完成,这个角色可以承包项目中所有的杂务,同时也需要完成Coding任务。

4. 项目管理工具

项目管理的工具很多,可以选择一个功能相对较全,而且相对比较集中的工具:http://www.redmine.org/projects/show/redmine
上述工具可以管理的内容包含:项目新闻(进度)发布、Bug Tracking、文档管理、Wiki和论坛等。我们在项目中所涉及到的一些功能可能只需要其中的进度发布、Bug Tracking、文档管理等。

项目中的版本管理工具可以使用SVN。

5. 版本管理方法

由于当前项目的状况比较特殊,项目的版本管理变得比较重要。在吸取了一些典型的外包项目管理的经验之后,我们可以使用分Project、分Branch的方式对项目进行版本管理。

分项目是指,项目拆分后,不同的项目将使用不同的Reposity。

分Branch是指,针对某个项目,对每个Developer小组,创建多个Branch进行独立开发,频繁Merge的方式进行管理。基本原则:在Trunk上创建一个主Branch,由Architect负责Trunk和这个主Branch进行管理,包括代码的Merge和Merge前的Code Review等。然后以Developer小组为单位,创建基于模块的Branch,所有的Developer,在各自的Branch上进行开发。每个基于模块的Branch,以3天为单位,由Architect负责将代码Merge到主Branch上,同时做Code Review。在Trunk上,以周为单位,保持可运行版本

猜你喜欢

转载自lzj38555016.iteye.com/blog/629309