软件项目管理百科搜搜钢

[ 1516 查看 / 0 回复 ]

软件项目管理的概述   所谓软件项目管理就是为了使软件项目可以依照预约的本钱、进度、质量顺遂实现,而对人员(People)、产品(Pwanduct)、过程(Process)和项目(Project)进行分析和管理的活动。软件项目管理先于任何技术活动之前开端,并且贯串于软件的全部性命周期。   软件项目管理的基本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、保护全过程)都能在管理者的控制之下,以预定成本定期,按质的完成软件交付用户使用。而研究软件项目管理为了从已有的成功或失败的案例中总结出能够领导此后开发的通用原则,方法,同时防止前人的失误。   软件项目管理的提出是在20世纪70年月中期的美国,那时美国国防部专门研究了软件开发不能按时提交,估算超支和质量达不到用户要求的原因,结果发现70%的项目是因为管理不善引起的,而非技术起因。于是软件开发者开始逐步器重起软件开发中的各项管理。到了20世纪90年代中期,软件研发项目管理不善的问题仍旧存在。据美国软件工程实施近况的考察,软件研发的情况仍旧很难预测,大概只有10%的项目能够在预定的费用和进度下交付。   1995年,据统计,美国共撤消了810亿美元的贸易软件项目,个中31%的项目未做完就被取消,53%的软件项目进度平日要延长50%的时间,只有9%的软件项目能够及时交付并且费用也控制在预算之内。 [编辑]软件项目的计划   软件项目计划是一个软件项目进入系统实施的启动阶段,主要进行的工作包括:断定详细的项目实施范围、定义递交的工作结果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预合计划、人力资源计划等。   软件项目管理过程从项目计划活动开始,而第一项计划活动就是估算:需要多长时间、需要几何工作量、以及需要几多人员。此外,我们还必需估算所需要的资源(硬件及软件)和可能波及到的风险。   为了估算软件项目的工作量和完成刻日,首先需要预测软件规模。器度软件规模的常用方法有直接的方法――LOC(代码行),间接的方法――FP(功效点)。这两种方法各有优毛病,钢管重量表,应该根据软件项目的特点抉择实用的软件规模襟怀方法。   根据项目的规模可以估算出完成项目所需的工作量,我们可以使用一种或多种技术进行估算,这些技术主要分为两大类:分解和经验建模。分解技术需要划分出主要的软件功能,接着估算实现每一个功能所需的程序规模某人月数。教训技术的使用是根据经验导出的公式来预测工作量和时间。可以使用主动工具来实现某一特定的经验模子。   精确的项目估算一般至少会用到上述技术中的两种。通过比拟和调和使用不同技术导出的估算值,我们可能得到更精确的估算。软件项目估算永远不会是一门精确的迷信,但将杰出的汗青数据与系统化的技术结合起来能够提高估算的准确度。   当对软件项目赐与较高盼望时,一般城市进行风险分析。在标识、分析和管理风险上消费的时间和人力可以从多个方面得到回报:加倍安稳的项目进展过程;更高的跟踪和控制项目的能力;因为在问题发生之前已经做了周到计划而产生的信念。   对于一个项目管理者,他的目标是定义所有的项目任务,识别出关键任务,跟踪关键任务的进展情况,以保证能够及时发现迁延进度的情况。为此,项目管理者必须制定一个足够详细的进度表,以便监督项目进度并控制整个项目。   常用的制定进度计划的工具主要有Gantt图和工程网络两种。Gantt图存在长久历史、直不雅扼要、容易进修、容易绘制等长处,但是,它不能显著地表示各项任务彼此间的依赖关系,也不能显明地表示关键路径和关键任务,进度计划中的关键部门不明确。因此,在管理大型软件项目时,仅用Gantt图是不敷的,不仅难于做出既节俭资源又保证进度的计划,而且还容易产生错误。   工程网络不仅能刻画任务分化情况及每项功课的开始时间和停止时间,并且还能明白地表现各个作业彼此间的依附关系。从工程网络图中轻易辨认出要害门路和症结任务。因而,工程网络图是制订进度计划的强有力的工具。凡是,结合使用Gantt图和工程收集这两种工具来制定和管理进度计划,使它们互相弥补、扬长避短。   进度部署是软件项目规划的首要义务,而项目d0wronginga908865d318185eba90c5ef93d4则是软件项目管理的重要组成局部。与估算方法微风险分析相联合,进度支配将为项目管理者建立起一张打算图。 [编辑]软件项目的控制   对于软件开发项目而言,控制是非常重要的管理活动。下面先容软件工程控制活动中的质量保证和配置管理。实在上面所提到的风险分析也可以算是软件工程控制活动的一类。而进度跟踪则起到衔接软件项目计划和控制的作用。   软件质量保证(SQA,Softwarrede Quality Insurance)是在软件过程中的每一步都进行的“维护性活动”。SQA主要有基于非执行的测试(也称为评审)、基于执行的测试(即平常所说的测试)和程序准确性证实。   软件评审是最为主要的SQA活动之一。它的感化是,在发现及矫正错误的成原形对较小时就实时发现并消除毛病。审查和走查是进行正式技术评审的两类详细方法。审查过程不仅步数比走审多,而且每个步调都是正规的。因为在开发大型软件过程中所犯的错误尽大数是规格阐明错误或设计错误,而正式的技术评审发现这两类错误的有效性高达75%,因此是十分有效的软件质量保证方法。   软件配置管理(SCM,Software configuallowancing|budgeting treatment)是应用于整个软件过程中的掩护性活动,它是在软件整个生命周期内管理变化的一组活动。   软件配置由一组彼此关系的对象组成,这些对象也称为软件配置项,它们是作为某些软件工程活动的成果而发生的。除了文档、程序和数据这些软件配置项之外,用于开发软件的开发情况也可置于配置掌握之下。一旦一个配置对象已被开发出来而且经由过程了评审,它就酿成了基线。对基线对象的修改导致树立该对象的版本。版本控制是用于管理这些对象而应用的一组规程和东西。   变革把持是一种规程运动,它可能在对设置装备摆设对象进行修正时保障品质跟一致性。配置审计是一项软件质量保证活动,它有助于确保在进行修改时依然坚持质量。状况讲演向须要晓得对于变化的信息的人,供给有关每项变更的信息。 [编辑]软件项目管理的特征   软件项目管理和其余的项目管理比拟有相称的特别性。起首,软件是纯常识产物,其开发进度和质量很难估量和2amattresses4bc4729d2e8b8ba6fb8142844be,出产效力也难以猜测和保证。其次,软件系统的庞杂性也导致了开发进程中各类危险的难以预感和节制。Windows这样的操纵系统有1500万行以上的代码,同时稀有千个法式员在进行开发,无缝管理论重量表,项目司理都有上百个。如许宏大的系统假如不很好的管理,其软件质量是eb7bc3de75671303645ebbing2627c38149的。 [编纂]软件项目管理的组织模式   软件项目可所以一个独自的开发项目,也可以与产品项目组成一个完全的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。公司履行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。   1、项目管理委员会项目管理委员会是公司项目管理的最高决策机构,普通由公司总经理、副总经理组成。主要职责如下:   (1)按照项目管理相关制度管理项目;   (2)监督项目管理相关轨制的履行;   (3)对项目破项、项目取消进行决议;   (4)录用项目管理小组组长、项目评审委员会主任、项目组组长.   2、项目管理小组项目管理小组对项目管理委员会负责,正常由公司管理人员组成。主要职责如下:   (1)起草项目管理的各项制度;   (2)组织项目阶段评审;   (3)保留项目过程中的相干文件和数据;   (4)为优化名目治理提出倡议。   3、项目评审小组项目评审小组对项目管理委员会负责,可下设开发评审小组和产批评审小组,个别由公司技巧专家和市场专家构成。重要职责如下:   (1)对项目可行性呈文进行评审;   (2)对市场计划和阶段报告进行评审;   (3)对开发计划和阶段报告进行评审;   (4)项目结束时,对项目总结报告进行评审。   4、软件产品项目组软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分辨设开发经理和产品经理。成员一般由公司技术人员和市场人员形成。主要职责是:根据项目管理委员会的支配具体负责项目的软件开发和市场调研及发卖工作。 [编辑]软件项目管理的内容   软件项目管理的内容主要包含如下几个方面:人员的组织与管理,软件器量,软件项目计划,风险管理,软件质量保证,软件过程能力评估,软件配置管理等。   这几个方面都是贯穿、交错于整个软件开发过程中的,此中人员的组织与管理把留神力集中在项目组人员的构成、优化;软件度量把存眷用量化的方法评测软件开发中的用度、生产率、进度和产品德量等要素是否契合冀望值,包括过程度量和产品度量两个方面;软件项目计划主要包括工作量、成本、开发时间的估计,并根据估计值制定和调整项目组的工作;风险管理预测将来可能呈现的各种迫害到软件产品质量的潜伏身分并由此采取措施进行防备;质量保证是保证产品和办事充分满意花费者要求的质量而进行的有计划,有组织的活动;软件过程能力评估是对软件开发能力的高下进行权衡;软件配置管理针对开发过程中人员、工具的配置、使用提出管理策略。由于大家对人力资源管理和软件过程能力比较有兴致,下面就具体的对这两方面开展探讨。   从软件工程的角度讲,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、装置及维护阶段。不管是作坊式开发,仍是团队合作开发,这六个阶段都是不行缺乏的。根据公司现实情况,公司在进行软件项目管理时,重点将软件配置管理、项目跟踪和控制管理、软件风险管理及项目谋划活动管理四方面内容导入软件开发的整个阶段。在20世纪80年代初,有名软件工程专家B.W.Boehm总结出了软件开发时需遵循的七条根本原则,同样,在进行软件项目管理时,也应该遵守这七条原则。它们是: 用分阶段的生命周期计划严格管理; 保持进行阶段评审; 实施严格的产品控制; 采取古代程序设计技术; 结果应能够清楚地审查; 开发小组地人员应该少而精; 否认精益求精软件工程实际的需要性。 [编辑]软件项目管理的成功原则 1、平衡原则   在我们讨论软件项目为什么会失败时可以列出了很多的原因,谜底有很多,如管理问题、技术问题、人员问题等等,但是有一个根本的思维问题是最容易疏忽的,也是软件系统的用户、软件开发商、销售署理商最不想正视的,那就是:需求、资源、工期、质量四个要素之间的平衡关系问题。   需求定义了“做什么”,定义了系统的范围与规模,资源决议了项目的投入(人、财、物),工期定义了项目的交付日期,质量界说了做出的系统好到什么水平,这四个要素之间是有制约平衡关系的。如果需求范围很大,要在较少的资源投入下,很短的工期内,很高的质量要求来完成某个项目,那是不事实的,要么需要增添投资,要么工程延期;如果需求界定清楚了,资源固定了,对系统的质量要求很高,则可能需求延伸工期。   对于上述四个要素之间的平衡关系最容易犯的一个过错,就是宣传“多快好省”四个字,“多快好省”,如许理想的境界啊?需求越多越好,工期越短越好,质量越高越好,投入越少越好,这是用户最常用的标语。   (1)多:需求越多越好吗?   软件系统实施的d1c73fefc8a9ababying98e1d583df24abb原则是“全局计划,分步实施,步步奏效”,需求可以多,然而需要必定要分优先级,要分清企业内的主要抵触与次要矛盾,根据PARETO的80-20准则,企业中的80%的问题能够用20%的投资来解决,如果你要大而全,对不起,你那20%的次要问题是需要你破费80%的投资的!而这一点恰好是良多软件用户所不能忍耐的。   (2)快:真能快起来吗?   “快”是用户、软件开发商都生机的。传统企业里强调资金的周转情况,软件企业里强调的是人员的周转情况,开发人员应尽快做完一个项目再做别的一个项目,通过疾速的启动项目、结束项目来承当更多的项目,来获利。但是"快"不是主观的拍脑壳定工期就可以完成的,工期的定义一定要基于资源的状态、需求的几许与质量的需求来进行推算的。软件究竟需要一行代码一行代码的写出来,他的工作量是客观的,并非? quot;人有多勇敢,地有多大产"式的精神煽动就可以短期完成的。   (3)省:省到什么程度?   “一分钱一分货”,这是中国的俗话,他是合乎价值法则的。甲方愿望少投入,乙方盼望下降本人的生产成本,省到乙方仅能保本的时辰,再省,乙方就吃亏了。   重视这四个因素之间的均衡关联是软件用户、开辟商、代办商成熟理智的表示,不然体系的胜利就1d2edb36928ae3875bfcdee4f27dads5c了一块最坚实的理念基本。   企业实施IT系统的首要目标是要成功,而不是失败,企业可以容忍小的成功,但纷歧定容忍小的失败,所以需要真正理解上述四个要素的平衡关系,确保项目的成功。 2、高效原则   在需求、资本、工期、质量四个要素中,许多的项目决策者是将进度放在首位的,当初市场的竞争越来越剧烈,"产品早上市一天,就早挣一天钱,挣的就比花的多,所以一定要多挣",基于这样一个理念,软件开发越来越寻求开发效率,大师从技术、对象、管理上追求更多更好的解决之道。   基于高效的原则,对项目的管理需要从几个方面来考虑: 要取舍精英成员 目标要明确,规模要清晰 沟通要及时、充足 要在鼓励成员高低功夫 3、分解原则   “化繁为简,各个击破”是自古以来解决复杂问题的不贰秘诀,对于软件项目来讲,可以将将大的项目划分成几个小项目来做,将周期长的项目化分成多少个明白的阶段。   项目越大对项目组的管理人员、开发人员的要求越高,参加的人员越多,需要协调沟通的渠道越多,周期越长,开发人员也容易疲惫,将大项目拆分成几个小项目,可以降低对项目管理人员的要求,减少项目的管理风险,而且能够充分地将项目管理的权利下放,充分调动听员的踊跃性,目标会比较具体明确,易于获得阶段性的成果,无缝钢管价格,使开发人员有成绩感。   作者主管过的一个产品开发项目代号为SB,该项今朝期投入了5人做需求,时间达3个多月,进入开发阶段后,投入了15人,时间达10个月之久,陆续进行了3次关闭开发,在此过程中阅历了需求的裁剪、开发人员的变更、技术路线的调剂,项目组成员的压力极大,人人疲乏不胜,产品上市时间拖期达4个月。项目竣工后总结下来的很致命的一个教训就是应该将该项目拆成3个小的项目来做,进行阶段性版本化宣布,以缓解市场上的压力,削减项目组成员的挫折感,进步大家的士气。 4、实时控制原则   在一家大型的软件公司中,有一位很有个性的项目经理,该项目经理很少谈起什么管理实践,也未见其有什么明显的管理措施,但是他持续做成多个规模很大的软件项目,而且应用后果很好。作者始终很奇异他为什么能做的如斯成功,经由细心察看,终于发现他的管理可以用"紧盯"2字来归纳综合,即每天他都要仔细检查项目组每个成员的工作,从软件演示到内部的处置逻辑、数据构造等,精打细算,如果有问题,改不完是不能去歇息的。恰是在他这种简单的措施下,支持他完成了很多大的项目,当然他也是相称的辛劳,每每都是在清晨才去休息。我们并非要推重这种做法,这种措施也有他的问题,但是,这种实践却解释了一个很朴素的情理:如果你没有更好的措施,就要辛苦一点,实时控制项目的进展,要将项目的进展情况完整的实时的置于你的控制之下。   上述的办法中对项目经理的小我才能、就义精力请求是很高,咱们需要有一种进行及时控制项目进度的机制,依附一套标准的过程来保证明时监控项目的进度。如在微软的管理策略中夸大逐日构建,这确切是是一种不错的方法,即天天要进行一次系统的编译链接,通过编译链接来检讨进度、检查接口、发明进展中的问题、各人相互激励互相监视。   实时控制确保项目经理能够及时发现问题、解决问题,保证项目具备很高的可见度,保证项目的畸形进展。 5、分类管理原则   对不同的软件项目其项目目的差别很大,项目范围也是不同的,利用范畴是不同的,采用的技术路线差异也很年夜,因此,针对每个项目的不同b3902bbe1362317ee135joined8a00196ed,其管理的方式、管理的着重点应当是不同的。就像前人讲的,"因材施教","5f6a391f4f5f1af51b7f489fare9f9eba"。对于小项目你确定不克不及象管理大项目那样去做,对于产品开发类的项目,你也不成能象管理系统集成类的项目那样往做,项目经理需要依据项目的特点,制订分歧的项目管理的方针政策。如,下表是作者为一家运用软件公司制定的项目管理的方针:   在该案例中,将项目分成了订单类项目与非订单类项目,非订单类项目是指由公司根据市场的需求开发一个尺度产品的项目,而订单类是指针对某个详细的客户定制软件的项目,订单类的项目根据需要和谐的资源的范畴有划分成了公司级、部分级、个人级三类,非订单类根据估算的工作量的巨细也分成了A、B、C三类,估算的工作量超过720人天的为A类,跨越360人天的为B类,360人天以下的为C类。不同类的项目管理的侧重点是不同的,从立项手续的齐备性、筹划的严厉层度、周报的完备层度、规范的严格层度、跟踪的实时性、是否进行阶段总结、是否核算项目成本、是否严格进行阶段评审等多个方面来斟酌,以确保存理的可行性。 6、简单有效原则   项目经理在进行项目管理的过程中,往往会获得开发人员这样的埋怨"太麻烦了,挥霍时光,没有用途 ",这是很广泛的一种景象。当然这样的抱怨要从2个方面来剖析,一方面从开发职员自身可能存在不懂得,或者逆反心理的情形,另一方面,项目经理也要反思:我所采用的管理办法是否简略有效?搞管理不是搞学术研讨,没有完善的管理,只有有用的管理,而项目经理往往试图堵居处有的破绽,解决所有的题目,偏偏是这种幻想,会使项目标管理陷cabbingf3c7cf81c873db5a0fed23c0f6e7f一个误区,作茧自缚,最后无奈实行有效的管理,导致项目的掉败。 7、规模控制原则   该原则是和上面提到的其他原则相共同使用的,即要控制项目组的规模,不要人数太多,人数多了,进行沟通的渠道就多了,管理的复杂度就高了,对项目经理的要求也就高了。在微软的MSF中,有一个很明确的原则就是要控制项目组的人数不要超过10人,当然这不是相对的,也和项目经理的程度有很大关系。但是人员"贵精而不贵多",这是一个基本的原则,这和我们上面提到的高效原则、分解原则是相辅相成的。
分享 转发
TOP