案例机构设置及岗位职责第二章案例机构设置及岗位职责软件企业组织结构研发团队与其他部门之间的关系研发团队岗位设置各岗位职责企业文化对研发团队的影响本书模拟的企业组织结构图组织结构图说明对于做集成类的软件公司,采供部一般都会设置,但可能会与财务部或行政部合起来;一些公司会把测试部从研发部单独出来,也有可能与质量管理部同设为一个部门;中小型公司,人力资源部一般是与行政部合设;产品经理角色,有些公司放置在市场部,有些公司放置在研发部;部分公司的质量管理部为直接对总经理负责,而不是由技术副总分管;对于ISO9001的企业,还应当设置管理者代表一职。组织结构图说明组织级配置管理,一般都放置在研发部;股份制公司还设为监事会;规模梢大一些的企业,还会设置发展规划部,以负责公司新方向的发展规划相关业务拓展;根据产品线的不同,市场部或营销部设置以产品线来命名的事业部来负责相关产品的推广、营销,比如证券事业部、呼叫中心事业部等;工程部或项目部有时也会根据产品线来设置。人力资源部审计部企业发展部营销管理部神州数码通用产品本部物流中心区域平台:华东平台、华南平台普通平台:武汉、西安、沈阳、成都、香港简易平台:南京、深圳、济南地方办事处:杭州、福建、昆明、青岛等软件集成本部公司组织结构示例(1)系统集成事业一部技术服务中心系统集成事业二部网络集成事业部服务与培训事业部软件产品部技术工程部电信事业部政府事业部金融事业部业务管理部业务发展部系统集成本部业务管理部业务发展部项目管理部业务管理部业务发展部电子商务部客户服务部产品部销售部业务管理部业务发展部企业解决方案本部SUN事业部IBM事业部增值软件事业部通用软件事业部存储事业部HP事业部新产品事业部网络业务本部业务管理部产品部市场部华东大区华南大区北区西区移动通讯本部业务管理部业务发展部个人通讯事业部新业务事业部客户服务部市场部产品管理部分销业务部行业销售部研发一部研发二部业务管理部网络公司华东区总部企管部研发运控中心市场发展部北方区总部华南区总部SAP事业部DCMSIT集成服务事业部软件工程事业部客服中心财务部集团办公司组织结构示例(2)第二章案例机构设置及岗位职责软件企业组织结构研发团队与其他部门之间的关系研发团队岗位设置各岗位职责企业文化对研发团队的影响研发与市场部门间的关系研发的需求大部分来自于市场,市场部门能接触到第一手的客户需求问题:销售人员不理解技术,研发人员不理解客户,怎么解决?研发的产品不能很好的解释给用户或给用户提供合适的解决方案,怎么办?研发与工程部门间的关系工程实施的两种类型产品安装型——现场不能修改程序客户定制型——在研发部门提供的核心功能基础之上,在现场根据客户需求调整程序产品安装型,培训及用户需求收集反馈客户定制型用户需求收集反馈,现场调整程序纳入新版产品培训及技术传递研发与质量管理部间的关系共同提高研发产品的质量质量管理部关注的是产品研发过程及结果是否符合公司目标及规范,并根据研发部门反馈,参与或主导对软件开发过程进行改进研发部类似于运动员,质量管理部类似于裁判员,EPG类似于立法部门。负责公司研发类项目度量数据的收集与分析研发与客户服务部间的关系客户服务部负责用户需求收集及问题,并及时反馈给研发部门研发部门分析各类用户需求及问题,根据公司产品规划,及时更新版本。第二章案例机构设置及岗位职责软件企业组织结构研发团队与其他部门之间的关系研发团队岗位设置各岗位职责企业文化对研发团队的影响软件生命周期图新产品需求开发软件需求需求规格说明书项目策划估算项目开发计划系统设计概要设计详细设计系统测试系统测试验收测试/用户试用实现与测试单元代码单元测试系统测试服务与维护退役升级建议和限期维护通知产品升级项目总结项目分析发布基线生成技术交接产品发布/提交编码方案测试需求发放合同/产品项目立项客户验收验收测试/用户试用阶段工作内容和常见工作产品列表阶段工作内容工作产品立项1.可行性研究/合同评审、签订2.立项评审1.立项可行性分析报告3.立项报告5.立项通知书6.项目任务书2.用户需求说明书(初稿)4.需求和项目计划阶段工作计划需求1.编制并完善《用户需求说明书》2.软件需求规格说明书编写3.工作产品评审4.需求跟踪及管理1.用户需求说明书3.用户需求跟踪矩阵2.软件需求规格说明书4.需求变更申请表计划1.项目范围分析、工作分解3.编制进度表5.编写配置管理计划7.计划评审、批准2.估计规模、工作量等4.评估项目风险6.编写《项目开发计划》1.项目开发计划含:质量保证计划、CM计划、风险管理计划和培训计划2.评审记录设计1.概要设计3.数据库设计2.模块计工作产品评审1.《概要设计说明书》3.《数据库设计说明书》2.《模块设计》4.评审记录实现与测试1.编码2.编制各类用户手册2.单元测试1.单元代码3.单元缺陷管理列表2.单元测试用例列表4.单元测试报告测试集成测试1.《集成测试计划》编制、评审3.集成测试2.《集成测试用例》编制、评审4.《集成测试报告》编制、确认1.集成测试计划3.缺陷管理列表5.评审记录2.《集成测试用例》4.《集成测试报告》系统测试1.《系统测试计划》编制、评审3.系统测试2.《系统测试用例》编制、评审4.《系统测试报告》编制和确认1.系统测试计划3.测试记录、缺陷记录2.《系统测试用例》4.《系统测试报告》项目总结1.代码复用总结3.《项目总结报告》编制和评审5.项目总结会议2.各类手册评审和批准4.产品/项目归档6.项目结项/产品发布1.产品及各类手册3.产品基线建立和审计2.项目总结报告4.评审记录研发岗位设置总经理总工程师QA经理测试经理EPG组长研发部经理CM经理培训组EPGCCBQA工程师测试工程师项目经理2项目经理n项目经理1软件工程师软件工程师软件工程师CM工程师研发全貌图——项目管理决策准则执行度量需求产品需求承诺开发工具和组件需求、供应商信息、验收和传递采购计划纠正动作状态和结果评审依据总结监控依据变更计划前提评审依据通过或变更决策评估计划风险识别、控制和减缓结项依据纠正动作跟踪结果结项依据度量数据项目立项管理项目计划项目监控与控制风险管理供应商协议管理项目结项管理管理评审工程和支撑过程供应商研发全貌图——工程过程客户需求客户需求SDRDMITSTCASMRDMTR需求设计方案集成的产品产品交付后的产品需求文档设计方案书需求计划文档代码文档用例产品和支持文档产品和支持文档研发全貌图——支撑过程评估方案选择方案配置项、基线报告变更请求过程活动、工作产品审计结果度量数据度量和分析结果QAMACM所有过程DAR研发全貌图——组织过程组织商业目标组织商业目标组织过程需求和目标为项目组、支撑人员提供过程标准资产方面的培训培训需求过程改进建议标准过程及其他资产OPMTM项目管理、工程过程和支撑过程高级经理第二章案例机构设置及岗位职责软件企业组织结构研发团队与其他部门之间的关系研发团队岗位设置各岗位职责企业文化对研发团队的影响研发团队中岗位职责为了适合CMMI软件过程改进的需要,根据上一节的研发团队岗位设置,我们在本书中分为五大类角色过程管理角色——公司级的,对整个公司的软件开发过程负责的相关角色项目管理角色——项目级的,对项目主管或负责的角色工程过程角色——项目级的,在具体某个项目中负责各个阶段相关工作的角色支撑过程角色——项目级或产品级的,在具体某个项目或产品中负责CMMI支撑过程域相关工作的角色临时角色——根据项目阶段的需要,临时设立的角色具体人员建议组成及职责如下:过程管理角色过程管理角色工程过程组(EPG)由相关业务部门的部门经理、质量保证经理、配置管理经理、技术专家组成,有一位组长。EPG职责:1.制定适合于本机构的过程规范;2.在机构范围内推广该规范(如培训、考核),评估机构过程能力等。EGP组长职责:1.制定过程改进计划并跟踪执行;2.向总经理提交EPG过程改进活动的报告(如进展报告、工作周报等);3.向总经理汇报过程改经工作的问题,争取总经理的协助。质量保证小组(QAG)由质量保证经理(QA经理)和质量保证工程师组成。质量保证经理职责:1.质量保证经理为每个项目指定一名质量保证工程师;对质量保证工程师提交的项目组内无法解决的不符合问题进行协调;2.监督规范的实施,确保所有项目以及相关部门准照规范开展工作;3.分析机构内共性的质量问题,给出质量改进建议和措施,协组EPG完善规范。4.对过程改进项目执行质量保证相关活动。配置管理小组(CMG)由配置管理经理(CM经理)和配置管理员组成。配置管理经理职责:1.维护机构级配置管理库及过程资产;为每个项目指定一名配置管理员;2.依据文档化的规程,协助配置管理员制订CM计划,并审核CM计划;审计各阶段的配置管理活动报告;3.根据项目需要选择合理的配置管理工具,报EPG批准纳入过程资产库,定期组织培训;4.根据配置管理员提交的配置管理活动报告,定期进行度量、分析,形成分析结果,给出改进措施,实现配置管理过程持续改进;5.组织协调配置管理员与软件工程师或技术服务部门之间的工作交流与问题处理;项目管理角色项目管理角色总工程师1.是机构内所有项目的主管,对立项管理和结项管理有最终决策权;2.对QA经理提交的无法解决的不符合问题进行协调。3.审查所有的对机构外部的个人和组所作的软件项目承诺;4.组织协调跨部门或与客户的工作交流与问题处理;研发部经理1.监督项目经理的工作,审批项目经理的各种申请;2.参加评审会并审阅评审报告;3.负责监督软件过程规范的实施;4.参与软件、硬件、技术服务等软件相关阶段的工作产品、使用技术、工具的评审和审批,并给予必要的支持;项目经理(PM)1.向研发部经理或总工程师汇报工作;2.对项目进行规划、对进度实施监控、进行风险管理和需求管理;3.监督项目成员的工作,审批项目成员的各种申请及子计划;4.制定编码与单元测试、系统集成的阶段性计划5.参加评审会并审阅评审报告;6.配合质量保证工程师不合格问题的解决及跟踪,支持其工作;7.负责项目的度量工作。工程过程角色工程过程角色项目组成员1.项目组内除项目经理外的其他所有人员,包括以下人员:需求开发人员、系统设计人员、开发人员、测试人员。需求开发人员1.调查、分析并定义需求,撰写相应的需求文档,尽最大努力使需求文档能够正确无误地反映用户的真实意愿。系统设计人员1.根据需求文档设计软件系统的体系结构、用户界面、数据库、模块等,并撰写相应的设计文档。开发工程师1.根据系统设计文档,编写软件系统的代码;2.随时测试和检查自己的代码,及时消除代码中的缺陷。测试经理1.依据文档化的规程,为每一个软件项目制定测试计划,并按得到批准的计划开展活动;2.组织编写测试用例;3.根据项目需要选择合理的测试工具,报EPG批准纳入机构资产库,并定期组织培训;测试工程师1.从事集成测试、系统测试,负责参与项目开发各个过程工作产品的可测试性的审查和验证,及时发现、记录缺陷并验证缺陷等关闭活动;2.为项目编写集成测试及系统测试用例,并执行软件测试过程;3.项目测试结束后,编写测试报告提交测试经理;支撑过程角色支撑过程角色配置管理员(CM工程师)1.依据文档化的规程,为每一个软件项目制定配置管理计划,从机构资产库中选择合理的配置工具,并按得到批准的计划开展活动;2.根据软件项目CM计划,建立配置库系统,识别将置于配置管理之下的所有软件工作产品;3.依据文档化的规程,对基线更改进行控制,定期形成更改请求摘要与状态报告,提交项目经理;4.依据文档化的规程,由软件基线库生成产品,并控制其发布;5.依据文档化的规程,记录配置项/单元的状态;6.编写标准的报告,记录CM活动和产品基线的内容,定期整理配置数据,形成CM活动报告提交项目经理及配置管理经理;培训组1.根据机构发展战略,总结出将来可能要有培训需求;2.定期或不定期地从项目组获得培训需求,从以上两种方式收集培