【愚公系列】软考高级-架构设计师 072-软件过程模型(2)
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
软件过程模型是一种规划和组织软件开发过程的方法。你可以把它想象成是一张路线图,它帮助我们在软件开发的整个旅程中找到正确的方向。就像你在旅行前会查看地图一样,我们在开发软件前也会选择一个合适的过程模型,以确保我们按照一定的步骤和顺序来构建软件。
过程模型通常由一系列阶段和任务组成,这些任务在软件开发的不同阶段中都有特定的目标。每个阶段都有自己的任务和产出物,这些产出物构成了软件开发的不同部分,最终汇总成完整的软件产品。
不同的软件项目可能需要不同的过程模型。有些项目可能需要非常详细的计划和严格的控制,因此会选择瀑布模型或V模型等传统的过程模型。而有些项目可能需要更加灵活和适应变化,因此会选择敏捷方法。
通过选择适合项目性质和需求的过程模型,我们可以更好地管理项目,控制进度,提高质量,并确保我们按照既定计划前进。在我们的团队中,我们会根据每个项目的特点来决定使用哪种过程模型,以便让我们的开发过程更加有序和高效。
🚀一、软件过程模型
🔎1.敏捷模型
🦋1.1 概念
开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应
变化胜过遵循计划。
敏捷方法区别于其他方法的两个特点:
- 是“适应性”而非“预设性”。
- 是“面向人的”而非“面向过程的”。
敏捷方法的核心思想:
- 敏捷方法是适应型,而非可预测型。拥抱变化,适应变化。
- 敏捷方法是以人为本,而非以过程为本。发挥人的特性。
- 迭代增量式的开发过程。以原型开发思想为基础,采用法代增量式开发,发行版本小型化。
🦋1.2 主要的敏捷方法
-
极限编程(XP):
- 基础和价值观:交流、朴素、反馈和勇气。
- 核心理念:任何软件项目都可以通过加强交流、从简单做起、寻求反馈和勇于实事求是进行改善。
- 开发方法:采用近螺旋式的开发方法,将复杂的开发过程分解为相对简单的小周期。通过积极的交流、反馈等方法,开发人员和客户可以清楚了解开发进度、变化、待解决的问题和潜在的困难,并及时调整开发过程。
- 测试先行:XP提倡测试先行,以降低后续出现bug的几率。
-
水晶系列方法:
- 理念:以人为中心,提倡“机动性的”方法。包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。
-
并列争球法(Scrum):
- 核心概念:迭代的增量化过程,将每段时间(如30天)划分为一个个“冲刺(Sprint)”。按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
-
特性驱动开发方法(FDD):
- 核心过程:认为有效的软件开发需要人、过程和技术三个要素。包含5个核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建。
这些方法各有特点,但都强调了灵活性、迭代开发和团队合作,以适应快速变化的需求和市场。
🔎2.统一过程模型(RUP)
🦋2.1 概念
RUP(Rational Unified Process)是一种重量级的软件开发过程,它提供了详细的指导方针、模板和实例支持,旨在有效地利用商业的、可靠的方法来开发和部署软件。RUP的软件开发生命周期是一个二维的模型,其中包含了9个核心工作流程:
-
业务建模:
- 目的:理解待开发系统所在机构的商业运作,评估待开发系统对机构的影响。
- 方法:确保所有参与人员对机构有共同的认识,为系统开发奠定商业基础。
-
需求:
- 目的:定义系统功能及用户界面,为项目预算和计划提供基础。
- 方法:确保客户了解系统的功能,开发人员理解系统需求,从而明确开发目标。
-
分析与设计:
- 目的:将需求分析结果转化为分析与设计模型。
- 方法:将系统需求转换为可执行的设计模型,为后续的实现提供指导。
-
实现:
- 目的:将设计模型转换为实现结果,集成为可执行系统。
- 方法:开发人员编写代码,进行单元测试,将不同模块集成成可执行系统。
-
测试:
- 目的:验证需求是否被正确实现,发现并归档软件质量上的缺陷。
- 方法:检查系统各部分之间的交互和集成,提出软件质量改进建议。
-
部署:
- 目的:打包、分发、安装软件,升级旧系统,培训用户并提供技术支持。
- 方法:将开发完成的软件部署到实际环境中,确保用户可以正常使用。
-
配置与变更管理:
- 目的:跟踪和维护系统开发过程中产生的所有制品的完整性和一致性。
- 方法:确保所有文档、代码和其他制品都受到严格的配置和变更管理。
-
项目管理:
- 目的:为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
- 方法:确保项目按计划进行,风险得到适当管理,并在需要时进行调整。
-
环境:
- 目的:为软件开发机构提供软件开发环境,提供过程管理和工具的支持。
- 方法:建立合适的开发环境,以支持团队成员的协作和开发工作的顺利进行。
🦋2.2 生命周期
RUP把软件开发生命周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段如下。
- 初始阶段:定义最终产品视图和业务模型,并确定系统范围。
- 细化阶段:设计及确定系统的体系结构,制订工作计划及资源要求。
- 构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
- 移交阶段:把产品提交给用户使用。
🦋2.3 核心概念
- 角色:回答“Who”的问题。角色描述某个人或一个小组的行为与职责。RUP预先定义了多个角色,如体系结构师、设计人员、实现人员、测试员和配置管理人员等,并对每一个角色的工作和职责都做了详尽的说明。
- 活动:回答“How”的问题。活动是一个有明确目的的独立工作单元。
- 制品:回答“What”的问题。制品是活动生成、创建或修改的一段信息。
- 工作流:回答“When”的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。
🦋2.4 特点
- 用例驱动:需求分析、设计、实现和测试等活动都是以用例为中心进行驱动的。
- 以体系结构为中心:包括系统的总体组织和全局控制、通信协议等。体系结构是一个多维的结构,采用多个视图来描述。
- 迭代与增量:将整个项目开发分为多个迭代过程。每次迭代中,只考虑系统的一部分需求,进行分析、设计、实现、测试和部署等过程。每次迭代是在已完成部分的基础上进行的,每次增加一些新的功能实现,直至最终完成项目。
🦋2.5 4+1 视图模型
- 分析人员和测试人员关心系统的行为,侧重于用例视图;
- 最终用户关心系统的功能,侧重于逻辑视图;
- 程序员关心系统的配置、装配等问题,侧重于实现视图;
- 系统集成人员关心系统的性能、可伸缩性、吞吐率等问题,侧重于进程视图;
- 系统工程师关心系统的发布、安装、拓扑结构等问题,侧重于部署视图。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)