软件设计师笔记系列(四)

😀前言
随着技术的快速发展,软件已经成为我们日常生活中不可或缺的一部分。从智能手机应用到大型企业系统,软件都在为我们提供便利、增强效率和创造价值。然而,随之而来的是对软件质量的日益增长的关注。软件的质量不仅关乎其功能性和性能,还涉及其可靠性、使用性、可维护性和可移植性。为了更好地理解和评估软件的质量,我们需要一个结构化的方法来描述和测量软件的各种质量特性。本章将深入探讨软件工程的基础知识,包括软件过程、软件开发过程模型、软件测试和软件质量模型等内容

🏠个人主页:尘觉主页
在这里插入图片描述

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🥰阿里云专家博主
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 😉亚马逊DyamoDB结营

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • 软件设计师笔记系列(四)
    • 第五章 软件工程基础知识
        • 软件过程
          • 🔺 1. 能力成熟度模型(CMM)
          • 🔺 2. 能力成熟度模型集成(CMMI)
      • 软件过程模型
        • 瀑布模型
        • 增量模型
        • 演化模型
        • 喷泉模型
      • 敏敏方法
        • 极限编程(XP)
        • 水晶法(Crystal)
        • 并列争求法(Scrum)
        • 自适应软件开发(ASD)
        • 敏捷统一过程(AUP)
      • 概要设计
      • 详细设计
      • 系统测试
        • 系统测试原则
      • 单元测试
      • 集成测试
      • 动态测试
        • 黑盒测试
        • 白盒测试
        • 系统维护概述
          • 🔺 1. 系统可维护性概念
          • 🔺 2.系统维护的内容及类型
      • 软件质量模型
    • 😄总结

软件设计师笔记系列(四)

第五章 软件工程基础知识

标记🔺需背诵

软件过程
🔺 1. 能力成熟度模型(CMM)

CMM 将软件过程改进分为以下5个成熟度级别:

1)初始级

软件过程的特点是杂乱无章,有时甚至很混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用。

2)可重复级

建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功。

3)已定义级

管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准软件过程

4)已管理级

制定了软件过程和产品质量的详细度量标准。软件过程的产品质量都被开发组织的成员所理解和控制。

5)优化级

加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进。

🔺 2. 能力成熟度模型集成(CMMI)

CMMI 提供了两种表示方法:

1)阶段式模型

阶段式模型的结构类似于 CMM,它关注组织的成熟度。

有五个成熟度等级:

  • 初始的:过程不可预测且缺乏控制。
  • 已管理的:过程为项目服务。
  • 已定义的:过程为组织服务。
  • 定量管理的:过程已度量和控制。
  • 优化的:集中于过程改进。

2)连续式模型

连续式模型关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力能力。

CMMI 中包括6个过程域能力等级:

  • CL₀(未完成的):过程域未执行未得到 CL₁ 中定义的所有目标。
  • CL₁(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工
    作产品,以实现支持过程域的特定目标
  • CL₂(己管理的):其共性目标集中于己管理的过程的制度化。根据组织级政策规定过
    程的运作将使用哪个过程,项目遵循己文档化的计划和过程描述,所有正在工作的人
    都有权使用足够的资源,所有工作任务和工作产品都被监控、控制和评审。
  • CL₃(己定义级的):其共性目标集中于己定义的过程的制度化。过程是按照组织的剪
    裁指南从组织的标准过程集中剪裁得到的,还必须收集过程资产和过程的度量,并用
    于将来对过程的改进。
  • CL₄(定量管理的):其共性目标集中于可定量管理的过程的制度化。使用测量和质量
    保证来控制和改进过程域,建立和使用关于质量和过程执行的定量目标作为管理
    准则。
  • CL₅(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户要求的改变
    和持续改进计划中的过程域的功效。

软件过程模型

软件开发过程模型是指为了有效地开发、维护和更新软件系统,提出的一系列步骤、阶段和方法的系统框架,以实现提高软件质量、加快开发速度和降低开发成本的目的。

常见的软件开发过程模型包括瀑布模型、增量模型、演化模型和喷泉模型。

瀑布模型

瀑布模型是一种线性的软件开发过程模型,开发流程严格按照顺序依次进行,每个阶段都必须完成后才能进入下一个阶段。瀑布模型包括需求分析、设计、编码、测试和维护五个阶段。

特点:

  • 明确的阶段,每个阶段都有明确可执行的目标
  • 任务分工明确,各个阶段的任务可以并行开展
  • 阶段间有严格的输入、输出关系

不足:

  • 迭代能力不强,回退成本高,变更需求引起全局变化成本高
  • 不适用于需求不完全确定的项目、对质量控制要求极高的项目
增量模型

增量模型采用了逐步完善的思路,将软件的开发过程划分为一个个的增量,每个增量都能够独立实现某一或多项功能或特性。在逐步实现的过程中,可以不断根据需求变化来进行迭代,从而保证最终的软件达到客户需求和期望。

特点:

  • 采用可迭代的方式,适应需求不断变化的局面
  • 可集成性强,增量之间保持一致性
  • 开发完一个增量可实现部分投入使用

不足:

  • 需求变化频繁,增量之间的界限可能模糊,不便于控制
  • 增量标准的确定和成本效益考虑要求高
演化模型

演化模型是一种以进化为中心的软件开发过程模型,侧重于以人的知识和技能为核心,强调在开发过程中不断地学习、改进和重构。演化模型适用于复杂性较高、需求不稳定的软件开发项目。

特点:

  • 适应需求频繁变动和较长开发周期的软件开发项目
  • 开发人员可不断地矫正和完善软件,可利用先前的成果进行开发
  • 风险得到有效控制,软件质量有所提高

不足:

  • 开发人员几乎对整个软件的开发掌握程度较低,软件项目的可控性相对较差
  • 软件演化过程因为没有严格的阶段,是软件项目能否成功的关键之一
喷泉模型

喷泉模型是一种基于风险管理的软件开发过程模型,强调需要通过精细的风险分析和风险管理来降低软件开发的风险。喷泉模型包含三个阶段:确定性阶段、风险工程阶段和支持性阶段。

特点:

  • 考虑风险的因素,强调风险的管理和控制
  • 逐步递增开发,先确定重要功能,在不断补充和完善功能
  • 每次递增是独立的,能够实现部分投入使用
  • 对于需求、设计等方面的变化能够有较好的适应性

不足:

  • 开发人员难以准确把握风险,可能导致风险的发生和增加
  • 递增过程中缺乏整体性的考虑,可能出现集成困难的情况
  • 难以精确评估投资回报,不便于制定成本预算

敏敏方法

敏捷方法是一种反应灵活、拥有高度互动性和以人为本的软件开发方法。它的核心是通过不断地交付成果和及时反馈,来满足客户需求和不断变化的业务环境。以下是敏捷方法中的一些常见实践:

  • 极限编程(XP)
  • 水晶法(Crystal)
  • 并列争求法(Scrum)
  • 自适应软件开发(ASD)
  • 敏捷统一过程(AUP)
极限编程(XP)

XP 是一种敏捷方法,它注重软件开发过程的可持续性和软件产品的高质量。XP 方法主要包括测试驱动开发、持续集成、设计简单、重构和小步交付等实践,能够提高软件开发的质量和可靠性。

水晶法(Crystal)

Crystal 是一种敏捷方法,它注重团队成员的协作和沟通,强调不同规模和复杂度的软件开发项目需要采用不同的方法。Crystal 方法通过对不同的项目规模和复杂度进行分类,针对性地提供了不同的软件开发模型和方法,能够加强软件开发团队的可持续性和合作精神。

并列争求法(Scrum)

Scrum 是一种敏捷方法,它强调团队的自我管理和创造力,通过不断迭代和反馈来持续提高软件产品的价值。Scrum 过程主要包括产品待办列表、迭代、日常会议、回顾和展示等环节,能够加强团队协作和增强开发效率。

自适应软件开发(ASD)

ASD 是一种敏捷方法,它强调团队自治和边缘化的规划,通过不断探索和实验来寻找最优解。ASD 方法主要包括多个迭代周期和完整开发周期的规划,允许团队自行确定工作重点,增强团队成员的创造力和参与程度。

敏捷统一过程(AUP)

AUP 是一种敏捷方法的变体,注重详细和规范的迭代过程和文档,同时强调迭代周期的规划和管理。AUP 方法主要包括迭代周期和完整开发周期的明确,规范化的需求、设计和测试活动,能够提高软件开发的整体效率和质量。

概要设计

  1. 设计软件系统总体结构
  • 确定每个模块的功能
  • 确定模块之间的调用关系
  • 确定模块之间的接口
  1. 数据结构及数据库设计
  2. 编写概要设计文档
  3. 评审

详细设计

  1. 对每个模块进行详细的算法设计
  2. 对模块内的数据结构进行设计
  3. 对数据库进行物理设计
  4. 其他设计
  5. 编写详细设计说明书
  6. 评审

系统测试

意义:系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。
目的:测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。

系统测试原则
  1. 应尽早并不断地进行测试。
  2. 测试工作应该避免由原开发软件的人或小组承担。
  3. 在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期输出结果。
  4. 在设计测试用例时,不仅要设计有效、合理的输入条件,也要包含不合理、失效的输入条件。
  5. 在测试程序时,不仅要检验程序是否做了该做的事,还要校验程序是否做了不该做的事。
  6. 严格按照测试计划来进行,避免测试的随意性。
  7. 妥善保存测试计划、测试用例。
  8. 测试例子都是精心设计出来的。
  9. 系统测试阶段的测试目标来自于需求分析阶段。

单元测试

  1. 单元测试的测试内容
  • 模块接口。测试模块的数据流可以正确地流入、流出。
  • 局部数据结构。
  • 重要的执行路径。
  • 出错处理。
  • 边界条件。
  1. 单元测试过程
  • 驱动模块。
  • 桩模块。

集成测试

  1. 自顶向下集成测试

自顶向下集成测试是一种构造软件体系结构的增量方法。

  1. 自底向上集成测试

自底向上集成测试就是从原子模块(程序结构的最底层构件)开始进行构造和测试。

动态测试

黑盒测试
  • 等价类划分:有效等价类、无效等价类
  • 边界值分析
  • 错误推测
  • 因果图
白盒测试
  1. 逻辑覆盖。逻辑覆盖考察用测试数据运行被测程序时对程序逻辑的覆盖程度

逻辑覆盖标准有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

  1. 循环覆盖
  2. 基本路径测试
系统维护概述
🔺 1. 系统可维护性概念

系统是否能被很好地维护,可以用系统的可维护性这一指标来衡量。

系统可维护性的评价指标

  • 可理解性。
  • 可测试性。
  • 可修改性。

编写高质量文档可以提高软件开发的质量。

文档也是软件产品的一部分,没有文档的软件就不能称之为软件。

软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量高质量文档对于软件产品的效益有着重要的意义。

总的来说,软件文档只好不坏,选项中说软件文档不好的就是不正确的。

🔺 2.系统维护的内容及类型

软件维护:

  • 正确性维护。正确性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。

  • 适应性维护。适应性维护是指使应用软件适应信息技术变化和管理需求变化而进行的修改。

  • 完善性维护。这是为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。

  • 预防性维护。为了改进应用软件的可靠性和可维护性,为了适应未来的软/硬件环境的变化。

    可靠性、可用性利可维护性是软件的质量属性,软件工程中,用 0-1 之间的数来度量。
    可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。可以用 MTTF/(1+MTTF) 来度量,其中 MTTF 为平均无故障时间。
    可用性是在给定的时间点上,一个系统能够按照规格说明正确运作的概率。可以用 MTBF/(1+MTBF) 来度量,其中 MTBF 为平均失效间隔时间。
    可维护性是在给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完
    成维护活动的概率。可以用 1/(1+MTTR) 来度量,其中 MTTR 为平均修复时间。

软件质量模型

#### 为什么软件质量模型重要?
  • 共同的语言:它为所有涉及软件开发的各方提供了一个共同的语言和参考,从而确保了对质量的共同理解。
  • 质量评估:它提供了一个框架,用于评估软件产品的质量,从而帮助识别潜在的问题和改进点。
  • 质量保证:通过使用这些模型,组织可以确保其软件满足既定的质量标准。
  • 决策支持:它为管理层提供了有关软件质量的关键信息,从而支持更好的决策。

😄总结

经过本章的学习,我们对软件工程的基础知识有了更深入的了解。我们明白了软件开发不仅仅是编写代码,更多的是遵循一系列的过程和方法来确保软件的质量和可靠性。软件测试是确保软件质量的关键环节,而软件质量模型为我们提供了一个评估和改进软件质量的框架。随着技术的不断进步,软件工程的方法和工具也在不断发展和完善。但不变的是,软件的质量始终是我们追求的目标。希望通过本章的阅读,大家能够更好地理解和应用软件工程的知识,为创造高质量的软件产品做出贡献。

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144623.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于微信小程序的高校宿舍管理系统设计与实现(亮点:选择宿舍、宿舍评分、宿舍报修)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 文章目录 系列文章目录[TOC](文章目录) 前言1、Eureka 两大组件2、Eureka 服务注册与发现3、案例3.1、创建主工程3.1.1、主…

【Java 进阶篇】深入理解 SQL 聚合函数

在 SQL 数据库中,聚合函数是一组强大的工具,用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户,了解聚合函数都是非常重要…

Android12之Codec2.0配置编解码器为H264实现(四十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)

在上篇介绍了Qt点亮I.MX6U开发板的一个LED,对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的,就不做详细介绍,具体可参考Qt控制I.MX6U开发板的一个蜂鸣器,本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…

李宏毅机器学习第一课(结尾附作业模型详细分析)

机器学习就是让机器找一个函数f,这个函数f是通过计算机找出来的 如果参数少的话,我们可以使用暴搜,但是如果参数特别多的话,我们就要使用Gradient Descent Regression (输出的是一个scalar数值) Classification (在…

QT配置MySQL数据库 ninja: build stopped: subcommand failed

QT配置MySQL数据库 我当前的软件版本:QT Creator 10.0.2 (community),MingW 6.4.3 (QT6),MySQL 8.0。 MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL"),这个时候是不支持MYSQL数据…

数据集笔记:2015上海地铁一卡通数据

数据地址:上海地铁数据_免费高速下载|百度网盘-分享无限制 (baidu.com) 数据介绍 上海2015年几天的地铁一卡通出入站信息 卡号、交易日期、交易时间、公交线路/地铁站点中文名称、行业名称(公交、地铁、出租、轮渡、PR停车场)、交易金额、交易性质(非优惠、优惠、…

PHP生成二维码带图标代码实例

PHP生成二维码带图标代码实例(PHP QR Code二维码生成类库) public static function png($text, $outfilefalse, $levelQR_ECLEVEL_L, $size3, $margin4, $saveandprintfalse) { $enc QRencode::factory($level, $size, $margin); return $enc->…

token登录的实现

token登录的实现 我这种token只是简单的实现token,就是后端利用UUID 生成简单随机码,利用随机码作为在Redis中的键,然后存储的用户信息作为值,在每次合理请求的时候对token的有效时间进行刷新(利用拦截器)&…

第P7周—咖啡豆识别(1)

数据集及wen件目录介绍: 数据集:工作台 - Heywhale.com 一、前期工作 1.1 数据详情 import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import transforms, datasets import os,…

笔试强训Day7

T1&#xff1a;合法括号序列判断 链接&#xff1a;合法括号序列判断__牛客网 给定一个字符串A和其长度n&#xff0c;请返回一个bool值代表它是否为一个合法的括号串&#xff08;只能由括号组成&#xff09;。 经典括号匹配问题&#xff0c;考察栈的使用 #include<iostre…

Pytest+Allure+Excel接口自动化测试框架实战

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不仅以 Web 的方式展示了简介的测试结果&#xff0c;而且允许参与开发过程的每个人可以从日常执行的测试中&#xff0c;最大限度地提取有用信息。 Allure 是由 Java 语言开发的…

常识判断 --- 科技常识

目录 力与热 光和声 航空成就 垃圾分类 百科知识 血型 二十四节气歌 春雨惊春清谷天 夏满忙夏暑相连 秋处露秋寒霜降 冬雪雪冬小大寒 力与热 光和声 航空成就 垃圾分类 百科知识 血型

【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1问题总结

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

NFT Insider#109:The Sandbox推出了首个足球小将 NFT 作品集,YGG Web3 游戏峰会即将开启!

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

API 设计/开发/测试工具:Apifox与怎么通过拦截器

目录 一、测试接口如何创建&#xff1f; 二、如何添加body和header&#xff1f; 三、如果项目设置的有拦截器&#xff1f; 四、拦截器概念&#xff1a; 4.1使用拦截器概念 4.2 先写一个配置类WebMvcConfig.java 4.3 AuthInitInterceptor拦截器中实现 一、测试接口如何创建…

数据结构:简单记录顺序表、链表、栈、队列

初学者很容易认为顺序表、链表、栈、队列是四种并列的数据结构&#xff0c;其实仔细想想并不是。 注意区分&#xff1a; 顺序表和链表是指数据的存储结构&#xff0c;是线性表的一种&#xff0c;顺序表一般指的就是数组&#xff0c;数据存储的逻辑顺序和物理顺序都是连续的&a…

【图像处理】SIFT角点特征提取原理

一、说明 提起在OpenCV中的特征点提取&#xff0c;可以列出Harris&#xff0c;可以使用SIFT算法或SURF算法来检测图像中的角特征点。本篇围绕sift的特征点提取&#xff0c;只是管中窥豹&#xff0c;而更多的特征点算法有&#xff1a; Harris & Stephens / Shi–Tomasi 角点…

支付宝电脑网站支付,异步通知

一&#xff1a;异步通知是支付宝回调商户的服务器&#xff0c;所以这个地址需要通过外网访问&#xff0c;在真实项目中都会有对应的服务器&#xff0c;但是在测试中只有使用内网穿透工具 推荐使用NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 配置好内网穿透之后不要忘记…