文档章节

迭代式开发进度控制

凯文加内特
 凯文加内特
发布于 2014/02/11 14:29
字数 2919
阅读 211
收藏 2
点赞 0
评论 0

计划

计划定义的是项目的目标是什么,为什么?在这个职能的执行中,项目开发组的任务、目标、具体目标和战略被确定。

即使在软件开发领域之外,人们对于事物的处理总有惯用的思路。我的定式是:我的目标是什么?我的起点是什么(包含拥有的资源)?从起点出发需要经过哪些途径可以达到目标?这个自觉的思维模式非常有效,无论项目大小,它包含了朴素的管理思想。

公司资本雄厚,对于EC产品的战略构想是,1为地域分散(可能是全球)的分销企业提供提高业务管理效率的软件产品;2该产品的应用是基于Internet3该产品的应用部署问题及安全问题与专业厂商协作解决,产品的核心竞争力在于业务处理。

EC项目组组建仅仅3个月,人员背景基本分为两部分:软件开发、视觉设计。软件实现业务以满足下属一IT硬件分销企业为目标,该企业营运总监(MBA出身)负责与软件事业部协调软件开发,事实上该企业业务量暴涨,分销渠道遍布全国,迫切需要一套网络管理软件。

软件工程的迭代式开发已经逐渐取代瀑布式开发成为主流。所谓迭代式开发,根据我的理解说白了就是象爱因斯坦那样做小板凳,终极的理想板凳就是不断修正前面板凳错误的后一个板凳,最好的是下一个迭代式开发瀑布式开发存在本质的不同,传统瀑布式开发的出发点是务求各个开发阶段的成果都是最优成果,无需变更。而迭代式开发则是假设各个阶段的成果都有优化、变更的余地。我们采取了迭代式开发,当前工作围绕的核心是如何使未来的变更、优化变得容易。

应用迭代式开发,公司的产品战略是可以通过N次迭代实现,问题是资本的耐心常常是有限的,产品经过趋向于无穷大的N次迭代肯定会日臻完美,但我们必须使资本在每次迭代中看到利润。换句话说,产品的开发必须结合商业成功的良性循环中。

经过以上分析,我确定了项目组的产品目标:5个月完成软件的1.0版本开发,7个月后完成该产品在公司下属企业的上线运行。时刻谨记的核心任务是确保当前开发模式的可复制性和当前版本的可重用性,目前的工作是为了将来修改的简易性。

计划上报后获得通过,给项目组和客户(下属企业)都带来了压力,大家开始为共同的7个月的里程碑奋进。

7个月的时间内我们又细化为两次迭代,每次的过程分为:需求分析、系统设计、代码实现、系统测试。

组织

阶段目标确定后,达到目标要完成的工作立即浮出水面,这样依据任务安排工作,人员调配的问题很快迎刃而解。

 “韩信用兵,多多益善,根据我的计划,项目组的人员配置应该是足够的,可是经过几次人员安排的反复,我的结论是成功的关键并非兵精将广,而是项目组的每个人都能各司其职,完成份内的工作。

项目组最多时参与的人员达到15人之多,但根据项目阶段的需要、公司其他任务的安排以及IT企业员工的正常流动,每个阶段参与项目的人员数目都不相同,但直至项目基本完成,团队仍然保持着强劲的战斗力,保持了正常的动态平衡,项目没有因为人员问题影响进度。

项目需求调研、分析阶段,共有9人参加,编为三个小组分别同不同部门就不同业务内容展开交流,并完成业务活动分析。9人中的4人成为项目后续进程中的核心力量,积极参与完成了项目。

系统概要设计阶段有6人参与,完成数据库设计及界面风格、功能实现模式设计。详细设计由4人专职进行,主要任务为页面表现及功能逻辑设计,设计成果以WORD文档方式向页面程序员与组件程序员下发。

代码实现包括组件代码编写和前端页面编写、组件调用,6名程序员分为3个小组。

单元测试由2名测试人员(非专职测试)在项目后期逐步完成,系统联调为项目组9人最终分担测试完成。

人员组织中值得强调的经验是,龙生九子,各不相同,核心工作必须花大力气安排项目核心人员完成。EC项目中人员分工非常精细,设计人员无须编码,但他们的设计文档极其详尽,使编码工作变得简单、纯粹,大大减轻了工作量。设计人员同时又是功能实现的原始驱动,他常常要牵头主动与页面人员、组件实现程序员协作沟通完成工作。

激励

项目管理是软科学,不是简单依据前面生硬的三段论就可以顺利把握,软件开发活动必须有良性的反馈。随着项目进程的展开,我琢磨出的经验是,阶段目标要设立明确,阶段成果要显而易见,不能模糊、抽象、泛泛而谈。这样才能真正激发人们的成就感,加强完成项目的信心,使对软件已完成部分的修正不至于寸步难行。

以需求分析阶段举例来说。

对定制型软件来说,客户需求调研、分析阶段的工作事实上是极其难以把握的。需求分析太深入,时间耽误太多影响后面工作,而且分析的结果还未必能用上,后期客户需求的改变会令对前期分析工作自信满满的系统分析员吐血。需求分析太浅薄,自然后期工作捉襟见肘,不说人们也知道有多少坏处。

我对需求分析阶段的最终成果的定义是完成类似于SAP实施的业务蓝图,统一图例。而此业务蓝图是在三天的小组成果报告会议中接受全体项目组成员质询,讨论通过。而此份业务蓝图经过修饰,格式规范,简洁明了,转呈营运总监签字时获得好评。最令大家得意的是,营运总监在大区会议上要求各大区经理规范业务时,就是拿着我们的业务蓝图在做演示。

事实上,需求分析的真正成果是大家都成为某方面的业务专家,成为项目中活跃的一份子,能够积极从客户的角度参与后来的项目沟通。

领导

项目管理者必须完成领导的职责,我对此的理解是:1决策;2保证决策意图的顺利执行。

性能和成本永远是一对矛盾,项目经理因此常常陷入两难的境地,这种状况下常常能体现出项目经理出色的对大小、轻重、缓急判断的均衡感。决策能力来源于项目经理的实践经验,是管理者厚积薄发的功力体现。

对于第二项,人们最常说的是领导是一门艺术。艺术是发散的,与严谨的二进制逻辑是格格不入的,这常常构成了程序员向管理方向发展的恐慌。虽然作为EC项目的主管对我来说是硬着头皮上,但我始终是抱着学习的态度去面对困难,我一直的心态是让暴风雨来得更猛烈些吧!

以我的经验来看,作为项目经理,一个半年的项目下来不吵个2030架是不称职的,说明项目的沟通存在极大的问题。我没有天生的领导魅力,依靠的只是自己琢磨的两件法宝:1坦诚对待工作上的沟通;2任务本位,区别于官本位。

坦诚就是管理过程中坦率指出别人错误,同时也准备让别人指出自己的错误。这是解决问题变得简单,在项目组中一旦形成传统,大大有益于项目的进行。

我始终没有试过威势压人、软硬兼施的领导手段,对其效果难以提出中肯的意见。我觉得交流的目的只是解决一个具体的问题时,交流就会变得简单,当然,经过开始阶段的磨合,我认识到立刻要求别人和自己的思路合拍是不现实的,作为管理者应当宽容。

控制

软件开发项目的管理在我看来是一个比较复杂的领域,它的控制包含了定性和定量的成份,同时项目进程中特有的、大幅度的迭代构成了软件项目复杂性的另一个因素,即所谓的需求变化导致设计、代码变化。

如何能按期、按计划完成EC项目,一直是我考虑的重点。宏观地看,我在项目管理中自觉地用了两级控制。

一、总体控制

如前计划中所述,项目进程安排两次迭代,而每次迭代过程又包括需求分析、系统设计、代码实现、系统测试四个阶段。

总体控制的目标基本是大目标,采取定性控制的方法。但要说明的是,虽然需要达到的目标是定性的,但阶段成果的体现是具体的、明确的。

比如需求分析阶段,完成的阶段性成果业务蓝图所描述的业务范围、业务深度是很难量化要求的,但业务蓝图本身的表达规范、人人都是业务专家的要求又是具体的。

二、具体控制

软件作为一种可以实际感受的产品,最终拿给用户的必须是经过量化控制的。

就目前我们所能采用的手段来看,设计阶段以前的定量控制是难以做到的,比如如何能定量考核设计是否契合需求?所以软件的具体控制是从设计开始的,以设计为核心。

-设计文档必须详尽,并且及时更新。

-根据设计文档发放工作单,确定完成时间。

-页面功能测试和组件测试是依据完全最新的设计文档要求。根据设计文档对软件的测试显然是可以做到定量的。


本文转载自:http://wenku.baidu.com/link?url=Opl91y4Z0Mbiq5zbuagn8L0GqgLz4cDQKbn0OhHG49zMUPwmMN9LY6qcqz0waHzQ9...

共有 人打赏支持
凯文加内特
粉丝 326
博文 665
码字总数 87615
作品 0
青岛
后端工程师
通过里程碑式管理,控制软件项目管理进度

项目经理在整个项目团队中,软件项目进度的控制是头等大事之一,有计划有安排的项目管理才是保证项目质量保证。但是,往往由于客户等外部因素或者是组内等内部因素,导致经常项目计划有变更,...

陈市明 ⋅ 2012/10/14 ⋅ 0

项目测试进度陷阱之“结束时测试”

一、定义: 所有测试均在开发后期进行。 二、发生时间段 计划和详细文档有一定复杂度的测试项目 项目进度计划复杂,时间足够长使测试被推迟。 三、陷阱表现 项目总体进度计划上,测试排在开发...

honzhang ⋅ 2017/12/27 ⋅ 0

迭代1:二、开发计划

1.2 开发计划 A. 团队成员 项目经理:吴泽标,负责整个项目的进度安排,分配任务,督促团队进度 架构师:吴泽标,设计软件的体系结构和数据模型、代码编写 分析员:陈璇斐,理解项目需求,业...

fatwowzb ⋅ 2015/04/03 ⋅ 2

Python进度条--Tqdm

Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 安装: 最新的PyPI稳定版 pip install tqdm 在github上最新的开发版本 ...

叶秀兰 ⋅ 2014/03/05 ⋅ 1

敏捷开发Scrum

什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,...

FTD_SL ⋅ 2016/12/09 ⋅ 1

统一软件开发过程——RUP

RUP(rational unified process)是一个面向对象且基于网络的程序开发方法论。它是以面向对象方法为基础的方法,RUP坚持以用例驱动,以架构为中心,迭代和增量的开发方法。 下面以思维导图为...

邵鸿鑫 ⋅ 2014/01/27 ⋅ 0

写给对独立开发的建议

有一段时间没有在博客里写文章了,今天想记录一些最近这半年来,作为独立开发的感悟。这里并不是要给大家上课,只是分享一下,在这半年期间开发过程中,遇到的问题、做过的弯路及个人取得宝贵...

洛山红茶 ⋅ 2015/10/18 ⋅ 0

软件工程之软件开发模型类型

软件工程之软件开发模型类型 1.边做边改模型 2.瀑布模型 3.演化模型 4.增量模型 5.螺旋模型 6.喷泉模型 7.敏捷模型-SCRUM 各种模型的优点和缺点   瀑布模型 文档驱动 系统可能不满足客户的...

wenqi_arthur ⋅ 2014/09/09 ⋅ 0

MIS开发迭代1

1.1项目设想 A. 系统展望。 1、产品应用场景 (1)顾客携带所购书本到收银处通过POS机付款,收银员将顾客选购的商品逐一录入系统,系统显示最终总额,收银员告知顾客总金额,顾客选择支付方式...

fatwowzb ⋅ 2015/04/03 ⋅ 1

软件开发模式对比(瀑布、迭代、螺旋、敏捷)

1、瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法。 瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集...

lvzjane ⋅ 2012/12/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 51分钟前 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部