您好,欢迎访问三七文档
软件开发规范培训蓝网技术2004.11王宁大纲什么是软件开发方法论成熟的软件开发方法蓝网的软件开发能力软件开发是什么?软件开发是一种艺术、工艺、科学、工程还是其他什么东西?这有什么意义吗?软件开发现状80%的软件项目以失败告终项目的最终交付时间=(工程师的估算×120%)×2目标——为什么一定要有方法?希望软件能尽快完成,尽可能的没有缺陷,并且找到一种方法来考察团队是如何工作的。不同的软件理念编程应该工程化:软件工程“以人为本”和“以沟通为中心”没有银弹任何技术都有局限性,不可能找到一种最好、最正确的软件开发方法。到实践中寻找20年成功的软件项目实践是检验真理的唯一标准分析提炼方法论方法论把这些方法论(methodology)的思想原理作为行为准则把追求具有普遍性的行为准则与“每个项目都是独一无二的”思想结合起来推出一套有效的和“自我演进(self-evolving)”的准则方法论和三个层次人们学习和掌握新技能要经历三个阶段:照猫画虎following(保持、遵守)突破框架detaching(有所创新)融会贯通fluent(超越)首先,根据写下的规则去做然后,调整规则并进行认证最后,不要关心你是在运用XP还是CMM方法论的要素过程里程碑活动质量团队产品技术角色工具标准技能个性团队价值取向检验方法论的7条原则原则1交互式、面对面的交流是费用最低、速度最快的信息交换方式原则2方法超重的后果是高昂的代价原则3更大的团队需要更重的一些方法原则4项目危险度越高对正规度的要求也越高原则5增加反馈和交流,减少对中间工件的需求原则6纪律、技能、理解与过程、形式、文档对立原则7从非瓶颈活动中求效率应用原则的结果推论1在项目中增加人手是代价高昂的推论2团队大小的增加有很大的跳跃性推论3团队应该被改进,而不是被扩大A.培训、学习,以提高他们的技能B.让他们坐的更近,以降低沟通成本C.改进他们的关系和加强团队精神D.用一些更有才能的人替换团队中的某些人推论4不同的项目需要不同的方法论推论5轻量级方法论更好,除非他们不够再用推论6方法论应该能够被缩放以适应不同情况软件开发的正规军CMMRational统一过程(RUP)敏捷软件开发(极限编程XP)软件生命周期模型瀑布模型(顺序开发)迭代模型(并行开发)大师的声音《软件开发的创新思维》交互设计《软件工艺》软件技术是门工艺特征概念极限编程(ExtremeProgramming):一种高度动态的软件开发过程,它通过非常短的迭代周期来应对需求的变化。能力成熟度模型(CMM):一个过程框架,对过程进行优化和评估。个体软件过程(PSP):是一个过程描述、测量和方法的结构化集合,能够帮助软件工程师来改善其个体性能。敏捷软件开发宣言我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,我们认为:个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划虽然右项也具有价值,但我们认为左项具有更大的价值。敏捷宣言遵循的原则最优先做的是通过尽早的、持续的交付有价值的软件来使客户满意。即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。经常性的交付可以工作的软件,交付的时间越短越好。在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。围绕被激励起来的个体来构建项目。给他们提供所需的项目环境和支持,并且信任他们能够完成工作。在团队内部,最有效果并且富有效率的传递信息的方法,就是面对面的交谈。工作的软件是首要的进度衡量的标准。敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。不断关注优秀的技能和好的设计会增强敏捷能力。简单是根本的。最好的构架、需求和设计出自于自组织的团队。每隔一段时间,团队会在如何才能更有效的工作方面进行反省,然后相应地对自己的行为进行调整。极限编程实践完整团队项目的所有参与者(开发人员、业务分析师、测试人员等)一起工作在一个开发的环境中,他们是同一个团队的成员。计划游戏计划是持续的、循序渐进的。每两周,开发人员就为下两周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。客户测试作为选择每个所期望特性的一部分,客户定义出自动验收测试来表明该特性可以工作。简单设计团队保持设计恰好和当前的系统功能相匹配,它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有的东西,并且包含尽可能少的代码。结对编程所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。测试驱动开发程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。改进设计随时改进糟糕的代码,保持代码尽可能的干净、具有表达力。持续集成团队总是使系统完整的被集成。集体代码所有权任何结对的程序员都可以在任何时候改进任何代码。编码标准系统中所有的代码看起来就好像是被单独一个非常胜任的人编写的。隐喻团队提出一个程序工作原理的公共景象。可持续的速度团队只有持久才有获胜的希望,他们以能够长期维持的速度努力工作。他们保持精力,他们把项目看作是马拉松长跑,而不是全速短跑。微软的产品团队原则小型并具有多功能的团队角色相互依赖并分担责任具有深厚的技术和商业敏锐性关注于完成产品有明确的工作目标用户积极参与共享产品远景人人参与设计努力从过去的产品中学习共享产品总体管理和决策所有团队成员都在一个地方工作大团队的工作方式类同于小团队微软软件开发的指导原则软件的开发过程是由目标驱动的,而不是由具体任务驱动的。开发过程的各个里程碑都是显而易见的。基于版本的发布。进度表是基于风险驱动来制订的。依靠完全的团队合作来完成。严格管理、保证质量。微软软件开发的过程原则在制订进度表时,要明白我们要面对的是一个不确定的未来。通过有效的风险管理使不确定性因素达到最少。定期的编译和快速的测试来使产品的稳定性和可用性达到最佳。产品的开发周期要快速。通过创造性来实现功能的改进而不增加资源。建立固定的进度表。使用小团队来并行工作,以达到最多的同步点。将一个大的产品分割成一些易于管理的、可以在几个月内完成发布的小的部分。要避免任何不必要的功能扩展。使用概念证明(Proof-of-concept)的技术原型来做开发前的测试。要本着零缺陷的态度。(注:一个软件产品不可能没有缺陷,零缺陷是指在发布时没有影响产品功能和使用的缺陷)在阶段回顾时要集中于功能和产品的改进,而不是挑任何人的过失。微软的产品开发团队产品管理团队1.清楚的知道用户的需求,并详细的给出定义2.确保新产品能给我们带来利润3.控制用户的期望值4.设计产品特性和进度表5.负责管理市场、推销以及公共关系项目管理团队1.操纵着产品的开发过程2.管理产品的细节3.促进团队内部的交流和商议4.保证产品的开发进度5.控制全局,并做出一些折中决定软件开发团队1.估计完成每一个功能所需要的时间和人力2.建立一个很好的开发数据库3.编码实现并建立功能4.为配置准备产品软件测试团队1.尽量找出所有的bug2.写出测试规范和测试计划华为的IPD-CMM流程规范IPD-CMMV3.0SCOPEIPD-CMMV3.0DesignFlow共13页第2页DesignspecificationS/WHLDH/WHLDIPDLLDLLDCodingCodingUTUTBuild1Build2Build3IPD-CMMSRSHLD(0-2)LLD(3)CodingUTITSTBBITSupportingTR3TR4TR2BBITBuild1Build3Build2华为的IPD-CMM流程规范软件开发的关键点人是决定成败的最关键因素(个人及团队)用户需求(用户代表为团队成员、隐喻)可短期完成的计划,明确的里程碑减少沟通成本(有效沟通、编码规范、文档规范)软件开发的关键过程需求(需求定义、需求跟踪)设计编码测试度量配置管理风险管理蓝网的软件开发流程SOWPPLSRS需求跟踪HLDLLDCODEUTITST配置管理风险管理度量工作任务书项目计划发布里程碑入口SOW工作任务书(StatementofWork)定义产品需求明确交付件里程碑质量目标验收标准PPL项目计划(ProjectPlan)选用生命周期模型组织与职责计划进度项目控制(报告机制)风险及规避里程碑明确的计划,阶段性的成就Peoplearemostproductiveworkinginsmallteamswithtightbudgets,timedeadlines,andthefreedomtosolvetheirownproblems.——比尔.盖茨V模型——开发和测试需求跟踪WhatWhyHow重方法:需求跟踪矩阵我们的方法:阶段会议、评审、检视、即时沟通配置管理配置管理的目的是通过控制产品的变更,来维护产品的完整性和统一性。配置库•开发库:开发人员的工作平台,保存自上个基线后到目前的工作。•基线库:保存基线,开发人员无权修改。•产品库:基线库的静态拷贝,用来存放对外发布版本。配置管理工具•CVS(WINCVS)CMO——配置管理员风险管理风险是尚未发生的问题,问题是业已成真的风险。风险管理的行为构成1.风险发现2.暴露分析3.应急计划4.风险缓解5.持续的转化监控我们的风险管理沟通:日志、例会、阶段会议计划指定风险跟踪人度量度量是对事物属性的量化表示;衡量软件过程质量;进行软件过程改进。我们需要进行的度量1.缺陷度量测试结果分析2.个人软件过程度量工作日志简单介绍:什么是PSP?质量保证质量保证的重要手段评审(阶段评审)检视(代码检视)PC-LINT统一的声音理念——来自实践术语——来自知识文档规范编码规范创建高绩效团队的5大要诀营造一种支持性的人力资源环境团队人员的自豪感让每一位成员的才能和角色相匹配设定具有挑战性的团队目标正确的绩效评估《水煮三国》软件开发的个人能力过程能力目标、计划、执行力时间管理沟通有效沟通技术功底业务平台语言工具三要素目标计划执行力你想做什么?你能做什么?你在做什么?时间管理要事第一:自我管理的原则《高效能人士的7个习惯》紧急不紧急重要1危机急迫的问题有期限压力的计划2防患于未然改进产能发掘新机会规划、休闲不重要3不速之客某些电话某些信件与报告某些会议必要而不重要的问题4繁琐的工作某些信件某些电话浪费时间的活动有趣的事时间管理紧急不紧急重要压力筋疲力尽危机处理忙于收拾残局有远见,有理想平衡纪律自制少有危机不重要有效沟通你真的听懂了吗?若用一句话归纳我在人际关系方面学到的一个最重要的原则,那就是:首先寻求去了解对方,然后再争取让对方来了解自己。这一原则是进行有效人际交流的关键。《高效能人士的7个习惯》面对面沟通是否就能保证有效沟通?成功聆听六步曲C代表Concentrate,即专注。A代表Acknowledge,即确认。R代表Respond,即反应。E表示ExerciseEmotionalControl,即情感控制。S代表sense,即感觉。通过非语言信号观察和感觉对方并没有说出的意思。S代表Structure,即结构。属于聆听过程技术的层面。在真正了解了对方的信息,清楚了对方的意图、目的后,考虑以什么方式,能更有效地表达自己的意思C.A.R.E.S.S.的每个字母代表积极聆听的一个步骤:技术:没有牛人的时代业务《TCP/IP详解》《UNIX网络编程》平台Linux《代码阅读方法与实践》语言C++永无止境《EffectiveC++》工具SourceinsightPc-lintWincvs(cvs)面向对象设计原则单一职责原则开放
本文标题:软件开发规范培训
链接地址:https://www.777doc.com/doc-4776526 .html