系统的参与者只有用户1个,通过对系统需求的分析,可以识别3个主要用例:开机、机器设置和绕线控制。通过对用例的进一步分解,得出系统的用例图,如图2所示。
1.2 设计过程
完成需求分析之后,进入设计阶段。这个阶段中,以需求分析结果为基础,找出系统所需要的类和对象以及其相互关系。针对嵌入式系统的特点,面向对象的一些高级特性不能使用,动态创建对象、派生和多态这样的特性会大大降低系统速度并增大代码空间和数据空间,对瑞萨H8/3062,这款单片机只有128KB的ROM和4KB的RAM,节省每一个字节都显得非常重要。
通过对用例和系统结构分析,识别出来的类和关系如图3所示。
出于可移植性的考虑,所有类被分成3个层次:
最顶层是功能逻辑类的抽象,MachineStting为机器设置类;Keys为按键类,Displayr为显示类,MotorController为电机控制器类。这些逻辑上的类与硬件无关,便于以后硬件修改,同时使得开发绕线机的不同版本变得非常容易,如从平绕机到开发环行机,从二轴绕线机到开发三轴绕线机。
中间层是外围硬件类的抽象,Flash为Flash存储类,用于存储设置的参数;Speaker为扬声器类;Panel为面板类;DCMoto/为直流电机类;StepMotor为步进电机类。
最底层是单片机及其内部功能模块类的抽象,H8/3062为单片机类,用于封装输入/输出口;Timer_KeyShake为按键防抖定时器;Timer_DCMotor为直流电机PWM脉冲产生定时器;Timer_DCCapture为直流电机圈数捕获定时器;Timer_StepMotor为步进电机PWM脉冲产生定时器。分这一层可以使得变换单片机类型非常容易,瑞萨H8/300H系列单片机在国内应用非常罕见,之所以选用这款是为了与国外产品的竞争,这样可以更快、更好地打开国际销路,但在选择这款单片机的同时已经做好了移植到ARM内核单片机的准备。
为了理解系统的动态行为,还应该用顺序图、协作图、状态图和活动图对系统动态行为进行描述。状态图对嵌入式系统的设计尤其重要,这里用其对MotorController的状态转换进行描述,如图4所示。
可以用时序图等对用例进行进一步的分析,“启动”按键按下后处理的时序图如图5所示。
建模过程不是一个直线过程。它往往是一个演化、迭代的过程,不断地分析、评价、修改、再分析,才可能得到一个高质量的模型,为高质量的软件打下基础。
1.3 编码过程
Rose具有自动生成C++框架代码的功能。在Rose菜单中选择Tools→ANSI C++→Generate Code,可以生成C++的框架代码。
文章来源于领测软件测试网 https://www.ltesting.net/