软件工程02软件开发过程

上传人:功*** 文档编号:249393869 上传时间:2024-10-29 格式:PPTX 页数:37 大小:7.68MB
返回 下载 相关 举报
软件工程02软件开发过程_第1页
第1页 / 共37页
软件工程02软件开发过程_第2页
第2页 / 共37页
软件工程02软件开发过程_第3页
第3页 / 共37页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020/1/8,#,软件工程,2024/10/29,2,第,2,章 软件开发过程,软件开发过程(,software development process,)又叫做软件开发生命周期(,software development life cycle, SDLC,),是软件产品开发的任务框架和规范,又可以简单的称为软件生命周期及软件过程,。,软件过程和生命周期,软件过程模型:传统过程和敏捷(,Agile,)过程,软件生命周期与开发过程,国际标准,ISO/IEC 12207,是软件生命周期过程的国际标准,旨在提供一套软件开发与维护过程中涉及的各种任务定义的标准,如软件生命周期的选择、实现与监控等。,可重复的、可预测的过程,能够提升软件生产的效率和质量。,软件工程过程小组(Software Engineering Process Group,SEPG,)提供给软件开发人员统一的标准的开发原则,充分协调各开发人员、开发小组,通过过程控制的方法,保证软件产品的质量。,2024/10/29,3,软件过程与生命周期,通常生命周期,模型要更,一般化,,而软件开发,过程则,更为,具体化。,可重复的、可预测的过程能够提升软件生产的效率和,质量。,(过程改进),生命周期,是软件开发的宏观上的框架,,软件过程则涉及到软件开发的流程等管理细节,在框架稳定的前提下允许对软件过程进行,裁剪。,4种不同类型的生命周期:顺序式、迭代式、增量式以及敏捷式,2024/10/29,4,1,软件定义,2,软件开发,3,运行维护,2024/10/29,5,软件生命周期,过程,管理主要采用的是一种“分而治之”的思想,即将整个软件的生命周期划分成,软件定义、软件开发和运行维护,三个主要的时期,每个时期再细分为具体的阶段,分别对应明确的任务。,可行性分析,与开发计划,目的:用,最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得开发,最后给决策者提供做与不做的依据,。(,较高层次的需求分析和设计,),任务:确定项目的规模和目标,确定项目的约束和限制,;进行,简要的需求分析,抽象,出逻辑,结构,建立逻辑模型,;从,逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决,办法。,每,种解决方法都要从三方面研究它的可行性:,技术可行性、,经济可行性,和社会可行性,。,描述所提出的,解决方案和方案的可行性,,并拟定,开发计划,,,包括对费用,、时间、进度、人员组织、,硬件配置,、软件开发环境和运行,环境配置,等进行说明和规划。,2024/10/29,6,需求分析,在,确定软件开发可行的情况下,对目标软件未来需要完成的功能进行的详细分析,。,需求分析,是软件开发后续阶段的基础,直接关系到整个系统开发的成功与否。由于用户的需求随着项目的进展和理解处在不断的变化之中,,应对需求进行,变更,管理,。,应,充分理解和掌握用户对目标软件的期望,除,功能需求,外还要对系统设计有影响的,非功能性需求,加以识别和分析,。,需求分析,阶段的输出是一份“,需求规格(,Specification,)说明书,”的文档。,2024/10/29,7,软件设计,软件设计是在需求分析的基础上寻求系统求解的框架,如系统的架构设计、数据设计等,。,软件,设计可分为,概要设计,和,详细设计,,此阶段的输出分别为“概要设计说明书”和“详细设计说明书”,。,设计方案,是软件实现的蓝图,应综合考虑软件的性能、扩展、安全等因素,合理规划系统模块的结构,充分考虑未来变化的可能性并预留空间,,尽可能保证系统设计结构在整体上的稳定性,。,2024/10/29,8,程序编码,此阶段是将软件设计的结果翻译成某种计算机语言实现的程序代码,。,(,要忠于设计,),在,程序编码中必须要制定统一的如何编码的标准规范,尽量提高程序的可读性、易维护性,提高程序的运行效率。,2024/10/29,9,软件测试,程序编码后需要对,代码,进行严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正,。,测试,的环节可分为,单元测试、集成测试及系统测试,三个阶段进行,。,测试,方法主要包括,黑盒和白盒方法,。,测试过程需要建立详细的测试计划、编写测试用例、记录并分析测试结果,以保证测试过程实施的有效性,避免测试的随意性。,2024/10/29,10,软件维护,软件维护,是软件生命周期中持续时间最长的阶段,是为软件能够持续适应用户的要求延续软件使用寿命的活动,。,改正性维护,:诊断,和改正在使用过程中发现的软件错误;,适应性维护,:修改,软件以适应环境的变化;,完善性,维护,:根据,用户的要求改进或扩充软件使,它更完善;,预防性维护,:修改,软件为将来的维护活动预先做准备。,2024/10/29,11,2024/10/29,12,传统生命周期模型,顺序的将生命周期阶段组织起来,严格按照需求、分析、设计、编码和测试的阶段,进行。,软件开发,软件维护,软件定义,传统的生命周期模型,其中具有代表性的包括瀑布模型、原型模型、增量模型,等。,最,基本和有效,的可供选择的,软件开发模型。,在,20,世纪,80,年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型,现在仍然是应用得,最广泛,的过程模型。,按照传统的瀑布模型来开发软件,有如下特点。,阶段间具有顺序性和,依赖性,文档驱动,推迟,实现,不急于编写代码,尽可能的理解和掌握系统需求,,清楚,地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。,2024/10/29,13,瀑布模型,质量保证的,观点,每个,阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。,2024/10/29,14,2024/10/29,15,瀑布模型的问题,传统的瀑布模型,不希望有“变化”,变化来的越晚,付出的代价越高。,设计阶段过多的假设,导致理想化、一厢情愿的东西过多。,(,用户只参与需求,),“文档驱动”,静态,2024/10/29,16,实际瀑布模型,可以在一定程度解决“变化”的问题,如何“拥抱”变化,?,计划驱动,,在对系统,整体的,把控和协调上,,具有优势,,,因此适合,规模较大的,系统或分布式开发,模式。,快速原型模型,快速原型模型(,Rapid Prototype,),的主要,作用是在用户和开发者之间起到“,桥梁,”的作用,。,开发,者和用户之间经常面临的一个状况是:用户熟悉的是业务但不懂得开发的技术,而开发者正好相反,其更熟悉具体的开发方法、工具等技术内容而不明白相关的业务,流程。,这,也是为什么需求分析较难开展的原因之一,也是无法固化用户需求的客观原因之一。,2024/10/29,17,2024/10/29,18,快速原型模型,快速原型模型的特点,快速原型模型要求,对系统进行简单和快速的分析,,快速构造一个软件,原型。,用户,和开发者在试用或演示原型过程中加强沟通和反馈,通过反复评价和改进原型,减少双方的误解,降低缺陷引入的几率,,降低,由于需求不明确带来的开发风险和提高软件质量,,获取到用户真正的需求,。,比较,适合一个全新的系统开发,用户借助,原型了解开发方向的正确性,如用户界面的构建,使用户,建立起对未来系统的认识和了解。,快速,原型中可以尝试运用未来系统中需要的新技术,提前测试一些性能上的要求是否能够达到,预期。,2024/10/29,19,快速,原型的问题,所,选用的开发技术和工具不一定是实际项目的,需要。,快速,建立起来的模型可能由于不符合各种开发规范,再加上不断的修改,质量一般都比较差,,通常,在实际开发过程中会完全抛弃之前建立起来的原型系统,。,2024/10/29,20,2024/10/29,21,增量模型,也称为渐增模型。把软件产品作为,一系列增量构件,来设计、编码、集成和测试。,每个构件由多个相互作用的模块构成,并且能够完成特定的功能。,使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。,(,滚雪球方式,),2024/10/29,22,增量模型,瀑布模型:力求一次性给用户完整的系统。,增量模型:逐步增加系统功能。,需要开放的架构设计。,螺旋模型,螺旋模型的基本思想是使用原型,及其它方法,尽量,降低风险,。,在每个阶段之前都增加了风险分析过程的快速原型模型。,特别适合于大型复杂的系统。螺旋模型沿着螺线进行若干次迭代,,四,个象限代表,了,不同,的活动。,2024/10/29,23,2024/10/29,24,简化的螺旋模型,原型模型可以在一定程度上降低风险,但对有些风险也无能为力。,需要专业的风险评估人员。,2024/10/29,25,完整的螺旋模型,2024/10/29,26,喷泉模型,迭代,是,OO,开发过程的主要特性。,喷泉模型是典型的面向对象生命周期模型。,“,喷泉,”,体现了面向对象软件开发过程,迭代和无缝,的特性。,为避免喷泉模型的过分无序,把一个,线性过程,作为总目标。,迭代,2024/10/29,27,喷泉模型,迭代:逐步求精,阶段间没有明显的界限面向对象的思想保证了各个阶段开发的一致性。,2024/10/29,28,敏捷软件开发,迭代式开发,增量交付,开发,团队和用户反馈推动产品,开发,持续集成,开发团队自我管理,敏捷宣言:,个体和互动胜过流程和工具;,工作的软件胜过详尽的文档;,客户合作胜过合同谈判;,响应变化胜过遵循计划。,增量的开发方式,增量,开发的方式即分批分期的交付用户产品,通过增量开发来应对软件产品之外的不确定因素(风险)。,敏捷方法建议,先实现必要性的用户案(用)例(用户故事),,体现出软件的价值,然后在后续版本中对功能进行细化,使得我们的软件产品的所有功能都能够达到相同的用户体验水平。,2024/10/29,29,“,用例,”,是指一件用户通过系统完成的有价值的目标,它不是一个具体的功能。,迭代,的开发方式,但用户的需求往往无法立刻稳定。,迭代的思想就是,当对需求,还没有信心的时候,不,指望构建,的软件正是客户所想要的,但可以先构建后修改,通过多次反复找到真正客户需要的软件,。(,逐步求精,),2024/10/29,30,敏捷的优势,精确,质量,速度,丰厚的投资回报率,高效的自我管理团队,敏捷,开发更适合规模中小、需求变化频繁的系统开发,并且强调团队的作用,所以更适合集中式的开发模式。,2024/10/29,31,极限编程(,XP,),e,X,treme,P,rogramming,主要目的是降低需求变化的,成本,崇尚的开发方法:,客户代表与开发团队紧密融合,结对,编程(,pair-programming,),等等,开发,流程:,编写用户故事、架构规范、实施规划、迭代计划、代码开发、单元测试、,验收测试,积极接受变化,2024/10/29,32,原则与做法,价值观与原则,互动,与,交流,反馈,简单,勇气,团队,核心做法,小规模,,频繁的版本发布,短迭代周期,测试,驱动开发(,Test-driven development,),结,对编程(,Pair programming,),持续,集成(,Continuous integration,),每日,站立会议(,Daily stand-up meeting,),共同,拥有代码(,Collative code ownership,),系统,隐喻(,System metaphor,),2024/10/29,33,SCRUM,过程,Scrum,注重过程,,XP,注重实践,需求,被定义为产品需求积压(,product backlogs,),开发过程分为多个冲刺(,Sprint,),周期,2024/10/29,34,燃尽图(,burn,down,),是一个公开展示的图表,显示当前冲刺中未完成,的数目,SCRUM,角色,产品,拥有者(,Product Owner,),:产品远景,规划,,平衡利益,相关,者利益,,,确定产品积压,的优先级等。它是开发团队和,客户间,的联络点。,利益,相关者(,Stakeholder,),:客户,或最终用户,代表,收集,编写产品需求,审查项目成果等。,专家,(,Scrum Master,),:指导进行,Scrum,开发与,实践,,,是,开发团队与产品,拥有者间的,联络点。,团队,成员(,Team Member,),:项目,开发人员。,2024/10/29,35,DevOps过程,DevOps:开发(Development)和运维(Operations),源于敏捷开发过程,遵从基本的敏捷宣言,强调了“个体和交互胜过流程和工具”的作用,但却不受限于某一种软件过程,甚至是在瀑布模型中也会发挥作用。,DevOps是,一组过程、方法与系统的统称,,用于促进开发、技术运营和质量保证部门之间的沟通、协作与整合。,强调开发和运维必须紧密合作。,2024/10/29,36,DevOps过程,DevOps的核心目标是,自动化,和,可持续交付,。,实现全生命周期的工具全链路打通与自动化、跨团队的线上协作能力,从而全面提高生产环境的可靠性、稳定性、弹性和安全性。,2024/10/29,37,纵向集成打通了应用全生命周期,横向集成打通了架构、开发、管理、运维等部门墙,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!