8.软件工程

整个章节偏向于记忆、背诵;

主要议题:
软件体系:3层;
UML重点,重点记3要素中的关系、图;
在这里插入图片描述

1.软件体系结构

分层
优点:利于软件的重复利用;
缺点:以什么方式分层,分层的粒度如何;这两个问题比较难;

常考:哪些输入服务器端、哪些属于客户端?需要记忆;
在这里插入图片描述

2.软件工程

软件危机:采用某种方式进行开发,开发到一定程度,随着规模越来越大,这种方法开发出来的软件的质量没有保障,而且开发成本变高;
软件工程:以工程化的思想来开发软件;
在这里插入图片描述

3.软件配置管理

偶尔考;
基线:软件开发过程中的一个检查点;由于软件开发的过程是连续的,就必须设置检查点,以免软件质量发生偏移;
软件配置项:软件开发中所涉及到的信息和项目,比如用户名和密码、电信网络的账户、使用到的硬件如路由器,路由器上的配置;

配置项有2中状态:自由态和受控态;自由态经过基线的评价,就到了受控态;受控态下你要进行修改,就要走变更管理流程;
在这里插入图片描述
产品库/开发库/受控库
开发过程中的信息,经过评审进入受控库;
受控库中有一段区域为测试区,测试区为信息的变更提供工作区间;比如说你要修改一个文件,要先通过变更管理获取修改权限,将文件从受控区改到测试区,然后完成测试,测试完成后再通过基线的评审,进入受控库;
发布产品时从产品库中发布;

4.CMM(软件能力成熟度模型)

描述软件组织所处的阶段;
主要考察队cmm几个级别的理解;
1、知道几个级别的名字;
2、知道几个级别的关键点;
例如提供一段描述,问这个组织处于哪个级别;

初始级:项目没有什么规则;没有什么经验可以借鉴;特点是英雄主义,能不能成功看人了;
可重复级:做项目时有经验可借鉴;能对项目的成本、进度有一定的控制能力;
已定义级:所有的事情都已标准化、文档化了;
已管理级:可以把控项目,进行管理了;有明确的质量指标;
优化级:在先有上,利用新技术优化软件的过程;
在这里插入图片描述

5.开发模型

能根据题干描述知道采用的什么模型;
必须记住:每个模型的适用项目;

瀑布模型:将软件开发的生命周期划分成多个阶段;每个阶段依次进行;
优点:各个阶段划分明确,利于项目管理、控制成本;
缺点:需求分析阶段出现问题,往往在软件测试阶段才发现;越后发现,成本越高;
对测试工作不重视;
适用项目:需求明确、解决方案明确的项目;

需求分析到软件测试都处于开发阶段;

V模型:对瀑布模型的改进,改进瀑布模型中对软件测试不重视的场景;在V模型中,把软件测试和开发阶段一一对应起来,强调软件测试的意义;但从整个流程上看,软件测试依然在写完代码后,从功能上其实还没解决测试阶段处于扫尾阶段这一问题;

箭头:
水平箭头:表示检测的对象;
斜上箭投:验证上一个层次的设计有无问题;

可能会擦掉右侧箭头让你填写;
在这里插入图片描述
原型、增量模型常常混淆;
原型模型:快速的开发方法,先和用户沟通,大致了解需求后,就针对需求做开发,实现大致界面,没有开发实际的后台程序;再和用户交流,用户觉得有问题再改;通过逐步演进,变成最终可交付的系统;最终只有一次交付;
原型:可运行的、只体现核心功能的模型;
优点:帮我们明确需求;
缺点:快速,意味着没写文档;文档不全;

抛弃型原型:开发时,和用户交流完,用户不认可,此原型直接丢弃,再新写;
渐进演化型原型:慢慢演化、修改成最终交付的系统;

增量模型:多次交付;
其实就是版本迭代;每一次交付都是在前一次交付的基础上增加相关功能;
优点:激发用户的进一步需求;帮助用户进一步明确需求;节约开发成本、时间,风险小;
缺点:增量如何控制?粒度多大?
在这里插入图片描述
螺旋模型:结合了瀑布模型和原型模型;
多次迭代;每个迭代都分成几个阶段;
模型中引入了风险分析;
优点:便于对项目的风险进行控制;用户也了解软件开发中的风险;
缺点:人来做风险分析,经验很重要;经验不足识别不出风险;

喷泉模型:下图中的各个阶段都在同时进行;是以对象为驱动的;主要用于面向对象的开发项目;在这里插入图片描述

6.开发方法(RUP/UP)

统一过程:
将软件开发分成4个阶段:初始、细化、构建、交付;
它是一个以用例为驱动、以架构为中心,进行迭代和增量的开发方法;

工件:工厂中的产品;相当于你要开发的代码;
活动:有特定目的的工作;
角色:人;
工作流;
下选项哪个不属于统一过程中的对象?
在这里插入图片描述
敏捷开发
考点漂浮不固定;适当记忆;
极限编程:XP
在这里插入图片描述
Jackson方法:对时序敏感,对事件发生的先后敏感;
在这里插入图片描述

7.MVC

考察较少;
M:业务代码;
V:呈现给用户的信息;
C:负责转换V的需求,并进行M、V的控制管理;
用户有需求通过V给M,服务器根据业务规则取出数据给V,这个过程需要C控制请求的转换;
在这里插入图片描述

8.软件生命周期

考点:有哪些阶段,每个阶段主要财务是什么?
概要设计,又称总体设计;
详细设计:设计各个模块的功能,怎么做,步骤;还没开始写代码呢;
在这里插入图片描述
需求层次:
系统需求分为:功能需求、非功能需求、设计约束;
功能需求:必须要实现的需求;
非功能需求:你的系统必须要具备的品质;如可靠性、稳定性、可维护性;
设计约束:比如服务器、数据库用哪个牌子的;开发方法、技术用啥;
在这里插入图片描述
结构化分析:
数据流图(DFD图):通过对数据在系统中传递和加工的动作来描述系统的功能需求;
因为数据流图没有明确每一项数据的特征,这时就用到数据字典;
在这里插入图片描述
数据流图
外部实体:与系统由信息交互,但不包括在本次开发内的对象;如工资管理系统中的银行;
加工:对数据进行变换的地方;
数据流:箭头指向谁,数据流向谁;
要能看懂考题中的DFD图,不会考大题;
在这里插入图片描述
父子图平衡:父图有输入输出的数据流,子图也得有等量的数据流;
数据守恒:要根据输入的数据产生输出,不要凭空出现;
数据流图体现的是数据信息,而不是控制信息,一旦有控制信息,就不是数据流图;
在这里插入图片描述
在这里插入图片描述

9.系统设计

最近的软考体系把数据库设计放到总体设计中;
数据库设计分4步:需求设计、概要设计、逻辑结构设计、物理结构设计;前3步在总体设计中,第4步在详细设计中;
在这里插入图片描述

10.聚合与耦合

2个指标是衡量模块独立性的标准;
程序设计原则:高聚合、低耦合;
聚合是衡量一个模块内各个元素与功能的紧密程度;
耦合强调的是模块与模块之间的关系;

题目:
1、根据聚合/耦合度排序下列的几个选项;
2、给出描述,判断是哪一类聚合/耦合;
考试频率高;

功能聚合最高,模块内的所有元素都是为这个功能服务的;
偶然聚合:模块内的各个元素之间没有必然的联系;
逻辑聚合:模块内的各个元素的逻辑距离相似;
时间聚合:模块内的各个元素在同一时间执行;
过程聚合:模块内的各个元素按照特定的次序来执行;
通信聚合:模块内的各个元素利用同一个输入、或者产生同一个输出;
顺序聚合:模块内的第一个元素的输出是第二个的输入、第二个的输出是第三个的输入;

非直接耦合:两个模块之间没关系;他俩之间的关系是通过上层调用;
数据耦合:两个模块之间要传递数据;
标记耦合:传递的数据不是一个简单的变量,而是一个数据结构;
控制耦合:传递控制信息;
外部耦合:两个模块需要一个外部简单的全局变量传递;
公共耦合:两个模块使用同一个数据区域;
内容耦合:一个模块执行时跑到另一个模块内部访问数据;
在这里插入图片描述

11.编码原则

提高后期的可维护性;
在这里插入图片描述
序言性注释:写程序之前写一段话,介绍系统的功能,运行要求等;
解释型注释:告诉读者接下来这行代码要做什么;

在这里插入图片描述
直接转换:新系统若有缺陷,满足不了业务需求,风险高;用于小型、不重要的系统转换;
试点后直接转换:要求企业有多个分支点,选其中一个分支点进行试点,然后再推广;失败后影响面较小,风险小;对转上一个换的条件有要求;
逐步转换:分段分批转换;上线一个庞大的系统,先上一部分,正常工作了再上另一部分模块;缺陷:与旧系统开发框架、数据库不同,就得提供多个接口给旧系统;
并行转换:新旧系统同时运行一段时间,就知道新系统有哪些缺陷,在这段时间优化;风险小,但是同时运行两个系统,资源就需要更多,服务器更多;开销大;
在这里插入图片描述
可维护性
纠错性维护/公正性维护:本来就有bug(已经暴露出来了),用户发现了;
适应性维护:软件适应环境的变化;如操作系统环境变化;
完善性维护:提高软件的性能和可维护性;如重新整理文档;
预防性维护:软件存在问题,但没暴露出来,没暴露出来就修复;
比重表示的是占维护工作量的比重;
在这里插入图片描述

12.UML

注:一般不会考大题!!!
关系和图要记;
在这里插入图片描述
考题:给出类图,要判断2个类之间的关系;
依赖:一个事物发生变化,回影响到另一个事物;
关联:
聚合:几个独立对象聚合在一起形成整体对象;如参加聚会、显示器与电脑;
组合:强调个体在整体中的职能与责任;部分不能独立于整体而生存;如堆积木、汽车与发动机、人和大脑、企业和企业的部门;
两者都描述的是整体与部分的关系;
泛化:特殊与一般的关系;特殊对象可以代替一般对象的描述;员工与管理层员工;对应面向对象中子类与父类的关系;
实现:两个类元之间的语义关系;一个类元指定了另一个类元保证执行的契约;
在这里插入图片描述
图较多,不确定考哪个,多花时间看!
在这里插入图片描述
类图
一个框有3层,从上到下,分别表示:类名、属性、操作;
在这里插入图片描述
用例图
用例:如上办公系统完成工作后,离开系统;
一般图中有人形标志,就与用例图有关;
泛化关系:同上;
包含关系:
扩展关系:
执行此用例是否一定要做另一个用例,一定则包含,否则扩展;
如:缴费和登录账户的关系,包含;查询缴费记录和保存流水,扩展;
在这里插入图片描述

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

13.软件质量

在这里插入图片描述
记质量特性;
在这里插入图片描述
下图适当记
考试考:下列选项哪个不属于功能性?
在这里插入图片描述
评价使用质量的4个标准:
有效性:满足用户功能的准确程度、满意程度;
生产率:满足有效性的情况下,资源的合理利用程度;
安全性:用户数据的安全;
满意度;
在这里插入图片描述

14.软件评审

不咋考
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15.软件评价—GB/T18905.5

可重复性:同一人用同一标准对系统多次评价,评价结果可接受;
可再现性:不同人用同一标准对系统评价,评价结果可接受;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16.面向对象

消息:类之间通信;
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Urllib库创建第一个爬虫程序

Urllib 是 Python 的标准库,它提供了一系列用于处理 URL 的函数和类,包括发送 HTTP 请求、处理 HTTP 响应、解析 URL 等功能。可以使用 urllib 来编写简单的网络爬虫。 request:它是最基本的HTTP请求模块,可以用来模拟发送请求。只…

【JavaScript 漫游】【044】Web Worker

文章简介 本篇文章为【JavaScript 漫游】专栏的第 044 篇文章,对浏览器模型的 Web Worker 相关知识点进行了总结。 概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任…

MySQL 8.0.35 企业版开启审计audit log功能

一、系统环境和要求 在MySQL中,开启日志审计可以记录数据库的操作日志,包括修改、删除、插入等操作。这对于追踪和分析数据库的使用情况以及排查潜在的安全问题非常有帮助。本文将详细介绍如何开启MySQL的日志审计功能。 操作系统:Ubuntu 20…

人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 1

安装过程&使用指南&线性回归模型 使用例子 本来预想 是安装 到 conda 版本的 11.7的 但是电脑没有gpu 所以 安装过程稍有变动,下面简单讲下 conda create -n paddle_env117 python=3.9 由于想安装11.7版本 py 是3.9 所以虚拟环境名称也是 paddle_env117 activa…

6 Spring-AOP

文章目录 1,AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2,AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给容器…

常用设计模式介绍

前言 简说设计模式。 文章目录 前言一、设计模式的要素1、设计模式解决的问题2、设计模式分类1)创建型设计模式2)结构型设计模式3)行为型设计模式 二、详细介绍1、创建型设计模式1)工厂方法模式2)抽象工厂模式3&#x…

基于FPGA的光纤通信系统设计

文章目录 光纤通信系统的组成发送端FPGA端口定义状态机设计代码示例 接收端功能模块端口定义状态机设计 光纤通信系统的组成 发送端FPGA 发送控制逻辑、数据编码、校验码生成、缓存控制、时钟控制 端口定义 状态机设计 代码示例 接收端功能模块 接收端控制逻辑、数据解码、…

谈谈伦敦银投资的价值吗?

白银作为贵金属家族中的一员,当然有着其自身的经济价值和投资价值,尤其是在通货膨胀或货币贬值的时候,伦敦银的价格往往会上涨,投资者参与其中就能起到保值增值的作用。 此外,白银还是一种很好的避险资产,…

港大新工作 HiGPT:一个模型,任意关系类型 !

论文标题: HiGPT: Heterogeneous Graph Language Model 论文链接: https://arxiv.org/abs/2402.16024 代码链接: https://github.com/HKUDS/HiGPT 项目网站: https://higpt-hku.github.io/ 1. 导读 异质图在各种领域&#xf…

Linux系统下安装部署Linux管理面板1panel

目录 一 1panel介绍 1、1Panel简介 2、1Panel特点 二、本地环境规划 1、本此实验目的 2、本地环境部署 三、部署1Panel(在线安装) 1.创建安装目录 2.一键部署1Panel 3.检查1Panel服务运行状态 4.检查1Panel监听端口 四、关闭防火墙和selinux…

zabbix进阶

知识点补充 zabbix server在主机上运行服务,端口号为10050,zabbix agent 在被监控机器上运行(源码下载)主要完成对cpu,磁盘的信息采集,端口号为10051 zabbix 软件结构组成: 1.Zabbix Web GUI …

leetcode 107.二叉树的层序遍历II

题目 思路 正常层序遍历输出: [[3],[9,20],[15,7]] 这道题要求的输出:[[15,7],[9,20],[3]] 可以观察到,只要我们把原来的结果reverse一下就行了。 代码 //leetcode submit region begin(Prohibit modification and deletion)import java…

HWY-41B无源静态电压继电器 整定范围19-240VAC导轨安装JOSEF约瑟

HWY-31A无辅源静态电压继电器 HWY-32A无辅源静态电压继电器 HWY-33A无辅源静态电压继电器 HWY-34A无辅源静态电压继电器 HWY-35A无辅源静态电压继电器 HWY-31B无辅源静态电压继电器 HWY-32B无辅源静态电压继电器 HWY-33B无辅源静态电压继电器 HWY-34B无辅源静态电压继电器 HW…

激活函数选得好,模型性能差不了!17个方法,让网络训练更高效

激活函数是神经网络中不可或缺的组成部分,它们通过引入非线性特性,增强了网络的表达能力和学习能力。常用的激活函数主要可以分为两大类:饱和激活函数、非饱和激活函数。其中sigmoid和tanh是饱和激活函数,而ReLU及其变体则是非饱和…

程序员35岁会失业吗?【来自主流AI的回答】

程序员35岁会失业吗? 35岁被认为是程序员职业生涯的分水岭,许多程序员开始担忧自己的职业发展是否会受到年龄的限制。有人担心随着年龄的增长,技术更新换代的速度会使得资深程序员难以跟上;而另一些人则认为,丰富的经…

图像变换(python)

前言 这个Python没学过,写的是真的不方便,有很多问题还没解决,暂时不想写了,感兴趣的同学可以完善一下。设计的思路就是摆几个控件然后将对应的函数实现,这个Python的坐标放置以及控件的大小我没弄懂,算出…

如何统计代码量

工具: cloc 下载地址: Releases AlDanial/cloc GitHub 使用方法:

武汉星起航:跨境电商行业的领军者,互帮互助共创佳绩

武汉星起航电子商务有限公司,作为跨境电商行业的领军者,以其出色的业绩和卓越的团队实力,在业内赢得了广泛的赞誉。公司自运营团队在亚马逊平台上成功开设了多家店铺,凭借着深耕跨境电商行业多年所积累的经验,取得了令…

使用mybatis-plus添加数据报错

1、报错问题 2、错误分析 无法配置数据库实体类的属性id,类型不匹配 3、解决分析 (1)数据库类型不匹配,先查看数据库数据类型是否有错误 数据库类型设计没有出现问题 (2)数据库没有问题就看实体类&#xf…

Xavier初始化方法

avier初始化方法是一种常用的神经网络参数初始化方法,旨在有效地初始化权重,以促进神经网络的训练。该方法的提出者是Xavier Glorot和Yoshua Bengio,因此得名为“Xavier”。 在深度学习中,参数初始化是至关重要的,因为…