精华内容
下载资源
问答
  • 软件工程硬件接口
    2019-06-10 13:42:31

    提到接口,软件工程师和硬件工程师的答案都差不多,接口即协议,但是两人却无法沟通。软件工程师认为接口是顶层设计,是程序构架;而硬件工程师的接口是两个硬件之间的通信。实际上,如果抽象地定义接口,两人就统一了,接口就是两个子系统或者模块之间的通信协议,而接口是设计也是将一个系统抽象成很多的接口而展现给使用者和开发者,即使用者和开发者与系统之间的“协议”。相比较软件工程师定义的接口,硬件工程师对接口的理解没有那么复杂,他们眼中的接口就是两个硬件模块之间的通信协议。比如说上、下位机的通信,比如USB接口、串口通信、SPI、I2C、MODBUS等等。软件工程师学习硬件,需要了解一些常用的通信协议,即硬件工程师常说的“你发什么,我发什么”,就这点来说,类似于软件中的消息。

    更多相关内容
  • 7寸RGB接口电容触摸屏GT911模块软硬件技术资料+STM32单片机软件工程源码: 1-原理图_尺寸图_封装库 2-配套程序 3-参考资料 5_7寸液晶屏与各开发板的接线方式.xls 关于触摸相关程序说明.pdf 7.0-11SPEC(STD-TN92).pdf ...
  • 硬件工程师如何零基础入门?

    万次阅读 多人点赞 2022-03-13 23:08:03
    文章目录1、书籍阅读2、网站推荐3、免费的教学课程推荐4、知识体系的搭建4.1 电子元器件知识学习4.2 硬件开发工具的使用4.3 PCB设计和电路设计4.3 总线接口协议学习4.4 进阶内容学习 这个问题关注有一段时间了,想找...

    这个问题关注有一段时间了,想找一个比较长的空闲的时间好好的回答一下。

    首先我是一名硬件工程师,工作6年,从事过物联网、车载、智能硬件、手机平板等产品的硬件研发工作,我觉得我还是有一些发言权的。

    不同行业的硬件工程师差别也是蛮大的,但也不是无迹可寻,很多东西也是相通的。

    核心思想都是一样的,硬件工程师都是围绕电路设计和PCB设计展开的工作。

    在整个产品的研发过程中,可以说电路设计和PCB设计只能占到很小的一部分,更多的是,前期的准备工作,以及后期的调试及维护。

    作为一个过来人,下面这些内容,建议好好看看,相信你会有很大的收获。

    1、书籍阅读

    硬件的入门需要先看基本的书籍,和工程实践结合紧密的课程有:电路分析、数字电路、模拟电路、高频电子等。

    在这里插入图片描述
    对于基础较差的,先看电路分析,再看模电和数电。

    之前也单独写过一篇文章,推荐了一些很好的书籍。

    如开关电源设计,推荐下面这本书。

    在这里插入图片描述
    如高速电路设计,推荐下面这本书。

    在这里插入图片描述

    完整地文章链接如下:学硬件设计,需要看哪些书籍?

    2、网站推荐

    除了日常的书籍,我们还会上网查一些资料,因为网络资源很复杂,筛选优质的信息很费时间,可能找了半天,找到的还是很劣质误导人的信息。

    网站推荐站,也单独写过一篇文章:学习电子,有什么网站可以推荐?

    3、免费的教学课程推荐

    对于一些学生,购买高昂的教学视频,会有很大的经济压力,而且还不一定适合小白观看。

    下面的视频都是大厂出品的,课程质量非常高,更重要的是免费!免费!免费!重要的事情说三遍。

    点击阅读:这些视频课程,直接吹爆

    4、知识体系的搭建

    知道要看什么书,上什么网站学习,并配有不错的教学视频,接下来就是搭建自己的知识体系,并不断完善它

    因为硬件工程师要学的内容很多,我整理了一份思维导图。

    4.1 电子元器件知识学习

    电子产品是由一个个电子元器件组成的,了解其特性、原理、学会选型,是基本功。

    无源器件,像电阻、电容、电感,用的是最多的器件,一个高端的手机中需要用到上千个电容,电阻稍少一些。

    在这里插入图片描述
    晶体管,如二极管、三极管、MOS 管,应用也很多,仅次于电阻电容。

    在这里插入图片描述
    电源芯片,如 DC-DC、LDO、充电芯片。

    其他的,如晶振、磁珠、存储器、继电器、传感器、RTC、ESD 保护器件等等,都是需要掌握的。

    如果你不知道要学哪些电子元器件,没关系,我已经整理好了:硬件设计-知识体系思维导图

    4.2 硬件开发工具的使用

    电脑端软件,如原理图&PCB绘制工具,常用的有三个:Altium Designer、PADS、Cadence,对于入门的同学,推荐使用Altium Designer,上手会比较快一些。

    如果你不知道如何使用,没关系,我整理了一下教学视频:AD软件视频教程

    PADS一些芯片原厂用的很多,通信厂、手机厂,用PADS的也多。Cadence功能非常强大,入门难一点,上手之后,用起来很丝滑,很多大公司都在用。

    然后就是原理图仿真工具,在研发前期,对于一些新的电路方案,我们可以选择仿真,来确定电路参数和电路的正确性。

    在这里推荐TI的Tina,工具非常小巧,功能也非常强大。

    之前也写过一篇文章,感兴趣的可以看看:Tina-TI——小巧好用又高效的原理图仿真软件

    测量工具,如万用表、示波器、电源、电子负载等,都是硬件工程师必须会的仪器,会帮助我们更多的分析问题解决问题。

    可以参考下面这张图。

    在这里插入图片描述

    4.3 PCB设计和电路设计

    在学习了工具及电子元器件知识后,接下来就是进行电路设计PCB设计

    小白会说了,那么多电路,怎么学的过来了。当然了,这里说的是一些常见的并且常用的电路,通过学习这些电路,来提高自己分析电路、读懂电路的能力,会看了,会模仿了,然后才能设计电路。

    在这里插入图片描述
    写了一个硬件设计的专栏,登上了热销专栏榜第89名,感兴趣的可以看看。

    在这里插入图片描述

    4.3 总线接口协议学习

    接下来就是接口协议的学习。

    为啥要学这些东西,接口就像两个汽车之间的桥梁,如果你连桥梁都没建好,那汽车肯定无法行驶,协议则像交通规则,双方都遵守了规则,才不会出问题,这里的汽车就是电子里面的芯片。

    在这里插入图片描述

    4.4 进阶内容学习

    硬件工程师是一个理论与实践结合非常紧密的工作,两则缺一不可。

    所有的技能都是为产品而服务的,下面这些进阶内容,也非常重要。

    在这里插入图片描述

    像英语能力,因为大部分电子元器件的规格书都是全英文的,如果英语不过关,连基本的电子元器件选型都很困难。

    像EMC电磁兼容,现在电子产品的要求越来越高,对环境的影响,对人的影响,包括出口的产品,很多是需要过各种各样的认证,这个时候产品的EMC设计就显得异常的重要。

    海阔凭鱼跃,天高任鸟飞。

    展开全文
  • 软件工程期末考试题库(超全)

    万次阅读 多人点赞 2020-12-18 18:25:49
    软件工程期末考试题库 选择题 具有风险分析的软件生命周期模型是(  C   )。 A.瀑布模型      B.喷泉模型  C.螺旋模型        D.增量模型 软件工程的基本要素包括方法、工具和( A )。 ...

    软件工程期末考试题库

    选择题

    1. 具有风险分析的软件生命周期模型是(  C   )。

    A.瀑布模型      B.喷泉模型  C.螺旋模型        D.增量模型

    1. 软件工程的基本要素包括方法、工具和( A )。

    A. 过程        B. 软件系统   C. 硬件环境         D. 人员

    1. 软件的复杂性是( A ),它引起人员通信困难、开发费用超支、开发时间超时等问题。

    A. 固有的         B. 人为的   C. 可消除的         D. 不可降低的

    1. 在结构化分析方法中,( C )表达系统内部数据运动的图形化技术。

    A. 数据字典         B. 实体关系图   C. 数据流图         D. 状态转换图

    1. “软件危机” 是指(  C  )。

    A.计算机病毒的出现      B.利用计算机进行经济犯罪活动

    C.软件开发和维护中出现的一系列问题 D.人们过分迷恋计算机系统

    1. 随着软硬件环境变化而修改软件的过程是(  B  )。

    A.校正性维护       B.适应性维护     C.完善性维护       D.预防性维护

    1. 需求分析中开发人员要从用户那里了解( A )。

    A.软件做什么       B.用户使用界面   C.输入的信息       D.软件的规模

    1. 软件详细设计的主要任务是确定每个模块的(  A  )。

    A.算法和使用的数据结构     B.外部接口     C.功能         D.编程

    1. 为了提高模块的独立性,模块内部最好是(  C  )。//外部耦合,功能内聚

    A.逻辑内聚       B.时间内聚     C.功能内聚       D.通信内聚

    1. 一个模块的(  C  )太大一般是因为缺乏中间层次,应当适当增加中间层次的控制模块。

    A.深度         B. 宽度  C. 扇出         D. 扇入

    1. 模块的内聚性最高的是(  D  )。

    A.逻辑内聚       B.时间内聚  C. 偶然内聚       D.功能内聚

    1. 需求分析是(  A  )。

    A. 软件开发工作的基础     B. 软件生存周期的开始

    C. 由系统分析员单独完成的    D. 由用户自己单独完成的

    1. 在白盒测试技术测试用例的设计中,(  B  )是最强的覆盖标准。

    A.语句覆盖       B.路径覆盖  C. 条件组合覆盖      D.判定覆盖

    1. 软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归测试过程称( A )。 A. 改正性维护      B. 适应性维护   C. 完善性维护             D. 预防性维护

    2. ( C ) 是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。

    A. 多态性         B. 继承   C. 封装        D. 消息

    1. 对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。

    A.结合    B.隐藏   C.封装   D.抽象

    1. 面向对象的开发方法中,(  C  )将是面向对象技术领域内占主导地位的标准建模语言。

    A.Booch方法  B.Coad方法  C.UML语言  D.OMT方法

    1. ( A )意味着一个操作在不同的类中可以有不同的实现方式。

    A.多态性  B.多继承   C.类的可复用  D.信息隐藏

    1. 单元测试的测试用例主要根据(  D  )的结果来设计。

    A.需求分析      B.源程序   C.概要设计  D.详细设计

    1. 软件测试是为了( B )而执行程序的过程。

    A. 纠正错误    B. 发现错误  C. 避免错误        D. 证明正确

    21.类构件的重用方式有多态重用、继承重用和( A )

    A.实例重用       B.重载重用    C. 代码重用           D. 方法重用

    1. 支持面向对象技术的软件生存周期模型是(  A  )。

    A.喷泉模型       B.螺旋模型    C.增量模型          D.瀑布模型

    1. 在白盒测试技术测试用例的设计中,(  A  )是最弱的覆盖标准。

    A.语句覆盖       B.路径覆盖    C.条件组合覆盖      D.判定覆盖

    1. 下面哪些测试方法属于白盒测试(  A E   )。//BCD是黑盒测试

    A、基本路径测试  B、等价类划分  C、边界值分析  D、错误推测  E、逻辑覆盖测试

    1. 瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C )。

    A、详细计划  B、可行性分析 C、运行阶段  D、测试与排错

    1. 从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大( C )。

    A、详细设计阶段  B、概要设计阶段 C、需求分析阶段  D、测试和运行阶段

    1. 在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标( A )。

    A、需求分析阶段  B、详细设计阶段 C、概要设计阶段  D、可行性研究阶段

    1. 软件工程的出现主要是由于( C )。

    A.程序设计方法学的影响  B.其它工程科学的影响 C. 软件危机的出现  D.计算机的发展

    1. 软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( C )

    A、硬件环境     B、软件开发的环境 C、软件开发工具和软件开发的环境  D、开发人员的素质

    1. 软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B )

    A、相互排斥  B、相互补充 C、独立使用  D、交替使用

    1. UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )

    A、基于瀑布模型的结构化方法  B、基于需求动态定义的原型化方法

    C、基于对象的面向对象的方法  D、基于数据的数据流开发方法

    1. 软件测试基本方法中,下列 ( D ) 不用测试实例。

    A). 白盒测试法 B). 动态测试法 C). 黑盒测试法 D). 静态测试法

    1. 结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的( B )

    A、控制流  B、数据流  C、程序流  D、指令流

    1. 软件开发的结构化生命周期方法将软件生命周期划分成( A )

    A、 计划阶段、开发阶段、运行阶段  B、 计划阶段、编程阶段、测试阶段

    C、 总体设计、详细设计、编程调试  D、需求分析、功能定义、系统设计

    1. 可行性研究主要从以下几个方面进行研究:( A )

    A) 技术可行性,经济可行性,操作可行性 B) 技术可行性,经济可行性,系统可行性

    C) 经济可行性,系统可行性,操作可行性 D) 经济可行性,系统可行性,时间可行性

    1. 耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下: ( C )

    A) 内容耦合,控制耦合,数据耦合,公共环境耦合。 B) 内容耦合,控制耦合,公共环境耦合,数据耦合。

    C) 内容耦合,公共环境耦合,控制耦合,数据耦合。 D) 控制耦合,内容耦合,数据耦合,公共环境耦合。

    1. 可行性分析研究的目的( B )

    A 争取项目 B 项目值得开发否 C 开发项目 D 规划项目

    1. 数据字典是用来定义( D )中的各个成分的具体含义

    A 流程图 B 功能结构图 C 系统结构图 D 数据流图

    1. 程序的三种基本控制结构的共同特点是( C )

    A 只能用来描述简单程序 B 不能嵌套使用 C 单入口,单出口 D 仅用于自动控制系统

    1. 为高质量的开发软件项目,在软件结构设计时,必须遵循( A )原则

    A 信息隐蔽 B 质量控制 C 程序优化 D 数据共享

    1. 黑盒测试在设计测试用例时,主要研究( A )

    A 需求规格说明于概要设计说明 B 详细设计说明 C 项目开发计划 D 概要设计说明与详细设计说明

    1. 通过 ( B ) 可以完成数据流图的细化。

    A). 结构分解 B). 功能分解 C). 数据分解 D). 系统分解

    1. 程序流程图 (PDF) 中的箭头代表的是 ( B )

    A). 数据流 B). 控制流 C). 调用关系 D). 组成关系

    1. 软件定义期问题定义阶段涉及的人员有 ( D )

    A). 用户、使用部门负责人 B). 软件开发人员、用户、使用部门负责人

    C). 系统分析员、软件开发人员 D). 系统分析员、软件开发人员、用户、使用部门负责人

    1. ( C )应考虑对模块相联和资源共享问题进行描述和制约。

    A). 系统设计 B). 详细设计 C). 接口控制 D). 结构化编辑工具

    1. 业界存在三种需求分析方法:面向功能分析、面向对象分析和 B 。

    A.面向算法分析 B.面向数据分析 C.面向程序分析 D.面向硬件分析

    1. 软件可维护性的特性中相互矛盾的是 C 。

    A.可修改性和可理解性 B.可测试性和可理解性 C.效率和可修改性 D.可理解性和可读性

    1. 软件测试方法中的 D 属于静态测试方法。

    A. 黑盒法 B.路径覆盖 C.错误推测 D.人工检测

    1. 结构化分析方法采用的基本手段是 A

    A. 分解与抽象 B.分解与综合 C.归纳与推导 D.试探与回溯

    1. 可行性研究要进行一次(D)需求分析。

    A.深入的 B.详尽的 C.彻底的 D.简化的、压缩了的

    1. 可维护性的特性中相互促进的是(A)

    A.可理解性和可测试性  B.效率和可移植性 C.效率和可修改性   D.效率和结构好

    1. (D)是以提高软件质量为目的的技术活动。

    A.技术创新  B.测试  C.技术创造  D.技术评审

    1. 软件测试可能发现软件中的( B ),但不能证明软件 ( )。

    A.所有错误,没有错误 B.错误,没有错误 C.逻辑错误,没有错误 D. 设计错误,没有错误

    1. 以下不属于软件维护困难表现的是 ©。

    A.读懂别人的程序是困难的。
    B.文档的不一致性。
    C.源程序及相关文档的错误或丢失。
    D.软件开发和软件维护在人员和时间上的差异。E. 软件维护不是一项吸引人的工作。

    1. 软件设计一般分为总体设计和详细设计,它们之间的关系是 (A)。

    A.全局和局部 B.抽象和具体 C.总体和层次 D.功能和结构

    1. 一组语句在程序多处出现,为了节省空间,把这些语句放在一个模块中,该模块的内聚度是( C )的。

    A.逻辑性 B.瞬时性 C.偶然性 D.通信性

    1. 在一个课程注册系统中,定义了类 CourseSchedule 和类 Course , 并在类 CourseSchedule 中定义了方法 add (c:Course) 和方法 remove (c:Course),则类 CourseSchedule 和类 Course 之间的关系是( C )。

    A.泛化关系 B.组合关系 C.依赖关系 D.包含关系

    1. 软件策划的上游是( A ),下游是( B )

    A)需求分析 B)软件设计 C)软件测试 D)可行性分析

    1. 概要设计的结果是提供一份 ( A )。

    A). 模块说明书 B). 框图 C). 程序 D). 数据流图

    1. 面向数据流软件设计方法一般是把数据流图中的数据流化分为 (B) 两种流,再将数据流图映射为软件结构。

    A). 数据流与事务流 B). 交换流和事务流
    C). 信息流与控制流 D). 交换流和数据流

    填空题

    1. 一般来说,可以从 一致性完整性__、现实性____和有效性___四个方面验证软件需求的正确性。

    2. IPO图是 _输入、处理和输出图 _ 的简称,它是美国IBM公司发展完善起来的一种图形工具。

    3. 系统流程图是描述__物理模型__的传统工具,用图形符号表达了系统中各种元素之间的__信息流动_____情况。

    4. 数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点

    5. 集成测试的方法主要有 渐增式和非渐增式

    6. 软件生命周期一般可分为**问题定义、可行性研究、需求分析、设计编码、测试、运行与维护**阶段。

    7. 可行性研究主要集中在以下四个方面**经济可行性**、技术可行性__、__法律可行性___和抉择。

    8. 在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。

    9. 实施精化设计的目标是基于模块的“高内聚低耦合”的原则,提高模块的_独立性

    10. 按软件的功能进行划分,软件可以划分为 系统软件支撑软件应用软件

    11. 单元测试一般以**白盒**测试为主,__黑盒__测试为辅。

    12. 面向对象的数据存储管理模式分为__文件__、关系数据库面向对象数据库三种。

    13. 通用体系结构模式有:分层模式、管道与过滤器模式和黑板模式

    14. 成本效益分析的目的是从( 经济 )角度评价开发一个项目是否可行。

    15. 自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和 ( 宽度优先策略  ) 。

    16. 汇编语言是面向( 机器 ) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。

    17. 详细设计的任务是确定每个模块的内部特性,即模块的算法、( 使用的数据 )。

    18. 所有软件维护申请报告要按规定方式提出,该报告也称(  软件问题  )报告。

    19. 有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向维护的技术;在维护阶段用来提高维护的效率和质量的( 维护支援 )技术。

    20. 科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选择的语言有:( FORTRAN语言)、PASCAL语言、C语言和PL/1语言。

    21. 用户界面的 可使用性 是用户界面设计最重要的也是最基本的目标

    22. 数据流图数据字典 共同构成系统的逻辑模型

    23. 软件测试的方法有 分析方法非分析方法(即黑盒法)

    24. 成本估计方法主要有 自底向上估计自顶向下估计算法模型估计三种类型

    25. 常见的软件概要设计方法有三大类:以数据流图为基础构造模块结构的 结构化设计方法 ,以数据结构为基础构造模块的 Jackson方法 ,以对象、类、继承和通信为基础的 面向对象设计方法

    26. 实用的白盒测试覆盖技术有 4 种:语句覆盖、条件覆盖、分支 (或判定) 覆盖和组合覆盖。

    27. 传统软件维护一般分为 4 大类,分别是纠错性维护适应性维护完善性维护和预防性维护

    28. 在 V 测试模型中,编码结束后,首先作单元测试,然后是集成测试系统测试和验收测试

    29. 传统软件维护一般分为 4 大类,分别是纠错性维护适应性维护完善性维护和预防性维护

    30. 需求建模的基本方法包括抽象、分解与多视点分析 3 种。

    31. 用例之间的关系主要有三种:包含(include)、扩展(extend)和继承。

    32. 用于表示分析模型的 UML 图形机制主要是类图、活动图、交互图与状态图。

    33. 软件设计基本原则包括抽象与逐步求精、强内聚及松耦合、信息隐藏及关注点分离。

    34. 内聚性有 6 种类型 偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚。

    35. 一般而言,在面向对象建模过程中,人们最常用的是建立系统的用例图、类图和顺序图。

    36. 常用的软件开发方法有结构化方法、面向对象方法和形式化开发方法

    37. 内聚性 是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。

    38. 在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、 判定树

    39. 结构化语言是介于自然语言和形式语言之间的一种半形式语言

    40. 软件概要设计的主要任务就是软件体系结构的设计

    判断题

    1. 向滞后的项目中增加人手会使得项目更加滞后。(T)

    2. 过程描述语言可以用于描述软件的系统结构。(F)

    3. 按照瀑布模型开发软件的一条指导思想是清楚地区分逻辑设计与物理设计,以便尽早开始程序的物理实现。( F )

    4. 只有质量差的软件产品才需要维护。( F )

    5. 层次图用来描述软件的层次结构。层次图中的一个矩形框代表一个模块,方框间的连线表示模块的组成关系。在层次图中除最顶层的方框之外,给每个方框都加编号,即成为带有编号的层次图。( F )

    6. 建立动态模型的第一步,是编写典型交互行为的脚本。( T )

    7. 软件错误可能出现在开发过程的早期,越早修改越好。(T)

    8. 软件模块的耦合是越低越好。( T )

    9. 一个好的测试用例在于能发现至今未发现的错误。(  T  )

    10. 面向对象设计的结果只能采用面向对象语言来实现( F )

    11. 一个成功的项目唯一提交的就是运行程序。( F  )

    12. 用例之间的关系有3种。(  T  )

    13. 面向对象设计准则也要遵循弱耦合的原则,但是继承耦合则应该提高,紧密地继承耦合与高度的一般-特殊内聚是一致的。 ( T )

    14. 软件工作的考虑范围主要是程序设计和实现。( F   )

    15. 环形复杂度定量度量程序的逻辑复杂度,可以用这个公式来计算环形复杂度:流图G的环形复杂度V(G) = N– E + 2。(改成E-N+2)( F )

    16. 等价类划分方法将所有可能的输入数据划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。( T )

    17. 在进行总体(改成概要)设计时应加强模块间的联系。(    F   )

    18. 系统结构图是精确表达程序结构的图形表示法。因此,有时也可以将系统结构图当作系统流程图使用。( T )

    19. 建立动态模型的第一步,是编写典型交互行为的脚本。(   T    )

    20. 在程序调试时,找出错误的位置和性质比改正该错误更难。(   F   )

    21. 如果通过软件测试没有发现错误,则说明软件是正确的。(  F    )

    22. 快速原型模型可以有效地适应用户需求的动态变化。(  T   )

    23. 模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。( T )

    24. 集成测试主要由用户来完成。(    F   )

    25. 面向对象 = 对象 + 类 + 继承 + 消息传递。(    T   )

    26. 面向对象的分析是面向计算机系统建立软件系统的对象模型。(  F  )

    27. 软件的开发与运行经常受到硬件的限制和制约。( T )

    28. 模块内的高内聚往往意味着模块间的松耦合。( T )

    29. Jackson图只能表达程序结构,不能表达数据结构。( F )

    30. 软件测试的目的是为了无一遗漏的找出所有的错误。( F )

    31. 软件的质量好坏主要由验收人员负责,其他开发人员不必关心。( F )

    32. 判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。( T )

    33. 应该尽量使用机器语言编写代码,提高程序运行效率,而减少高级语言的使用。( F )

    34. UML只能应用于软件系统模型的建立。( F )

    35. 容错就是每个程序采用两种不同的算法编写。( F )

    简答题

    1. 简述软件设计的过程。

    软件设计是把许多事物和问题抽象起来,并且抽象它们不同层次和角度,是将需求转变为软件陈述的过程,是迭代的过程。

    软件设计,要根据需求规格说明书,对整个设计过程进行计划,然后实施具体的设计过程,即“先整体,再局部”,也是不断迭代和精化的过程。

    然后需要对生成的设计规格说明书进行评审,启动 质量评价的标准,若未通过评审,需重新修改设计,直至评审通过,确定最后定型的过程本身。进入后续阶段,完成软件设计过程。

    1. 简述结构化程序设计方法的基本特点。

    1)尽可能少用goto语句的程序设计方法。

    2)每个代码块都单入单出。

    3)使用控制结构:顺序、选择和循环。

    4) 自顶向下逐步求精。

    1. 衡量模块独立性的两个定性标准是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独立性我们追求的目标是什么?

    衡量模块独立性的两个定性标准是内聚和耦合(2分)。

    耦合是指对一个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元素彼此结合的紧密程度(2分)。

    在我们的软件设计中,关于模块独立性我们追求的目标是紧密内聚松散耦合(1分)。

    1. 什么是黑盒测试法?

    黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程(2分)。

    它只检查程序功能是否能按照规格说明书的规定正常使用(1分),

    程序是否能适当地接收输入数据(1分),

    产生正确地输出信息(1分)。

    1. 如何选择程序设计语言的工程特性

    1.系统用户的要求

    2.可以使用的编译程序

    3.可以得到的软件工具

    4.工程规模

    5.程序员的知识

    6.软件可移植性的要求

    7.软件的应用领域

    1. 简述面向对象的4个要点的含义。

    面向对象的4个要点是:对象分解、数据专有、继承、封装性。(1分)

    1)对象分解:认为客观世界是由各种对象组成的。  (1分)

    2)数据专有,方法共享:把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。 (1分)

    3)继承:按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。(1分)

    4)封装性:对象彼此之间仅能通过传递消息互相联系。(1分)

    1. 软件维护的过程

    在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。 软件维护的过程:

    (1) 确认维护要求。(1分)

    (2) 对于改正性维护申请,评价错误的严重性。对于严重的错误,立即安排人员,分析问题原因,进行"救火"性的紧急维护;对于不严重的错误,根据任务情况和轻重缓急进行统一安排。(2分)

    (3) 对于适应性和完善性维护申请,需要确定申请的优先级,然后安排维护工作。并不是所有的完善性维护申请都必须承担,需要考虑商业需要、现有资源、未来发展方向等进行决定。(2分)

    1. 软件维护的目的和主要任务是什么?维护的类型有哪些?

    软件维护是软件生命周期中最后一个、持续时间最长的阶段。

    主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件。

    目的是提高软件的可靠性、可用性,延长软件的寿命。

    维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)

    1. 什么是耦合?模块的耦合包括哪些类型?

    耦合是对一个软件结构内不同模块之间互连程度的度量。

    模块的耦合包括以下几种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容   耦合,标记耦合,无耦合/非直接耦合

    1. 什么是内聚?模块的内聚包括哪些类型?

    内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展

    模块的内聚包括以下几种类型:低内聚 — 偶然内聚,逻辑内聚,时间内聚  中内聚 — 过程内聚,通信内聚; 高内聚 — 顺序内聚,功能内聚

    1. 什么是编码风格?为什么要强调编码风格?

    编码风格包括以下内容:程序内部良好的文档(注释)、数据说明、语句构造、输入输出和效率保障等。

    因为编码风格对软件的可读性、可维护性、可靠性、可用性很重要,所以要强调编码风格。

    1. 什么是软件危机?软件危机的表现是什么?其产生的原因是什么?

    软件发展的第二阶段末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。一些复杂的,大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。在软件开发中遇到的问题找不到解决方法,使问题积累起来,形成了尖锐的矛盾,因此导致了软件危机。

    软件危机表现在以下四个方面:(钱与时间,要求,维护性,可靠性)

    • (1)经费预算经常突破,完成时间一再拖延。
    • (2)开发的软件不能满足用户要求
    • (3)开发的软件维护性差
    • (4)开发的软件可靠性差

    造成软件危机的原因:(规模和结构,管理,经费,技术,工具)

    • (1)软件的规模越来越大,结构越来越复杂
    • (2)软件开发管理困难而复杂
    • (3)软件开发的经费不断增加
    • (4)软件开发技术落后
    • (5)生产方式落后开发工具落后,生产率提高缓慢
    1. 软件生存周期包括哪些活动?

    答:软件生存周期的活动包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动。

    1. 请说明 “三个模型” 的定义,以及三者之间的关系。

    功能模型是描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。
    业务模型是描述系统在何时、何地、由何角色、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。
    数据模型是描述系统工作前的数据来自何处,工作中的数据存什么地方,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。
    功能模型和业务模型是在需求分析时建模,是两个基本点。数据模型是一个中心,在设计时建模。功能模型和业务模型给数据模型提供数据与维护数据,数据模型支持功能模型和业务模型的正常运行。通常,数据模型建模用 Power Designer,ER win 或 Oracle Designer 工具实现;功能模型用功能点列表(或用况图)表示;业务模型用自然语言加上流程图(或顺序图)表示。

    1. “面向对象实现” 的目标是什么?

    答:“面向对象实现” 的目标是:按照《详细设计说明书》中对数据结构、算法分析和模块实现等方面的设计说明,用面向对象的语言,将这些部件组装起来,分别实现各模块的功能,从而实现目标系统的功能、性能、接口、界面等要求。

    1. 软件工程的定义
    • (1)将系统的、规范的、可量化的方法应用于软件的开发、运行和维护的过程;
    • (2)及上述方法的研究。

    画图题

    1.已知有一段代码实现了 “输出ABC三个数中的最大值”,要求完成下列问题:

    (1)画出代码的流程图(4分)

    (2)根据该程序流程图画出该程序的流图;(4分)

    (3)计算该流图的环形复杂度;(4分)

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

    ​ (3) 环形复杂度

    ​ V(G) = 区域数 = 边数 - 节点数 + 2 = 判定点 + 1 = 4

    2.某“调整工资”处理模块接受一个“职称”的变量,根据职称的不同(助教,讲师,副教授,教授)作不同的处理,其中若是助教还必须输入工龄,只有工龄超过两年才能调整工资。请用等价类划分法设计测试用例。
    在这里插入图片描述
    在这里插入图片描述

    3.银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址 (或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码 (可选) 等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
    用数据流图描绘本系统的功能,要求绘出数据处理、数据存储、数据流和相关角色。
    在这里插入图片描述

    展开全文
  • 【SDN】软件定义硬件

    千次阅读 2022-01-23 22:55:28
    软件定义网络SDN小知识

    前言

    摘录自SDNLAB文章,原文链接附在文末。

    软件和硬件的定义

    在这里插入图片描述
    处理器平台分类:按照单位计算(指令)的复杂度。处理器平台大致分为CPU、协处理器、GPU、FPGA和ASIC。

    指令是软件和硬件的媒介,指令的复杂度决定了系统的软硬件解耦程度。

    解耦程度:依赖降低程度

    从左往右,单位计算越来越复杂,灵活性越来越低。

    • 软件运行:任务在CPU运行
    • 硬件加速运行:任务在协处理器、GPU、FPGA或ASIC运行

    “软件定义硬件”的定义

    • 软件定义是当下比较热门的话题,比如软件定义网络、软件定义数据中心、软件定义汽车等等。范围比较大,不仅涉及到底层的软硬件技术,也涉及到系统的运行管理等,甚至包括一些商业问题。

    什么是软件定义网络?

    • 软件定义网络(Software Defined Network, SDN )是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制。

    “软件定义硬件”定义为:

    • 系统的主要业务逻辑是在软件中实现;
    • 系统中没有硬件引擎,或者硬件引擎是软件可编程的;硬件引擎按照软件编程的逻辑执行操作。
    • 相关的硬件依赖于软件提供的接口构建。

    CPU,软件和硬件解耦

    在这里插入图片描述
    CPU最灵活,原因是运行于CPU的指令都是最基本粒度的加减乘除外加一些访存及控制类指令,就像积木块一样,我们可以随意组合出我们想要的各种形态的功能。

    CPU最大价值不是可以自动的执行非常复杂的计算机程序,而是提供并规范了标准化的指令集,使得软件和硬件从此解耦:

    1. 硬件工程师不需要关心场景,只关注于通过各种“无所不用其极”的方式,快速的提升CPU的性能。
    2. 软件工程师,则完全不用考虑硬件的细节,只关注于程序本身。然后有了高级编程语言/编译器、操作系统以及各种系统框架/库的支持,构建起一个庞大的软件生态超级帝国。

    X86是桌面和服务器领域最流行的处理器架构。ARM在手机等移动端占据绝对的统治地位。开源RISC-v符合未来技术和商业发展的趋势,其在MCU领域已经占据重要地位,并且在向桌面和服务器领域发起冲锋。

    什么是MCU?

    • 微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process
      Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。
    • 简单地说就是将多个I/O接口集成在一片芯片

    软件的庞大生态,是构建在特定的CPU架构之上的。但是,我们一般来说,CPU作为指令足够细粒度,计算足够通用的计算平台,其是软件和硬件解耦的:

    • 一方面,特定架构下,每种CPU架构“基本”保证了向前兼容,这样可以认为,在特定架构,软件硬件完全解耦各自发展。
    • 另一方面,(理想状态下,)OS、编译器等越来越成熟之后,能够保证,同样的高级语言程序,在不同的CPU架构平台,其运行行为是一致吧。这样就可以脱离具体的CPU架构凭条,构建完全无差别的软件生态。

    从长期发展的角度,RISC-v应该会是未来更好的选择:

    • 开放性。RISC-v最大的特点是其指令集开源,这样任何厂家就可以根据自己情况设计自己的RISC-v CPU,然后大家共建一套开放的生态,共生共荣。
    • 标准化。标准化是最关键的价值。所有的架构(x86/ARM/RISC-v)都可以认为是标准的,但因为RISC-v的开放性,其标准化未来的价值就会非常大。上面说过,“理想”情况下,我们可以把程序无缝的从一个平台迁移到其他平台,但实际上,许多商业的软件,我们并不能拿到源码。而且,许多时候,一些细节问题,都可能导致平台迁移失败。这种迁移对用户来说是非常大的挑战和风险。当标准的RISC-v足够流行之后,基于RISC-v构建的整个生态会迸发强大的生命力。
    • 其他。如RISC-v没有历史包袱,指令集更高效;更灵活的扩展能力(确保不碎片化)。

    CPU的软硬件定义

    CPU和软件程序的交互接口是指令集,是最细粒度的加减乘除等指令,像积木块一样,随意组合出任意想要的各种程序。

    CPU到底是软件定义还是硬件定义,从不同的角度有不同的看法:

    • 软件和硬件并行发展。CPU,通过ISA,“完美”实现了软件和硬件的标准化解耦。因此,可以认为,在这个时候,不存在硬件定义软件或软件定义硬件,软件和硬件各自并行不悖的快速发展。
    • 硬件定义软件。基于CPU构建的庞大软件生态,这可以算作是“硬件定义软件”:先有CPU硬件,再有编译器,再有OS、应用等。
    • 软件定义系统。 但是,站在软件的角度,所有的系统实现均可以通过编程实现,根本不需要考虑运行的CPU平台的“差一些”,因此又可以看做基于CPU运行的系统是“软件定义”的。

    软件定义硬件

    系统又开始从硬件逐步到软件

    在这里插入图片描述
    系统从起始发展,到逐步稳定,系统的运行平台逐步从CPU演进到ASIC。那么,ASIC是不是所有系统最终的运行平台?
    答案是否定的。原因主要如下:

    • 软件更新换代很快。新的热点技术层出不穷,已有的技术领域的更新迭代速度仍在快速增加。硬件的迭代周期过长,无法跟上软件迭代的节奏。
    • 定制的ASIC设计,把所有功能都在硬件实现。在复杂的云计算、自动驾驶等场景,芯片公司对用户的场景理解可能不够深入,会导致设计偏差。另一方面,也会限制用户自身的主观能动性,让用户有想法也很难在ASIC平台去实现自己想要的功能。
    • ASIC因为功能固定,为了适配更多场景,确保芯片的大量出货,势必需要实现功能超集。例如,某ASIC芯片支持10个功能,但实际用户场景,都是只需要2-3种功能。这样,ASIC实现实际上也是低效的。并且,这些功能因为紧耦合的缘故,系统复杂度反而更高。
      这样,在许多场景,我们根据实际的场景需求,除ASIC,也开始选择DSA、FPGA、GPU甚至CPU等处理引擎。

    软件定义网络SDN

    最典型的一个案例就是SDN(Software Defined Network)的发展。经过几十年的发展,网络芯片已经演进到了完全ASIC的实现,这意味着基于ASIC芯片的网络设备其功能是确定的,用户只能根据厂家实现的确定功能来使用网络设备。
    然而,随着云计算、4G/5G移动通信等的发展,新的网络协议和网络功能层出不穷,纯ASIC实现的网络系统遇到了挑战。
    在这里插入图片描述
    如上图所示,IETF(Internet Engineering Task Force,互联网工程任务组)的RFC(Request for Comments,请求意见稿,即网络协议)数量一直在爆炸式的增长,应用于各种新型网络场景的新协议层出不穷。但是,传统的网络处理芯片都是封闭的、特定的设计,用于特定协议处理。想要增加新的协议非常困难,并且对新协议的支持受到不同供应商的约束。定制的网络处理芯片,对新协议的支持不足以及缺乏有效的灵活性,这使得要想在网络系统增加新的功能非常困难,限制了客户的网络创新能力。
    客户希望能够快速便捷的对网络进行配置和管理;客户希望能够快速的进行网络协议创新。这样,ASIC的功能固定越来越成为网络创新的约束。于是,SDN开始了两个方面的创新:

    • 第一步,网络控制面和数据面分离,控制面可编程。把网络控制面从数据面分离处理,形成了控制面可编程的Openflow协议。
    • 第二步,进一步的,网络数据面也可以编程,用户可以定义自己的协议。形成了数据面可编程的P4语言和P4交换机相继出现。

    1)运行于CPU的软件虚拟交换机

    在这里插入图片描述
    OVS(Open Virtual Switch)是Apache 2许可下的开源的软件交换机。OVS的目标是实现一个生产环境的交换机平台,支持标准管理界面,并为程序扩展和控制开放转发功能。OVS非常适合在VM环境中用作虚拟交换机,除了向虚拟网络层公开标准控制和可见性接口之外,它还旨在支持跨多个物理服务器的分发。OVS支持多种基于Linux的虚拟化平台,包括Xen、KVM等。
    最新的OVS版本支持以下功能:

    • 具有主干和接入端口的标准的802.1Q VLAN模型;
    • NIC绑定在上行交换机上,可以支持LACP也可以不支持;
    • 通过NetFlow,sFlow®和镜像来增强可视性;
    • QoS(服务质量)配置以及策略;
    • Geneve, GRE, VxLAN, STT和LISP隧道;
    • 802.1ag连接故障管理;
    • OpenFlow 1.0以及众多扩展;
    • 支持C和Python的事务配置数据库;
    • 基于Linux内核的高性能转发模块。
      如图,OVS答题可以分为三层:
    • 管理层,即:ovs-dpctl、ovs-vsctl、ovs-ofctl、ovsdb-tool。
    • 业务逻辑层,即:vswitchd、ovsdb。
    • 数据处理层,即:datapath。

    2)数据面可编程的网络交换机DSA

    在这里插入图片描述

    上图为PISA(Protocol Independent Switch Architecture,协议无关的交换架构)架构交换机的流水线,PISA是一种支持P4数据面可编程包处理的流水线引擎架构,通过可编程的解析器、多阶段的可编程的匹配动作以及可编程的逆解析器组成的流水线,来实现数据面的编程。这样可以通过编写P4程序,下载到处理器流水线,可以非常方便的支持新协议的处理。
    在这里插入图片描述
    当实现了完全可编程的流水线之后,在P4工具链的支持下,就可以通过P4编程的方式来实现自定义的流水线,来达到对自定义协议的支持。
    如图所示,P4定义的Parser程序会被映射到可编程的解析器,数据、包头定义、表以及控制流会被映射到多个匹配动作阶段。图 6.25中把L2处理、IPv4处理、IPv6处理以及访问控制处理分别映射到不同的匹配动作处理单元进行串行或并行的处理,来实现完整的支持各种协议的网络包处理。

    软件定义接口:Virtio

    Virtio旨在提供一套高效的、良好维护的通用的Linux驱动,实现虚拟机应用和不同Hypervisor实现的模拟设备之间标准化的接口。Virtio作为类虚拟化的I/O设备接口,广泛应用于云计算虚拟化场景,某种程度上,Virtio已经成为事实上的I/O设备的接口标准。
    在这里插入图片描述
    因为软件定义了标准化的Virtio接口,因此,如上图所示,在SmartNIC和DPU中,offload虚拟化和Workload的最关键部分就是要把Virtio硬件化。
    如上图所示,站在虚拟化角度,把Virtio卸载,可以看做是从软件到硬件。但是,如果从硬件接口的角度,从一个完全硬件定义的接口(例如NV自定义的SR-IOV接口)过渡到软件定义的接口(Virtio接口),则可以算是从硬件到软件。
    可跨平台的软件定义:Intel oneAPI

    在这里插入图片描述
    英特尔oneAPI是一个开放、可访问且基于标准的编程系统,支持开发人员跨多种硬件架构参与和创新,包括 CPU、GPU、FPGA、AI 加速器等。这些处理引擎具有非常不同的属性,因此用于各种不同的处理——oneAPI试图通过将它们统一在同一个模型下来简化这些操作。
    即使在今天,开发人员面临的一个持续问题是我们日益数字化的世界提供的编程环境的数量。不同的编程环境使代码重用等节省时间的策略失效,并成为软件开发人员的真正障碍。作为其软件优先战略的一部分,英特尔在 2019 年的超级计算活动中推出了oneAPI。该模型标志着英特尔的雄心是拥有统一的编程框架作为限制专有编程平台的解决方案。oneAPI 使开发人员能够在不厌倦使用不同语言、工具、库和不同硬件的情况下工作。
    Intel oneAPI可以实现:设计一套应用,根据需要,非常方便的把程序映射到CPU、GPU、FPGA或者AI-DSA/其他DSA等不同的处理器平台。
    扩展:软件定义“一切”
    软件定义是一个非常宏大并且非常热点的话题,除了软件定义网络之外,还有很多软件定义的热点领域:

    • 软件定义存储,是一种能将存储软件与硬件分隔开的存储架构。不同于传统的网络附加存储(NAS)或存储区域网络(SAN)系统,SDS一般都在行业标准系统上执行,从而消除了软件对于专有硬件的依赖性。
    • 软件定义数据中心,把数据中心基础设施通过抽象化、资源池化以及自动化来实现基础设施即服务(IAAS)。软件定义的基础设施可让IT管理员使用软件定义的模板和API轻松配置和管理物理基础设施,以定义基础设施配置和生命周期运维,并实现自动化。
    • 软件定义无线电,是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现。频带、空中接口协议和功能可通过软件下载和更新来升级,而不用完全更换硬件。
    • 软件定义汽车,通过软件实现新的车载体验和功能,并通过无线 (OTA) 提供更新和服务。从而使得汽车从高度机电一体化的机械终端,逐步转变为一个智能化、可拓展、可持续迭代升级的移动电子终端。
      软件定义存储和软件定义无线电还主要是技术的范畴,而软件定义数据中心和软件定义汽车,则是把软件定义的思路和理念更加深化和拓展,应用于更广阔的领域。

    软件定义也存在一些挑战

    1)基于CPU的摩尔定律失效

    在这里插入图片描述
    软件定义XX,最本质的做法还是把整个系统重新从硬件实现变成偏软件的实现。随着这势必对CPU的性能提出了更高的要求。
    然而,如上图所示,随着CPU的性能提升逐渐停滞,已经无法满足数字经济时代对算力持续提升的要求。
    因此,还是要再轮回,“硬件”加速。

    2)DSA只解决了部分问题

    在这里插入图片描述
    支持P4的网络数据面可编程引擎,属于DSA的范畴,专门用于网络包处理的加速,性能跟ASIC相当,但其具有非常好的软件可编程能力。
    标准的P4程序,有P4前端编译器把P4程序编译成一个中间态的程序(类似Java编译器)。然后特定硬件实现的后端编译器负责把中间态的程序映射到具体的硬件实现(有点像Java虚拟机,但P4是静态)。
    P4 DSA引擎预先配置好P4程序之后,P4-DSA就成了执行特定协议处理的网络包处理引擎。然后需要和已有的网络程序进行适配,实现网络任务的数据面offload。
    P4的整个系统栈跟之前CPU、GPU、ASIC最大的不同在于先定义了标准的P4,然后各厂家根据标准的P4去实现各自不同的P4处理引擎。

    在这里插入图片描述
    原文链接:https://www.sdnlab.com/25417.html

    展开全文
  • 软件工程导论—需求分析

    万次阅读 多人点赞 2020-05-05 12:09:46
    软件需求的概念1.2. 需求分析的准则1.3. 需求分析的任务和步骤2. 需求获取的常用方法和步骤3. 分析建模3.1. 结构化分析模型3.1.1. 结构化分析模型概述3.1.2.实体联系图 E-R图3.1.3.数据流图 DFD3.2. 面向对象分析...
  • 慕课软件工程(第六章.接口设计)

    千次阅读 2020-03-09 11:15:16
    软件工程.第六章.结构化分析方法2.接口设计0 目录6 结构化分析方法26.1 接口设计6.1.1课堂重点6.1.2测试与作业7 下一章 0 目录 6 结构化分析方法2 6.1 接口设计 6.1.1课堂重点 6.1.2测试与作业 1单选(2分)接口...
  • 软件工程导论—软件与软件工程

    千次阅读 多人点赞 2020-05-02 12:47:35
    文章目录1. 软件与软件危机1.1.... 软件工程学2.1. 软件工程学的概念2.2. 软件工程项目的基本目标2.3. 软件工程的八项原则2.4. 软件工程的本质特征2.5. 软件工程的七条基本原理3. 软件工程方法学3.1. 软件工程方法...
  • 计算机组成与设计(原书第5版) 硬件软件接口 RISC-V这本书是引进过来的,本系列图书广受盛誉,有两位“图灵奖”得主撰写,书的权威性及细致性不言而喻,两位作者的履历也是让我们望而项背:...
  • 软件工程导论—软件测试

    万次阅读 多人点赞 2020-05-13 21:26:49
    1. 软件测试基础 2. 单元测试 3. 集成测试 4. 确认测试 5. 白盒测试技术 6. 黑盒测试技术 7. 调试 8. 软件可靠性
  • 什么是硬件工程师

    千次阅读 2021-09-04 14:34:30
    路飞的电子设计宝藏 4月22日 1.什么是硬件? 百度百科介绍"硬件(英文名Hardware)是计算机硬件的简称(中国大陆及香港用语,台湾作硬体),是指计算机...当然狭义来说,一般我们所说的软件硬件指的是电子领域的
  • 1.下面哪项不属于软件工程方法学的要素(B) A、方法 B、模型 C、工具 D、过程 (知识点)软件工程三要素:方法、工具、过程 2.面向对象方法学具有(D)个要点。 A、1 B、2 C、3 D、4 (知识点)面向对象要点:对象...
  • 软件工程导论复习知识点

    千次阅读 多人点赞 2021-06-27 16:44:02
    这是我在准备软件工程基础考试时根据考点整理的一份知识点汇总。
  • 软件工程期末试题及答案(史上最全)

    万次阅读 多人点赞 2021-07-15 15:39:15
    软件工程期末试题及答案 1.开发瀑布模型中的软件定义时期各个阶段依次是:( B) A) 可行性研究,问题定义,需求分析。 B) 问题定义,可行性研究,需求分析。 C) 可行性研究,需求分析,问题定义。 D) 以上顺序都...
  • 软件工程大题题库

    千次阅读 2021-01-05 11:29:36
    文章目录第一章 软件工程概述1 软件的特点2 计算机软件与硬件相比有什么特点3 为什么说软件工程的发展在一定程度上解决了软件危机的各种弊端?4 简述软件工程的基本原则5. 软件工程的研究内容6. 软件工程的三要素7. ...
  • 软件工程】简答题汇总

    万次阅读 2021-12-14 17:19:51
    软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
  • 软作详细设计是软件工程的重要阶段,在详细设计过程中,细化了高层的体系结构设计,将软件结构中的主要部件划分为能独立编码、编译和测试的软件单元,并进行软件单元的设计,同时确定了软件单元和单元之间的外部接口。...
  • 软件工程导论》期末复习知识点总结(全)

    千次阅读 多人点赞 2020-10-26 15:27:06
    目录写在最前软件需求综述软件项目成功的三个主要因素软件人成功的三个主要因素软件工程和需求工程区别与联系软件需求的内容和层次业务需求用户需求功能性与非功能性需求软件需求获取需求工程的内容需求开发需求管理...
  • 最近,有家长通过留言问了这样一个问题,他的孩子对电子信息工程和软件工程专业非常感兴趣,但不知道它们之间有什么区别。能够在高考之前,想到这样的问题,其实是挺好的。因为在我们的高考中,有不少考生和家长到了...
  • 软件工程毕业论文答辩PPT模板

    千次阅读 2020-12-22 01:35:06
    PPT内容这是一个软件工程毕业论文答辩PPT模板,主要介绍了系统简介、需求分析、系统设计、具体实现等内容。基于Java RMI技术的远程系统 的设计与实现---主控模块目录基于Java RMI技术的远程系统 的设计与实现研究...
  • 高级软件工程习题

    万次阅读 2020-12-10 14:23:50
    (8) 软件工程过程 软件工程过程关注软件过程的定义、实现、评估、测量、管理、变更、改进,以及过程和产品的度量。 (9) 软件工程工具和方法 软件工具分为:需求工具、设计工具、构造工具、测试工具、维护工具、...
  • 软件工程——理论与实践(第二版)课后习题整理

    千次阅读 多人点赞 2021-11-23 17:30:08
    A.20 世纪50年代提出了软件工程的概念 B.20世纪60年代提出了软件工程的概念 C.20 世纪70年代出现了客户机/服务器技术 D.20 世纪80年代软件工程学科达到成熟 (2)软件危机的主要原因是( D)。 A.软件工具落后 B.软件...
  • 软件工程

    万次阅读 多人点赞 2021-01-24 17:13:02
    软件工程——原理、方法与应用(学习笔记)
  • 软件工程:需求分析

    千次阅读 2020-10-20 21:28:52
    需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面的形式准确地描述软件需求。 基本准则: 必须理解并描述问题的信息域,根据这条准则应该建立数据模型。 必须定义软件应完成的功能,.
  • 软件工程试题大全

    万次阅读 多人点赞 2019-07-02 15:19:11
    软件工程基础 一. 选择题 1。软件需求分析阶段的工作,可以分为4个方面:需求获取,需求分析,编写需求规格说明书以及(B) A).用户 B).需求审评 C).总结 D).都不正确 2。在原型法中称(A)为用户/设计者,开发人员根据用户...
  • 软件工程-UML画图

    千次阅读 2021-12-19 11:27:10
    4. 其他软件工程图 4.1 流程图 4.2数据流图 4.3数据字典 4.4 实体关系图 ​4.5 层次方框图 4.6 其他 1. UML简介 UML(Unified Modeling Language,统一建模语言)是一种基于面向对象的可视...
  • 嵌入式工程师在企业工作的真实内容嵌入式软件开发具体可以分三类:嵌入式驱动工程师:编写和移植各种芯片驱动(如音频芯片),优化硬件设备驱动(如温湿度传感器),得精通各种硬件接口协议(如I2C协议)、系统调度、信号...
  • 软件工程复习知识点

    千次阅读 多人点赞 2020-07-19 21:52:44
    软件工程第一章 软件工程概述1、四种图2、计算机系统计算机系统组成:计算机分为四个发展阶段:3、软件危机:产生原因:4、软件工程软件工程的基本原理 :软件工程包括两方面的内容:软件工程方法学3要素:5、软件...
  • 软件工程的起源与发展

    千次阅读 2019-10-19 22:15:56
    软件工程专业的起源与发展 作为一个软件工程的学生,我们必须了解也应当了解软件工程这一专业的起源和发展 起源 软件工程这一专业起源于软件危机年代,经过这么多年的发展,软件工程也形成了自己一套独有的知识体系...
  • 软件工程(需求分析)

    千次阅读 2021-03-30 14:30:29
    软件需求的深人理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望.给开发者带来烦恼。 需求分析是软件定义时期的最后个阶段 ,它的基本任务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 137,104
精华内容 54,841
关键字:

软件工程硬件接口