3 . 软件开发的组织机构
无论是项目型公司还是产品型公司,从事软件开发的组织或公司应该有一定的软件开发组织结构。一个合理的软件开发组织结构是确保软件开发质量的基本保证,各个组织各负其责,可以确保软件开发按拟订的质量控制规则与软件开发计划进行,有利于软件公司软件质量与成本的控制。
3.1 软件开发组织机构设置
一般而言,对于产品型软件公司,其公司内部均会有一个类似与产品管理小组这样的一个组织,一个专门负责产品发展的产品经理部门。而项目型公司则相对简单一些,主要是针对项目进行定制开发,一般对项目的发展方向不做控制。但从项目开发演变为可推广产品的另当别论。一般来讲,下图4是一个典型的软件公司软件开发的组织机构设置。
3.2 组织机构的职责分工
在上述的组织机构中,各职能组织有各自明确的责权范围,完成各自的本职工作,各组织相互协调完成相应的软件开发与维护工作。
公司产品管理组:对于产品型软件公司而言,软件产品是其生存与发展的基础,公司对新产品立项、现有产品的发展方向及有关产品发展的重大决定均需由公司产品管理组来决定。
公司产品管理组一般由公司的执行总裁、技术总监、市场总监、产品经理、研发经理及其他必要人员。
产品管理部门 :产品管理部门是界于研发部与市场部之间的一个桥梁部门。产品管理部门的主要职责是负责产品发展策略的制定与执行,这里的执行包括软件开发前期的市场及需求调研,完成可行性分析报告,制定产品规格。参与软件开发项目组,并完成相关工作。
* 软件开发前期:用户需求分析、功能描述、运行平台与环境、市场定位、销量预测与售价;
* 软件开发后期:产品宣传资料、产品培训、促销与支持t;
研 发 部 门:研发部是软件开发的主体,主要任务是完成软件或的项目的开发工作。其工作内容通过各职能组实现。主要包括:
* 功能规范:功能规范列表及用户界面,确保写出用户手册;
* 开发活动:包括设计、编码、模块集成、Alpha测试与文档;
* 支持工作:软件配置管理与问题报告数据库;
* 项目计划:定义项目里程碑;
* 软件定版:IRL,
Architecture & QA:是软件开发的质量控制机构,主要职责是负责软件开发过程的质量控制。在软件开发的各个阶段,根据软件开发设计规范对阶段设计结果进行质量控制。及时发现问题、解决问题,确保进入下一阶段的设计符合设计规范要求。实现软件开发全程监控。
Architecture & QA为非常设机构,主要由研发经理、产品经理、系统分析远、测试经理等人员组成。根据项目进展需要,由研发经理召集进行项目阶段评审。
软 件开 发 组: 主要由各种角色的开发人员构成,完成开发任务。
CMO:(Configuration Management Officer)软件配置管理,对于一个具有一定规模的软件公司都会有一个软件配置管理机构,对于小型公司一般由项目经理带管,CMO的主要职责是进行软件开发过程中的软件配置管理,以及软件定版后的维护管理。在软件开发过程中,由于多个开发人员协同工作,需要对其工作协同管理,确保协同工作的顺利进行。同时,由专人进行配置管理,使得大部分开发人员不会得到全部原代码,也有利于软件公司的安全保密工作。在软件定版后,由于软件的Bugs,功能的完善及各种原因导致的对软件的修改,版本的控制显得极为重要,软件配置管理可以确保得到不同时间的软件版本。
软 件 测 试 组 :软件是软件工程的重要组成部分,软件测试组承担的工作主要是α测试。测试模块与集成测试由软件开发人员完成。对于项目软件开发,用户的计算机技术人员参加到软件测试与支持工作组,使用户参与整个软件的测试工作中。确保交付的应用系统是用户可信赖的系统。
在以上的软件开发组织机构中,不论公司规模的大小,以上的各个职能应该是健全的。明确的责任分工有利于软件开发的顺利进行于质量控制,同时,也必将有利于公司的成本控制,降低软件开发风险。
3.3 软件开发项目组的角色
一般来讲,一个软件开发项目组是由多个不同角色的人员构成,每种角色在软件开发中起不同的作用,各个不同角色的人员协同工作,完成软件开发工作。
典型的软件开发项目组由下列角色构成,如图5所示
在软件开发项目组中一般有六种角色,他们是:
①.产品管理
②.程序开发
③.程序管理
④.测试及质量保证
⑤.用户培训
⑥.后勤支援
在大型软件开发项目中,可以将每个角色赋予不同的个人。对小型项目,一个人可以肩负多个不同的角色。每种角色的人员在项目中起着同等重要的作用。每种角色都有其特定的任务及技能要求。
产品管理:产品经理负责建立及更新项目的商业模型,在确定及设置项目目标方面起关键作用。产品经理应确保项目成员清楚理解项目商业目的,并根据商业需求的优先级确定功能规范。同时,产品经理负责高层的项目沟通,如:商业项目的成本核算、合同洽谈,及向相关人员通报项目进展等。
程序管理:程序经理负责确定软件特色及功能规范,根据软件开发标准协调日常开发工作确保及时交付开发任务。协助产品经理完成项目需求文档,并根据需求文档起草软件功能规范。同时负责与系统分析、规范及框架结构有关的各种活动。管理与协调与外部标准与系统的互操作性,控制项目进度。程序经理是项目组成员间沟通与协调的核心。
程序开发:开发队伍负责交付符合功能规范的软件系统。开发队伍应积极参与功能规范的制定,在建立项目原型时开发人员与程序经理可以同步进行并提供技术可行性。在功能规范确立后,开发人员必须与程序经理如何解决重大疑难问题达成一致。
测试与质量保证:测试与质量保证是保证系统符合功能规范的保证。为保证“零误码”测试/QA人员应积极参与开发过程,确保开发出交付符合功能规范的软件系统。测试/QA人员负责准备测试计划、测试用例、自动测试程序、执行测试工作、管理并跟踪Bug。测试工作与开发工作是独立并行的。
用户培训:培训人员负责设计编写离线及在线培训文档,包括演示材料。用户培训人员应参与用户界面和系统的设计与构造,并参与安装程序与安装过程的设计。参与系统的可用性测试及设计改进,与程序管理与开发有密切的关系,并确保系统的变化及时反映到文档中去。
后勤支援:后勤支援包括确保项目顺利进行的各方面工作。
对于一个项目组,建立一个良好的团队氛围是非常重要的,每个角色在项目中都是不可缺少的,项目的成功是团队成员共同努力的结果。鼓励成员的积极进取、高效、参与的团队精神,提高成员的责任感,避免造成团队或项目的成功依赖于少数个人的贡献。