精华内容
下载资源
问答
  • 针对嵌入式软件的特点,提出嵌入式软件的四级测试流程和集成测试的测试模型,并结合开发数控系统的实例进行分析。  关键词:模块化设计 嵌入式软件 软件测试 测试方法 测试模型 数控系统 嵌入式设计已经...
  • 基于模块化设计的嵌入式软件测试方法 摘要:分析嵌入式软件的特点,综述传统的软件测试方法;针对嵌入式软件的特点,提出嵌入式软件的四级测试流程和集成测试的测试模型,并结合开发数控系统的实例进行分析。 ...

     基于模块化设计的嵌入式软件测试方法

        摘要:分析嵌入式软件的特点,综述传统的软件测试方法;针对嵌入式软件的特点,提出嵌入式软件的四级测试流程和集成测试的测试模型,并结合开发数控系统的实例进行分析。

        关键词:模块化设计 嵌入式软件 软件测试 测试方法 测试模型 数控系统

        嵌入式设计已经成为工业现代化、智能化的必经之路,嵌入式产品已经深入到各行各业。嵌入式系统的专用程度较高,系统的整体继承性相对较小,为了保证系统的稳定性,软件的测试成为嵌入式开发的一个重要环节。由于嵌入式软件自身的特点,传统的软件测试理论不能直接用于嵌入式软件的测试,因此,研究嵌入式软件的测试有重要意义。

    1 基本概念简述
    1.1 模块化设计

        软件的设计是以一定的方法为基础的。面对越来越复杂的软件开发任务,人们提出了各种软件设计的模型。从用户需求和系统要实现的任务功能出发,把大型的软件划分为相对较小的模块。为了减少模块与模块之间的关联性,模块之间的逻辑结构相对独立,无函数的交叉调用,数据传递由全局变量完成,这就是模块化设计的基本思想。模块化设计的核心是模块的独立性,主要包括功能独立性和结构独立性,这使得软件开发的分工易于实现。软件测试是软件开发中的关键环节,基于模块化设计的软件测试模型简单,查错和纠错都易于实现。下面以单链路数据传递的软件模型说明模块化软件设计的软件测试的基本原则。

        在图1中,函数F(X-Y)定义为软件模块X到软件模块Y的接口函数,用来通过终端显示由模块X进入模块Y的数据。如果模块C执行后发生错误,则由模块B和模块C的数据接口函数F(B-C)判断是否是模块B出来的数据就是错误的。如果F(B-C)不错,则证明模块C存在错误;如果F(B-C)传递数据错误,再察看F(A-B)传出的数据是否错误,如果不错则证明模块B存在错误。用此依次前推孤立错误的方法,即可以很容易地定位错误所在的模块。这就是模块化设计时软件测试的基本原则。

    1.2 嵌入式系统
        嵌入式系统开发有其自身的特点。一般先进行硬件部分的开发,主要包括形成裸机平台,根据需要移植实时操作系统,开发底层的硬件驱动程序等。硬件平台测试通过后,应该软件的开发调试是基于该硬件平台进行的,这同时也是对硬件平台的一个测试。整个嵌入式系统开发流程如图2所示。

        因此可以说,嵌入式系统的开发过程是一个软硬件互相协调,互相反馈和互相测试的过程。一般来说,在嵌入式系统软件中,底层驱动程序、操作系统和应用程序的界线是不清晰的,根据需要甚至混编在一起。这主要是由于嵌入式系统中软件对硬件的依赖性造成的。嵌入式软件对硬件的依赖性要求,软件测试时必须最大限度地模拟被测软件的实际运行环境,以保证测试的可靠性。底层程序和应用程序界限的不清晰增加了测试时的难度,测试时只有确认嵌入式系统平台及底层程序正确的情况下才能进行应用程序的测试,而且在系统测试时,错误的定位较为困难。软件的专用性也是嵌入式软件的一个重要特点。由于嵌入式软件设计是以一定的目标硬件平台为基础的、面向固定的任务进行的,因此,一旦被加载到目标系统上,功能必须完全确定。这个特点决定了嵌入式应用软件的继承性较差,延长的系统的测试时间,增加了测试费用。嵌入式软件的另外一个重要特点就是实时性。这是从软件的执行角度出发说明的,也就是说嵌入式软件的执行要满足一定的时间约束。嵌入式系统中,应用软件自身算法的复杂度和操作系统任务调度,决定了系统资源的分配和消耗,因此,对系统实时性进行测试时,要借助一定的测试工具对应用程序算法复杂度和操作系统任务调度进行分析测试。可见嵌入式软件与传统的面向对象和面向过程的软件相比有其自身的特点。针对这些特点对嵌入式软件的测试进行研究是必要的,有意义的。

    1.3 嵌入式软件测试
        软件测试是从经济、效率的角度出发,对软件代码进行质量、正确性保证的一个过程。软件测试是软件开发中的一个重要环节,也是软件从开发过程到应用过程的关键一环。嵌入式软件也不例外,图3给出了嵌入式软件测试的统一测试模型。软件测试逐渐成为一门成熟的学科,前人针对面向对象和面向过程的非实时软件的测试作了大量的研究,其中大部分方法可以用到嵌入式软件的测试。

        根据不同的指标,软件测试方法有不同的划分方法。从软件开发过程中测试所处的不同阶段可分为模块测试、集成测试和系统测试。根据是否需要运行目标代码分为动态测试和静态测试;根据目标代码的可见性可分为白盒测试(结构测试)和黑盒测试(功能测试)。在软件的测试中,每种测试方法都不是孤立的。为了最经济最有效地达到测试的目的,各种测试方法往往是互相嵌套的。例如,在软件的单元测试阶段,可以用黑盒测试和白盒测试的方法分别进行动态测试。

        值得一提的是,近年来软件测试中,测试代码的覆盖率逐渐成为软件测试的统一标准,因此不管采用何种测试方法,尽可能地提高软件测试中的代码覆盖率是必需的。软件测试代码覆盖率是基于白盒测试方法的,因此,为了提高软件测试的代码覆盖率,测试人员必须清楚源代码的结构,拥有程序设计文档,以便设计测试用例使测试尽可能地覆盖程序内部结构的每条语句,提高代码的覆盖率。

    2 基于模块化设计的嵌入式软件四级测试流程
        根据嵌入式系统的开发流程,为了最经济地实现系统的功能,采用自顶向下、层层推进的方法对嵌入式系统进行测试,提出了如图4所示的基于模块化设计的嵌入式软件四级测试流程。在四级测试中,本测试阶段以前的测试完成后,当发现错误时,可排队此测试阶段以前的错误,在本测试阶段内查找错误。这并不是一个绝对准确的方法,但最大限度地节了错误定位的时间。

    2.1 系统平台测试
        这部分包括硬件电路测试、操作系统及底层驱动程序的测试等。硬件电路的测试需要用专门的测试工具进行测试。这里不再多述。操作系统和底层驱动程序的测试主要包括测试操作系统的任务调度、实时性能、通信端口的数据传输率。该阶段测试完成后,系统应为一个完整的嵌入式系统平台,用户只需添加应用程序即可完成特定的任务。

    2.2 模块测试
        把大型的嵌入式软件系统划分为若干个相对较小的任务模块,由不同的程序员分别同时对其进行编码。编码完成后,把各个模块集成起来前,必须对单个模块进行测试。由于没有其它数据模块进行数据传递的支持,该阶段测试一段是在宿主机上进行的(宿主机有丰富的资源和方便的调试环境)。此阶段主要是进行白盒测试,尽可能地测试每一个函数、每一个条件分支、每一个程序语句,提高代码测试的覆盖率。由于只有单个模块正确才有整体集成的必要性,因此,单个模块测试时测试一定要充分、完整。模块测试阶段,测试用例的构造不但要测试系统正常的运行情况,还要进行边界测试。边界测试就是进行某一数据变量的最大值和最小值的测试,同时进行越界测试,即输入不该输入的数据变量测试系统的运行情况。理想的嵌入式系统是不应该由用户的信息交互导致死机的,这也是嵌入式设计的一个基本要求。因此,不论进行何种测试,系统死机都该被作为测试错误处理。在模块测试阶段,由模块化编程的基本思想,根据模块内部的紧凑程序,也可以把大的模块划分成小的模块。在程序内部,小模块之间数据传递的入口设计接口函数,用于快速地定位错误。用此模块嵌套的思想进行软件测试,需要模块内部结构清晰,数据链路简单。

    2.3 集成测试
        单个软件模块测试正确之后,将所有模块集成起来进行测试。本阶段主要是找出各模块之间数据传递和系统组成后的逻辑结构的错误。在宿主机上采用黑盒与白盒相结合的方法进行测试,要最大限度地模拟实际运行环境,可以屏蔽掉一些不影响系统执行的和数据传递的难以模拟的函数。集成测试是模块化设计软件的测试优点充分体现的阶段。集成测试前,应该由程序员根据模块之间的数据的输入输出编写模块接口函数,这需要负责不同软件模块的程序员共同协调完成,然后将模块接口函数集成到接收数据模块的入口处。由前面的分析可知,单链路数据传递的软件模块集成测试时容易定位错误所在的软件模块。一个软件模块的数据不一定只有另外一个模块提供,即软件模块的数据链路不一定只是单链路的,测试时可以把复杂链路结构的数据传递划分为单链路结构数据传送进行错误定位。修改输出数据的软件模块时,可能导致输入数据的软件模块引入新的错误,因此在这里引入关联矩阵确定修改某一模块后需要重要测试的模块。

        假定模块化设计的嵌入式系统软件由软件模块Ai(i=1,2,…,m,n)组成,m表示矩阵的行号,n表示矩阵的列号。图5所示的矩阵即为其关联矩阵。

        在关联矩阵中,Aij=1表示Aj接受了Ai输出的数据,故修改了Ai重新测试Ai的同时也需重新测试Aj。

        集成测试是在拥有程序设计文档、程序结构和数据结构时,对软件模块在集成中出现的错误进行测试。集成测试时,根据模块接口函数定位错误修改代码,根据关联矩阵确定重新测试的软件模块。图6给出了模块化设计的嵌入式软件集成测试模型。

    2.4 系统测试
        集成测试完成后,退出宿主机测试环境,把系统移植到目标机上来,完成应用到现场环境中,从用户的角度对系统进行黑盒测试,验证每一项具体的功能。由于测试者对程序内容程序执行情况一无所知,因此本测试阶段的错误定位比较困难。系统测试阶段应该进行意外测试和破坏性测试,即测试系统正常执行情况下不该发生的激发活动和人为的破坏性的测试,进一步验证系统性能。系统测试阶段不应该确定错误后立即修改代码,应根据一定的错误发生频率,确定测试周期,在每个测试周期结束时修改代码,进行反复测试;否则,不但增加了完全测试的任务量,而且降低了测试的可信度。

    2.5 测试结果分析
        测试结果的分析可以定位错误,指导程序员修改代码,同时指出测试进行的程序并进一步指明测试方向。测试结果的分析是一个由测试结果和测试预得结果进行分析、比较和定位错误的过程。测试结果的分析是一次测试的最后环节,分析时应该考虑软件的运行环境和实际运行环境的差异以及各种外界因素的影响等。

    2.6 测试用例的构造与管理
        测试用例是为了测试目标程序设计的包括输入项和预得结果的一种文件,根据测试环境和测试目标程序的不同,可分为某种格式的文档或某种输入行为(如一次按键)等。测试用例的构造要尽可能覆盖所有可能的取值范围,使测试尽可能地覆盖所有程序代码,提高代码的测试覆盖率,同时又不作多余、重复和无意义的测试。在嵌入式软件测试的不同阶段,要构造不同的测试用例;在系统平台测试阶段,要构造针对系统任务调度、实时性能和底层驱动程序的测试用例;在模块测试阶段,应构造针对某一模块进行测试的测试用例;在集成测试阶段,针对系统集成时数据传递、结构斜接的问题构造相应的测试用例;在系统测试阶段,要构造针对某项功能的或多项功能结合在一起的测试用例,或使用已经在同类产品上已经验证正确的测试用例。测试用例是可复用的。此外大型的软件开发过程中,测试用例的种类繁多,应该按一定的方法进行管理。用数据库的来管理测试用例是一个很好的选择。根据测试阶段将测试用例进行划分,然后用关键字唯一确定。这样在使用、修改和保存测试用例时都很方便,直接用查询的方式就可以调出测试用例。

    3 数控系统软件测试
        本数控系统采用ARM7处理器,操作系统采用μC/OS实时操作系统,是一个典型的嵌入式系统。由于数控系统较为复杂,开发过程中将任务进行了详细的划分,软件的开发采用模块化开发。模块的划分及数据流向如图7所示。

        根据图7所示的软件模块和数据流向可构造关联矩阵,如图8所示。

        开发过程中,几个模块由不同的程序员分别进行编码,分别由程序员进行模块测试,并按白盒测试的方法进行覆盖测试。最后集成测试前,根据关联矩阵,程序员协作编写了模块接口函数F(A1-A2)、F(A1-A4)、F(A1-A5)、F(A1-A6)、F(F2-A3)、F(A3-A4)、F(A4-A5)、F(F5-A6)、F(A6-A2),然后根据图6所示的测试模型和图8所示的关联矩阵对系统进行了集成测试。分析可知,一些关键模块,如译码模块和刀补模块的测试代码覆盖率达到90%之上。图9所示的整个系统经过系统测试之后性能稳定,图10为其加工的零件,目前该系统已经小批量生产。

     

    4 结论
        文章对嵌入式软件的特点和传统的测试方法作了分析之后,提出了四级测试流程和集成测试的模型。此测试方法用于工程机械控制器和数控系统开发的测试。测试的效率和可靠性满足要求。文中的单链路数据传递的错误定位、模块接口函数、关联矩阵等方法也可以用于面向对象的和面向对象的软件系统。

    欢迎转载此文,转载时请注明文章来源:文斯测试技术研究中心 http://blog.csdn.net/vincetest

    展开全文
  • 介绍了液晶显示控制器T6963C性能特点,给出了FPGA与液晶显示屏WG240128B硬件接口电路、软件设计流程和液晶显示程序。  0引言  由于液晶显示具有可编程驱动、接口控制方便、体积小、功耗低、具有良好可视...
  • 一款基于Java语言开发,开源商业应用的模块化开发框架智能管理平台-Axelor 欢迎使用Markdown编辑器 Axelor是一款基于Java语言开发,开源商业应用的模块化开发框架智能管理平台。通过提供Axelor,您将能够...

    一款基于Java语言开发的,开源商业应用的模块化开发框架和智能管理平台-Axelor

    欢迎使用Markdown编辑器

    Axelor是一款基于Java语言开发的,开源商业应用的模块化开发框架和智能管理平台。通过提供Axelor,您将能够减少项目时间并满足您的客户需求,此外,集成BPM(业务流程管理)使您可以在必要时创建和修改任何业务流程,而无需编写代码。 Axelor还有平台低码特点,可帮助您增加利润和节省时间。 我们还具有符合人体工程学的设计,可以真正提高用户体验。 由于易于定制解决方案,因此您可以将Axelor开发和实施到任何行业。 Axelor解决了公司中许多不同的问题,例如内部沟通,组织,生产等。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G
    查找:Ctrl/Command + F
    替换:Ctrl/Command + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt. \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间, 文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0开始我的操作确认?结束yesno
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • 介绍了液晶显示控制器T6963C性能特点,给出了FPGA与液晶显示屏WG240128B硬件接口电路、软件设计流程和液晶显示程序。  0引言  由于液晶显示具有可编程驱动、接口控制方便、体积小、功耗低、具有良好可视...
  • 全面介绍了模块式厂房布置形式在营口浩通矿业有限公司选煤厂中的应用,结合该选煤厂的设计思路和设计特点阐述了模块式选煤厂在工艺流程、工艺布置、设备选型、施工、检修、生产管理等方面的特点,同时也总结了模块式选...
  • 根据螺旋输送机的结构特点和现代机械设计的需要,提出了螺旋输送机三维CAD参数化设计系统的基本框架,并对其中的螺旋输送机参数设计模块和图档生成模块给出了基本设计方法和设计流程,最后以实例验证了该方法的可行性。
  • 针对某直升机检查指令播报需求,利用软硬件结合方式,设计了以单片机为核心,并扩展BA高保真放音模块和显示控制模块的硬件电路,编制了软件流程,完成了系统集成与调试,实现了对直升机检查指令进行语音播报...
  • 一体化模块贴片机是最近几年在新型贴片机设备研发过程中提出来—种全新概念机型,其主要特点是:以贴片机主机为标准设备,为其装备统一、标准基座平台通用接口,并将裸片分切、涂敷、贴片检测,甚至焊接...
  • 此系统可以通过键盘输入相关数据, 并根据需要, 实时对步进电机工作方式进行设置, 具有实时性交互性的特点。该设计可应用于步进电机控制的大多数场合 摘 要 I 第1章 工程训练设计任务 1 1.1 工程训练设计的目的...
  • 线长以及易于维护系统升级的特点,选用松下PLC的PC-LINK网络进行系统设计.FPΣ系列PLC强大的网络通讯功能PC-LINK网络把机械手搬运系统单元.货物自动识别缓冲系统单元.堆垛系统单元自动仓库系统单元进行连接...
  • 为满足民航飞行流量快速增长需要,运用C/SB/S等先进信息网络技术以及数据库开发技术,设计并实现了航班信息一体系统。系统由航班计划、流量管理、电子进程单等若干模块组成,具有航班信息统一管理、规范...
  • 一体化模块贴片机

    2021-01-20 00:01:19
    一体化模块贴片机是近几年在新型贴片机设备研发过程中提出来—种全新概念机型,其主要特点是:以贴片机主机为标准设备,为其装备统一、标准基座平台通用接口,并将裸片分切、涂敷、贴片检测,甚至焊接等...
  • 针对目前煤矿信息软件中系统配置信息管理模块设计和实现因只注重当前需求而造成软件资源不能重用、软件后期维护升级较困难的问题,研究并设计了系统配置信息维护组件。分析了系统配置信息的特点,并将其分为多值...
  • 基于软件定义的载荷具有通用、标准和模块化的特点,可以实现多功能系统的统一架构,通过软件定义重构实现不同功能。本文首先介绍了国外首个在轨成功应用的通信导航一体化载 荷的功能性能,及其在轨试验情况;然后...
  • 基于STM32嵌入式系统及200万摄像头OV2640设计了图像采集系统,分析了系统基本硬件架构,分别对不同模块的功能特点作出了简单介绍;对系统软件设计给出了详细说明,介绍了系统初始化的基本思路和流程
  • 将EMS设计模块化。分别从界面、数据处理、SNMP实现三个模块对EMS 原理和设计进行了剖析。从EPON网络管理配置管理、性能管理、安全管 理、故障管理四个方面需要完成了EMS相关功能分析和设计,并结合EPON ...
  • 在传统Web开发中,我们为了进行功能分离,经常会进行模块划分,比如基础信息模块交由AB做,接口信息模块交由CD做。最终,再汇集到一起,组成一个完整项目。在这整一个流程中,我们做到只是逻辑上解耦,...

    1.初识OSGI

    OSGI的全称是Open Service Gateway Initiative,直接翻译过来理解很费劲。为了理解这个问题,我们先看看OSGI的设计目的与实现特点是什么。

    在传统Web开发中,我们为了进行功能的分离,经常会进行模块划分,比如基础信息模块交由A和B做,接口信息模块交由C和D做。最终,再汇集到一起,组成一个完整的项目。在这整一个流程中,我们做到的只是逻辑上的解耦,最终这些模块还是运行于同一服务器上,共享同一个classpath。这时就会出现一个局限性问题,比如现在接口规范改了,我只想停掉接口信息模块,而基础信息模块仍能正常运行,这显然是无法实现的。

    而使用OSGI可以完美解决这个问题,OSGI是基于模块(Bundle)驱动的,每个模块都有属于自己的classpath和类加载器,模块之间通过包暴露和引入进行关联,每个模块有着自己独立的生命周期,我们可以动态地对模块进行加载、卸载、更新。如此看来,OSGI可以用一句话描述,就是一个为Java提供的动态模块化的系统。

    2. OSGI中模块的生命周期

    在OSGI中,每个Bundle有着下列六种状态,状态图如图2-1所示:

    Ø INSTALLED — 成功安装Bundle。

    Ø RESOLVED — 所有Bundle需要的Java类可用。这个状态标志着 bundle已经是启动就绪或者是已经停止。

    Ø STARTING — 正在启动Bundle。调用了Bundle激活器的start方法,而且还没有从方法中返回。

    Ø ACTIVE — Bundle已经启动完毕,正在运行中。

    Ø STOPPING — 正在停止Bundle。调用了Bundle激活器的stop方法,而且还没有从方法中返回。

    Ø UNINSTALLED — Bundle已经卸载完毕,不能进入其他状态。

    图2-1 Bundle生命周期状态图

    3. OSGI与SOA

    通过前面的说明,我们可以发现,OSGI可以看成是一个服务发布规范,每个模块可以看成是一个服务包,模块可以进行注册、监听,模块间通过暴露服务进行联系,很显然,这是SOA的思想嘛。在OSGI RFC 119之前,OSGI只能运用于单体架构,与主要用于分布式架构的SOA有着本质的区别,RFC 119增加了分布式领域规范,这使得OSGI适用于实现SOA。

    4. OSGI现状

    OSGI目前在国内只有为数不多的公司和项目有在使用,究其原因,还是它的弊端太大了。OSGI过于复杂,似乎每个程序员用过了都说不好,主要问题有以下几点:

    (1)入门门槛高,OSGI规范多达几十个,并包含上千个API;

    (2)增加系统不稳定性,由于OSGI类加载机制比较特别,经常会出现不明原因的ClassNotFoundException等异常;

    (3)应用性不强,运用OSGI大部分是因为其“热插拔”和Jar隔离特性,但是,如果不是对动态性要求特别高的项目,引入OSGI似乎只是徒增麻烦。

    目前,OSGI的应用更多的是因为其模块性和服务性,这与主流的微服务也是融合的,但是其复杂性使得它很难成为主流。

    附阿里架构师对OSGI的评价:http://hellojava.info/?p=152



    作者:Xx_hpeng
    链接:https://www.jianshu.com/p/11dcea36b957
    來源:简书
     

    展开全文
  • 针对复杂工业过程建模与仿真设计的特点和要求,设计并实现了一套面向典型过程控制的集组态、仿真和监控一体的可视实时仿真系统.系统结构主要包括前台用户操作、中间数据通信和后台仿真计算3部分,采用面向对象和...
  • 在软件设计中利用模块化编程思想首先讨论了控制器实现控制功能程序设计及控制器与物理总线通信功能程序设计,并给出设计流程图,最后对通信实现部分包括对信息发送接收做了详细说明。 实验测试结果表明,...
  • 1.2.3虚拟设计的特点 1.2.4虚拟设计的优点 1.2.5虚拟设计对现代机械工业的影响 1.3课题的提出及主要研究内容 1.3.1课题的背景及提出 1.3.2课题的主要研究内容 第2章基本技术原理 2.0引言 2.1 VRML技术基础...
  • 1.2.3虚拟设计的特点 1.2.4虚拟设计的优点 1.2.5虚拟设计对现代机械工业的影响 1.3课题的提出及主要研究内容 1.3.1课题的背景及提出 1.3.2课题的主要研究内容 第2章基本技术原理 2.0引言 2.1 VRML技术基础...
  • 1.2.3虚拟设计的特点 1.2.4虚拟设计的优点 1.2.5虚拟设计对现代机械工业的影响 1.3课题的提出及主要研究内容 1.3.1课题的背景及提出 1.3.2课题的主要研究内容 第2章基本技术原理 2.0引言 2.1 VRML技术基础...
  • 设计基于MSP430F149单片机为主...实际测试表明,系统能够准确的完成温湿度、二氧化碳浓度光照强度的采集,功耗较低,具有智能传感器网络的特点,在智能农业领域有着很好的市场前景推广价值。  农作物的生
  • 针对企业业务过程建模...针对多任务多分支环境下复杂的流程编辑问题,设计了一种有限状态机(FSM)模型,实现了复杂编辑动作实时性处理灵活控制,降低了时间复杂度,并且实现模块化编程,很好地实现了流程的建模。
  • 设计基于MSP430F149 单片机为主控制单元,...实际测试表 明,系统能够准确的完成温湿度、二氧化碳浓度光照强度的采集,功耗较低,具有智能传感器网络的特点, 在智能农业领域有着很好的市场前景推广价值。
  • 本文阐述了CRM的基本原理和特点,对酒店管理信息系统的需求进行了分析,在此基础上对基于CRM的酒店管理信息系统进行了模块化的设计。最后给出了系统设计的流程图,并给出了网站模块、后台管理模块两个重要模块的设计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 602
精华内容 240
关键字:

模块化设计的特点和设计流程