软件过程模型.ppt
《软件过程模型.ppt》由会员分享,可在线阅读,更多相关《软件过程模型.ppt(70页珍藏版)》请在三一办公上搜索。
1、上次课的基本知识点回顾,软件生命周期问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试、维护传统软件过程模型瀑布模型增量模型,上次课的基本知识点回顾,传统软件过程模型原型模型螺旋模型喷泉模型现代软件过程模型基于构件的开发模型形式化方法模型,如何选择软件过程模型,软件过程模型是不断发展的各种软件过程模型各有优缺点和适用场合选用时不必拘泥于某种模型可组合多种模型也可根据实际创造新的模型,应用举例,开发一个类似于Word的字处理软件。迭代1:提供基本的文件管理、编辑和文档生成功能。迭代2:提供高级的文档编辑功能。迭代3:实现拼写和语法检查功能。迭代4:完成高级的页面排版功能。,应用举例,
2、应用举例:开发一个教务管理系统。第一次迭代:完成基本的学籍管理、选课和成绩管理功能。(6周)客户反馈:基本满意,但是对大数据量运行速度慢效率,不需要学生自己维护学籍的功能等。第二次迭代:修改细节,提高成绩统计和报表执行效率(2周)。客户反馈:需要严格的权限控制,报表打印格式不符合要求。第三次迭代:完善打印和权限控制功能。(2周)客户反馈:可以进行正式应用验证。,面向方面的软件开发,随着现代计算机系统变得更加复杂,某些关注点客户需要的属性或技术兴趣点已经体现在整个架构设计中。某些关注点是系统的高层属性(例如安全性、容错能力),某些关注点影响了系统的功能等。,如果某个关注点涉及系统多个方面的功能、
3、特性和信息,这些关注点通常称为横切关注点。,面向方面的软件开发,方面需求定义那些对整个软件体系结构产生影响的横切关注点。面向方面的软件开发(AOSD)通常称为面向方面编程(AOP),为定义、说明、设计和构建方面提供过程和方法,是对横切关注点局部表示的一种机制,超越了子程序和继承的方法。,面向方面的构件工程(AOCE),AOCE对纵向分解的软件构件进行横向切片,称为“方面”,以表示构件功能及非功能的横切属性。系统的方面包括用户接口、协同工作、发布、持续性、存储器管理、事务处理、安全、完整性等。构件也许提供或需要某一方面的“方面细节信息”,如视图机制、可扩展性和接口类型(用户接口方面);事件生成、
4、传输和接收(分布式方面);数据存取/查询和索引(持久性方面);认证、编码和访问权限(安全方面);原子事务、协同控制和登录策略(事务方面)等。,Rational统一过程,Unified Process(UP)以用例驱动、以架构为核心,迭代增量模型的软件过程,描述了如何为软件开发团队有效的部署经过商业化验证的软件开发方法。它们被称为“最佳实践”,UP为每个团队成员提供了必要准则、模板和工具指导。,获得广泛使用基于面向对象方法学使用统一建模语言UML,统一过程的三个特点,用例驱动所有的软件开发都是用户需求驱动的。UP采用用例来描述用户需求,同时提供一套方法把用例转化为设计的类图,进一步变成最终的程序
5、代码。在整个软件开发过程中,要求用例是可跟踪的,即在设计和实现阶段,都可以找到相应的需求。以架构为核心架构刻画了系统的整体设计,舍弃细节,突出重要特征。UP提供了创建架构的方法和过程。,统一过程的三个特点,UP采用迭代和增量的开发模式,把一个软件产品划分成多个较小的部分,每次完成一个部分,每次迭代都是产品的一个增量。优点:把一个复杂系统分解成多个简单系统,提供软件项目的可控性,降低软件开发的风险,有效的应对需求变更。,UP起源,面向对象 60年代 Alan Kay发明OO语言 Smalltalk和面向对象编程(Object-Orientedprogramming,OOP)1982年Grady
6、Booch提出面向对象设计(Object-Oriented Design,OOD)80年代末,Peter Coad创建完整的OOA/D方法 三剑客及其建模方法 James Rumbaugh提出了OMT方法 Grady Booch提出了Booch方法 Ivar Jacobson提出了Objectory(Object Factory)方法,UP起源,UML 1994年James Rumbaugh和Grady Booch创建了统一方法(Unified Method),即UML第一个草案 三人加入Rational公司(后被IBM收购),领导了OMG的建模标准制定 1997年UML1.0发布,2004年
7、UML2.0发布,成为OO建模标准,UP起源,UP历史,Rational统一过程,从3个视角描述软件开发过程动态视角:随时间变化的各个阶段静态视角:所进行的活动实践视角:可采用的良好实践建议,Rational统一过程,初始:项目计划、评估风险;精化:设计系统的体系结构、制定项目计划、确定资源需求;构建:开发出所有组件和应用程序,集成并进行详尽测试;产品化:将产品移交给用户。,动态视角,静态视角,统一过程的最佳实践准则,实践视角:6条最佳实践1.迭代式开发需求变更不可避免每次迭代产生一个可交付版本,用户反馈,减少风险根据客户的轻重缓急来规划增量,先开发和交付优先级最高的增量2.管理需求采用用例分
8、析来捕获需求,由用例驱动设计和实现对需求及其变更进行管理,3.使用基于构件的体系结构将体系结构组建成基于构件的提高软件复用率4.可视化建模使用统一建模语言(UML)对系统进行可视化建模5.验证软件质量软件质量评估贯穿于整个开发过程的所有活动中全体成员参与6.控制软件变更描述了如何控制和跟踪软件的变更,统一过程的最佳实践准则,Rational统一过程,初始:项目计划、评估风险;精化:设计系统的体系结构、制定项目计划、确定资源需求;构建:开发出所有组件和应用程序,集成并进行详尽测试;产品化:将产品移交给用户。,动态视角,静态视角,起始阶段(inception):沟通、策划包括客户沟通和策划活动。该
9、阶段识别基本的业务需求,并初步用“用例”描述每一类用户所需要的主要特征和功能。此时的架构仅是主要子系统及其功能、特性的试探性概括。策划活动识别各种资源,评估主要风险,定义进度计划,并为用于软件增量开发的各个阶段建立基础。,统一过程的阶段,统一过程的阶段,细化阶段(elaboration)策划、建模包括用户沟通和通过过程模型的建模活动。该阶段扩展了起始阶段定义的用例,并扩展体系结构以包括软件的五种视图用例模型、分析模型、设计模型、实现模型和部署模型。体系结构基线证明了体系结构的可实现性,但没有提供系统使用所需的所有功能和特性。另外,在细化的最终阶段将评审项目计划以确保项目的范围、风险和交付日期合
10、理。同时对项目计划进行修订。,统一过程的阶段,构建阶段(construction):部署与通用软件过程中的构建活动相同。该阶段采用体系结构模型作为输入,开发或获取软件构件,使得最终用户能够操作用例。转换阶段(transition):构建、部署包括通用构建活动的后期阶段以及第一部分通用部署活动。软件被提交给最终用户进行Beta测试,用户反馈缺陷及必要的变更。另外,软件开发团队创建系统发布所必要的支持信息。,统一过程的阶段,生产阶段(production):发布与通用过程的部署活动一致。在该阶段,监控软件的持续使用,提供运行环境的支持,提交并评估缺陷报告和变更请求。一个软件工程的工作流分布在所有U
11、P阶段。,统一过程工作产品,UP每一个阶段产生的主要工作产品,产品与过程,如果过程很薄弱,最终产品必将受到影响。但是对过程的过于依赖也是很危险的。,Rational统一过程,适用场合,适合大团队大项目。,敏捷软件开发,Agile software development高效工作、快速响应变化2001年2月,17位编程大师发表敏捷软件开发宣言个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划虽然右边的项有价值,但我们更重视左边的项,敏捷Agility,敏捷软件开发的基本原则,客户参与到开发团队中确定系统需求、对需求排序、评估系统等软件以增量的方式进行
12、开发和交付开发团队的技术和开发团队的风格应得到认可接受变更,设计软件适应变更保持所开发软件和开发过程的简单性,实践中的困难客户不一定愿意参与到开发团队中团队成员的性格需求和变更的优先级不容易确定维护简单性需要额外的时间企业文化很难改变,敏捷开发方法,极限编程:eXtreme Programming/XP自适应软件开发Adaptive Software Development/ASD并列争球法:Scrum动态系统开发方法Dynamic System Development Method/DSDM水晶法:Crystal特征驱动开发:Feature-Driven Development/FDD精益软
13、件开发:Lean Software Development/LSD,扩展内容,极限编程,eXtreme Programming XP把好的开发实践运用到极致,为当前版本选择故事情节/需求(Scenario),将故事情节分解成任务,规划版本,开发/集成/测试软件,发布软件,评估系统,结对编程先写测试用例再编程,极限编程XP,XP使用面向对象方法作为推荐的开发范型。XP包含了策划、设计、编码和测试4个框架活动的规则和实践。如图3-2所示。,极限编程,课本图3-2 极限编程过程,极限编程的过程,策划:策划活动开始于建立一系列描述待开发软件必要特征与功能的“故事”。每个故事由客户书写并置于一张索引卡上
14、,客户根据对应特征或功能的全局业务价值度标明权值(故事优先级);评估每个故事给出开发周数为单位的成本;客户和团队共同决定故事分组;团队对待开发故事进行排序团队计算项目的速度在开发过程中,用户可增加、减少故事数,以及改变故事的优先级。,极限编程的过程,设计:XP设计严格遵循KIS原则,即使用简单而不是复杂的表述。另外,设计为故事提供不多也不少的实现原则,不鼓励额外功能性设计。鼓励使用CRC卡(类-责任-协作者)确定和组织与当前软件增量相关的类;如果某个故事的设计中遇到困难,采用Spike方案;鼓励重构XP的中心观念是设计与编码可以同时进行。,极限编程的过程,编码:XP推荐的故事开发和基本设计完成
15、之后,团队不应直接开始编码,而是开发一系列用于检测本次(软件增量)发布的包括所有故事的单元测试。XP编码活动中的关键概念之一是结对编程。XP建议两个人共同为一个故事开发代码,提供实时解决问题和实时保证质量。,极限编程的过程,测试:在编码开始之前建立单元测试是XP方法的关键因素。所建立的单元测试应当使用一个可以自动实施的框架,这种方式支持代码修改之后即时的回归测试策略。一旦将个人的单元测试组织到一个“通用测试集”,每天都可以进行系统的集成和确认测试。XP验收测试,也称为客户测试,则客户规定技术条件,并且着眼于客户可见的、可评审的系统级的特征和功能。,极限编程的有效实践,增量式开发小版本短周期交付
16、结对编程代码集体所有开放的工作空间可持续的开发速度:40小时/周,连续加班不超过两周,简单的设计测试驱动开发持续集成重构及时调整计划客户作为开发团队成员,敏捷开发的优点和缺点,优点:对变化和不确定性有更快速更敏捷的反应在快速的同时保持可持续的开发速度能较好的地适应商业竞争环境下对小项目提出的有限资源和有限开发时间的约束缺点:极限编程中的测试驱动开发可能会导致系统通过了测试但不是用户期望的重构而不降低系统体系结构的质量是困难的用于大型项目有很多问题,敏捷开发实例,在敏捷软件开发中,测试人员的职责有三个主要方面:定义质量(Define Quality)交流缺陷(Communication)及时反馈
17、(Feedback),我们的测试框架提供自助测试(Self-assistant Test):通过点击测试用例列表中的某个具体用例,开发人员不需要中断测试人员的工作就可以重现缺陷。,敏捷开发中的测试流程,结合一个软件项目,详细介绍项目流程中的主要测试活动,每个活动的前提条件和目标任务等。,项目介绍:根据一家在线 B2B 公司的要求,我们将为其开发一款类似于谷歌的搜索服务。作为 Web Service,该服务可以内嵌于网页中。当用户输入关键词并选择商户的类型和位置后,系统会返回具体商户的列表,典型的敏捷开发和测试活动,主要由三部分构成,从最初的用户故事设计和发布计划,到几次 Sprint 周期的迭
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 过程 模型

链接地址:https://www.31ppt.com/p-6441990.html