软件工程知识点

ops/2024/12/12 14:50:45/

软件开发模型1

在这里插入图片描述

软件开发模型2

软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框典型的软件过程模型有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型基于构件的开发模型和形式化方法模型等。
在这里插入图片描述

在这里插入图片描述

极限编程

在这里插入图片描述

开发方法

在这里插入图片描述

RUP阶段

RUP在每个阶段都有主要目标,在构建阶段结束时产生“在适当的平台上集成的软件产品”
初启阶段结束时产生一个构想文档、一个有关用例模型的调查、一个初始的业务用例、一个早期的风险评估和一个可以显示阶段和迭代的项目计划等制品;
精化阶段结束时产生一个补充需求分析、一个软件架构描述和一个可执行的架构原型等制品;
构建阶段结束时的成果是一个准备交到最终用户手中的产品,包括具有最初运作能力的在适当的平台上集成的软件产品、用户手册和对当前版本的描述;
移交阶段结束时产生移交给用户产品发布版本。

敏捷开发

在这里插入图片描述
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想。常见的敏捷开发方法有极限编程法、水晶法、并列争球法和自适应软件开发方法
(1)极限编程是一种轻量级的开发方法,它提出了四大价值观:沟通、简单、反馈、勇气。五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。十二个最佳实践:计划游戏、隐喻、小型发布、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户和编码标准。
(2)水晶法强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论。
(3)并列争球法的核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件。
(4)自适应软件开发的核心是三个非线性的,重叠的开发阶段:猜测、合作、学习。
在这里插入图片描述
在这里插入图片描述

管道过滤器

在这里插入图片描述
在这里插入图片描述

模块设计原则

在这里插入图片描述

模块之间的耦合有七种类型

在这里插入图片描述
在这里插入图片描述

软件测试

单元测试:其实就是开发中的测试
自顶向下集成测试:从具体到抽象,不需要编写驱动模块,需要编写桩模块
自底向上集成测试:从抽象到具体,需要编写驱动模块,不需要编写桩模块
回归测试:就是重新测试
冒烟测试:没考过。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试技术

技术:等价类划分、边界值分析、错误推测、因果图

测试策略

自底向上驱动程序、自顶向下桩程序

测试顺序

在这里插入图片描述

测试方法

在这里插入图片描述

白盒测试覆盖测试法

覆盖率从低到高:

  • 语句覆盖法:语句覆盖法要求设计足够多的测试用例,使得程序中每条语句至少被执行一次,是最基本的覆盖要求
  • 分支覆盖法:又称判定覆盖法,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即程序中的每个分支至少执行一次,每个判断的取真、取假至少执行一次。
  • 条件覆盖法:要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。
  • 分支条件覆盖法:又称判定条件覆盖法,要设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。
  • 条件组合覆盖法:要求设计足够多的测试用例,使得判定中的每个条件结果的所有可能结果至少出现一次,这样也会使得每个判定本身的所有可能结果至少出现一次。
  • 路径覆盖法:要求设计足够多的测试用例,覆盖程序中所有可能的执行路径。

白盒测试原则

在这里插入图片描述

McCabe复杂度(重要)

V(G)=m-n+2,
其中V(G)是有向图G中的环路个数,m是G中的有向弧数,n是G中的节点数.
也可用闭环的个数+1,计算复杂性。
在这里插入图片描述

软件能力成熟度模型

将软件能力成熟度自低到高依次划分为5级.
第一级:初始级(Initial);无序,随意
初始级的软件过程是无序的,项目的执行是随意甚至是混乱的。工作方式处于救火状态,不断的应对突如其来的危机;
第二级:可重复级(Repeatable);基本的项目管理管理
建立了基本的项目管理过程来跟踪费用,进度和功能特性,制定了必要的过程纪律,能重复早先类似的应用项目取得的成功。
第三级:已定义级(Defined);标准化,文档化
已经将软件管理核工程两方面的过程文档化,标准化,并综合成组织的标准软件过程,所有项目均使用该标准开发维护软件。
第四级:已管理级(Managed);可预测
收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解和控制。
第五级:优化级(Optimizing)。优化
过程的量化反馈和先进的新思想,新技术促使过程不断改进。

软件过程改进

在这里插入图片描述

甘特图

在这里插入图片描述

PERT图

  • 最早开始时间
  • 最迟开始时间
  • 松弛时间
    如果2个节点同时指向一个节点时,2条路径计算最早开始时间后,取最大值。
    如果是计算最迟时间,则取多条路径计算后的最小值。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

项目活动图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目管理工具特征

在这里插入图片描述
在这里插入图片描述

软件配置管理

在这里插入图片描述

软件文档

在这里插入图片描述

软件可靠性、可用性、可维护性

在这里插入图片描述
在这里插入图片描述

冗余附加技术

在这里插入图片描述

软件维护工具

软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
在这里插入图片描述

风险分析

在这里插入图片描述

软件维护

(1)改正性维护:识别和纠正软件错误,改正性能上的缺陷;
(2)适应性维护:外部环境数据库发生变化而去改正;
(3)完善性维护:增加新的功能与需求;
(4)预防性维护:预先提高软件的可维护性;
在这里插入图片描述

软件评审

在这里插入图片描述在这里插入图片描述

质量属性及其子特性

在这里插入图片描述
在这里插入图片描述

沟通管理

1、有主程序员:n个成员小组,1个主程序员,普通程序员只需要与主程序员沟通。
沟通路径:n-1。
2、无主程序员:n个成员的项目小组,相互之间都可以沟通。
沟通路径:n(n-1)/2。

COCOMO模型

在这里插入图片描述

其他知识点

1.COCOMO II模型的估算选择包括:对象点、功能点、源代码行数
2.软件工程的基本要素包括方法、工具和过程
3.软件文档分为:开发文档、管理文档、产品文档;
4、需求分析确定软件要完成的功能以及非功能性要求
5、概要设计将需求转换为软件的模块划分,确定模块之前的调用关系
6、详细设计将模块进行细化,得到详细的数据结构和算法
7、编码根据详细设计进行代码的编写,得到可运行的软件,并进行单元测试
8、需求不清晰且规模不太大时,用原型化方法合适
数据处理领域的不太复杂的软件,用结构化开发比较合适
9、软件工程每一个阶段结束前,应该着重对可维护性进行复审。在系统设计阶段的复审期间,应该从容易修改、模块化和功能独立的目的出发,评价软件的结构和过程。
10、软件风险一般包含不确定性和损失两个特性
11、一个软件开发过程描述了 “谁做”、“做什么”、“怎么做”和“什么时候做”,RUP用角色来表述“谁做”


http://www.ppmy.cn/ops/141264.html

相关文章

WordPress全能CDN插件_自动刷新预热_缓存优化|国内国外集成CDN配置

WordPress全网独家原创CDN插件 自动刷新预热 缓存优化 国内国外集成CDN配置 支持白山云 cdnfly Cloudflare PS:目前国内集成了CDNfly,白山云国外集成了Cloudflare,更新手动刷新,全站刷新,优化提交线程,根据网友建议适配阿里云,le…

【论文研读】LLMs知识边界大考:检索增强能否让它们更自知?

这篇论文蛮有意思的,思来想去感觉有必要总结一下。先贴地址:https://arxiv.org/pdf/2307.11019 这篇论文的研究旨在回答以下三个核心问题: LLMs在多大程度上能够感知其事实知识边界?检索增强对LLMs有何影响?不同特性的…

基于STM32的IoT环境监测

引言 随着物联网(IoT)技术的快速发展,环境监测系统变得愈发重要。通过使用STM32微控制器,我们可以轻松地获取和上传环境数据,如温度和湿度。这篇文章将指导你如何构建一个基于STM32的IoT环境监测系统,使用M…

深入理解 Spring MVC 中的 @RequestBody 注解

在构建 RESTful API 时,Spring MVC 提供了许多强大的注解来简化开发过程。其中一个常用的注解是 RequestBody。本文将详细介绍 RequestBody 的作用、使用场景以及如何正确使用它。 什么是 RequestBody? RequestBody 是 Spring MVC 中的一个注解&#x…

机器学习概述详解

文章目录 机器学习概述详解一、引言二、机器学习基础1、机器学习定义及应用场景2、监督学习与无监督学习 三、机器学习开发流程四、使用示例1、LeNet网络结构代码示例2、AlexNet网络结构代码示例 五、总结 机器学习概述详解 一、引言 机器学习作为人工智能的一个重要分支&…

【Elasticsearch01】企业级日志分析系统ELK之Elasticsearch单机部署

Elasticsearch 单机部署 Elasticsearch 安装说明 官方文档 https://www.elastic.co/guide/en/elastic-stack/index.html https://www.elastic.co/guide/en/elasticsearch/reference/master/install-elasticsearch.html部署方式 包安装二进制安装Docker 部署Ansible 批量部署…

鸿蒙面试---自定义组件的生命周期

这几天看官方文档生命周期更新了。所以也得从新了解一下 aboutToAppear aboutToAppear函数在创建自定义组件的新实例后,在执行其build()函数之前执行。 onDidBuild onDidBuild函数在执行自定义组件的build()函数之后执行。 aboutToDisappear aboutToDisappear函…

opencv库中的函数应用

opencv库中的函数应用 二值化函数功能参数返回值应用例子 自适应二值化函数功能参数返回值应用例子 腐蚀函数功能参数返回值应用例子 膨胀函数功能参数返回值例子 仿射变换函数功能参数返回值例子 透视变换函数功能参数返回值例子 二值化函数 函数:cv2.threshold(i…