1软件开发及管理PreparedbyMichael我的一些经验管理分为两三个方面–和客户的沟通需求管理周期争取经费支持等–和部门管理层的沟通人员的配置其他方面的支持、销售人员的帮助等。–和项目团队的沟通谁去做;什么时候完成;完成什么工作;怎么样才算完成了要求。要确保每一个组员都知道,每天需要做什么、完成什么。23目录1.整体流程2.开发项目组职责3.开发概要4.开发计划5.软件开发管理方法6.软件设计7.软件测试8.软件维护9.致谢4设计工程测试工程FDD功能设计BDD基本设计DDD详细设计CD编码BDRFDRDDRCDIUTFTSTBDFDUTFTSTCDDD维护维护确认开发概要项目开发策划设计输入评审设计审查出品判定产品交付整体流程质量管理方法5项目组长(GL)设计员质量部门程序员测试员客户需求Coding第三方检查功能测试软件设计经理项目开发策划单体测试项目负责人(PL)项目开发组Group进度、质量监控经理确保资源/下达开发任务书/任命项目组织质质量数据分析/记录控制系统测试项目周报项目监控Project进度、质量监控定单审核客户需求:概要书评审设计review设计审查CDInspection出品判定软件支持维护项目监控6项目组成员职责项目组成员按照工作职责分工为设计员、程序员、测试员(只是角色分工);负责承担开发项目的设计、编码、测试、维护等具体实施;负责按照有关质量体系文件的要求,达到所承担任务的进度和质量要求;7开发项目组职责开发项目组是软件产品开发的实体,是为一个开发项目建立的组织。负责软件开发项目的需求调查、设计、编码、测试及交付、维护全过程。8开发概要1开发概要书内容要点《开发概要书》是描述客户需求的书面文件。一般包含下列内容:项目名客户的公司名·部门名·地址客户方的项目管理者名及其联系方法(电话·FAX·E-mail地址)项目委托业务内容客户方估算的工作量(开发规模、工时等)开发期间及交货期工作必需的软、硬件环境客户财产(资料、软件、硬件)及提供日期进度、质量管理方法预定提交的成果物一览。验收检查及验收条件9开发概要1开发概要书作成要点作成者:客户/项目经理内容要与客户一一确认按照模板要求的内容作成,缺少的项目写出理由或“无”,不要空项客户提出的《要求说明书》、《RFP》等只要符合要求的内容,也可以作为《开发概要书》使用客户以口头、电话或mail形式提出开发概要书时,项目经理应整理成《开发概要书》,内容也应与客户一一确认10开发计划1项目策划项目策划的中心,应该是决定为满足客户的要求,应投入哪些资源,设置怎样的管理体制和开发过程,如何进行质量、进度管理,如何保证项目交付期,以及节约成本、控制风险等。策划的依据:《开发概要书》《项目报价书》在项目策划的基础上作成《Project开发计划书》项目策划由经理和项目负责人负责11开发计划2项目策划的主要内容(1)确定作业形态及开发过程模型1)确定作业形态:新开发改造项目移植项目维护项目其他项目2)确定开发过程模型:开发过程模型瀑布型(Waterfall)快速原型(Prototyping)螺旋型(Spiral)移植(porting)标准提供基本的开发过程模型,作为开发过程设计的参考根据产品特性,可选择适合的模型。3)划分开发工程阶段根据作业形态和开发模型,决定本项目划分的工程阶段。同时,决定适用于每个设计和开发工程阶段的评审、验证和确认工程。(必须有UT,无DD说明理由)12开发计划2项目策划的主要内容(2)开发体制※确定必须的人力资源※每个成员的角色(项目经理、组长、设计员、程序员、测试员)※确定其工作内容(按功能或模块划分)※确定组织及领导的关系(如管理、报告的对象等)13开发计划2项目策划的主要内容(4)资源开发环境和设备(软、硬件)的需求所需的开发工具和测试软件使用测试软件时,应充分评估其适用性。只有经评估适用的测试软件才能使用。鼓励研究发掘新的项目管理和实施辅助工具。(5)开发日程计划日程计划应作成线表,并设定重要的milestone必须明确制定日程计划的依据,用相关的数据说明可行性日程计划的主要项目:各开发工程或阶段的起始日期、开发作业整体的完成日期中间成果物和最终成果物及提交日期进行设计审查及交付验收的日程14开发计划2项目策划的主要内容(6)质量计划1)产品的质量目标和保证措施依据公司的质量目标和部门的分解目标,制定项目的质量目标制定具体的保证措施2)适用标准和质量记录客户有明确要求,优先采用客户要求的质量管理标准和记录表格客户没有明确要求,适用本公司质量管理标准·规定及其质量记录表格3)确定各开发工程完成的判定基准客户有明确要求,优先采用客户的基准客户没有明确要求,根据项目特点项目组确定移行基准4)交付基准客户有明确要求,优先使用客户的验收条件客户没有明确要求,项目组应制定满足用户隐含条件的交付基准15开发计划2项目策划的主要内容(7)进度管理及沟通方式个人或项目组进度报告的内容、格式、提交期间、提交方式、发布范围等与客户进行技术讨论的方式、语言、时间间隔等项目进度会议召开周期、报告方式等与其他相关部门或项目组的联络窗口、沟通方式等小组会议项目组会议,通常以周会形式定期实施具体报告项目实施的情况和进度状况16开发计划2项目策划的主要内容(8)配置管理决定软件配置管理的内容、方法、工具,以及软件产品版本的标识方法。*策划内容总结*(1)确定作业形态及开发过程模型(2)设计输入和设计输出(3)开发体制(4)资源(5)开发日程计划(6)质量计划(7)进度管理及沟通方式(8)配置管理17开发计划3开发计划书3-1作成、审批每个项目必须作成开发计划书,详略程度可适应项目实际情况根据客户要求决定是否提交客户由项目组长作成,项目负责人查阅、部门经理承认。3-2内容除了项目策划的主要内容外,还有成果物交付、客户的验收条件、技术学习计划、风险管理、对客户的要求。3-3改版修订《Project开发计划书》改版修订的目的是为了使《Project开发计划书》中的安排能充分的控制项目的品质和进度,如果计划书中的日程、人员等安排,已经不能很好的对项目的进度和品质进行管理时,就需要进行改版修订。18开发计划《Project开发计划书》变更的内容需要取得客户同意时,应与客户充分协商,客户同意后方可改版。发生下述情况之一时,需要进行改版:由于《开发概要书》改版或合同变更,必须调整开发内容和日程;由于不可预测的原因,必须调整开发内容或日程;本计划书中记载的交付日期发生的变更,包括中间版本的交付日期;4质量记录Project开发计划书(QR-B08-01)进度报告(QR-B08-02)注:指项目组的进度报告,格式可自定19软件开发管理方法开发作业与计划比较是否有问题?问题点的分析采取必要的对策调整计划对策充分吗计划有必要调整吗NoYesYesNoYesNo流程要点1·对照实绩与开发计划设定的目标值2·尽早发现问题并制定对策3·必要时调整目标值4·必要时改版《Project开发计划书》5·调整后的目标值,记入《项目开发履历表》1开发管理的流程PDACDCAP20软件开发管理方法2品质目标管理概要设计工程TEST工程项目计划设计工程TEST工程验收验收后新开发·改造留用·移植潜在Bug预测设定摘出目标Bug摘出进度管理设计工程品质评价摘出目标重新评价Bug摘出进度管理TEST工程品质评价摘出目标重新评价验收品质评价验收后品质评价21软件开发管理方法3分析过程制定目标值/计划值目标值/计划值的妥当性评价定量分析(差异分析)定性分析没有问题存在问题·查明直接原因并实施对策·查明真正的原因并实施对策存在问题设计工程测试工程继续开发没有问题22软件开发管理方法4品质数据分析的方法(1)设定Bug摘出目标值依据潜在Bug预测值,制定各工程阶段的Bug摘出目标值,记入《项目开发履历表》潜在Bug值的预测方法:—根据同类项目经验值预测—根据潜在Bug预测值的公式计算潜在Bug预测值的分布如:FD:40%DD:20%CD:40%Bug摘出目标值设定的目标:—本工程摘出Bug预测值的70%,下一工程摘出其余的30%—设计工程摘出Bug预测值的70%以上,TEST工程摘出其余的30%23软件开发管理方法Bug目标值设定的示例该工程阶段Bug本工程阶段发现次工程阶段发现合计FD40281228DD201412+614+12CD40281228+6测试12合计10024软件开发管理方法4品质数据分析的方法(2)数据收集应注意真实性、有效性、必要性(3)数据分析时点设计工程—设计工程结束[建议:每个工程结束时都要进行分析]TEST工程—TEST工程结束[建议:TEST工程进展中](4)数据分析的方法(5)Bug分析25软件设计1·职责1-1开发项目组完成软件基本设计,功能设计,详细设计,编码进行各项设计Review进行设计审查测试及交付、维护26软件设计1-2设计员进行软件设计,负责作成、更改《基本设计书》,《功能设计书》《详细设计书》参加BDReview,FDReview,DDReview参加设计审查参加CDInspection1-3程序员根据设计书完成编码,使其通过编译参加CDInspection,并修正CDI发现的Bug修改测试工程中发现的Bug27软件设计3·设计工程3-1·各设计工程要点(1)基本设计要点1)根据客户的需求以及基本调查、基本分析进行设计2)把握开发的目的、背景和效果3)明确产品的功能、性能及资源等的实现目标4)决定主要功能的实现方式。5)明确对产品评价的项目及其目标,可能的评价项目包括:功能性、操作性、可靠性、可维护性、可移植性等BD工程的输出是:-基本设计书-ST测试设计书(也可在测试前完成)28软件设计(2)功能设计要点本工程的设计输入是:基本设计书1)明确本次开发的内容、目的及对其他Component的影响2)明确地定义从外部看到的程序仕样说明3)详细描述外部interface4)明确定义程序具体的运行及操作方法,包括运行环境的目录结构等5)使用面向对象的语言进行开发时,也常常把Object、Method等作为功能概要、操作方法的设计内容FD工程的设计输出是:-功能设计书-功能测试设计书(可在测试前作成)29软件设计(3)详细设计要点本工程的设计输入是:功能设计书1)程序逻辑设计(根据功能构造分解为模块)2)模块设计(模块的内部逻辑、外部接口等)3)数据设计(数据结构设计)4)外部文件设计5)制定各种规约,包括:命名规则,开发环境的目录结构设计规则、错误处理规则、出错代码设计,debug开关规则等DD工程的设计输出:-详细设计书-UT测试设计书(可在测试前作成)30软件设计4·Reviewreview开始的时点—设计书草稿完成后—程序编译通过后review的形式—有会议、传阅、交叉review等方式—必须对公共部分及核心部分实施会议形式的reviewreview工数注意:修改review发现的Bug所用的工数,不计算在review工数中,仅计算在该设计阶段的工数中。例:CD工数修改Bug工数Review工数31软件设计5·设计审查5-1设计审查的要点功能上能否满足客户的要求性能上能否满足客户的要求操作性上能否满足客户的要求与其他公司的产品/功能相比是否有优势是否有面向客户的销售优势设计作业整体的一致性确认(设计分阶段进行时)项目的开发计划有无调整的必要针对存在问题提出改善措施32软件设计6·设计变更的管理6-1变更管理的注意注意事项变更容易引起错误变更后容易忽略其review、评审面对的客户式样变更增多33软件设计6-2设计变更管理流程项目组讨论进行设计变更的内容、必要性及影响程度承认者根据讨论内容及自己的判断,必要时征求客户的意见,决定是否批准对设计