转
在一个软件研发项目的管理实践中,项目任务的分解一直是一个很重要的工作,但是不同的项目经理对这个问题的操作方式又常常会千差万别,其中一个很常见的分歧在于,是横向分解还是纵向分解?本文试图对此进行一个简单的探讨,希望能给处于项目任务分解困惑中的项目经理们一点借鉴。
首先解释一下这两个概念: 横向分解是指基于技术架构层次进行的人员角色分工和任务分解。比较常见的一种情况是,项目的技术架构采用表示层、业务层和持久层三层架构,然后这三层分别采用struts、spring和hibernate框架,于是人员招聘时分别对相应的框架使用提出要求,具体任务分解时先由项目经理分解好模块任务计划,然后由设计师定义好各模块的层次间接口,再将具体编码任务分解给程序员。 纵向分解是指基于业务模块的任务分解。比较常见的一种情况是,项目经理首先拟定出整体项目进度计划,再按模块对项目任务进行分解,设计师关注模块间的接口和技术体系的一致性,具体模块内的设计和实现由各模块的责任人相对独立地完成。 横向分解是目前普遍采用的方法,优点就不多说了,网上应该有很多相关的介绍,缺点却是很明显的:首先,对于普通编程人员来说,配置文件编写起来相当烦琐,常常缺乏编译期检查,就算有工具支持往往也没有编写代码来得顺畅。其次,看懂一个简单模块的代码通常也要在代码和配置文件间转来转去,比较吃力,特别对于接手前人工作的程序员来说,简直是个灾难。再次,横向分解是建立在模块内层次间良好沟通的基础上的,对于层次间的沟通要求很高,如果这一项工作做不好会使整个项目陷入泥潭。 当然指出横向分解的缺点并不是要对此种方案进行全盘否定,而且方案的缺点有很多在项目中是可以规避的,只是这种方案的成功实施是建立在很多假设的基础上的,比如说项目具有一定的规模,相关人员具有从事相关岗位工作的技术能力,层次间接口能够良好定义,项目成员间能够进行良好沟通等等,如果这些假设很多都不具备,那实施这个方案就会带来灾难。
笔者曾经碰到过一个案例,是个视频门户的运维系统项目,项目总共只有10人,项目经理却坚持要采用横向分解,说是大公司像微软、IBM都是采用的这种方案,我只问了他两句话:你从哪儿知道大公司都是采用这种方案?你是大公司吗?当然他并没有认真考虑我提的问题,依然大刀阔斧地实施起了他的项目管理策略:首先设置两名QA负责测试,一名美工负责做页面效果图,剩下的六人分为前台三人负责表示层和后台三人负责持久层,他自己只做项目进度计划。刚分完他就发现业务层没人做了,由于业务层跟表示层联系比较紧密,自然这个任务就落到了前台三个人的头上,但很快就出现了前后台进度落差巨大的问题,于是业务层任务又改为由后台来做了,但由于接口没有很好地讨论好,集成测试又出现了很多问题。 其实很多刚起步或规模相对较小的软件公司都采用的是纵向分解的方案,由于资源有限,项目较多,又缺乏高水平的系统分析和设计人员,有的项目甚至从需求分析到编码测试都由一人完成,机械地套用横向分解的方案是根本行不通的。当然纵向分解方案对人员素质提出了较高的要求,不但要熟悉表示层的相关技术,也要了解持久层的基础知识,还要熟悉业务流程,重要的是市面上缺乏面向应用的分层的整合型的框架,能够方便程序设计人员快速地开发出设计良好的企业应用。
相关推荐
在矩阵中,横向表示活动,纵向表示角色,这样可以确保每个人都有明确的工作任务,并能计算出总的工时。 工作量估算则是根据WBS和责任矩阵来预测完成每个任务所需的时间或工作量。这通常涉及对每个任务进行详细分析...
2. **纵向分解**:将系统划分为不同的层级,每个层级负责一部分特定的功能或任务。例如,将电子电气系统按照开发阶段分为需求层、系统层和部件层。 3. **横向分解**:在同一层级上进一步将组件进行分类,比如将电子...
- **生命周期活动分解**:纵向活动关注项目不同阶段的任务,横向活动涉及跨阶段的协同工作。 - **里程碑**:在研发过程中设定的关键节点,用于评估进度、质量和预算控制。 - **TEEMS产品研发流程**:详细描述了每...
在IT行业中,项目管理尤其重要,因为它涉及软件开发、系统集成、网络建设等多个领域。以下是对文档中提到的知识点的详细说明: 1. 工程管理的关键文件:工程章程、工程围说明书和工程管理方案是项目管理中的核心...
工程概述明确项目的目标,这些目标可以按功能或业务需求横向分解,也可按阶段纵向分解。具体来说,工程目标需详细描述每个阶段的预期成果,以便团队成员了解各自的任务和期限。此外,实施方案部分详细说明了项目将...
信息域涵盖信息流、信息内容和信息结构,而功能域则可通过横向和纵向分解进行详细描述。逻辑视图关注功能和数据的关系,而物理视图关注实际实现细节。 总的来说,需求分析是软件开发的基石,它决定了软件设计的方向...
通过记录每个完成的史诗故事和用户故事,项目团队可以将完成情况与历史数据进行纵向比较,也可以与其他团队或业界的数据进行横向比较。这种比较可以帮助团队了解自己的生产效率,同时也为高层管理者和客户提供了衡量...
- 层次化分解:问题和功能的分解应按层次进行,既包括同一层次的横向分解,也包括多级的纵向分解。 - 逻辑视图与物理视图:逻辑视图关注软件的功能和数据关系,不涉及实现细节,是设计的基础;物理视图则描述实际...
IPTV业务的核心在于其业务软件开发商提供的面向业务的中间件,这使得系统集成需要考虑更多的灵活性和创新策略。在制定系统集成策略时,IPTV运营商应关注以下关键因素: 1. **采购的灵活性**:为了适应不断变化的...
此外,架构设计还需要考虑非功能性需求,如性能(响应时间、吞吐量)、安全性(数据保护、访问控制)、可用性(容错、备份恢复)和可扩展性(横向扩展、纵向扩展)等。 总之,软件架构是软件开发的基础,对项目的...
设计系统的总体结构,如采用软件结构图来展示功能的横向分解和纵向层次调用;处理方式设计,明确各模块如何协同工作;数据设计,涉及数据结构、文件和数据库的设计;以及进行质量设计和文档设计,保证软件的可维护性...
在系统集成策略中,有两种主要的业务分解方法:纵向分解和横向分解。 **纵向分解**将IPTV业务划分为多个子系统,如直播、点播、时移、信息、通信和游戏,每个子系统由独立设备集合完成。这种方式有利于采购灵活性,...
必须按自顶向下、逐层分解的方式对问题进行分解和不断细化:软件的功能域和信息与都能做进一步的分解,可以是同一层次上的横向分解,也可以是多层次上的纵向分解。给出系统的逻辑模型和物理模型:逻辑模型给出软件要...
定期进行横向和纵向的检查评比,激发团队竞争,推动项目按照预定目标发展。建立健全工地会议制度,明确岗位职责,制定人员目标责任书,重视信息治理,确保技术数据的有效管理和利用。 【项目治理】 项目经理负责...
在本项目中,我们将探讨如何使用MATLAB进行飞机模拟,特别是关注那些具有特定几何形状、质量和惯性特性的飞机,并且考虑其纵向和横向空气动力学导数的影响。MATLAB是一种强大的数学计算软件,广泛应用于工程、科学和...
《软件架构设计》一书是理解软件开发过程中的核心概念和实践的重要资源,它深入浅出地探讨了软件架构的设计原则、方法和技术。在软件工程领域,架构设计扮演着至关重要的角色,它决定了系统的整体结构,影响着项目的...
为了应对未来可能的业务增长,我们需预见到系统的扩展性需求,如横向扩展(增加服务器数量)和纵向扩展(提升单机性能),并为此留出足够的设计空间。 3. 发布系统的构架 发布系统的设计包括构建自动化、持续集成/...
- 模型分解:通过横向和纵向分解,降低问题复杂性,提高可理解性和可描述性。 - 逻辑视图与物理视图:逻辑视图关注功能和信息间的关系,不涉及实现细节;物理视图则涉及具体实现形式。 3. **集装箱概念**: - 集...