这个是rain(bluetent)兄写的,非常有感触,对于我正在或者将来要做的工作,是个不错的资料,我正在渴望找一个平台,实现自己更大的价值。当然,我们可以发现,一个公司内部资源的有效合理整合,往往会带来质变。
这里可以看大图
点击左上角图片可以看到这个流程图,以下是对各个字母所代表的连线的注解:
A、项目经理与公司决策层的沟通,以确定这个需求有没有足够的人手和可行性去实现,以及与现有产品的依存关系。
B、公司决策层与市场/策划部门的交流,这个过程将进行的相当充分,并且是反复、长期的,它致力于从用户的角度对需求进行细化和分解。
C、市场部门需要针对细节问题与项目经理交流,以确定这个需求有没有可行性去实现。
D,E,J、这是整个产品的架构设计过程,分为UI架构设计和程序架构设计两部分。首先架构师需要与项目经理达成思想上的一致,随后进行设计。这个设计必须是便于分工、维护和扩展的,而且要能够承受一定强度的原型开发压力。UI架构师将根据界面逻辑对产品实施分割,对每个界面上需要放置的内容了如指掌。程序架构师在与全体开发人员民主讨论后,制定出自底至顶的程序层次(例如class、library等等),并划分出功能模块(例如首页、内容列表、后台管理、帮助系统等等)。UI架构师与程序架构师之间需要就功能划分、文件命名规则等等达成一致意见,并不断在开发中完善思路。
F、美工使用photoshop等工具设计界面,并完成图片切割工作。
G、网页设计师负责书写静态模板。如果人手缺乏,这个位置可从程序开发人员中抽调。
K、美工与网页设计师之间需要进行一些协调。一些美工的设计思维并不能完美的体现在网页上,因此需要不断的磨合与修正,达到双方都满意的结果。但相对来说,美工完成的作品并不需要做太多的改动,因此这里采用单向箭头标示。
H、对底层逻辑(如类、方法、库的设计),以及相关文档的整理。如有精力可以进行小规模的测试,确保日后的开发工作顺利进行。
I、当底层接口以及相关文档完成后,模块化的拼接将变的比较轻松,这个流程将完成基本模块到外部功能的构建工作。
L、这是程序开发人员需要付出最多交流成本的地方。很多的底层模块在拼接过程中需要进行变动,例如增减参数,修改类、属性、方法的名称,将类、属性、方法移动位置等等。同时,外部的实现需要随着底层模块的更改、优化进行相应的调整。
M、产品成型后,将交付测试部门进行测试。测试部门返回一个报告,发送给项目经理和程序开发人员。在小规模的开发团队里,项目经理可以充当质量保证的角色,前提是他对项目的开发过程有一定程度的了解,否则,应当指派一名专门的质量保证人员来处理bug列表。
N、测试部门返回的报告本来是可以发给所有程序开发人员的,但不幸的是,测试人员只跟界面打交道,他们只注重结果,而不注重实现原理。因此bug列表一般需要交给负责界面逻辑的开发人员进行整理,然后分发给各个成员加以更正。在小规模的开发团队里,界面逻辑和底层逻辑可能是由相同的一批人来实现的,那么他们需要一个Bugzilla来协同处理这些bug。我们也建议测试人员使用同一套Bugzilla系统提交bug报告。
最后总结几点:一、详细分工的目的是为了降低交流成本。二、实际情况会使得开发工作复杂化,所以流程模型要能适应原型开发工作。三、文档和标准化的规范是极其重要的,它可以使开发过程工厂化,提高代码质量和可维护性。