《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-03项目生命周期五大阶段

02-03项目生命周期五大阶段

嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜

我们前面讲过项目的定义,特别谈到每件项目都是独一无二的,都有各自的目标、可应用的资源、必须面对的限制与风险等。但所谓的知识体系就是要设法异中求同,通过分析与比较足够数量且不同种类的案例,试图归纳出适用于所有项目的思想与方法。

这么做并不牵强,因为不同项目间确实具有共同的特性,可以使用相同的思想与方法论来执行,就如同我们的本行—嵌入式系统与电子产品开发,如果不能在不同的项目间秉持共通的概念,工程人员免不了要多走很多冤枉路,其职业生涯将会非常辛苦!

2-3-1 项目管理知识体系

PMI制定的项目管理体系称为PMBOK(Project Management Body of Knowledge),其举办的全球性项目管理知识认证考试则称为PMP。市面上有许多相关参考书籍,建议各位可以花时间找一本来研读。在此,我并非建议各位一定要取得PMP认证,但PMP考试以实际题居多,在做模拟试题的过程中,可以让你进入一项又一项不同项目的实境里。如果你是一位项目成员,如何在各个阶段协助项目成功?如果你是一位项目经理,碰到各式各样的状况时该如何处理?

建议只要买本PMP模拟试题与讲解的书籍即可,我个人认为这真的是很难得的管理培训,自我研读也未尝不可,因为管理的事本来就没有绝对的对错,只要能引发思考都是有益的。在座的各位总不会希望当自己到四五十岁时还在做工程师吧?就算你们想当一辈子的工程师,也要考虑现实环境,毕竟在中国,很少有企业愿意花高薪聘请一个资深的工程师。

所以,我亲爱的同事们,务必要抽空研读一些管理书籍,相信对各位的职业生涯会有很大的帮助!

任何一件项目都必须经过以下5个阶段。

启动阶段
规划阶段
执行阶段
监控阶段
结项阶段
一般人都会直觉地将项目切分为这5项步骤,各位会发现,其实软件开发也是按照这样的流程,重点在于每一个阶段要做好哪些工作,才能保证下一个阶段可顺利的运行?幻灯片中的这张流程图乃归纳自PMBOK的各个章节,各位可以从这张图看出项目生命周期间。除了Implementation外,到底还有哪些必要的管理工作?而这些工作存在目的只有一个,即为了增加项目成功的几率。

请各位先对幻灯片中的每项Item稍具概念即可,我们稍后会陆续提到。

2-3-2 项目生命周期

同样重要的,还有项目生命周期的5个步骤。

启动阶段必须保证执行这个项目确实是有意义的,并赋予项目经理足够的资源与权力。
规划阶段的成果是‘项目执行计划’,过程中必须对项目的诸多特性(包含规格、进度、成本、质量需求、资源调配、沟通管理、风险管控及配置配置)做深入的分析。
执行阶段必须保持严谨,工程人员根据项目执行计划按章行事。当计划与实际状况出现落差,或因不可抗拒的因素必须修改项目规格时,则必须启动变更管控流程,更新项目执行计划—使得工程人员始终按照最新的计划来执行即可。
监控阶段则是在执行阶段,随时检查项目执行状况与既定计划是否即将或已出现落差,最好能够提前发出警示,以实时启动变更或风险管控流程。
结项的目的是为了累积企业资产,以供以后项目参考,照理来说,这是相当有意义的工作,但实际上却往往最常被忽略(到项目后期,许多项目成员已功成身退,剩下的势必也正在另觅新项目。因此,必须在项目执行阶段即通过许多自动化工具,不断地收集与整理项目资料,使结项时期的投入越小越好)。
若要我说项目生命周期中5个步骤最重要的是哪一个?工程师可能就想着执行阶段,但我会认为是规划阶段。整个PMP知识体系里,大部分的篇幅都在说明如何造出合理的计划,而我今天也会花最多时间在规划阶段上。这个道理非常简单,事前想得越清楚,执行的变量也越少,成功的机会自然而然便可提高。

等哪一天我有机会当上企业的老板,也许我会转而认为结项才是最重要的阶段。

项目在不同阶段会有不同的特性,因此,必须视项目所属阶段,采取不同的态度,并在不同之处投入不同的人力及关注,这点相当重要!虽然项目的5个阶段并没有明显的界线,但项目经理有责任让所有项目成员随时都知道目前项目正处于什么阶段。千万不要在规划阶段忙着写code,在执行阶段又不按照计划来执行;又或者监督阶段太晚启动,review活动不够积极,等到问题爆发时已无可挽回!

2-3-3 项目启动阶段

接下来我将遵循着项目生命周期的5个阶段,逐一说明各阶段的思想以及可使用的工具。一天的课程当然无法将细节全都说清楚,希望各位在今天的课程能够尽量将PMP的思想纳为己用,知道有工具可实际应用,等日后有需要时再去查询即可。

企业以营利为目的,除非有其他Business上的考虑(例如,为了与重要伙伴建立关系,即使赔钱都要做),否则,不赚钱的项目不应该接。此外,小虾米团队也不该妄想吃下大鲸鱼的项目。如此看来,某个项目到底该不该做确实是跟企业的利益息息相关,所以项目不应该说启动就可以启动的,必须经过严密的可行性分析。

可惜的是,大部分项目都过于忽视这个步骤,通常会直接跳过量化的分析,由高层或资深工程人员使用直觉与经验来决定是否启动。但我们说过,每件项目的特性都不同,即便是规格完全相同的产品,但面对不同的客户,可能会有截然不同的执行结果。

就算是老板和客户已决定要做的项目,当我被assign来执行这个项目,还是会找必要的工程人员执行可行性分析。分析工作的深入程度,根据项目复杂度与规格是否明确而定,规格越不明确的项目,越是需要做更深入的分析,在分析过程中顺势尽可能逼客户提供明确的规格。一旦分析结果风险极大,必须及早警示老板,即便老板还是执意要做,也能尽可能在项目启动前取得更多的资源,或设法让客户在规格上让步。

在项目启动阶段还有两件重要的事:

理清项目关系人。要分清楚只是纯粹感兴趣的人,以及实际具有影响力的人。
老板颁布项目授权书,并正式kick-off。
通常项目经理在没执行项目的空档时,麾下是没有团队可供调度的,所以当公司决定启动某项目时,老板必须正式授权给项目经理,让他可以申请经费与调动人力,最佳的方式就是老板‘颁布圣旨’—即项目授权书,白纸黑字说明项目目标,以及项目经理可以调动哪些公司资源。

通常在公司的组织章程中,并不会根据不同项目特性,明确各单位对项目的支持程度。因此,项目授权书就如同公司内部的行政命令,职位与法律相同,使得项目经理能够在授权书的范围内,‘合法’地取得资源。

我们公司就是一直碍于没有正式的项目授权书,搞得所有项目经理常常为了抢资源而搞得不愉快,部门主管也很难判断各个项目的优先级,使得本来可以‘依法行事’的,却因为缺少了老板这个举手之劳,项目经理最终还是得拉下自己的老脸到处要资源。

项目启动前后必然是混沌不清,充满了各种不确定。不确定的事情拖得越久,对项目影响越大,所以项目经理必须尽可能在项目前期就设法理清大部分的事情。以嵌入式系统项目来说,产品规格与成本限制是最重要的。同样是手机,智能型手机和一般手机所需的研发资源就大相迳庭!如果只知道‘大概’要做什么,前面谈到可行性分析的可信度,自然就会大打折扣。

再强调一次,越前期的决策错误,对项目成败的影响越大!项目启动阶段参与人员不需太多,最好是较有经验的人员,此时,项目经理要带头用谨慎的态度尽可能挖掘出该项目可能的变量与风险。

一旦确定要执行这个项目之后,接下来就是规划、执行及监控阶段,稍后我们会详细解说这3个阶段所需要的流程与思想。事实上,PMP大部分的重心都着重在这3个阶段。即便如此,我在此仍然要再次强调项目的启动与结项两者缺一不可,前者是确认此项目是否有执行的价值,并正式赋予项目经理应有的权力去执行此项目,而结项则是对此项目进行检讨,项目执行中的所有成果都应该转换成有用的组织资产。

在此我们先跳到项目结项阶段。

2-3-4 项目结项阶段

结项有两种,一种是对外部的合约结项,另一种是内部的项目结项。

一般项目都只知道要做合约结项,不是公司急着跟客户收尾款,就是我们的厂商要跟公司讨钱,因为这会牵涉到营利或是否违约的法律问题,所以到项目后期,无论团队再怎么疲惫,都一定会设法尽快将相关合约close掉。

我们前面已经谈过项目结项的重要性,但大部分的项目通常都没有正式的项目结项过程。状况好的,可能所有项目成员一起吃个饭就算结项;状况不好的,项目执行时团队间弄得不愉快,项目后期,大部分人(或明或暗)早就投入另一个新项目的怀抱了,更不可能有余力进行项目结项。

项目后期的普遍状况是:人员就算尚未作鸟兽散,但对此即将结束的项目也渐无心力,项目经理的影响力也急速缩减。这是业界的常事,甚至老板可能就是将人力提早抽到新项目的‘凶手’。在这个状况下,项目经理只能从两方面完成项目结项的工作:

在项目执行期间,制定流程,并使用自动化工具,将项目开发的轨迹(包含程序、文件、bug管理、issue管理、变更管理等)记录下来,并定期备份。
明确规定执行项目结项流程的起讫时间,最好不超过一周,并与项目成员的部门主管以及现任的项目经理沟通与协调,请这些同事们在某段时间内帮这个项目最后的忙,只要项目结项流程的时间明确,大部分主管与员工应该都会乐意帮忙。
项目结项除了整理项目执行期间的所有资料之外,最好还能聚集重要的项目相关人员,在轻松的气氛下,对此项目从头至尾进行检查,并留下宝贵记录。

2-3-5 项目管理九大知识体系

我们已经谈了项目生命周期的启动与结项阶段,接下来,将正式进入与工程人员有直接关系的规划、执行及监督阶段。这些阶段的工作可以画分为9大类,称为PMP的9大知识体系,其中与工程人员较有关系的则有7项:范围(Scope)、时间/进度(Time/Schedule)、成本(Cost)、质量(Quality)、人力资源(Human Resource)、沟通(Communication)和风险(Risk),这也是以下课程的重点。

时间: 2024-09-23 06:22:39

《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-03项目生命周期五大阶段的相关文章

《 嵌入式系统设计与实践》一一1.2 嵌入式系统开发

1.2 嵌入式系统开发嵌入式系统是特殊的,因此也给开发者带来一些特殊的挑战.许多嵌入式软件工程师开发了工具箱来处理各种约束.在我们开始构建自己的系统之前,先来看看开发一个嵌入式系统会有哪些困难.在熟悉了嵌入式系统开发会如何受到限制之后,我们再开始讨论一些设计原则并借此指导我们找到更好的解决方案.1.2.1 调试如果在计算机上运行调试软件,就可以在这台计算机上编译和调试.系统有足够的资源在运行程序的同时调试程序.事实上,硬件根本不知道是在调试程序,因为这是由软件完成的.嵌入式系统就不是这样了.除了

《嵌入式 Linux C 语言应用程序设计(修订版)》——1.5 嵌入式系统开发概述

1.5 嵌入式系统开发概述 嵌入式 Linux C 语言应用程序设计(修订版) 1.5.1 嵌入式系统开发流程 嵌入式系统的开发流程与通用系统的开发流程有较大的区别,其设计流程如图1.15所示. 下面对系统各个模块进行简要说明. 系统需求分析:根据需求,确定设计任务和设计目标,制定设计说明书. 体系结构设计:描述系统如何实现所述的功能需求,包括对硬件.软件和执行装置的功能划分以及系统的软件.硬件选型等. 硬件/软件协同设计:基于体系结构的设计结果,对系统的硬件.软件进行详细设计.一般情况下嵌入式

《嵌入式 Linux C 语言应用程序设计(修订版)》一1.5 嵌入式系统开发概述

1.5 嵌入式系统开发概述 嵌入式 Linux C 语言应用程序设计(修订版) 1.5.1 嵌入式系统开发流程 嵌入式系统的开发流程与通用系统的开发流程有较大的区别,其设计流程如图1.15所示. 图1.15 嵌入式系统的开发流程 下面对系统各个模块进行简要说明. 系统需求分析:根据需求,确定设计任务和设计目标,制定设计说明书. 体系结构设计:描述系统如何实现所述的功能需求,包括对硬件.软件和执行装置的功能划分以及系统的软件.硬件选型等. 硬件/软件协同设计:基于体系结构的设计结果,对系统的硬件.

从“绑好鞋带”谈嵌入式系统开发

曾收到别人寄来的一则网路连结,是连结到TED (Technology, Entertainment & Design)网站上一则2005年TED大会中的演讲影片[注一],影片内容是告诉我们该如何把鞋带「确实」绑好. 这则影片很值得一看,从脸书( Facebook )上围绕着这则影片所作的诸多讨论看来,似乎大多数人习以为常的绑鞋带方法都错了.老实说,我曾经试着用影片中介绍的那套「正确方法」来绑鞋带,结果证明真的有非常显著的改善.试着改用这套「正确方法」来绑鞋带,的确可以让绑好的鞋带看起来比较美观,

车载嵌入式系统开发的新解决方案

尽管汽车产量可能会在未来的几年增长缓慢,但嵌入式电子设备和更精确的嵌入式软件这一部分的产量正在增长.找出车载嵌入式系统开发的新解决方案是法国EEA(嵌入式电子架构)合作研究和开发计划 "AEE"的目标.其获得的成果有:嵌入式组件级别的识别.一类嵌入式架构的详细说明,并且定义了一种陈述性语言. 现在,嵌入于汽车内的功能包括辅助制动.主动悬架.转向功能性等.它们都受严格的时间约束,更笼统地说,是受可靠性的约束.在不远的未来,随着电控X (X-by-Wire)技术的普及,这些约束会变得更加重

Python在实时嵌入式系统开发中扮演的五个主要角色

Python已经成为相当热门的程序语言.它以着名的Monty Python喜剧组命名,属于面向对象和解释型语言(非编译型).该属性使得Python具有良好的跨平台性,比如Linux和Windows,或是诸如Raspberry Pi等单板计算机.随着Python的日益普及,人们可能会问,在实时嵌入式系统中是否也有Python的一席之地. 答案是肯定的.下面是开发人员发现Python在实时嵌入式系统开发中有可能扮演的五个主要角色. 作用# 1设备调试和控制 在嵌入式软件开发过程中,开发人员常常需要分

《stm32嵌入式系统开发实战指南》一2.2 主要板载资源

2.2 主要板载资源 本节介绍STM32F107微控制器的主要片内外设,着重介绍10/100M以太网接口.CAN总线接口和RS485总线接口. 2.2.1 10/100M以太网接口 1.功能介绍 STM32F107的以太网模块支持通过以太网收发数据,符合IEEE 802.3-2002标准.STM32F107以太网模块灵活可调,能适应各种不同客户的需求.该模块支持两种标准接口连接到外接的物理层(PHY)模块:IEEE 802.3协议定义的独立于介质的接口(MII)和简化的独立于介质的接口(RMII

《stm32嵌入式系统开发实战指南》一1.2 Cortex内核系列处理器技术特点

1.2 Cortex内核系列处理器技术特点 1.2.1 ARM Cortex-M系列处理器 ARM Cortex-M3是一种基于ARMv7体系结构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(与冯?诺依曼结构的数据和指令共用一条总线相比,双总线架构使吞吐量得到有效提升).除了使用哈佛结构,Cortex-M3 还具有其他显著的优点:具有更小的基础内核.价格更低.速度更快.与内核集成在一起的是一些系统外设,如中断控制器.总线矩阵.调试功能模块,而这些外设通常都是由芯片制造商增加的

《stm32嵌入式系统开发实战指南》一2.3 硬件设计要点

2.3 硬件设计要点 本节以电路的电磁兼容设计为出发点,简要介绍在硬件开发工程中的注意事项和要点,并讲述了板级电路的信号完整性设计.电源完整性设计一般原则. 2.3.1 电磁兼容问题 电磁兼容性是电子设备或系统的主要性能之一,电磁兼容设计是实现设备或系统规定功能.使系统效能得以充分发挥的重要保证.设计人员必须在设备或系统功能设计的同时进行电磁兼容设计,充分考虑系统.分系统与周围环境之间的相互骚扰. 电磁兼容设计的目的是使所设计的电子设备或系统在预期的电磁环境中实现电磁兼容.最终的设备或系统应能在