《《敏捷开发基础知识》课件.docx》由会员分享,可在线阅读,更多相关《《敏捷开发基础知识》课件.docx(16页珍藏版)》请在优知文库上搜索。
1、敏捷开发基础知识软件工程及软件过程模型1.软件需求分析与定义软件需求是一个为解决特定问题而必须由披开发或被修改的软件展示的特性。这个问题可能是使用软件的某人的任务中的一个自动化部分,或是支持委托开发软件的组织的业务流程,或修正当前软件的缺点,或是控制一个设备等。用户、业务流程和设备的功能通常根复杂,因此,特定软件的需求在外延上通常是来自一个组织不同层次的不同人员的需求和来自软件将要在其中运行的环境的需求的复杂组合。所有软件需求的一个基本特性就是可验证性。验证某些软件需求可能很困难或者成本很高。软件需求和软件质保人员都必须保证,在现有的资源约束下,需求可以被验证。除了其表达的行为特性外,需求还有
2、其他特性,如优先级,以便在资源有限时进行权衡。通常,要唯一地标识软件需求,才能在整个软件生命周期中,进行软件配置控制和管理。需求分析涉及分析需求的过程,其目的如下。(1)检测和解决需求之间的冲突。(2)发现软件的边界,以及软件与其环境如何交互。(3)详细描述系统需求,以导出软件需求。描述需求时必须仔细,应该精确到能确认需求,验证需求的实现,估算需求的成本。开发真实世界问题的模型是软件需求分析的关键模型的目的是帮助理解问题,而不是启动方案的设计。因此,概念模型由来自问题域的实体模型组成,实体模型反映了它们在真实世界的联系和依赖。可以开发的模型包括数据和控制流、状态模型、事件追踪、用户交互、对象模
3、型、数据模型,以及其他模型。架构设计是需求过程与软件或系统设计重叠进行的,将二者截然分开是不可能的。其工作是需求分配,即将满足需求的职责分配到组件上。需求协商的另一个普遍使用的术语是解决冲突。这涉及需求冲突的问题,冲突发生在两个不兼容的需求之间,或者发生在需求与资源之间,或者在功能与m期能需求之间。2 .软件设计、测试与维护软件设计软件设计是定义一个系统或组件的架构、组件、接口和其他特征的逆程,并得到这个过程的结果Mo作为过程看待时,软件设计是一种软件生命周期活动,在这个活动中,要分析软件需求,以产生一个软件内部结构的描述,并将其作为软件构造的基础。更精确地说,软件设计必须描述软件架构和这些组
4、件之间的接口,也必须在详细的层次上描述组件,以便能构造这些组件。软件设计在软件开发中起着重要作用,通过它形成要实现的各种不同模型。分析和评价这些模型,以确定它们能否实现各种不同的需求,在各种不同的候选方案中进行权衡,确定最终方案。最后,将其作为构造和测试的输入和起始点,并用来规划后续的开发活动。软件设计由两个处于软件需求和软件构造之间的活动组成。软件架构设计(有时叫做高层设计):描述软件的结构和组织,标识各种不同的组件。软件详细设计:详细地描述各个组件,使之能被构造.软件架构是一个描述软件系统的子系统和组件,以及它们之间相互关系的学科。架构试图定义软件的内部结构。通过视图可以从不同角度描述软件
5、结构,主要包括逻辑视图(满足功能需求过程视图(并发问题组件视图(实现问题部署视图(分布问题模式提供了架构设计的某些方法。模式是给定上下文中普遍问题的普遍解决方案,主要涉及设计模式(微观架构模式)和架构模式(宏观架构软件测试测试是为评价和改进产品质量、识别产品的缺陷和问题而进行的活动。软件测试是针对一个程序的行为,在有限测试用例集合上,动态验证是否达到预期的行为,需要选取适当的测试用例。测试不再只是一种仅在编码阶段完成后才开始的活动。现在的软件测试被认为是一种应该包括在整个开发和维护过程中的活动,它本身是实际产品构造的一个重要部分。测试不仅是检查预防措施是否有效的主要手段,而且是识别由于某种原因
6、预舫措施无效而产生的错误的主要手E殳。需要注意的是,在广泛的测试活动成功完成后,软件可能仍包含错误,交付后出现的软件失效的补救措施是由软件维护达成的。软件测试随开发和维护过程,通常在不同的级别上进行,可以在概念上区分三个大的测试阶段:单元测试、集成测试和系统测试。23.软件维护软件开发工作的结果是交付满足用户需求的软件产品。相应地,软件产品必然存在变更和演化。一旦投入运行,就可能发现缺昭,运行环境可能会变化,用户会提出新的需求。软件维护是坐命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动。这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的
7、计划和维护计划等。交付后的活动包括软件修改、培训、帮助资料等。软件维护包括如下类型。Q)更正性维护:软件产品交付后进行的修改,以更正发现的问题。(2)适应性维护:软件产品交付后进行的修改,以保持软件产品能在变化后或变化中的环境中可以继续使用。(3)完善性维护:软件产品交付后进行的修改,以改进性能和司维护性。(4)预防性维护:软件产品交付后进行的修改,以在软件产品中的潜在错误成为实际错误前,检测和更正它们。3 .软件复用软件复用是指利用已有软件的各种有关知识构造新的软件以缩减软件开发和维护的费用。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,
8、后来扩大到包括领域知识、开发经验、设计决策、架构、需求、设计、代码和文档等一切有关方面。软件复用是一种计算机软件工程方法和理论。20世纪60年代的软件危机”使程序设计人员明白难于维护的软件的成本是极其高昂的,当软件的规模不断扩大时,这种软件的综合成本可以说是没有人能负担的,并且即使投入了高昂的资金也难以得到可靠的产品,而软件重用是解决这一问题的有效方法。软件复用的主要思想是,将软件看成是由不同功能的组件所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写某一特定软件的工作就变成了将各种不同组件组织连接起来的简单问题,这对于软
9、件产品的最终质量和维护工作都有本质性的改变。软件制品的复用,按抽象程度的高低,可以划分为如下复用级别:代码的复用、设计的复用、分析的复用、测试信息的复用等。支持软件复用是人们对面向对象方法寄托的主要希望之一,也是这种方法受到广泛重视的主要原因之一。面向对象方法之所以特别有利于软件复用,是由于它的主要概念及原则与软件复用的要求十分吻合。面向对象的软件开发和软件复用之间的关系是相辅相成的。一方面,面向对象的方法的基本概念、原则与技术提供了实现软件复用的有利条件;另一方面,软件复用技术也对面向对象的软件开发提供了有力的支持。4 .软件开发环境软件开发工具是用于辅助软件生命周期过程的基于计算机的工具。
10、通常可以设计并实现工具来支持特定的软件工程方法,减少手工方式管理的负担。与软件工程方法一样,它们试图让软件工程更加系统化,工具的种类包括支持单个任务的工具及囊括整个生命周期的工具。1 .软件需求工具软件需求工具包括需求建模工具和需求追踪工具。2 .软件设计工具软件设计工具用于创建和检查软件设计,因为软件设计方法的多样性,这类工具的种类很多。3 .软件构造工具软件构造工具包括程序编辑器、4 .软件测试工具软件测试工具包括测试生成器、能分析工具。编译器和代码生成器、解释器、调试器等。测试执行框架、测试评价工具、测试管理工具5 .软件维护工具软件维护工具包括理解工具(如可视化工具)和再造工具(如重构
11、工具6 .软件配置管理工具软件配置管理工具包括追踪工具、版本管理工郸口发布工具。7 .软件工程管理工具软件工程管理工具包括项目计划与追踪工具、风险管理工郸口度量工具。8 .软件工程过程工具软件工程过程工具包括建模工具、管理工具、软件开发环境。9 .软件质量工具软件质量工具包括检查工郸口分析工具。5软件过程模型5.1. 概述软件过程模型是指一种用于指导软件开发过程的特定方法,它包括软件开发中的所有活动和任务,并在整个过程中提供了一系列的标准和规范。软件过程模型的核心思想是将软件开发过程分为一系列的步骤,并且在每个步骤中设置相应的输入、输出和控制流程,从而使得整个软件开发过程变得更加可靠和高效。5
12、.2. 常见的软件过程模型1 .瀑布模型瀑布模型是一种传统的软件过程模型,将整个软件开发过程分为五个阶段,分别是需求分析、设计、实现、测试和维护。瀑布模型的优点是结构简单,易于理解和使用,同时缺点也很明显,比如缺乏灵活性、周期较长、迭代困难等。2 .增量模型增量模型是一种将软件开发过程分为若干个增量,对每个增量进行开发和测试,最后再进行集成的过程模型。增量模型的优点是可以快速地得到一个基本功能完整的软件系统,同时也可以逐步完善和优化软件系统。缺点是增量之间的集成会存在较大的风险,需要注意控制。3 .螺旋模型螺旋模型是一种基于风险管理的软件过程模型,将软件开发过程分为四个阶段,分别是计划、风险分
13、析、工程实施和评估。螺旋模型的优点是可以快速地发现和控制风险,同时也可以在开发过程中逐步完善和优化软件系统。缺点是需要更多的资源和时间来进行风险分析和控制。5.3. 如何选择合适的过程模型在选择软件过程模型的时候,需要考虑以下几个方面:1 .项目的规模和复杂度。如果项目规模较大,应该选择一种较为成熟和完善的软件过程模型,比如RUP或者敏捷开发等;如果项目规模较小,则可以选择更加简单的模型,比如瀑布模型或增量模型。2 .团队成员的经验和技能。如果团队成员经验丰富且具备较高的技能水平,则可以选择一种较为灵活和动态的软件过程模型,比如敏捷开发等;如果团队成员水平较为一般,则需要选择一种更加规范和标准
14、的软件过程模型,比如RUP或瀑布模型。3 .项目的需求和特点。软件开发项目的需求和特点不同,需要选择适合的软件过程模型。比如对于需要快速交付的项目,可以选择增量模型或快速原型模型等;对于需要长期维护的项目,可以选择螺旋模型或演化式开发等。敏捷开发特点及思想敏捷软件开发是基于敏捷宣言定义的价值观敏捷软件开发宣言和原则敏捷软件的十二条原则的一系列方法和实践的总称。自组织、跨职能团队运用适合他们自身环境的实践进行演进得出解决方案。换句话说敏捷开发是一种应对快速变化的需求的一种软件开发能力,只要在符合价值观和原则的基础上能让开发团队拥有应对快速变化需求的能力,这就叫做敏捷开发。2.核心理念敏捷开发是一
15、种软件开发思想和方法论,其核心理念包括以下几个重要方面:个体互动比流程和工具重要:敏捷开发强调人与人之间的交流和协作。虽然工郸口流程也很重要,但更加注重开发团队成员之间的互动,以及与客户和利益相关者之间的有效沟通。可工作的软件比详尽的文档重要海攵捷开发倡导快速交付可工作的软件原型,而不是过度关注文档编写。通过这种方式,可以更早地获取用户反馈,从而更好地满足用户需求。客户合作比合同谈判重要:敏捷开发强调与客户的积极合作,以理解和满足他们的需求。这意味着在项目进程中,随着需求的变化,开发团队愿意灵活地调整软件的功能。响应变化比遵循计划重要:敏捷开发认识到需求和市场条件会不断变化,因此更注重灵活性和适应性,而不是死板地遵循预定计划。技术卓越比满足最低需求重要:敏捷开发鼓励团队努力追求技术卓越,以确保交付的软件是高质量、可维护和可扩展的。持续交付比一次性交付重要:敏捷开发推崇通过小而频繁的软件交付,持续提供价值,而不是等待一个完整的产品版本交付。合作比合作阵营重要:敏捷开发鼓励开发团队内部和与利益相关者之间的合作,以创造共同的理瞬口成功。简单性比复杂性重要:敏捷开发鼓励简化过程和软件设计,以降低复杂性,提高可维护性。总的来说,敏捷开发的思想强调灵活性、合作、响应变化和交付价值。这些原则有助于更好地适应不断变化的需求和市场条件,以便更成功地开发软件项目。