您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 软件流程实施方案选择
软件流程实施方案选择什么是软件工程过程?z任何工业化生产都离不开过程•大规模、有组织、有序的z软件工程过程•合理使用软件生产制造技术,定义谁(Who)什么时候(When)做什么(What),以及如何(How)达到确定目标•将用户需求转化为软件系统的所有活动的集合•开发一个新的产品•增强已开发产品的功能(修复bug,或者添加功能)RUP简介软件工程过程新建和改变的需求新建和改变的系统什么是有效的过程?z保证产品质量z迅速减少项目风险(需求、技术、政治风险等)z保证项目的可预测性(进度、成本、功能等)z能够捕捉和提供最佳实践方法(BestPractice)z促进领域内(软件开发)的共识和相互理解RUP简介议题zRUP、EUP与XPz微软MSF与MOFzAgile与CMMI成功的软件开发成功的软件开发-面向对象分析与设计-结构化设计方法-基于构件的开发方法开发技术-RUP,CMM,XP-瀑布模型-螺旋模型...开发过程-RationalROSE-RUPBuilder-青鸟支撑系统CASETool开发方法=建模语言+开发过程z建模语言(ModelingLanguage)•表述设计方法的表示法•主要是图形化的z开发过程(DevelopmentProcess)•对开发中所采取步骤的指导•将建模语言置于特定语境(开发环境)之中广义的开发过程z虽然我们这里说过程(Process),实际上它涵盖了软件项目管理技术的各个方面,包括:•软件度量•项目估算•进度控制•人员组织•配置管理•项目计划等UML+RUP=最佳软件开发方法基于团队的开发统一过程统一建模语言乐谱乐器交响乐演奏RUP囊括了6项最佳实践方法被证明可解决软件开发过程中的根本问题RUP是一个通用过程框架zRUP是可定制的(Customizable)通用过程框架•开发软件的种类•开发软件的规模•开发软件的应用领域•开发团队的组织形式RUPVersion2002.05.00统一过程中的迭代细化阶段的一次迭代需求设计实现测试时间核心工作流分析RUP的3大核心技术特点z用例(UseCase)/需求驱动的z以构架(Architecture)为中心的z迭代(Iterative)和增量的(Incremental)开发方式用例驱动的用例驱动的RUPRUP什么是用例(UseCase)z软件系统的特征•服务于特定用户z用例描述用户(User)需求•用户:与所开发系统交互的人或其他系统•所有用例构成系统的全部功能和边界zUML规范说明中的定义•用例:在不展现系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述。UseCase基本模型元素符号zActor(参与者)•表示与系统交互的任何事物zUseCase(用例)•定义了系统的一系列动作,并向参与者提供有价值的结果ActorUseCaseUseCase举例银行个人自动交易系统的UseCase图取钱存钱银行客户转帐RUP是用例驱动的z需求分析阶段用户需求用UseCase来表达z设计初期很多类根据UseCase来发现z构造阶段开发的管理和任务的分配按照UseCase来组织z测试阶段的实例根据UseCase来生成需求分析设计实现测试通过UseCases将所有RUP工作流有机地结合起来用例在RUP中的其他功能z是有序(planned)迭代开发的基础z为编写最终用户手册提供索引(index)z抽取可单独出售的系统单元(BusinessComponent)以构架为中心的以构架为中心的RUPRUP什么是构架z与建筑施工图的作用相似•从各个角度刻画系统的总体设计(结构、服务设施、供暖、供水、供电…)•去掉细节,突出系统的重要特征z软件构架(UML用户指南中的定义)•系统的重要元素,如子系统、类、构件和节点,以及它们之间通过接口实现的协作•软件系统的组织(结构与行为)•构架风格(数据流风格、调用/返回风格等…)•功能、性能、适应性、重用性、技术约束、美学考虑构架模型+构架视图=构架描述z模型是概念和知识z视图是表达模型的方式构架视图构架模型可视化构架描述构架视图对照Kruchten提出的4+1viewofsoftwarearchitecture统一过程以构架为中心z构架为用户和开发人员提供系统的整体视图z构架是系统实现的基础z为项目管理提供基本指导z构架描述是软件系统的主要制品以构架为中心的优点z创建可重用的框架,使构架级的重用成为可能z从构架可以方便地得到其他制品•设计指南(包括使用模式和术语)•形成产品结构系列(企业版、家用版…)•开发队伍结构z简化基于构件的开发(Component-BasedDevelopment)迭代和增量的迭代和增量的RUPRUP统一过程是迭代和增量的过程z迭代•是统一过程中最小的开发时间单位,但它却包括了软件开发的所有工作流,因此也可以被看作是“袖珍瀑布模型”z增量•是每次迭代所产生的,可增加系统功能的构造块z迭代&增量•迭代是开发方式,增量是开发结果迭代工作流需求测试实现设计分析一次迭代迭代是什么z是一组明确活动(activities)的集合z是有序的、受控的开发方式z是能够产生内部版本的袖珍项目z是项目开发过程中具体执行的工作流迭代不是什么z不是任意的探路z不是重复设计同样的东西z不是只影响开发人员z不是项目失败的理由为什么采用迭代和增量的开发方法z降低风险•尽早处理关键风险和重要风险,同时将项目开发的总风险分散到每次的迭代中z小步前进•允许系统灵活改变,更易于处理不断变化的需求z受控增长•避免回头式开发,允许连续的系统集成z增强信心•使用户和开发人员都可以看到系统中不断增加的可运行功能,对项目进度充满信心迭代开发对风险的处理风险的严重性第1次迭代第2次迭代.........第n-1次迭代第n次迭代初始细化构造移交迭代和增量瀑布方法瀑布方法的集成和测试阶段时间迭代开发实现持续的构造集成用例驱动、构架中心和迭代与增量z用例驱动系统构架的设计z系统构架影响用例的实现z用例体现了系统的功能(function)z构架反映了系统的表现形式(form)z用例设定了目标,构架建立了模式,开发人员根据目标和模式规划产品迭代开发的顺序概述Agile方法的产生针对上述问题,产生了一系列轻载(Lightweight)方法,如XP,SCRUM等。2001年2月,新方法的一些创始人在美国犹他州成立Agile联盟()LightweightAgile概述Agile方法的含义Agile方法是在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品的方法。笼统的讲就是,“刚刚好”(Justenough),即开发中的活动及制品既不要太多也不要太少。概述Agile方法的实践效果我预言XP对当今时代的作用可与CMM在八十年代和九十年代初的作用相媲美--TomDeMarco,CutterTrendsReport新方法在实践中取得了巨大的成功•IONA公司的Obix技术支持小组在采用了XP方法后,软件生产率提高了67%•SPG(softwareproductivitygroup)的CapersJones则称,SCRUM方法可提高生产率6倍Agile方法的核心理念z基于适应而非预测z以人为导向而非过程导向--MartinFowler“NewMethodology”Agile方法的核心理念及特点适应而非预测开始计划的结果实际需要的结果需求不可预测--PeterWegner用数学的方法给出了严格的证明按计划的过程基于适应的过程理论上来说,软件开发应是一个自适应的跟踪过程Agile方法的核心理念及特点适应而非预测自适应系统是一个强反馈系统在软件开发中,需求的获取和分析、软件设计、编码等实质上均为前馈环节,真正的反馈环节应该是用户对可运行软件的使用、使用中的判断及判断后与开发人员的信息交流。反馈和前馈这一回路的响应速度应大于被跟踪(或被适应)的系统的变化速度,这就要求软件开发有快速的产出能力。Agile方法的核心理念及特点适应而非预测特点Agile方法通过快速、短迭代式的开发,不断产出和演化可运行软件,根据用户的反馈信息作适应性调整,然后进入下一轮快速短迭代式开发。软件开发中,人的因素是第一位的Agile方法的核心理念及特点以人为导向而非过程导向人是过程的主体,而人的工作承受力是有限的软件开发中的大部分是需要创造力的设计工作,软件人员是创造性的工作者软件人员有主观上做好工作的意愿软件开发的目的是为人提供方便,应首先着眼于有用的可执行的软件,也就是首先考虑商务目标,而不是为过程而过程Agile方法的核心理念及特点以人为导向而非过程导向强调软件开发中相关人员间信息交流•软件开发中的中间过程和制品(文档),追根究底其目的是为了交流•项目失败的原因最终都可追溯到某个信息没有及时准确地传递到应该接收它的人--AlistirCockburn•人特别擅长面对面的交流,面对面交流的成本要远远低于文档交流的成本--AlistircockburnAgile方法的核心理念及特点Agile方法的一个共同特点:努力营造诚信、开放的组织氛围,根据项目中信息流通的具体情况,按高内聚、松耦合的原则,将项目组划分为若干个小组(每个小组以不超过10人为宜,组员均在一个工作间内工作),通过小组内各种渠道的沟通,来减少中间制品的工作负担,提高应变能力。以人为导向而非过程导向z任何软件开发方法都有一个相应的价值系统(Valuesystem),方法通过价值系统对过程予以指导,方法只有在其应用周境(context)与价值系统相吻合时才能发挥真正效力zAgile联盟提出了“四个价值”、“十二个指导原则”Agile方法的核心理念及特点Agile方法的价值系统和指导原则Agile方法的核心理念及特点Agile方法的价值系统较之于过程和工具,更注重人及其相互作用的价值较之于无所不及的各类文档,更注重可运行的软件的价值较之于合同谈判,更注重与客户合作的价值较之于按计划行事,更注重适应需求变化的价值(1)在快速不断地交付用户可运行软件的过程中,将使用户满意放在第一位(2)以积极的态度对待需求的变化(不管该变化出现在开发早期还是后期)(3)以几周到几个月为周期,尽快、不断地交付可运行的软件供用户使用(4)在项目过程中,业务人员和开发人员最好能一起工作(5)以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,对他们的工作予以充分的信任(6)在项目组中,最有用、最有效的信息沟通手段是面对面的交谈Agile方法的核心理念及特点Agile方法的指导原则Agile方法的核心理念及特点Agile方法的指导原则(7)测量项目进展的首要依据是可运行的软件(8)Agile过程高度重视可持续开发项目发起者、开发者和用户应能始终保持步调一致(9)应时刻关注技术上的精益求精和设计的合理,这样能提高软件的快速应变力(10)简单化(尽可能减少不必要工作的艺术)(11)最好的框架结构、需求和设计产生于自组织的项目组(12)项目组要定期对其运作情况进行反思,提出改进意见,并进行相应的微调Agile方法的核心理念及特点Agile方法的适用范围MartinFowler认为:新方法不是到处可适用的适合采用Agile方法的情况:z需求不确定、易挥发(Volatile,意指今天的要求明天就不需要了)z有责任感和积极向上的开发人员z用户容易沟通并能参与Agile与CMM(1)CMM更注重管理问题(组织过程的有效性和过程的系统化改进),Agile更注重技术和效率(2)CMM提供了一个高度抽象的框架,有广泛的适用范围,Agile适用于小组织和需求不定、有用户紧密参与的情况(在高可靠性要求和大型项目组,或虚拟项目组中不宜采用)(3)CMM与Agile方法虽有一些公共的特点,但Agile方法只是满足或部分满足了CMM2到3级中部分KPA(关键过程区域)的要求(4)Agile方法提出了在某些周境(context)下非常有效的实践,与CMM方法有一定的互补性,CMM着重于“应该做
本文标题:软件流程实施方案选择
链接地址:https://www.777doc.com/doc-656899 .html