1.本发明涉及软件工程技术领域,特别涉及一种软件设计与开发的方法及终端。
背景技术:2.在软件开发过程中,为了保证工程的可靠性和工程的准时交付,在开发前架构师会对需求进行架构设计以理清工程的模块职责及依赖关系;在开发阶段软件工程师会遵循架构设计文档中的模块划分及依赖关系进行详细设计输出详细设计文档,最终进行业务开发。而当开发过程中有细节与架构设计不符时,软件开发人员需要基于实际情景修改代码结构,并手动通知软件设计人员更新迭代文档。
3.目前现有技术下在主要是架构师通过uml(unified modeling language,统一建模语言)软件描述模块划分及依赖关系并编写架构设计文档,核心产物为组件图;软件工程师基于架构设计文档输出详细概要设计文档,核心产物为类图;软件工程师基于设计文档进行开发。
4.虽然在软件开发的过程中设计组件图和类图可以一键转换代码,代码结构也可以一键转换为uml图,但是都需要人工转换并通知更新文档,无法确定设计方案是否真正落地,随着迭代时间加长容易出现软件设计和实际开发代码严重不符的问题,导致维护困难。
技术实现要素:5.本发明所要解决的技术问题是:提供了一种软件设计与开发的方法及终端,能够提高软件设计与软件开发的一致性。
6.为了解决上述技术问题,本发明采用的技术方案为:
7.一种软件设计与开发的方法,包括步骤:
8.根据软件需求生成架构设计文档,基于所述架构设计文档生成对应的详细设计文档;
9.根据所述详细设计文档的核心类图生成对应的核心类代码,基于所述核心类代码进行开发得到工程代码;
10.判断所述工程代码中是否与所述详细设计文档中的核心类匹配,若是,则将所述工程代码提交到代码仓库,否则重新生成核心类图和对应的详细设计文档与架构设计文档。
11.为了解决上述技术问题,本发明采用的另一种技术方案为:
12.一种软件设计与开发的终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
13.根据软件需求生成架构设计文档,基于所述架构设计文档生成对应的详细设计文档;
14.根据所述详细设计文档的核心类图生成对应的核心类代码,基于所述核心类代码进行开发得到工程代码;
15.判断所述工程代码中是否与所述详细设计文档中的核心类匹配,若是,则将所述工程代码提交到代码仓库,否则重新生成核心类图和对应的详细设计文档与架构设计文档。
16.本发明的有益效果在于:根据软件需求生成架构设计文档对应的详细设计文档,根据详细设计文档的核心类图生成对应的核心类代码,开发人员能够直接基于核心类代码进行开发得到工程代码;若工程代码中与详细设计文档中的核心类不匹配,则重新生成核心类图和对应的设计文档,大大提高了软件设计和软件开发的一致性;若工程代码与详细设计文档核心类相匹配,则将工程代码提交到代码仓库,能够保证提交的文档正确可靠,保证了设计文档在开发阶段的良好落地。
附图说明
17.图1为本发明实施例的一种软件设计与开发的方法的流程图;
18.图2为本发明实施例的一种软件设计与开发的终端的示意图;
19.图3为本发明实施例的一种软件设计与开发的方法的具体步骤流程图。
具体实施方式
20.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
21.请参照图1和图3,本发明实施例提供了一种软件设计与开发的方法,包括步骤:
22.根据软件需求生成架构设计文档,基于所述架构设计文档生成对应的详细设计文档;
23.根据所述详细设计文档的核心类图生成对应的核心类代码,基于所述核心类代码进行开发得到工程代码;
24.判断所述工程代码中是否与所述详细设计文档中的核心类匹配,若是,则将所述工程代码提交到代码仓库,否则重新生成核心类图和对应的详细设计文档与架构设计文档。
25.从上述描述可知,本发明的有益效果在于:根据软件需求生成架构设计文档对应的详细设计文档,根据详细设计文档的核心类图生成对应的核心类代码,开发人员能够直接基于核心类代码进行开发得到工程代码;若工程代码中与详细设计文档中的核心类不匹配,则重新生成核心类图和对应的设计文档,大大提高了软件设计和软件开发的一致性;若工程代码与详细设计文档核心类相匹配,则将工程代码提交到代码仓库,能够保证提交的文档正确可靠,保证了设计文档在开发阶段的良好落地。
26.进一步地,基于所述架构设计文档生成对应的详细设计文档包括:
27.生成与所述架构设计文档中组件对应的核心类图;
28.基于所述核心类图设计对应的详细设计文档。
29.由上述描述可知,通过生成与架构设计文档中组件对应的核心类图,再基于核心类图设计对应的详细设计文档,能够保证架构设计与详细设计的一致性。
30.进一步地,判断所述工程代码中是否与所述详细设计文档中的核心类匹配包括:
31.拦截提交到代码仓库的所述工程代码;
32.判断所述工程代码中是否存在所述详细设计文档中的核心类且所述核心类的依赖关系是否与所述详细设计文档匹配。
33.由上述描述可知,拦截提交到代码仓库的工程代码,再进行工程代码是否与核心类匹配的判断,能够使得提交到代码仓库的工程代码是与设计文档的核心类相匹配的,保证了设计文档与代码开发的一致性。
34.进一步地,所述重新生成核心类图和对应的详细设计文档与架构设计文档之后包括:
35.判断所述重新生成的详细设计文档与架构设计文档是否能够通过审核,若是,则将所述重新生成的详细设计文档与架构设计文档进行更新与同步,否则,进行异常告警。
36.由上述描述可知,通过进一步对重新生成的设计文档进行审核,能够再审核不通过是进行异常告警,保证设计文档更新的可靠性。
37.进一步地,所述进行异常告警之后包括:
38.判断所述异常告警是否是命名不一致或者是在原有的依赖关系中增加了中间依赖,若是,则梳理所述核心类的名称与关联关系,否则,根据所述详细设计文档和架构设计文档修改所述工程代码。
39.由上述描述可知,若异常告警是因核心类的命名不一致或者是在原有的依赖关系中增加了中间依赖,则通过梳理核心类的名称与关联关系,从而进行重定向,保证实际落地代码与设计有较小差异时的灵活性。
40.请参照图2,本发明另一实施例提供了一种软件设计与开发的终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
41.根据软件需求生成架构设计文档,基于所述架构设计文档生成对应的详细设计文档;
42.根据所述详细设计文档的核心类图生成对应的核心类代码,基于所述核心类代码进行开发得到工程代码;
43.判断所述工程代码中是否与所述详细设计文档中的核心类匹配,若是,则将所述工程代码提交到代码仓库,否则重新生成核心类图和对应的详细设计文档与架构设计文档。
44.由上述描述可知,根据软件需求生成架构设计文档对应的详细设计文档,根据详细设计文档的核心类图生成对应的核心类代码,开发人员能够直接基于核心类代码进行开发得到工程代码;若工程代码中与详细设计文档中的核心类不匹配,则重新生成核心类图和对应的设计文档,大大提高了软件设计和软件开发的一致性;若工程代码与详细设计文档核心类相匹配,则将工程代码提交到代码仓库,能够保证提交的文档正确可靠,保证了设计文档在开发阶段的良好落地。
45.进一步地,基于所述架构设计文档生成对应的详细设计文档包括:
46.生成与所述架构设计文档中组件对应的核心类图;
47.基于所述核心类图设计对应的详细设计文档。
48.由上述描述可知,通过生成与架构设计文档中组件对应的核心类图,再基于核心类图设计对应的详细设计文档,能够保证架构设计与详细设计的一致性。
49.进一步地,判断所述工程代码中是否与所述详细设计文档中的核心类匹配包括:
50.拦截提交到代码仓库的所述工程代码;
51.判断所述工程代码中是否存在所述详细设计文档中的核心类且所述核心类的依赖关系是否与所述详细设计文档匹配。
52.由上述描述可知,拦截提交到代码仓库的工程代码,再进行工程代码是否与核心类匹配的判断,能够使得提交到代码仓库的工程代码是与设计文档的核心类相匹配的,保证了设计文档与代码开发的一致性。
53.进一步地,所述重新生成核心类图和对应的详细设计文档与架构设计文档之后包括:
54.判断所述重新生成的详细设计文档与架构设计文档是否能够通过审核,若是,则将所述重新生成的详细设计文档与架构设计文档进行更新与同步,否则,进行异常告警。
55.由上述描述可知,通过进一步对重新生成的设计文档进行审核,能够再审核不通过是进行异常告警,保证设计文档更新的可靠性。
56.进一步地,所述进行异常告警之后包括:
57.判断所述异常告警是否是命名不一致或者是在原有的依赖关系中增加了中间依赖,若是,则梳理所述核心类的名称与关联关系,否则,根据所述详细设计文档和架构设计文档修改所述工程代码。
58.由上述描述可知,若异常告警是因核心类的命名不一致或者是在原有的依赖关系中增加了中间依赖,则通过梳理核心类的名称与关联关系,从而进行重定向,保证实际落地代码与设计有较小差异时的灵活性。
59.本发明上述一种软件设计与开发的方法及终端,适用于将软件设计文档与软件开发代码进行双向同步,保证设计与开发的强一致,以下通过具体实施方式进行说明:
60.实施例一
61.请参照图1和图3,一种软件设计与开发的方法,包括步骤:
62.s1、根据软件需求生成架构设计文档,基于所述架构设计文档生成对应的详细设计文档。
63.其中,基于所述架构设计文档生成对应的详细设计文档包括:
64.生成与所述架构设计文档中组件对应的核心类图;
65.基于所述核心类图设计对应的详细设计文档。
66.具体的,在本实施例中,架构师通过在线化电子文档uml工具设计核心产出的组件图,通过拓扑图编辑器web grapheditor实现绘图工具并扩展能力:
67.规范定义组件、类、包、接口、关系箭头的标准图形,保存设计文档时解析保存的文件的数据,识别出设计图中的组件、类、接口及其相应关系,对这些图形生成json语言的描述结构,上传并保存设计结构及关系;
68.其中json的描述结构为:
69.[{
[0070]
name:'名称'
[0071]
type:'类型(类、接口、包、组件)',
[0072]
dependency:['依赖关系(依赖、继承、实现)'],
[0073]
target:{依赖的目标名},
[0074]
alias:'别名昵称',
[0075]
package:'包名',
[0076]
language:
‘
目标语言’,
[0077]
git;
‘
目标git工程名’[0078]
}]。
[0079]
软件设计师进行详细设计时选择关联的架构设计文档,并自动基于架构设计文档的组件图的组件名输出核心类图,核心类图中包含组件对应的模块入口类以及类之间的关系;在得到核心类图后进行概要设计或者详细设计,从而保证架构设计与详细设计的一致性。
[0080]
s2、根据所述详细设计文档的核心类图生成对应的核心类代码,基于所述核心类代码进行开发得到工程代码。
[0081]
具体的,在本实施例中,软件设计师输出概要设计或者详细设计后,能够一键生成核心类图对应的java代码,从而保证详细设计文档与实际代码的一致性。
[0082]
一键生成核心类图对应的java代码具体为:当在概要设计时保存生成设计的类结构及关系后,文档服务触发任务,基于上述json结构数据动态生成指定语言java/ts的类文件,选择核心类对应的语言和类归属的git工程,生成java/js核心类以及类之间的关系信息,并生成扩展配置文件,系统自动生成核心类的初始化代码至代码仓库gerrit git。
[0083]
软件开发工程师将基于生成的核心类代码进行业务开发,得到工程代码。
[0084]
s3、判断所述工程代码中是否与所述详细设计文档中的核心类匹配,若是,则将所述工程代码提交到代码仓库,否则重新生成核心类图和对应的详细设计文档与架构设计文档。
[0085]
其中,判断所述工程代码中是否与所述详细设计文档中的核心类匹配包括:
[0086]
拦截提交到代码仓库的所述工程代码;
[0087]
判断所述工程代码中是否存在所述详细设计文档中的核心类且所述核心类的依赖关系是否与所述详细设计文档匹配。
[0088]
具体的,若工程代码修改了原有的设计文档的结构,在每次代码提交git代码仓库后触发扫描,在本实施例中,利用gerrit作为提交中转,gerrit用于codereview(代码检查),利用gerrit,有文件提交gerrit时拦截到指定的gerrit ref中触发扫描工程源码,判断与设计时产生的类信息是否一致,即扫描到所有类,类中是否存在对应包名、类名,类的继承、实现关系符合的类,并详细解析该类信息,判断依赖关系是否一致,若源码与设计时产生的类信息不一致,则通过java/ts反射机制读取当前类的实际信息,重新反向构建生成新的设计图的数据,并通知软件设计电子文档系统生成新的设计文档版本;当扫描后信息完全符合时,gerrit拦截模块则自动将代码提交至真实的git仓库。
[0089]
实施例二
[0090]
请参照图3,本实施例与实施例一的不同之处在于,进一步限定了如何处理重新生成的核心类图和对应的详细设计文档与架构设计文档,具体的:
[0091]
所述重新生成核心类图和对应的详细设计文档与架构设计文档之后包括:
[0092]
判断所述重新生成的详细设计文档与架构设计文档是否能够通过审核,若是,则
将所述重新生成的详细设计文档与架构设计文档进行更新与同步,否则,进行异常告警。
[0093]
在本实施例中,将生成的新类图和新版本的设计文档提交给设计人员审核确认,若审核通过,则将重新生成的详细设计文档与架构设计文档进行更新与同步,若审核未通过,则触发异常告警通知软件开发工程师和架构师进行处理,从而保证具体实现与设计产生差异能自动产生新文档触发审核。
[0094]
其中,所述进行异常告警之后包括:
[0095]
判断所述异常告警是否是命名不一致或者是在原有的依赖关系中增加了中间依赖,若是,则梳理所述核心类的名称与关联关系,否则,根据所述详细设计文档和架构设计文档修改所述工程代码。
[0096]
具体的,接受到异常告警后,若设计文档与实际实现本身存在偏差并非错误,如命名不一致、依赖存在中间依赖等,可通过配置文件进行重定向,重新梳理核心类的关联关系,从而保证实际落地与设计有较小差异时的灵活性;
[0097]
若异常告警不是误报,则需要软件开发工程师遵循设计文档进行代码修改。
[0098]
实施例三
[0099]
请参照图2,一种软件设计与开发的终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一或实施例二的软件设计与开发的方法的各个步骤。
[0100]
综上所述,本发明提供的一种软件设计与开发的方法及终端,根据软件需求生成架构设计文档对应的详细设计文档,根据详细设计文档的核心类图生成对应的核心类代码,开发人员能够直接基于核心类代码进行开发得到工程代码;若工程代码中与详细设计文档中的核心类不匹配,则重新生成核心类图和对应的设计文档,大大提高了软件设计和软件开发的一致性;若工程代码与详细设计文档核心类相匹配,则将工程代码提交到代码仓库,能够保证提交的文档正确可靠;在重新生成核心类图和对应的设计文档之后,提交给设计人员进行审核,若审核未通过,则需要确定设计文档与实际实现本身是否存在偏差而非错误,从而保证实际落地与设计有较小差异时的灵活性。因此基于电子化设计文档系统与gerrit结合,进行自动化映射文档核心图与核心类双向同步,能够大大提高软件设计和软件开发的一致性,保证了设计在开发阶段的良好落地;并且保证文档的正确可靠,解决了长期迭代导致设计和代码不及时更新导致偏差巨大,人员流动导致的后期维护困难。
[0101]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。