打码网站怎么做/江苏关键词推广seo
软件工程
什么是软件工程,这门课讲的什么?
软件工程就是把软件的开发、运行、维护的各个阶段进行系统化和规范化的过程,也就是把工程化的方法运用在软件技术之中,以构建和维护高质量的软件。
进一步,什么是工程化思想?
我认为工程化的思想核心就是标准化和文档化,要建立一个标准,明确把一个大项目的开发分成了哪些小阶段,确定每个阶段应该利用什么工具、完成什么任务,然后就是要产生对应的规范文档。
进一步,软件工程包含哪几个阶段?
见如下
软件生命/生存周期(SDLC)
总体上分为:软件定义、软件开发和软件运行与维护阶段
具体可分为:两分析(可行性分析和需求分析)、两设计(概要设计和详细设计)、开发(编码和测试)、运维(运行和维护)
1、可行性研究(问题定义、可行性研究)
内容:从经济、技术、人员各个方面分析项目可行性,并做风险预估
文档:可行性研究报告
图表:业务流程图、系统流程图
2、需求分析
内容:收集用户的需求,并把需求转化成对软件系统(功能、性能、操作上的)完整、准确的描述,用于确定软件规格
文档:需求分析说明书(开发依据+验收依据)
图表:数据流图+数据字典(结构化开发)或者用例图模型(面向对象)
3、软件设计(概要设计和详细设计)
1)概要设计(图最多)
内容:对系统模块的设计和模块之间接口的设计
文档:概要设计说明书
图表:功能结构图(体现模块)、系统流程图(整个系统)类图、活动图、状态图、时序图、ER图
2)详细设计
内容:对软件模块内的算法和数据结构等细节做出设计
文档:详细设计规格说明书
图表:程序流程图(各个模块内)
4、程序编码
内容:开发人员按照“详细设计说明书”把软件进行编码实现
5、软件测试
内容:对软件的各个部分进行测试,包括单元测试、集成测试、系统测试
单元测试:对软件各个模块单独进行测试
集成测试:把各个模块集成在一起测试,主要是测试模块间的接口是否正确
系统测试:集成度最高的测试,把模块集成成完整的系统,在真实的系统运行的环境下测试,包括软件硬件之间的配合
6、运行与维护
内容:运行就是正式上线的过程,然后软件上线后可能会出现各种各样的问题,需要长期维护
CMM软件能力成熟度模型是什么?
一种评价企业开发的软件开发能力的模型,他将软件成熟度分成了五个层次,分别是初始级、可重复级、定义级、管理级、优化级。
初始级:软件过程基本是无序的,进度、预算、质量都不可预测,成功不可复现,任何项目都拥有这一级别
可重复级:有了基本的项目管理过程,项目的成功可以在未来重现,能够将项目经验用于未来【可复现==可重复】
定义级:项目拥有文档化、标准化的软件过程。用于未来的成果经验经过标准化【标准化==可以作为定义了】
管理级:软件过程和产品质量得到定量的估计和控制,能够按时、保质保量的完成。【管理==项目可控】
优化级别:能将软件过程涉及到的技术、方法作为示范,加入企业标准中,达到优化企业标准的效果【好到可以优化别人了】
结构化分析和结构化设计?
软件开发模型?
瀑布模型——阶段性的过程模型,严格按照各个阶段顺序进行开发,向瀑布一样自上而下,不能跨越阶段开发
特点:开发规范但灵活性差
适用场景:需求稳定、编程人员有丰富经验的项目
原型模型——项目前期,快速搭建出项目的原型,用来获取用户的需求,解决了需求模糊的问题
特点:快速构建、方便修改
适用场景:用户需求不明确;对现有产品进行升级时,即有模板;开发人员对技术不够熟悉
增量模型——将软件系统按功能划分成一个个构件,分批次、按构件提交给用户,直到全部构件提交完成
特点:可以灵活安排开发顺序、功能容易拓展
适用场景:软件系统可以模块化、支持分批次交付
螺旋模型——包含分析分析和风险规避,花大量成本去做风险管理
特点:安全性高、风险管理成本高
适用场景:软件项目风险大的大型项目
喷泉模型——最主要的特点就是迭代、反复,每个阶段建立在前一个阶段之上,而且各个阶段可以相互折叠,多次反复,就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
适用场景:适用于面向对象软件开发,因为对象的分析和设计是可以迭代的
RUP统一软件开发过程
是一种基于面向对象的软件开发过程,结合了瀑布模型和迭代思想。
四个阶段:
- 初始阶段(Inception):分析业务风险
- 细化阶段(Elaboration):对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求
- 构造阶段(Construction):把各个功能模块集成成产品,并对功能做测试
- 交付阶段(Transition):交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。
六个最佳实践:
(1)迭代式开发。
(2)需求管理。
(3)使用以组件为中心的软件架构。
(4)可视化软件建模。
(5)验证软件质量。
(6)控制软件变更。
其它模型:
边做边改模型——在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。
演化/迭代模型——用户先给出核心需求,实现后再向用户询问意见,再修改,再询问,直到演化成最终的软件
敏捷开发模型——为了适应快速变化的需求,需要频繁地更新软件版本的一种开发模型,需要团队有很好的团队协作能力
什么是软件危机?
定义:软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题(定义)。主要表现为:开发成本难以控制、开发进度难以预测、软件质量无法保证、软件产品难以维护、缺少文档等方面(特点)。
原因:软件规模越来越大、复杂度越来越高(外部原因)、用户需求不明确、缺乏正确的理论指导(内部原因)
解决方法:使用更高效的软件工具,并且开始学习软件项目管理理论,将工程化思想用于软件技术当中,规范的开发流程和标准。
什么是UML,介绍下常用UML图?
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
用例图:用于描述系统参与者及与系统用例之间的交互关系。它展示了参与者可以使用系统执行哪些功能。
类图:描述系统中的类之间的关系,是一种静态模型类型。
对象图:与类图相似,它是类图的实例,显示类的多个对象之间的关系。
活动图:描述系统用例中涉及的活动及其顺序,有助于识别并行活动。
状态图:描述系统对象的所有可能状态及其状态间的转移条件。它帮助理解对象的行为和生命周期。
顺序图:显示参与者与系统对象之间的一系列在时间上的顺序交互。
耦合级别与内聚级别
耦合是指模块与模块之间的紧密程度,内聚是指一个模块内的紧密程度。
最强:内容耦合,最弱:非直接耦合
非直接耦合:两个模块之间没有直接关系,只是都被主模块调用
数据耦合:指两个模块之间有调用关系,传递的是简单数值
标记耦合:是指两个模块之间有调用关系,传递的是数据结构
控制耦合:是指两个模块之间有调用关系,传递的是控制变量,比如标记值,被调模块通过该控制变量的值有选择地执行块内某个功能。
外部耦合:是指一组模块都访问同一全局简单变量,而且不通过参数表传递全局变量的信息,称之为外部耦合。
公共耦合:一组模块都访问同一全局数据结构
内容耦合:指模块之间有直接数据关系,可以直接使用另一个模块的数和代码,
最强:功能内聚,最弱:偶然内聚
功能内聚:指模块内所有元素共同完成一个功能,缺一不可。
顺序内聚:是指一个模块中各个元素必须顺序执行
通信内聚:是指一个模块的所有元素都在同一数据结构上操作(通信==有公共数据结构)
过程内聚:是指模块有多个需要按一定的步骤一次完成的功能。
时间内聚:是指一个模块完成的功能必须在同一时间内执行,称之为时间内聚。
逻辑内聚:是指模块内有多个逻辑相似的功能,通过参数确定该模块完成哪一个功能。
偶然内聚:是指模块中的机能只是刚好放在一起
什么是软件测试?
就是在特定的环境下,对软件的实际输出和预计输出做比较的过程,其目的是减少程序的错误,防止后期出现大量返工,减慢工作进度。软件测试从整体上可分为黑盒测试和白盒测试,从测试的阶段/范围上可分为单元测试、集成测试、系统测试、验收测试,从测试的指标上可以分为功能性测试、安全性测试、稳定性测试、性能测试、稳定性测试、压力测试等等。
测试分类有哪些?
按照测试的阶段/范围可分为:
单元测试:对软件各个模块单独进行测试
集成测试:把各个模块集成在一起测试,主要是测试模块间的接口是否正确
系统测试:集成度最高的测试,把模块集成成完整的系统,在真实的系统运行的环境下测试,包括软件硬件之间的配合
验收测试:是一种以用户为主体的测试,让用户参与测试用例设计,根据用户的参与程度,分为α测试和β测试
- α测试:开发、测试人员和用户都在场,用户在在开发环境下进行的测试,有专业人员进行记录,测试环境可控
- β测试:测试人员不在场,直接发布测试版本给用户体验,然后根据用户的反馈进行改进的测试,也就是我们常说的某某软件测试版
回归测试:回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
软件测试方法有哪些?
从整体来说分为黑盒测试和白盒测试。
黑盒测试:从用户的角度出发,把测试对象看出一个黑盒子,不用关心里面的结构,只需要关注程序的输入输出
黑盒测试技术包括:边界值法、等价类划分、错误推断
白盒测试:也叫结构化测试,把测试对象看成一个透明的盒子,要知道它的内部细节和逻辑结构,然后根据内部逻辑设置测试方法
按覆盖程度可以分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、
如何选用两者:
-
模块较小,内聚程度高,适合使用白盒测试,减少错误。
-
模块较大,逻辑复杂,测试代价较大的,适合使用黑盒测试,提高效率。
什么是测试用例?由于什么组成,举例说明?
测试用例:就是用于测试的一组输入信息,主要包括测试环境和输入值以及预期输出,体现了一组测试方案
组成:测试目标、测试环境、输入数据、预期结果、测试脚本
等价类划分和边界值法?
等价类划分:思想就是就是用少量的、有代表性的数据进行测试,尽量减少测试用例的次数。
基本步骤:
- 根据输入数据的各个规则,划分有效等价类和无效等价类。比如规定输入的是-99到900之间的数字,有效等价类就是这个范围内的数字,无效等价类就有很多,比如范围之上/范围之下的数字、输入为空、输入带有其它字符等等。
- 细分有效等价类和无效等价类,对每个等价类编号,形成表格。
- **设计测试用例,**在测试有效等价类的时候,可以尽量覆盖多的测试用例。但是对于无效等价类,每一测试数据只能覆盖一个无效等价类,否则分辨不了错误的原因。
边界值法::因为程序错误一般都是在边界上出现的,所以边界值法就是对输入**【边界】、【边界内】以及【边界周围】**进行测试。
比如说要求输入的数字范围是0-20,那不仅要测试0和20,0周围的1和-1,20周围的19和21都要测试,在0到20内也要测试一个值。边界值法是对等价类划分的一种补充,可以和等价类划分一起使用。
白盒测试的覆盖率要求有哪些?
语句覆盖:程序中每个语句至少都能被执行一次
判定覆盖:每个判定结果取各种值
条件覆盖:判定中的每个条件取各种值
判定/条件:判定中每个条件取各种值+每个判定结果取各种值
条件组合覆盖:每个条件的各种可能排列组合可能的取值。
路径覆盖:程序中每条路劲都需要覆盖,不一定覆盖条件组合
相关文章:

软件工程 考研复试常考知识点总结
软件工程 什么是软件工程,这门课讲的什么? 软件工程就是把软件的开发、运行、维护的各个阶段进行系统化和规范化的过程,也就是把工程化的方法运用在软件技术之中,以构建和维护高质量的软件。 进一步,什么是工程化思想…...

Docker+Uwsgi+Nginx部署Django项目保姆式教程
之前,我和大家分享了在docker中使用uwsgi部署django项目的教程。这次,为大家带来的是使用DockerUwsgiNginx部署Django项目。废话不多说,我们开干。 步骤1:使用命令创建一个django项目 我这里python版本使用的是3.9.x 首先&#…...

[openGL] 高级光照-Gamma矫正
目录 一 Gamma是什么? 二 感知光度和物理光度 2.1 与Gamma的关系 2.3 存在问题和弊端? 三 Gamma矫正(逆Gamma) 3.1 Gamma矫正的两种方法 3.2 sRGB空间 3.3 重复校正 3.3.1 在着色器中处理重复校正 3.3.2 在加载纹理时就重复校正 3.3.3 校正前后效果 本章节Qt源码点…...

Prometheus+Grafana监控K8S集群(基于K8S环境部署)
目录 一.环境信息二.部署提前工作三.部署Prometheus监控系统四.部署Node_exporter组件五.部署Kube_state_metrics组件六.部署Grafana可视化平台七.Grafana接入Prometheus数据八.Grafana添加监控模板九.拓展 一.环境信息 1.服务器及k8s版本信息 IP地址主机名称角色版本192.168…...

[opencv]VideoWriter写出fourcc格式
fourcc支持的格式 fourcc全名Four-Character Codes,四字符代码,该编码由四个字符组成 cv2.VideoWriter_fourcc(O,O,O,O) cv2.VideoWriter_fourcc(*OOOO) 通常写法有上述两种形式,O代表一个字符,通常有 支持avi格式的有&#…...

软考中级网络工程师-网络技术
下列命令片段含义是( )。 system-view [HUAWEI] observe-port 1 interface gigabitethernet 0/0/1 [HUAWEI] interface gigabitethernet 0/0/2 [HUAWEI-GigabitEthernet0/0/2] port-mirroring to observe-port 1 inbound A 配置端口镜像 B 配置链路聚合 C 配置逻辑接口 D 配置访…...

cmake基础教程(12)函数和宏用法
参考: https://cmake.org/cmake/help/latest/command/function.html https://cmake.org/cmake/help/latest/command/macro.html#command:macro 文章目录 函数宏在CMake中,宏(macro)和函数(function)命令用于封装重复的任务,这些任务可能分散在你的CMakeLists文件中。一…...

SQLite的PRAGMA 声明(二十三)
返回:SQLite—系列文章目录 上一篇:SQLite从出生到现在(发布历史记录)(二十二) 下一篇:用于 SQLite 的异步 I/O 模块(二十四) PRAGMA 语句是特定于 SQLite 的 SQL 扩…...

Qt 实战(1)Qt 概述
一、Qt概述 1、什么是Qt? Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,也可以开发不带界面的…...

【练习】二分查找
1、704 (1)题目描述 (2)代码实现 package com.hh.practice.leetcode.array.demo_02;public class BinarySearch_704 {public int search(int[] nums, int target) {int i 0,j nums.length -1;while (i < j){int mid (ij) &…...

FactoryTalk View 上位机画面版本升级,还原和备份
FactoryTalk View 上位机画面版本升级,还原和备份 1 归档文件(尾缀.apa)升级2 画面文件(尾缀.sed)升级3 提示“目标工程中包含旧的HMI标签报警,FT View 10.0是最后一个......” 解决方法1 归档文件(尾缀.apa)升级 案例是FTVIEW5.0升级到FT VIEW12,需要用FT VIEW 6过渡升…...

【微信小程序】分包
整个小程序所有分包大小不超过 20M(开通虚拟支付后的小游戏不超过30M) 单个分包/主包大小不能超过 2M在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,客户端会把对应分包下载下来…...

Golang教程六(单元测试,反射,网络编程,部署)
目录 一、单元测试 单元测试 子测试 TestMain 二、反射 类型判断 通过反射获取值 通过反射修改值 结构体反射 利用tag修改结构体的某些值 调用结构体方法 orm的一个小案例 对反射的一些建议 三、网络编程 socket编程 websocket编程 四、部署 打包命令 交叉编译…...

mybatis进阶篇-执行CRUD操作-typeAliases别名-接口绑定
目录结构 1.创建数据表(book) # 创建book表 create table book(id int auto_increment primary key,name varchar(255) ,price double ,num int );2.mybatis.xml配置文件 <?xml version"1.0" encoding"UTF-8" ?> <!DOC…...

C#面:泛型的主要约束和次要约束是什么
在 C# 中,泛型的约束是用来限制泛型类型参数的行为和能力的。 主要约束和次要约束是两种不同的约束方式。 主要约束(Primary Constraint): 主要约束指定了泛型类型参数必须满足的最基本的条件,它可以是一个类、一个接…...

Java使用documents4j将word和excel转pdf
pom.xml添加documents4j依赖 <!-- documents4j --> <dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version> </dependency> <!-- documents4j 转 wor…...

使用策略模式实现 Spring 分布式和单机限流
我们可以使用策略模式来统一单机限流和分布式限流的实现,提高代码的可扩展性和可维护性。 思路是定义一个 RateLimitStrategy 接口,并分别实现单机限流策略 LocalRateLimitStrategy 和分布式限流策略 DistributedRateLimitStrategy。在 AOP 切面中,根据配置决定使用哪种限流策…...

@CrossOrigin注解解决跨域问题
文章目录 一、什么是跨域二、CrossOrigin注解是干什么用的三、用法 一、什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。 所谓同源是指,域名,协议&…...

【力扣】45. 跳跃游戏 II
Problem: 45. 跳跃游戏 II 文章目录 问题思路复杂度Code 问题 思路 核心思路,例如nums[i]5,那么最远能跳五步; //那么在这接下来1-5范围内,哪个能让我跳的最远,这个最远指的是 -------------------------------------…...

【Python基础】19.eval函数的使用
eval函数 eval()将字符串转变为有效的表达式来求值并返回对应的结果 基础数据计算 In [1]: eval("1 1") Out[1]: 2字符串重复 In [2]: eval (" * * 10") Out[2]: **********字符串转为列表 In [3]: type(eval("[1,2,3,4,5]")) Out[3]: lis…...

对装饰器模式的理解
目录 一、场景二、面对场景中的新需求,我们怎么办?1、暴力法:直接修改原有的代码。2、子类继承法:既然要增强行为,那我搞一个子类,覆写不就完事了?3、装饰器模式 三、对装饰器模式的思考1、从代…...

在替换微软AD的CA证书服务AD CS前,要先做哪些准备工作?
AD CS是什么 关于这个问题,有几个概念需要先弄明白:PKI、CA、数字证书。 PKI(Public Key Infrastructure,公钥基础设施)是提供公钥加密和数字签名服务的系统或平台,实现基于公钥密码体制的密钥和证书的产生…...

Java中的System
文章目录 概要小结 概要 在Java中,System类提供了一些静态方法来实现与系统相关的操作。以下是System类中常用的方法及其含义: System.currentTimeMillis():返回当前时间(以毫秒为单位)自1970年1月1日00:00:00 GMT以来…...

Mybites一对多collection
Goods实体属性: private List<GoodsImg> goodsImgList; private String id; private String name; GoodsImg实体属性: private String id; private String fid; private String imgpath; …...

基于springboot实现图书进销存管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现图书进销存管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了图书进销存管理系统的开发全过程。通过分析图书进销存管理系统管理的不足,创建了一个计算机管理图书进销…...

敏捷开发:想要快速交付就必须舍弃产品质量?
随着敏捷的推广与应用,如今已经成为了最有效的团队级别的方法论,越来越多的软件和 IT 团队正在采用敏捷,但是你在敏捷吗? 自从那一群充满影响力的软件从业者聚集在一起并发布了《敏捷宣言》以来,已经过去了 23 年。敏…...

SNMP-详解指南
目录 SNMP介绍 SNMP的工作机制轮询 SNMP的MIB(管理信息库) SNMP是基于UDP协议 SNMP介绍 SNMP(Simple Network Management Protocol,简单网络管理协议)是一种广泛应用于互联网上的网络管理协议。它提供了一种标准化…...

vue-router 原理【详解】hash模式 vs H5 history 模式
hash 模式 【推荐】 路由效果 在不刷新页面的前提下,根据 URL 中的 hash 值,渲染对应的页面 http://test.com/#/login 登录页http://test.com/#/index 首页 核心API – window.onhashchange 监听 hash 的变化,触发视图更新 window.onhas…...

WebGl/Three 粒子系统 人物破碎及还原运动
粒子 首先,加载模型,这是万千粒子的前身,模型对象由很多面构成,这些面又是由各个点构成的,所以可以将模型的几何体对象geometry赋给粒子对象,粒子物体用Points方式渲染 bloader.load("obj/female02/Fe…...

华为OD-C卷-分披萨[100分]
题目描述 "吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认…...