时间:2022-09-27 11:53:05
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇编程软件,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词 软件;编程实现;风险;规避
中图分类号:F407.67 文献标识码:A 文章编号:1671—7597(2013)042-051-01
随着社会需求的不断提高,应用于实际生产工作的软件编程结构越来越复杂,软件的功能越来越多,软件体积越来越臃肿,所需消耗的人力物力也越来越多,这就使得在软件开发中所存在的风险变得越来越大,若无法合理规避或消除这些存在的风险,很容易使软件开发陷入无法自拔的深潭,为开发单位或企业带来经济损失。
1 编程软件中存在的风险概述
风险存在于软件开发的整个生命周期,是任意软件项目中都存在的。潜在的开发风险容易对软件的开发和应用带来消极的影响,如拖延软件开发进度和开发时间、增大研发投入成本、降低软件质量等,严重者会导致编程软件的开发过程中断或停止。在软件编程中存在的风险主要可以分为以下几方面:客观性因素如进度因素、成本因素等,主观性因素如人员因素、环境因素、技术因素等。这些因素都会对编程软件的开发带来诸多不确定性影响和风险。若在软件项目计划、估算、构建、管理等方面没有制订合理的规划和估计或在软件项目实施过程中缺乏必要的成员沟通,出现设计、代码、测试、维护等方面的风险问题则很容易导致编程软件发生问题,影响整个软件的品质。
对编程软件进行风险规避分析正是面对上述情况而提出的,用于提升软件产品鲁棒性,降低软件开发过程所面临的风险和损失的一种分析方法。该方法综合考虑编程软件开发过程中涉及的多种相关参数,制定合理的管理策略对编程软件中的多种因素进行适当管理,降低或避免风险。
2 软件开发风险规避步骤分析
在软件开发过程中进行风险规避主要通过风险识别、风险分析以及风险监控三个步骤完成。
2.1 风险识别
该步骤主要集中在项目规划和开始阶段。在项目建立初期,需要根据软件的属性如功能、配置、需求等将项目的风险进行分解和构析,建立风险资料库,邀请与本软件开发相关的专家、编程人员等根据软件应用范围和总体计划等信息对软件开发生命周期内的风险来源和风险种类进行分析和识别,进而根据识别分析结果制定相应的风险规避计划。
风险识别就是利用系统化分析方法对软件开发项目中影响比重大、发生概率高等风险进行确定,然后依照相关的风险管理经验对风险的来源、等级、内容等进行分类,便于后续处理。
2.2 风险分析
在影响编程软件的多个风险因素中,只有部分风险因素是主要因素,会对编程软件的整个开发进度产生最直接、最重要的影响。对编程软件开发项目进行风险分析就是应用定性或定量的分析方法将识别到的风险进行分类,按照不同风险因素对软件项目开发的影响程度将其分为重要、一般、不影响等多个类别,指导后续风险规避计划的制定。
2.3 风险监控
风险监控就是利用所制定的规避计划对软件编程过程进行监控和管理,消除软件开发风险对软件项目带来的不利影响。
3 编程软件风险规避策略
1)确保开发所需资源。对编程软件开发最为重要的是团队核心开发人员的储备。为提高软件开发的抗风险能力应该采取一定的措施和手段做好人员流动、离职等风险的准备和预防工作,确保即便出现少量研发人员流失也能够让软件编程工作处于正常运转状态。其他如开发过程的文档机制、硬件资源等对提升编程软件的抗风险能力同样具有重要作用。
2)增强关键技术的提前调研意识。软件编程最主要的工作内容就是关键位置和关键技术的编程实现。为降低软件开发过程中来自技术方面的风险应该在软件编程过程中及时首先相关技术实现信息,增强关键功能的突破能力,避免合作开发中技术依赖为编程软件开发所带来的高风险和高成本。
3)制定完善的执行计划。项目执行计划书是控制与调整编程软件研发方向、研发时间、研发内容等的基准和依据。整个项目的执行过程与计划书相匹配,并接受相关监控人员的监控。若出现项目时间、内容等的变更则需要及时分析和总结出现变更的原因,制定相应的纠正策略,调整执行计划,尽量消除编程软件开发与执行计划之间的偏差,确保整个开发过程处于可控状态。
4)做好项目的跟踪。在编程软件开发过程中应该对进度中出现的各种数据进行记录和跟踪,在一段时期后对所记录的资料进行整理和分析,从而进一步提高编程软件的开发与管理水平,确保编程软件所面临的风险处于可控或可消除状态。
5)建立和完善风险应对策略。虽然采取必要的风险规避策略可以有效降低风险发生的几率,提升编程软件的品质,但是风险还是存在可出现的。当风险出现时应该根据风险特征制定应对策略,采取预防措施,同时指定专门的风险责任人对风险进行跟踪和应对。风险应对策略的指定原则应该是有效可行的,适用性较强的,可以将具体的风险转化、分担为多个可处理的解决方案,或直接采取一定手段回避风险的影响,确保编程软件的进度不受或承受最低限度的影响。
6)应用现代管理软件对编程软件项目进行风险管理。鉴于风险规避已经成为软件编程过程中需要考虑和注意的一个重点内容,故专门针对风险管理的软件正在逐渐被应用到项目风险管理中。软件企业,特别是中小软件企业在进行编程软件风险管理中应该尽量将软件工程与风险管理进行结合,促使风险规避更加具体,更具针对性和可实施性,进而综合提升编程软件的抗风险能力。
参考文献
[1]黄石磊.浅谈软件编程的风险规避[J].科技创新导报,2010(4).
1组织方式
实际上,上述选题机制是将分散的毕业设计引导形成基于团队的角色学习环境,学生在教师的统一带领下,对项目进行设计并划分模块,独立负责不同模块的开发,并且在教师的指导下,充分体验不同模块之间的沟通和集成问题,使学生能够贴近企业项目开发的实际情境,体会到实际项目身临其境的感觉,从而提高毕业设计对于毕业生的锻炼价值和质量。
敏捷宣言认为人和交互胜过过程和工具。以此原则为指导,在毕业设计实施过程中,要求学生组内成员和小组之间加强交流沟通,对于毕业设计过程中产生的文档,要求学生着重记录交流过程,而非交流结果。敏捷宣言认为客户合作胜过合同谈判,意义在于业务人员应该参与到项目开发的整体过程中,达到整个项目开发团队能够把握项目开发方向。对于软件工程毕业设计来说,意味着在选择毕业设计所涉及到的项目原型时,应尽量贴近学生实际,例如选择教务管理系统、教学管理系统、图书管理系统等学生经常接触和使用的应用系统,或是指导教学正在从事的横向或纵向课题。要求选择指导教学或学生自己能够扮演客户的角色,学生对于所开发的系统的需求了然于胸。
2管理方式
敏捷宣言认为可以工作的软件胜过面面俱到的文档,可以工作的软件是进度主要的度量标准。以此原则为指导,对毕业设计过程中要求撰写的文档可适当弱化,而是要求将项目程序代码保存到统一版本库,并保持版本库中的代码是可部署和运行的。极限编程的推荐实践方式认为对于项目开发应该尽早测试、经常测试、自动测试。在毕业设计的实施过程中,要求学生对于测试计划、测试用例及测试驱动开发(TestDrivenDevelopment,TDD)都有所了解,使用由学生指导教学编写的自动测试来监控开发进度,支持系统的演化,并尽早发现缺陷。上述管理方式就现阶段软件工程专业的毕业设计来看,实施比较困难,但应尽力发展,从而弥补现有人才培养方案中对于软件测试不够重视的缺陷。
极限编程推荐增量设计、开发和频繁重构。这也是毕业设计过程中应采纳的做法。对于一个指定的项目,要贯穿整个毕业设计过程,以各个阶段时间点为标志,要求学生以增量的方式来完善项目开发,在毕业设计过程中,要体现项目的渐进式开发,各个时间点都要求学生完成项目的相应部分,并且要求项目代码的主版本随时处于可部署、可运行状态,对于系统架构和代码结构等方面,可通过重构来优化。对于代码重构的的粒度和频率,可由指导老师根据实际情况具体把握,以模块化和符合软件设计模式等特征为参考依据。
3考核方式
鉴于以上组织和管理方式,在进行毕业设计(论文)考核时,应在传统的毕业答辩环节考核基础上,考虑以下因素:一是在毕业答辩考核时,要注重考查学生所写代码的功能,而不是形式上的开发文档。二是极限编程推崇结队编程(PairProgramming),因此,在毕业设计进行过程中要求学生不要局限于自己的毕业设计课题,而应该是两个人一起完成两个课题,双方都参与到对方的项目中去。在毕业答辩考核时,也应采取相应的考核办法,交叉检查学生的编码工作量。三是极限编程提倡短周期。也就是说,毕业设计过程中,应该交付多个可运行的系统版本(功能是递增的,但指定功能的版本是可用的)。因此,在毕业答辩过程中,要求学生就系统的多个可运行版本进行演示。总而言之,软件工程专业的毕业设计(论文)的考核,除了依据传统的毕业答辩考核标准之外,还需结合敏捷开发和极限编程的特点,综合考查编码协作、增量设计、测试驱动开发、持续集成等特征是否体现在学生毕业设计(论文)中。
典型过程及相关支撑工具
在确定指导老师和设计课题后,学生将展开毕业设计的具体过程,根据以AD和XP为指导思想的典型毕业设计过程,具体过程如图1所示。以上典型过程中的具体步骤,都有成熟的支撑工具可选用,使整个毕业设计过程实现信息化管理,其中项目管理工具可使用PivotalTracker,测试管理工具可使用MercuryQualityCenter,自动测试可使用开源集成测试环境,如Jenkins,代码管理工具可使用VisualSVN(服务器端)和TortoiseSVN(独立客户端)及SubclipseSVN(IDE集成客户端)。
软件项目管理工具PivotalTracker是由公认的敏捷软件开发老大PivotalLabs开发的基于故事、简单、有效、敏捷的软件项目管理工具,适用于各类型的项目,并通过敏捷项目管理的理念让项目能够有条不紊的进行,使项目的开发效率大大提高。操作界面如图2所示。
测试管理工具MercuryQualityCenter提供了基于Web的,可在广泛的应用环境下自动执行软件质量测试和管理的功能,使IT团队能够在开发流程完成前就参与应用程序测试。这样将缩短时间表,同时确保最高水平的质量。操作界面如图3所示。版本库管理工具SVN是用于实现对代码、文 件等的修改、删除、增加等操作进行记录,并且可以追溯每个修改细节的通用工具,它基于C/S架构,需要服务器和客户端软件,其中SVN服务器可以使用VisualSVN,独立客户端可使用ToitorseSVN,而IDE集成客户端可使用Subclipse。
结语
【关键词】C语言 计算机 软件编程
C语言应用建立在简单编程语言的基础上,是一项新型的编程语言确保了编程任务的顺利完成。使用者在实际的应用过程中,不受各项限制条件影响,可以结合自身的实际使用需求,严格按照C语言的编程要求进行编程。通过编程运行应用软件的实施结果上可以看出,C语言是计算机中的高级编程Z言,对提升计算机技术应用效果具有重要作用。
1 C语言下的计算机软件编程实验技巧
1.1 熟练掌握指针运用方法
指针是C语言编程中一种特殊的类型变量,能够快速处理编程设计过程中存在的复杂问题。指针的三要素主要包括指针名、值和类型。在对指针编程过程中,主要确保一般变量和指针的相同性。将指针应用于数组表示和函数的参数返回值中。
1.2 明确C语言特有函数功能
特有函数在C语言编程中被广泛应用,需要充分展现出函数的功能,编程设计人员需要将返回值、函数名字和参数名等项目进行定义。编程库中的函数主要是由C编译系统提供,需要确保函数系统的合理定义,确保程序调用的合理性,将“#include指令”包含到所用文件中。例如,在程序运行过程中,通常会运用sqrt函数,为了确保程序的合理运行,需要将#include“string.h”应用到头文件中。
1.3 掌握算法程序设计技巧
算法是程序设计的灵魂,需要明确算法技巧的应用方法,运用自然语言和流程图合理表达算法。要求程序设计员需要熟练掌握流程图符号,将其作为计算机之母,通过对数学知识的牢固应用,有助于提升计算机编程效率。
1.4 掌握位运算及文件知识
位运算是C语言之间的重要特色,也是计算机中的高级语言运算方法,自身具有唯一性和独特性特点。需要将位运算作为二进制位对象,严格按照程序要求进行运算。程序设计员在编程时,需要将所写的程序存储到文件中,提升数据查找效率。
2 计算机软件C语言编程案例
2.1 混合软件编程方法
随着科学技术的快速发展,需要加大对语言混合编程技巧的应用,对提升系统编程开发效率具有重要作用。在对混合软件编程方法进行研究时,主要包括以下两方面研究内容:
(1)需要将汇编语句嵌入到C语言源程序中,例如,在将asm汇编语句嵌入到C语言源程序中,需要将asm mov as,5/*将5发送到ax寄存器*/,将汇编语句嵌入到C语言源程序中时,需要利用大括号将嵌入程序括起来,例如:
Main( )
{asm{
mov ah,2
mov bh,5
int 10h
}
}
本次实验在实施过程中,在对程序进行嵌入式设计时,需要严格按照固定的格式进行嵌入式输入,并且需要在嵌入的各行代码前加“asm”。程序设计人员在进行嵌入式程序设计时,需要满足以下条件要求:“asm”关键字不可少,并且需要将其放置在指令代码前,需要确保嵌入汇编语言指令代码能够与正常的C语言程序混合使用,用“;”作为C语言的分隔符;将“/%”和“*/”作为C语言的注释分界符。
(2)做好C语言程序和汇编程序的编写工作,确保编译目标代码模块的独立性,确保链接的合理性。首先,明确C语言程序汇编语言中各种子程序和定义变量的合理性,确保汇编语言的合理调用。由于混合编程语言由若干个功能模块共同组成,各功能模块语言能够独立完成编程工作,并且通常会以函数的形式展现出来。设计人员需要结合每一模块的特点,来合理选择独立的语言编程系统,并形成目标性的文件,确保能够形成可视性的文件。其次,需要加大对参数传递问题的合理解决,从参数传递原则方面对C语言的程序调用汇编程序进行分析,运用推栈将参数传递给汇编程序。例如,在对voidaa(char*p,inti)函数进行编写时,主要是利用汇编语言进行编写,确保编译工作能够在小内存模式下开始,系统在调用时,将其编写成aa(&q,n)。
2.2 混合软件编程实例分析
在开展混合软件编程工作时,需要纯5个数中寻找最小值,将主程序设为“min.c”,汇编子程序设为“qiumin.asm”。主程序的编写形式主要是利用C语言进行编写,汇编子程序的编写形式主要是利用汇编语言编写,在实际的应用过程中,通常会被主程序所调用,以便完善对最小数的寻找,程序代码如下所示:
/*文件名为:min.c*/
#include
Int extern qiumin(int count,int vl,int v2,int v3,int v4,int v5);/*声明qiumin为外部函数*/
Main()
{
int min;
Min=qiumuin(12 ,54,8,4,23,9);
Printf(“The min is%d\n”,min);
}
主要是利用C语言和汇编语言混合的编程反复发,确保应用程序能够满足运行速度的要求,编程人员需要做好寄存器的合理分配,明确影响程序的因素。为了确保程序的合理运用,需要确保程序预报语言设计之间外部接口的相互协调性,提升外部调用效果。
3 结论
近年来,信息技术发展迅速,计算机软件是信息化社会的必需品,需要加大对C语言的应用力度,将其应用到各个领域中,确保行业的高效运营,为计算机软件的发展奠定良好的基础。同时,确保C语言软件能够广泛的应用到计算机编程实验中,强化C语言的实践效果,利用简单的C语言编程,提高软件的功能性,拓宽计算机软件的应用领域,确保计算机软件的多样化发展,向网络化和信息化方向不断迈进。
参考文献
[1]龚晨.基于C语言的计算机软件编程实验研究[J].电脑编程技巧与维护,2016(02):36-37.
[2]芮素文.基于C语言的计算机软件编程分析[J].信息系统工程,2015(01):40.
[3]王志超,赵越.基于C语言的计算机软件编程实验研究[J].科技创新导报,2015(11):45.
随着现代机械工业的发展,数控技术是当今先进制造技术和装备最核心的技术,计算机辅助设计(CAD)和计算机辅助制造(CAM)已显的尤为重要,并广泛应用于航空、航天等国防工业产品机械制造中。使用CAD/CAM系统产生的NC程序代码可以替代传统的手工编程,可以提高加工效率与质量,缩短生产周期,降低产品成本,从而取得良好的经济效益。
MasterCAM软件是一种功能强大CAD/CAM软件,广泛应用于机械加工、模具制造、汽车工业和航天工业等领域,它具有二维几何图形设计、三维曲面设计、刀具路径模拟以及加工实体模拟等功能,并提供友好的人机交互,从而实现了从产品的几何设计到加工制造的CAD/CAM一体化。
下面结合实例介绍MasterCAM软件在数控铣削加工自动编程中的使用。
二、MasterCAM软件数控编程一般过程
MasterCAM软件数控编程一般过程如下:零件加工工艺分析CAD几何造型刀位轨迹生成CAM生成最终加工代码。
1.零件加工工艺分析
在运用MasterCAM软件对零件进行数控加工自动编程前,首先要对零件进行加工工艺分析,确定合理的加工顺序,在保证零件的加工精度的同时,要尽量减少换刀次数,提高加工效率,并充分考虑零件的形状、尺寸、加工精度,刚度和变形等因素,做到先粗加工后精加工,先加工主要表面后加工次要表面,先加工基准面后加工其他表面。如图1所示,零件可通过虎钳装夹,先用键槽刀或钻头加工下刀孔,再用铣刀进行铣削加工。该零件在数控设备上加工的工艺流程为:加工下刀孔轮廓半精粗加工轮廓精加工清轮廓角。
2.CAD几何造型
建立零件的几何模型是实现数控加工的基础,MasterCAM软件具有进行二维或三维的设计功能,具有较强CAD绘图功能。可以运用Design模块建模,也可以根据加工要求使用Mill模块绘图功能来直接造型。由于MasterCAM软件系统内设置了许多数据转换档功能,可以将各种类型的图形文件(如AutoCAD、CAXA等软件上的图形)转换至MasterCAM系统上使用,如图2所示。
3.刀位轨迹生成
(1)确定加工参考基准点。
先根据零件加工图样的关联尺寸要求,确定数控加工中心的装夹与加工基准点。将零件放置在机床工作台面,采用大虎钳进行装夹。采用虎钳装夹,因为虎钳内侧为不活动的,便于校准基面,确立加工基准点,将此点输入到加工中心,将此点设置为加工中心加工的参考零点。示例采用第四象限设基准点(即X+,Y-),如图3所示。
(2)编程零点的确定。
编程零点的确定,是根据其图样的尺寸要求来确定的。一般是图样的工艺要求尺寸链,采用和图样一样的基准,在数控加工的尺寸链也就一致了,也就保证了图样尺寸要求。编程零点如图4所示,根据图样尺寸链与尺寸标注要求,在对X方向取X+,在Y方向对Y分中,编程零点取X 0.0,Y 0.0。
(3)刀位轨迹的生成。
进行合理的刀位轨迹规划,使所生成的刀位轨迹无干涉、无碰撞且稳定性好,是提高编程效率的关键。从工艺考虑对凹槽采用分多次粗铣和一次精铣,然后划分加工区域,粗加工给出每次加工余量,精加工采用同一直径的铣刀,根据粗糙度要求给定切削转速度( S)与进给速度( F),根据具体情况选择切削类型、切削参数、刀轴方向和进退刀方式等参数,生成的刀位轨迹,如图5~图8所示。
4.CAM仿真
利用MasterCAM系统提供的零件加工模拟功能,能够观察切削加工的过程,可用来检测工艺参数的设置是否合理,零件在数控实际加工中是否存在干涉,设备的运行动作是否正确,实际零件是否符合设计要求。同时在数控模拟加工中,系统会给出有关加工过程的报告。这样就可以清楚地监控到零件在加工过程中的过切与欠切、刀杆和联接系统与零件及夹具间的干涉碰撞,从而保证了数控编程的质量,减少了试切的工作量和劳动强度,提高了编程的一次成功率,大大提高生产效率。模型切削仿真,如图9所示。
5.生成最终加工代码
MasterCAM软件本身提供了百余种后置处理PST程序。对于不同的数控设备,其数控系统可能不尽相同,选用的后置处理程序也就有所不同。对于具体的数控设备,应选用对应的后置处理程序,后置处理生成的NC数控代码经适当修改后,如能符合所用数控设备的要求,就可以输出到数控设备,进行数控加工使用,如图10、图11所示。
关键词:软件设计;面向切面编程;AOP
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)03-0595-02
An Analysis of Aspect Oriented Programming in Software Design
DENG Fang-lin
(Guangzhou maritime college,Guangzhou 510725,China)
Abstract: As the complexity of software increases nowadays, software design gains more and more importance. With the increasing soft? ware reuse in current software projects, the dependency between different modules deepens. The fundamental principle of low coupling in software projects is hard to be clearly realized. Reasonable decoupling becomes a difficult problem in software design. Aspect oriented pro? gramming is one of relatively more practical decoupling methods.
Key words: software design; aspect oriented programming; AOP
面向切面编程(也叫面向方面),英文简称AOP(Aspect Oriented Programming)。是通过预编译方式、代码级扩展或运行期动态实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。利用AOP可以对业务逻辑的各个部分进行横向隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性。
1面向切面编程方式的产生
在开发软件系统中,经常会遇到功能比较单一,在系统中分布广泛但是与具体业务逻辑无关的功能逻辑。例如日志,缓存等功能。这些功能比较独立,和业务逻辑的相关性不高,但系统的各层次都需要对其进行关注。
以往系统开发,更注重把系统纵向分层,相邻的层次间存在单向引用关系,不相邻的层次间相互透明,这是传统OOP开发方式带给系统架构方式。但这种开发方式只是将纵向的功能隔离,无法和各层次通用性的功能消除耦合关系,导致通用性的模块维护比较困难,因此引入横向切面的概念,将日志,缓存等这些通用各作为一种横向切面,将需要进行这些功能处理的地方叫做切面关注点,将切面和其关注点的耦合关系剥离出来组成新的模块对切面及其关注点进行编织,这样使业务逻辑的开发人员不必关注于具体的切面逻辑,消除了切面功能和业务逻辑的耦合。这种开发模式就叫做面向切面编程(AOP)。
2面向切面编程的实现方式
2.1提取横向切面
一般提取切面的条件:1)功能逻辑相对独立;2)功能逻辑不属于核心业务逻辑;3)功能逻辑在系统中多次使用,通用性较强。
2.2确定切面关注点
业务逻辑中需要调用切面逻辑的地方即为切面关注点。此步骤可以根据业务需求确定使用切面逻辑的相关点。
2.3对切面及其关注点进行代码编织
定义切面逻辑在切面关注点得位置运行。
3面向切面编程的实际应用
下面代码以日志系统为例简单对AOP使用进行描述,示例代码为java使用AOP之前,原系统需求:
//服务层的业务实现类
public class Service {
public void updateUserInfo(User user){
//业务逻辑代码实现,此处省略
//添加日志
Log.Info(new Date().toString() +“:“操作”+“Service . updateUserInfo ()”);}
public void setUserDisable(int userId){
//业务逻辑代码实现,此处省略
//添加日志
Log.Info(new Date().toString() +“:“操作”+“Service . setUserDisable ()”);
Service使用
下面使用AOP对此进行重构:
1)提取日志切面
切面类
public class LogAspect{
//日志记录方式
public static void Log(string methodName){
Log.Info(new Date().toString() +“:“操作”+ methodName);
2)切面关注点
这里Service类的所有方法都需要日志,所以关注日志切面的点为Service类的所有方法。
3)对切面及其关注点进行编织
这里使用java内置的动态的方式来实现代码编织
//为Service类实现动态类ServiceHandler
public class ServiceHandler implements InvocationHandler {
//要的原始对象,这里为Service类
private Object objOriginal;
public ServiceHandler (Object obj) {
this.objOriginal = obj ;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result ;
//调用原始对象的方法
result = method.invoke(this.objOriginal ,args);
//调用日志切面功能,组装到Service类的每个函数调用后
LogAspect. Log (method.toString());
return result ;
}}
4)执行调用方法
初始化关注点对象
Service service = new Service ();
InvocationHandler handler = new ServiceHandler (service);
Service proxy = (service) Proxy.newProxyInstance(
service.getClass().getClassLoader(),
service.getClass().getInterfaces(),
handler);
具体调用
proxy.省略平台还没有权威的框架支持,也于.net从语言级别不支持动态有关。
5结束语
AOP作为一种有效的软件设计方式,对原有的软件设计体系是一个有效的补充。它很好地体现了软件设计的基本思想――高聚合,低耦合,为软件设计中相关的问题提供了合理的解决方案。虽然在现有通用的解决方案中还没有将其列为必要的一项,但相信随着软件系统的整体升级,对相关问题日益凸显后,AOP终将被人们愈发重视。
参考文献:
[1]林信良.spring2.0技术手册[M].北京:电子工业出版社,2007(4).
[2]程杰.大话设计模式[M].北京:清华大学出版社,2007(12).
讯:在当前实体经济趋缓,网络经济蓬勃发展之际,无论是互联网企业还是大量传统企业,都不得不患上了网络营销人才“饥渴症”,拥有一张业内权威的网络营销专家证书,对于当下求职人员来说,无疑是一块最佳敲门砖。7月31日,百度推广正式在京推出了“百度认证”知识培训体系及认证服务,提供有关网络营销的理论知识及实践课程,在当前网络营销人才极度匮乏的环境下,有望取代微软、思科等认证,成为最抢手的培训课程。
51JOB的《中国互联网营销职业发展白皮书》显示,仅北京地区,每三个网络营销岗位需求,只能招到一位合适的人员。全国来看,2012年上半年,网络营销岗位的平均薪酬已接近8万元,较前两年岗位的平均薪酬增幅已达到15%,企业对网络营销人才需求量为116万,整体缺口超过60万。据预计未来两年互联网营销人才的需求量分别在160万、203万。
与之相对应的是,以微软、思科等培训认证体系的降温,据统计,世界范围内共计有12万位MCSE2003,15万多位MCDBA及3万多位MCSD最具代表性的微软认证职位产生,但是这些认证人数的60%以上的比例均产生在2009年以前,这是IT行业一直在进步,但此领域人才趋于饱和的写照。
行业专家表示,IT行业发展有着充分的阶段性特征,在计算机普及后的若干年内,软件编程成为一种新的高科技行业,需要大量的软件工程人才,微软等行业认证成为了该行业最权威的资历证明。如今随着互联网行业的日新月异,行业导向开始发生变化,随着大量企业日益电子商务化,传统的经济模式开始转型,世界首富盖茨曾说:“21世纪要么电子商务,要么无商可务!”据统计,预计2012年中国电子商务总规模将突破6.4万亿。传统企业的电子商务化催生网络营销行业的高速发展,具备相关优秀技能的求职者无不遭到企业争抢。
据悉,作为业内最权威也是含金量最高的网络营销认证体系,“百度认证”分为“百度认证营销推广师”、“百度认证营销顾问”、“百度认证高级营销顾问”、“百度认证营销专家”四个等级,为落实工信部“翔计划”,帮扶中小企业,百度此次还正式启动了“企业英才计划”,在年内免费帮助超过6万家的企业培训出专业的“百度认证营销推广师”,以缓解日益严峻的网络营销推广人才需求问题。(来源:eNet硅谷动力)
关键词:计算机;软件开发;编程语言
一、引言
对于计算机应用软件的研究与开发来说,选择一项合适的编程语言对其影响十分深远,编程语言的适配度将决定计算机应用软件的优质度。其中编程语言是一项十分复杂的工作程序,它既影响着计算机应用软件的开发难度与开发效率,也影响着计算机应用软件后期的维护难度与维护效率。现阶段随着计算机技术的不断发展,编程语言也得到了大力研发,编程语言的种类也越来越多,每一种不同的编程语言都具有着其独特的性质与作用。
二、结合相关计算机应用软件的具体开发结构进行选择
一般情况下,在进行计算机应用软件的相关开发编程语言的选择过程中,往往都是一个具体的计算机应用软件对应一个固定的编程语言,但是在特殊情况之下,也会存在研究开发一个计算机应用软件时同时选择多个不同的编程语言的情况。出现这种现象的主要原因还是在于在一个具体的计算机应用软件的开发过程中,该应用软件的结构以及功能都会随着区域和时间的变化而不断发生变化,换言之,在一个应用软件中的不同区域所需要的编译效果也是不同的。因此,在进行计算机应用软件开发中的编程语言的选择过程中,一定要结合相关应用软件的具体需求与实际结构变化选择最合适的编程语言。除此之外,当一款计算机应用软件在开发过程中选择了一项或几项最合适的编程语言之后,并不意味之该应用软件在后期更新与维护过程中不会再选择或者替换其他的编程语言,也许在该应用软件开发的时候这几项编程语言十分适合该软件,但在两年或者更久的时间之后这项编程语言就不一定会适合该应用软件的更新与二次开发。因此,一个计算机应用软件的编程语言并不是一成不变的,在为计算机应用软件的开发选择编程语言的时候一定要结合应用软件的具体性质与结构变化进行实时选择与实时更新。比如,为了最大限度地提高所选的编程语言对相关计算机应用软件开发的适配度,相关软件开发人员可以遵循以下方式进行具体的编程语言的选择。首先技术人员需要对将要开发的应用软件的整体结构进行总体的把握与设计,其中不仅包括该应用软件所开发的主要功能以及属性,还包括该应用软件的延伸功能与后期维护等问题。其次软件开发人员还要在进行应用软件首次语言编写的过程中就将应用软件的所有功能以及延伸功能都充分挖掘出来,并结合应用软件的功能需求选择最佳的编程语言。比如相对于C语言与C++语言来说,JAVA语言更适合具有简单功能需求的应用软件开发,而C语言和C++语言则相对适合用于开发具有相对繁琐功能的计算机应用软件的开发。最后还要考虑所开发应用软件的数据规模,并根据不同的数据规模来选择合适的编程语言,比如如果是开发相对功能比较简易的计算机应用软件的话,则更加适合选择ACCESS语言。通过整体结构把握与具体功能把握相结合的方式来选择计算机应用软件开发的编程语言,一方面既有利于提高相关计算机应用软件的开发效率,另一方面也可以在一定程度上降低该应用软件的后期维护难度。
三、根据对相关计算机软件开发编程语言的熟悉程度进行选择
对于很多计算机软件开发人员来说,都希望能够在每一次的计算机应用软件的开发过程中进行勇敢的尝试与创新,从而实现自己的职业理想与自我完善。但是在实际的计算机应用软件开发项目中,尤其是对于非专业研究类的应用软件开发项目来说,开发人员在选择对应的编程语言的时候还是要尽量从自己知识范围内的熟悉掌握的编程语言入手。这主要是因为在计算机应用软件的开发过程总选择熟悉的编程语言能够在软件开发初期就帮助开发人员计算与估量出大概的项目进度表。一方面可以有效避免在计算机应用软件开发过程中出现其他的不必要的变数,使得整个项目完成得更加具有计划性与体系性;另一方面也可以有效提高计算机应用软件开发的效率与质量,最大限度地避免各种意外的发生概率。因此,软件开发人员的技术储备将决定一个计算机软件开发中所选用的编程语言的适配范围与选择广度,对于计算机应用软件的开发与后期维护来说,当然是所选择的编程语言范围越广,开发与后期维护的难度也就越低,效率也就越高。因此相应地软件开发人员的自身知识与技能储备在计算机应用软件开发的编程语言选择上就发挥出了至关重要的作用。只有不断提高软件开发人员的技能储备,才可以确保在相关应用软件开发编程语言的选择过程中拥有更多的选择,从而最大限度地避免在开发过程中可能会遇到的各种问题。比如,为了提高软件开发人员对相关编程语言的熟悉程度与掌握程度,从而在计算机应用软件开发时能够拥有更多的编程语言可以选择,相关计算机软件开发公司要提高对相关软件开发人员的技术储备与知识储备的考察强度与审核力度。首先针对于具有不同特长的软件开发人员,即可以十分熟练地掌握几项编程语言,但对于其他的编程语言都不太了解,这类技术人员其实已经十分优秀,但为了进一步提高与完善其综合水平,公司相关部门可以就这部分技术人员开展互助小组活动。换言之,掌握不同编程语言的两个或者三个技术人员可以结成学习对子或者学习小组,互相学习对方所熟练掌握的编程语言,从而切实达到互相进步的目的。其次还可以通过科普讲座的方式,让不同的软件开发人员对于不同的编程语言都能够有一个更加深入的了解,不断丰富软件开发人员的专业技能与综合水平。通过这种方式,软件开发人员所熟悉的编程语言将会得到一个质的提升,那么在进行计算机应用软件开发编程语言的选择时,也将会大大提高选择的广度与深度,有利于提升应用软件的开发效率与开发质量。
四、综合考虑不同编程语言的特性进行选择
每一种不同的编程语言都有其存在的理由与价值,这而在相关计算机应用软件开发中编程语言选择的过程中,具体应用软件编程语言的选择则要充分考虑到不同的编程语言的特点与性质。当前阶段比较常见的计算机应用软件开发所用的编程语言主要有以下几种,其中分别是C语言、C++语言、JAVA语言、ACCESS语言以及PESCAL语言等几种。以上这几种不同的编程语言都有着其独特的使用优势与适用范围。其中应用最广泛的是C语言,该编程语言是所有的计算机语言里最常用的一种,从开始出现截止到目前为止已经拥有四十几年的应用历史。而C语言最大的优势就是拥有十分丰富的运算符、数据结构,但是语法却十分简洁且语法要求也相对较低,功能十分强大。除此之外,C语言还是一种兼容能力很强的编程语言,通过C语言编程开发的计算机应用软件可以十分方便地移植到其他类型的计算机上。因此相关计算机软件开发人员在进行应用软件的编程过程中应该以提升工作完成质量为前提,以提升工作完成效率为目标,在结合实际应用软件开发需求的基础上,充分考虑不同编程语言的优势与特色,从中选择最合适的编程语言,选择最规范的软件开发程序,从而达到顺利完成工作任务,提高工作效率的目的。比如,以C++语言为例,作为C语言的拓展与延伸,C++语言在汇聚了C语言的众多优势与特点的基础上,又在应用软件的编程过程中注入了新的编程思想与编程模式,可以更加贴近与满足计算机应用软件的开发需求。作为一种全新的编程语言与编程形式,C++编程语言也在计算机编程领域得到了广泛的应用。结合C++语言的特色与优势,软件开发人员在计算机应用软件开发的过程中就可以做出更加合适与科学的选择。尤其是在大部分的计算机应用软件的开发过程中,针对于具体的硬件资源的使用是十分有限的,而且在很多时候收到运行环境与开发平台的限制,很多编程语言都无法实现很好的兼容,这时就完全可以选择C++语言作为应用软件的主要编程语言。C++语言可以在有限的外部环境与硬件资源条件下实现对环境与资源的最大化利用。
五、总结
综上所述,计算机应用软件的研究与开发是一项极其艰巨与复杂的工程,很多因素都会对其最终的研发效果与研发质量产生直接或间接的影响,其中编程语言的选择对于这项工程的完成则发挥着至关重要的作用。因此,计算机软件开发人员要不断提高自身素养与技能水平,充分掌握各种编程语言的应有优势与适用范围,在结合具体的计算机应用软件开发需求的基础上,选择最合适的编程语言,从而实现计算机应用软件的高效率与高质量开发。
参考文献
[1]王树琴.计算机应用软件开发中编程语言的选择研究[J].软件设计开发,2017(19):219.
关键词 极限编程技术;软件开发;重要作用
中图分类号:TP313
文献标识码:A
文章编号:1007-7316-(2014)02-
一、极限编程技术在软件开发中能够控制风险
在软件开发的过程中,风险是不可避免的,这就会导致软件开发进度受到影响,并且不利于保证软件开发的正常进展。而借助于极限编程技术在软件开发过程中的应用,可以控制风险,尽可能地确保软件开发过程的正常进行。
(一)极限编程技术在软件开发中能够控制进度延迟的风险
极限编程技术的时间非常短暂,所以,这种技术对于进度延迟的现象是非常不容许的。在运用极限编程技术的过程中,最为首要的就是要开发出那些具备最高的应用性能的功能模块,只有这样,客户才会发现软件是能够利用的,从而方便客户的使用,不应该像传统的软件开发方法那样仅仅提供文档信息。与此同时,对于开发完成的软件产品,一定要定期对客户进行回访,并且根据客户的需求进行不断地改进,从而能够最大限度地迎合客户的需求。
(二)极限编程技术在软件开发中能够控制项目被取消的风险
在利用极限编程技术来进行软件开发的项目中,先开发出具备较高的应用性能的功能模块以满足客户的需求,在这种情况下,如果项目被取消,那么,就不会像传统的软件开发方法那样面临巨大的损失,仍然有许多功能模块是能够利用的,从而能够节约大量的软件开发成本。
(三)极限编程技术在软件开发中能够控制不被客户认可的风险
在利用极限编程技术来进行软件开发的项目中,客户也参与到软件开发过程中来。在开发遇到问题的情况下,软件开发人员会和客户进行相互沟通,以便推动软件开发过程的顺利进行。
(四)极限编程技术在软件开发中能够控制缺陷率高的风险
在利用极限编程技术来进行软件开发的项目中,可以借助于自动化测试和测试先行的编码方式来最大限度地控制缺陷,一旦出现缺陷,客户就能够在最短的时间内察觉出来,从而能够和软件开发人员一起在最短的时间内进行处理。
二、极限编程技术在软件开发中能够提高质量
通常情况下,质量是由观察者来进行决定的,而质量的具体内涵则是根据不同的风险承担者而存在着差别的。在利用极限编程技术来进行软件开发的项目中,极限编程技术能够最大限度地保证所开发出的软件产品的质量,它确保质量的质量指标有很多。表1列出了一些质量标准,并详细说明了极限编程技术是如何确保质量的。
表1极限编程技术确保质量的质量指标
指标 描述 极限编程技术实践
易用性 在最终用户看来系统易于使用 现场客户
可伸缩性 容量(用户、数据量等)不断增加时,系统仍能够处理 测试
持续集成
可用性 用户可以使用系统的时间百分比 简单设计
重构
测试
可维护性 度量修复缺陷所需费用的指标 测试
集体拥有
编码标准
结对编程
可支持性 在运行时,修补或升级系统的难易程度 简单设计
测试
持续集成
功能性 系统的特性满足客户需求的程度 现场客户
用户故事
比喻
扩展性 在系统中添加新特性的难易程度 简单设计
小型
持续集成
平均故障间隔 系统可靠性的度量指标——
两次故障之间的平均时间
测试
集体拥有
编码标准
结对编程
三、极限编程技术在软件开发中能够管理变化
在利用极限编程技术来进行软件开发的项目中,能够确保在软件构建期间和需求收集期间对软件项目进行修改的成本相同,能够最大限度地节约成本。极限编程技术能够实现修改成本的均匀化,这种技术没有必要明确地指定需求。与此同时,软件开发小组也没有必要迫切地要求客户看到未来可能的需求。极限编程技术来进行软件开发就好比一次不能够准确界定最终的目的地的旅行。倘若客户能够带领软件开发成员快速地提供业务价值,并且及时进行反馈,那么,整个软件开发过程一定能够非常顺利地开展。
四、结束语
综上所述,本文探索了极限编程技术。虽然极限编程技术已经被提出了十多年的时间了,然而,这种编程理念仍然是一种新兴的软件开发方法,值得相关领域的专家和学者继续进行在不断的探索和完善。希望通过本文的研究,能够抛砖引玉,引起国内外专家学者对于极限编程技术领域的进一步的重视。
参考文献:
[1] 贺亚茹. 极限编程(XP):概念、特点和应用[J]. 新西部(下半月), 2008,(12)
[2] 张鹏,唐发根,林广艳. 软件架构设计在XP方法中的实施[J]. 计算机工程与应用, 2003,(33) .
[3] 王晓华,赵明. XP过程对软件缺陷影响分析[J]. 航天控制, 2008,(01) .
[4] 周立力. 极限编程的质量保证分析[J]. 计算机应用与软件, 2010,(04) .
[5] 王晓华,赵明. 一种XP项目迭代周期估计方法[J]. 计算机应用, 2007,(05) .
[6] 林明泉,谭云兰,邓易偲,余友儒,刘粱军. 基于极限编程的电子政务考评平台的研究与开发[J]. 科技广场, 2009,(05) .
[7] 廖瑞华,文海英,胡英. 极限编程(XP)方法及其应用[J]. 电脑知识与技术, 2009,(27) .
[8] Amr Elssamadisy,Gregory Schalliol. Recognizing and re-sponding toBad Smellin Extreme Programming[J] .ICSE‘02,May 19-25,2002. :617-622 .
关键词:AUTOCAD;VB;G代码;数控车自动编程
数控加工自动编程软件很多,一般CAD/CAM都有这样的自动编程功能。如PRO/E、UG等软件,结构庞大,软件学习也复杂,并且价格也昂贵。假若仅仅用于数控车床的自动编程,就如同杀鸡用牛刀,显然很浪费。使用简洁,操作方便,专门用于数控车床加工的小软件想必有一定的存在必要。开发出一种能够使数控车床编程变得更加简单,更加智能的软件对于个人来说也是一种挑战。
参数化设计、三维运算内核的开发,对于个人来说是遥不可及的事情。个人开发设计一种图形设计软件也同样不太现实。也只有借鸡生蛋的方法,借用一种被广泛使用的图形设计软件,获取工件轮廓坐标,和线条特征,经过软件进行编译,最后得到需要的数控加工程序。
因此,此软件的功能被确定为能够获取工件轮廓坐标,和线条特征,能够进行数控程序编译,同时为了能检验程序的正确性,最好还能够有可视化的模拟功能。
AUTOCAD因其灵活性和接口的多样性被广泛的使用在机械设计领域。在其能生成的文件格式中有一个二进制文件,格式为DXF的文件。DXF文件中包含着AUTOCAD图形文件中所有对象的信息,其中包含着轮廓线的线型和坐标信息。使用二维功能强大的AUTOCAD软件绘制轴类零件的外轮廓显然是一件非常容易的事情。于是本数控车床自动编程软件的运行机理就如下图所示。本软件的开发工具使用VB,双划线部分为本软件要实现的功能。
一、坐标的获取
首先使用CAD软件绘制轴类零件,在图形文件中只包含工件的外轮廓线条,也就是数控车的精车所走的刀路,而其它无关线条对坐标的获取产生干扰。典型的图形如图所示。图1为工件的外型轮廓图,图2为编程所需要的单侧轮廓线。所以在CAD中画的图为图(2)。
将工件按照以上规则绘制后另存为AUTOCAD2000 DXF格式。可使用文本打开方式便能将其打开。我们可以在一系列的子类标记中可以找到子类标记ACDBLINE,在该子类下就隐含了该直线的坐标值。组码10,20,30下分别为直线起点X、Y、Z坐标,组码11、21、31下分别为直线终点X、Y、Z坐标。以同样的方式我们可以找出子类标记ACDBARC,组码10,20,30为圆弧中心坐标X、Y、Z,40为半径,50为起始角,51为终止角。
根据以上的特点,在VB中建立工程,添加控件如下,并在控件下输入相应的代码。
使用 OpenFile NameForInput As#1代码将二进制DXF文件逐行读入。并和字符“ACDBLINE”和“CADBARC”进行对比,符合要求的分别提取组码10,20,11,21,40,50,51下的数值通过数据库操作代码储存在数据库中。直线线名为LINE(n),圆弧线名为ARC(n)。
数控车床能接收直线的描述方式同DXF中的描述方式一样均为起点坐标和终点坐标。但是圆弧却不一样,一般数控系统接收的方式是:圆弧起点坐标、终点坐标和半径以及通过G2、G3来区别圆弧的方向。而在DXF文件中是以圆心、半径、起始角,终止角的方式。两者不一直,所以在编译时必须对DXF中圆弧坐标的表述进行处理,换算成数控车能接受的:圆弧起点坐标、终点坐标和半径。并且通过起始角和终止角的所在坐标象限位置来判断圆弧方向,以决定是使用G02还是G03代码。
将圆分成4等分,0到90度以及90到180度为G03代码,180度到270度以及270到360度为G02代码。下面以在0度到90度的范围内圆弧起始点x,y坐标为例,计算方法如下:
sx----圆弧起点x坐标;sy----圆弧起点y坐标;sjiao----起始角度;banjin-----半径;xinx----圆心x坐标;xiny----圆心y坐标。
使用以上的程序代码可以获得A点坐标,同样的方法可以获得B点的坐标。
二、数据的排列
通过转换好的数据重新输入数据库。但是仔细发现数据库是数值排列比较凌乱,假若直接取出并不能用于生成G代码。所以要对里面的数据按照一定的要求进行重新的排列。作为刀路的起点选择也是有一定的规则的,必须选择为图形最右上角的点,是X,Y值为所有点中值最大的。对数据库进行搜索获取XY值最大的作为刀路的起始点。如下图假若获得起点SX1,SY1为起点,那么很自然下一点坐标为(ex1,ey1)。但是第二条直线的起点是多少呢?要根据坐标(ex1,ey1)对数据库进行搜索对比,找到相对应的值。然后以同直线或圆弧的另一点做为该线的终点。以此方法类推就能产生一条完整的刀路。排列后的坐标重新输入数据库。
三、G代码的生成
得到正确的数据库后,必须对数据进行编译,生成G代码。要注意CAD图中的XY坐标同车床坐标系的区别。
线名为LINE的坐标生成G代码的格式为 G01Xey1 Zex1
线名为ARC和根据起始角、终止角大小把坐标生成G代码的格式为
G02Xey1 Zex1 Rr或 G03Xey1 Zex1 Rr
并将所得到的G代码程序传递到容器控件LIST中。
完整的G代码程序还需要头程序段和结尾程序,通过软件界面左边的文本框控件的输入,和复选框控件的选择,可以得到头程序段和结尾程序,例如:N00001;G50 X100 Z100;S800 M03 T101;和结尾程序G0 X100 Z100;M30。
将头程序段插入进LIST控件中的最前面,将结尾程序插入进LIST控件中的最后面。和原先的刀路G代码相组合,得到完整的数控加工程序。
四、程序的验证和保存
为了验证程序是否正确需要对LIST中的G代码进行模拟。从LIST中提取坐标使用VB中的画直线画圆功能在指定的区域内画出刀具运行轨迹,通过轨迹的运行曲线同工件的外轮廓相比较,来判断刀路是否正确。
在软件的最后使用OpenFile NameForoutput As#1将LIST容器中所有的字符输入到给定文件名的文本文件中保存。整个软件完成后如下图所示。
数控自动编程的软件很多,一般的CAD都有这样的自动编程功能,例如现在PRO-E、MASTERCAM、UG、solidworks等软件都有这样的自动编程功能,他们的结构庞大,软件的学习上也很复杂,并且在价格上也很昂贵。假如仅仅用于数控车床的自动编程上,真是大材小用了,很是浪费。使用简洁,操作方便,专用于数控车床加工的小软件,这样的软件专业性和专一性很强。既节省人力又节省物力。而AutoCAD因其灵活性和接口的多样性被广泛的使用在机械设计领域中。在其能够生成的文件格式中有一个二进制的文件,文件中包含着轮廓线的线型和坐标的信息。使用二维功能强大的AutoCAD软件绘制轴承类的零件的外轮廓显然是一件非常容易的事情。
Auto CAD作为一个完整的绘图编辑器,可以独立使用,并可完成用户的很多设计工作,但要完成零部件从设计到制造的全过程的工作,仍然力不从心,如零件设计完后要做有限元分析,要制定工艺规程,要生成NC代码,这些工作AutoCAD都不能胜任,这些必须借助其他应用软件,而所用的软件都在不同程度上要求得到Auto CAD的图形信息支持,因此需要Auto CAD提供一个便于外界接受的文件格式输出图形信息。另外,用户在设计过程中还会根据工作的需要开发一些自己的应用程序,以便做计算、分析或其它之用,处理后的数据希望传给AutoCAD,用于自动生成图形,这时用户传递这些数据最好的办法就是写成Auto CAD可直接接受的数据文件,为了解决AutoCAD和其他程序间图形数据的交换问题,定义了图形交换文件规范。
一个完整的自动编程系统,必须包括前处理程序(Maln Processorl和后置处理程序(Post Processor)两部分。
一、前处理程序设计
前处理程序用以对源程序进行翻译并计算刀具中心轨迹,或通过处理图形数据文件而得到刀具中心轨迹,这一部分完全独立于具体的数控机床,前处理程序的输出一般为刀位数据(Cut Loca―tion Datal,但这种刀位数据不能直接用作数控装置的控制指令,因此必须要有一个后置处理模块,后置处理程序是自动编程系统中的一个重要组成部分,它是按数控机床的功能及数控加工程序格式的要求而编写的一个计算程序。它将主处理程序产生的位置数据和功能信息转换成能被某种数控机床控制单元所需要的数控加工程序代码,以便用于控制机床并产生各种加工功能和加工运动。由于各种数控机床的输人格式各不相同,因而为了适应各种机床的不同要求,后置处理程序也是各不一样的。
二、后处理程序设计
后置处理的目的是形成数控指令文件。由于各种机床使用的控制系统不同,所以所用的数控指令文件的代码及格式也有所不同。为解决这个问题,每个自动编程软件通常有自己专用的后置处理程序。
本系统采用的数控机床的指令有以下几种:
1.坐标功能指令:x,z,I,K。
2.准备功能指令:G00一快速进给;G01一直线插补;G02一顺时针方向圆弧插补:G03一逆时针方向圆弧擂补;G33一等螺距螺纹加32;G54一坐标设定指令。
3.速度功能指令:主轴转速S;进给速度F。
4.换刀功能指令:刀号选择T01-T04。
5.刀具补偿指令:G41-在工件轮廓左边刀补有效;G42-在工件轮廓右边刀补。
6.辅助功能指令:M02一程序结束;M03一主轴正转;M04一主轴反转:M05一主轴停止。
在生成数控程序时,首先打开前面生成的刀具中心轨迹文件,从最外层向内逐层生成加工程序,在把刀具中心轨迹文件的数据转化为数控程序时,逐行读人数据,根据线形确定所采用的刀具以及相应的G指令,并把坐标值X,Z,I,K赋给对应的变量。再根据所输入的主轴转速和进给量,使所有的数据转换成字符串,然后与字母G,T,S,F,X,Z,I,K组合成数控指令。最后加上程序号和必要的M指令组成程序段,在每一层切削完成后或换刀时,添加一个必要的程序段使刀具回到换刀位置,在程序结束时加上辅助指令M0 2以表示程序结束,最后将程序以文件的形式存盘。
关键词:编程语言;选择;软件开发
中图分类号:TP311.52
1 当前软件开发主流编程语言
1.1 C语言
C语言可以将高级语言的基本结构和语句同低级语言很好的结合在一起,因此C语言扮演了一种介于高级语言和汇编语言之间的角色,也又可以称之为中级语言。C语言设计之初主要用于UNIX的系统开发与编程,后来逐渐发展壮大,在近25年来广泛用于系统与应用软件的开发。C语言具有以下特点:(1)结构化语言。C语言属于结构化语言,用C语言进行开发的程序除了必要的信息交流其各个部分彼此独立。这种特性可使程序层次清晰,方便编程人员后期对程序进行调试和维护。(2)表达多样操作方便。由于C语言一共只包含40个关键字和9种控制语句,因此程序简洁紧凑,书写形式自由。同时其包含的运算符和数据类型丰富,表达类型多样程序效率较高。此外其语法限制少,并且可以进行和汇编语言相似的对位、字节和地址操作,十分方便。(3)适用范围广。C语言具有非常强的移植性,即可变换版本适合于如Windows、linux、DOS、UNIX等在内的多种操作系统,同时也适用于多种机型。[1]
但其也有其自身的缺点C语言的缺点比如其数据的封装性,使其数据的安全性有很大缺陷,这也是其与下文将介绍的C++语言相比的一大不同之处。此外由于C语言的语法限制少,变量的类型约束少,其数据下标越界不作检查,因此其程序安全性会受到相应影响,因此C语言对程序员的水平要求更高。
1.2 C++语言
如上文所述,C语言由于数据封装性的原因导致其安全性降低。因此1986年,AT&T贝尔实验室开发出了一种新的编程语言即C++语言,该语言通过数据封装来减少由程序变量带来的不利影响,提升程序安全性。此外,由于C语言结构化的特点,因此其难以应对大规模任务。因此 C++语言在C语言的基础上加入了对象的概念,因此C++语言具有很多C语言不具备的面向对象的语言特征,前面提到的封装性便是其中之一,此外还有继承性和多态性等特点。这些面向对象新思想使C++语言可以很好地应对编程中对大规模任务的需求。
1.3 Java语言
由于近年来互联网技术的成熟,使软件开发模式由无网络的单机模式逐步向网络模式转变。C语言和C++语言在网络模式下的软件开发过程中便遇到很多的问题。此时Java语言就很好的显现出了其对于网络模式下编程的优势。Java语言完全面向对象,相对于C++语言更加简单,并且Java语言依靠其分布式语言的特点可以广泛应用到分布式的网络程序的开发之中。除了这些优势,Java的安全性比较高,因此,网络模式下Java语言不失为一个好选择。[2]
1.4 Visual Basic以及Access
当前数据库管理在计算机应用中占有重要的地位。因此数据库语言十分重要。当前的主流语言为SQL语言。VB语言便在很好支持数据库的前提下内置了SQL语言,这一特点让使VB语言可以更简单的访问数据库和VC++相比。
Access语言和Oracle以及SQLServer相似,一种功能强大的针对小型数据库的语言。此外,Access还可以利用其工具VBA和VB语言形成紧密联系。
1.5 其他语言
除了上文所介绍的几大主流语言外,编程领域还有很多比较小众的语言。虽然目前看来其应用范围不如几大主流语言广泛,但是在当前软件开发环境下这些小众的编程语言凸显越来越重要的份额,比如:Python、Ruby、JavaScript、MATLAB、R、CUDA以及Erlang等。合理的编程语言选择可以帮助软件开发商降低软件开发的成本,篇幅所限,小众语言不再具体介绍,以下将分析如何合理选择编程语言。
2 如何合理选择编程语言
2.1考虑整体架构
进行软件开发时,程序员需要做的第一步即是对项目的整体架构进行充分考虑,此后根据项目的整体结构决定选用何种语言进行编程。有时并不是一定要用同一种语言对整个项目进行编程,而是要根据项目各个部分的功能合理选择最合适的语言。此外对项目进行整体架构时需要对项目组件的分解和连接进行充分考虑,因为不同语言的选择和其有直接紧密的联系。
2.2 选择熟悉的语言
对于软件开发来说,时间紧任务中是所有程序员的工作特点。节省时间对于程序员开发软件来说意义重大,因此必须在不影响软件质量的范围内必须尽量选择熟练的语言。因为熟悉的语言对程序员来说可以更好的预测软件完工时间,同时编程出问题时熟悉的语言也可节省程序员的调试时间。
2.3 考虑硬件环境
硬件环境是软件开发的基础,适应硬件环境是所有软件编程的目标,当硬件环境受限时会大大影响编程语言的开发效果。因此硬件环境是软件开发过程中合理选择编程语言需要考虑的一个重中之重。此外,硬件设备存在更新问题,有时编程语言仅仅适应目前版本下的硬件环境,一旦硬件设备更新软件便因为不匹配问题不可继续使用。因此在进行程序开发之前要全面考虑硬件环境问题,合理选择适应硬件环境的编程语言,以保证程序可实现应对硬件环境更新后的快速调整,实现程序的长时间良好运行。
2.4 考虑程序支持平台
一个程序能否良好运行,除了以上所提的整体架构,语言是否熟悉和硬件环境外,还需需重点考虑的便是其支持平台。不同的支持平台决定着程序语言选择的不同。例如实现同样搜索功能的程序在word软件里和网页浏览器里运行时便需要考虑其不同的支持平台选择不同的编程语言。平台是编程的大环境,同必须适应硬件环境一样,所有编程也必须适应平台。
2.5 编程语言选择时一些其它的考虑因素
开发一些程序过程中例如定义文件格式和协议相关工作时需要进行大量的位操作。而大量的位操作有时对软件开发来说会形成一定困难,因此在考虑选择编程语言时必须考虑是否可以避开大量的位操作。如果必须进行大量位操作,那就应该选择可以提供合适数据类型并且容易进行位操作的编程语言。此外,在一些特殊领域进行编程的程序员应对特殊领域进行针对性的充分考虑,考虑是否可以用专业的编程语言代替一般的编程语言。因为专业的编程语言具有很强的针对性,使用专业编程语言不仅可以节省大量工作时间和工作量提高工作效率,也可以避免编程过程中出现较大失误。
3 结束语
综上可知,编程语言的选择对于软件开发来说具有至关重要的作用,对于程序员而言,熟练掌握每种编程语言的优点和缺点、适用范围是必不可少的技能,同时,合理选择编程语言可以使软件开发工作顺利开展,事半功倍。因此,对编程人员来说,需要及时补充新知识,随时学习,不断加强对各种编程语言的了解和掌握,同时提升合理选择编程语言的能力,以便更好的开发软件。
参考文献:
[1]马洁.计算机应用软件开发中选择的编程语言[J].电脑知识与技术,2013(08):1996-1997.
[2]罗琼,李艳,熊英.不同编程语言对计算机应用软件开发的影响[J].软件开发与设计,2013(12):19-20.
关键词:单片机;流程图;编程
中图分类号: TP319
Software Development of Single Chip Computer based on Flow Chart Programming
CHEN Ruisen
(Department of Information, Xiamen Ocean Vocational College, Xiamen Fujian 361012,China)
Abstract: According to the characteristics that the independent design ability of students is weak in learning SCM, a software of SCM based on flow chart programming is developed. The system uses visualization modules, and the method of top-down is used in the design of flow chart. In this system, when the design of the flow chart is completed, the corresponding program has been written. This method is visual, and easy to understand, the programmers can focus on the logical relationship, and thus play a greater creativity.
Key words:Single Chip Computer; Flow Chart; Programming
0引 言
“单片机”是一门理论性和应用性都较强的课程,也是相关专业的核心课程。该课程偏重于工程思维,其任务是利用单片机技术和各种芯片,设计实用的电路系统,编写相关的应用程序。现今常用的单片机编程语言主要有C51等,编程时需要输入复杂的程序代码,编写的程序还需要符合特定的语法规定,这往往增加了编程难度,是学生学习单片机的难点之一。针对单片机教学中“强化实践,重在应用”的办学方针,本文设计了一款基于流程图编程的单片机软件开发系统。该系统采用EDA中“自顶向下”[1]的设计方法设计程序流程图,程序流程图由基本编程模块连接而成。流程图设计完毕,程序相应编写完成,该方法有利于重点关注寻求解决问题的方法,从而开发出更富有创造性的产品[2]。
1 系统工作原理
单片机中的程序流程图用于描述程序内部各种问题的解决方法、思路或算法,常使用各种图形、符号、有向线段等来表示程序设计的过程。一般情况下,根据要完成的程序功能写出总流程图,基于总流程图即将整个程序划分成几个主要的功能模块,再针对每个功能模块绘制基本流程图。流程图中使用的各种形态符号只表示某种处理的描述并没有实际编程意义,主要是为程序编写发挥导引性作用。系统对流程图的图形和符号等进行了相应的改造和简化,系统中的流程图只包括两部分:
(1) 表示相应操作的框(模块)
系统设计了很多模块库,比如显示模块库,判断模块库,传感器模块库等。每个模块库又包含很多子模块,如判断模块库包含次数循环模块,永循环模块,条件循环模块,条件判断循环模块等,模块组织结构如图1所示。模块类似于Matlab软件中各种工具箱的仿真模块,每个模块均相当于一个子函数,在流程图中添加一个模块即相当于调用一个子函数。各个模块提供一些属性以供需要时进行设置,设置后将改变模块的功能,图2为延时子模块的属性设置框及相应的子函数,只要在属性设置框中输入不同的数字,就可以得到不同的延时时间。系统中的模块库是一个开放库,可以随时增加。
void delayms(uchar t)
{ uchar x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
(2)带箭头的线(指定程序的执行顺序)
系统中的模块暂时只用C51来编写。由于C51中的变量分为局部变量和全局变量,这将有利于模块的独立性。用于进行模块之间传递参数的变量为全局变量,各个模块内部用到的变量则全部利用局部变量,如此模块变量就不会相互影响。系统还提供了一个全局变量模块,在该模块中可以定义一些全局变量。系统中每一个模块都可以完成一定的功能。只要依循清晰的思路连接这些模块,就可以很快地完成一个程序的代码。
2 流程图到C51源程序的实时转换
为了得到可编译下载的程序,系统可以将流程图自动转换为C51源程序,类似于plc中的梯形图和指令表的自动转换[3-4]。编程人员可以直接对源程序进行修改,作为流程图编程的补充手段。下面具体介绍程序流程图实时转换成C51源程序的原理。
系统构造的是由顺序、分支和循环三种基本控制结构通过各种复杂的组合、嵌套关系而组成的结构化程序流程图,其中的基本单元是已经独立开发的、相当于一个子函数的各种模块。流程图转换的对象C51程序基本是一个函数的集合(包括一个main主函数和各种子函数),因而和程序流程图的对应关系是较为明显的。系统为了简化软件转换的复杂度,采用了一种实时转化方法,即在流程图中每添加一个模块就相应的在C51源程序中添加该模块的对应子函数。流程图中的主程序对应于main函数,全局变量模块对应于主函数前的变量定义,各个模块对应于主函数前的一个函数声明以及主函数中的一个子函数调用,系统的转换关键点则在于各个子函数的相应嵌套关系。顺序结构中的模块,在程序流程图中每加入一个模块,就按顺序添加一个子函数调用;对于分支、循环模块,当用户从模块库中拖动一个模块到软件设计区时,软件将判断该模块是连接于分支、还是循环模块的区域内或区域外,图3(a)表示模块处于分支的区域内,图3(b)表示模块处于循环模块的区域内,图4(a) 表示模块处于分支的区域外,图4(b)表示模块处于循环模块的区域外。在分支结构中,连接于分支模块区域内的模块,其子函数调用则处于分支函数内,反之即处于分支函数外。分支模块为每个分支建立一个分支子函数,由分支子函数再调用下级各个小模块的子函数,即分支函数调用分支子函数,分支子函数调用下一级子函数。循环模块的函数调用与分支模块类似。利用以上方法可以实时地将相应的程序流程图转换为C51源程序。现在,本软件系统只能转换利用系统提供的模块构造的程序流程图。
3 系统测试
在完成了系统的初步构建后,对系统进行了测试,文中构建了一张控制8个LED灯闪烁四次的程序流程图,如图5(a)所示,图5(b)、(c)分别为循环模块和发送模块的属性设计框, 在完成了相应的程序流程图并转换为对应的程序代码后,可通过keil软件进行编译并下载到proteus软件中的LED灯电路图进行测试,测试结果表明程序的正确性,图6分别为LED灭和亮的情况。
4结束语
本文构建的基于流程图编程的单片机软件开发系统是一个开放性的系统,其中的流程图模块可以随着开发的深入而加以丰富,同时软件的功能也可进一步增强。虽然经过初步的开发,软件具有一定的实用性,但是开发复杂功能的流程图时,软件自动生成的程序代码的准确性还有待进一步提高,这也是下一步研究工作的重点。
参考文献:
[1]徐献灵.EDA技术在现代电子设计中的应用[J].现代电子技术,2003(17):103-105.
[2] 程向前.基于流程图的可视化程序设计环境对大学计算机基础教学的影响[J].计算机教育,2012(14):56-59.
[3]钟志超,张志胜,戴敏等.流程图与类C语言实时转换方法[J].东南大学学报,2009, 39(3):502-506.