SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10350|回复: 14

[讨论] 多个产品线管理,我们如何去做软件构建?

[复制链接]
发表于 2011-12-15 13:22:22 | 显示全部楼层 |阅读模式

( e% o' ]" B! q" L; M& }
8 O5 |2 n5 s: H: V) O. Z当前的软件复杂度越来越大,而软件构建管理是我们解决复杂度一个很好的助手,为什么这么说呢?2 _7 x& d7 u$ P7 x8 m% `

( n  @  T- U/ _, |% U* F我想谈谈我的看法。
" J+ A/ U5 D! W4 V. |7 K( R, O1 d7 B3 ^" r/ k. H/ Y: I
多个产品线管理,我们如何去做软件构建?
7 E( e: z; S4 _8 m( B! Y; f9 Z% Z' z; \* N5 p) d% H
我们要先知道什么是“多个产品线管理”?
. m5 F1 \6 N2 N* |; X9 x: f( r& h1 i  G6 b1 M6 p
简单的说,例如,我现在已经有了第一个版本(我称之为基础版本,这个版本提供基本的功能)。如果有一个上海的用户,他们有些新的需求,那么,我可以基于基础版本去自定义新的功能,才能满足用户的需求,这时候产生了两个版本,如果同时有辽宁、河北、江苏、北京、深圳这5个用户,这时候有6个版本在不同的地方,他们都基于基础版本开发新的功能,同时基础版本也在不断的开发新的功能,当他们与基础版本同步时,试问,我们如何去管理这些版本呢?我们又如何快速拿到干净的代码呢?(指当与基础版本同步时,基础版本又开发新的内容,如果这时同步,可能会覆盖现有的代码,造成编译失败!)
: U9 b+ p7 _# S  N9 {$ P3 U0 s7 V5 c' y1 i; |! f8 F
还有一个问题,假如基础版本有8个模块,每个模块由不同的工程师去开发,模块之间能独立编译,但是他们又有依赖关系,当有一个新的用户提出更高的要求时,而用户只需要5个模块的功能,我们怎
! C( l2 L* G$ g
3 \/ V4 q9 ?! V3 u  J, W) B么样能快速满足用户的需求呢?我想说的是,我们怎么样快速拿到5个模块的源代码,重新构建一个新的系统呢? ' M7 k% ]# o( `$ d( w
* ?# ^9 n; F* ~3 G2 |
要做到这些,其实很难!!
2 E* W$ c2 A. D+ {( {; w" x: a$ `/ N
说了这么多,我其实在说,版本管理的内容。
, Z$ k6 o, g( m% i% X
% d8 x  g/ ~$ R: V4 v那请大家再思考一下,这仅仅是版本管理的内容吗?
) T" k4 ~+ @) h1 r! G  l4 A/ F# C+ {  W+ v& Y
我认为版本管理只是在解决,如何去正确的标识配置项,去控制访问权限,去管理标识项的变更和每次发布的版本的变更,其中也包括多产品线的版本管理。 / |% S# e0 \& w# G

9 A$ Q9 v# S* E! a其根本就没有涉及到软件构建本身,我不知道大伙是我同意我这个观点。
! H5 U7 F- R5 h: I
6 d8 _" O- d" ?7 s" j, t那什么是软件构建呢?! i* D6 f; R7 T9 O( `0 v; W
+ s; H  O7 Q2 G* d& m# O( A9 ?* e& B
如果大伙做过开发,就知道,当我们完成一个功能的开发,我们需要去验证功能的正确性,是否有错? 第一步,我们需要在程序的代码段设置断点,设置Debug输出结果,来调试代码功能的正确性,假如,我们有3个人,基于同一个项目,同时开发不同的需求,那我们该怎么办呢?1 \& b( V+ Q4 `+ u' y

0 s- P' K2 T- m5 k7 n6 D那就是,第二步,我们需要把整个项目进行部署或发布到web server上,然后通过浏览器的方式来查看功能的正确性。 . z! y1 P; a5 f" Z6 g; H
( F$ }; {; h  N6 Q
如果,项目的复杂度更高一些,那怎么办? 还是前面”多个产品线管理的例子“,那么,他有什么特点呢? 8 M' o- L* q. z- w3 M7 g4 H
: c$ T4 t/ v7 O0 L5 l. K, U
至少我可以知道几点。
- ~7 D/ t' L0 O5 t0 Q2 A
7 s6 W& W0 J0 k4 l0 A- x第一,研发团队成员超过100人;第二,分布式的软件开发团队;第三,要求能快速构建新的系统;第四,版本之间需要做同步; 第五,每个人负责不同的功能需求开发。4 {; t4 M' H0 T; {. ~* H% h
- e1 u+ c# P, a- R: R
从这里可以想象到,这到底有多复杂? 你能hold住吗? : Z1 L) r/ T7 r! l) r' l

) ?8 F6 S; x  B: v. v从五点我们至少知道他们的软件构建应该是要求构建自动化,构建敏捷化(快速响应业务,需求变化),分布式构建。' L$ X/ h8 b. z0 w0 w
4 q' k, D& A2 [  Q
那么我们不难想象背后应该有一个非常强健的软件构建管理流程,
  T; Q  j, u  i5 W2 D: H它可能包含几个主要的项:第一,构建种类(私有构建、集成构建和发布构建)( `* _, z5 W% j4 C
第二,构建过程(版本控制、代码静态分析、编译、单元测试、数据处理、打包、功能集成测试、代码覆盖率及部署)
) @' K4 G, X7 D4 K" L7 U) ~8 {+ t第三,构建基础设施(版本控制工具、构建工具以和硬件)' \0 A' A& g/ q  V0 m& |
第四,构建的定义执行和报告、构建相关角色和职责、构建服务器基础设施(开发人员桌面机、构建服务器和版本控制服务器)、构建频率等。
" C0 M5 O6 p6 S; [1 O7 z; m. Z3 x1 X3 h. s2 j( ^! S6 {
这样一个庞大的系统,你怎么样去做构建? 呵呵,我也不知道! 但至少我们能达成一个共识,软件构建的确是一项非常有意义的工作!!- S4 h, n$ _, M2 Q# b5 A. x) p8 Q

/ \0 A! [4 x% ]3 ~" M1 Q干吧!!/ ?# L3 m: Q  d, U

( @3 r6 l" W- `/ ]5 v. Z我在这里先丢一块砖头,希望大家涌跃发言。可以把你们公司在软件构建过程当中遇到的一些问题,一些想法,一些解决思路,一些憧憬,一些希望,以及跟软件构建相关的问题,都可以提,有能力回答的孩氏,要尽量回答哦。: J* ?3 ~( a3 g5 |# l7 n

0 W3 @0 w( }" R1 G# q

本帖被以下淘专辑推荐:

发表于 2011-12-19 16:59:05 | 显示全部楼层
期望版本主给出构建方案呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-23 12:50:06 | 显示全部楼层
我现在也没有好的解决方案,发贴想收集大家的问题,我们一起努力来解决。
回复 支持 反对

使用道具 举报

发表于 2012-2-8 16:28:22 | 显示全部楼层
其实这种做法在大公司里比较成熟,主要的问题是各产品之间的依赖关系会随着版本的不断发布,越积越多,再加上各客户升级的版本也不一致,每个月客户们都提出不同事需求,碰到升级到最新版本的用户还好,如果客户那边还在使用比较低版本,就得发布临时补丁版本,并在最新发布的版本中也要进行更新,久而久之各产品的依赖关系就会出现依赖,比如参数设置、互相调用接口等等,怎样解决各产品的依赖关系迫在眉睫???请高手赐教...^
回复 支持 反对

使用道具 举报

发表于 2012-2-8 16:54:26 | 显示全部楼层
我说说我的看法。
( I, f5 b$ d7 g9 _8 N7 B1、多个产品线的管理。这里指的是一套基础产品,多套衍生业务产品的模式。从组织结构上来说,必然需要一套开发班子+多套实施班子完成整个产品线的人员支持。这里不仅仅是从代码层面区分开来,而是从组织结构上就“分支”开。开发专注产品,实施可以作为产品的二次开发商或部署商,搜集需求和问题,产品经理做出决策,定期(每2月)发布新的产品版本。
回复 支持 反对

使用道具 举报

发表于 2012-2-8 16:57:39 | 显示全部楼层
2、1将多条产品线分解成一条条的产品线,基础产品采用自动化构建,保证基线版本的发布。行业产品建议在自动化构建基础上往前走一步,做到持续集成甚至是持续交付。至于如何去做,建议可以看一下《持续交付》这本书。
回复 支持 反对

使用道具 举报

发表于 2012-2-8 21:19:58 | 显示全部楼层
lz说了好多,没完全看完。但觉得事情弄的太复杂了。
! V6 U# Q. |/ B支持ls,另外建议看一下《启示录:打造用户喜爱的产品》
回复 支持 反对

使用道具 举报

发表于 2012-7-17 12:30:50 | 显示全部楼层
学习了,小公司目前还用不到
回复 支持 反对

使用道具 举报

发表于 2012-7-17 17:24:36 | 显示全部楼层
学习了 ,对我来说比较复杂。
回复 支持 反对

使用道具 举报

发表于 2012-7-27 11:38:18 | 显示全部楼层
每次发给验证测试,发布单中提供构建项SVN版本和集成版本,功能点等。& w7 Y+ k! N7 ?+ H  W; p  W4 P+ d! ?
/ O# M) J3 P9 A; T
发布单会保留,未来恢复指定版本,可以使用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /1 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2022-8-18 18:05 , Processed in 0.081288 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表