软件系统的组件化浅析
起源
20世纪70年代至90年代初,软件研发基本采用模块化的程序设计技术。模块化的设计方法源自面向过程的软件设计思想,一般采用库函数的形式实现,主要是面向过程的开发方式,用户不便于理解,已经无法满足未来复杂综合信息系统快速高效集成开发需求。当分布式架构、云端部署日益成为主流后,系统模块化、组件化趋势明显,系统软件中开源组件的使用复杂且相互依赖。开源组件治理是整个治理活动中非常重要的一部分。组件多层且互相依赖,往往很难厘清关系,开源组件治理工作充满严峻挑战。
主体内容
开源治理涉及多个职能部门,需要组织层面自上而下的设计与支持。通常需要横跨研发管理、技术平台、安全等团队。 团队的设立,为后续开源治理中的工具建设、引入引出、威胁识别、威胁处置等活动起到了关键支撑作用。
流程制度
设计开源治理的流程及制度,用以贯通相关团队职能并保障具体治理工作落地。这些流程体现在开源组件完整的生命周期过程中,包含组件引入引出流程、组件使用流程、组件检测流程、组件安全应急处置等。海通证券有完整的软件研发管理规范,研发管理规范中包含开源治理的相关条项,对开源使用意识、开源使用具体操作、开源支持、开源检测等具体实践进行指导及要求,确保技术的合规使用及风险可控。
具体细节
开源组件引入引出是指对开源组件的使用进行引入审核、无效退出的管理事务,是开源组件生命周期中的入口及出口。 开源组件的有效管理需要依赖流程、 制度来保障,而专业化的开源组件管理工具在治理工作中也能发挥很大支持作用。 我司建设了专业化的开源组件管理工具, 支持范围如下 :一是支持多种开源组件代码类型,例如 Java、C/C++、Golang、 Python、JavaScript 等组件语言类型 ; 二是支持基本的引入引出审批流程,对引入的包在仓库中实现统一依赖管理,对引出的包标记黑名单实现屏蔽效果 ;三是实现统一包依赖管理,对包使用方式进行统一管理,支持通用的 Maven、Gradle、 NPM、Conan 等包使用方式。