一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于公有云和混沌序列的程序文档版本管理的方法

2022-10-22 08:34:20 来源:中国专利 TAG:
1.本发明涉及软件工程和软件质量保证,尤其涉及一种基于公有云和混沌序列的程序文档版本管理的方法,属于计算机软件领域。
背景技术
::2.软件工程是计算机软件系统开发和设计的基础。在软件工程中,程序开发文档是软件代码编制和后期软件质量保证的重要文件。为了有效地开发、设计、管理软件项目,通过有效的方法实现软件文档的管理是程序员、项目经理和开发团队不可忽视的重要因素。3.在大中型的软件项目中,前期的项目需求分析结束后,项目经理、开发团队和程序员需要结合需求分析对软件内容进行重新程序化定义、架构搭建、模块划分等工作,同时考虑到不同的数据接口和兼容性等问题,也需要对数据等进行规范化处理。因此,大中型软件项目的开发中,一种重要的数据文件是程序文档。4.在大中型的软件系统中,由于采用模块化设计或者面向对象等开发方式,在设计程序前,需要编制程序模块说明文档和概要说明书等技术资料。在这些文档中,核心的问题是如何设计和开发程序,以实现软件项目的按期如约交付使用。因此,在对程序文档进行编制的过程中需要大量使用版本信息等进行文档的标注和说明。5.在软件工程中,比较常用的是cmm模型,cmm是capabilitymaturitymodel的英文缩写。cmm针对软件公司、机构或者组织等对软件系统的定义、实施、度量、控制和改善其软件研发中不同的阶段的质量管理。cmm的重要宗旨在于通过软件质量的管理过程控制软件,利用软件开发、维护进行过程监控和对软件后期的改进等,使软件开发更加规范化、科学化、对软件企业提供更好的改进软件质量的工具、方法和技术等。cmm可以分为:初始级(initial),可重复级(repeatable),已定义级(defined),已管理级(managed),优化级(optimizing)等五个等级。软件公司和企业等可以通过这五个等级对企业的规模、质量保证、维护等进行分类管理;软件公司和企业的等级越高,标志着该公司和企业具有更好的开发和服务的质量保障。6.由于大中型的软件项目开发需要团队实现,因此,软件的程序文档就显得庞大而复杂,不同的程序员实现的文档和程序错综复杂,难于管理和衔接的问题会影响软件项目的进行。随着公有云的出现,在公司内部的公有云可以存储不同的地理位置的公司团队和项目组的程序文档,从而进行共享使用和内部交流。这不仅节约了软件开发的成本,同时对于软件项目的顺利进行也提供了有效的方法。因此,采用公有云的技术能够实现程序文档的有效共享管理,促进软件项目的顺利进行。7.在软件系统的技术文档中,程序文档是一种特殊类型的文档,其特殊性在于:第一,程序是软件项目开发的基础,通过相同或者不同的程序设计语言实现的功能模块,进行编译连接完成软件的一定功能。第二,程序文档在大中型的软件项目中,常采用“编程语言 自然语言”描述的方法进行说明。这样做的目的是有利于软件项目的延续性和标准化。无论当前的程序员退出或者意外中断,均不会对项目本身产生不利的影响,新接手的程序员可以很容易地理解和方便阅读这些标准化的文档而接手后续开发工作。同时,对于cmm的后期软件质量保证具有更大的参考作用。第三,程序文档的专业性很强,程序员除了具有专业的编程知识之外,还需要按照一定的接口、算法和数据结构等完成不同的软件功能。因此,一个程序文档的版本对于程序员和团队具有非常重要的作用。8.案例1:在某软件公司的程序员a开发了程序模块m1,程序员a撰写了程序文档doc_m1,程序员a在完成了本软件项目后结束程序文档doc_m1的维护,并定义该文档版本为:程序文档doc_m1_v_1.0。9.案例2:在某软件公司的软件后期维护中,客户需要升级某个模块的功能。程序员b接手该项软件升级任务,程序员b在阅读了程序文档doc_m1_v_1.0后,了解了该模块的主要数据接口、内部数据结构和算法等,并开始对模块进行升级。程序员b在结束了本软件项目的升级任务后,修改原程序文档版本doc_m1_v_1.0为新的版本doc_m1_v_2.0b。10.案例3:某软件公司分别在c城市和d城市设有分公司,c城市的程序员和团队通过公有云访问与本软件项目有关的程序文档资料,并与d城市的开发团队进行程序文档资料的维护,节约了大量的交通成本和差旅费用,而且快速、方便。11.基于公有云的平台虽然可以带给开发团队快速、方便的程序文档的接入和访问;但是,不同的团队对于程序文档的维护也存在着问题。当二个团队同时实施一个项目时,具有公共属性的程序文档的维护就存在着冲突和版本不一致的问题。例如:在显示数据库输出记录的共同变量val值定义中,程序员a定义其数值是10,并修改了程序文档文件;但是,不同组的程序员b为了测试本人的数据,修改了程序文档中的共同变量val值为1。因此,引起了程序文档的不一致问题。12.混沌序列具有周期长、随机性好等特点,被广泛用于随机数发生器、密码算法和数字证书中。通过哈希或者散列方法可以实现数字文件摘要,一旦文件内容变化,可以通过数字文件摘要或者散列值鉴定是否该值被修改或者文件内容改变。技术实现要素:13.(一)要解决的技术问题在软件系统开发中存在着程序文档版本的管理问题。14.程序文档可以分为全局程序文档和模块程序文档。全局程序文档是在各个模块之间统一使用和定义的变量,函数声明,接口,公式,符号等。全局程序文档需要根据前期的需求分析获得用户需求后,统一地实现在用户功能模块之间数据交换的接口,或者用户统一实现的计算公式等。例如:各分部银行的利息计算公式由总行确定;以及各个主要模块之间统一使用的变量。例如:圆周率统一设定为3.14;这样的设定就不会因为不同的程序员使用不同的值,例如:3.1415等导致计算结果不一致的问题。15.在全局程序文档中统一定义了模块的函数声明,每个程序员或者团队在使用时只能根据统一和标准化的参数进行使用。在全局程序文档中,统一定义了特殊的符号。例如:在一些程序设计语言中的正则表达式的实现,有些特殊的符号或者字符等需要单独或者特殊处理。16.模块程序文档是编制模块的程序员使用的文档,以及系统模块测试中测试员根据模块程序文档进行设计测试方案的文档。模块程序文档中需要程序员主动定义其函数和过程,数据结构和算法等,属于专业性很强和技术性要求高的文档。程序员通过编程语言和自然语言实现模块程序文档的编写,并定义一定的版本信息。在后续其他程序员进行修改时,应延续该版本信息。17.相对于模块程序文档,全局程序文档在整个软件系统的开发过程和测试中一旦变化对软件系统的影响更大。因此,对于全局程序文档的管理应采用更加严格和标准化的管理,以避免由于数据不一致或者冲突引起的软件质量问题。18.可以设想,在上千个模块的软件系统中去修改一个变量的不一致问题所带来的巨大麻烦。因此,在进行程序文档的管理时,应该重点考虑程序文档的技术性、标准化、接口性和兼容性等问题,以及为了后续的升级和质量保障更加需要注意程序文档的版本升级与有利于企业的cmm质量体系的提高。19.(二)技术方案为了解决在软件工程中程序文档的版本管理问题,本发明提供了一种基于公有云和混沌序列的程序文档版本管理的方法,包括:(1)通过公有云技术实现软件工程中程序文档的有效管理,公有云技术可以实现程序文档的存储,转发,下载,上传等共享程序文档资料,方便程序员和团队进行软件项目的开发、测试和升级维护等。此外,通过技术分析和实践的总结,把程序文档分为全局程序文档和模块程序文档两类进行管理。20.(2)通过用户设定自动对比文件内容变化,更新程序文档版本信息。利用混沌序列实现在全局程序文档的数字文件指纹处理,当全局程序文档发生版本改变和内容变化时,通过数字文件指纹验证版本的变化。此外,对模块程序文档的内容进行数字文件指纹处理,当模块程序文档的内容发生变化时,提醒程序员和团队版本发生变化。21.(3)对程序文档的版本进行技术性、标准化、接口性、兼容性、质量保证的设计,为大中型软件工程项目的全面提高质量保障奠定基础。22.一种基于公有云和混沌序列的程序文档版本管理的方法,实现了软件项目的程序文档版本管理,主要包括:part_1、软件项目的程序文档被分为二类:全局程序文档(globaldoc)和模块程序文档(sectiondoc);程序文档存储在公有云中,合法用户在授权进入公有云后提供存储、转发、下载、上传程序文件功能。具体为:全局程序文档globaldoc包括二个部分:文件头(globaldoc_head)和文件数据区(globaldoc_body)。23.globaldoc_head包括:segment_1:文件编号信息段,文件编号信息变化记为gh_1,当文件编号信息改变时,设置gh_1为1,否则设置为0;segment_2:软件项目信息段,软件项目信息变化记为gh_2,当软件项目信息改变时,设置gh_2为1,否则设置为0;segment_3:团队信息段,团队信息变化记为gh_3,当团队信息改变时,设置gh_3为1,否则设置为0;segment_4:项目经理信息段,项目经理信息变化记为gh_4,当项目经理信息改变时,设置gh_4为1,否则设置为0;segment_5:前一个版本信息段,前一个版本信息变化记为gh_5,当前一个版本信息改变时,设置gh_5为1,否则设置为0;segment_6:当前版本信息段,当前版本信息变化记为gh_6,如果当前版本信息改变时,设置gh_6为1,否则设置为0;segment_7:修改说明信息段,修改说明信息变化记为gh_7,当修改说明信息改变时,设置gh_7为1,否则设置为0;全局程序文档globaldoc的数字文件指纹记为globaldoc_index,初始化时设置为全0。24.全局程序文档的文件数据区globaldoc_body包括:segment_8:全局变量区,记录程序的全局变量,全局变量变化记为gb_1,当全局变量改变时,设置gb_1为1,否则设置为0;segment_9:函数声明区,记录软件项目的函数声明,函数声明变化记为gb_2,当函数声明改变时,设置gb_2为1,否则设置为0;segment_10:接口区,记录软件项目的接口,接口变化记为gb_3,当接口改变时,设置gb_3为1,否则设置为0;segment_11:符号区,记录软件项目中使用的符号,符号变化记为gb_4,当符号改变时,设置gb_4为1,否则设置为0;segment_12:公式区,记录软件项目中程序使用的公式,公式变化记为gb_5,当公式改变时,设置gb_5为1,否则设置为0。25.模块程序文档sectiondoc包括二个部分:文件头(sectiondoc_head)和文件数据区(sectiondoc_body)。26.模块程序文档的文件头sectiondoc_head包括:segment_1:文件编号信息段,文件编号信息变化记为sh_1,当文件编号信息改变时,设置sh_1为1,否则设置为0;segment_2:模块编号段,模块编号变化记为sh_2,当模块编号改变时,设置sh_2为1,否则设置为0;segment_3:模块名称段,模块名称变化记为sh_3,当模块名称改变时,设置sh_3为1,否则设置为0;segment_4:按时间排序的模块程序员信息段,模块程序员信息变化记为sh_4,当模块程序员信息改变时,设置sh_4为1,否则设置为0;segment_5:前一个版本信息段,前一个版本信息变化记为sh_5,如果前一个版本信息改变时,设置sh_5为1,否则设置为0;segment_6:当前版本信息段,当前版本信息变化记为sh_6,如果当前版本信息改变时,设置sh_6为1,否则设置为0;segment_7:修改说明信息段,修改说明信息变化记为sh_7,当修改说明信息改变时,设置sh_7为1,否则设置为0;模块程序文档sectiondoc的数字文件指纹记为sectiondoc_index,初始化时设置为全0。27.sectiondoc_body包括:segment_8:函数和类声明区,记录软件项目中函数和类声明,软件项目中函数和类声明变化记为sb_1,当函数和类声明改变时,设置sb_1为1,否则设置为0;segment_9:引用外部模块区,记录软件项目引用外部模块,引用外部模块变化记为sb_2,当引用外部模块改变时,设置sb_2为1,否则设置为0;segment_10:黑盒测试信息区,记录软件测试中黑盒测试,黑盒测试信息变化记为sb_3,当黑盒测试信息改变时,设置sb_3为1,否则设置为0;segment_11:白盒测试信息区,记录软件测试中白盒测试,白盒测试信息变化记为sb_4,当白盒测试信息改变时,设置sb_4为1,否则设置为0;segment_12:函数和类定义区,记录模块程序员实现函数和类定义的代码,函数和类定义变化记为sb_5,当函数和类定义改变时,设置sb_5为1,否则设置为0。28.part_1描述完毕。29.part_2、设定程序文档自动对比内容,通过ac串匹配算法进行文本对比分析;利用混沌序列生成程序文档的数字文件指纹。具体为:程序文档doc规范化形式为:doc={segment_1,segment_2,segment_3,segment_4,segment_5,segment_6,segment_7,segment_8,segment_9,segment_10,segment_11,segment_12};程序文档doc中的每个部分segment具有开始和结束标志,在进行字符串匹配时能够互相区分。当文件编号信息段segment_1相同时,自动进行设定的内容比对,并提醒程序员和开发团队内容发生变化。30.ac串匹配函数textcomp_acstringmatch(doc1,doc2)实现规范化程序文档的每个部分变化的自动内容比对;其中,textcomp_acstringmatch函数通过ac串匹配算法比较规范化程序文档的对应部分segment的内容变化,doc1表示用户给定的程序文档,doc2代表需要比对的程序文档。例如:全局程序文档globaldoc的segment_2是软件项目信息段,如果textcomp_acstringmatch函数检测到软件项目信息变化,那么设置程序文档doc2的gh_2为1。31.logistic混沌映射用于实现混沌序列的生成。logistic混沌映射定义为:xn 1=xn*c*(1-xn),控制参数c的值在(3.6,4)之间,混沌迭代序列xn属于(0,1)的正小数。32.函数convertstrnum(string,num,downval,upval)表示将一个字符串string转换为实数num的过程,该实数num被映射在区间(downval,upval)之间;其中,downval是区间的下界,upval是区间的上界。例如:convertstrnum(segment_1,num,3.6,4)将字符串segment_1转化为在(3.6,4)之间的实数num。33.函数convertnumbit(num,bit,totalpos)表示将一个数num转换为二进制数bit的过程,其中,totalpos代表二进制数bit的位数,如果二进制数bit的位数小于totalpos,那么高位用0补充。34.全局程序文档globaldoc的数字文件指纹globaldoc_index和模块程序文档sectiondoc的数字文件指纹sectiondoc_index的长度设定为128比特位。35.全局程序文档globaldoc在自动内容比对后,产生内容变化向量s_gd:s_gd={gh_1,gh_2,gh_3,gh_4,gh_5,gh_6,gh_7,gb_1,gb_2,gb_3,gb_4,gb_5}初始化logistic混沌映射,产生x0和c。36.将向量s_gd的每个元素合并为一个字符串str_sgd。37.x0=convertstrnum(str_sgd,num1,0,1),将获得的数值num1赋值给x0。38.c=convertstrnum(segment_1,num2,3.6,4),其中,segment_1是全局程序文档globaldoc的文件编号信息段,将获得的数值num2赋值给c。39.将logistic混沌映射进行初始化迭代1000次后;继续迭代logistic混沌映射12次,将每次产生的xn利用convertnumbit(xn,bit,10)转化为globaldoc_index的前120位。40.globaldoc_index的最后一个字节checkbyte_g设置为奇偶校验,每一位cbg具体为:checkbyte_g={cbg_1,cbg_2,cbg_3,cbg_4,cbg_5,cbg_6,cbg_7,cbg_8};其中,cbg_1校验gh_1和gh_2,当gh_1和gh_2为奇数时,设置cbg_1为1,当gh_1和gh_2为偶数时,设置cbg_1为0;cbg_2校验gh_3和gh_4,当gh_3和gh_4为奇数时,设置cbg_2为1,当gh_3和gh_4为偶数时,设置cbg_2为0;cbg_3校验gh_5和gh_6,当gh_5和gh_6为奇数时,设置cbg_3为1,当gh_5和gh_6为偶数时,设置cbg_3为0;cbg_4校验gh_7和gb_1,当gh_7和gb_1为奇数时,设置cbg_4为1,当gh_7和gb_1为偶数时,设置cbg_4为0;cbg_5校验gb_2和gb_3,当gb_2和gb_3为奇数时,设置cbg_5为1,当gb_2和gb_3为偶数时,设置cbg_5为0;cbg_6校验gb_4和gb_5,当gb_4和gb_5为奇数时,设置cbg_6为1,当gb_4和gb_5为偶数时,设置cbg_6为0;cbg_7校验cbg_1、cbg_2和cbg_3,当cbg_1、cbg_2和cbg_3为奇数时,设置cbg_7为0,当cbg_1、cbg_2和cbg_3为偶数时,设置cbg_7为1;cbg_8校验cbg_4、cbg_5和cbg_6,当cbg_4、cbg_5和cbg_6为奇数时,设置cbg_8为0,当cbg_4、cbg_5和cbg_6为偶数时,设置cbg_8为1。41.模块程序文档sectiondoc在自动内容比对后,产生内容变化向量s_sd,s_sd={sh_1,sh_2,sh_3,sh_4,sh_5,sh_6,sh_7,sb_1,sb_2,sb_3,sb_4,sb_5};初始化logistic混沌映射,产生x0和c。42.将向量s_sd的每个元素合并为一个字符串str_ssd。43.x0=convertstrnum(str_ssd,num3,0,1),将获得的数值num3赋值给x0。44.c=convertstrnum(segment_1,num4,3.6,4),其中,segment_1是模块程序文档sectiondoc的文件编号信息段,将获得的数值num4赋值给c。45.将logistic混沌映射进行初始化迭代1000次后,继续迭代logistic混沌映射12次,将每次产生的xn利用convertnumbit(xn,bit,10)转化为sectiondoc_index的前120位。46.sectiondoc_index的最后一个字节checkbyte_s设置为奇偶校验,每一位cbs具体为:checkbyte_s={cbs_1,cbs_2,cbs_3,cbs_4,cbs_5,cbs_6,cbs_7,cbs_8};其中,cbs_1校验sh_1和sh_2,当sh_1和sh_2为奇数时,设置cbs_1为1,当sh_1和sh_2为偶数时,设置cbs_1为0;cbs_2校验sh_3和sh_4,当sh_3和sh_4为奇数时,设置cbs_2为1,当sh_3和sh_4为偶数时,设置cbs_2为0;cbs_3校验sh_5和sh_6,当sh_5和sh_6为奇数时,设置cbs_3为1,当sh_5和sh_6为偶数时,设置cbs_3为0;cbs_4校验sh_7和sb_1,当sh_7和sb_1为奇数时,设置cbs_4为1,当sh_7和sb_1为偶数时,设置cbs_4为0;cbs_5校验sb_2和sb_3,当sb_2和sb_3为奇数时,设置cbs_5为1,当sb_2和sb_3为偶数时,设置cbs_5为0;cbs_6校验sb_4和sb_5,当sb_4和sb_5为奇数时,设置cbs_6为1,当sb_4和sb_5为偶数时,设置cbs_6为0;cbs_7校验cbs_1、cbs_2和cbs_3,当cbs_1、cbs_2和cbs_3为奇数时,设置cbs_7为0,当cbs_1、cbs_2和cbs_3为偶数时,设置cbs_7为1;cbs_8校验cbs_4、cbs_5和cbs_6,当cbs_4、cbs_5和cbs_6为奇数时,设置cbs_8为0,当cbs_4、cbs_5和cbs_6为偶数时,设置cbs_8为1。47.part_2描述完毕。48.part_3、程序文档的版本按照技术性、标准化、接口性、兼容性、质量保证进行分级,通过拟合计算进行有效的评价。具体为:指标技术性、标准化、接口性、兼容性、质量保证划分为五个等级。每个等级设定分值为:1级对应分值1,2级对应分值2,3级对应分值3,4级对应分值4,5级对应分值5。49.技术性的参数std_tech等级为:std_tech={st_1,st_2,st_3,st_4,st_5};标准化的参数std_form等级为:std_form={sf_1,sf_2,sf_3,sf_4,sf_5};接口性的参数std_inte等级为:std_inte={si_1,si_2,si_3,si_4,si_5};兼容性的参数std_adapt等级为:std_adapt={sa_1,sa_2,sa_3,sa_4,sa_5};质量保证的参数std_qual等级为:std_qual={sq_1,sq_2,sq_3,sq_4,sq_5};拟合计算公式为:score(doc)=[ave(std_tech) ave(std_form) ave(std_inte) ave(std_adapt) ave(std_qual)]/5;其中,score(doc)代表程序文档doc获得的评价分数数值,函数ave(std)代表指标std的等级的平均值,score的值越高对应的质量保障越高。[0050](三)有益效果本发明的有益效果体现在以下:(1)通过对程序文档的分类更加明确了软件工程中代码的文件管理内容。把程序代码通过公有云进行存储等管理,有利于加快软件项目的开发、维护,同时促进了开发团队和程序员改进软件系统的质量。[0051](2)通过程序文档的内容自动比对,为程序员和团队维护程序文档带来便利;通过混沌序列实现在程序文档的数字文件指纹处理,能够准确地反映程序文档发生的变化,及时更新版本信息进行升级管理。有利于软件项目的开发和后期维护等工作,加强了程序文档的版本管理功能。[0052](3)通过对技术性、标准化、接口性、兼容性、质量保证的分级评价指标,实现了软件项目管理的有效评价,对于软件公司和企业改进软件系统提供了有益的参考。附图说明[0053]图1是基于公有云和混沌序列的程序文档版本管理的方法的结构图。具体实施方式[0054]下面结合附图和实例对本发明的实施方式进一步详细描述。以下实例用于说明本发明,但不能用来限制发明的范围。[0055]实例1:某web软件项目的程序文档和自动版本内容对比。[0056]某web软件项目的全局程序文档(globaldoc)文件:globaldoc.txt。[0057]某web软件项目的模块程序文档(sectiondoc)文件:sectiondoc_server.txt和sectiondoc_browser.txt;sectiondoc_server.txt实现server端的模块程序,sectiondoc_browser.txt实现浏览器端的模块程序。[0058]globaldoc.txt,sectiondoc_server.txt和sectiondoc_browser.txt存储在该公司的公有云中,授权用户在进入公有云后可以存储,转发,下载,上传程序文件。[0059]通过ac串匹配函数textcomp_acstringmatch(doc1,doc2)进行程序文档自动版本内容对比。doc1设定为公有云中的原文件,doc2为当前上传到公有云的文件。[0060]程序文档doc规范化为:doc={segment_1,segment_2,segment_3,segment_4,segment_5,segment_6,segment_7,segment_8,segment_9,segment_10,segment_11,segment_12}。[0061]当程序文档doc1和doc2具有相同的segment_1时,如果内容发生变化,提示版本升级。[0062]globaldoc.txt包括:文件头(globaldoc_head)和文件数据区(globaldoc_body)。[0063]globaldoc_head包括:segment_1:文件编号信息段,假设文件编号没有变化,设定为gh_1=0。[0064]segment_2:软件项目信息段。假设软件项目信息段包括二项:第一项是项目计划时间为3年;第二项是国内项目;假设第一项项目时间由原来的3年调整为2年半,因此,第一项发生变化,gh_2设定为“10”,其中第一项改变,因此设置为“1”,第二项没有变,因此设置为“0”。[0065]segment_3:团队信息段,假设团队信息没有变化,设定为gh_3=0。[0066]segment_4:项目经理信息段,假设项目经理信息变化,设定为gh_4=1。[0067]segment_5:前一个版本信息段,假设前一个版本信息没有变化,设定为gh_5=0。[0068]segment_6:当前版本信息段,假设当前版本信息没有变化,设定为gh_6=0。[0069]segment_7:修改说明信息段,假设修改说明信息变化,设定为gh_7=1。[0070]全局程序文档globaldoc的数字文件指纹记为globaldoc_index,初始化时设置为全0。[0071]全局程序文档的文件数据区globaldoc_body包括:segment_8:全局变量区,假设全局变量区变化,设定为gb_1=1。[0072]segment_9:函数声明区,假设函数声明区没有变化,设定为gb_2=0。[0073]segment_10:接口区,假设接口区没有变化,设定为gb_3=0。[0074]segment_11:符号区,假设符号区没有变化,设定为gb_4=0。[0075]segment_12:公式区;假设公式区没有变化,设定为gb_5=0。[0076]全局程序文档globaldoc.txt的向量s_gd,s_gd={gh_1,gh_2,gh_3,gh_4,gh_5,gh_6,gh_7,gb_1,gb_2,gb_3,gb_4,gb_5}对应的值为:{0,10,0,1,0,0,1,1,0,0,0,0}。[0077]模块程序文档的向量:s_sd={sh_1,sh_2,sh_3,sh_4,sh_5,sh_6,sh_7,sb_1,sb_2,sb_3,sb_4,sb_5}给定模块程序文档sectiondoc_server.txt的向量s_sd,对应的值为:{0,0,0,1,0,0,1,1,0,0,0,0}。[0078]给定模块程序文档sectiondoc_browser.txt的向量s_sd,对应的值为:{0,0,0,0,0,0,0,0,0,0,0,0}。[0079]实例2:利用混沌序列生成数字文件指纹。[0080]利用logistic混沌映射计算全局程序文档globaldoc.txt的数字文件指纹。[0081]初始化logistic混沌映射,产生x0和c。将向量s_gd的每个元素合并为一个字符串str_sgd。[0082]因此,str_sgd=“0100100110000”。[0083]x0=convertstrnum(str_sgd,num1,0,1),将获得的数值num1赋值给x0。[0084]因此,x0=0.498。[0085]c=convertstrnum(segment_1,num2,3.6,4),其中,segment_1是全局程序文档globaldoc的文件编号信息段,获得的数值num2赋值给c。[0086]假设设定c=3.9。[0087]将logistic混沌映射初始化迭代1000次后,继续迭代logistic混沌映射12次,将每次产生的xn利用convertnumbit(xn,bit,10)转化为globaldoc_index,它的前120位是:{1000011100-0100001110-1001101000-0001010010-0100100101-1001011101-0000100101-0011001101-1000011100-0100001110-1001101000-0001010010}globaldoc_index的最后一个字节checkbyte_g设置为奇偶校验,具体为:checkbyte_g={cbg_1,cbg_2,cbg_3,cbg_4,cbg_5,cbg_6,cbg_7,cbg_8};其中,cbg_1校验gh_1和gh_2,当gh_1和gh_2为奇数时,设置cbg_1为1,当gh_1和gh_2为偶数时,设置cbg_1为0;因此,cbg_1=1。[0088]cbg_2校验gh_3和gh_4,因此,cbg_2=1。[0089]cbg_3校验gh_5和gh_6,因此,cbg_3=0。[0090]cbg_4校验gh_7和gb_1,因此,cbg_4=0。[0091]cbg_5校验gb_2和gb_3,因此,cbg_5=0。[0092]cbg_6校验gb_4和gb_5,因此,cbg_6=0。[0093]cbg_7校验cbg_1、cbg_2和cbg_3,因此,cbg_7=1。[0094]cbg_8校验cbg_4、cbg_5和cbg_6,因此,cbg_8=1。[0095]checkbyte_g={11000011}。[0096]因此,全局程序文档globaldoc.txt的数字文件指纹globaldoc_index={1000011100-0100001110-1001101000-0001010010-0100100101-1001011101-0000100101-0011001101-1000011100-0100001110-1001101000-0001010010-11000011}。[0097]下面利用logistic混沌映射计算模块程序文档sectiondoc_server.txt的数字文件指纹。[0098]初始化logistic混沌映射,产生x0和c。[0099]将模块程序文档sectiondoc_server.txt的向量s_sd的每个元素合并为一个字符串str_ssd。[0100]因此,str_ssd=“000100110000”。[0101]x0=convertstrnum(str_ssd,num3,0,1),将获得的数值num3赋值给x0。[0102]因此,x0=0.13。[0103]c=convertstrnum(tempstr1,num4,3.6,4),其中,tempstr1假设是用户给定的字符串,将获得的数值num4赋值给c。[0104]假设设定c=3.9。[0105]将logistic混沌映射初始化迭代1000次后,继续迭代logistic混沌映射12次,将每次产生的xn利用convertnumbit(xn,bit,10)转化为sectiondoc_index,它的前120位是:{1001101000-0001001101-0100010101-1001101001-0001001000-0100000110-1001010010-0001100010-0101100110-1001001101-0010001010-0110100010}sectiondoc_index的最后一个字节checkbyte_s是奇偶校验,具体为:checkbyte_s={cbs_1,cbs_2,cbs_3,cbs_4,cbs_5,cbs_6,cbs_7,cbs_8};其中,cbs_1校验sh_1和sh_2,因此,cbs_1=0。[0106]cbs_2校验sh_3和sh_4,因此,cbs_2=1。[0107]cbs_3校验sh_5和sh_6,因此,cbs_3=0。[0108]cbs_4校验sh_7和sb_1,因此,cbs_4=0。[0109]cbs_5校验sb_2和sb_3,因此,cbs_5=0。[0110]cbs_6校验sb_4和sb_5,因此,cbs_6=0。[0111]cbs_7校验cbs_1、cbs_2和cbs_3,因此,cbs_7=0。[0112]cbs_8校验cbs_4、cbs_5和cbs_6,因此,cbs_8=1。[0113]checkbyte_s={01000001}。[0114]因此,模块程序文档sectiondoc_server.txt的数字文件指纹sectiondoc_index={1001101000-0001001101-0100010101-1001101001-0001001000-0100000110-1001010010-0001100010-0101100110-1001001101-0010001010-0110100010-01000001}。[0115]对比程序文件globaldoc.txt的向量s_gd和程序文件sectiondoc_server.txt的向量s_sd,s_gd={0100100110000}和s_sd={000100110000}。[0116]两个向量仅仅相差一个1。在logistic混沌映射的控制参数c相同的情况下。从程序文档的数字文件指纹的前120位来看,有约70位不同,占比率近60%。因此,混沌序列能够达到准确鉴别程序文档的数字指纹。[0117]下面我们再假设一种极特殊的情况。[0118]利用logistic混沌映射计算模块程序文档sectiondoc_browser.txt的数字文件指纹。[0119]初始化logistic混沌映射,产生x0和c。将模块程序文档sectiondoc_browser.txt的向量s_sd的每个元素合并为一个字符串str_ssd。因此,str_ssd=“000000000000”。[0120]x0=convertstrnum(str_ssd,num3,0,1),将获得的数值num3赋值给x0。[0121]因此,x0=0。[0122]c=convertstrnum(tempstr2,num4,3.6,4),其中,tempstr2假设是用户给定的字符串,将获得的数值num4赋值给c。[0123]设定c=3.9。[0124]显然logistic混沌映射在“0”不动点迭代。将每次产生的xn利用convertnumbit(xn,bit,10)转化为sectiondoc_index,它的前120位是:{0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000}sectiondoc_index的最后一个字节checkbyte_s是奇偶校验,具体为:checkbyte_s={cbs_1,cbs_2,cbs_3,cbs_4,cbs_5,cbs_6,cbs_7,cbs_8};其中,cbs_1校验sh_1和sh_2,因此,cbs_1=0。[0125]cbs_2校验sh_3和sh_4,因此,cbs_2=0。[0126]cbs_3校验sh_5和sh_6,因此,cbs_3=0。[0127]cbs_4校验sh_7和sb_1,因此,cbs_4=0。[0128]cbs_5校验sb_2和sb_3,因此,cbs_5=0。[0129]cbs_6校验sb_4和sb_5,因此,cbs_6=0。[0130]cbs_7校验cbs_1、cbs_2和cbs_3,因此,cbs_7=1。[0131]cbs_8校验cbs_4、cbs_5和cbs_6,因此,cbs_8=1。[0132]checkbyte_s={00000011}。[0133]因此,模块程序文档sectiondoc_browser.txt的数字文件指纹sectiondoc_index={0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-0000000000-00000011}。[0134]模块程序文档sectiondoc_browser.txt的数字文件指纹初始化时均为0。但是,经过校验处理后的数据校验位cbs_7和cbs_8比特位不为0。这样的处理能够有效地校验文件的正确性,同时可以鉴别文件的不同状态。[0135]综上所述,这样的设计有利于程序员和项目组对程序文档进行版本的有效管理。[0136]实例3:软件系统的程序文档版本的有效评价。[0137]技术性、标准化、接口性、兼容性、质量保证的等级能够有效地评价程序文档的版本。每个等级设定分值为:1级对应分值1,2级对应分值2,以此类推。[0138]技术性的参数std_tech等级为:std_tech={st_1,st_2,st_3,st_4,st_5}。[0139]标准化的参数std_form等级为:std_form={sf_1,sf_2,sf_3,sf_4,sf_5}。[0140]接口性的参数std_inte等级为:std_inte={si_1,si_2,si_3,si_4,si_5}。[0141]兼容性的参数std_adapt等级为:std_adapt={sa_1,sa_2,sa_3,sa_4,sa_5}。[0142]质量保证的参数std_qual等级为:std_qual={sq_1,sq_2,sq_3,sq_4,sq_5}。[0143]拟合计算公式为:score(doc)=[ave(std_tech) ave(std_form) ave(std_inte) ave(std_adapt) ave(std_qual)]/5;其中,score(doc)代表程序文档doc的获得的评价分数数值,函数ave(std)代表指标std的等级的平均值,score的值越高对应的质量保障越高。[0144]假设给定全局程序文档globaldoc.txt的分级指标为:{st_1,sf_1,si_1,sa_1,sq_1}假设模块程序文档sectiondoc_server.txt的分级指标为:{st_2,sf_2,si_2,sa_2,sq_2}假设模块程序文档sectiondoc_browser.txt的分级指标为:{st_1,sf_3,si_4,sa_5,sq_1}score(doc)=[ave(std_tech) ave(std_form) ave(std_inte) ave(std_adapt) ave(std_qual)]/5。[0145]score(doc)=1.93。[0146]通过cmm的参考等级,该软件项目的程序文档已经接近可重复级(repeatable)级水平,因此,可以有效地评价软件公司和企业的质量保证水平。[0147]最后应说明的是:以上实例仅用以说明本发明的技术方法,而非对其限制;尽管参照前述实例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实例技术方案的精神和范围。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献