软件开发过程与质量保证-2-项目管理2009

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SoftwareEngineering软件开发过程与质量保证第二章软件项目管理软件工程项目管理的任务项目计划和进度安排质量管理组织管理风险管理配置管理本章内容场景互动如果现在公司请你接手一个项目,你如何组织项目的实施过程?有哪些方面的事情需要考虑?一、软件项目管理的任务什么是软件项目管理为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。软件项目管理的对象是软件工程项目,它所涉及的范围覆盖了整个软件工程过程。软件项目管理的任务制定项目计划和工程进度安排监督和检查项目实施过程保证工程满足要求的质量标准分析确定并排除风险在规定的期限和预算成本内完成项目二、项目计划项目计划是一个软件项目进入系统实施的启动阶段项目计划是一个反复的过程,只有当项目完成时计划才告一段落。项目计划中包含的内容项目划分的各个实施阶段每个阶段的工作重点和任务是什么完成本阶段工作和任务的人力、资源需求,时间期限阶段工作和任务的成果形式项目实施过程中对风险、疑难、其他不可预见因素等的处理机制各任务组及开发人员之间的组织、协调关系等。检查点CheckPoint在规定的时间间隔内对项目进行的检查与复审工作频度不能太高或太低,一般一周一次目的•比较实际进展与计划进度的差异,并对项目进行调整如:周报、周例会学生例:每周的班会、测验、月考等项目的里程碑一个项目里程碑就是一个软件过程活动的终结。在每个里程碑都应该有一个正式的可以提交给管理层的输出结果。里程碑应代表该项目的一个特定的逻辑意义上的阶段的终结。里程碑的两个必要特征:•与软件开发进展相关联;•在完成时必须非常明显。1.常用概念基线基线其实是一些重要的里程碑(产物)交付产品通过正式评审后才能成为基线基线一旦建立后,任何更改都要受到控制(基线之前的更改可以没有严格控制)学生例:小考、中考、高考(成绩经主管部门评审后,变更受控)2.项目进度项目进度管理人员必须估算完成各项活动所需要的时间和资源,并按照一定的顺序把他们紧密组织起来。项目进度安排通常是将复杂的整体项目分解成许多可以准确描述、度量、可独立操作的相对简单的任务,然后安排这些任务的执行顺序,确定每个任务的完成期限、开始时间和结束时间。需要考虑的主要问题生存周期各个阶段工作量的划分工程进展如何度量项目的关键路径各个阶段任务完成标志如何自然过渡到下一阶段的任务等。项目可以支配的人力及资源2.1工作分解工作分解的原因可以根据细分的工作包之间的逻辑关系来实施项目让项目组各个成员明确自己的职责,减少繁琐的协调每个组员可以清晰地理解任务的性质和各自的目标准确把握项目所需要的技术、人力、资金、风险,为项目计划提供基线分解的方法自上而下的分解工作任务,即工作包,是项目中最小的可控制单元2.1工作分解工作分解和进度管理正常情况,各活动应至少持续1周;对所有活动安排一个最高的时间限制(8~10周左右),如一项活动持续时间超过限制,就应该再次细分;估算进度时,管理者不能想当然认为项目的每个阶段都不会出问题;除时间外,还必须估算完成每项任务所需的资源:人力资源和其他可能的资源。项目可交付的成果可交付的子成果最低层的可交付子成果工作任务工作分解结构的一个例子东软三期公寓项目(1000)主体工程(1100)内外装修(1200)配套设施(1300)物业管理(1400)地基(1110)框架(1120)给排水(1310)电气(1320)煤气(1330)供水系统(1311)排水系统(1312)2.2进度管理工具进度管理工具项目进度通常用一系列的图表表示,通过这些图表可以了解任务分解、活动依赖关系和人员分配情况。常用的项目进度表示法甘特图(Gantt)活动网络图(PERT)常用软件管理工具软件MS-Project甘特图特点•形象地描绘了任务的分解,及每个作业的开始和结束时间,优点是直观简明、容易掌握和绘制•线段的水平线表示完成任务所需的时间优点•表明了各任务的计划进度和当前进度,能动态反应项目的进展情况。缺点•难以反映多个任务之间的复杂逻辑关系。甘特图实例任务列表进度条日期PERT图对于某事件,箭头进入表示此作业结束,箭头离开表示此作业的开始;实线箭头表示具体存在的作业;虚线箭头表示虚拟作业,只为了表示作业之间的依赖关系。1235468791011刮1刮2刮3刮4刷1刷2刷3刷4清1清2清3清41100222612121021211123235811366466815157121891520242436362120000(0)(0)(1)(0)(3)(4)(0)(11)(0)(6)(5)(3)(5)(0)(0)1100100222222612126121210212110212111232311232358115811366366466466815158151571218712189152091520242436362120000(0)(0)(1)(0)(3)(4)(0)(11)(0)(6)(5)(3)(5)(0)(0)持续时间(机动时间)EETLET事件号持续时间(机动时间)EETLET事件号三、质量管理背景质量是产品的生命线,不论任何产品,质量都是极端重要的。软件产品开发周期长,需耗费巨大的人力、物力,更必须特别注意保证产品质量。软件质量定义软件与明确的和隐含定义的需求相一致的程度•与明确描述的功能和性能需求相一致的程度•与文档中明确描述的开发标准相一致的程度•与任何专业开发的软件产品都应该具有的隐含特征相一致的程度事后检验事后检验的方式是在产品生产的最后环节进行质量检查,合格的产品准许出厂,不合格的产品作为次品处理。全面质量管理运用质量管理的科学理论、技术、方法,建立起贯穿于产品质量形成全过程的质量保证体系,使企业全体职工树立质量观点,提高工作质量,经济地生产用户满意的产品。它要求从影响软件产品质量的各个方面加强对软件质量的全面管理。权威认证认证已经成为一个组织资质的证明,也成为买方选择合格供应方的首要考虑。例如,CMM认证和ISO9000认证3.1软件质量管理种类软件质量与软件的内部特性及其组合有关。要度量软件质量,就应根据这些内部特性(即软件属性)建立起软件度量模型,进而构建软件质量度量体系。3.2软件质量模型产品修改产品转移产品运行可理解性可维护性灵活性可测试性可移植性可重用性互运行性轻便性正确性、健壮性、效率、完整性、可用性、风险从管理角度对软件质量进行度量的McCall软件质量模型上述模型反映了用户在使用软件产品时的三种不同的倾向:产品运行、产品修改和产品转移。软件质量的属性产品运行时的属性•正确性–系统满足规格说明和用户目标的程度,在预定环境下能正确完成预期功能的程度。•健壮性–在硬件发生故障、输入数据无效、操作错误等意外环境下,系统能做出适当响应的程度。•效率–为了完成预定功能,系统需要的计算资源的多少。•完整性–对未经授权的软件使用请求或数据访问的企图,系统能够控制(或禁止)的程度。•可用性–系统在完成预定功能时令用户满意的程度。•风险–按预定的成本和进度开发系统,并且使得用户满意的概率产品修改时的质量属性•可理解性–理解和使用软件的容易程度。•可维护性–诊断和改正在运行现场发现的错误所需要的工作量大小。•适应性–修改或改进正在运行的系统需要的工作量大小•可测试性–软件容易测试的程度。产品转移时的质量属性•可移植性–把软件从一软硬件环境移植到另一配置环境时,需要的工作量大小。•可重用性–在其他应用中该软件可以被使用的程度或范围。•互运行性–把该软件系统和另一软件系统结合起来所需要的工作量大小。•轻便性–允许软件能够从一台计算机很容易地传输到另一台需要运行的计算机上的能力。四、组织管理人员是软件机构中最重要的资产,他们代表着智力资本。合理地调配人员是成功完成软件项目的切实保证。因此软件项目管理的关键是人员管理。项目管理者必须利用其团队成员,用可能最有效的方式解决技术和非技术上的问题。软件机构要尊重员工,管理者要激励员工。软件项目成功的关键是能够将高素质的软件开发人员合理地组织起来,使他们有效地分工协作,共同完成开发工作。项目组的组织原则软件开发小组的规模不宜太大,人数不能太多,一般3-5人左右为宜。切忌在开发过程中增加人员,这将使人员之间的联系增多,造成通信成本的增加而导致效率降低。项目组的组织方式民主制程序员组主程序员组现代程序员组民主程序员组小组成员完全平等,享有充分民主,通过协商做出决策。小组成员之间的通讯是平行的,如果小组有n个成员,则可能的通讯信道为条。民主制程序员组通常采用非正式的组织方式,虽然名义上有一个组长,但其与组内其它成员完成同样的任务。由小组全体成员讨论协商决定应该完成的工作,并依据各成员能力和经验分配适当的任务。n(n-1)/2优点:组员对发现程序错误持积极的态度,这种态度有助于更快地发现错误,从而导致高质量的代码;组员享有充分民主,小组有高度凝聚力,组内学习气氛浓厚,有利于攻克技术难关。缺点在组内多数成员技术水平不高或缺乏经验情况下采用该组织方式,将会因为没有明确的权威指导项目进展,小组成员间缺乏必要的协调,而导致项目失败。应用适合于研制周期长、难度大的项目。日本大多数软件开发公司都采用这种形式。主程序员组主程序员组使用经验丰富、技术好、能力强的程序员作为主程序员。同时,利用人和计算机在事务性工作方面给主程序员提供充分支持,而且保证所有通讯都通过一两个人进行。后备程序员后备程序员也应该技术熟练而且富于经验,他协助主程序员工作并且在必要时(主程序员生病、出差或跳槽)接替主程序员的工作。所以后备程序员必须和主程序一样优秀,一样深入了解项目。主程序员主程序员既是成功的管理人员,又是经验丰富、技术好、能力强的高级程序员,负责体系结构设计和关键部分的详细设计,并且负责指导其他程序员完成详细设计和编码工作编程秘书编程秘书负责完成与项目有关的全部事务性工作,如,维护项目资料库和项目文档,编译、连接、执行源程序和测试用例。虽然主程序员组有很多优点,但是,我们还应看到这种组织方式固有的不切实际的地方:主程序员既是高级程序员又是优秀管理者,但现实中这种人才很难见到。后备程序员更难找。人们希望后备程序员像主程序员一样优秀,但他们必须坐在“替补席”上,拿着较低的工资等待接替主程序员。编程秘书也很难找。专业的软件技术人员一般都厌烦日常的事务性工作。现代程序员组特点•将“主程序员组”中的主程序员的职则划为两个人来承担:–一个技术负责人,负责小组的技术活动–一个行政负责人,负责所有的非技术的决策活动现代程序员组大型项目的技术管理组织结构现代程序员组包含分散决策的组织方式现代程序员组优点•将管理和行政分开,有助于调动组员的积极性•行政组长和技术组长分工明确•避免了“主程序员组”中,全才主程序员难找的问题缺点•有时行政组长和技术组长的管理权限界限不明选择软件工程小组结构时应考虑的7个因素待解决问题的困难程度要开发程序的规模小组成员在一起工作的时间问题能够被模块化的程度对待开发的系统的质量和可靠性的要求交付日期的严格程度项目要求的社交(通信)程度软件企业的组织架构董事会总经理总工程师(副总)副总经理软件开发部软件测试部质量管理部项目组1项目组N市场部销售部财务部人力资源部实现阶段构成阶段立项阶段需求分析阶段需求分析师项目经理系统架构设计师软件架构设计师数据库设计师软件界面设计师网络架构设计师系统分析师软件开发工程师编码程序员网络工程师软件测试工程师质量保障工程师产品发布工程师结束阶段项目经理软件企业的职位概况定义“风险”是指对项目有利或不利的不确定因素。分类按照风险的影响范围分类•项目风险:预算、进度、人力、资源

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功