黄保垒+项涛+董延军
摘要:简述了软件架构的定义,对软件架构的评价方法进行了总结和分类。针对嵌入式领域对基于软件架构分析方法(SAAM)进行优化,提出一种嵌入式操作系统架构分析方法,并对国产嵌入式操作系统(ACoreOS)的软件架构进行了分析评价,提出软件架构的改进建议,同时验证了分析方法的可行性。
关键词:软件架构;软件架构评价;软件架构分析方法;国产嵌入式操作系统
软件架构(Software Architecture,SA)是控制软件复杂度、提高软件质量、增加软件重用性的重要方法之一,是软件工程的一个重要研究领域。自软件架构提出至今,软件体系结构定义很多,其中具有影响力的定义包括:1)软件系统的结构,包含软件元素、软件元素外部可见的属性以及这些软件元素之间的关系;2)软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则等。
软件体系结构设计技术日趋成熟,如何对软件体系结构进行有效评估,在软件生命周期早期保障软件的质量成为影响软件开发的瓶颈之一。瓶颈在于:1)没有通用的一种语言可以描述不同的架构;2)没有明确的方法来建立软件架构与系统开发所关注内容的关联;3)软件架构的评价依赖于问题域,而不同系统的问题域不同。现有对软件体系结构评估的方法被分为3类:基于场景的方法、基于度量一预测的方法以及特定软件体系结构描述语言的评估方法。
1 SAAM软件架构分析方法
卡耐基梅隆大学的Rich Kazman和Paul Clements等人在软件架构分析领域,定义了几种通用的软件架构评价方法,典型的场景分析方法有软件架构分析方法(SAAM),度量一预测分析方法有基于架构权衡分析方法(ATAM)。这些方法各有优劣,差异体现在分析技术的选择、支持质量属性的种类、参与者的要求等方面。
基于场景的评估方式针对特定领域场景设计是不同的。不同的系统对同一质量属性的理解可能不同。由于存在这种不一致性,对一个领域适合的场景设计往往不适用于其他领域,故而这一评估方法的实施需要丰富的领域知识以设计出合理的场景;另一方面,必须对待评估的软件架构有一定理解,以准确判断其是否支持场景描述的一系列活动。
经过多年的实践该方法的实用性和有效性已经得到应用验证,并成功指导了空中交通管制、嵌入式音频系统、修改控制系统(WRCS)等多个系统的架构设计。
虽然SAAM方法能够很有效的评价分析一个软件架构,但是评估过程复杂并涉及了一些软件开发流程管理的内容,需要多方人员的参与和很多的工作量才能成对一个软件架构的分析,而在大多场景下对于软件的评估是需要一种轻量的易于实施的评估方法。
2轻量级软件架构分析方法
参考SAAM软件架构分析方法,本文提出了一种针对嵌入式操作系统的轻量级软件架构分析评价方法。针对需求进行软件场景定义,通过对场景的充分描述来反映系统功能;同时分析贯穿于整个软件开发过程中,包括需求分析、架构设计、集成测试等,从而能够更好地保证软件质量。
通过领域场景与候选体系结构间的映射,为体系结构满足每个场景的期望进行评估,通过研究软件系统对特定任务场景的支持程度得出对软件系统的结构评价。
基于场景的嵌入式操作系统分析方法如图1所示:
分析方法包括五个步骤:
1)开发任务场景:开发任务场景描述哪些活动是系统必须支持的。从不同的角色(利益相关者)那里得到与系统交互的任务场景,如开发人员、维护人员、用户等。
2)描述候选体系结构:使用一组各用户能够理解的概念描述被评价的软件架构,对每一个系统的结构化描述必须表示出系统的部件(计算和/或数据)以及它们的关系(数据和控制)。
3)执行场景评价:对每个场景确定这个任务能否被直接支持(通过执行该系统)或间接支持(通过修改该系统)。改动越少,系统性能越好;反之,系统性能越差。
4)显示场景交互程度:把所有的间接场景映射到它们影响的部件和连接上去。这将给人们提供系统中部件划分的质量,不同类别场景所引起的部件交互越少,系统性能越好。
5)形成总体评价:最后对场景和场景之间的交互做一个总体的权衡和评价。
通过在某型国产嵌入式操作系统上开展软件架构的评价分析,对该方法进行可行性验证。
3国产操作系统软件架构分析
某型国产嵌入式操作系统(ACoreOS,简称0S)是一款强实时、单任务操作系统。该操作系统具有高安全、高可靠的特征,可用于安全关键的航空系统中;同时,该操作系统也具有剪裁配置能力,能够最小化资源需求,简化系统部署要求。
3.1开发任务场景
针对嵌入式操作系统的使用场景,其涉及利益相關人员包括:驱动开发人员、应用开发人员、配置集成人员、维护人员、用户五类角色,由这五类人员进行的场景定义如表1所示。
3.2操作系统架构描述
ACoreOS采用层次化架构设计,系统结构如图2所示。系统分为四个层次,自下而上依次为:
1)模块支持层(MSL):实现对硬件平台的驱动和标准化。实现对各类不同的硬件平台差异的屏蔽,向操作系统层提供统一的操作接口;
2)操作系统层(OSL):操作系统的核心层,提供嵌入式操作系统的基本功能,包括存储分配、错误处理、时间管理、任务管理、任务间通信、设备管理、运行时库等;
3)组件支持库:即中间件层,包括网络协议栈、文件系统库、OpenGL库、数据库等,这些组件支持库能够按照应用软件的要求进行裁剪;
4)应用软件层:具体的应用系统,由应用开发人员按照应用特点,实现应用功能。
操作系统中各类模块间的数据交互以及最终目标文件的组成如图3所示。
3.3执行场景评价与场景交互
针对定义的每个场景,分析所涉及的软件架构中的模块,划分出直接支持和间接支持的场景,并对间接支持中有修改的模块进行分析,评估软件架构中的模块划分、耦合情况。详细分析情况见表2。
通过表2的场景分析,部分场景中需要通过修改一些软件模块才能够实现完整的场景支持,属于间接支持。进一步详细分析可以发现MSL层和0S层的调试组件与各类场景具有比较大的耦合关系,提供的调试手段不够灵活;上述场景中,部分模块如MSL配置文件、映像管理被多个场景涉及,显示出具有较高的重要性,需要重点设计。
3.4总体评价
通过该方法对ACore0S操作系统进行场景评价,对体系结构总体评价如下:
①通过分层设计,模块功能分配较合理,多数场景能够实现独立更新,但低层(MSL目标文件)与上层间仍然具有较高耦合度,建议调整配置数据的分布;
②模块在图形化配置文件,在各类应用场景中通过配置数据进行修改,提供了较高的易用性;
③对新的驱动硬件、处理器的支持需要通过修改脚本等模块实现,反映出操作系统在扩展性方面还需要改进;
④调试模块、映像管理模块在多个场景中都涉及,相互间耦合较大,两类模块的功能定义可能存在不清晰的情况,需要完善。
4结束语
掌握和使用软件架构的评价方法对提高软件架构的合理性,避免软件后期的设计缺陷具有重要作用。本文提出了一种针对嵌入式操作系统的轻量级软件架构评估方法,该方法能够简洁有效的对软件架构进行评估,分析结果可以为架构的改进提供参考。通过对ACore0S操作系统架构的分析,验证了该方法的有效性和广泛的适应性。