正文内容
计价软件范文
来源:莲生三十二
作者:开心麻花
2025-09-23
1

计价软件范文(精选2篇)

计价软件 第1篇

在我国经济迅速发展和商品交易日益频繁的社会背景下, 电子计价秤以其称量快速、清晰, 相对比较准确和价格低廉的优点, 在超市、农贸市场、五金百货店、零售专卖店等各种需要进行计重计价的领域得到了大量的应用, 逐步替代了传统的杆秤、台案秤及弹簧度盘秤。

虽然绝大多数电子计价秤的生产厂商都能遵守职业道德, 生产符合国家计量标准的产品, 但是仅仅依靠生产厂商的自律显然无法保证电子计价秤的质量。随着电子计价秤的广泛应用, 目前市面上出现了一些利用硬件或软件进行作弊的现象, 损害了贸易公平和社会诚信, 破坏了计量管理秩序, 给人民群众的生活带来了困扰。因此, 对电子计价秤软件进行测试, 以发现软件中存在其中的缺陷和后门, 对于规范电子计价秤市场具有十分重要的意义。

在国际上, 已经出台了一些关于电子计价秤软件的标准或意见[1,2,3], 而国家质量监督检验检疫总局也正在编写电子计价秤软件相关的国家标准[4]。这些标准和意见为电子计价秤软件的质量提供了明确的度量指标和度量算法, 但是它们对这些指标的测试方法并没有进行详细明确的规定。因此, 对电子计价秤软件测试技术的研究就成为了迫切的需求。

本文在对市面上一种常见型号的电子计价秤软件的实际测试工作的基础上, 从静态测试方法和动态测试方法两个方面对电子计价秤软件测试中的关键技术进行研究和总结, 包括代码检查、控制流测试、数据流测试等, 能够为电子计价秤软件测试领域的研究提供参考, 同时可以为相关计量器具软件的测试提供借鉴。

1 电子计价秤软硬件结构介绍

电子计价秤通常采用单片机CPU作为处理核心, 其输入包括两部分:称重信息和按键信息, 其输出是数码管的显示。虽然电子计价秤的软硬件结构各不相同, 但是其基本原理一致, 即获取压力传感采集的称重信息和用户输入的按键输入, 经过计算后, 将计算结果输出到数码管上进行显示。下面从硬件和软件两个方面对电子计价秤的基本原理进行介绍。

1.1 硬件介绍

电子计价秤的硬件以CPU为核心, 外围硬件主要包含三部分:称重部分、键盘输入部分和显示部分。其硬件结构图通常如图1所示。

称重部分通常由压力传感器和A/D转换模块组成。压力传感器负责获取托盘上物体称重的模拟信号再传输给A/D转换模块, A/D转换模块负责将压力传感器获取的模拟信号转换成数字信号再传输给CPU。通常使用专门的A/D转换芯片进行A/D转换, 以保证足够的精度。

键盘输入部分主要是键盘驱动电路。用户的键盘输入将通过键盘驱动电路转换成CPU的预设输入接口信号。因而对于不同厂商和不同型号的电子计价秤而言, 其键盘驱动电路以及键盘输入接口也会有所差异。

显示部分通常由LED数码管和数码管显示驱动芯片组成。LED数码管通常会显示称重信息, 单价信息, 金额信息等, 由数码管显示驱动芯片控制, 而数码管显示驱动芯片又由CPU发送指令进行控制。

CPU负责所有的逻辑计算部分, 包括称重的计算、单价值的获取、计算金额等, 同时CPU还负责控制A/D转换芯片以及数码管显示驱动芯片。这是整个电子计价秤的核心部件, 其中的软件正是本文所讨论的主体。

1.2 软件介绍

电子计价秤软件通常包含了两个部分, 中断处理程序部分和主程序部分。中断处理程序负责获取压力传感器的输入和用户的按键输入, 主程序负责主体的逻辑计算以及结果的显示。主程序通常需要包括6个模块主要的模块, 它们分别是:

(1) 初始化模块:该模块负责对程序的部分变量进行赋值, 同时对A/D转换芯片以及数码管驱动显示芯片等进行初始化设定。

(1) 重力传感器数据平滑模块:该模块负责对A/D转换芯片获取到的数据进行平滑处理, 例如对多次连续数据取平均值

(2) 称重和金额计算模块:该模块获取重力传感器数据平滑模块的计算结果, 再根据称重与电压之间的计算关系计算称重, 同时再由称重信息和单价信息计算金额, 此时需要考虑去皮和累计等情况。

(3) 标定处理模块:该模块负责电子计价秤的标定, 即将一些重要的数据写入E2PROM, 作为以后计算的依据。这些重要的信息包括电压与称重之间的线性关系, 最大量程, 最小分度值等。

(4) 按键处理模块:该模块通过轮询按键的输入端口来确定用户的按键输入, 再对按键进行相应的处理。

(5) 数码管显示模块:该模块负责将称重、单价以及金额等信息显示到数码管上。

这6个模块之间的调用关系如图2所示。

2 静态测试方法

根据是否执行被测试程序, 软件测试可划分为静态测试方法和动态测试方法。静态测试方法是对被测软件进行特性分析的方法的总称, 是指不运行被测软件程序本身, 仅通过分析或检查源程序以及软件文档来检查程序的正确性。

代码检查是一种最常见的软件静态测试方法。代码检查通常采用人工阅读代码的方式, 人工模拟程序在计算机中的执行, 检验程序中每一条语句的运行结果, 进而判断程序的正确性, 找出软件内部的编程问题和详细设计问题。相比动态测试方法, 代码检查在错误发现上效率更高, 对中小规模的实时嵌入式软件测试统计数据表明, 70%~80%的软件错误可以被代码检查所发现。然而, 代码检查非常依赖检查人员的专业知识和经验的积累, 不同知识水平经验水平的人员在进行代码检查时效率差距会非常大。同时代码检查非常消耗时间, 特别是当软件规模十分庞大同时又缺少相关文档资料时, 进行完整的代码检查几乎是不可能。对于电子计价秤而言, 其软件规模通常并不大, 因而很适合使用代码检查的方法进行软件测试。

对汇编程序进行代码检查比对使用面向对象语言编写的程序进行代码检查更加复杂, 因为汇编程序的主程序与子函数通常混在一起, 这增大了汇编程序的理解难度, 因而需要将汇编程序的主程序与子函数人工进行分离。

在8051汇编指令中调用子函数的指令是ACALL指令和LCALL指令, 其格式为ACALL/LCALL A, 从子函数返回的指令是RET指令。当程序执行到ACALL/LCALL A指令时, 程序会跳转到标号A继续执行, 当程序继续执行到RET指令时, 程序会从子函数中返回, 跳转到上一条ACALL/LCALL A指令的下一条指令继续执行。因而以标号A为起始, 以RET指令为结尾, 中间的代码均为子函数代码, 每个子函数均可看作一个功能独立的代码段。

以市面上一种常见型号的电子计价秤软件为例, 经过主程序与子程序的分离, 其3744行的汇编代码中主程序的行数约为1500行左右, 而总共存在67个子函数。在此基础上, 再对分离出来的主程序进行子功能模块的划分, 从而构造出软件的流程图, 如图3。

3 动态测试方法

动态测试方法是指通过运行被测试程序, 输入相应的测试用例, 检查运行结果与预期结果的差异, 从而测试出被检软件的正确性。动态测试方法通常由三部分组成:设计测试用例, 执行被测程序, 比较输出结果与预期结果。而根据是否针对系统的内部结构和逻辑过程, 动态测试方法又可划分为白盒测试和黑盒测试。

3.1 黑盒测试

黑盒测试也称功能测试, 是指从用户的角度出发, 在完全不考虑程序内部结构和内部特性的情况下根据程序的需求规格说明书, 检验软件的功能是否符合用户需求。等价类划分测试是最常用的黑盒测试方法, 是指把程序的输入域划分成若干等价的子集, 然后从每个部分中选取少数代表性数据作为测试用例。

对大部分的电子计价秤而言, 其输入包括两部分, 压力传感器的输入以及按键的输入。使用等价类划分的方法, 压力传感器的输入可以划分为超重, 正常重量, 过小重量以及负重量四种等价类, 而按键的输入情况较为复杂, 但是从基本的称重功能来看, 可划分为单次金额计算, 累计金额计算两种等价类。

3.2 控制流测试

白盒测试也称结构测试, 是指依据程序内部逻辑结构相关信息来进行测试用例的设计。在对市面上一种常见型号的电子计价秤的测试中, 白盒测试是在仿真平台上进行的。白盒测试又可细分为控制流测试以及数据流测试。

控制流测试与程序的控制流图密切相关。控制流图 (Control Flow Graph) 是指用图的方式来表现程序执行过程中所有的可能执行路径。在控制流图中只有两种图形符号:节点代表了程序中的语句以及语句块, 其中矩形表示普通语句, 菱形表示分支语句;控制流线通常是箭头, 它代表了程序的执行顺序。控制流测试旨在覆盖程序中的所有语句和语句块, 通常使用判定/条件覆盖率作为测试充分性的标准。

以市面上一种常见型号的电子计价秤软件的一个子函数S01FB为例分析控制流测试的基本方法。如图4所示, 左边为子函数S01FB的代码, 中间为该子函数对应的流程图, 右边为流程图中各个编号所实际对应的代码或代码块。

该子函数的作用是:若1DH位为0时则将内存地址单元 (6FH) (6EH) (6DH) 的值加上内存地址单元 (6CH) (6BH) (6AH) 的值再赋值回 (6FH) (6EH) (6DH) ;若1DH位为1时且1EH位为0时将内存地址单元 (6FH) (6EH) (6DH) 的值减去内存地址单元 (6CH) (6BH) (6AH) 的值再赋值回 (6FH) (6EH) (6DH) ;若1DH位为1时且1EH位为1时将内存地址单元 (28H) 、 (6DH) 、 (6EH) 、 (6FH) 全部赋值为#00H。由图中可以看出, 对于该函数, 要达到判定/条件完全覆盖, 需要执行3条路径1-2-3-4, 1-2-3-5-7, 1-2-6-7。因而测试可以设计3个测试用例: (1) 1DH位为1且1EH位为1 (2) 1DH位为1且1EH位为0 (3) 1DH位为0。

3.3 数据流测试

数据流测试指关注变量接受值的点和使用 (或引用) 这些值的点的结构性测试形式。定义/使用测试是一种最常见的数据流测试方法。使用定义/使用测试进行数据流测试时需要首先了解如下一下几个概念。

(1) 定义:节点n∈G (P) 是变量v∈V的定义节点, 记做DEF (v, n) , 当且仅当变量v的值在对应节点n的语句片段处定义。

(2) 使用:节点n∈G (P) 是变量v∈V的使用节点, 记做USE (v, n) , 当且仅当变量v的值在对应节点n的语句片段处使用。

(3) 定义-使用路径:关于变量v的定义-使用路径 (记做du-path) 是PATHS (P) 中的路径, 使得对某个v∈V, 存在定义和使用节点DEF (v, m) 和USE (v, n) , 使得m和n是该路径的最初和最终节点。

(4) 定义-清除路径:关于变量v的定义清除路径 (记做dc-path) , 是具有最初和最终节点DEF (v, m) 和USE (v, n) 的PATHS (P) 中的路径, 使得该路径中没有其他节点是v的定义节点。

(5) 全定义-使用路径准则:集合T满足程序p的全定义-使用路径准则, 当且仅当所有变量v∈V, T包含从v的每个定义节点到v的所有使用, 以及到所有USE (v, n) 后续节点的定义清除路径, 并且这些路径要么有一次的环经过, 要么没有环路。

然而在汇编程序中, 通常并不存在显示的变量声明, 程序的计算逻辑使用寄存器和内存地址作为操作数。在汇编程序中, 寄存器经常被当作临时变量进行使用, 同时汇编程序中对寄存器的定义和使用的次数会非常多, 如果对所有的寄存器均进行定义使用覆盖的话, 测试用例数量将会十分巨大, 因此在电子计价秤软件的实际测试中, 可以在代码理解的基础上对所有的内存地址以及部分的寄存器进行定义/使用测试。

以市面上一种常见型号的电子计价秤软件的一个子函数S0C88为例分析控制流测试的基本方法。如图5所示, 左边为子函数S0C88的代码, 右边为与汇编代码作用相同的高级语言的程序。图中介绍了高级语言程序中的变量与会汇编程序中的寄存器以及内存地址之间的关系, 同时图中也包含了变量的定义/使用覆盖覆盖分析。用图5可知, 针对此子程序要达到全定义-使用路径覆盖, 需要覆盖7条路径1-2、1-3、1-4、1-6、1-7、3-5、4-5, 而仅仅需要两个测试用例即可做到完全覆盖: (1) R7R6R5>=R4R3R2 (2) R7R6R5

4 结论

本文以市面上一种常见型号的电子计价秤软件作为实例, 从静态测试方法和动态测试方法两个角度对电子计价秤软件的测试进行了分析, 其中静态测试方法主要包括代码检查, 动态测试方法主要包括等价类划分测试, 控制流测试和数据流测试。文中对汇编程序如何进行代码检查以及数据流测试进行了初步的探讨, 能够为电子计价秤软件测试领域的研究提供参考, 同时可以为相关计量器具软件的测试提供借鉴。

摘要:本文从静态测试方法和动态测试方法两个方面对电子计价秤软件测试中的关键技术进行了研究和总结, 包括代码检查、等价类划分测试、控制流测试、数据流测试等, 能够为电子计价秤软件测试领域的研究提供参考, 同时可以为相关计量器具软件的测试提供借鉴。

关键词:计算机软件与理论,电子计价秤软件测试,静态测试方法,动态测试方法

参考文献

[1]The International Organization of Legal Metrology.General requirements for software controlled measuring instruments[S], 2008

[2]European Cooperation in Legal Metrology.Informative Document Development of Software Requirements[S], 2005

[3]European Cooperation in Legal Metrology.Software Guide (Measuring Instruments Directive2004/22/EC) [S], 2004

计价软件 第2篇

一般来说, 当存货发生实物流转后, 也就产生了成本流转。理论上, 存货的成本流转额按照会计上按成本计价的原则, 应当等同于购入实物的成本额, 但在实际工作中, 医院单位存货品种繁多, 如西药、中成药、草药、医疗耗材、后勤物资等, 流转额非常大, 成本流转额很难完全匹配实物流转额。因此, 在发出存货时, 就要按照一定的计价方法来确定发出存货的成本, 最终目的使发出存货的成本和期末存货的成本, 尽可能接近存货的采购成本, 使因采用的成本计价方式的不同而对医院利润造成的影响降到最低, 减少对医院正常运营的影响。

基本上, 存货发出时有两种成本计价方式, 实际成本计价法和计划成本计价法。前者又包括先进先出法、后进先出法、加权平均法、移动加权平均法、个别计价法等五种计价方法, 后者包括计划成本法、毛利率法和零售价法。软件工程师在设计存货管理软件前, 要结合这几种成本结转方法的管理特点和计算机管理的优势, 综合考虑。一般说来, 这几种方法在软件设计中都应该提供, 医院用户在使用软件时, 自行选择适合于本单位使用的成本结转计价方法。

现在市场上相对成熟的存货管理软件, 如协力商霸、速达、用友、浪潮等, 往往仅提供一种成本结转方法即移动加权平均法。这是一种平均价格, 这种管理模式, 一般的进销存企业尚可使用。但如果对购入成本相当敏感, 对成本核算要求极高的医院, 这样的软件就显得不足了, 如目前现代企事业管理中广泛流行的成本管理, 其对成本极为敏感, 如在医院, 仓库存储部门要对各医疗科室领用的各种存货成本进行精确计量, 因此必须采用成本计价的另一种方法个别计价法。

因为用户需求的多样化, 在开发软件前, 就要仔细调研, 对会计管理学要有相当理解, 这样开发出来的存货管理软件, 才既有功能上的完整性, 又具有充分的适应性。针对常用的成本结转方法, 作一个简单介绍。

⑴先进先出法:先进先出法是先购入的存货先出库, 其成本属于实物成本, 计算机处理时成本价格应由计算机自动分析获得, 其单位成本价格应不具有可修改性, 出货时由用户只录入出货数量, 不录入成本单价, 由计算机自动分析获得成本单价。为此, 计算机必须按时间先后顺序良好的记录购货数量及成本额。该方法出货成本是按最早的购货价格确定的, 用户不能随意挑选存货价格以影响当期利润, 因此其存货成本最接近现行的市场价格, 能较好的反映资产负债表存货的价值。

⑵后进先出法:后进先出法是后购入的存货先出库, 和先进先出法一样, 其成本应由计算机自动分析获得, 其单位成本价格应不具有可修改性。为此, 计算机必须按时间先后顺序记录购货数量及成本, 出货时由用户录入出货数量, 不录成本单价, 由计算机按照和先进先出法相反的顺序分析获得成本。该方法出货成本是按最近的购货价确定的, 用户也不能随意挑选存货计价以影响当期利润, 但是因为后期的价格在正常情况下可能较早期高, 因此计价成本可能较高, 故可使本期利润降低, 但该方法符合会计上稳健性的原则。

⑶个别计价法:个别计价法对出货成本进行个别计价, 适合于对成本相当敏感的企业, 如大型医院, 存货部门购入存货后, 要由各部门领用, 在成本核算较严格的情况下, 各部门的领入成本直接和效益奖金挂钩, 这时候必须对成本进行个别计价, 即必须按照部门需要的产品的市场价格进行计价。在计算机处理上, 必须使用户既能录入数量, 又能录入成本单价。该方法最接近会计上按成本进行计价的原则, 但相对也比较复杂, 即使采用计算机, 工作量可能也比较大, 适应于一般不能互换使用的存货或容易识别、存货品种数量不多、单位价格较高的产品。

⑷加权平均法:是一种全月一次加权平均法, 它是根据期初存货结存和本期收入存货的数量和进价成本, 于月末一次计算存货的全月加权平均单价, 以求得本期发出存货成本和结存存货成本。这种方法必须到月底才能获得成本价格, 和计算机即时即得的管理特点相违背, 因此没有采用其管理的必要性。

⑸移动加权平均法:这种方法因为其简单性, 是计算机软件设计中普遍采用的一种方法。软件工程师在设计存货管理程序时, 都采用这种管理方法, 他可能不知道这种管理方法的会计学名称, 但都采用该方法的管理思路。这种方法, 在入库时, 计算机增加存货的库存量和库存额, 在出库时库存额除以库存量即为单位成本。该方法是手工管理下非常繁琐的一种方法, 但在计算机管理下却是程序设计最简单的一种方法, 因此所有的软件供应商都把这种方法作为存货管理的最重要的方法乃至惟一。

⑹计划成本法:这种方法按计划成本进行度量, 在每一种产品上设置该产品的单位计划成本额, 出库时由计算机自动获得该成本。计划成本法计划成本额的确立需要相当的可操作性, 必须建立在充分调研使之具有充分的可行性的基础之上, 但确立的存货计划成本往往随着时间的推移越来越不具有可操作性, 因此在存货管理软件中和实际管理工作中并不多见。

⑺毛利率法和零售价法:毛利率法是根据本期销售净额乘以前期实际毛利率匡算本期销售毛利, 并计算发出存货成本的一种方法。这种方法由计算机计算出上期毛利率, 然后算出出货成本, 用户只需录入数量。零售价法是指用成本占零售价的百分比计算期末存货成本的一种方法。这种方法具有和加权平均法一样的弊端, 是一种由月末推算月初的管理方法, 并不适合用计算机来处理。

相关文章
创新公共服务范文

创新公共服务范文

创新公共服务范文(精选12篇)创新公共服务 第1篇科学技术是第一生产力,科技公共服务平台对国家或区域的技术创新具有巨大的推动作用。科技...

3
2025-10-24
匆匆中学生读后有感

匆匆中学生读后有感

匆匆中学生读后有感(精选9篇)匆匆中学生读后有感 第1篇匆匆读后感500字_读《匆匆》有感当细细地品读完一本名著后,大家心中一定有不少感...

1
2025-10-24
草莓教学范文

草莓教学范文

草莓教学范文(精选17篇)草莓教学 第1篇“风儿轻轻吹,彩蝶翩翩飞,有位小姑娘上山摘草莓,一串串哟红草莓,好像……”优美的歌词,动听...

3
2025-10-24
仓储类课程范文

仓储类课程范文

仓储类课程范文(精选7篇)仓储类课程 第1篇物流产业是复合型产业,发达的物流能加速传统运输、仓储和零售等行业向现代物流服务领域延伸。...

1
2025-10-24
创造性批评:解说与解读

创造性批评:解说与解读

创造性批评:解说与解读(精选8篇)创造性批评:解说与解读 第1篇创造性批评:解说与解读作为诗性文化重要组成部分的审美批评,同文学艺术实践...

2
2025-10-24
初二地理试卷分析

初二地理试卷分析

初二地理试卷分析(精选6篇)初二地理试卷分析 第1篇莲山 课件 w ww.5 YK J.COM 4 初二地理试卷分析二、试题所体现的新课程理念和...

3
2025-10-24
常州市河海中学文明班小结

常州市河海中学文明班小结

常州市河海中学文明班小结(精选2篇)常州市河海中学文明班小结 第1篇常州市河海中学2008~2009学年第一学期 八(1)班创 文 明 班 ...

2
2025-10-24
财务负责人身份证明

财务负责人身份证明

财务负责人身份证明(精选14篇)财务负责人身份证明 第1篇财务负责人身份证明及签字样本兹证明为我公司财务负责人。特此证明。身份证复印...

1
2025-10-24
付费阅读
确认删除?
回到顶部