软考高级之系统架构师之软件需求工程
概述
一个完整的软件生存周期是以需求为出发点。软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。
需求开发:
- 需求获取
- 需求分析
- 需求定义(需求规格说明书)
- 需求验证
需求管理:
- 变更控制
- 版本控制
- 需求跟踪
- 需求状态跟踪
需求开发和需求管理是相辅相成的,需求开发是主线、目标,需求管理是支持、保障。
分类
需求分类:从不同的角度有不同的分类方式,每一种分类方式都提供一个对需求进行理解的视角。
软件需求包括三个不同的层次(分类):业务需求、用户需求和功能及非功能需求。
-
业务需求:表示组织或客户高层次的目标,通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求描述组织为什么要开发一个系统,即组织希望达到的目标。使用前景和范围文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求文档
-
用户需求:描述用户的目标,或用户要求系统必须能完成的任务
-
功能需求:规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。
-
业务需求(整体全局)
-
用户需求(用户视角)
-
系统需求(计算机化)
另一种分类方式:
- 基本需求(明示,常规需求)
- 期望需求(隐含)
- 兴奋需求(意外需求)
另有一说:软件需求包括功能需求、非功能需求、设计约束三个主要部分。
需求特性
软件需求的基本特征:可验证性。
理想情况下,每一项用户、业务需求和功能需求都应具备下列性质:
- 完整性:每一项需求都必须完整地描述即将交付使用的功能
- 正确性:每一项需求都必须正确地描述将要开发的功能
- 可行性:需求必须能够在系统及其运行环境的已知能力和约束条件内实现
- 必要性:每一项需求记录的功能都必须是用户的真正需要
- 无歧义:每一项需求声明对所有读者应该只有一种一致的解释
- 可验证性:如果某项需求不可验证,那判定其实现的正确与否就变成主观臆断。
需求开发
需求开发的过程有四个主要活动:
- 需求获取:积极地与用户进行交流,捕捉、分析和修正用户对目标系统的需求,并提炼出符合解决问题的用户需求,产生《用户需求说明书》
- 需求分析:目的是对各种需求信息进行分析并抽象描述,为目标系统建立一个概念模型
- 需求定义:目标是根据需求调查和需求分析的结果,进一步定义准确无误的产品需求,产生《需求规格说明书》。系统设计人员将依据《需求规格说明书》开展系统设计工作
- 需求验证:指开发方和用户共同对需求文档评审,经双方对需求达成共识后做出书面承诺,使需求文档具有商业合同效果。
需求获取
需求获取有很多方法:
用户访谈:用户访谈是最基本的一种需求获取手段,其形式包括结构化和非结构化两种。用户访谈是通过1对1(或1对2,1对3)的形式与用户面对面进行沟通,以获取用户需求。用户访谈具有良好的灵活性,有较宽广的应用范围。但是,也存在着许多困难,例如,用户经常较忙,难以安排时间;面谈时信息量大,记录较为困难;沟通需要很多技巧,同时需要系统分析师具有足够的领域知识等。另外,在访谈时,还可能会遇到一些对于企业来说比较机密和敏感的话题。因此,这看似简单的技术,也需要系统分析师具有丰富的经验和较强的沟通能力。
采样:是指从种群中系统地选出有代表性的样本集的过程,通过认真研究所选出的样本集,可以从整体上揭示种群的有用信息。对于信息系统的开发而言,现有系统的文档(文件)就是采样种群。当开始对一个系统做需求分析时,查看现有系统的文档是对系统有初步了解的最好方法。但是,系统分析师应该查看哪些类型的文档,当文档的数据庞大,法——研究时,就需要使用采样技术选出有代表性的数据。采样技术不仅可以用于收集数据,还可以用于采集访谈用户或者是采集观察用户。在对人员进行采样时,上面介绍的采样技术同样适用。通过采样技术,选择部分而不是选择种群的全部,不仅加快数据收集的过程,而且提高效率降低开发成本。采样技术使用数理统计原理,能减少数据收集的偏差。但是,由于采样技术基于统计学原理,样本规模的确定依赖于期望的可信度和已有的先验知识,很大程度上取决于系统分析师的主观因素,对系统分析师个人的经验和能力依赖性很强,要求系统分析师具有较高的水平和丰富的经验。
联合需求计划:为了提高需求获取的效率,越来越多的企业倾向于使用小组工作会议来代替大量独立的访谈。联合需求计划(Joint Requirement Planning,JRP)是一个通过高度组织的群体会议来分析企业内的问题并获取需求的过程,它是联合应用开发(Joint Application Development,JAD)的一部分。
需求分析
需求分析是一种软件工程活动,它在系统级软件分配和软件设计间起到桥梁的作用,需求分析使得系统工程师能够刻画出软件的功能和性能,指明软件和其他系统元素的接口,并建立软件必须满足的约束。
需求分析允许系统分析师细化软件的分解,并建立将被软件处理的数据、功能和行为模型。最后,需求规约为开发者和客户提供了软件开发完成后质量评估的依据。需求分析为软件设计师提供可被翻译成数据、架构、界面和过程设计的模型。
需求分析的任务是发现、求精、建模和规约的过程,包括详细地细化由系统工程师建立并在软件项目计划中明确的软件范围,创建所需数据、信息和控制流及操作行为的模型,此外,还要分析可选择的解决方案,并将它们分配到各软件元素中去。
在需求分析阶段要得到详细的规约是不可能的。客户可能并不能精确地肯定需要什么,开发者可能不能肯定可用什么特定的方法来适当地完成功能和性能。
需求抽取和分析的过程
- 发现需求
- 需求分类和组织
- 需求优先级划分和协商
- 需求规格说明
DFD
数据流图,是SA方法中的重要工具,是表达系统内部数据的流动并通过数据流描述系统功能的一种方法。
DFD还可被认为是一个系统模型,在信息系统开发中,如果采用结构化方法,则一般将DFD作为需求规格说明书的一个组成部分。用例模型描述一组用例、参与者及它们之间的关系。
通常使用数据字典作为该工具的补充说明:
- DFD是理解和表达用户需求的工具,是需求分析的手段。由于DFD简明易懂,不需要任何计算机专业知识就可以理解它,因此,系统分析师可以通过DFD与用户进行交流
- DFD概括地描述了系统的内部逻辑过程,是需求分析结果的表达工具,也是系统设计的重要参考资料,是系统设计的起点
- DFD作为一个存档的文字材料,是进一步修改和充实开发计划的依据。
面向数据流的分析方法:结构化分析方法。
OOA
面向对象分析,主要活动
- 建立需求模型,即用例图
- 确定系统边界
- 发现参与者
- 定义用例
- 建立基本模型,即类图
- 发现对象、定义它们的类
- 定义对象的内部特征——属性和操作
- 定义对象的外部关系——一般-特殊结构、整体-部分结构、关联和消息
- 建立辅助模型
- 划分包,建立包图
- 建立顺序图
- 建立活动图
- 建立构件图
- 建立部署图
- 建立其他模型图
- 建立模型规约:对模型中的成分进行规范的定义和文字说明
- 原型开发:可选,结合其他活动反复进行
以上各个OOA过程总体来说是一个反复进行,不断完善的过程,以建立基本模型为中心,进行需求模型、基本模型、辅助模型的建立、修复与完善。
需求定义
需求定义的过程也就是形成需求规格说明书的过程,通常有两种需求定义的方法:严格定义方法和原型方法。
严格定义方法,也称为预先定义,需求的严格定义建立在以下基本假设之上:
- 所有需求都能够被预先定义。这意味着在没有实际系统运行经验的情况下,全部的系统需求均可通过逻辑推断得到。但这种假设在许多场合是不能成立的。
- 开发人员与用户之间能够准确而清晰地交流。
- 采用图形(或文字)可以充分体现最终系统。在使用严格定义需求的开发过程中,开发人员与用户之间交流与沟通的主要工具是定义报告,包括文字、图形、逻辑规则和数据字典等技术工具。
原型化的需求定义过程是一个开发人员与用户通力合作的反复过程。从一个能满足用户基本需求的原型系统开始,允许在开发过程中提出更好的要求,根据用户的要求不断地对系统进行完善,它实质上是一种迭代的循环型的开发方式。
使用原型方法时需注意几个问题:
- 并非所有的需求都能在系统开发前被准确地说明
- 项目干系人之间通常都存在交流上的困难
- 需要实际的、可供用户参与的系统模型
- 有合适的系统开发环境
- 反复是完全需要和值得提倡的。需求一旦确定,就应该遵从严格定义的方法
需求验证
需求验证的四种基本方法是检查,演示,测试和分析。这四种方法本质上是分层的,因为每种方法都会越来越严格地验证产品或系统的要求:
- 检查:在检查需求时,会校对需求文档,以确保不会遗漏任何引出说明,还检查所有要求之间的可追溯性级别。为此,需要创建可追溯性矩阵,该矩阵确保所有要求都得到适当考虑,并且指定的所有内容都是合理的。还会检查需求的格式,看看需求是否清晰。
- 原型设计:这是一种为开发人员构建的系统构建模型或模拟的方法。这是利益相关者和用户之间非常流行的需求验证技术,因为它可以帮助他们轻松识别问题、检测缺失的需求并了解技术如何帮助他们。可以联系用户和利益相关者并获得他们的反馈。
- 测试设计:在测试设计期间,遵循测试团队构建一些测试场景的小程序。测试必须从需求规范中派生此过程的目的是找出规范中的错误或遗漏的细节,从而导致难以定义测试场景。
- 需求审查:在需求评审期间,一组知识渊博的人以结构化和详细的方式分析需求并识别潜在问题。随后聚在一起讨论问题并找出解决问题的方法。准备一份清单,供审阅者填写以提供审阅的正式输出。最后完成最终批准签字。
需求验证原则
根据 IREB 教学大纲,考虑以下四个需求验证原则可以提高验证结果的质量:
- 正确的利益相关者的参与
- 分离识别和纠正错误
- 从不同的角度进行验证
- 反复验证
需求管理
需求管理是一个对系统需求变更、了解和控制的过程,通常包括定义需求基线、处理需要变更和需求跟踪方面的工作。需求管理过程与需求开发过程相互关联,当初始需求导出的同时就启动需求管理计划,一旦形成需求文档初稿,需求管理活动就开始。
需求管理强调:控制对需求基线的变动;保持项目计划与需求的一致;控制单个需求和需求文档的版本情况;管理需求和联系链,或者管理单个需求和其他项目可交付产品之间的依赖关系;跟踪基线中的需求状态。
关于需求管理过程域内的原则和策,可以参考:
- 需求管理的关键过程领域不涉及收集和分析项目需求,而是假定己收集了软件需求,或者已由更高一级的系统给定了需求
- 开发人员在向客户以及有关部门承诺某些需求之前,应该确认需求和约束条件、风险、偶然因素、假定条件等
- 关键处理领域同样建议通过版本控制和变更控制来管理需求文档。
需求管理的活动包括:
- 变更控制
- 版本控制
- 需求跟踪
- 需求状态跟踪
需求变更控制
一个大型的软件系统的需求总是有变化的。对许多项目来说,系统软件总需要不断完善,一些需求的改进是合理的而且不可避免,要使得软件需求完全不变更,也许是不可能的,但毫无控制的变更是项目陷入混乱、不能按进度完成,或者软件质量无法保证的主要原因之一。一个好的变更控制过程,给项目风险承担者提供正式的建议需求变更机制,可以通过变更控制过程来跟踪已建议变更的状态,使已建议的变更确保不会丢失或疏忽。需求变更管理过程:
- 问题分析和变更描述。这是识别和分析需求问题或者一份明确的变更提议,以检查它的有效性,从而产生一个更明确的需求变更提议
- 变更分析和成本计算。使用可追溯性信息和系统需求的一般知识,对需求变更提议进行影响分析和评估。变更成本计算应该包括对需求文档的修改、系统修改的设计和实现的成本。一旦分析完成并且确认,应该进行是否执行这一变更的决策
- 变更实现。这要求需求文档和系统设计以及实现都要同时修改。如果先对系统的程序做变更,然后再修改需求文档,这几乎不可避免地会出现需求文档和程序的不一致。自动化工具能够帮助变更控制过程更有效地运作。许多团队使用商业问题跟踪工具来收集、存储和管理需求变更。用这样的工具创建的最近提交的变更建议清单,可以用作CCB会议的议程。问题跟踪工具也可以随时按变更状态分类报告出变更请求的数目。因为可用的工具、厂商和特性总在频繁地变化,所以这里无法给出有关工具的具体建议。
但工具应该具有以下几个特性,以支持需求变更过程:
- 可以定义变更请求中的数据项;
- 可以定义变更请求生命周期的状态转换模型;
- 可以强制实施状态转换模型,以便只有授权用户可以做出允许的状态变更;
- 可以记录每一个状态变更的日期和做出这一变更的人;
- 可以定义当提议者提交新请求或请求状态被更新时,哪些人可以自动接收电子邮件通知;
- 可以生成标准的和定制的报告和图表。
有些商业需求管理工具内置有简单的变更建议系统。这些系统可以将提议的变更与某一特定的需求联系起来,这样无论什么时候,只要有人提交一个相关的变更请求,负责需求的每个人都会收到电子邮件通知。
一个大型软件系统的需求通常是会发生变化的。在进行需求变更时,可以参考以下的需求变更策:
- 所有需求变更必须遵循变更控制过程;
- 对于未获得批准的变更,不应该做设计和实现工作;
- 变更应该由项目变更控制委员会决定实现哪些变更;
- 项目风险承担者应该能够了解变更数据库的内容;
- 决不能从数据库中删除或者修改变更请求的原始文档;
- 每一个集成的需求变更必须能跟踪到一个经核准的变更请求
版本控制
需求跟踪
需求跟踪包括编制每个需求与系统元素之间的联系文档,这些元素包括别的需求、体系结构、其他设计部件、源代码模块、测试、帮助文件和文档等。跟踪能力信息使变更影响分析十分便利,有利于确认和评估实现某个建议的需求变更所必须的工作。利用需求跟踪能力链(traceability link)可以跟踪一个需求使用的全过程,也就是从初始需求到实现的前后生存期。跟踪能力是优秀需求规格说明书的一个特征,为了实现跟踪能力,必须统一地标识出每一个需求,以便能明确地进行查阅。
客户需求向前追溯到软件需求。这样就能区分出开发过程中或者开发结束后,由于客户需求变更受到影响的软件需求,这也就可以确保软件需求规格说明包括所有客户需求。
从软件需求回溯响应的客户需求。这也就是确认每个软件需求的源头。如果使用实例的形式来描述客户需求,那么客户需求与软件需求之间的跟踪情况就是使用实例和功能性需求。从软件需求向前追溯到下一级工作产品。由于开发过程中系统需求转变为软件需求、设计、编码等,所以通过定义单个需求和特定的产品元素之间的(联系)链,可以从需求向前追溯到下一级工作产品。这种联系链告诉我们每个需求对应的产品部件,从而确保产品部件满足每个需求。从产品部件回溯到软件需求。说明每个部件存在的原因。如果不能把设计元素、代码段或测试回溯到一个需求,可能存在画蛇添足的程序。然而,如果这些孤立的元素表明一个正当的功能,则说明需求规格说明书漏掉一项需求。
需求跟踪矩阵RTM
需求状态跟踪
参考
相关文章:
软考高级之系统架构师之软件需求工程
概述 一个完整的软件生存周期是以需求为出发点。软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。 需求开发: 需求获取需求分析需求定义(需求规格说明书)需求验证 需求管理: 变更控制版本控制需求跟踪需求状态跟踪 需…...
使用 Velocity 模板引擎的 Spring Boot 应用
使用 Velocity 模板引擎的 Spring Boot 应用 模板引擎是构建动态内容的重要工具,特别适用于生成HTML、邮件内容、报告和其他文本文档。Velocity是一个强大的模板引擎,它具有简单易用的语法和灵活性。本文将介绍如何在Spring Boot应用中使用Velocity模板…...
mysql的mvcc详解
一 MVCC的作用 1.1 mvcc的作用 1.MVCC(Multiversion Concurrency Control)多版本并发控制。即通过数据行的多个版本管理来实现数据库的并发控制,使得在InnoDB事务隔离级别下执行一致性读操作有了保障。 2.mysql中的InnoDB中实现了MVCC主要…...
FreeRTOS两个死机原因(中断调用接口异常)【杂记】
1、中断回调函数中没有使用中断级API (xxFromISR) 函数 xSemaphoreGiveFromISR(uart_busy,&HighterTask);----正确 xSemaphoreGive(uart_busy);-----错误2、比configMAX_SYSCALL_INTERRUPT_PRIORITY优先级高的中断函数中使用了FreeRTOS的函数 3、临界代码保护后不可调用os…...
【AI视野·今日Robot 机器人论文速览 第四十三期】Thu, 28 Sep 2023
AI视野今日CS.Robotics 机器人学论文速览 Thu, 28 Sep 2023 Totally 37 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚****触觉力控学习策略,基于触觉的主动推理与力控用于小孔插入任务。提出了姿态控制与插入控制双策略模型。 (from 东京大学…...
批量快捷创建新数组的几种方式
1. for循环, push(比较简单, 就不上代码了) 2.创建空数组,填充null,然后map: function createData() { return new Array(1000) .fill(null) .map((v,i)>({name: name${i1}})) } console.log(createData()) 3.Array.frommap function createData() { return Array.from…...
单目标应用:基于沙丁鱼优化算法(Sardine optimization algorithm,SOA)的微电网优化调度MATLAB
一、沙丁鱼优化算法 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出,该算法模拟沙丁鱼的生存策略,具有搜索能力强,求解精度高等特点。 沙丁鱼主要以浮游生物为食,这些生物包括细菌、腔肠…...
基于Halo搭建个人博客
准备 云服务器 安装Docker 开启8090端口 步骤 拉取Halo镜像 docker pull halohub/halo:2.1.0 制作容器并启动 docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.1.0 --halo.external-urlhttp://服务器ip:8090/ --halo.security.in…...
DPDK系列之三十一DPDK的并行机制简介
一、并行机制 什么是并行机制?这个很多开发者的眼中,其实是模糊的。可能说起来头头是道,但是细一查究竟,发现都是飘在空中的东西。在前面的“多核和多CPU编程”中,对并行机制已经进行了较深入的分析,这里只…...
【Java】复制数组的四种方式
1. System.arraycopy() 用来将一个数组的(一部分)内容复制到另一个数组里面去。 定义: void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);例: int[] arr1 { 1, 2, 3, 4, 5 }; int[] arr2 new…...
设计模式5、原型模式 Prototype
解释说明:使用原型实例指定待创建对象的类型,并且通过复制这个原型阿里创建型的对象 UML 结构图: 抽象原型(Prototype):规定了具体原型对象必须实现的clone()方法 具体原型(ConcretePrototype&…...
驱动挂载物理页代码示例
驱动挂载物理页代码示例 使用的实验环境为32位xp系统在101012分页模式下 此实验用于测试对分页模式的掌握程度 代码思路如下: 获取目标进程的cr3在目标进程中申请新的物理页拆分新申请的物理页的线性地址通过差分出的内容获取pte将pte写入到要挂载的线性地址的p…...
【新版】系统架构设计师 - 层次式架构设计理论与实践
个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 层次式架构设计理论与实践考点摘要层次式体系结构概述表现层框架设计MVC模式MVP模式MVVM模式使用XML设计表现层表现层中UIP设计思想 中间层架构设计业务逻辑层工作流设计业务逻辑层设计 数据访问层…...
大数据Flink(九十):Lookup Join(维表 Join)
文章目录 Lookup Join(维表 Join) Lookup Join(维表 Join) Lookup Join 定义(支持 Batch\Streaming):Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维表 Join。…...
Docker方式创建MySQL8的MGR集群
目录 一、MGR简述二、安装环境及要求2.1 系统版本2.2 网络要求 三、安装步骤3.1 创建容器3.2 创建用户3.3 安装插件3. 4 启动集群3.5 加入集群 四、查看集群查看 MGR 组成员列表查看 MGR 组成员拓扑信息 五、其他说明集群配置要求集群配置限制集群相关变量和状态 一、MGR简述 …...
问 ChatGPT 关于GPT的事情:扩展篇
一、GPT预训练有什么节省显存和算力的技巧吗?我如何拿四块A100完成175B模型的预训练? 对于GPT预训练,有一些技巧可以帮助节省显存和算力。以下是一些常用的技巧: 按批次截断:在较长的文本序列中,将其切割…...
Spring Boot 集成 MinIO 实现文件上传、下载和删除
MinIO 是一种开源的对象存储服务,它基于云原生架构构建,并提供了高性能、易于扩展和安全的存储解决方案。 一.安装和配置 MinIO 服务器 为了演示方便,本文采用Windows安装 1.在官方网站下载MinIO 安装文件,地址:ht…...
Polygon Miden交易模型:Actor模式 + ZKP => 并行 + 隐私
1. 引言 前序博客: Polygon Miden:扩展以太坊功能集的ZK-optimized rollupPolygon Miden zkRollup中的UTXO账户混合状态模型 Polygon Miden为: ZK-optimized rollup由客户端生成证明完善Polygon ZK系列解决方案,致力于成为网络…...
Java流的体系结构(二)
文章目录 一、对象流的使用1.概念2.序列化机制3.代码案例:序列化过程:将内存中的java对象保存到磁盘中或通过通络传输出去4.反序列化,将磁盘文件中的对象还原为内存中的一个java对象 二、RandomAccessFile的使用1.说明2.代码案例 提示&#x…...
python计算阶层
阶层(Factorial)是指从1到一个正整数n的所有整数相乘,即n! 1 2 3 … n。下面是Python代码计算阶层: def factorial(n):"""计算阶层:param n: 正整数:return: n的阶层"""if n 1 or n 0:retu…...
前端架构师之01_ES6_基础
1 初识ES6 简单来说,ECMAScript是JavaScript语言的国际标准,JavaScript是实现ECMAScript标准的脚本语言。 2011年,ECMA国际标准化组织在发布ECMAScript 5.1版本之后,就开始着手制定第6版规范。 存在的问题:这个版本…...
银行卡号识别
# 导入工具包 from imutils import contours import numpy as np import argparse import cv2 import myutils# 设置参数 # ap = argparse.ArgumentParser() # ap.add_argument("-i", "--image", required=True, # help="path to input image")…...
【Idea】idea、datagrip设置输入法
https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5 下载后解压并重命名为 jbr, 然后替换对应 ide…...
回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测
回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于RF-Adaboost随机森林结合…...
最小生成树 | 市政道路拓宽预算的优化 (Minimum Spanning Tree)
任务描述: 市政投资拓宽市区道路,本着执政为民,节省纳税人钱的目的,论证是否有必要对每一条路都施工拓宽? 这是一个连问带答的好问题。项目制学习可以上下半场,上半场头脑风暴节省投资的所有可行的思路&a…...
Java实现使用多线程,实现复制文件到另一个目录,起不一样的名字,创建100万个数据
目录 1 需求2 实现 1 需求 我现在有一个300MB 的文件,想要根据这个文件,创建100万个大小一样的,名称不一样,如何实现,如何比较快点实现 2 实现 1 先准备好这个文件 2 准备好目录 3 写代码 private static void crea…...
uni-app:canvas-图形实现1
效果 代码 <template><view><!-- 创建了一个宽度为300像素,高度为200像素的canvas元素。canvas-id属性被设置为"firstCanvas",可以用来在JavaScript中获取该canvas元素的上下文对象。 --><canvas style"width:200p…...
【算法分析与设计】动态规划(下)
目录 一、最长公共子序列1.1 最长公共子序列的结构1.2 子问题的递归结构1.3 计算最优值1.4 举例说明1.5 算法的改进 二、最大子段和2.1 代码2.2 最大子段和问题的分治算法2.3 代码2.4 分治算法的时间复杂度2.5 最大子段和问题的动态规划算法 三、凸多边形最优三角剖分3.1 三角剖…...
计算机图像处理-均值滤波
均值滤波 线性滤波器的原始数据与滤波结果是一种算术运算,即用加减乘除等运算实现,如均值滤波器(模板内像素灰度值的平均值)、高斯滤波器(高斯加权平均值)等。由于线性滤波器是算术运算,有固定…...
FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)
文章目录 前言一、空闲任务概念二、钩子函数概念三、任务调度算法四、任务调度算法实验1.实验代码2.是否抢占3.时间片是否轮转4.空闲任务让步 总结 前言 本篇文章将带大家学习一下什么是空闲任务以及钩子函数,以及学习FreeRTOS中的任务调度算法,了解在F…...
付费文章 wordpress/怎么给产品找关键词
先给一个连接,我觉得总结的特别好:https://blog.csdn.net/tsfkurry/article/details/42027407指针最重要理解下面几句话:1.编译器总是要为函数的每一个参数制作临时副本,指针参数p的副本是_p,编译器使_pp.如果函数体内的程序修改了…...
重庆网站建设设计公司/线上推广平台
计算广告学是一门由信息科学、统计学、计算机科学以及微观经济学等学科交叉融合的新兴分支学科。前MediaV首席科学家、前Yahoo!高级科学家刘鹏开设计算广告学(Computational Advertising)公开课。课程地址: http://study.163.com…...
wordpress列表分页 js/慧聪网seo页面优化
使用环境在cmd模式下输入 mysql --version (查看mysql安装的版本).完整的命令可以通过mysql --help来获取.本测试使用的Mysql版本是mysql5,1.连接数据库不借助数据库管理软件(如Navicat等软件),通过dos连接mysql软件库服务器,然后操作数据库.连接数据库通用格式:mysql -P 端口号…...
网站链接结构有哪些/广告推广宣传
准备工作:制作好一个通用peU盘启动盘(U盘启动盘制作教程)下载好win10镜像文件,然后放入已经制作好的u盘启动工具中。装win10系统步骤:1、将制作好的U盘启动盘插入电脑,在开机时连续按下快捷启动键(快捷键:B…...
crm系统有哪些/长沙网站优化推广方案
客户端工具:mysql,mysqladmin,mysqldump,mysqlcheck 非客户端类的管理工具:myisamchk,myisampack mysql命令提示符 mysql> 等待输入命令 > 前面提供的‘未提供结束’ ”> > —> 续航符 /*> 注释信息 mysql的命令行编辑快捷键 ctrlw&am…...
空间站 参考消息/免费发布信息不收费的网站
“安全第一、预防为主、综合治理”是关系到国家经济发展与社会稳定的安全方针。安全生产是涉及职工生命安全的大事,同时关系到企业的生存发展和稳定。 2021年6月,第十三次全国人民代表大会常务委员会第二十九次会议,通过《全国人民代表大会常…...