软件工程知识点

CMMI 阶段式模型

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

CMMI连续式模型

CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标。
CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
CL2(已管理的):其共性目标是集中于已管理的过程的制度化。
CL3(已定义级的):其共性目标集中于已定义的过程的制度化。
CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。
CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效。

软件开发模型

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

极限编程

在这里插入图片描述

开发方法

在这里插入图片描述

RUP阶段

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

敏捷开发

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

系统设计

软件设计包括体系结构设计、接口设计、数据设计和过程设计。
过程设计:系统结构部件转换成软件的过程描述。
结构设计:定义软件系统各主要部件之间的关系。
接口设计(人机界面设计):软件内部、软件和操作系统间以及软件和人之间如何通信。
数据设计:将模型转换成数据结构的定义。好的数据设计将改善程序结构和模块划分,降低过程复杂性。

概要设计

设计软件系统总体结构:基本任务还是采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。
数据结构及数据库设计:在需求分析阶段对数据的组成、操作约束和数据之间的关系进行了描述,概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。
编写概要设计文档:概要设计说明书、数据库设计说明书、用户手册以及修订测试计划。
评审:对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计的可行性,关键的处理以及外部接口定义的正确性、有效性、各部分之间的一致性等都一一进行评审。

详细设计

对每个模块进行详细的算法设计,用某种图形、表格和语言等工具将每个模块处理过程的详细算法描述出来。
对模块内的数据结构进行设计。
对数据库进行物理设计,即确定数据库的物理结构。
其他设计:根据软件系统的类型,还可能需要进行代码设计、输入/输出格式设计,用户界面设计等。
编写详细设计说明书。
评审:对处理过程的算法和数据库的物理结构都要评审。

模块设计原则

在这里插入图片描述

模块之间的耦合

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

管道过滤器

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

软件测试

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

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

测试技术

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

测试策略

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

测试顺序

在这里插入图片描述

测试方法

在这里插入图片描述

白盒测试覆盖测试法

覆盖率从低到高:

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

白盒测试原则

在这里插入图片描述

常见的黑盒测试方法

等价类划分:确定无效与有效等价类,设计用例尽可能多的覆盖有效类,设计用例只覆盖一个无效类。
边界值分析:处理边界情况时最容易出错,选取的测试数据应该恰好等于、稍小于或稍大于边界值。

各测试阶段的任务:

(1)验收测试:有效性测试、软件配置审查、验收测试。
(2)系统测试:恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安装测试。
(3)集成测试:模块间的接口和通信。
(4)单元测试:模块接口、局部数据结构、边界条件、独立的路径、错误处理。
(5)其他测试:回归测试(修改软件后进行的测试,防止引入新的错误)。负载测试(对软件负载能力的测试)。压力测试(对软件超负荷条件下运行情况的测试)。

McCabe复杂度(重要)

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

软件能力成熟度模型

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

软件过程改进

在这里插入图片描述

甘特图

在这里插入图片描述

PERT图

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

项目活动图

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

项目管理工具特征

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

软件配置管理

在这里插入图片描述

软件文档

在这里插入图片描述
1、开发文档(开发人员)
(1)可行性研究和项目任务书
(2)需求规格说明
(3)功能规格说明
(4)设计规格说明(包括程序和数据规格说明)
(5)开发计划
(6)软件集成和测试计划
(7)质量保证计划、标准、进度
(8)安全和测试信息
2、产品文档(用户)
(1)培训手册
(2)参考手册和用户指南
(3)软件支持手册
(4)产品手册和信息广告
3、管理文档(负责人)
(1)开发过程的每个阶段的进度和进度变更的记录
(2)软件变更情况的记录
(3)相对于开发的判定记录
(4)职责定义

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

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

冗余附加技术

在这里插入图片描述

软件维护工具

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

风险分析

在这里插入图片描述

软件维护

(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用角色来表述“谁做”

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(5)进阶模式-MITM中间人代理与劫持(上)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Windows11安装Isaac Lab

1.1 下载文件 将 Isaac Lab 仓库克隆到您的工作空间: git clone https://github.com/isaac-sim/IsaacLab.git 1.2 创建Isaac Sim符号链接 F:cd IsaacLab 官方文档里路径/有问题,改成\): # 打开IsaacLab目录cd IsaacLab# 使用…

AI 的时代,新科技和新技术如何推动跨学科的整合?

在当前AI的发展中,我们面临的一个主要挑战就是融合的问题,这实际上不仅是技术上的融合,还有更深层次的哲学层面的思考。 或许在中国这方面的讨论较少,但在西方哲学和神学的语境中,探讨万物的根本和不同学科之间的联系…

力扣打卡12:复原IP地址

链接:93. 复原 IP 地址 - 力扣(LeetCode) 这道题需要对字符串进行操作,我选择了三层循环,其实还可以递归。 我在循环时进行了剪枝,比如一些情况直接跳出循环。 我的代码: class Solution { p…

R学习——数据框

目录 1数据框的合并 2数据框的访问 2.1 通过索引[] 2.2符号$访问 2.3 attach访问 2.4 with访问 1数据框的合并 当每个内容存储为单独的向量,data.frame可以进行这些内容单独数据框合并。 2数据框的访问 2.1 通过索引[] [i]输出对应的列 [i,]输出对应的行 …

XMOS将在CES 2025上展出多款由边缘AI驱动的创新音效、音频、识别和处理解决方案

全球智能物联网技术领导者暨匠心独到的半导体科技企业XMOS宣布:该公司将再次参加2025年国际消费电子展(CES 2025),并将在本届CES上展出一系列由人工智能(AI)驱动的全新空间音效、语音捕获与降噪、音视频多模…

第一个C++程序--(蓝桥杯备考版)

第一个C程序 基础程序 #include <iostream>//头⽂件 using namespace std;//使⽤std的名字空间 int main()//main函数 {cout << "hello world!" << endl; //输出&#xff1a;在屏幕打印"hello world!" return 0;}main函数 main 函数是…

密码学——密码学基础、散列函数与数字签名

1.密码学概述 是信息安全的基础和核心&#xff0c;是防范各种安全威胁的重要手段&#xff0c;信息安全的许多相关知识都与密码学相关。 密码学发展 密码学是一门古老而又年轻的学科 &#xff0c;几千年以前就存在&#xff0c;至今仍在发展演进。地位非常重要甚至起决定性作用…

李飞飞的生成式3D场景,对数字孪生的未来影响几何?

大家好&#xff0c;我是日拱一卒的攻城师不浪&#xff0c;致力于技术与艺术的融合。这是2024年输出的第47/100篇文章。 前言 这两天&#xff0c;AI界的教母李飞飞团队重磅发布了空间智能生成式AI大模型。 仅通过一张图片就能够生成一个可操作和交互的3D空间场景。 空间智能的…

H3C NAT实验

实验拓扑 实验需求 按照图示配置 IP 地址私网 A 通过 R1 接入到互联网&#xff0c;私网 B 通过 R3 接入到互联网私网 A 内部存在 Vlan10 和 Vlan20&#xff0c;通过 R1 上单臂路由访问外部网络私网 A 通过 NAPT 使 Vlan10 和 Vlan20 都能够使用 R1 的公网地址访问互联网私网 B…

【Java Web】Tomcat 快速入门

通常&#xff0c;为了让 Java 开发的应用程序&#xff08;app&#xff09;能够在服务器上正常运行&#xff0c;必须安装 Java 运行时环境&#xff08;JRE&#xff09;。JRE 主要支持 Java SE&#xff0c;而如果要运行 Java EE 应用&#xff0c;则需要更多的支持&#xff0c;比如…

域渗透入门靶机之HTB-Cicada

easy难度的windows靶机 信息收集 端口探测 nmap -sT --min-rate 10000 -p- 10.10.11.35 -oA ./port 发现开放了53&#xff0c;88&#xff0c;389等端口&#xff0c;推测为域控 进一步信息收集&#xff0c;对爆破的端口进行更加详细的扫描 小tips&#xff1a;对于众多的端口&…

QT核心功能概览

QT的学习&#xff08;一&#xff09;如何查阅QT文档&#xff1f;&#xff08;以QPushButton为例&#xff09;_qt的组件在qt文档那里面看-CSDN博客 QPushButton Class | Qt Widgets 5.15.18 一、前言 QT虽说功能很庞大&#xff0c;但是常用的控件也不是很多&#xff0c;也就只…

《Java核心技术I》并行数组算法

并行数组算法 Arrays类提供了大量并行化操作。 Arrays.parallelSort方法可以对一个基本类型值或对象的数组排序。 package arrays;import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import …

深度学习:重塑学校教育的未来

摘要&#xff1a;本文旨在全面剖析深度学习技术在教育领域的应用现状及未来前景。通过对当前深度学习技术在教育中的应用案例进行深入剖析&#xff0c;探讨其在教学效果、学习体验等方面的积极作用&#xff0c;同时分析存在的挑战与问题。在此基础上&#xff0c;本文将进一步展…

从根上理解 mysql -数据在页中是怎么存储的

之前说了&#xff0c;一行数据是怎么存储的。现在来看下 数据在页中是怎么存储的 基础知识 页是Innodb管理的存储空间的基本单位,一般是16kb页分为好多类型 大概十多种&#xff0c;面试中平时所说的页即为索引页&#xff08;数据页&#xff09;&#xff0c;当然也有像insert …

在C#中编程绘制和移动线段

这个示例允许用户绘制和移动线段。它允许您根据鼠标下方的内容执行三种不同的操作。 当鼠标位于某个线段上时&#xff0c;光标会变成手的形状。然后您可以单击并拖动来移动该线段。当鼠标位于线段的终点上时&#xff0c;光标会变成箭头。然后您可以单击并拖动以移动终点。当鼠…

快速学习selenium基础操作

全篇大概19000字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间1h 什么是Selenium&#xff1f; Selenium是一系列自动化工具集的统称&#xff0c;官方工具有 Selenium IDE、Selenium WebDriver、Selenium Grid&#xff0c; 主要用于桌面端Web应用程序的自动化。能够通…

说下JVM中一次完整的GC流程?

大家好&#xff0c;我是锋哥。今天分享关于【说下JVM中一次完整的GC流程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说下JVM中一次完整的GC流程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;垃圾回收&#xff08;GC&am…

Vue.createApp的对象参数

目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的&#xff0c;该函数需要接收一个对象作为参数&#xff0c;该对象可添加 template、data、methods 等属性。 template …