软件BOM在构件化软件开发过程中的应用

2019-10-09 05:48王艳丽
电子技术与软件工程 2019年17期
关键词:构件设计师软件

文/王艳丽

1 引言

物料需求清单(Bill of Material),简称BOM,是产品结构的技术性描述文件,表明了产品组件、子件、零件直到原材料之间的结构关系,以及每个组装件所需的各子部件的数量,多用于生产制造类企业。生产制造系统常用BOM来管理繁多而又关联的物料,BOM描述了装配件的结构化零件表,且随着用户需求、设计的更改而处于动态的变化与更新之中,BOM可快速准确地提供所有物料清单,是提高生产管理系统效率的关键环节。

早在1968年,NATO组织的软件工程会议上,Mcllroy首次提出了“软件工程”、“软件构件”以及“软件工厂”等概念。1975年开始举办的世界软件工程大会ICSE,提出了在软件生产中采用工程化的方法来开发软件。而软件BOM就是这软件工厂用来管理软件构件的工具。狭义上讲,构件是指一个对象(接口规范或二进制代码),它被用于复用,接口被明确定义。软件构件一般指对外提供一组规约化接口的、符合一定标准的、可替换的软件系统的程序模块。开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。20世纪90年代,美国国防部提出了基于模块的开放式系统方法(MOSA)。提出采用开放式的松耦合标准化模块,能有效地控制和降低成本。

软件BOM是需求分析和概要设计的产物。需求分析是软件开发过程的重要环节,直接决定着软件的成败。正确的需求分析会将用户的需求分解为软件的功能、性能和接口等,进而进行软件概要设计和详细设计,将抽象的功能、性能和接口等转化为一个个相互关联的构件。本文将详细阐述软件BOM在构件化软件开发过程中的设计流程、采用的形式及其应用价值。

2 构件化软件开发过程与传统软件开发过程的区别

传统软件开发过程一般经历需求分析、软件设计(包括软件概要设计、软件详细设计)、软件测试(包括软件实现和单元测试、单元集成和测试、软件配置项测试)三大过程,形成的最终产品交付用户。如图1所示。

构件化软件开发过程如图2所示,将软件设计过程细分为软件架构设计、软件BOM表设计、软件投产、新研构件设计;将软件测试细分为集成测试和CSCI测试,经测试后将新研构件入库。最后还增加了在应用中的构件回归测试并入库的动作。

对于一个成熟领域的软件开发,如果软件复用率达90%的话,采用图2的构件化开发流程,可以将软件开发时间缩短30%左右。其中90%的构件只需要从构件库中出库即可应用,另外只有10%的构件需要新研,这相对于所有的开发都从零开始要大大节约人力和缩短开发周期。

3 软件BOM的设计

软件BOM即软件结构清单,做好软件BOM表设计的前提是软件需求分析。软件负责人进行软件需求分析,初步分解出软件构件需求,形成软件BOM表V1.0。构件设计师根据软件BOM表V1.0,进行复用分析,梳理出哪些构件可以从标准构件库中出库复用,哪些构件是新研构件,进而形成软件BOM表V2.0。

如图3所示,在软件需求阶段,软件设计师根据用户的软件研制任务书,逐层细化软件需求,将软件分解为CSCI层(子系统层、工作模式层、工作方式层)、子功能层、构件层,各层独立,反映产品软件的工作模式、工作方式、子功能、性能、质量属性、接口、约束等,分解形成BOM表,并以BOM表为抓手,实现表单式开发与管理,支持软件构件复用,避免重复开发。软件需求逐层分解形成BOM的过程如图4所示。

图1:传统软件开发过程

图2:基于BOM表的构件化软件开发过程

软件BOM表常采用excel明细表的文本形式和结构树的电子视图形式。excel明细表的形式如图5所示,结构树的电子视图形式如图6所示。

图3:软件BOM设计流程图

图4:软件需求逐层分解形成软件BOM的示例

图5和图6的示例展示了最简单的软件BOM表设计情况,实际应用中会更加复杂,会有层层嵌套的情况。软件BOM表设计完成后,以结构树的电子视图形式在PDS系统中归档。PDS中结构树上的每个节点关联各类属性等信息。随后软件项目负责人根据该BOM表安排软件设计任务。

4 软件BOM的应用

4.1 软件加工生产的依据

软件BOM表作为软件的明细表,描述了软件的需求与构件之间的设计关系。比如特定的软件需求由哪些构件来实现,构件与构件之间的关系是什么,该软件需求与其他软件需求之间的交互关系是什么,这些构件怎样组装来实现该软件需求等。是进行软件需求追踪的手段,从而使设计满足用户的需求。

在实际应用中,软件设计师与构件设计师往往不是同一个人,软件设计师设计出软件BOM表V1.0版,构件设计师根据该软件BOM表来设计软件。软件设计师再依据软件BOM完成构件的系统集成。软件设计工作流水线进行,使软件设计工作效率大大提高。

4.2 软件复用的依据

图5:软件BOM表的Excel形式示例

图6:软件BOM表的结构树电子视图形式示例

软件BOM的基本要素是软件构件,软件构件是指软件系统中的可复用单元,它实现特定的功能,符合一套接口标准并实现一组接口。构件设计师对照软件BOM表首先要进行软件复用分析,判断哪些构件可以复用,哪些需要新研。对于可以100%复用的构件,直接从软件构件库中出库备用。对于可以部分复用的构件,需要从软件构件库中出库后安排构件修改、构件测试验证及构件入库等工作。对于新研的构件,则需要根据构件需求分析进行构件设计、构件测试验证及构件入库等工作。这样,复用率越高,新研的构件越少,软件开发的周期越短。从而避免重复开发,大大提高了软件开发的效率。而且,复用率越高的产品,说明软件成熟度越高,软件质量越高。

4.3 与构件库的建立相辅相成

基于软件BOM表的构件化开发过程,使得软件设计系列化、标准化、规范化、通用化。同时,标准化、规范化的构件设计,经过测试验证及回归测试验证后,作为标准构件入软件构件库,增加了软件构件库的库存种类和数量;反之,软件构件库的充实又为之后的软件设计工作提供更多可供复用的标准构件。从而实现“搭积木”式软件加工方式,使软件开发更加便捷高效。

5 软件BOM的作用

对质量的影响:软件BOM表随着构件的逐步优化,版本也随之同步升级,质量也随之得以提高。随着大量产品的借用,构件会趋于成熟,软件BOM表也随之趋于成熟。这有利于同领域的其他产品借用或者部分借用。

对生产率的影响:一般来说,大约80%~90%的复用可使软件生产率提高25%~40%。

对成本的影响:软件复用率越高时,新研构件越少,耗费的人力成本和时间成本都会大大降低。

对管理的影响:在PDS等系统中归档了的软件BOM表,记录了关于该产品所用的所有软件构件的数据信息,如构件的名称、版本、基本内容、复用/新研等信息,以及构件与构件之间的嵌套关系。它对于质量管理中从最终产品追溯零件、组件起到关键作用。软件BOM表以信息共享为基础,是综合管理、资源调度的重要依据。另外,软件BOM表中复用/新研的数据也可作为安排软件开发计划的依据。

6 结束语

本文针对基于软件BOM的构件化开发过程,阐述了软件BOM的设计流程、设计形式及其应用价值。可以看出在构件化软件开发过程中,软件BOM设计是不可缺少的重要环节。软件BOM在“工厂”式的软件加工过程中起着连接设计与制造的纽带作用,对提高软件生产率和软件质量、降低软件开发成本都起着至关重要的作用。因此,做好软件需求分析、软件BOM设计、构件设计、构件测试等,且每个环节都进行专家审核和评审,才能有效地提高软件开发的质量,推动软件工程的发展。

猜你喜欢
构件设计师软件
小小设计师
禅宗软件
我是小小设计师
设计师访谈
软件对对碰
推荐一个设计师
建筑构件
建筑构件
建筑构件
建筑构件