【愚公系列】软考高级-架构设计师 071-软件过程模型(1)

举报
愚公搬代码 发表于 2024/07/29 17:22:04 2024/07/29
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

软件过程模型是一种规划和组织软件开发过程的方法。你可以把它想象成是一张路线图,它帮助我们在软件开发的整个旅程中找到正确的方向。就像你在旅行前会查看地图一样,我们在开发软件前也会选择一个合适的过程模型,以确保我们按照一定的步骤和顺序来构建软件。

过程模型通常由一系列阶段和任务组成,这些任务在软件开发的不同阶段中都有特定的目标。每个阶段都有自己的任务和产出物,这些产出物构成了软件开发的不同部分,最终汇总成完整的软件产品。

不同的软件项目可能需要不同的过程模型。有些项目可能需要非常详细的计划和严格的控制,因此会选择瀑布模型或V模型等传统的过程模型。而有些项目可能需要更加灵活和适应变化,因此会选择敏捷方法。

通过选择适合项目性质和需求的过程模型,我们可以更好地管理项目,控制进度,提高质量,并确保我们按照既定计划前进。在我们的团队中,我们会根据每个项目的特点来决定使用哪种过程模型,以便让我们的开发过程更加有序和高效。

🚀一、软件过程模型

🔎1.瀑布模型

🦋1.1 概念

瀑布模型(SDLC)是一个经典的软件生命周期模型,一般将软件开发分为以下几个阶段:

  1. 可行性分析(计划):在这个阶段,进行项目的初步规划和评估,确定项目的可行性,包括技术、经济、法律等方面的考虑。

  2. 需求分析:在这个阶段,收集、分析和确认用户的需求和期望,明确软件系统应该具备的功能和特性。

  3. 软件设计:

    • 概要设计:在这个阶段,设计软件系统的整体架构,确定模块间的关系和交互方式。
    • 详细设计:在这个阶段,根据概要设计的基础,详细设计每个模块的功能和实现细节,包括数据结构、算法等。
  4. 编码:根据详细设计的要求,进行编码实现软件系统的各个模块。

  5. 测试:在这个阶段,对编码后的软件进行各种测试,包括单元测试、集成测试、系统测试等,以验证软件的正确性和可靠性。

  6. 运行维护:软件交付后,需要进行运行和维护,包括bug修复、性能优化、功能扩展等工作,以确保软件持续正常运行并满足用户需求。

在这里插入图片描述

🦋1.2 特点

特点 描述
阶段顺序性 开发过程按照固定的阶段顺序进行,每个阶段的输出作为下个阶段的输入,形成严格的线性流程。
逐步推进 每个阶段都有明确的工作内容和成果,开发团队逐步推进,直到完成整个软件开发过程。
输入输出清晰 每个阶段都有明确的输入和输出,使得开发过程可控,能够清晰地跟踪和管理项目进展。
评审和确认 在每个阶段末尾进行评审,确保工作成果符合要求和质量标准,只有经过确认的成果才能传递给下个阶段。
反馈和迭代 如果在评审中发现问题,需要及时反馈并进行修正。在极端情况下,可能需要返回前一阶段甚至更早的阶段进行修正。
成本控制 瀑布模型试图通过一次性完成各个阶段的工作来控制开发成本,尽量减少多个阶段间的反复,以相对较小的费用来开发软件。

🔎2.原型化模型

🦋2.1 概念

原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。适合于需求不明确的情况。

🦋2.2 特点

用户需求的情况下,原型应当具备的特点包括:

  1. 实际可行:原型应该具备实际的可行性,能够展示系统的基本功能和特征,以便用户能够真实地体验和评估。

  2. 具有最终系统的基本特征:原型应该包含最终系统的基本特征和功能,以确保用户能够清晰地理解系统的核心功能和界面设计。

  3. 构造方便、快速,造价低:原型的构建过程应该方便、快速且造价低廉,以便及时满足用户的需求和反馈,并能够在开发过程中灵活调整和改进。

原型法认为,在很难一下子全面准确地提供用户需求的情况下,可以通过以下方式逐步满足用户需求:

  • 动态响应:原型可以根据用户的反馈和需求动态调整和改进,以确保最终产品能够满足用户的期望和需求。

  • 逐步纳入:原型法允许逐步将用户需求纳入到开发过程中,不需要一开始就完全明确所有需求,而是在开发过程中逐步完善和调整,提高系统的适应性和用户满意度。

🔎3.螺旋模型

🦋3.1 概念

螺旋模型是一个演化软件过程模型,将原型实现的迭代特征与线性顺序(瀑布)模型中控制的和系统化的方面结合起来。在螺旋模型中,软件开发是一系列的增量发布。

螺旋模型的特点包括:

  1. 演化性:螺旋模型支持软件系统的逐步演化,通过不断的迭代和增量发布,逐步完善和扩展软件功能。

  2. 原型实现与线性顺序的结合:螺旋模型结合了原型实现的迭代特征和线性顺序模型的控制和系统化方面,既可以灵活应对需求的变化,又能够保证开发过程的可控性和系统性。

  3. 增量发布:软件开发过程被分解为一系列的增量发布,每个增量都是对系统的一个部分进行开发、测试和部署,最终形成完整的软件产品。

  4. 风险驱动:螺旋模型以风险管理为核心,通过在每个迭代周期中进行风险评估和控制,降低项目失败的风险,并提高项目的成功率。

  5. 适用性广泛:螺旋模型适用于大多数项目,尤其是对于大型、复杂、创新性强或需求不明确的项目,能够在开发过程中灵活应对需求的变化和不确定性。

🦋3.2 四个阶段

螺旋模型的开发过程具有周期性重复的螺旋线状,每个周期包含四个象限,分别标志每个周期所划分的四个阶段:

  1. 制订计划:在这个阶段,确定项目的目标、约束条件、资源需求等,制定项目计划和进度安排。

  2. 风险分析:在这个阶段,对项目可能面临的风险进行分析和评估,确定可能存在的问题并提出解决方案。

  3. 实施工程:在这个阶段,进行系统的设计、开发、测试和部署工作,按照计划和风险分析的结果执行项目任务。

  4. 客户评估:在这个阶段,与客户进行沟通和评估,收集反馈意见并进行改进,以确保系统满足用户需求和期望。

螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的系统。通过周期性的重复和风险分析,螺旋模型能够在项目开发过程中及时识别和解决问题,降低项目失败的风险,并确保项目按时交付并满足用户需求。
在这里插入图片描述

🔎4.V模型

🦋4.1 概念

V模型从整体上看起来,呈现出一个V字型的结构,由左右两边组成,左边和右边分别代表了不同的阶段和测试类型:

左边的下画线分别代表了以下阶段:

  1. 需求分析:在这个阶段,收集、分析和确认用户的需求和期望,明确软件系统应该具备的功能和特性。
  2. 概要设计:在这个阶段,设计软件系统的整体架构,确定模块间的关系和交互方式。
  3. 详细设计:在这个阶段,根据概要设计的基础,详细设计每个模块的功能和实现细节,包括数据结构、算法等。
  4. 编码:根据详细设计的要求,进行编码实现软件系统的各个模块。

右边的上画线代表了以下测试类型:
5. 单元测试:在这个阶段,对软件的各个单元(模块)进行测试,验证其功能是否按照设计要求正常运行。
6. 集成测试:在这个阶段,将已经通过单元测试的模块逐步集成,测试它们之间的接口和交互是否正常。
7. 系统测试:在这个阶段,对整个软件系统进行测试,验证其功能、性能、安全性等是否符合用户需求和预期。
8. 验收测试:在这个阶段,由用户或客户对软件进行测试,确认软件是否满足其需求,是否可以接受交付使用。

在这里插入图片描述

🦋4.2 特点

V模型的特点如下:

  • 单元测试的主要目的是针对编码过程中可能存在的各种错误;
  • 集成测试的主要目的是针对详细设计中可能存在的问题;
  • 系统测试主要针对概要设计,检查系统作为一个整体是否有效地得到运行;
  • 验收测试通常由业务专家或者用户进行,以确认产品能真正符合用户业务上的需要;
  • V模型适用于需求明确和需求变更不频繁的情形。

🔎5.增量模型

🦋5.1 概念

首先开发核心模块功能,而后与用户确认,之后再开发次核心模块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发,优先级最高的服务最先交付。
在这里插入图片描述

🦋5.2 特点

特点:

  1. 首先开发核心模块功能:采用增量模型时,首先着重开发系统的核心功能和基本特性,以满足最基本的需求。
  2. 与用户确认:每个增量开发完成后,与用户进行确认,确保用户满意度,并根据反馈进行调整和改进。
  3. 逐步完善功能:在用户确认后,继续开发次要的核心模块功能,逐步完善系统的功能和特性。
  4. 每次开发一部分功能:增量模型采取逐步迭代的方式进行开发,每次只开发系统的一部分功能,使得开发过程更为可控。
  5. 优先级最高的服务最先交付:根据用户需求的优先级,优先开发优先级最高的功能,以尽快满足用户需求。

难点:

  1. 模块划分困难:由于增量模型并非从系统整体角度规划各个模块,因此可能导致模块划分不清晰,增量之间的关系不明确。
  2. 客户需求划分困难:将客户需求划分为多个增量可能是一项挑战,需要深入理解用户需求,并根据优先级和依赖关系进行合理划分。
  3. 每次增量版本的独立性:虽然每次增量版本都可作为独立可操作的作品,但需要确保各个增量之间的兼容性和一致性,以确保整体系统的稳定性和可靠性。

与原型不同的是,增量模型的每一次增量版本都是可操作的,具有一定的功能和特性,而原型的构造一般是为了演示和验证概念,不一定具备完整的功能。

🔎6.喷泉模型

🦋6.1 概念

喷泉模型是一种软件开发模型,也被称为喷泉开发模型或者逐步增量模型。它是增量模型的一种变体,强调了开发过程的逐步演化和持续改进。与传统的瀑布模型相比,喷泉模型更加灵活和迭代,注重快速交付部分功能,并在每个阶段不断迭代和改进。

🦋6.2 特点

喷泉模型的特点包括:

  1. 阶段交叠:不同于瀑布模型的线性顺序,喷泉模型的各个阶段可以部分交叠,使得开发过程更加迭代和灵活。
  2. 逐步交付:喷泉模型强调逐步交付软件的部分功能,每个增量都是可运行的软件版本,可以及时满足用户的需求。
  3. 持续改进:在喷泉模型中,开发团队通过不断的迭代和反馈,持续改进软件产品,以适应用户需求的变化和不断提升产品质量。
  4. 用户参与:喷泉模型鼓励用户在开发过程中参与,并及时提供反馈意见,以确保最终交付的产品符合用户期望。
  5. 风险管理:喷泉模型重视风险管理,通过及时的风险评估和控制,降低项目失败的风险,并提高项目的成功率。

总的来说,喷泉模型通过持续的迭代和交付,以及用户参与和持续改进,使得软件开发过程更加灵活和可控,能够更好地适应需求的变化和不确定性。

🔎7.基于构件的开发模型CBSD

🦋7.1 概念

基于构件的软件开发模型(Component-Based Software Development,CBSD)是一种软件开发方法,它将软件系统划分为多个可重用的、独立的构件(也称为组件),并通过组合这些构件来构建整个系统。

🦋7.2 特点

CBSD的主要特点包括:

  1. 构件化: 软件系统被分解为多个独立的构件,每个构件都是可重用的、具有特定功能的单元。这些构件可以是现有的组件库中的标准构件,也可以根据项目需求定制开发的。

  2. 组装: 开发过程中,通过组装这些独立的构件来构建整个系统。构件之间通过定义好的接口进行交互,使得系统具有灵活性和可扩展性。

  3. 重用: CBSD鼓励最大限度地重用已有的构件,从而提高开发效率和软件质量。通过构件的重用,可以减少开发时间和成本,并降低开发过程中的风险。

  4. 独立开发和维护: 每个构件都是独立开发和维护的,开发团队可以专注于构件的功能和实现细节,而不必关注整个系统的复杂性。

  5. 标准化接口: 构件之间通过标准化的接口进行通信和交互,使得构件可以被灵活地替换和升级,而不影响整个系统的稳定性和功能。

  6. 快速开发和迭代: CBSD支持快速的软件开发和迭代,可以根据需求动态地添加、修改或删除构件,从而更好地满足用户的需求和变化。

总的来说,基于构件的软件开发模型(CBSD)通过构件的重用和组装,提高了软件开发的效率和质量,使得开发过程更加灵活和可控。

🔎8.形式化方法模型

🦋8.1 概念

形式化方法模型是一种软件工程方法,它采用数学和形式化技术来进行软件开发、验证和验证。形式化方法的核心思想是通过数学逻辑、形式化规约和严格的推理来确保软件系统的正确性和可靠性。这些方法通常适用于对软件系统进行严格的规约和证明,尤其是对于安全关键系统和高可靠性系统的开发。

🦋8.2 特点

形式化方法模型的特点包括:

  1. 数学基础: 形式化方法依赖于数学基础,包括数理逻辑、集合论、自动机理论等,以确保开发过程和系统规约的准确性和一致性。

  2. 形式化规约: 开发过程中,使用形式化的规约语言对系统进行严格描述和定义,明确定义系统的行为、约束条件和性质要求。

  3. 形式化验证: 利用形式化方法对系统进行验证,包括模型检验、定理证明、符号执行等技术,以确保系统满足其规约要求,并具有所需的性质和行为。

  4. 严格推理: 形式化方法通过严格的推理和证明来验证系统的正确性和性能特性,确保系统在各种情况下都能够按照规约要求正确运行。

  5. 高可靠性: 由于形式化方法的严谨性和准确性,它通常适用于对高可靠性和安全性要求较高的系统开发,如航空航天系统、铁路信号系统等。

  6. 复杂性管理: 形式化方法可以帮助管理和理解复杂系统的行为和结构,通过形式化规约和验证,减少系统设计和实现中的错误和缺陷。

尽管形式化方法在确保软件正确性方面具有很高的能力,但其应用通常需要专业的数学和形式化知识,并且在实际开发中可能会增加开发成本和时间。因此,形式化方法通常适用于对系统正确性要求非常严格的领域,如航空航天、医疗设备等。

🚀二、题目

在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。