在技术和产品的开发过程中,除了测试设备、检测设备、试验设施等物理性设备设施,还需用到大量的研发设计类软件,它们的有效使用,对于提高开发效率、提升开发质量、缩短开发周期、降低开发成本等目标的达成具有重要作用,甚至是开发工作正常开展不可或缺的支撑。
根据业务特点和实际用途的不同,研发设计类软件大体可分为两类:工具软件和管理软件。研发领域的管理软件,通常涉及研发的端到端业务,需要与企业的流程和组织作必要的适配,需要通过专门的项目来实施。工具软件则不然,它们主要服务于特定环节的专门性工作。本节中,我们先对研发领域的工具软件做个简要了解。
一、工具软件与工具链
工具软件具有鲜明的“工具”属性。首先,工具软件是(研发)人员开展相关工作的辅助;其次,工具软件对准的是特定领域、特定环节的特定工作,专业性很强,故而种类很多;再次,工具软件的标准化程度较高,基本可以做到“开箱即用”;还有,工具软件可以单机、单人的方式来使用。
在开发过程中,不同的阶段和环节,其工作内容和专业特点不同,需要用到的工具软件也多种多样。比如,概念阶段有概念阶段的工具软件,计划阶段有计划阶段的工具软件,开发阶段有开发阶段的工具软件,验证阶段有验证阶段的工具软件,发布阶段有发布阶段的工具软件。不同类型的工具软件,不仅功能大为不同,软件的架构和提供厂商也往往不同。为了消除开发过程中的数据“烟囱”,我们要求工具软件之间能够进行数据交换,形成类似于上下游高度协作的工具链。
研发工具链建设是一个浩大工程,不仅花费巨大,而且耗时长。在研发工具链建设中,不仅要打通和整合各种工具软件的零散功能,还要打通和整合不同的技术规范、质量标准、交付成果、数据格式和软件接口;唯有此,研发工具链才能由点成面,蜕变成为极具竞争力的研发平台。
研发工具链的建设方式有自上而下和自下而上。自上而下的工具链建设,要先做好研发工具链的顶层规划和设计,根据研发的业务特点,提前明确工具软件的标准、布局和选型,再来采购或开发所需的工具软件。自下而上的工具链建设,是以“一事一议”的方式先响应局部的工具软件需求,等应用达到一定规模后再着手工具软件的打通和整合。理论上,自上而下的工具链建设更科学。
在数字化、智能化时代,很多行业的产品,尤其是智能汽车、智能手机、智能家电,等等,已经是机(械)、电(子电气)、软(件)、数(据)等构成要素高度一体化的复杂系统,它们的开发,既有机械部分的开发,还有电子电气、软件和数据等部分的开发,需要针对不同的构成要素,建设相应的工具链。
二、机械开发工具链
机械开发的工具链建设,与机械开发的内容、特点、要求、方法、流程,等等,有着非常紧密的关系。总体上,这个领域的工具软件和工具链已经比较成熟,有现成的商业化工具软件供企业选择,也基本形成了软件厂商的寡头垄断。
1. 机械开发的特点
机械产品已经存在上千年时间,它们的开发内容、特点、方法和流程,都比较成熟。在开发的内容和特点上,机械开发主要是基于几何外形的结构开发和工艺开发;另外,在结构开发、材料选择和工艺安排上,需要考虑机械产品的可靠性和易制造性。在开发的方法和流程上,机械开发通常采取瀑布式开发模式,具体包括:造型设计、结构开发、工艺开发、结构验证、工艺验证、产品发布等阶段,它们都需要有相应的工具软件作支撑。
2. 机械开发工具链
机械开发工具链,主要由CAD、CAE、CAPP、CAM、CMS/内容出版等工具软件组成,也有人将它们统称为CAX软件,它们贯穿了产品开发从设计、测试、试制、验证,到发布、上市的整个过程。
1)面向设计的CAD
CAD,Computer Aided Design,计算机辅助设计,是利用计算机及其图形设备辅助工程设计人员进行设计工作的工具软件的统称。根据模型维度的不同,CAD软件又可分为二维CAD和三维CAD。为了与用于电子电气设计的ECAD软件作区别,机械类CAD软件也简称为MCAD。
常见的CAD软件,国际品牌有:NX(西门子)、CATIA(达索)、SolidWorks(达索)、Cero(PTC)、AutoCAD(欧特克),等等;国产品牌有:中望CAD、浩辰CAD、开目CAD、CAXACAD,等等。
另外,除了上述通用性CAD,还有面向细分领域的CAD,比如:Alias Studio、Icem Surf(面向曲面造型)、Adobe Photoshop/Designer/Illustrator、CorelDraw(面向图像处理),等等。
2)面向工程的CAE
CAE,Computer Aided Engineering,计算机辅助工程,是利用计算机辅助求解、分析复杂工程和产品的结构力学性能等工具软件的统称。根据分析内容和用途的不同,CAE软件又可分为针对特定类型的工程或产品所开发的专用CAE软件,以及可以对多种类型的工程问题进行分析的通用CAE软件。
相比较CAD软件的高度通用化,CAE软件的专业化、差异化则要大得多。以汽车行业为例,产品开发时要用到CAE软件有:Abaqus(强度分析)、3DCS(公差检查)、AMLS(NVH分析)、Autoform(冲压分析)、AVL Boost(发动机热力性能分析)、AVL Fire(发动机燃烧分析)、Flowmaster(冷却、润滑系统分析)、GT(发动机性能分析)、Hypermesh(有限元网格)、Hyperwork(工程)、LS-DYNA(碰撞)、MATLAB(计算、仿真)、MSC Nstran(有限元、模态、刚度、强度)、MSC Adams(仿真)、Star-CDV(CFD分析)、Virtual Lab(NVH分析),等等。
3)面向工艺规划的CAPP
CAPP,Computer Aided Process Planning,计算机辅助工艺规划,是利用计算机软件的数值计算、逻辑判断、推理等功能来制定零部件机械加工工艺过程的工具软件的统称。根据工作原理的不同,CAPP软件可分为检索式CAPP、派生式CAPP、生成式/创成式CAPP、交互式CAPP和综合式CAPP,等等。
在软件选型方面,CATIA、Cero等国际品牌的CAD软件,本身就整合了一定程度的工艺规划功能,而专门的CAPP软件有:开目CAPP、山大华天CAPP、CAXA CAPP,等等。
4)面向制造的CAM
CAM,Computer Aided Manufacturing,计算机辅助制造,是利用计算机系统辅助完成产品加工、检测、测试和制造的工具软件的统称。具体功能上,CAM软件提供基于计算机的数控编程和加工仿真,并可将加工指令传递给数控机床,以完成产品的物理制造。
在研发实践中,企业可以借助CAM软件,完成模具、工装夹具等生产设备的制造,甚至借助3D打印(增材制造)等新兴CAM技术,快速制造产品样机、定制产品或产品备件。
相对CAD/CAE等软件来说,CAM软件的技术门槛稍低,市场上可供选择的CAM软件也较多,有的软件厂商则把CAM功能整合进其CAD软件中。市场上常见的CAM软件,国际品牌有:GibbsCAM、Geometric CAMWorks、DP Technology ESPRIT、达索 CATIA/DELMIA、EDGE CAM、Mastercam,等等;国产品牌有:中望CAD、华天Sinovation、精雕SurfMill,等等。
5)面向上市的内容出版
测试、验证等工作完成以后,产品开发项目就进入到发布阶段。在发布阶段,需要做好产品上市的相关准备,其中,包括产品介绍、用户手册、备件目录等的开发和制作,这需要借助产品的几何造型、装配结构、物料清单/BOM等产品定义信息,这也是面向上市的内容出版软件的功能。
与MS Office、WPS Office、Adobe Photoshop/Acrobat等常规性文字编制、图片处理、文档管理等工具软件相比较,聚焦研发领域的专门性内容发布软件可与CAD、PLM等研发设计软件进行系统接口和数据交换,从而加快内容准备的速度。
面向上市的内容出版软件,典型的有:PTC Arbortext、CorelDRAW、QuarkXPress、Dozuki、Scribe、Cortona3D,等等。
6)其他用途的工具软件
除了前文所述的CAD、CAE、CAPP、CAM、技术内容出版等工具软件,机械开发中还可能用到的工具软件有:创意管理(IM)、增强现实AR、虚拟现实VR、计算机辅助制造工程(CAPE)、生命周期分析(LCA)、数字化模装(DMU),等等。
以DMU为例,又称数字样机,主要指在计算机平台上,通过三维CAD/CAE/CAM软件,建立完整的产品数字化样机。组成数字化样机的每个部件除了准确定义三维几何图形外,还赋有相互间的装配关系、技术关联、工艺、公差、特征等信息,并提供用于工程设计、加工制造、产品拆装维护的模拟环境,具有从产品设计、制造到维护的所有信息。
在DMU环境中,开发工程师可以对任何复杂的模型进行内部观察、漫游、检查和模拟,包括数据质量、断面分析、运动结构模拟、装配仿真、公差分析,从而能够更进一步地多方案验证,并提高设计效率。借助DMU,产品开发过程中大部分设计错误都能被发现和避免,从而大大减少实物样机的制作与验证。
三、E/E开发工具链
Electrical and electronic,电子电气,简称E/E。相比较机械开发,E/E开发所需的工具软件则要复杂得多。E/E开发牵涉到硬件、电气、电路(含印刷电路PCB、集成电路IC)、嵌入式软件等多个技术领域,不同领域都有各自专用的工具软件。
1. E/E开发的特点
在开发特点上,E/E的开发,属于模型驱动的V模式开发。所谓模型驱动,就是在基于模型的系统工程(MBSE)的指导下,以模型来统一定义E/E的各类要素。V开发模式中,模式的左边,是自上而下的系统设计(含架构设计、系统设计、子系统设计、部件设计)。在V模式的右边,是自下而上的系统测试和验证(含部件测试、子系统测试、系统测试和产品验证)。
E/E的开发内容,根据要素的不同,有架构开发、硬件开发、电气开发、电路开发、嵌入式软件开发,它们有着各自特有的工具链。其中,硬件开发比较简单,可以参考机械开发所需的各类工具软件,在此就不再赘述。
2. 架构开发工具链
E/E架构开发工具链,包括需求管理、系统设计、功能设计、模型设计、功能安全、系统开发、系统调试等环节的工具软件。
面向需求管理的工具软件有:DOORS、Reqtify、Reqman、Stimulus、SystemWeaver(E/E协同开发工具)、EA(UML建模工具)、Rhapsody(建模工具)、Jama、飞书、禅道,等等。
面向系统设计的工具软件有:PREEVision、MagicDraw、Systavision、Visio、EA、Matlab-Simulik、AUTOSAR Blockset、SystemWeaver,等等。
面向功能设计的工具软件有:SystemWeaver、PREEVision、DaVinci Developer、EA,等等。
面向模型设计的工具软件有:Altia、VAPS-XT、GL Studio、Eggplant,等等。
面向系统开发的工具软件有:DaVinci Developer、DaVinci Configurator Pro、Simulink、TargetLink,等等。
3. 电气开发工具链
电气开发,主要是电气系统、线速等的开发,常用的工具软件有:AutoCAD、CATIA、CHS(线束设计开发工具)、SaberRD(电子电气系统仿真建模)、Capital(电气系统和线束设计)、Mentor Graphics(电子设计自动化),等等。
4. 电路开发工具链
电路开发,包括印刷电路(Printed Circuit Board,简称PCB)和集成电路(IC,也称芯片)的开发,所用到的工具软件是EDA(Electronic design automation,电子设计自动化),它其实是电路开发工具软件的统称。在具体分类上,EDA软件又可分为:电子电路设计与仿真软件、PCB设计软件、IC设计软件。
电子电路设计与仿真软件,是对设计好的电路图进行实时模拟,模拟出实际功能,然后通过分析改进,实现电路的优化设计。常用电子电路设计与仿真软件有:SPICE/PSPICE、SystemView,等等。
PCB设计软件,主要用来绘制板级电路图,以及布局布线和仿真,进行元器件摆放和连接。常用PCB设计软件有:Protel、OrCAD、Viewlogic、PowerPCB、Cadence PSD,等等。
表7.5 IC设计开发的工具软件列表
5. 嵌入式软件开发工具链
E/E中的嵌入式软件,是嵌入在硬件中的软件,它们在功能、性能、可靠性、体积、功耗等方面有着严格的要求。E/E中的嵌入式软件,一般以软件库、组件或模块等形式出现,用于提供某种特定的功能,比如,手机的通信功能、PDA的日程管理功能,等等。
嵌入式软件开发所需的工具软件,根据面向的工作内容,可以分为:开发实现类、单元验证类、组件集成类、测试标定类,等等,它们形成了嵌入式软件开发的工具链。
1)开发实现类
开发实现类工具软件,专注于单元构建,是嵌入式软件开发的核心,又可分为面向程序员的工具软件(如集成开发环境,简称IDE)和面向程序的工具软件(如程序编译器)。面向程序员的工具软件有:Source Insight、VS Code、Eclipse、Vector Davinci Configurator、PuTTY、Perl、Simulink Coder,等等。面向程序的工具软件有:Jenkins、Wind River、Green Hills、CloudBees、Bazel、Gitlab,等等。
2)单元验证类
单元验证类工具软件,主要包括静态代码分析、单元测试及代码评审。面向静态代码分析的工具软件有:Coverity、QA-C、Parasoft、Tiobe Tics,等等。面向单元测试的工具软件有:Google Test、VectorCast,等等。面向代码评审的工具软件有:Gerrit,等等。
3)组件集成类
组件集成类工具软件,主要用于软件集成和系统集成。常用的组件集成类工具软件有:MAKEFILE、Jenkins(持续集成)、Harness(系统集成),等等。
4)测试标定类
测试标定类工具软件可用于软件集成测试、软件合规性测试、系统集成测试和系统合格性测试。常用的测试标定类工具软件有:Lauterbach、CANOE/CANALYZER、dSPACE、ETC-Test、Reactis、Blue Pirat,等等。
四、软件开发工具链
这里讲的软件开发,主要指与产品有关的,或者说服务性产品中应用软件的开发。应用软件是为了某种特定的用途而被开发的软件,它可以是一个特定的程序,也可以是一组功能联系紧密、互相协作的程序的集合,也可以是一个由众多独立软件组成的庞大的软件系统。
图7.6 DevOps模式的软件开发示意
面向计划的工具软件,用于制定目标和计划,确保计划执行的透明性。常见的计划类工具软件有:GitLab(一个基于Web的DevOps生命周期工具,提供了Git仓库管理器,具备wiki、问题跟踪和CI/CD等功能)、Tasktop、CollabNet VersionOne、Pivotal Tracket、Trello、Azure Boards,等等。
面向问题跟踪的工具软件,用于快速响应用户请求,确保问题得到有效处理,加快问题的闭环。常见的问题管理类工具软件有:JIRA、JetBrain YouTrack、Zendesk,等等。
面向源码控制的工具软件,用于管理软件源码,在团队成员之间传递源代码。常见的源码控制类工具软件有:Git(一个分布式版本控制系统,用于软件开发期间源代码的变更和跟踪)、GitHub、GitLab、Bitbucket、Subversion,等等。
面向构建的工具软件,可确保一致的软件打包效果,自动进行错误探测,尽早发现软件质量问题。常见的构建类工具软件有:Maven(一个用于 Java 项目自动化构建工具,也可用来构建和管理用 C#、Ruby、Scala 等其他语言开发的项目)、Gradle(一个开源的自动化构建工具,基于 Apache Ant等理念)、MSBuild、Rake、JFrog Artifactory、Sonatype Nexus、NuGet,等等。
面向测试的工具软件,可确保软件测试的效率和质量。常见的测试类工具软件有:JUnit(一个用于 Java 的单元测试框架)、xUnit.net、Selenium、Jasmine、Cucumber,等等。
面向持续集成(CI)和持续部署(CD)的工具软件,用于自动化构建、 测试和部署软件,可实现软件的快速集成和部署。常见的CI/CD类工具软件有:Jenkins、CircleCI、Travis CI、Concourse、Spinnaker、Octopus Deploy,等等。
面向配置管理的工具软件,可确保软件代码的一致性。常见的配置管理类工具软件有:Terraform、BOSH、Chef、Ansible、Puppet,等等。
面向容器调度的工具软件,可在合适的主机上启动容器并将它们连接在一起。常见的容器调度类工具软件有:Docker Swarm、Apache Mesos、Kubernetes,等等。
面向监控和日志的工具软件,可对软件运行进行实时监控和日志处理,提高日志运行的透明度,有助于软件问题的故障定位和快速处理。常见的监控和日志类工具软件有:ELK、Datadog、New Relic、Prometheus、Zipkin,等等。
五、数据开发工具链
随着服务型制造(产品即服务)等商业模式的推进,以及智能驾驶等人工智能服务的开发,数据已经成为(智能互联)产品的重要组成部分。与机械开发、E/E开发、软件开发等相比较,数据产品的开发,有着自己特有的特点。
基于人工智能的数据产品开发,模式上与DevOps有很多类似之处,具体包括:数据采集、数据存储、数据预处理、数据挖掘、数据标注、模型训练、仿真测试、部署发布等环节,这些环节都需要相应的工具软件作支撑。
当前,除了面向B端用户的数据服务开发的Hadoop、Transwarp Data Studio、Informatica PowerCenter等工具软件,面向C端用户的数据产品开发,尤其是面向C端用户的人工智能服务开发的工具软件,商业化程度很低,主要是服务提供企业内部自行开发。