计算机软件基础范文
时间:2023-05-06 18:23:25
导语:如何才能写好一篇计算机软件基础,这就需要搜集整理更多的资料和文献,欢迎阅读由公文云整理的十篇范文,供你借鉴。

篇1
关键词:关键词:计算机软件;数据结构;算法
中图分类号:TP311 文献标识码:A 文章编号:
1.计算机软件基础数据结构之算法概述
1.1算法的两要素
算法有两部分:其中一部分是对信息的操作处理,一共有四种常见的处理方式:分别为逻辑符号“与”、“或”、“非”;数学计算;信息的对比:大,小,相等和不等;信息的传递:传入,传出,定值等;另一部分是对信息的处理方式的操作结构,它引导各指令的有序进行,一般,采用流程图法来对其进行描述。
1.2算法的特征
算法是有限指令的整体,这些指令明确了处理问题的步骤。针对相应问题,该整体能够对任何定值按照预先设定的指令逐步进行运算处理,并且通过一定数量的运算后传送出计算机最后得出的结果,从整体看,其必须包含有限数量的指令,并且每条指令必须意思明确,不能有多层意思;其次,这些指令必须是计算机能力以内的,若超出其能力范围,该指令就不能够执行,对后面也会有影响;它自身对被处理对象没有要求,被处理对象的数量不会对这些指令产生影响,但是 ,一定要有一个或多个传递末端,否则,这个算法就什么意义业也有了[1]。
1.3算法的表示
从某种程度来讲,大部分人可以采用各种文字和符号来编译算法,目前,现行的主要有这几种:一般性文字,C语言、程序图、N-S图、PAD图等。其中一般性文字和C语言是具体详细的描述算法的,而其他的则是描述算法大致内容的作图形式,它可以直观的表达出设计者的思路想法,更便于理解学习,
1.4常用算法
1.4.1枚举法
枚举法的主要内容是通过信息的的某些特点来估计运行结果的大概区域,接着通过一些手段来逐一检验该区域中的每一个结果,一直验证到所有的符合才停止,并且,如果在这些被验证过的对象中有能够满足该算法的所有要求的,那么这个对象就是计算机最终会传递的结果,如果在验证过程中没有一个达到要求的,那么就表明该算法无解。
通过其运行原理,可以发现其特点有:工作原理简答明了,容易接受。但是有一个显著缺点就是运行速度慢,工作量大。它一般只适用于一些无法用其他方法解决的问题。在实际中,大部分人会采用它解决“某个问题是否有解”、“组合情况 ”等相似问题,设计者在设计算法时用循环来构造枚举法的整体。例如本国伟大的数学家张丘建在《算经》中的“千币千鸭问题”就可以用枚举法来解决。
其次,笔者还总结了采用枚举法时可以遵循的大致步骤:
第一步:通过问题,预估问题大致范围;
第二步:选出枚举法的具体形式——一般枚举法的具体形式有顺序列举,逐一列 举,按类型列举等方法;
第三步:逐个代入并验证;
第四步:确定所要的答案,得出结果,或者该算法无解;
1.4.2迭代法
该方法所求结果不是精确的,是一种粗略求法,生活中很多方面,多要采用这种方法来处理问题,它有一个特征就是:将一个很麻烦的问题等价转变成为比较简单的迭代算式,并且重复循环这一步骤,最终由繁化简,得出问题的答案,这种算法一般只适用于非数值类的问题。
1.4.3递推和递归法
这两种方法在算法指令的编写中占据了主导地位,而且都运用了一些特殊的公式的性质逐项推导出来的,例如,运算出级数的结果,条件是,一般给出该式的规律,从而求出该数列的通项。
其中,递推法也就是通过特殊的公式,从简单的入手,把前面的出的结果逐个的带入到后项中进行求解,该法的重要之处是特殊公式(满足一定的规律),例如:计算出某个数的阶乘,从表面就可以看出该特殊公式是G(m)=m G(m
-1),但是,有时候有些问题的特殊是不好得到[2]。
2.计算机软件基础数据结构之算法的设计要求
语言,是一门艺术。不论是交流,沟通,还是成为记忆的另一种形式,都在生活中起到了主导作用。一句话可以创造奇迹,同时也可以毁灭奇迹。算法,就像语言一样,它是人类和计算机沟通的语言,通过它,人们可以和计算机交流,让它按照预先设计的指令执行任务,但是,所给出的指令有一定的要求——就像人们之间交流的行为准则一样。
2.1正确性
设计者必须按照算法的规则来编译指令,这样才能正确的和计算交流,让它正确的执行任务,所以,其正确性中的最重要的一点就是不能出现语法错误(这就好比所学习的英语和其他国家的语言一样),这样,先不谈论结果的正确性,至少计算机可以得出满足规定的的答案。
2.2可读性
算法的可读特性,它的意思是算法的总体思路易于理解,试想,一个混乱的算法,头脑在聪明的人也不能一下子就明白算法的原理,更何况是让电脑得出所要的答案呢。
2.3稳定性
算法的稳定性,就好比机械设备一样,如果它的工作状态不够稳定,那么它就很容易产生出奇怪难懂的问题,算法也是如此,如果它自身不够稳定,那么计算机在运行时,就会很容易产生处错误,最频繁的错误就是出现乱码,虽然不是次次都会这样,但是给人的总体效果就像是算法存在问题,因此,稳定性对于算法来讲,也相当重要,好的算法都有这一特点。
2.4高效低耗性能
众所周知,计算机的内部器件的好坏决定了其自身的性能的好坏,算法也是如此,好的算法都能以最低的消耗,以最短的时间得出答案,这些都是有计算机内部工作原理决定的:最主要的因素就是运算速度和存储大小的联系。这些,就是算法主要的一些特点,也是计算机数据结构的基础[3]。
3.计算机软件基础数据结构之算法的复杂度分析
算法的复杂度决定了该算法在执行过程中并最终得出结果所消耗的总时间,设计者一般也是由算法的复杂度来判断某一类算法的办事效率的,因为消耗时间直接和算法所需要的内存大小直接挂钩。而评判者的主要判断依据就是运行时长和内存消耗。
3.1运行时长
一般,设计者不是根据所计算的算法运行的总时间来衡量时长的大小的,原因是算法运行的载体仍旧是计算机,而计算机的运行速度有和蛮多因素相关,比如:环境温度,计算机的外部设备 和内部设备等。所以,一样的算法在不同的运行载体上所产生的效果也不是完全一样的。同时,这一数据的大小并不是用来衡量某一算法效率的,而是用来判定算法在时间上的损耗,进而作为评判算法的好坏的标准之一,而且所占的比重是比较大的。
3.2内存消耗
内存消耗指的是计算机在运行某一算法时暂时需要用到空间大小的尺度,它也和上文中提到的z函数有关。它的主要内容有传入传出信息所占的内存以及算法运行过程中暂时性占用的内存大小。其中,传入传出信息所占的内存和需要解决的问题相关,并由它来决定其大小,一般不会随着算法的变化而变化;而运行过程中暂时性占用的内存大小恰恰由算法来决定,不同的算法所需要的内存也会不一样,因此,一般较好的算法方式,所需要的内存大小都比较少,这也是为什么内存消耗会成为判定一算法好与坏的又一重要标准之一[4]。
4.结语
总而言之,计算机软件基础数据结构之算法 是学习者了解数据结构的基础,它所包含的内容,可以帮助学习者了解计算机内部的运行情况,便于学习者更好地掌握计算机起到了一定的作用,同时,设计者可以学以自用,解决一些在数学,生活中遇到的不易解决的麻烦。
参考文献:
[1]杨飞宇.计算机应用基础项目教程[J].社会科学,2009(2).
[2]肖明辉. 浅谈计算机基础数据结构[J].新课程,2010(12).
篇2
(荆楚理工学院,湖北 荆门 448002)
摘要:随着现代社会经济的快速发展,以及计算机网络信息技术的推广普及.在现代社会计算机软件应用范围极大扩展,几乎囊括了社会经济的所有领域,这种情况下计算机软件的开发工作也逐渐成为一个涉及广泛的庞大产业.在计算机软件的设计过程中因为计算机软件个体的特殊性原因,设计工作的效率比较难提高、设计成本也比较难以控制.当前解决这一问题的主要方式是计算机软件开发的基础架构理念水平提升.因此本文将从基础架构原理的角度出发,结合现代计算机软件开发的实际情况,对计算机软件开发的基础架构原理进行简要分析.
关键词 :计算机;软件开发;基础架构原理
中图分类号:TP31文献标识码:A文章编号:1673-260X(2015)05-0025-02
在社会经济发展的强力推动下,现代计算机软件技术已经渗透到社会生活的各个领域,对社会经济活动具有举足轻重的影响.由于计算机软件技术产生的较晚,我国与其他国家的计算机软件设计水平差距不大,始终保持着国际均势.当前要想进一步提高计算机软件的设计水平,已经不能单纯依靠设计技术的进步,而应该从在算机软件设计的框架原理上进行创新,只有优秀的基础架构才能保证计算机软件设计的高效.
1 计算机软件设计概述
1.1 计算机软件设计的概念
在计算机产生的早期,受计算机性能和应用范围的限制,并没有计算机软件这一概念.但是在晶体管和大规模集成电路应用以后,计算机的性能有了极大的提升.同时其适用的领域也有了极大的拓展,在这种情况下为了更加科学、合理的应用计算机的能力,就需要计算机软件的介入.由此产生了计算机的操作系统,也就是计算机最早的系统软件.由于计算机软件的存在能够极大的提升计算机的应用性能,所以计算机在不同领域应用设计人员就会根据这一领域的特点设计了不同的计算机软件系统.如在机械制造领域就有CAD和CAM等软件,在设计领域有PhotoShop等软件,随着计算机应用范围的扩展和应用数量的增加,在一些特殊领域需要应用到之前没有的软件,就需要计算机软件的设计主体进行计算机软件的开发工作.
在具体的计算机软件开发工作中软件开发共分为两种,一种软件开发形式是开发主体先进行开发,在开发完成以后在寻找市场.一种软件开发针对目前市场上的应用需求,进行针对性的应用软件开发.
1.2 计算机软件开发的特点
计算机软件开发活动在持续了多年以后,已经逐渐形成了独立的学科体系,当前国内很多高校等开设了计算机软件设计这一课程.计算机软件在具体的开发实践中表现出了两个主要特点:持续性和针对性.计算机软件开发活动持续了很多年,市面上的计算机软件数量极多,但是因为经济发展和技术进步,还是不断有新的计算机软件需求产生,不断有新的计算机软件开发出来.同时因为计算机软件本身是在特定逻辑关系上形成的描述语句,所以根本不会有完美的软件产生,每一个计算机软件在诞生以后都需要不断的修补和完善,所以计算机软件开发最大的特点就是持续性.
受现代社会经济发展形势的影响,当前社会经济发展体系逐渐完善,新生的经济形式更多的向微观经济领域发展,企业主体对计算机软件的需求愈发个性化.同时随着计算机软件设计企业数量的增多,计算机软件设计主体为了迎合用户的需求,更多的推出了针对性的计算机软件设计理念,针对性成为新时期计算机软件设计的新特征.
1.3 计算机软件开发的发展
计算机诞生后不久,在晶体管和大规模集成电路基础上形成的操作系统逐渐成型.而计算机之所以能够执行特定的任务是因为CPU将线路的通与不通和二进制数联系在一起,这样操作人员就可以借助二进制数对计算机命令.但是因为二进制数本身并不符合人们本身的使用习惯而且较为复杂,所以设计人员在二进制数的基础上开发了计算机编程的高级语言.从某种程度上来说计算机软件开发受到高级语言的影响极大,在现代社会借助高级编程语言VF和VB即使是非专业软件开发人员也能够完成简单的计算机软件开发任务.细数计算机软件开发的发展过程就会发现,计算机软件的开发活动正向着简单化的方向发展.同时随着社会经济的发展和社会化大生产模式的普及,社会分工越来越细,能够在不同领域通用的计算机软件越来越少,计算机软件开发工作对开发人员的综合素质要求提升[1].
2 计算机软件开发中基础架构原理分析
2.1 基础架构的需求分析
在计算机软件的开发活动中,软件本身的需求分析是最为重要的一个环节,如前文所述现代社会经济主体对计算机软件系统的需求表现出高度的个性化,企业经营项目的不同、运营方式的不同、管理方式的不同都会导致用户对计算机软件设计的不同需求.所以计算机软件设计的需求分析是软件开发的第一步也是最重要的一步.如果不能透彻的理解用户的计算机软件需求,就可能会导致计算机软件设计的偏差,甚至是失败.
当前我国的计算机软件开发主体在运营过程中对需求分析环节的重视程度还存在不足.具体表现为我国的计算机软件设计企业在运营模式上采取经营主体与设计主体分开的经营方式,与客户就软件设计需求进行沟通的往往是计算机设计企业的经营人员,而从事计算机软件具体开发的人员往往是设计人员.用户的需求经过经营人员的转述后往往会导致设计人员对用户需求的误解[2].
2.2 基础架构的编写
在具体的需求分析工作完成以后,就需要设计主体根据用户的设计需求进行软件的编写工作,当前在软件编写工作中应用最多的编程语言是C语言,这种编程语言的主要特点是结构性突出、基础架构优秀,能够为后继的编写工作提供更多的便利.在软件的实际编写过程中为了提高软件的编写速度,设计主体往往会采用多个工作面同时工作的方式进行编写.具体而言就是根据计算机软件的结构特性将软件分为几个关键模块,每个模块形成一个工作面由一个编程人员进行编写,在编写工作完成之后再设置一个主函数连接各个模块,从软件应用的整体来看,使用者需要应用软件的某个功能主函数就能够调用某个模块满足用户的需求[3].在保证计算机软件开发质量的基础上,最大限度的提升了计算机软件编程的效率.
2.3 基础架构的测试与维护
从计算机软件设计主体的角度来看,设计完成的计算机软件是不能直接应用的,因为工程设计软件与目标设计相比还存在着较大的差距,盲目的应用会危害到计算机软件的安全,也会对应用企业主体造成损失.设计完成的计算机软件只有在完成测试工作之后才能投入实用.在计算机软件测试领域传统的测试方法是数值输入测试法,以预先计算好结果的数据输入到软件系统中,如果输出的结果是正确的那么就可以断定计算机软件没有问题.但是这种测试方法本身存在着较大的局限性,因为输出结果的正确性是不能保证计算机软件系统内部数据处理过程的正确性的.也就是说计算机软件显示正确结果可能是一个偶然性事件,并不能够完全证明软件本身的合理性.所以在这一疑问的推动下设计人员开发了专门针对计算机软件特点设置的测试软件,应用测试软件能够保证对计算机软件系统结果和过程的全方位检测[4].
3 计算机软件开发中的基础架构选择
3.1 基础架构的重要性
计算机的软件设计是利用特定的逻辑关系对软件内容的定义,具体的软件设计工作就是对软件内容的定义,而特定的逻辑关系就是计算机软件开发的基础架构.计算机软件设计的基础架构不仅能够决定计算机软件的运行方式和流程,而且还会对软件的未来维护和扩展产生影响,例如计算机软件的基础架构如果是封闭式的就不具备基本的扩展能力.
当前计算机软件设计领域应用最广泛的基础架构就是表示层、逻辑层和数据层三层结构组成的B/S基础架构,在这一基础架构中软件的表示层、逻辑层和数据层,分别对应软件系统的人机交互界面、逻辑关系和计算机语言区.在软件的设计活动中,设计主体可以以此为节点将整个软件拆分为几个部分,进行分别设计.同时在软件系统扩展和维护中,也可以对任意一个层次的内容进行修改而不用担心修改会对系统的其他部分造成影响,由此可见一个优秀的计算机软件设计基础架构能够极大的提升计算机软件的设计效率和应用效率[5].
所以在具体的软件设计活动中,设计主体应该根据用户主体的实际需求和软件的功能实际,选择有针对性的、高效的计算机软件基础架构,以提升计算机软件的设计质量和效率.
3.2 基础架构的选择
现代计算机软件设计已经成为一个系统性的工程,软件设计的其他环节已经形成了一定的模式,所以计算机软件设计活动中最为重要的就是基础架构的设计.只有选择一个优秀的基础架构才能保证计算机软件后继的程序编写、维护和拓展的高效和便利,因此在实际的计算机软件开发活动中,必须根据软件的目标功能,对现有的基础框架进行分析和甄选,最后选择一个最为适合的基础架构.当前计算机软件设计的主要编程语言C语言已经应用较长时间,积淀了大量的优秀计算机软件架构,基本不需要基础架构的重新开发,设计主体只要根据软件的目标功能和结构选择一个合适的架构就可以[6].
4 结论
计算机软件开发随着计算机软件应用范围的扩大而备受关注,计算机软件开发的过程中基础架构原理是影响软件开发效果的直接因素,因此对计算机软件开发的基础架构原理的研究具有鲜明的现实意义.本文从计算机软件设计概述、计算机软件开发中基础架构原理分析、计算机软件开发中的基础架构选择三个方面对这一问题进行了简要分析,认为在计算机软件开发活动中基础架构的影响是基础性的,计算机软件开发的基础架构选择应该秉承符合实际、功能优先的原则来进行.
参考文献:
〔1〕向健极.计算机软件开发的基础架构原理分析[J].武汉冶金管理干部学院学报,2014(02):70-72.
〔2〕潘斌.计算机软件开发的基础架构原理分析[J].电子制作,2014(19):223-224.
〔3〕杜彦斌.面向服务软件体系架构原理与范例研究[D].首都经济贸易大学,2005.
〔4〕王运嘉.计算机软件整体保护模式之探讨[D].中国政法大学,2014.
篇3
一、系统计划:它包括系统定义及分析、可行性研究和实施计划报告的编写。1、系统定义是制定软件计划的第一步,它应决定所开发软件的总目标,其任务包括首先是确定所开发软件的总体要求和适用范围,描述所开发软件与外界接口的关系;其次是确定所需硬件和软件的支持,对开发的进度和成本作初步估计;第三是分析系统的可行性是否确定所开发软件与原软件的兼容性或其它关系;最后是确定所开发软件的性能与其内部复杂性之间的折中关系。2、可行性研究它包括技术可行性、经济可行性及社会可行性方面。技术可行性是研究应弄清现有技术条件能否顺利完成开发工作,对参加开发工作的人员应有哪些技术方面的要求。硬件配置能否满足开发的需要,估计的进度是否恰当以及对用户的技术方面的要求是否合理等等;经济可行性研究的目的是希望以最小的开发成本取得最佳的经济效益的软件产品;社会可行性研究则是指所开发的软件项目是否涉及到版权纠纷等法律问题,这样的软件产品投入运行后,对生产、管理或经营体制带来有什么社会影响。3、实施计划报告的编写是开发进度、人员投入计划、人员的组织及其资源的利用作个计划报告提纲。
二、系统需求分析:需求分析的任务在于完全地弄清用户对软件系统的确切需求,它具有三大特点:准确性和一致性;清晰性和没有二义性;直观、易读和易于修改。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据等等,为了清楚地知道这些需求,你经常要和客户、项目经理交流等。需求分析的步骤:1、通过对现实环境的调查研究,获得当前系统的具体模型;2、去掉具体模型中的非本质因素,抽象于当前系统的逻辑模型;3、分析当前系统与目标的差别,建立目标系统的逻辑模型;4、对目标系统进行完善和补充,并写出完整的需求说明;5、对需求说明进行复审,直到确认文档齐全,并且符合用户的全部需求为止。
三、系统设计:主要分成两步即概要设计(总体设计或结构设计)和详细设计。概要设计阶段应着重解决实现需求的程序模块设计问题,如何把被开发软件系统划分成若干模块,并决定模块的接口,模块间的相互关系以及模块之间传递的信息。详细设计则是要决定每个模块内部的具体算法。经概要设计和详细设计完成后,需要进行必要的阶段评审,其目的在于使设计发生问题能够及时发现并得到及时的解决。实际上软件设计的主要任务是就是将软件分解成模块,该模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。
四、系统编码:系统编码即编程序是软件开发的最终目标,是产生能在计算机执行的程序,其目的是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书定的源程序。实质上,软件=程序+文档。编码的目的是产生程序,其余阶段是产生文档。软件编码是指把软件设计转换成计算机可接受的程序,写成以某一程序设计语言表示的“源程序清单”。能充分了解软件开发语言、工具特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
五、系统测试:包括测试的方法与技术和测试步骤。测试在软件生命期中占重要地位,不仅是因为测试阶段占的时间、花费的人力和成本占软件开发的比重很大,而且它直接影响着软件的质量。程序中许多细微的地方要求绝对正确无误,不能半点马虎。软件开发工作在测试以前已经历了制定计划、需求分析、设计和编码等许多阶段,每一个人的思维不可能绝对周密,而不可能不出现差错,更不用说,在大中型软件开发项目中,系统内各部分之间、各种数据之间、各种人员之间存在着复杂的关系,因而目前可采用的开发方法都不能完全避免发生差错。1、测试的方法与技术主要是机器测试与人工测试和白盒测试与黑盒测试。机器测试是在设定的测试数据上执行被测程序的过程,又称为动态测试。人工测试并不是可有可无的,为了节约计算机机时采取的权宜措施。它是机器测试的准备,也是程序测试中不可缺少的环节。而白盒法和黑盒法主要依据是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部、外部借口、资源管理、集成化以及系统错误。2、测试步骤。分单元测试(模块测试)、综合测试、确认测试和系统测试四部分组成。它是整个计算机系统(包括软件与硬件)的测试,可与系统的安装和验收结合进行。测试的目的是让你知道,什么时候算是完成了,这样可以及时知道你是否真的完成。
测试是软件开发时期最繁重的任务,也是保证软件可靠性最主要的手段,测试的目的是发现程序的错误,而不是证明程序没有错误,软件的测试通常分散在3个阶段进行。编码阶段完成单元测试,包括静态分析与动态测试。
篇4
关键词:嵌入式;计算机软件;测试;关键技术
前言
随着我国的工业不断地进步,科学技术的不断发展,嵌入式计算机技术也得到了很大程度的提升。我们身边普通的计算机并不是嵌入式计算机,嵌入式计算机指的是专门针对某一个项目或者是某一个行业进行开发的专业计算机。嵌入式计算机不仅仅能够实现对需求开发的功能,有效地提升工作的效率。嵌入式软件是嵌入式计算机中安装的软件,一般情况下,嵌入式软件都需要根据不同的工作需要,完成相应的功能,这就要求嵌入式软件要具备一定的稳定性,对嵌入式计算机软件进行测试,能够很好地保证嵌入式软件的正常工作。
1什么是嵌入式计算机
嵌入式计算机指的是针对某一种技术,或者是某一种网络、某一种功能等专门开发的计算机系统,利用计算机技术,加入嵌入式系统,能够实现对计算机硬件和软件功能的增多,能够更加适合实际运用的需要。嵌入式计算机针对某一种功能的需要进行开发,对开发的成本、功能的可靠性以及计算机的大小等因素,都有十分严格的要求。通过对计算机处理器、硬件、系统、应用等进行嵌入式技术的操作,能够更加有效地保证计算机技术的实现。嵌入式计算机大多被应用在工业生产中,能够提升工作效率,保证工作的质量[1]。
2什么是嵌入式计算机软件
嵌入式计算机软件指的是在嵌入式计算机中使用的软件,能够进行独立功能的操作,嵌入式计算机软件包括嵌入式微处理器、传感器、控制器、定时器、储存器等等。在嵌入式计算机中使用的电子芯片或是电子器件,将嵌入式计算机软件安装到嵌入式计算机中,能够有效地实现常规计算机不具备的功能,比如:实时监控功能、对设备的管理功能、数据处理功能、进行移动计算等等,真正地实现了现代化自动化的电子处理,是实现现阶段自动化与智能化的社会生产力的重要途径,嵌入式计算机软件就是自动化的核心部分[2]。我们可以将嵌入式计算机软件分为:简单嵌入式系统和复杂嵌入式系统两种。简单的嵌入式系统只能够完成一项功能,比较典型的简单嵌入式系统就是单片机。单片机通过ROM技术就能够实现对系统的使用,能够达到对程序控制的目的。复杂嵌入式系统的功能与普通的计算机系统功能并没有什么过大的区别,只不过在复杂的嵌入式系统中,安装了一些微型的嵌入式操作系统,以及嵌入式应用软件在计算机中,能够使计算机的功能得到相应的完善,这就是嵌入式计算机软件的作用[3]。
3什么是嵌入式计算机软件的测试
嵌入式计算机软件相比普通的计算机软件来说,更具有专业性,嵌入式计算机软件只能够在某一个制定的平台或者系统中运行。但是嵌入式计算机软件的开发环境与运行的环境还存在很大的差异,不能够使用同一网络环境。嵌入式计算机软件需要使用交叉开发的形式,在进行开发的计算机中,安装并运行开发工具,开始对软件进行编译,再将编译完成的软件通过下载的方式,将软件发送到目标计算机中,当开发计算机与目标计算机都有了嵌入式软件,就能够建立通讯连接,并且能够对软件下达命令、下载数据等等。两台计算机的操作系统不同,计算机的处理器也有着一定的差异,这样的方式会增加嵌入式软件开发过程的步骤,增加了开发步骤的复杂性[4]。我们将对嵌入式软件进行开发的计算机称为宿主机,对软件进行接收并运行的称为目标机。宿主机对使用开发工具,利用宿主机的操作系统对计算机软件进行开发,通过通信连接将计算机软件发送到目标集中,尽管这一系列的操作看似很简单,但是却需要强大的系统和硬件的支持。在这种形式下进行运行的嵌入式计算机软件开发的活动,一般情况下,宿主机都是我们平时工作生活中使用的通用计算机,也可以是开发微机或者是软件工作站等等。目标机与宿主机不同,目标机能够承载宿主机开发的嵌入式计算机软件的运行,将嵌入式计算机软件安装在目标机中,就能够实现嵌入式软件的功能[5]。
4对嵌入式软件测试关键技术进行研究
4.1对宿主机进行测试的技术研究
宿主机指的是对嵌入式软件进行开发的计算机,对宿主机进行测试的方式有两种,即静态测试与动态测试两种,这两种方式使用的是代码逻辑的方式对宿主机进行测试。4.1.1静态测试技术很多计算机软件开发的专家,在对计算机软件进行检测的时候,通常使用的都是人工检查的方式,由设计人员组成一个小组,小组的成员之间互相交流对软件开发使用了哪些程序、使用的是什么算法进行的计算,并交代设计数据与软件的模块之间有什么样的关系等。这样的方式虽然能够在一定程度上找出软件中是否存在相关的问题。但是,由于现阶段嵌入式计算机软件的结构越来越复杂,设计的步骤越来越繁琐,软件设计的规模也在逐渐扩大,这就要求在一款软件的设计过程中,可能会有很多的软件设计师、工程师等一起参与到软件的开发工作当中,每个工作人员的分工也大有不同,再使用从前的方式对软件进行检查,就会加重检查工作的负担[6]。这就要求我们,要根据现阶段的计算机软件开发的实际情况,找出最合适现阶段软件开发的检测技术,对原始的计算机软件的检测工作进行优化升级,能够使计算机软件的检查工作更加简便。在检查的过程中,加入适当的检测技术,先对整个嵌入式计算机软件的开发软件系统框图进行整理,并且对其设置自动连接的相关量,软件的源代码编程能够通过自动化技术进行查找。这样的方式能够使软件审查工作的工作效率有很大的提升,能够使验证工作的结果更加准确有效。我们可以通过静态测试的方式,得到软件中相关信息[7]。(1)软件的源代码程序绘制过程的逻辑图,以及对软件进行控制的工作流程。(2)软件系统完整的逻辑框图,系统内部关系调节的网络图。(3)软件程序运行的路径分析图。(4)软件生成的不同部分的显示图。(5)软件不同部分显示图的位置信息,操作的频率等信息。这些信息都能够在静态测试中得到实现,首先要使用静态测试的系统对软件的操作逻辑和控制系统进行分析,能够有效地将软件分析的更加精确,在进行软件测试的过程中,能够使测试的结果更加准确,并且能够将测试结果更加精准的表现出来,检测出软件系统中是否存在相关的问题,并以此对软件的系统进行改善。4.1.2动态测试技术对宿主机的动态测试主要指的是对软件的代码进行测试,能够有效地检测出代码的执行能力,并且分析软件代码的覆盖率,能够有效地检测出软件的功能。能够有效地了解到软件的性能,还能够通过分析更加了解软件中代码的执行情况,这样的检测方式能够促进对软件系统的改进,推进了软件系统的发展,可以根据检测的结果,对软件的功能进行优化和完善[8]。动态测试技术还能够对软件设置的完成程度进行测试,能够对其中已经开发完毕的数据进行检测,检查其中是否存在缺少的数据,这样的方式能够为软件的开发工作提供重要的依据。动态测试技术能够将软件中的每个函数的情况,以及对内存的分配情况等进行检测,能够将软件中各种元素的分配情况进行显示,并且能够同时对相对应的数据、代码、函数等进行显示。
4.2对仿真机进行测试的技术研究
仿真机作为宿主机与目标机之间重要的环节之一,通过仿真机的使用,能够有效地完善计算机软件测试的功能以及软件自身的性能,比对宿主机的测试更加直观、更加真实,并且能够对软件中主要的技术进行仿真测试,使测试的结果更具有说服力。其测试的结果既能够作用于宿主机,还能够作用于目标机。4.2.1仿真机测试数据获取技术现阶段,针对仿真机的数据监测,一直都是技术上很难实现的问题之一,很多对嵌入式软件的检测都需要在测试的过程中先提供软件设计的源代码,这样的方式需要使用的数据量比较大,这就要求我们要针对这类数据的准确性进行技术的提升,才能够保证检测数据的精准性。仿真机监测技术能够从一定程度上保证数据信息的完整性,在对数据进行完全的缓存后,再使用测试工具进行修改,能够从很大程度上保证数据的正常输入,在测试结束之后,还能够对已经进行缓存的数据进行读取,并将数据整理保存到计算机中。但是,需要注意的是,使用这种方式进行测试,还要保证数据缓存的大小不会超过测试的容量,测试才能够顺利的运行[9]。4.2.2仿真机仿真测试技术对嵌入式计算机软件进行仿真测试,能够在测试的过程中,对数据进行集中地管理和处理。仿真测试需要一定的技术支持,能够将数据进行仿真模拟,在模拟的过程中,能够看到技术的使用过程,再按照每款软件不同的性质,分类仿真,使测试的结果更加真实可靠。还要保证在对数据的检测过程中,传输信号是能够稳定运行的,才能够保证仿真测试的数据是实时的。
4.3对目标机进行测试的技术
目标机相对于其他部分来说,在测试的过程中,更需要注意目标机的综合能力,还要能够测试软件自身的交互能力,并且测试软件是否安全可靠,目标机测试的结果能够更加真实地体现计算机软件的性能[10]。4.3.1故障注入技术嵌入式计算机软件在计算机中运行的状态,可以通过人为的方式进行设置。但是,这就要求目标机的部件能够具备一定的功能,能够按照设置的时间、设置的运行方式等进行运作。故障注入技术指的是在目标机中,通过对某一部分的测试,能够更加有效地检验目标机中的性能,比如:鲁棒性测试、边界测试等等。使软件在运行时的状态能够表现的更加明显。4.3.2内存分析技术嵌入式计算机的系统,一般情况下内存都会比较小。使用内存分析技术,能够有效地保证在分析的过程中,找出计算机内存存在的问题。在问题的分析过程中,能够防止内存中的某些内存会产生分配错误的问题,很多的计算机软件故障都是因为内存分配的错误造成的。这就要求我们要通过内存分析的技术,来对内存进行判定。一般情况下,我们都会选择硬件的方式进行分析,但是硬件分析的方式需要耗费的资金比较多,而且分析工具具有一定的环境限制,但是软件分析会对计算机的代码产生一定的影响,并且会影响内存的运行。这就要求我们在进行内存分析的过程中,要能够按照不同的情况对测试的方式进行选择[11]。4.3.3程序性能分析技术在嵌入式计算机运行的过程中,还有一个十分重要的因素就是程序的性能。一般情况下,嵌入式计算机对程序的性能都有一定的要求,能够在已经设置的时间内,对某一数据进行中断处理或者是生成处理,这就要求我们要在测试的过程中,要能够根据实际情况决定先对那一部分的代码进行优化,因为嵌入式计算机的优化程序的时间是很宝贵的,要尽可能地避免对一些没有必要的程序的优化工作。使用程序性能分析技术,能够将计算机内的数据进行整理,并按照消耗的时间,消耗的类型,消耗的历时等进行分析。按照这些数据,能够对计算机中的数据进行判断,决定先对哪一部分的程序进行优化,才能够保证对数据检测的工作效率,保证对程序的优化是有效的。使用程序性能分析的工具,不仅仅能够显示计算机中每一部分的优化需要多少时间,还能够按照需要优化的程度进行排序,引导工作人员对系统程序进行优化分析[12]。在对程序进行测试的过程中,可以先对计算机软件中的代码进行分析,能够找出已经被使用的代码,以及计算机接口的工作效率等等。可以在测试的过程中使用插桩的方式进行测试,分析完毕后在可执行的代码当中适当地融入嵌入式软件,并将二者进行综合测试,得到的结果就能够明确地看出,其中的代码哪些已经执行,哪些被遗漏,或者是哪些数据的信息覆盖还不够全面。需要注意的是,使用这类分析工具进行分析,很可能会影响到计算机软件代码的运行,导致软件运行出现故障问题。
5结束语
嵌入式计算机与我们的生活之间的关系十分紧密,能够产生巨大的影响,我们身边很多部分都使用了嵌入式计算机进行功能的完成和实现,比如:飞机的飞行控制器,或者是我们家中很多的家用电器,冰箱、洗衣机等等,都在一定程度上使用了嵌入式软件技术。随着科学技术的进步越来越快,嵌入式技术也越来越繁琐。这就要求我们要在不断地使用中对嵌入式技术进行完善,对嵌入式技术进行优化升级,能够从一定程度上保证嵌入式技术的发展,对软件进行测试,能够大大地提升嵌入式计算机软件的稳定性。
参考文献
[1]苗中华,陆鸣超,胡晓东,等.基于虚拟仪器技术的采棉机智能监控系统开发与应用[J].农业工程学报,2014,23:35-42.
[2]沈昌祥,张焕国,王怀民,等.可信计算的研究与发展[J].中国科学:信息科学,2010,2:139-166.
[3]王璞,张臻鉴,王玉玺,等.面向实时嵌入式机载软件的测试技术研究[J].计算机工程,1998,2:12-15.
[4]王金波,张涛.基于故障注入的嵌入式软件安全性测试框架及实现[J].计算机应用研究,2012,8:2991-2995.
[5]刘克,单志广,王戟,等“.可信软件基础研究”重大研究计划综述[J].中国科学基金,2008,3:145-151.
[6]王守信,方天选,李丽萍,等.山西省“十二五”期间推进两化融合及发展软件服务业的战略研究(续)第二篇发展软件服务业促进山西经济转型跨越发展的研究[J].机械管理开发,2011,2:1-20.
[7]凌杨,邵培南,佟雷,等.基于数字化仿真环境的嵌入式软件测试方法[J].计算机工程,2011,S1:49-51.
[8]刘斌,高小鹏,陆民燕,等.嵌入式软件可靠性仿真测试系统研究[J].北京航空航天大学学报,2000,4:490-493.
[9]孙昌爱,靳若明,刘超,等.实时嵌入式软件的测试技术[J].小型微型计算机系统,2000,9:920-924.
[10]荣国平,刘天宇,谢明娟,等.嵌入式系统开发中敏捷方法的应用研究综述[J].软件学报,2014,2:267-283.
[11]宋锡强,汪萍萍,周韶园.智能电能表软件测试技术概述[J].电测与仪表,2014,11:18-22.
篇5
1 计算机软件工程管理的主要内容
计算机软件工程管理工作的开展,需要与软件产品的性质与特征等紧密的结合起来,其内容主要包括以下方面:
1.1 组织机构管理
不能仅仅停留在简单集合开发人员的层面上,而是应注重人员分配和组织结构的完整性,使分工确保明确,做到上传下达信息,这就是所谓的组织机构。但是由于不同工程具有不同的要求,因此,至今并没有把组织机构的统一模式提出过。
12 用户管理
用户使用是软件开发的最终目标。在软件开发过程中,应对用户的需求和操作习惯等进行全面的充分了解,从而使来自外界的干扰因素尽量的被减少。在软件的开发中,积极的正确用户使用的建议,能够做到让用户把诚恳的意见提出来,这样软件的可操作性和实用性才会具有增强的机会。
1.3 工作人员管理
计算机软件工程的本文由LWlm.cOm收集整理主体就是工作人员,对资料的查找、和软件程序的编写以及处理后续工作等各种项目的实施负主要责任,所以需要不同岗位的工作人员齐心协力,共同配合才能完成这项工作。因此,在分析项目的规模和性质等基础上,对计算机软件开发人员进行合理安排,把各自的分工和责任予以明确。但是,由于不同工作人员具有不同的素质和专业能力等,这就应结合实际情况,及时的合理调配与管理。工作人员不仅应该具备本专业知识,而且团队协作能力也需要具备,因为计算机软件项目具有复杂性,需要与其他人员共同配合才能够完成。
1.4 档案资料管理
在开发计算机软件的过程中,需要在档案资料中记录各个流程,这样可为各阶段的工作提供方便,也为后期开展复查工作带来便利,使软件开发的保障性得到提高。因此,需要重视档案资料的强化程度,把管理效率与质量水平提高上来,这是很重要的环节。
2 目前计算机软件工程管理中存在的问题
2.1 软件工程需求和实际业务存在较大差距
在开发计算机软件的过程中,软件工程需求和实际业务的差距较大是最主要的问题。此问题形成的根本原因在于在需求项目工程阶段,市场调查项目的实体和数据等是重点,但是,这些工作仅仅停留在业务表面的层次上,初步获得的资料也仅具有框架式的作用,而业务规划工作却完全被忽略了。而软件的后续设计人员在进行业务规划时也只能通过想象来完成,这样就造成了实际情况与最终的产品之间产生直接的较大的差距。
2.2 软件工程管理量较大
工作量极大是计算机软件工程的特点,这是人所共知的事情。在软件的开发过程中,影响它的因素很多,其中,开发人员的投人程度和管理水平等人为因素就是最大的影响因素。把人为因素刨除在外,在业务规则被确定的情况下,就较容易估算出软件的开发量与管理量。
显而易见,在计算机软件工程管理中,存在很多地方需要进行改进,但是以软件的基本为前提是需要改进的地方最实质所在。把有效的业务规划,数据的处理方法,尽快的找出来,是实现多规则化的前提。
3 计算机软件工程管理的方法与对策
3.1 构建完善的计算机软件工程管理体系
首先,需要把软件工程管理的人才体系构建起来,人才是工程进展的根本,要充分的认识到人才的积极作用,强化人力资源管理,把工作人员的主观能动性充分的调动起来,使工程各项目标能够确保顺利落实;其次,加强学习与渗透软件工程的相关知识,专业化培训管理人员和工作人员等,对软件工程知识要做到不断的更新,掌握最新软件工程知识,做到理论结合实践,推动软件的开发水平与利用价值的提升,使工程项目管理效率被提高;再次,加强建设规范制度,在实际中全面彻底的落实奖惩措施,从而把工作人员的积极主动性调动起来,为计算机软件工程效益目标的实现奠定良好的基础。
3.2 提高软件效率
在以往,修改数据前,在操作方法上需要前台程序控制,但最近几年,随着数据库与信息技术的发展,这种方法已经被网络计算所逐渐取代。因此说,修改数据程序是软件工作效率提高的前提条件,把它向计算机的其他层次中进行分配,这是提高工作效率是最佳途径。
3.3 软件开发平台要进行统一规划
对整个计算机软件发展造成重要影响的原因就是软件在运行中不具备统一的平台。重复开发各种平台构成软件开发平台,而随着时间的推移和网络的快速发展,统一规则的软件开发平台会很快的构建起来。此外,可以聚集各国软件开发人员共同开发计算机软件。
3.4 加强计算机软件工程的风险管理与进度管理
篇6
软件作为计算机的灵魂,从计算机应用诞生之日起就主宰着计算机产业的发展。从二进制的指令到最先进的语音及图像识别系统,勾勒出了软件发展的趋势,即面向用户,方便用户,赢得用户。微软公司的成功有力地说明了这一指导思想在软件开发中的重要性。
1 软件工程的概念
1.1 “软件工程”概念提出
20世纪50、60年代开发大型系统软件用手工方式进行,其生产效率低、出错率高。这种状态不能满足日益增长的软件生产的需要,产生以下四个方面的问题。(1)软件复杂性飞速增长;(2)软件成本高;(3)开发周期长;(4)维护工作量大。
即出现了“软件危机”现象。为了摆脱软件生产的这种局面,在1968年北大西洋公约组织的学术会议上,第一次提出了“软件工程”这个概念。
1.2 软件工程学概念
软件工程学是研究和探讨如何利用当代的科学理论和技术指导软件的开发,以达到利用较少的投资获得高质量软件产品的目的科学。
软件工程学既是边缘学科,又是一种综合性学科。它包括计算机科学、系统工程学、管理学、经济学、人体工程学和心理学等。
2 软件工程的发展
软件工程的发展,大体经历了三个时代,即程序设计时代、软件时代、软件工程时代。
2.1 软件开发的三个阶段
前面讲过用软件工程的方式生产软件的过程类似于机械、建筑工程生产产品的过程。如一个建筑工程从开始到结束,经历设计、施工和验收三个阶段。软件产品的生产也要经过定义、开发、维护的软件开发三个阶段。
2.2 软件工程与其他工程科学不同之处
从上面建筑工程与软件二种产品开发阶段比较,可以看出:(1)建筑工程流程图中,设计蓝图产生之后,往下的每一步没有回溯问题。但在软件开发工程中,每一步都可能经历不只一次的修改和适应的回溯问题。(2)软件交付使用后,还有一个运行维护问题,如运行后发现有隐藏错误、运行环境有变化、用户要求的变更等。
3 应用软件开发方法
一个大型的应用软件、如计算机辅助设计软件,大型仿真训练软件等,需要多人共同完成。为保证大型应用软件系统的开发质量,必须严格按照软件工程的思路和原则,采用软件的开发方法,使用软件工程提供的图示工具,组织软件人员协调一致地完成设计与开发任务。
现应用的软件开发方法主要有三种:软件生命周期法、原型化方法、自动形式的系统开发方法。
3.1 软件开发的生命周期法
生命周期方法是从时间角度对软件的定义、开发和维护的复杂问题进行分解,分成若干个阶段。每个阶段的开始和结束都有严格的标准(前一阶段的结束就是后一阶段的开始。标准就是每个阶段都应该交出高质量的文档。软件生命周期一般分为六个时期,即六个阶段。
3.2 原型化方法
传统的生命周期法的理论基础较为严密。一般说来,在软件开发过程中,首先要经过严格的定义或预先说明,并要求软件开发人员和用户在系统的开发初期就要对整个的功能和信息需求做出全面、准确而深刻地认定。
通常用户给出概括性的软件目标而无法描述详细的输入、处理或输出需求。而软件开发人员也可能尚未确定处理算法的效果、操作系统的适用性及即将使用的人机界面形态。在这种情况下,对事务只有边干边认识,原型化方法就是基于这一主导思想。
4 软件工程开发的目标
4.1 可修改性
容许对系统进行修改而不增加原系统的复杂性。它支持软件的调试与维护,是一个难以达到的目标。
4.2 有效性
软件系统能最有效地利用计算机的时间资源和空间资源。各种计算机软件无不将系统的时/空开销作为衡量软件质量的一项重要技术指标。
4.3 可靠性
对于实时嵌入式计算机系统,可靠性是一个非常重要的目标。因为软件要实时地控制一个物理过程,一旦出现问题可能是灾难性的,后果将不堪设想。因此在软件开发、编码和测试过程中,必须将可靠性放在重要地位。
4.4 可理解性
系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。
4.5 可维护性
软件产品交付用户使用后,能够对它进行修改,以便改正潜伏的错误,改进性能和其他属性,使软件产品适应环境的变化,等等。由于软件是逻辑产品,只要用户需要,它可以无限期的使用下去,因此软件维护是不可避免的。
4.6 可重用性
可重用的软部件有的可以不加修改直接使用,有的需要修改后再用。可重用软部件应具有清晰的结构和注解,应具有正确的编码和较低的时/空开销。
4.7 可适应性
软件在不同的系统约束条件下,使用户需求得到满足的难易程度。适应性强的软件应采用广为流行的程序设计语言编码,在广为流行的操作系统环境中运行,采用标准的术语和格式书写文档。适应性强的软件较容易推广使用。
4.8 可移植性
软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。为了获得比较高的可移植性,在软件设计过程中通常采用通用的程序设计语言和运行环境支撑。
4.9 可追踪性
根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件可追踪性依赖于软件开发各个阶段文档和程序的完整性、一致性和可理解性。
4.10 可互操作性
多个软件元素相互通信并协同完成任务的能力。为了实现可互操作性,软件开发通常要遵循某种标准,支持折衷标准的环境将为软件元素之间的可互操作提供便利。可互操作性在分布计算环境下尤为重要。
结束语
应用软件必须采用开发者易懂的程序设计语言的格式进行编写。最低级的编程语言是目标机直接理解的机器代码;与之相反,高级编程语言是指具有自然结构和数据抽象结构的“类英语语言”。高级编程语言的目的是使编程人员摆脱对计算机硬件知识的依赖性,从面向机器编程的方式转向面向高级语言。
篇7
关键词:计算机软件,专利发明,专利审查,专利“三性”
目前发达国家对计算机软件专利性的讨论已经进入第二层面,主要是对软件专利审查如何制定符合自己国情的科学标准。遗憾的是我国对计算机软件专利性的探讨还处在第一层面或者说还没有进入第一层面,至今还没有看到法学界掀起讨论软件是否需要专利性问题的热潮。如果不及时采取措施,信息时代的国际软件竞争将把中国抛弃。由于我国与欧盟一些国家有相似的法律传统,因此,笔者在考证欧盟计算机软件专利性发展进程[2](P60)基础上,提出在正式软件专利性立法之前,先行对我国现行《专利审查指南》做出三点修改。
第一、扩大软件专利审查的范围,删除计算机程序不授予专利发明的规定。
现有的《专利审查指南》指出:“涉及计算机程序的发明是指为解决发明提出的问题,全部或部分以计算机程序处理流程为基础的解决方案” [3].这仅仅对涉及计算机程序的发明作出了界定,没有明确提出软件的法律定义和软件发明的定义,建议对软件发明的定义作出明确的界定,以便于划清授予专利的软件和非授予专利的软件之间的界限。欧盟颁布的《计算机执行的发明可专利性的指令》 [4]指出:“计算机执行的发明”是指任何利用计算机、计算机网络或者任何其他程序处理设备创造的发明,或者具有绝对新颖性等特征,整体或者部分通过计算机程序或者计算机创造的任何发明“。欧盟的定义没有排除任何软件的专利性,只要可以通过软件处理设备执行,具有专利”三性“的标准就可以授予专利权。结合欧盟的规定,笔者认为,可以对软件作出这样的法律界定:软件是指,为完成某种可以应用的功能而由一系列程序包括文档有机组成的整体。软件的范围非常广泛,包括系统软件、行业软件、工具软件、文字处理软件等等。并非所有的软件都可以授予专利权,只有具有技术性,可以工业应用的软件才能授予专利权。因此,软件专利发明是指可以硬件执行的由程序组成的有机整体,能工业应用,满足一定的功能,具有技术性,新颖性的发明。
其次,专利授予软件类型的客体在软件授予专利权的前提下也应当拓展。现行的《专利审查指南》指出[5],如果发明专利申请只涉及计算机程序本身或者是仅仅记录在载体(例如磁带、磁盘、光盘、磁光盘 、ROM、PROM、VCD、DVD或者其他的计算机可读介质)上的计算机程序,就其程序本身而言,不论它以何种形式出现,都属于智力活动的规则和方法。当一件涉及计算机程序的发明专利申请是为了解决技术问题,利用了技术手段,能够产生技术效果时,表明该专利申请属于可给予专利保护的客体。但是这也只是说涉及,而不是单纯的软件申请。只有和硬件或者工程结合起来的软件才有可能授予专利权,说到底,软件不是是否授予专利性的考虑因素,只要申请授予专利的客体满足“三性”要求,就可以授予专利权,而不论这样的技术是否包含了软件的成分在其中,但是单纯的软件申请不能被授予专利权。严格说来,我国的《专利审查指南》并没有把软件作为专利申请的客体。在当前各国扩大专利授权客体的大背景下,很有必要扩充我国的《专利审查指南》的范围。
欧盟对计算机软件相关发明 [6]的范围界定为,属于一个技术领域内与计算机相关的发明都不应当排除到可专利的范围之外。与计算机相关的发明包括计算机硬件和软件,对于硬件,传统的专利法已经给予了充分的保护,指令主要提供对软件的专利保护,而不涉及到硬件的问题。他们认为 [7](P7)仅仅逻辑算法的存在不能构成区分专利和非专利主体的一个标准,算法也可以构成与计算机相关发明的基础,也可以构成通常的机器(机械的,电子的等等),或者由机器执行的程序基础。唯一不同的是,计算机程序由与计算机直接相关的设备来完成,而普通的机器由各个零部件来完成。因此不应当把计算机软件和其他机械的发明区别对待。
笔者认为,我国可以借鉴欧盟的做法,以改往常传统保守的观点,把保护的范围扩大到单纯的软件申请专利的问题。因为很多具有技术性和新颖性的软件在工业应用和商业经营中与具体的工业工艺结合起来起到了技术革新和提高生产力的效果,这符合专利法保护的目的和宗旨,因此对此加以保护不但维护了软件权利人的利益,也更好地鼓励技术工业应用和推广,以刺激软件权人的投资,推动整个软件工业的发展。
最后,对什么样的软件授予专利的问题,应当根据软件发明申请审查标准来确定。
第二、对传统的“三性”做适当的调整,制定恰当地适用于软件专利审查的标准。
在软件专利申请审查标准问题上,欧盟《计算机执行的发明可专利性的指令》 [8]第三条规定,成员国应当确保一项与计算机相关的发明属于一个技术的领域。第四条指出了授予专利的实质条件,其规定:可专利保护的条件①各成员国应明确规定与计算机相关的发明只要具有工业实用性、新颖性和创造性就应当授予专利。②各成员国应明确规定具有创造性的条件之一是所申请的软件发明必须做出了技术贡献。③对技术贡献的评价应当考虑:将专利权利要求的范围作为一个整体,其中可以包括技术的与非技术的特征,以此来比较与现有技术之间的差别。 第五条指出权利要求的类型可以是一种产品,如编程了的计算机、计算机网络或其它装置,或是一种由计算机、计算机网络或类似装置借助软件执行的方法。
笔者认为,欧盟指令第三条是TRIPS协议27(1)的具体体现,根据此条款的内容,专利应当授予一切技术领域内的发明,如果申请的产品或者程序(工艺流程)具有新颖性、涉及发明的过程、可以工业应用。与计算机相关的发明虽然属于一个技术的领域,但是没有提及任何物资环境的纯粹逻辑算法不能满足计算机相关发明的界定,也没有落在技术领域范围之内,当然也不能授予专利权。
第四条提及的授予专利权的实质审查条件可以理解为:第一项要求成员国有义务保护作为任何计算机执行的相关发明,只要所申请的发明满足欧洲专利公约52(1)规定的基本的新颖性、发明性、工业应用的要求。第二项要求与计算机相关的发明,必须做出技术性贡献。这个技术领域内的贡献对于该技术领域内的一般熟练工人必须是非显而易见的。如果计算机执行的相关发明对先前技术的贡献没有技术性特征将被认为缺乏实质性进步,即使其对先前技术的贡献是非显而易见的。当评价“创造性进步”的时候,关于技术状态应当包括的内容和熟练工人的知识的问题必须根据评价创造性的一般标准来确定(这个一般性标准可以在欧洲专利公约中找到)。第三项提供了在决定技术性贡献中,发明必须作为一个整体进行评价,这与欧洲专利局审理的专利申请采取的措施是一致的。按照此规定,假如发明的一个部分落在欧洲专利公约52(2)规定的非专利的客体上,如果存在非显而易见的技术贡献,或许仍然可以授予专利权。如果缺乏技术贡献,比如对技术的贡献整体上都是非技术性的,那么这种贡献是一种纯粹的商业方法,不是专利权的客体。
第五条提及的申请形式表明,欧盟指令不仅对与硬件装置结合起来的软件授予专利,而且对单纯的软件也可以授予专利权,只要其符合第四条规定的审查的实质条件。
比照欧盟的规定,笔者认为,我国建立的软件专利的审查标准不应当偏离原来的审查标准,应当保持立法的一致性和连续性。
现行的《专利审查指南》指出,申请发明的专利必须具有新颖性,这是授予专利权的第一必要条件,如果申请的发明已经存在就没有必要授予专利,其中的新颖性应当根据审查指南的界定来判断。这种新颖性不仅是指对于所有现存的技术具有新颖性,而且对于所有以其他形式表现的技术也具有新颖性。对于软件的专利性尤其应当注意的是,应当与以前所有的技术和申请相比较,如果这样的技术已经存在就不应当授予专利,不能因为原来存在的技术,经过软件化和程序化,就可以获得专利权,这样不仅浪费了专利资源,而且与专利制度本身的宗旨也是向背的。比如,影像、视听、动画、电子图书等等软件,不能因为其通过软件的形式体现出来,就意味着可以授予专利权,因为这些内容本来就不是专利法考虑的对象,其仍然属于著作权法包括的范畴。
其次,所申请的软件发明必须具有发明创造性,同申请日以前已有的技术相比,该发明有突出的实质性特点和显著的进步,而且对所属技术领域的熟练技术人员来说,是非显而易见的。如果发明是其所属技术领域的技术人员在现有技术的基础上通过逻辑分析、推理或者有限的试验可以得到的,则该发明是非显而易见的,也就不具备突出的实质性特点。关于技术性的问题,欧盟专利审查员一般根据三点确定[9](P27):①确定最相近的已有技术包括以软件形式表现出来的技术和其他以传统的技术方式表现出来的技术。②确定要解决的技术问题。使用客观的方法确定需要解决的技术问题。这需要研究最相近的已有技术以及该发明与最相近的已有技术之间在特征方面的区别(结构的或者功能的)。③从最相近的已有技术问题出发,考虑权利要求的发明对同领域的技术人员而言是否是显而易见的。我国可以参照这样的审查标准确定软件申请所具有的技术性,但是必须强调一点的是,确定现有技术的范围应当包括以所有的形式体现出来的技术,这可以有效的防止通过现有技术的软件化,申请软件专利的可能,杜绝软件专利资源的浪费。
关于实用性的问题,是指软件发明必须能够在产业上制造或者使用,并且能够产生积极效果。如果申请的是一种产品(包括发明和实用新型),那么该产品必须在产业中能够制造,并且能够解决技术问题;如果申请的是一种方法(仅限发明),那么这种方法必须在产业中能够使用,并且能够解决技术问题。只有满足上述条件的产品或者方法的专利申请才可能被授予专利权。根据此标准,如果所申请的软件可以工业应用,不应当排除到专利之外。
对于商业方法,笔者不主张目前对其专利保护。有三个理由:①商业方法是专利审查指南明确排除的范围,组织、生产、商业实施和经济等管理的方法及制度不能授予专利权,因为其属于指导人们进行这类活动的规则和方法,不仅没有技术构思的成分,而且缺乏发明的创造性,不能因为其仅仅软件化就给其专利权。再说经营的规则和方法本来就是一种有限的资源不能让少数的人垄断,这也便于商业竞争和商品流通,推动社会的进步。②来自于美国的研究[10]证明商业方法的专利性是个错误的选择。一是,商业方法专利的成本比其他的专利成本要高;二是,囚犯困境使得公司的研究开发成本转移到对私有财产的竞争上,这样反而不利于消费者和社会福利的增加;三是,把计算机软件在内的商业方法排除在专利之外的原因在于,商业方法很抽象,在法律对主题采取全部保护和不保护之间,专利法很难划定商业方法专利垄断的范围,以恰当平衡创新所得与自由竞争的需要之间的关系。来自于美国的报告表明在某些领域内专利抑制了创新,确切的说,尤其是在软件的领域。③目前欧洲官方也不主张对商业方法授予专利权,因为EPO没有发表任何正式声明或指南,清晰、准确地陈述其对于商业方法专利性的方针政策[11].欧盟内部许多的大型软件公司也反对商业方法的专利性[12],他们认为,不适当地拓宽专利领域的范围,容纳非技术贡献的网络商业方法的行为,将会排除清楚的、对于控制经济有价值的技术。商业方法的专利除了对经济造成巨大的破坏性的影响,审查和执行他们也有实际困难,况且作为原则性问题这对于信息社会也是不正确的。总之,在没有对我国的市场和软件行业做出明确的调查和研究之前,不能盲目地把专利的范围扩大到商业方法及其软件化的商业方法上来。
综合软件专利“三性”的标准,笔者认为,可以授予软件专利的客体包括,可以产业化应用的行业软件、可以和硬件设备结合起来实现自动化的控制软件、提高计算机硬件性能的系统软件、可以控制(或者远程控制)生产或者物流过程的操作软件、满足软件专利“三性”标准的其他类型软件。不能授予专利的软件包括,软件化的音像(书籍)等电子产品、单纯的数据库软件、各种游戏软件、各种形式的文本编辑和教育软件、不满足软件专利“三性”标准的其他类型的软件。
第三、对一些申请专利的程序问题,包括审查的期限,公布的日期,保护的年限等加以修改。
软件专利保护存在两点明显不足:一是,专利审查的期限过长,与软件的生命周期不相适应,不能很好地为软件市场的发展服务;二是,软件专利申请的费用和成本过高,耗时耗钱,使得一些软件商无利可图,相应降低了专利资源的效率。
针对以上两点不足,结合软件行业的特点,笔者认为,可以对我国专利审查指南做出调整,对于软件的申请可以缩短初步审查和公布的期限,同时对于实质审查的期限也可以缩短。针对软件生命周期短的特点,可以考虑对软件专利的保护期做出规定,限定为10年或者更短的期限,以便于软件的更新和节省专利资源。恰当的保护期限应当建立在对我国软件行业的发展状况详细研究的基础之上,还应当考虑到一些发达国家对软件专利采用的保护期限。
[文 献 注 释]
[1] 本研究属于国家知识产权局重点课题“计算机软件发明的专利保护”子课题之一。
[2] 参见李士林,郑友德。欧盟计算机软件发明专利保护的发展研究[J].科技与法律,2003,(1)。
[3] 参见《专利审查指南》(2001年文本)第二部分第九章引言部分。
[4] “Proposal for a DIRECTIVE OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL on the patentability of computer-implemented inventions”,网址下载europa.eu.int/comm/internal_market/en/intprop/indprop/index.htm
[5] 参见《专利审查指南》法25.1(2)。
[6] 《欧盟由计算机执行的发明专利性指令》的建议第二条,sipo.gov.cn/sipo/ywdt/gyzscqxx/t20030107_10783.htm.
[7] “Proposal for a DIRECTIVE OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL on the patentability of computer-implemented inventions”,COMMISSION OF THE EUROPEAN COMMUNITIES,Brussels,20.02.2002.
[8] 同[4]见指令相关的条文。
[9] 参见张平。论商业方法软件专利保护的创造性标准——美、日、欧三方专利审查之比较[J].知识产权,2003(1)。
[10]“Ladas Parry Guide to Statutory Protection for Computer Software in the United States”,载于ladas.com/Patents/Computer/Semiconductor.USA.html.
[11] 朱瑾编译。美日欧在商业方法专利问题上的分歧[J].载于sipo.gov.cn/sipo/ywdt/gyzscqxx/t20021206_10266.htm.
篇8
购入的软件与固定资产一同购入与固定资产一同购入的计算机软件,如果与固定资产不可分,无论是否单独计价,都应作为固定资产而不是无 形资产核算,如生产设备的自动化控制程序等;如果与固定资产可以分开,且能单独计价,则应确认为无形资产,按购入成本入账。
单独购入单独购入的计算机软件,应区别情况进行会计处理:单独购入用于生产经营或管理的,应按购入成本确认为无形资产,且无形资产达到预定用途后所发生的支出不构成无形资产的成本。若采用分期付款方式购买无形资产,无形资产的成本为购买价款的现值。
单独购入用于研究与开发的,如果研究与开发活动结束,该软件还能另作他用,则应按购入成本资本化为无形资产;如没有其他作用,则应计入“研发支出—— 费用化支出”,按无形资产具体准则处理。
单独购入用于构成产品的组成部分的,应视这种软件是否可以重复使用来决定,如果可以复制,应将软件原版的购入成本资本化为无形资产,区分使用寿命有限的无形资产和使用寿命不确定的无形资产。
对于使用寿命确定的无形资产,以后各期计入产品成本;对于使用寿命不确定的无形资产,则不再摊销,但至少应当于每年年终进行减值测试。如果不能复制,也就是说要为每件产品购入一个软件,则购入时应作“存货”处理且领用时计入当期产品成本。
委托开发的软件委托开发形成的计算机软件应按实际支付的委托费入账。如果该软件是用于生产经营或管理,应资本化为无形资产;如果用于研究与开发且没有其他用途,则应计入“研发支出”,否则就予以资本化为无形资产;如果用于产品的组成部分,由于委托开发形成的软件企业一般可以复制,因此也应资本化为无形资产。
篇9
1实验概况
本次结构实验选取某铁路钢构三跨PC箱形桥,按照刚度相思的原则,将该桥的尺寸和模型尺寸拟定为18.2:1,该桥模型的总长度为29.6米,在墩身的建筑中,使用的是C40的混凝土,墩台使用的混凝土型号和墩身使用的混凝土型号保持一致,在桥身的建筑中,采用的是C60的混凝土类型,在1号和4号桥墩采用的支座是活动的,2号和3号桥墩采用的刚性连接支座,并对其采用竖向和水平的加载方式。在本次实验工况研究中,设置了四种工况,包括水平推力、张拉、配种以及竖向加重。
2对结构实验的分析
按照结构实验数据处理的一般流程将软件化为为三个层次,第一个层次就是数据库层,主要用于存储试验中用到的各种信息;第二层为数据管理层,主要负责对试验中各种数据的管理;第三层为处理结果层,该层主要是根据第二层下达的任务,实现对数据的结果表达。在Matlab软件中,设计了一套完整的控制函数,并包括I/O设备访问所需要的函数,该函数可以实现对硬件的有效控制,同时也满足了硬件之间的通讯功能。
3对实验结构数抽象据库的分析
根据实验模型的机构体系,根据数据库的原理,可以得出抽象的数据库模型,该数据库的模型可以通过Access2000实现。在该数据库模型中,涉及到的因素很多,例如用于存储百分表位移计分布信息的位移测点表,存储加载历程和工况的工况信息表,除此以外,还包括应力信息表、压力信息表、位移测值表以及应变信息表。在数据访问和数据管理操作中,不会对其他表进行操作,只需要通过位移测点表、测点信息表以及工况信息表来完成。采用这种数据访问和数据管理方法,可以有效的确保原始数据不受到破坏,提高原始数据的安全性。
4对数据管理和数据处理的分析
在对数据进行相关操作时,要确保数据的安全性。因此,在进行数据库操作的过程中,应该将其放在安全性比较高的C/S模型中,并在其前端管理程序中实现。通过控制Matlab软件编程数据管理程序,在ODBC中建立相应的数据库接口,从而在Database中实现对数据的处理和数据访问功能。在对数据库进行管理的过程中,需要实现多个方面的功能,具体来说,主要包含以下几个部分:首先,要预留出UCAM接入口和PC接入口,并实现对数据的手动导入和自动导入功能。其次,要按照一定的条件,实现对数据的访问和对数据的查询功能,并做到便捷和高效。再次,要实现数据处理任务定制功能,根据数据查询的结果和数据的性质,程度可以对程度做出智能判断,并建立起数据连接机制和数据导入机制,最后利用Matlab来实现对数据库的管理功能。根据以上的论述,利用Matlab编程程序,实现了对数据的初步自动化功能和可视化功能。
二总结
篇10
1 简介
近年来,山东省计算机文化基础考试已成为山东高职院校计算机必考课程。为此便于考试和教学,我们自主开发了《计算机基础模拟软件》。
该模拟软件包括操作题与客观题两部分。我们选择使用VB6开发考试系统的主要模块及界面。操作题编程与Office后台宏语言(Visual Basic)联系密切,录制的宏经简单修改便可形成系统子模块。在数据存储方面,我们选用VB的文件系统对数据文件编程,从而在方便数据加密的同时又可减小系统的大小。
2 Windows操作题与系统打包技术
Windows操作题部分在整个系统中属于最简单的部分,这得益于VB6封装良好的FileSystemObject对象。通过访问此对象的方法与属性,我们可以轻松地实现试题内容的生成与相应的评分。
系统打包方面,我们选用Inno Setup。Inno Setup是一个免费开源的安装制作软件,小巧、简便,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般软件安装任务。
3 基于Office对象模型开发Office操作题模块
微软Office产品中引入了Office对象模型并内置了VBA编程语言,还内置了友好的宏记录器,因此利用0ffice提供的VBA功能,实现Office操作题的自动评分。Word、Excel、PowerPoint三个模块的编程思路极其一致,下面仅Word部分评分模拟的实现原理。
首先,检测考生文件夹下word文档是否存在。如果存在则继续执行;如果不存在则判为分(存储到全局变量iWord中),并退出模块。相关代码如下:
Public Sub Word01(file1 As String)
If bFileExist(file1) = False Then
iWord = 0 ‘存储word部分试题得分
Exit Sub
End If
Dim oWord As New Word.Application
Dim s() As String
Dim iLower As Integer
Dim i As Integer
oWord.Documents.Open (file1)
oWord.Visible = False
With oWord.ActiveDocument.Paragraphs(2).Range.ParagraphFormat '定义段落格式
If .LineSpacingRule = wdLineSpace1pt5 Then '定义行距为1.5倍
iWord = iWord + 2
Else
iLower = iLower + 1
ReDim Preserve s(iLower)
s(iLower) = "正文第一段行距设置错误(-2)" & vbCrLf
End If
End With
Call oWord.ActiveDocument.Close '关闭WORD文档
oWord.Quit
Set oWord = Nothing
上述过程执行的最后,我们把考生得分及可能的错误信息全部保存到全局字符串变量strWordResult,由评分模块访问这个变量来显示Word部分做题信息。
4 客观题模块的设计
客观题内容的屏幕呈现实现于系统主窗体frmMain后台代码中,通过操作各客观题文件实现,是整个系统开发的关键之一。
(1)动态显示客观题内容。如何显示跨越屏幕边界的大对象,这是系统要动态显示客观题内容必须解决的问题。我们所采用的方案主要了来自MSDN的技巧:引入两个Picturebox控件(父子关系),并使用HscrollBar或VscrollBar(本例中使用)控制作为子控件的Picturebox在父Picturebox中的显示位置,因为作为子控件的Picturebox的某一部分一旦超出了父Picturebox的边界就成为不可见的。在我们的项目中设置了三对Picturebox控件,分别用来实现动态显示单选题、多选题及判断题内容。
(2)加载客观题内容。加载客观题内容是一个极具挑战性和技巧性的问题。问题的关键在于这里的控件是动态生成的。一般地,在VB6中动态生成控件主要有两种方案:一种是使用VB6以前的控件数组,另一种是使用VB6始引入的WithEvents变量。但在本系统环境下需要生成大量的控件,而VB6中是不允许创建WithEvents变量数组的,因此,我们决定使用控件数组方案来生成大量的控件以显示客观题内容,而且这样更便于统一控制控件的事件。
5 小结
总体来看,开发计算机基础模拟软件的主要技术关键有:Office后台宏录制模块及Office DOM对象模型编程;利用Picturebox控件与VscrollBar控件显示客观题与内容的动态定位。
目前,该系统已经成功应用于学院的计算机基础教学及模拟考试。但是,该系统也存在一些不足,例如,系统仅实现了单机版,需手动记录学生成绩,尚待解决。