很久没空来写个帖子。
最近都在研究ALM,这个被HP,IBM,微软等已经实现了的东西。
客官们肯定纳闷,ALM到底是什么?那么就小谈下呗。
先说说ALM用来干啥的:
1.从ALM的字面意思来讲,就是“程序生命周期管理”。XXXX管理,是否很耳熟?想起来需求管理、缺陷管理等工具没?jira?嘿,你上道了。从“xx管理”的角度,那就是一个track system,像jira这类的。那么他track的是什么?咱继续看,“Application Lifecycle Management”,它的本身就给了我们答案,track的是Application 的LifeCycle。那么这里又有问题了,什么是程序的LifeCycle?LifeCycle这个最早是出现在“软件工程”内,标志性的东西就是“瀑布模型”。它的定义大家都明白。这里的lifecycle指的不是项目整体的开发模型。而是颗粒化(国内叫法)或者敏捷开发模型(国外叫法)里面的变更集(指的是feature,changes,fix等等)从它被定义到最终产品发布上线的过程。
那么从名字上的解读,已经有眉目了,ALM就是用来追踪监控变更集生命周期状态的一个辅助软件系统。
2.从管理角度讲,ALM能干什么?它需要提供一些管理层需要的信息,比如平均每个变更集的whole throughput time,每个项目的变更集完成进度等等。
3.从开发者角度讲,ALM需要干什么?减少开发者的工作,让他们专注的写代码,修改缺陷,其他的不要他们care。
4.从测试人员角度讲,ALM需要干什么?得到稳定的能够进行深度测试的产品版本,让测试人员的bug能被追踪,督促开发人员修改缺陷。并且自动化测试。
5.从配置管理角度,ALM需要干什么?能够进行自动化的做包,自动部署,自动发布,持续集成。
6.从产品运维角度,ALM需要干什么?能够简单的操作就能让产品包运行起来。
7.从人力资源角度,ALM能提供什么?减少加班,解放人员到创新性的工作中。
8.一些笔者还未想到的ALM也能做,比如横跨N个项目,组织级的配置管理?
总结下,ALM的基本组成应该是这样的:
- 拥有一个track system来跟踪变更集,跟踪变更集的需求-》设计-》实现-》做包-》测试-》发布的整个过程。谁在什么时候做的什么事,代码谁开发的,谁review的等等功能。
- 拥有一个中央数据库来存储整个生命周期内的有用数据,并可以加工成信息。
- 拥有持续集成、持续发布的一个自动化平台来完成从做包-》测试-》发布的过程。
- 拥有一个版本控制的工具来提供最基础的版本管理。
最后呢,各位看客,这东西,你想拥有么?