什么是release management?
简单的说就是管理软件的发布和更新。这是一个相对比较新但是在软件工程领域中发展相对迅速的一个方面
为什么需要release management? 1 软件资源,软件开发过程以及开发人员的分散化,导致软件发布管理的复杂化。比如在全球化协作的环境下开发,开发人员分布在全球各个不同的site,每天都有不同的人在对软件的code 进行更新和修改,如果没有统一的发布管理,那么任何一个环节出现问题,都会导致复杂度急剧上升,从项目软件的角度上讲,日积月累,项目的target date就会没有保障,因此必须有一个统一的环节对相关方面进行把关和统一管理。 2软件开发在当前的环境下不是一蹴而就的过程。不同于传统的软件开发,当今环境下软件开发大多采取迭代式或者敏捷软甲开发过程,即使采取最传统的瀑布开发流程,也不能保证软件发布后客户不对软件提出修改或者升级意见。而很多情况下为了抢先占领市场和抓住有利时机,很多软件不可能将所有requirement 全部实现再发布,而是先发布包含某些功能的版本,然后根据市场的反馈和相关决策进行后续开发。这样为了保证产品的长期成功,需要统一的过程来管理这些发布和变更。 3release management是对PM的一个有效的补充。软件的持续变更和集成需要占有的资源来保证软件开发流程的继承,测试,发布和相关系统的支持。即使PM在项目管理过程中也会关注这些process 和resouce,但毕竟几种在比较high level的层面,而PM也不可能在后续的过程中有那么多时间去关注每天技术层面的变化。
Release Manager 扮演的角色: (1) 促进者:是stakeholder或者说客户的一个联络员。保证每一个business unit 都能够按时并且平滑的进行发布或更新。此时他代表了客户的利益。 (2)“守门员”:保证产品或项目能按期实现 (3)Architect :站在较高层次,对软件实现的流程进行识别,设计以及创建,以便能够高效的管理code (4)Supporter:给开发以及其他相关人员一些支持,以解决除code层面的其他问题; (5)协调员:对资源,项目,团队等进行协调。
Release Manager主要关注的层面:
Software DefectsIssuesRisksSoftware Change RequestsNew Development Requests (additional features and functions)Deployment and PackagingNew Development Tasks
Release Management 的基本process:
software Release cycle:
Pre-alpha: 在软件进入测试之前的所有活动,包括需求分析,软件设计,编码实现以及UT。 Alpha: alpha是软件release的第一个阶段,其中的活动可能包括白盒测试,黑盒测试,灰盒测试。在此阶段软件可以是不稳定的,crash和data loss一般可以接受。 Alpha阶段通常用feature freeze为结束点,即意味着功能完成。 Beta: 从feature complete开始,在beta测试阶段主要focues在可用性。beta release也是软件首次被开发组织以外的用户使用。beta测试的用户可以是客户、用户或者组织内的prospctive customer。 release candidate (RC) : code complete阶段,除非有defect需要再fix一般不会有新的code变化。
RTM:用的很少,所以不太了解。一般是到了RC就直接GA了