模型驱动软件开发

MDE

模型驱动工程(MDE, Model-Driven Engineering)是软件工程的一个分支,它将模型与建模拓展到软件开发的所有方面,形成一个多维建模空间,从而将工程活动建立在这些模型的映射和转换之上。[1] MDE的基本原则是将模型视为第一实体,将所有软件产物当做模型或模型要素。模型驱动工程(Model Driven Engineering, MDE)是一种软件开发范式,其核心思想是通过高层次的抽象模型来描述系统的行为和结构,然后利用模型转换和代码生成技术自动生成部分或全部实现代码。MDE旨在提高软件开发的效率、质量、一致性和可维护性。
模型驱动工程(MDE) 涵盖了整个软件研发系统生命周期的各个方面,包括需求分析、设计、实现、验证直至维护阶段。MDE不仅关注软件开发,还倡导使用模型来描述和控制系统的所有方面,并支持跨不同层次和领域的建模活动,以及模型之间的转换和一致性维护。在MDE的背景下,模型不仅是设计工具,而且还是贯穿整个工程流程的核心要素。

当前MDE的发展现状如下:

1.	工具集和框架的成熟:
•	目前已有众多成熟的建模工具和框架支持MDE,例如Eclipse Modeling Framework (EMF),它提供了构建模型、编辑器以及执行模型转换的强大基础;还有JetBrains MPS、Xtext等,允许开发者创建自己的领域特定语言(DSL)并基于这些DSL进行开发。
2.	行业应用广泛:
•	MDE已在航空航天、汽车制造、电信、嵌入式系统、企业应用等多个领域得到应用。在这些领域中,由于系统复杂性较高且规范严格,MDE能有效地提高设计的准确性和代码生成的效率。
3.	与敏捷开发和DevOps的融合:
•	随着敏捷开发和DevOps的流行,MDE也在努力适应这些新的开发范式,例如通过模型来支持持续集成和持续部署(CI/CD)流程,以及在模型级别进行迭代和增量开发。
4.	研究方向的深化:
•	学术界和工业界都在不断深化对MDE的研究,探讨如何解决模型复杂性问题,如何提升模型的可重用性和互操作性,以及如何更好地将MDE融入现有的软件工程实践。
5.	挑战与限制:
•	尽管MDE具有很多优点,但在实际应用中仍面临一些挑战,如模型完整性与一致性检验、模型到代码映射的有效性和精准性、团队成员对模型驱动方法的接受度和熟练度等。

总结来说,模型驱动工程在近几年已经取得了显著进展,并在特定领域得到深入应用。然而,作为一种相对较新的软件开发方法,MDE仍在不断演进和发展中,未来有望在更多场景下发挥更大的作用。同时,也需要进一步克服在推广普及过程中遇到的种种挑战。

MDD

模型驱动设计(Model Driven Design, MDD)和模型驱动开发(Model Driven Development, MDD)作为一套方法论,在过去几十年中得到了广泛的关注和发展。MDD的核心思想是通过抽象层次更高的模型来捕获系统的需求和行为,然后利用模型变换工具链自动生成程序代码或其他设计工件,以减少重复工作,提高软件质量和开发效率。MDD是MDE实践中的一个重要组成部分,专注于通过模型来驱动软件开发的具体实践,而MDE则提供了一个更加全面和整体的方法论框架,旨在利用模型在整个工程实践中发挥更大的作用。

MDD是MDE实践中的一个重要组成部分,专注于通过模型来驱动软件开发的具体实践,而MDE则提供了一个更加全面和整体的方法论框架,旨在利用模型在整个工程实践中发挥更大的作用。

MDA

模型驱动的体系结构(Model Driven Architecture,MDA)是由对象管理组织(Object Management Group ,OMG)提出并且大力倡导的软件开发方法。其核心思想是在软件开发过程中强调使用一系列抽象层次的模型,并利用模型之间的转换来实现从需求到设计、直至代码生成的全过程。MDA 强调通过平台独立模型(Platform Independent Model, PIM)和平台特定模型(Platform Specific Model, PSM)来确保软件架构和设计的可移植性和重用性。基于元模型的应用系统集成方法提高了用户构造大规模应用系统的能力。元模型驱动的开发模式减少了业务模型发生更改时,对组件内部逻辑和部接口进行的修改工作量,并方便实现应用开发从一种平台到另外一种平台的切换。

OMG MDA technologies

  • MOF 2.0
  • XMI 2.0
  • UML 2.0
  • OCL 2.0
  • QVT

MDA defines a framework that separates the specification of the system functionality from its implementation on a specific platform. It distinguishes different kinds of models:

  • 计算独立模型• Computation Independent Model (CIM), a model that describes a system from the computation independent viewpoint.
  • 平台独立模型• Platform Independent Model (PIM), a model with a high level of abstraction that is independent of any implementation technology.
  • 平台相关模型• Platform Specific Model (PSM), a tailored model to specify the system in terms of the implementation constructs available in one specific platform.
  • 特定实现模型• Implementation Specific Model (ISM), a description (specification) of the system in source code.

The Unified Modeling Language (UML) (UML, 2009a) (UML, 2009b) combined with the Object Constraint Language (OCL) (OCL, 2006) is the most widely used way for writing either PIMs or PSMs.

在这里插入图片描述

相比MDA,模型驱动工程(MDE)则是一个更为广泛的概念,它包含了MDA的思想,但不仅限于MDA所关注的架构层面,而是将模型驱动的方法扩展到了整个软件开发生命周期的所有阶段,包括需求分析、设计、编码、测试、部署维护等各个环节。MDE倡导以模型为核心,构建和操作软件系统的不同抽象视图,使用模型转换和综合工具来自动化或半自动化地生成系统各部分,包括但不限于源代码、配置文件、数据库模式以及其他工件。

总的来说,MDA可以看作是MDE在特定领域的应用和实践之一,MDE提供了一种更加全面和灵活的基于模型的开发范式,涵盖了多种技术和标准,而MDA则是其中一种具有标准化特性的方法论。

长期以来,没有那个组织真正实现了MDA的工具或方案:Rational软件已经被IBM成功搞残;AndroMDA的最后一次发布还是在2010年;Eclipse GMT从2005年开始孵化,但到了2007年似乎已经死亡。

在这里插入图片描述

EMF

Eclipse Modeling Framework (EMF) 是一个强大的开源建模框架,广泛应用于软件开发中需要模型驱动工程(Model Driven Engineering, MDE)的场景。EMF使得开发者能够定义域特定的模型,并基于这些模型生成代码、编辑器以及其他基础设施。Eclipse Modeling Framework(EMF)在Eclipse基金会的支持下持续发展。EMF作为Eclipse平台上的一个核心组件,为模型驱动工程(Model Driven Engineering, MDE)提供了强大的支持,特别是在Java环境中用于构建和处理模型。EMF不仅适用于创建和编辑模型,还能基于模型生成代码和其它形式的工件,简化大型系统的开发和维护工作。以下是几个著名的EMF应用案例:

1.	Eclipse IDE内部组件:EMF本身就是Eclipse平台的一部分,许多Eclipse的子项目和插件,比如Papyrus UML建模工具、Xtext DSL工具等,就使用了EMF作为其基础建模框架。
2.	大规模企业级应用:EMF常被用于构建复杂的业务逻辑模型,并基于这些模型生成大量的Java代码,减少手动编写重复性代码的工作量,提高开发效率和一致性。
3.	配置和管理系统:在电信、汽车、航空等行业,EMF常被用来构建配置管理系统,比如网络设备配置、嵌入式系统的配置文件等。
4.	数据交换标准:EMF可以用于实现行业标准的数据交换格式,例如SysML(System Modeling Language)的一种实现就基于EMF。
5.	基础设施设计:在建筑信息模型(Building Information Modeling, BIM)领域,EMF及其衍生工具和技术可用于创建和处理IFC(Industry Foundation Classes)模型。

EMF由于其强大的建模能力和代码生成特性,能够帮助开发者按照这些标准来定义和操作模型,并方便地序列化和反序列化数据,从而支持数据在遵循同样标准的不同系统间无障碍地交换。举例来说,假设有一个行业制定了某种特定的数据交换格式标准,如XML Schema或类似的规范,通过使用EMF,开发团队可以基于这个标准构建相应的模型,然后自动生成解析和生成这种格式所需的所有代码。这样一来,不仅简化了开发过程,同时也保证了与标准的一致性和互操作性。

Eclipse Modeling Framework (EMF) 主要被用于定义、存储、交换和操作结构化数据模型的场景,尤其适用于软件开发过程中的模型驱动工程(Model-Driven Engineering, MDE)。以下是一些EMF常被用作数据交换标准的具体场景:

1.	模型定义和互操作性:
•	定义和规范化特定领域的模型结构,如UML模型、SysML模型、XML Schema定义等。
•	在不同工具和系统之间交换和共享一致的数据模型,确保模型的语义和结构保持不变。
2.	代码生成和模型驱动开发:
•	EMF可以依据定义好的模型自动生成Java源代码,用于实现模型的持久化、操作和展示。
•	在MDA(Model Driven Architecture)中,开发者可以通过EMF模型来生成不同层次的软件构件,如接口、类、数据库脚本等,实现从高层次抽象模型到具体实现的转换。
3.	数据交换格式:
•	EMF可以生成XML Schema并支持将模型数据导出为XML格式(ECORE XMI),这成为了一种跨平台、跨语言的数据交换标准。
•	通过这种方式,不同工具和应用程序可以使用通用的XML格式进行数据交换,大大提高了数据互操作性。
4.	集成开发环境支持:
•	在Eclipse IDE中,EMF提供了丰富的图形编辑器和模型浏览器的支持,方便开发人员在统一的环境中设计和修改模型。
•	对于大型软件项目,尤其是分布式团队合作开发时,EMF可以确保模型数据在团队间传递的一致性和有效性。

EMF框架及其生态系统提供了大量的工具和插件,这些工具极大地增强了对模型生命周期各个阶段的支持,具体包括但不限于以下几个方面:

1.	EMF Generator Tools:
•	EMF提供了代码生成工具,可以根据定义的Ecore模型生成对应的Java模型类、编辑器界面、序列化/反序列化代码以及其他基础设施代码,这样开发者可以直接基于生成的代码进行业务逻辑开发,而无需手写底层数据处理和持久化机制。
2.	Graphical Editors and Modelers:
•	GMF (Graphical Modeling Framework) 是基于EMF的一个图形化建模工具集,用于创建具有可视化编辑能力的Eclipse插件,使得用户可以直观地以图形方式创建和编辑模型。
•	Sirius是一款强大的图形建模工具,允许开发者构建高度定制化的图形编辑器,它可以与EMF模型紧密结合,为用户提供更高级别的可视化建模体验。
3.	Model Validation:
•	EMF提供了内置的验证框架,允许开发者为模型添加约束规则,确保模型数据的有效性和完整性。
4.	Transformations:
•	ATL (Atlas Transformation Language) 和 Xtend 等工具支持模型之间的转换,能够自动将一个模型转化为另一个模型,这对于模型驱动架构(MDA)中的PIM到PSM再到代码的转换非常关键。
5.	Persistence Support:
•	EMF 支持多种持久化方式,包括XMI(XML Metadata Interchange)、数据库持久化等,便于模型数据的存储和交换。
6.	Runtime Services:
•	EMF提供了运行时的服务框架,如通知机制(notification)、查询服务(querying)、动态更新等功能,有助于在运行时有效地操作和管理模型实例。
7.	协同开发和版本控制:
•	EMF与Eclipse平台上的其他工具集成良好,比如支持与Git、SVN等版本控制系统结合,以跟踪模型的变更历史和协同开发。

因此,借助这些丰富的工具,EMF不仅简化了模型的设计和实现过程,还大大提升了模型在开发、测试、部署及维护阶段的效率和质量。

SysML

SysML (Systems Modeling Language) 是一种专门针对系统工程领域的建模语言,它是 UML (Unified Modeling Language) 的一个扩展,用来描述复杂的系统需求、行为、结构和参数。

SysML(System Modeling Language)是一种广泛应用于系统工程领域的建模语言,它基于UML(Unified Modeling Language)扩展而来,主要用于描述复杂系统的架构、行为、需求和物理结构等方面。SysML的实现通常涉及到采用特定的建模工具和框架,而基于EMF(Eclipse Modeling Framework)的实现则是其中一种技术途径。基于EMF实现SysML意味着开发者可以利用EMF的强大建模能力和扩展性来构建支持SysML的建模工具,比如通过定义SysML元模型,然后在这个基础上构建可视化编辑器和模型验证器等组件。
在这里插入图片描述
在这里插入图片描述

MBSE

基于模型的系统工程“Model-Based Systems Engineering MBSE”支持以概念设计阶段开始,并持续贯穿于开发和后期的生命周期阶段的系统需求、设计、分析、验证和确认活动的正规化建模应用。”用通俗一点语言解释的话,MBSE就是开发一个产品、平台的时候,把产品、平台研发中涉及到的各个方面用“计算机数据模型”方式建立起来,形成一个统一的“系统模型”。

MBSE是一套理念,有多种实现的方法论,SysML是实现MBSE的建模语言,有多个工具支持。
在这里插入图片描述

Papyrus for SysML:
Papyrus for SysML 是一个开源的 UML/SysML 工具,它是 Eclipse Foundation 下的 Papyrus 项目的一部分,专门为系统工程师设计,用于创建和管理复杂的系统模型。Papyrus 提供了一个完全符合 OMG 规范的 SysML 图形建模环境,支持多种模型视图,如需求模型、结构模型、行为模型等。随着系统工程的日益成熟,Papyrus for SysML 在工业界得到了一定的采纳,特别是在航空航天、国防、汽车等行业中有较为广泛的使用。

Sirius:
Sirius 是另一种基于 Eclipse 平台的开源建模框架,它允许开发者定制自己的图形建模工具,包括但不限于 SysML 支持。Sirius 不是直接提供一个现成的 SysML 建模环境,而是提供了一种工具来创建和扩展这样的环境。这意味着用户可以根据具体的项目需求,使用 Sirius 构建高度定制化的建模工具,这些工具可以支持 SysML 或者是其他特定领域的建模语言。因此,在企业内部或者学术研究中,Sirius 可能被用于开发专门针对某一套系统工程流程或特定领域需求的建模解决方案。

总体而言,Papyrus for SysML 和 Sirius 在软件工程实践中都有较高的实用价值。Papyrus 更适合直接使用预定义的 SysML 功能进行建模工作的团队和个人,而 Sirius 更倾向于那些需要深度定制建模工具以满足特定业务场景需求的团队。两种工具在系统工程生命周期的不同阶段,以及不同规模和类型的项目中均有不同程度的采用和应用。

对于SysML基于EMF的实现,通常意味着:

1.	模型定义:首先,通过EMF提供的元模型定义技术,可以精确地描述SysML语言的核心概念、规则和约束,形成SysML的元模型。
2.	模型编辑器:基于EMF的基础设施,可以构建SysML模型的图形化编辑器,允许用户通过图形界面创建和修改符合SysML规范的系统模型。例如,可以创建需求图、用例图、活动图、状态机图等SysML特有的图表。
3.	模型持久化与交换:利用EMF的序列化机制,可以将SysML模型保存为标准格式(如XMI),便于模型的存储、版本控制以及与其他工具间的模型交换。
4.	模型执行与分析:通过EMF的模型推理和模型驱动的工具链,可以实现SysML模型的动态仿真、验证以及与其他系统工程工具的集成,如MBSE(Model-Based Systems Engineering)平台。

因此,一个基于EMF实现的SysML工具集通常会包括一套完整的建模环境,其中涵盖了模型创建、编辑、存储、交换以及进一步的系统工程活动支持。例如,Papyrus for SysML就是这样一个基于EMF实现的开源SysML建模工具。

OpenMETA 是 MetaCase 公司开发的一款基于模型的工程工具套件,用于系统和软件设计自动化。OpenMETA 提供的功能包括但不限于:

1.	模型驱动工程:支持创建和编辑不同领域的特定模型,并基于这些模型生成代码、接口定义、仿真环境等。
2.	建模工具集成:能够整合多种建模语言和工具,如UML、SysML以及其他特定领域的建模语言。
3.	系统合成与优化:支持系统级的设计空间探索,允许用户通过参数化模型来快速迭代设计方案并进行性能评估与优化。
4.	自动化代码生成:基于模型自动生成符合目标规范的源代码,以减少手工编码的工作量并提高一致性。
5.	互操作性:支持与其他建模工具和标准格式(如XML、OpenAPI等)的互操作,便于数据交换和协同工作。
6.	复杂系统设计:适用于复杂的嵌入式系统、软件系统以及跨领域的系统工程,支持从概念设计到详细设计再到实施的全生命周期管理。

MOF

MOF四层模型

元模型层和元元模型层.
1.信息层(information layer)
信息是由我们希望描述的数据组成,这些数据通常是用户数据,主要职责是描述信息领域中的详细信息.在数据层用元数据进行对这些用户数据的描述.元数据即为关于数据的数据.即对业务数据的一次抽象(通常的表现形式是一些概念性的,抽象的名字,如单据,操作人等).
2.模型层(model layer)
模型层由元数据组成,元数据的集合被称为模型.模型层的主要职责是为描述信息层而定义的一种"抽象语言"(即没有具体语法或符号的语言,一般用嘴能进行描述,但不规范)。信息层的数据,即用户数据,是模型层的一个实例。可以理解为一个模型对应的是一个业务系统,只是比现实中运行的业务系统更加抽象一些,但一般情况下人们都能够理解这样的模型,但这种模型的构建不标准,不统一,不同的业务系统会有不同的业务模型,其表现形式也不尽相同,比如有些用文档进行描述,有些用视频进行描述,有些通过画图进行描述,等等.
3.元模型层(metamodel layer)
元模型层是由元元数据组成(元元数据的实例),元元数据定义了元模型的结构和语义,这些元元数据的实例化集合被称作为元模型(即元模型是一个语法体系,是关于元元数据结构实例化后的语法体系)。元模型层的主要职责是为了描述模型层而定义的一种"抽象语言",是对模型层的进一步抽象。也就是说,模型层描述的内容通常要比元模型层描述的内容丰富、详细。一个模型是元模型的一个实例(因为在元模型的定义下,是可以画出模型的,所以说模型层是元模型层的一个实例,也就是说可以通过元模型的语法规则画出很多的模型,根据不同的应用场景)。
4.元元模型层(meta-metamodel layer)
元元模型层是由元元数据的结构和语义的描述组成,这层的主要职责是为了描述元模型而定义的一种"抽象语言"。元元模型的定义要比元模型更加抽象、简洁(即元元模型是关于元元数据本身的更深一个层次的抽象,即是描述元元数据的抽象.)。一个元元模型可以定义多个元模型,一个元模型是元元模型的一个实例。

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

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

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

相关文章

实验二(一):IPV4编址及IPV4路由基础实验

一实验介绍 1.关于本实验 IPv4( Internet Protocol Version 4)是 TCP/IP 协议族中最为核心的协议之一。 它工作在 TCP/IP参考模型的网际互联层,该层与 OSI参考模型的网络层相对应。 网络层提供了无连接数据传输服务,即网络在发送分组时不需要先建立连…

学会与自己和解

最近半年来,在学习智能驾驶方面的技术,但有些文档和资料不方便分享,有一段时间没有写 写文档啦!那就写一些技术之外的东西吧,最近也一直在学心理建设,学会与自己和解 行动 唯有自己先行动起来,…

使用Migration升级数据库

使用Migration升级数据库 package com.tiger.room2;import android.content.Context;import androidx.annotation.NonNull; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.room.migration.Migration; impo…

Jmeter---非GUI命令行的执行生成报告、使用ant插件执行接口测试脚本生成报告

非GUI命令行的执行 1. 在jmx后缀的文件目录下打开命令行 2. 运行: jmeter -n -t filename.jmx(-n : 非GUI的方式 -t: 指定需要执行的脚本) 生成jtl报告 运行: jmeter -n -t filename.jmx -l result_filename.jtl 生成html报…

【Java探索之旅】数据类型与变量,字面常量,整型变量

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java入门到精通 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、字面常量二、数据类型三、变量3.1 变量概念3.2 语法格式 四、整型变量4.1 整型变…

覆盖element-ui的el-menu样式记录:背景图片、菜单图标、菜单高亮与鼠标悬浮高亮、调整子菜单等样式

页面中修改el-menu 设置background-color"transparent"&#xff0c;menu菜单下的背景图片则能正常显示了 <el-menuclass"el-menu-demo"mode"horizontal"background-color"transparent"><el-menu-item index"1">…

【Python+Selenium学习系列5】Selenium特殊元素定位之-鼠标悬停操作

前言 Selenium模拟用户在浏览器中的操作&#xff0c;比如点击按钮。在某些场景下&#xff0c;我们需要模拟鼠标悬停的操作&#xff0c;来触发一些隐藏的元素。本文将介绍Python Selenium实现鼠标悬停操作。 鼠标悬停&#xff0c;即当光标与其名称表示的元素重叠时触发的事件&…

14.Webpack 简介以及使用

1. 概念&#xff1a; Webpack 是一个静态模块打包工具&#xff0c;从入口构建依赖图&#xff0c;打包有关的模块&#xff0c;最后用于展示你的内容 2. 静态模块&#xff1a; 编写代码过程中的&#xff0c;html&#xff0c;css&#xff0c; js&#xff0c;图片等固定内容的文件…

[java入门到精通] 11 泛型,数据结构,List,Set

今日目标 泛型使用 数据结构 List Set 1 泛型 1.1 泛型的介绍 泛型是一种类型参数&#xff0c;专门用来保存类型用的 最早接触泛型是在ArrayList&#xff0c;这个E就是所谓的泛型了。使用ArrayList时&#xff0c;只要给E指定某一个类型&#xff0c;里面所有用到泛型的地…

公众号IP白名单已添加服务器IP 122.88... 依然给出 40164 错误

公众号的IP白名单已添加 122.88... 依然给出 40164 错误。 {"errcode":40164,"errmsg":"invalid ip 122.88... ipv6 ::ffff:122.88..., not in whitelist rid: 65e85a07-458dfc0d-16003e03"} 解决方案&#xff1a; 一、检查 AppID 是否正确&…

STM32基本定时功能

1、定时器就是计数器。 2、怎么计数&#xff1f; 3、我们需要有一恒定频率的方波信号&#xff0c;再加上一个寄存器。 4、比如每来一个上升沿信号&#xff0c;寄存器值加1&#xff0c;就可以完成计数。 5、假设方波频率是100Hz&#xff0c;也就是1秒100个脉冲。…

【学习】DLA (Deep Layer Aggregation)

本研究是有由UC Berkeley的Trevor Darrell组发表于2018年CVPR。因为&#xff0c;工作中应用到CenterNet&#xff0c;文章中使用了DLA作为backbone&#xff0c;能够以较高的速度完成推理并维持较高的AP。 DLA文章&#xff1a;论文 DLA 在实际操作中&#xff0c;常常将高级特征…

机器学习-pytorch1(持续更新)

上一节我们学习了机器学习的线性模型和非线性模型的机器学习基础知识&#xff0c;这一节主要将公式变为代码。 代码编写网站&#xff1a;https://colab.research.google.com/drive 学习课程链接&#xff1a;ML 2022 Spring 1、Load Data&#xff08;读取数据&#xff09; 这…

学习Java的第六天

一、变量 1、变量的定义 在程序执行的过程中变量的值会发生变化&#xff0c;直白来说就是用来存储可变化的数据。从本质上讲&#xff0c;变量其实指的是内存中的一小块存储空间&#xff0c;空间位置是确定的&#xff0c;但是里面放置的值不确定。比如屋子里有多个鞋柜&#x…

2024年目标检测研究进展

YOLOv9 图片来源网络 YOLO相关的研究&#xff1a;https://blog.csdn.net/yunxinan/article/details/103431338

网络安全: Kali Linux 进行 SSH 渗透与防御

目录 一、实验 1.环境 2.nmap扫描目标主机 3.Kali Linux 进行 SSH 渗透 3.Kali Linux 进行 SSH 防御 二、问题 1.SSH有哪些安全配置 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统版本IP备注Kali Linux2022.4 192.168.204.154&#xff08;动态&…

【软考】单元测试

目录 1. 概念2. 测试内容2.1 说明2.2 模块接口2.3 局部数据结构2.4 重要的执行路径 3. 测试过程2.1 说明2.2 单元测试环境图2.3 驱动模块2.4 桩模块 4. 模块接口测试与局部数据结构测试的区别 1. 概念 1.单元测试也称为模块测试&#xff0c;在模块编写完成且无编译错误后就可以…

16.Git从入门到进阶

一.Git 初识 1. 概念&#xff1a; 一个免费开源&#xff0c;分布式的代码版本控制系统&#xff0c;帮助开发团队维护代码 2. 作用&#xff1a; 记录代码内容&#xff0c;切换代码版本&#xff0c;多人开发时高效合并代码内容 3. 如何学&#xff1a; 个人本机使用&#xf…

数据库中 SQL Hint 是什么?

前言 最近在调研业界其他数据库中 SQL Hint 功能的设计和实现&#xff0c;整体上对 Oracle、Mysql、Postgresql、 Apache Calcite 中的 SQL Hint 的设计和功能都进行了解&#xff0c;这里整理一篇文章来对其进行梳理&#xff0c;一是帮助自己未来回顾&#xff0c;加深自己的思…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景&#xff1a;开发者A&#xff0c;开发者B在同一个项目协同开发&#xff0c;修改同一个代码文件。开发者A在Win10下&#xff0c;开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…