当前位置: 首页 > news >正文

【软考系统规划与管理师笔记】第2篇 信息技术知识1

目录

1 软件工程

1.1 软件需求分析与定义

1.2 软件设计、测试与维护

1.3 软件质量保证及质量评价

1.4 软件配置管理

1.5 软件过程管理

1.6 软件复用

2 面向对象系统分析与设计

2.1 面向对象设计的基本概念

 2.2统一建模语言与可视化建模

3. 应用集成技术

3.1 数据库与数据仓库

3.2 WebServices技术

3.3 JavaEE 架构和J2EE架构

3.4 NET 架构

3.5 软件中间件


1 软件工程

1.1 软件需求分析与定义

软件的需求必须是可以验证的,无法验证的需求没有意义,这也是目前很多公司推进测试参与设计的原因,避免有些需求实现之后发现无法测试,导致重做。

扩展,很多公司在前期设计时经常拉很多人如产品、开发、测试、运维开会,导致会议很多,很多程序员不喜欢开这样的会(准确的说是不喜欢白天开这样的会议,晚上自己实现代码),但是如果提高一点视觉,这样的会从公司层面来说是非常有必要,而且整体成本较低的一种模式,会议本身也是一种项目实施工作。

 需求分析的目标:检测和解决需求之间的冲突,发现系统的边界,描述系统的需求。

1.2 软件设计、测试与维护

软件设计:根据软件需求,产生一个软件内部结构的描述,并将其作为软件构造的基础。通过软件设计,描述出软件架构及相关组件之间的接口;然后,进一步详细地描述组件,以便能构成这些组件。

 通过软件设计得到要实现的各种不同模型,并确定最终方案。其可以划分为软件架构设计(也叫作高层设计)和软件详细设计两个阶段

软件测试:为了评价和改进产品质量、识别产品的缺陷和问题而进行的活动。

测试不再只是一种仅在编码阶段完成后才开始的活动。现在的软件测试被认为是一种应该包括在整个开发和维护过程中的活动,它本身是实际产品构造的一个重要部分。 软件测试伴随开发和维护过程,通常可以在概念上划分为单元测试、集成测试和 系统测试3个阶段。

软件维护:将软件维护定义为需要提供软件支持的全部活动。这些活动包括在交 前完成的活动,以及交付后完成的活动。交付前要完成的活动包括交付后的运行计划 和维护计划等。交付后的活动包括软件修改、培训、帮助资料等。

软件维护有如下类型:

①更正性维护——更正交付后发现的错误;

②适应性维 护——使软件产品能够在变化后或变化中的环境中继续使用;

③完善性维护——改进交付后产品的性能和可维护性;

④预防性维护——在软件产品中的潜在错误成为实际错误前,检测并更正它们。

1.3 软件质量保证及质量评价

软件的质量包括:内部质量、外部质量和使用质量三部分(记住即可)

验证与确认的概念(CMMI中的概念,在翻译过程中导致有些难以理解)

验证过程:尝试确保活动的输出产品构造正确,即活动的输出产品满足活动的规范说明。

确认过程:则试图确保构造了正确的产品,即产品满足其特定的目的

1.4 软件配置管理

软件的配置管理活动包括:软件配置管理计划、软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与缴费等活动

扩展:在学校里搞代码开发时,往往不太重视软件的工程化特别是配置管理,但是在工作中软件的配置管理非常重要!配置管理计划、标识、版本发布未必要多么复杂,但是要有,特别是要实用、可控、可追溯,相信很多读者读经历过上线产品版本错误导致问题回溯的痛苦吧,特别是创业型公司对于代码和版本的控制更是重视。

1.5 软件过程管理

包括以下5个方面(与PMP非常类似,毕竟软件过程管理也是项目管理的一种)

  • 项目启动与范围定义
  • 项目规划
  • 项目实施
  • 项目监控与评审
  • 项目收尾与关闭

1.6 软件复用

软件复用是指利用已有软件的各种有关知识构造新的软件,以缩减软件开发和维护的费用。复用是提高软件生产力和质量的一种重要技术。我们经常使用的开源框架例、标准库、中间件都是可复用技术的典型产品,早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领 域知识、开发经验、设计决策、架构、需求、设计、 代码和文档等一切有关方面。

2 面向对象系统分析与设计

2.1 面向对象设计的基本概念

对象:对象由一组属性和对组属性进行的操作构成

对象的三个基本要素:对象标识、对象状态、对象行为

:类是现实中实体的形式化描述,类将实体的属性和操作封装在一起。

类相当于产品的设计图,对象相当于产品

Car

-type:String

-color:String

+run()

抽象:通过特定的实例抽取共同特征以后形成概念的过程。抽象是一种单一化的描述,强调给出与应用相关的特性,抛弃不相关的特性。对象是现实世界中某个实体的抽象,类是一组对象的抽象。

封装:将相关的概念组成一个单元模块,并通过一个名称来引用它。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行。例如类面向对象语言中(如C++)的private成员变量,需要通过成员函数才能修改,这种思想对于提升软件的质量非常有帮助,是简单而伟大的软件开发思想。

继承:表示类之间的层次关系(父类与子类),这种关系使得某类对象可以继 承另外一类对象的特征,继承又可分为单继承和多继承。

多态:使得在多个类中可以定义同一个操作或属性名称,并在每个类中可以有 不同的体现。多态使得某个属性或操作在不同的时期可以表示不同类的对象特性。 如图所示,Rectangle和Circle都继承于Shape,对于Shape而言,会有getArea() 的操作。但Rectangle和Circle的getArea()方法的实现是完全不一样的,这就体现了多 态的特征。

接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。可以将接口理解成为类的一个特例,它规定了实现此接口的类的操作方法,把真正的实现细节交由实现该接口的类去完成。

接口实现了屏蔽内部干扰,实现接口的类后续内部升级,只要接口不变就不影响,相当于一块自留地

 2.2统一建模语言与可视化建模

统一建模语言(Unified Modeling Language,UML)用于对软件进行可视化描述、 构造和建立软件系统的文档。需要注意的是,UML是一种可视化的建模语言,而不是编程语言。这个在选择题的选项中经常出现。

在UML中,使用各种不同的符号元素画成图形,用以表示系统的结构和行为。 UML图提供了对系统进行建模的描述方式,主要包括:

  • 用例图(Use Case Diagram)
  • 类图(Class Diagram)
  • 对象图(Object Diagram)
  • 组件图(Component Diagram)
  • 部署图(Deployment Diagram)
  • 状态图(State Diagram)
  • 序列图(Sequence Diagram)
  • 协作图(Collaboration Diagram)
  • 活动图(Activity Diagram)等

RUP(Rational Unified Process)是使用面向对象技术进行软件开发的最佳实践之一, 是软件工程的过程。

3. 应用集成技术

3.1 数据库与数据仓库

数据库:主要用于事务处理,即OLTP(Transaction),也就是我们常用的面向业务的增删改查操作。常用的数据库有关系库Mysql,Oracle,PostgreSQL,内存库Redis,时序库PI。

数据仓库:主要用于数据分析,即OLAP(Analytics),供上层决策,常见于一些查询性的统计数据。常见的数仓有Greenplum,Hive。基于MYISAM存储引擎的MySQL也是可以用来做数据仓库的。

教材中的定义:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。

3.2 WebServices技术

Web服务(Web Services)定义了一种松散的、粗粒度的分布计算模式,使用标准的HTTP(S)协议传送XML表示及封装的内容。

Web服务的典型技术包括:

  • 用于传递信息的简单对象访问协议(Simple Object Access Protocal,SOAP)
  • 用于描述服务的Web服务描述语言(Web Services Description Language,WSDL)
  • 用于Web服务注册的统一描述、发现及集成(Universal Description Discovery and Integration,UDDI)
  • 用于数据交换的XML

Web服务的主要目标是跨平台的互操作性,

适合使用Web Services的情况包括:跨越防火墙、应用程序集成、B2B集成、软件重用等。

不适合使用Web服务的情况包括:单机应用程序、局域网上的同构应用程序等。

3.3 JavaEE 架构和J2EE架构

JavaEE(Java Platform Enterprise Edition) Java企业版本是最早由Sun公司提出、各厂商共同制定 并得到广泛认可的企业标准。JavaEE概念已经比较老旧,早已被J2EE代替,J2EE的全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定的工业标准,J2EE是市场上主流的企业级分布式应用平台的解决方案(这个也有一定年头了,当然现在还有不少银行、大型企业由于历史问题仍然在使用)

3.4 NET 架构

NET开发框架在通用语言运行环境(Common Language Runtime)基础上,给开发人员提供了完善的基础类库、数据库访问技术及网络开发技术,开发者可以使用多种语言快速构建网络应用。

3.5 软件中间件

中间件(Middleware)是位于硬件、操作系统等平台和应用之间的通用服务。借由中间件,解决了分布系统的异构问题。

通常将中间件分为数据库访问中间件、远程过程调用中间件、面向消息中间件、事务中间件、分布式对象中间件等

重点介绍一下以下中间件

数据库访问中间件:通过一个抽象层访问数据库,从而允许使用相同或相似的 出 码访问不同的数据库资源。典型技术如Windows平台的ODBC和Java平台的JDBC等。

远程过程调用中间件(Remote Procedure Call,RPC):这是一种分布式应用程序的处理方法。一个应用程序可以使用RPC来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。典型产品如ICE。

相关文章:

【软考系统规划与管理师笔记】第2篇 信息技术知识1

目录 1 软件工程 1.1 软件需求分析与定义 1.2 软件设计、测试与维护 1.3 软件质量保证及质量评价 1.4 软件配置管理 1.5 软件过程管理 1.6 软件复用 2 面向对象系统分析与设计 2.1 面向对象设计的基本概念 2.2统一建模语言与可视化建模 3. 应用集成技术 3.1 数据库与…...

【无标题】ELISA-3(加装跟踪装置)—让群体协作更智能!

群体智能是近年来发展迅速的一个人工智能学科领域,通过对蚂蚁、蜜蜂等为代表的社会性昆虫群体行为的研究,实现分布式等智能行为。作为新一代人工智能的重要方向,群体智能通常用于无人机、机器人集群的协同作业。目前,群体智能在基…...

Dubbo源码解析一服务暴露与发现

Dubbo 服务暴露与发现 1. Spring中自定义Schema1.1 案例使用1.2 dubbo中的相关对象 2. 服务暴露机制2.1 术语解释2.2 流程机制2.3 源码分析2.3.1 导出入口2.3.2 导出服务到本地2.3.3 导出服务到远程(重点)2.3.4 开启Netty服务2.3.5 服务注册2.3.6 总结 3. 服务发现3.1 服务发现…...

有哪些工具软件一旦用了就离不开?

💖前言 目前,随着科技的快速发展,电脑已经进入了许许多多人的生活 ,在平日的学习、工作和生活里,我们会用的各种各样的强大软件。市面上除了某些大公司开发在强大软件,还有各路大神开发具有某些功能的强大…...

ObjectARX如何判断点和多段线的关系

目录 1 基本思路2 相关知识点2.1 ECS坐标系概述2.2 其他点坐标转换接口2.3 如何获取多段线的顶点ECS坐标 3 实现例程3.1 接口实现3.2 测试代码 4 实现效果 在CAD的二次开发中,点和多段线的关系是一个非常重要且常见的问题,本文实现例程以张帆所著《Objec…...

四、DRF序列化器create方法与update方法

上一章: 二、Django REST Framework (DRF)序列化&反序列化&数据校验_做测试的喵酱的博客-CSDN博客 下一章: 五、DRF 模型序列化器ModelSerializer_做测试的喵酱的博客-CSDN博客 一、背景 1、创建请求,post,用户输入…...

洛谷P8792 最大公约数

[蓝桥杯 2022 国 A] 最大公约数 题目描述 给定一个数组,每次操作可以选择数组中任意两个相邻的元素 x , y x, y x,y 并将其中的一个元素替换为 gcd ⁡ ( x , y ) \gcd(x, y) gcd(x,y),其中 gcd ⁡ ( x , y ) \gcd(x, y) gcd(x,y) 表示 x x x 和 y…...

【SpringBoot集成Nacos+Dubbo】企业级项目集成微服务组件,实现RPC远程调用

文章目录 一、需求环境/版本 二、须知2.1、什么是RPC?2.2、什么是Dubbo?2.3、什么是Nacos? 三、普通的SpringBoot项目集成微服务组件方案(笔者给出两种)方案一(推荐)1、导入maven依赖&#xff0…...

MySQL主从同步(开GTID)

目录 一、搭建简单的主从同步 二、mysql删除主从(若没有配置过可以不用进行这一步) 1、停止slave服务器的主从同步 2、重置master服务 三、开启GTID 1、Master配置 2、Slave配置 一、搭建简单的主从同步 GTID原理:http://t.csdn.cn/g…...

打造精细化调研,这些产品榜上有名,你用了吗?

调查问卷是一种流行的数据收集工具,研究人员、营销人员和企业使用它来征求目标受众的反馈意见。调查问卷工具使创建、分发和分析调查问卷的过程变得更加简单和高效。想要做好一份调查问卷,选择一款好用的工具是少不了的。不过,在众多的问卷工…...

[golang gin框架] 37.ElasticSearch 全文搜索引擎的使用

一.全文搜索引擎 ElasticSearch 的介绍,以及安装配置前的准备工作 介绍 ElasticSearch 是一个基于 Lucene 的 搜索服务器,它提供了一个 分布式多用户能力的 全文搜索引擎,基于 RESTful web 接口,Elasticsearch 是用 Java 开发的,并作为 Apach…...

赋的几个发展阶段

赋,起源于战国,形成于汉代,是由楚辞衍化出来的,也继承了《诗经》讽刺的传统。关于诗和赋的区别,晋代文学家陆机在《文赋》里曾说: 诗缘情而绮靡,赋体物而浏亮。 也就是说,诗是用来抒发主观感情…...

Model-Free TD Control: Sarsa

import time import random # 相对于Q 效果会差一些 class Env():def __init__(self, length, height):# define the height and length of the mapself.length lengthself.height height# define the agents start positionself.x 0self.y 0def render(self, frames50):fo…...

CloudBase CMS的开发注意事项

引言 在进行基于云开发的微信小程序开发时为了减轻工作量打算用CloudBase CMS来减轻工作量,随后去了解并体验了CloudBase CMS的使用,总体来说还有些许问题没有解决,对减轻后台管理工作并没有起到很大的作用。 项目情景 使用CloudBase CMS来管…...

大佬联合署名!反对 ACL 设置匿名期!

夕小瑶科技说 原创 作者 | 智商掉了一地、Python 近日,自然语言处理领域的多位知名学者联合发起了一项反对 ACL 设置匿名期的联合署名行动,包括著名学者 William Wang 和 Yoav Goldberg 在内,还有Christopher Potts、Hal Daume、Luke Zettl…...

【JavaSE】Java基础语法(十四):Static

文章目录 概述特点与应用注意事项为什么一个静态方法中只能访问用static修饰的成员? 概述 Java中的static是一个修饰符(也可称关键字),可以用于修饰变量、方法和代码块。 特点与应用 static修饰的成员具有以下特点: 被类的所有对…...

1.Linux初识

在 Linux 系统中,sudo 是一个重要的命令,可以允许普通用户以管理员权限来运行特定的命令。通过 sudo 命令,普通用户可以暂时获取管理员权限,执行需要管理员身份才能执行的操作。 下面是一些关于 sudo 命令的用法: 以管…...

进程(二)

这一节我们写个MFC剪切板程序 1.下载相应的组件 工具->工具视图,因为之前已经下载过一部分了,这里如果创建MFC报错的话,就要把没下载的补上 此项目需要MFC库 解决方法 2.创建MFC程序 3.打开资源视图,直接在菜单栏顶部搜索…...

《消息队列高手课》课程笔记(二)

消息模型:主题和队列有什么区别? 两类消息模型 早期的消息队列,就是按照“队列”的数据结构来设计的。 生产者(Producer)发消息就是入队操作,消费者(Consumer)收消息就是出队也就是…...

以“智”提质丨信创呼叫

随着人工智能、大数据、云计算等新兴技术飞速发展,呼叫中心、全媒体智能客服等现已被广泛应用于多个行业领域。其中,呼叫中心作为政企对外服务的重要窗口,已从“传统电话营销”发展到“智能呼叫中心”阶段,以客户服务为核心&#…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...