基于ICONIX面向对象过程的嵌入式软件设计方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件系统开发是一项系统工程,必须按工程学的方法来组织软件生产。
只有在分析和设计阶段建立的可靠的系统模型,才有可能保证工程的正确实施。
统一建模语言(Unified Model⁃ing Languiage,UML)是软件密集型系统的通用建模语言。
它是图形化的语言,可对目标系统的结构和行为两方面进行建模。
当前,关于在嵌入式系统中使用面向对象语言设计的软件产品不多,而使用UML进行模型驱动开发的软件产品更是屈指可数。
因此,将模型驱动的面向对象设计方法融入到嵌入式领域是一种新颖的嵌入式软件开发方案。
1ICONIX面向对象过程
1.1ICONIX过程要点
UML的每一个方面都是非常有用的,但在实践中从来没有足够的时间使用UML的各个方面来建模、分析和设计。
来自管理层的压力迫使人们过早开始编码,因为软件项目的进度往往通过代码量多少来衡量。
而ICONIX过程是一个使用了极简主义的,流线型的方法,侧重于用例到代码之间的部分[2]。
图1表示了ICONIX过程的目标。
图1ICONIX过程重点关注的部分
下面简要介绍如何使用ICONIX过程进行软件设计。
1.2需求分析阶段
这个阶段的工作有收集需求,建立领域模型和用例模型。
需求是系统的设计特征、特性或行为。
陈述系统的需求,相当于陈述系统外部的事物与系统之间建立的一份合约,该合约声明了希望系统做什么事。
此时并不关心系统怎么做,只关心它做什么。
可以使用用例图捕获目标系统的需求。
领域模型是类图的原型。
建立领域模型时,首先确定真实世界中的抽象,即系统中将涉及的主要概念性对象。
简单来说,就是从需求中提取和系统紧密相关的专业名词以及它们之间的关系。
领域模型可以构建系统术语表,它可以确保参与项目中的每个人对于问题空间内的名词有统一的认识,这样可以减少歧义的产生[3]。
形成的领域模型随着过程的进展可以升级成类图。
1.3健壮性分析
这个阶段的要点就是针对每一个用例进行健壮性分析。
健壮性分析对改进用例文本和发现需要的(而领域模型中没有的)对象很有帮助。
在ICONIX过程中,这种简单但很有用的技术在分析和设计之间架起了一座至关重要的桥梁,如图2所示。
图2健壮性分析的作用
该图对软件开发过程通常很难的原因作出了解释,即如何从需求级视图开始(此时,关注用户使用系统来干什么,而没有考虑实现细节),然后推动这种系统视图向前发展,成为完全关注于设计的东西。
此时,顺序图可以说明系统运行时对象实例是如何彼此交互的。
健壮性分析正是一种帮助人们完成这项工作的技术。
在健壮性图中使用三种图标来表示三种不同的对象:边界对象(boundary object):参与者使用它来同系统交互;实体对象(entity object):通常是来自领域模型中的对象;控制对象
基于ICONIX面向对象过程的嵌入式软件设计方法Embedded Software Design Method Based on ICONIX Object-oriented Process 郭策王兴起(杭州电子科技大学计算机学院,浙江杭州310018)
摘要:软件方法学为构建大型的、复杂的软件系统提供了指导原则和方法体系,设计良好的系统模型要比直接编码更具决定性意义。
ICONIX面向对象过程是模型驱动设计方法的一个体现,帮助人们快速实现健壮可靠的软件产品。
在嵌入式领域,多数应用软件缺乏有效的设计,导致功能扩展和后期维护都非常棘手。
ICONIX面向对象过程与嵌入式领域结合,展现了一种嵌入式软件的设计方法。
关键词:软件方法学,模型驱动设计,ICONIX,嵌入式软件
Abstract押ICONIX object-oriented process is a reflection of model-driven design methods to help people quickly achieve robust and reliable software products.In the embedded field熏most applications lack a valid design熏resulting in functional ex⁃pansion and post-maintenance are very difficult.This paper combines ICONIX object-oriented process with embedded do⁃main熏and presents a design method of embedded software.
Keywords押software methodology熏model-driven design熏ICONIX熏embedded
software
基于ICONIX面向对象过程的嵌入式软件设计方法4
《工业控制计算机》2017年第30卷第12期
(control object):将边界对象和实体对象关联起来。
对用例进行健壮性分析的方法是:仔细检查用例文本,每次检查一个句子,并绘制参与者、边界对象、实体对象和控制对象以及图中不同元素之间的关系。
最好在一个图中指出基本流程和所有的分支流程。
关于健壮性图的规则有4条:参与者只同边界对象交互;边界对象只能同控制对象和参与者交互;实体对象只能同控制对象交互;控制对象可同边界对象、实体对象以及其他控制对象交互,但不能同参与者交互。
简单来说,边界对象和实体对象是名词,而控制对象是动词。
名词和名词之间不能交互,但动词可同名词或动词交互。
健壮性分析结束后,或许会发现一些新的领域对象,将其加入到领域模型中。
有些和需求相关的专业名词更适合作为对象的属性而非单独的对象,因此需要整理结构模型的冗余部分。
最后,由于参与者、边界对象、实体对象和控制对象的交互,部分域模型新增对象属性来支持信息传递,完成域模型的更新工作。
1.4分配行为
绘制好健壮性图之后,就可以进行详细设计了。
健壮性分析旨在发现对象和更新域模型,而详细设计则主要是关于分配行为:将确定的行为分配给发现的一组对象。
这部分重点介绍顺序图,它是详细设计阶段的核心元素。
在交互建模期间,主要实现三个目标:
1)在边界对象、实体对象和控制对象之间分配行为。
在健壮性分析期间,我们可以确定实现用例指定的行为所需的一组对象。
同时将行为分解为离散的单元,并为每一个单元创建了占位符控制对象。
现在,需要决定哪些对象负责哪些行为。
如果此时还不清楚相关的边界对象、实体对象和控制对象是什么,则此时考虑如何分配行为还为时过早,需要返回到健壮性分析,对此进行确定;
2)列出用例涉及的对象之间随时间的变化进行的详细交互。
在运行阶段,对象是通过彼此发送消息来进行交互的;
3)最终确定类间的操作分配。
完成健壮性分析后,静态模型中必须定义了大部分(可能是75%~80%)属性。
进入交互建模,我们已经有足够的信息在操作分配方面做出几乎正确的设计决策。
因此,当在顺序图上展示对象的详细行为时,需要将更新扩展到结构模型。
以ICONIX方式绘制顺序图时需要完成的3个步骤:
1)加入健壮性图中的实体对象。
这些对象都是表示结构模型中类图的类实例。
绘制顺序图时,可能发现遗漏的属性。
一定要将其加入到结构模型中,这是编码前的最后一步了;
2)加入健壮性图中的边界对象和参与者。
边界对象、参与者和域对象共同构成了解决方案空间。
在顺序图中需要综合在一起考虑;
3)将方法分配给类时,需要将健壮性图中的控制对象(每次一个)转换为一个或者多个执行所需行为的方法(有时候,可能将控制对象转换成一个真正的领域对象)。
在此过程中,需要将健壮性图作为核对清单,以确保顺序图考虑了要求的所有系统行为。
通过前面几个阶段,能够保证用例文本和健壮性图是一致的,并且健壮性图和顺序图是一致的,从而得出所做的设计满足了需求。
1.5编码实现阶段
如果很好地完成了分析与设计过程,只要继续严密关注于用户的需求,编码将会变得非常简单。
由于编码问题趋向于语言甚至是编译器有关的,并非是ICONIX过程所关注的重点部分,这里不再讨论。
ICONIX的整个过程如图3所示。
图3ICONIX完整过程
圆嵌入式应用软件设计
2.1无人机飞行控制软件介绍
无人机飞行控制软件是整个无人机飞行控制平台的核心控
制单元,是确保其安全飞行并完成预设飞行任务的关键部分,是
协调、管理和控制无人机各个硬件系统的综合控制器[4]。
它在系统时钟约束下,周期性地执行相关操作,完成相应飞行任务。
一般无人机飞控系统根据功能被划分为若干个模块:遥控
接收模块、主控模块、传感器管理模块、航姿参考系统模块、电机
控制模块等[5]。
模块之间通过信道信息的传递进行通信。
每个模块根据不同的功能划分又可以分为多个子模块,每一个子模块可以看成是一个具体的任务。
这里以遥控接收模块为例,使用enterprise architect建模工具,结合ICONIX过程进行初步的面向对象分析与设计。
2.2遥控接收模块
遥控接收模块负责处理用户发送过来的俯仰、滚转、偏航、
油门和飞行模式信号。
这些信号由飞控端硬件接收器获取后产
生俯仰PWM值、滚转PWM值、偏航PWM值、油门PWM值和
飞行模式PWM值。
PWM值需要计算转换成俯仰角度值、滚转
角度值、偏航角度值、油门控制值和飞行模式值。
这些数值需要
提供给飞控其他模块控制使用。
俯仰、滚转和偏航涉及无人机的姿态,油门与无人机维持飞行
有关。
俯仰和滚转的角度不能超过45°,否则造成无人机飞行不稳
定。
油门PWM信号不能低于系统默认值,否则不能够持续维持无
人机在空中的高度。
该系统默认值可以由用户在起飞前设定。
油门PWM信号超过30ms低于系统默认值,进入故障保
护状态(将飞行模式设置成特定值,比如降落模式等,特定值也
可以由用户在起飞前设定)。
任务调度系统(属于主控模块)负责
每隔10ms来调用遥控输入模块进行读取任务,如果持续500ms接收不到新的PWM值,同样需要进入故障保护状态。
根据设计要求,建立领域模型和用例模型,如图4和图5所示。
图4领域模型图
5
以输入飞行信号为例,进行用例简单描述。
用例名称:输入飞行信号。
参与者:用户。
正常情况:①用户通过遥控器向无人机输入信号;②无人机进行读取信号任务;③将油门PWM 值转换为
油门控制值;④将飞行模式
PWM 值转换为飞行模式值;
⑤将俯仰PWM 值转换为俯仰角度值;⑥将滚转PWM 值转换为滚转角度值;⑦将偏航PWM 值转换为偏航角度值;⑧约束俯仰和滚转的角度,使之不能超过45°。
异常情况:①无人机超过500ms 没有接收到遥控发射端的信号,进入故障保护状态;②油门PWM 值超过30ms 低于系统默认值,进入故障保护状态。
2.3健壮性分析
由于俯仰PWM 值、滚转PWM 值、偏航PWM 值、俯仰角度值、滚转角度值和偏航角度值仅仅是数值,因此这些数据可以作为姿态信息对象的属性来保存。
同样油门PWM 值和油门控制值可以作为电机控制器对象的属性,飞行模式PWM 信号和飞行模式值作为飞行模式对象的属性。
故障保护状态只是整个无人所处的一种状态,可以用特定的飞行模式进行标识。
因此,在领域模型中可以适当新增姿态信息、电机控制器(后期可以归入电机控制模块里面)、飞行模式三个域对象。
在健壮性分析时,需要以需求级用例文本为基础,并做出一些初步设计方面的假设。
如图6所示。
图6健壮性分析图
健壮性图上对象之间的连接线表示逻辑关联。
用户向接收端硬件发送数据包,任务调度系统命令接收端硬件产生PWM 值。
检查收到的数据包是否是500ms 以内的,如果是将PWM 数值转化为姿态信息对象需要的数值,飞行模式对象需要的数值和油门控制器对象需要的数值。
姿态信息对象对角度值进行约束。
检查电机控制器对象的PWM 信号值是否超过30ms 低于默认值,如果是设定飞行模式为降落。
如果用户发送过来的数据包超过500ms 还没有接收到,设定飞行模式为降落模式。
健壮性分析的结果满足用例描述并且进行了细化补充。
图7表示更新后的领域模型。
2.4行为分配
完成领域建模和健壮性分析后,已经找到了大部分满足设计要求的领域对象,并且给它们分配了一些属性。
这一步可按照
描述的方法完成交互建模,并及时更新领域模型,将其升级为最终的类图,如图8和图9所示。
图8顺序图
图9更新后的类图
最后可根据硬件平台特性,参照类图和顺序图来实现遥控接收模块,编码过程不再赘述。
猿结束语
UML 是对软件系统进行建模的强有力的标准语言。
对于大多数问题来说,只需使用20%的UML ,就可以完成80%的建模工作。
UML 的发明者并没有指出使用哪20%的内容,因此基于模型驱动的面向对象分析与设计的方法不胜枚举。
ICONIX 过程并不像其他方法存在于软件生命周期的各个阶段,相反,它是轻
(下转第8页
)
图5用例
图图7增加了属性值的领域模型
基于ICONIX 面向对象过程的嵌入式软件设计方法
6
虚拟化技术在油气管道SCADA系统软件测试的应用
(上接第6页)
量级的,可以单独使用也可以与某些软件过程相结合,成为其一个子过程。
由于该过程的便捷性,可以与嵌入式软件项目结合,快速实现满足要求的产品。
参考文献
[1]Grady Booch熏James Rumbaugh熏Ivar Jacobson.The Unified
Modeling Language User Guide眼M演.2nd ed.Addison-Wesley熏2005[2]Doug Rosenberg熏Matt e Case Driven Object
Modeling with UML Theory and Practice眼M演.Apress熏2007 [3]谭云杰.大象:Thinking in UML[M].2版.北京:中国水利水电出版
社,2012
[4]Colin Walls.Embedded Software押The Works熏Second Edition
眼M演.2nd et.Newnes熏2012
[5]吴勇,罗国富,刘旭辉,等.四轴飞行器DIY:基于STM32微控制器[M].北京:北京航空航天大学出版社,2016
[收稿日期:2017.9.16]
据源。
IEC60870-5-104协议的虚拟程序使用中油龙慧公司自主研发的虚拟工业控制通信网关。
在逻辑计算机部署虚拟采集设备时,将模拟仿真程序及加载的配置文件做成批处理文件,并设置成开机自启动,即可完成采集设备的测试环境搭建。
同一协议的虚拟机采集设备环境,只需要搭建一台,其余通过拷贝到相应路径的方式即可完成新环境的部署。
4虚拟化技术在SCADA系统软件测试中的实施案例使用虚拟化技术进行SCADA系统软件高性能测试环境搭建时,利用虚拟化管理软件,将一个已经完成虚拟采集设备部署的环境进行快速复制,只需修改IP地址就完成了新环境的部署。
基于此,用户要求在现场进行的测试验证工程,可以在实验室中进行工程设计和环境搭建,调试通过后再到现场进行部署,既提高了环境部署效率,又降低了实施成本。
表1中列出虚拟化技术在SCADA系统软件测试中的两个案例。
表1案例详细信息表
天然气SCADA系统升级改造项目环境部署如图1所示;燃气计量系统项目环境部署如图2所示。
5结束语
利用虚拟化技术部署大型调控中心控制系统测试环境,进行高性能指标验证的方案,已经在实验室和工程现场测试中得到验证,方案具有较高的可行性。
除此之外,利用虚拟化技术搭建测试环境还有如下优点:①提高了环境部署的效率,特别是对一些相同的环境,采用虚拟技术,创建好一台虚拟机环境,其他虚拟机环境通过拷贝就可以完全实现;②在同一台虚拟服务器上可以搭建多个不同操作系统的环境,如Linux、Windows等;
③节约成本,一台虚拟服务器上可以搭建几十个虚拟机,既方便快捷又节约了设备成本,同时机器本身也得到了充分的利用,避免资源浪费。
参考文献
[1]韩彤.Hyper-V虚拟化技术的研究与应用[J].信息技术与信息化,
2011(4):74-75
[2]王春海.VMware虚拟机实用宝典[M].北京:中国铁道出版社,2007
[3]鲁松.计算机虚拟化技术及应用[M].北京:机械工业出版社,2007
[4]崔泽永,赵会群.基于KVM的虚拟化研究及应用[J].计算机技术与
发展,2011(6)
[5]李昆霖.浅析性能测试[J].科技信息,2012(9):456-457
[6]马均飞.软件测试设计[M].北京:电子工业出版社,2011
[7]段念.软件性能测试过程详解与案例剖析[M].北京:清华大学出版
社,2006
[8]周粉慧.SCADA系统在成品油输油管道自动控制中的应用[J].广东
化工,2016,43(11):229-230,228
[9]张洋.SCADA系统在油田中的应用研究[J].中国管理信息化,2015,
18(16):89
[10]杨立娟.浅析SCADA煤气调度监控系统[J].城市公用事业,2008 (3):56-58
[收稿日期:2017.10.12
]
图2案例2实验室虚拟机上设备部
署
图1案例1实验室虚拟机上设备部署
8。