软件项目特点李锋•丹佛国际机场行李处理系统•---需求不清晰完整•Xxxxx医药股份•----需求变动•佛罗里达救济系统•----测试不充分•OnTechnology•-----计划拙劣失败项目案例•智能电子---新技术•F-26---新技术•Confirm---缺乏人员失败项目案例失败的原因–需求-------51%–计划和估算---48%–新技术-----45%–管理----42%–人员(高级技术人员)---42%软件项目特点•发展快•经验失效快•复杂度高•主要依靠人的脑力劳动•过程可见性差•结果难于测试•市场模式不完善ThecomplicationtodevelopabigsoftwareprojectisnotlessthantobuildthePyramid110,000,000LOCSINWINDOWS95Whattodo?市场需求的模糊ChangeThetechnologyandthewordofcomputerchangetoofastbasiccooC++javaEJBOurexperienceandthemodelsbecomeinvalidquickly项目管理中的问题?对客体目标的误解?客户需求定义不够详细?不切实际的主体目标?无计划的任务分派?没有足够的资源或必要的技术?效率低下的沟通?优先级相互冲突?变更失控?组织间的矛盾冲突•软件开发模式软件工程过程常规过程系统分析软件需求分析软件设计编码软件测试生命周期模型瀑布模型(线形模型)增量模型RAD:RapidApplicationDevelopment螺旋模型瀑布模型系统分析软件需求分析设计编码测试模型介绍软件需求设计维护瀑布模型优点易于理解,广泛采用强调设计前定义和编码前设计,易于控制确定了何时交付产品以及何时评审、审查,易于管理缺点对于一个大项目来说,要看到结果需要很长的时间依赖于大家知道的、稳定的、理解的客户需求很难跟踪需求到程序代码对于需求的错误,可能直到结束的时候才能被发现开发者经常被不必要的耽搁瀑布模型变种---生鱼片系统分析软件需求分析设计编码测试模型介绍软件需求设计维护瀑布模型变种---XXXX系统分析软件需求分析设计编码测试模型介绍软件需求设计维护设计编码测试快速原型模型介绍需求收集和提炼快速设计建立提炼原型用户评价反馈接受确定需求抛弃原型,开始设计快速原型模型优点用户需求清晰,减少了误解的可能性便于后续设计和管理增强信心缺点原型易当产品开发原型需要投入,原型的度难以把握需要用户参与没有较好的文挡,用户确认形式要注意容易产生乐观的估计增量模型Increment1Increment2Increment3ReqtsAnalysisHigh-LevelDesignDetailDesignTestBuildReleaseDetailDesignTestBuildReleaseDetailDesignTestBuildReleaseFullSystem增量模型融合了瀑布模型的基本成分(重复地应用)第一个增量往往是核心产品,即实现了基本的需求,但很多补充的特性(已知和未知)还没有发布具有迭代的特征,每一个增量均发布一个可操作的产品增量模型优点适应市场快速的要求可以有计划的管理技术和其他风险测试中可以得到立即的反馈缺点产品的整体性能易受影响1+1+13增量模型----变种Increment1Increment2Increment3ReqtsAnalysisHigh-LevelDesignDetailDesignTestBuildReleaseDetailDesignTestBuildReleaseDetailDesignTestBuildReleaseFullSystem增量选择的标准不同-----面向进度面向需求清晰度面向风险面向优先级RAD系统分析软件需求分析设计编码测试软件需求设计维护系统分析软件需求分析设计编码测试软件需求设计维护系统分析软件需求分析设计编码测试软件需求设计维护小组1小组2小组2RAD强调极短的开发周期(60-90天)强调复用,以体现快速是瀑布模型的变种系统可以被适当的模块化主要用于信息系统应用软件的开发开发阶段:业务建摸:客户和开发者一起数据建摸处理建摸应用生成:可视化编程,使用计算机辅助软件工程工具RAD模型优点开发速度快可以分割风险缺点小组接口定义困难需要足够的人力和技能螺旋模型Determineobjectives,alternatives,constraintsRiskanalysisPrototypingPlanNextPhasesDevelop,VerifyNext-LevelProductCommitmentCumulativeCostPartitionSpiralModel螺旋模型是一个演化的软件过程模型是一系列的增量发布分为若干的任务区域,每一区域含有一系列适应待开发项目的特点的工作任务螺旋模型优点体现了开发的迭代性综合了瀑布模型和快速原型的优点缺点需要相当的风险评估的专门技术,其成功依赖于这种技术某些风险的忽视,将导致严重后果理解操作困难,没有广泛使用,缺乏相关范例JADJADSessionsPrototypingFull-ScaleDevelopmentUsersReqtsAnalystsSWATTeamPrototyping&CASEToolsriosytcajiiddfiytqluyetdspexkInformationEngineeringMethodsJAD定制讨论整理主管人员规划定制讨论整理主管人员设计实现JAD模型优点正确快速的获取需求把矛盾解决在前期各方意见充分一致缺点需要用户和领导投入过多的精力如JAD会议效果不够理想,影响较大与原型法配合使用面向对象系统分析软件需求分析设计编码测试软件需求设计维护设计编码测试对象1对象2组装测试发布面向对象模型优点可以分割风险并发性强方便变更控制缺点组接口定义困难会因部分组件的推迟,影响整个工作要全过程采用该技术,并且使用设计工具,方可充分发挥他的长处。面向对象模型----变种面向商业软件模型选择不拘理论灵活复用各模型的比较见模型选择生命周期模型能力瀑布原型增量RAD螺旋JADOO需求不完善差好好一般好好一般架构不熟悉差好好一般好一般差开发高可靠系统好一般差差一般好好系统增长性强好一般一般差好一般好管理风险差一般一般差差一般一般强制执行预定进度一般一般一般好一般好一般低管理费好一般一般一般一般差一般允许中途变更差一般好一般一般一般好提供用户可视的进度差一般好一般一般一般一般提供管理者可视的进度一般一般好一般好一般一般需要管理开发经验一般一般一般一般差差一般组织模式项目组织副总软件部经理自动化部经理生产工程部经理员工员工员工员工员工员工员工员工员工职能型组织项目协调职能式组织结构的优缺点•优点:–人员使用灵活;–业务专家可被多个不同项目使用;–便于知识和经验的交流;–有利于在过程、管理和政策方面保持连续性;–为该部门人员提供晋升的正常途径;•缺点:–职能部门主要关注本部门工作;–项目和客户利益不能保证得到优先考虑;–项目责任不明确;–对客户需求响应迟缓;–与本部门利益冲突难处理;–项目的工作放到次要地位;–跨部门交流沟通困难;项目型组织总经理项目经理项目经理项目经理员工员工员工员工员工员工员工员工员工项目协调项目式组织结构的优缺点•优点:–项目经理对项目全权负责;项目成员对项目经理直接负责–项目实施过程沟通容易–固定保留有特长专家–项目目标单一,容易发挥团队精神–权利集中,领导单一–结构简单灵活,易于操作•缺点:–项目独立,资源不能被企业共享–项目经理可能提前储存专业业务人员–专业业务人员技能难以在项目外应用提高–在执行企业规章制度上不一致–不利于项目与外界沟通–项目成员担心项目结束以后自己的去向强矩阵组织副总研发部经理服务部经理项目管理部经理员工员工员工员工员工员工项目经理项目经理项目经理项目协调强矩阵组织结构的优缺点•优点:–项目是工作聚焦点–项目可分享职能部门人才–项目成员不担心项目结束后的去向–有利快速响应客户需求–有利于保持与企业规章制度的一致性–企业可以平衡多个项目对资源的使用–人力资源使用上,有较大灵活性•缺点:–项目经理与部门经理之间的项目责任划分不够鲜明。成功时争功,失败时推委躲避–资源在多个项目之间平衡流动,容易引起项目经理之间争斗–要求项目经理有能力与部门经理协调,谈判资源分配,技术支持等问题–项目成员有两个上司不同项目组织结构适应特点•职能式组织结构适合:规模小、以技术为重点项目•项目式组织结构适合:企业有多个类似项目的情况,以及长期的、大型的、重要的、复杂的项目•矩阵式组织结构适合:需要企业多个职能部门资源、技术相对复杂,但又不一定需要专业和技术人员全职工作其他辅助过程辅助过程•配置管理•需求管理•QA•过程测量