请详细阅读有关嵌入式构件设计方面的说明,回答下列问题。 【说明】 构件(component)也称为组件,是一个功能相对独立的具有可复用价值的软硬件单元。近年来,构件技术正在逐步应用于大型嵌入式系统的软件设计。某公司长期从事飞行器电子设备研制工作,已积累了大量成熟软件。但是,由于当初管理和设计等原因,公司的大量软件不能被复用,严重影响了公司后续发展。公司领导层高度重视软件复用问题,明确提出了要将本公司的成熟软件进行改造,建立公司可复用的软件构件库,以提升开发效率、降低成本。公司领导层决定将此项任务交给技术部门的王工程师负责组织实施。两个月后,王工程师经过调研、梳理和实验,提交了一份实施方案。此方案得到了公司领导层的肯定,但在实施过程中遇到了许多困难,主要表现在公司软件架构的变更和构件抽取的界面等方面。 【问题1】 请用200字以内文字说明获取构件的方法有哪几种?开发构件通常采用哪几种策略?并列举出两种主流构件标准。 [问题21 由于该公司已具备大量的成熟软件,王工程师此次的主要工作就是采用遗留工程(LegacyEngi neering)方法,将具有潜在复用价值的软件提取出来,得到可复用的构件。因此,在设计软件时与原开发技术人员产生了重大意见分歧,主要分歧焦点在于大家对构件概念理解上的差异。请根据你对构件的理解,判断下表给出的有关构件的说法是否正确。 【问题3】 王工程师的实施方案指出:本公司的大部分产品是为用户提供标准计算平台的,而此平台中的主要开发工作是为嵌入式操作系统研制板级支持软件(BSP)。为了提高BSP软件的复用,应首先开展BSP构件的开发,且构件架构应符合国外GENESYS规范定义的嵌入式系统架构风格。下图给出了架构风格定义的构件通用接口,其中:链接接口(LIF.是构件对外提供的功能服务接口;局部接口建立了构件和它的局部环境的连接,如传感器、作动器或人机接口;技术相关接口(TDI)提供了查看构件内部、观察构件的内部变量的手段,如诊断等;技术无关接口(TII)用来在运行时配置、复位、重启构件的接口。现需要针对BSP中常用的RS-232串行驱动程序设计一个可复用的软构件,请说明该软构件四类接口的具体功能。
答案: 基于构件的软件开发中,可以通过不同的途径来获取构件,主要包括以下4种方法: (1)从现有构件中获得符合要求的构件,直接使用或做适应性修改,得到可复用的构件; (2)通过遗留工程(Legacy Engineering),将具有潜在复用价值的软件提取出来,得到可复用的构件; (3)从市场上购买现成的商业构件,即COTS (Commercial Off-The-Shell)构件; (4)开发新的符合要求的构件。 开发构件通常采取3种策略: (1)分区(partitioning):指的是将问题情景的空间分割成几乎可以独立研究的部分; (2)抽象(abstraction):是对在给定实践内执行指定计算的软/硬件单元的一种抽象; (3)分割(segmentation);是将结构引入构件的行为,支持对行为性质进行时序推理。 当前主流构件标准有: (1)CORBA:由OMG(对象管理集团)制定; (2)COM/DCOM:由Microsoft制定; (3)EJB:由SUN的Java企业Bean制定。 答案:(1)√ (2)× (3)× (4)√ (5)× (6)× 错误分析: (2)“构件是解决软件复用的基础,复用的形式可分为垂直式复用和水平式复用。而垂直式复用的主要关键点在于领域分析,具有领域特征和相似性,受到广泛关注”。垂直式复用是与领域特性相关的,而水平式复用是一种公用的服务,不予某个特殊领域相关。 (3)“构件构建在平台之上,平台提供核心平台服务,是构件实现与构件组装的基础。构件组装通常采用基于功能的组装技术、基于数据的组装技术和面向对象的组装技术等三种技术”。配置只是一种构件功能组合动态方法,而不是构件组装的技术。 (5)“构件可分为硬件构件、软件构件、系统构件和应用构件。RTL(运行时库)属于软件构件,由于RTL可适应多种应用领域,所以RTL与属于水平式复用构件”。RTL是C/C++语言为用户提供的一种运行时库,如数学库、stdio库等,它可服务于多种应用,而与领域需求无关,所以说RTL不属于垂直式复用构件。 (6)“硬件构件的功能被给定的硬件结构如ASIC预先确定,他是不能修改的。同样,软件构件的功能由在FPGA或者CPU上的软件确定的,我们将加载在软件构件上的软件称为作业。将作业分配给适当的可以执行该作业的硬件单元就创建了新的构件。软件构件的功能所以在构件的寿命期中可以修改”。 答案: RS-232驱动程序主要完成对RS-232芯片的初始化,实现RS-232数据发送、接收和控制等功能。依据GENESYS规范定义的构件接口含义,RS-232驱动程序构件的接口定义如下: (1)链接接口 RS-232驱动构件的使用者是上层的操作系统或应用软件,本构件应该给他们提供串行接口的数据发送、数据接收服务。因此,链接接口至少包括以下功能服务: ●Send():处理机中的程序向RS-232芯片输出数据; ●Receive():处理机中的程序通过RS-232芯片从外部接收数据; ●Init232():初始化RS-232芯片。 (2)局部接口 RS-232驱动构件的局部接口应该是RS-232芯片为编程提供的各类寄存器和CPU对外围芯片的支持,此接口与硬件紧密相关。就RS-232芯片而言,局部接口至少包括以下功能服务: ●Intconnect():将RS-232芯片的外部中断向量连接到CPU; ●Read():从RS-232芯片中读取寄存器的内容(包括控制、状态类寄存器和数据输入寄存器); ●Write():将控制信息或输出的数据写入RS-232芯片的相应寄存器。 (3)技术相关接口 RS-232驱动构件的技术相关接口应该是RS-232驱动构件为维护人员提供的芯片诊断接口,此接口与硬件和应用紧密相关。就RS-232芯片使用而言,技术相关接口至少包括以下诊断功能服务: ●Datacheck():诊断数据传输校验的错误。 (4)技术无关接口 RS-232驱动构件的技术无关接口应该是RS-232驱动构件为编程人员提供的芯片初始化或运行时的配置接口。技术无关接口至少包括以下功能服务: ●Reset():RS-232芯片或驱动构件复位; ●Restart():RS-232芯片或驱动构件重启动; ●Rateconfigure():配置、重新配置RS-232传输速率。