应用程序的开发

关键词: 开发者 应用程序 浏览器 开发

应用程序的开发(精选十篇)

应用程序的开发 篇1

1.1 APP Inventor

APP Inventor是Google针对Android平台, 于2010 年提出的以浏览器为基础的开发工具, 开发者只要使用浏览器便能开发Android设备上的应用程序, 开发者所设计的应用程序项目 (Project) 会放在云端储存起来。 图1 是APP Inventor登录后的界面, 当进入开发页面后, 就可以管理自己储存于云端的应用程序项目。

Android与Google的应用已经完美无缝结合, 渗透了互联网, 因此APP Inventor很好地利用了Android开拓宽市场。当利用APP Inventor开发手机运用程序完成后, 可以将其生成二维码, 然后使用Android手机上的扫码工具扫二维码下载完成之后, 就可以使用这个APP Inventor开发的手机运用程序了。 如图2 所示。

1.2 APP Inventor对初学编程者的优势

APP Inventor是完全开源的软件, 利用模块拼接的方式省略了编码的过程, 使初学编程者更容易了解软件的内部结构, 因而不需太多编程基础; 积木式拼接程序; 语法错误少; 调试容易; 使用简单、 有趣, 形式多样, 变幻较多, 能激发和活跃学习者的兴趣和思维。 帮助初学编程者消除对编程的畏惧, 提高对编程的兴趣, 培养编程思维。

1.3 开发应用程序的意义

算法与程序设计是信息技术教学的传统内容, 其基本的价值取向不以代码编写训练为要义, 而以程序设计方法和算法体验为旨归, 主要表现在, 学习者通过本模块的学习能借助积木式程序设计语言理解生活中的算法问题, 并与程序语言表达的算法形成关联能设计算法并通过拖拽图标方式编写程序解决生活中的简单问题, 初步体验程序设计的过程和算法概念[1]。

计算思维是指运用计算机科学的基础概念进行问题求解, 系统设计以及人类行为理解等涵盖计算机科学广度的一系列思维活动, 程序的编写过程, 实质上是问题的提出解决过程的引入APP Inventor使学生实现自己的创意成为可能并获得卓有成效的学习经历, 从而真正主动地进行任务驱动型的学习, 直接培养学生的计算思维能力[2]。

2 利用APP Inventor开发手机应用程序—智能油漆画板

下面介绍利用APP Inventor开发一种可以任意绘画的智能画板的实现过程。它具有手机的拍照功能, 能将现拍的照片保存起来, 并且可以对刚拍的照片进行多彩涂画, 画笔颜色有常用的8种。此外, 还可以从手机图片库里导入其他的图片, 来进行编辑、保存等;智能油漆画板的实现使得智能油漆画板更为有趣、多样化, 用户可以任意编辑自己想要的图片。

2.1设计组件

多个Button组件, 用来选择画笔颜色: 放在Horizontal Arrangement组件中; 一个Button组件用来充当橡皮; 另外两个Button组件用来改变画笔的大小; 一个Canvas组件, 充当画布; 一个Camera组件, 用于拍照; 一个Tiny DB组件, 保存图片。

2.2 添加触摸事件

在块编辑器中, 打开Drawing Canvas抽屉拖出DrawingCanvas.Touched块和Drawing Canvas.Draw Circle命令块, 并将其放入Drawing Canvas.Touched事件处理程序中; 然后设定圆的半径r, 长度的单位是pixel (像素) , 是屏幕上能够绘制的最小的点。

2.3 添加按钮事件处理程序

首先从Drawing Canvas抽屉中拖出Drawing Canvas.Dragged事件处理程序块, 其次设置相关的参数: Start X、 Start Y、 current X、 current Y等。

添加好画线的拖拽事件后, 即实现画线功能了, 但是只能画红线。 下面通过添加颜色按钮的事件处理程序, 用户可以根据喜好改变画笔的颜色; 同样设置清除按钮Wipe Button, 以便用户可以清除画面并重新开始。

在块编辑器中, 展开左侧块的 (Blocks) 列表; 打开Red Button抽屉, 拖出Red Button.Click块。 打开Drawing Canvas抽屉。 拖出set Drawing Canvas.Paint Color块, 并把它放在RedButton.Click块 “do” 的位置; 打开Colors抽屉, 拖出红色块, 将其插入set Drawing Canvas.Paint Color块的插槽。

设置其他颜色的按钮, 可以通过重复做以上步骤; 最后设置Wipe Button按钮。 从Wipe Button抽屉中拖出Wipe Button.Click块。 再从Drawing Canvas抽屉里拖出Drawing Canvas.Clear块, 并将其放在Wipe Button.Click块中。

2.4 实现拍照功能

Camera组件有两个关键的块: Camera.Take Picture块用来启动设备上的拍照程序; 拍照完成将触发Camera.After Picture事件。 在Camera.After Picture事件处理程序中, 可以将刚刚拍摄的照片设置为Drawing Canvas.Background Image。 Camera1.After Picture事件有一个名为image的参数, 代表刚刚拍摄的照片。

改变画笔大小: 在块编辑器中, 从Variables抽屉中拖出一个initialize global name to块。 将 “name” 改为 “dot Size”;用数字块2 来初始化变量dot Size, 将其插到initialize global dot Size to块的插槽中; 触摸到Drawing Canvas时, 应用将根据dot Size的大小来确定圆点的半径。 变量dot Size允许选择画笔的大小, 而事件处理程序也将以dot Size为半径来画圆。

通过设计Small Button.Click和Big Button.Click的事件处理程序来实现改变画笔的大小。

保存图片: 通过设计Save Button.Click的事件处理程序来实现此功能, 在块编辑器中, 拖出call Tiny DB1 块; tag中插入空白txt块并输入filename; value To Store中插入call Drawing Canvas块。 如图3 所示。

目前, 增强大学生计算机思维培养主要体现在 “大学计算机基础” 和 “程序设计” 上, 而非专业的学生对编程又十分陌生, 因而造成了许多学生怕编程、 报怨编程难等问题[3,4]。

综合以上开发过程: 利用APP Inventor开发手机应用程序, 在很大程度上降低了编程的难度, 简化了编程的开发过程。 学习者只需要具备一定的阅读程序能力, 就可以较好的应用这个开发工具, 来开发生活中普遍适用的App。 学习者也会因此在很大程度上提高阅读程序的能力, 培养良好的编程思维。

3 结语

传统的 “油漆桶” 进行改造, 使用APP Inventor开发智能油漆画板手机应用程序, 实现了可选择多色彩画笔, 可额外导入图片等功能。 整个开发过程, 有趣, 形式多样, 激发和活跃学习者的兴趣和思维。 帮助初学编程者消除对编程的畏惧, 提高对编程的兴趣, 培养编程思维。

参考文献

[1]中国教育技术协会信息技术教育专业委员会.基础教育信息技术课程标准2012版[DBOL].

[2]郭守超, 周睿, 邓常梅, 狄长艳, 周庆国.基于App Inventor和计算思维的信息技术课堂教学研究[J].中国电化教育, 2014, (3) :91-96.

[3]陆汉权, 何钦铭, 徐镜春.基于计算思维的“大学计算机基础”课程教学内容设计[J].中国大学教学, 2012, (9) :55-58.

网络应用程序的开发与设计论文 篇2

1.1 应用程序系统结构

“网上地宫”是基于Web信息发布所建立的HTTP协议,它运用到了Web的数据库访问技术,并通过Java开发技术进行对系统作用的补充。所以整体来看,“网上地宫”是基于Web、B/S、Java等技术形成的综合开发体系结构,如图1。

1.2 应用程序系统设计

一般来说,“网上地宫”系统都是应用于煤矿企业的矿级应子系统和队级应子系统的,另外它也能够负责生产指挥图子系统的相关功能。其中矿级子系统包括了7个模块:油水井动静态开发数据模块、月生产运行曲线模块、原油产量监测模块、综合开采模块、产量组合模块、开采模块以及机采井动态控制模块。而队级子系统则包括了开发数据模块、单井生产运行模块、油水井基础信息模块和机采井动态控制模块4大模块。

上述11个模块都拥有自身的独立性,并在“网上地宫”总系统的指挥下进行各个服务器端的运行、编辑、动态管理和信息发布。以便于“网上地宫”相关功能的多元化实现。“网上地宫”应用程序的模块功能实现

按照上述对“网上地宫”中各个子系统模块的设计状况,其目的也是为了在实际的煤矿开采过程中得以功能实现,并创造经济效益。所以本文选取基于Java技术的生产指挥图子系统的相关功能模块应用进行论述。

按照功能划分,生产指挥图子系统具备两项功能:第一是基于Web的生产指挥图编辑功能,第二是网上信息发布功能。两种功能系统都是通过Servlet与Java技术得以实现的。

2.1 基于Web的生产指挥图编辑功能实现

生产指挥图编辑工作是有技术管理员来完成,所以它应该被设置于服务器端最为合理,而并不通过网络,这是为了避免过多插件所造成的影响。由于运用到了Java技术对模块的B/S结构模式加以实现,所以它需要系统虚拟机支持JDK1.1以上版本的软件,并同时支持SWING。按照系统的实际需求,可以将编辑处理器部分的JDK软件设置于服务器上,并将其与网上信息发布模块相互连通,以提升它的高级程序特性。

在编辑功能系统中,一定要针对Java技术进行系统功能实现,从而满足网上地宫的动态可视化特性。这里运用到AWT,它是Java中的可视功能部分,它可以辅助JavaGUI实现灵活的系统结构设计,并基于AWT的基础上为系统提供可以替代AWT的轻重量组件,最终全面实现系统的图形编辑功能。

2.2 基于Web的生产指挥图网上信息发布功能实现

在生产指挥图的网上信息发布功能方面,则运用了基于Java Applet技术的客户端。但在功能实现过程中也要考虑“网上地宫”系统中与安全机制相关的“沙箱”模型限制,它主要是针对服务器端通信功能的限制。本文在对信息发布功能设计过程中所采用的是证书机制,它会为每一个使用系统的用户发放证书,进而实现数据服务器中所有数据的无线共享功能。不过为了解决证书发放的相对复杂性,这里采用到了基于Servlet客户端的applet模式来避开applet的相关安全限制,以达到实现三层模式的基本要求,同时保证不损失服务器端的安全功能。

在该系统中,“沙箱”模式主要对隔离区域的执行程序(例如Java模板、ActiveX控件)进行进程方面的程序执行,它的操作前提是不会影响到其它部件的基本功能。由于采用了访问权限机制,所以只有有权限的使用者才可以对系统内的文件及目录进行访问,这样设计的目的也是为了保护系统中资源不会受到来自于未知威胁的影响

按照Web的基本三层结构设计应用,并同时为系统的安全性限制考虑,本文中的生产指挥图网上信息发布子系统所采用的是基于Java技术的Applet服务器,它可以实现在数据库各个服务器之间的相互通信,并实现从客户端到Web服务器之间以及Web服务器和Oracle数据库服务器之间的动态信息传输发布功能应用。总结

应用程序的开发 篇3

[关键词]数字化;课件;开发

[作者简介]钟伟,人民交通出版社。

随着数字信息技术的不断发展,学校的教学模式也逐步发生变化。教学模式的改变,一方面要求反映现代的教学理论和先进的教学思想,另一方面又离不开信息化的教学系统、教学资源和教学环境。因此,出版社在教材开发过程中要充分利用数字信息技术,开发优质的数字化产品作为教材的补充和扩展。目前,出版社主要是在传统出版物内容的基础上,利用不断创新的数字信息技术,开拓新的阅读需求市场。如在对原有出版物介质形态寻求突破的同时,对传统出版物内容资源进行挖掘,对阅读功能作出进一步的延伸。按照服务对象的不同,数字化产品可分为“助教型”和“助学型”两种。

一、“助教型”数字化产品

“助教型”数字化产品,即为方便教师教学而开发出的数字化产品,其主要形式为多媒体教学课件(“助教型”课件)。多媒体技术是一种将文本、图形、视频、动画和声音等信息形式结合在一起,并通过计算机进行综合处理和控制,能支持完成一系列交互式操作的信息技术。一般来说,传统教学方法不能充分体现的内容,或者教学实验危险性大、难度大的课程适合于配备“助教型”课件。“助教型”课件开发的原则是要有利于提高教师的教学效率,并且在技术和经济效益上具有可行性。进行“助教型”课件开发必须注意以下两点:

第一,进行充分的需求分析。需求分析包含两方面的含义:教师对课件有什么具体要求,实际教学中学生是否需要。“教师对课件的要求”是课件开发的重要依据。如果不注意这点,由此造成的直接后果是教师放弃使用该课件,最终将放弃使用相应的教材。因此,明确教师对课件的需求是提高产品质量有力保证,同时也可以明确开发者的责任,最终作为课件的验收依据。

第二,合理选择与配置资料。要开发出高质量的多媒体教学课件就必须合理地把握课件制作中的教学性、科学性、技术性、操作性、交互性和艺术性,以及它们之间的关系,具体如图1所示。这就需要课件制作者查阅大量资料,包括教学计划、教学大纲、教学参考书,以及各种技术参考书、各种工具的使用说明书和网站资料等,充分利用文本、图形、视频、动画和声音等信息,以实现最佳的教学效果。

图1

二、“助学型”数字化产品

“助学型”数字化产品,即为方便学生学习而开发出的数字化产品。主要形式有光盘、网络资源等,其开发原则是要有利于提高学生的学习效率,并且在技术和经济效益上具有可行性。

1. 光盘

光盘是传统的数字化产品形式,通常和纸质教材一起捆绑销售。光盘并不是对纸质教材的简单补充,而是以更具视觉、听觉冲击力,更具立体感染力的形式,生动地传授知识,更适合于文化的积累、传承、开发和普及,具有内容丰富、信息量大等特点。开发光盘需要注意以下几方面:

第一,在教材策划之初,就要确定是否随教材配备光盘。总的来说,表现方式丰富、交互性强、信息容量较大的选题,适合配备光盘。

第二,在教材策划过程中,要充分考虑电、光、磁介质载体的特殊之处,进行综合策划,以实现纸质教材与光盘的完美结合电子出版物的载体有一定的额定容量,因而选题的内容信息量会受到一定的限制

第三,积极寻找能与出版社实现优势互补的光盘制作商。在光盘制作过程中,编辑要对该选题运筹帷幄并发挥自己的专业优势,对光盘制作人员进行有效指导。另外,编辑还要掌握好光盘的制作进度,确保其与纸质教材同步出版。

2. 网络资源

现代教育提倡个性化学习、主动式学习和终身学习。在提供传统纸质教材的同时,各出版社都在为教学提供延伸服务,出版社已成为教学资源的提供商,即出版社提供知识点素材、拓展资料与讲座、高仿真模拟试卷与实验等(见图2)。读者在购买纸质教材的同时,即可获得相应的教学延伸服务。各种发行量较大的教材都适合配备网络资源,尤其适用于内容难以理解、课后需要复习巩固的课程。进行网络资源开发必须注意以下两点:

图2

第一,进行充分的需求分析。明确学生对网络资源的需求和教师对网络资源的要求是提高产品质量有力保证。这一环节要充分考虑教材的性质、发行量、读者需求、效益等,以确定网络资源的形式及内容,如是否收费、如何收费、有无互动等。

第二,控制传输带宽并加密。网络资源在最大传输带宽方面会受到一定限制,因此,编辑策划选题时要考虑控制最大传输带宽,以免网络传输速度过慢影响学习效果。同时还要合理选择并确定好相应的加密手段。

下面以《中国汽车维修服务资源库》为例,介绍数字化产品的开发与应用。随着我国职业教育教学改革的不断深入,教育部提出建设中等职业教育改革发展示范学校。汽车维修专业作为重点建设专业,必须配套开发相应的专业教材,同时教学资源库也是必不可少的建设项目。以此为契机,人民交通出版社协同中国汽车维修行业协会策划并组织开发了“中国汽车维修服务资源库”。该资源库以“从企业工作岗位实际出发”为原则,筛选企业实际典型工作任务为项目模型,结合教学规律形成资源库标准化、规范化、专业化的课程内容和结构,包括公共基础课、专业核心课、专业方向课和选修课。该资源库的使用功能包括:在资源库平台上演示、修改和重新创建模板课件;在教学中,知识体系和技能体系根据教学需要可实现自由组合,适应不同的教学模式;教师根据教学需要,基于素材资源库能够创建、修改PPT课件,实现个性化PPT课件等。该资源库的成功开发与应用极大地促进了与之配套的“国家示范性中等职业学校重点建设专业教材”的推广。

nlc202309020511

三、数字化产品开发所带来的优势及作用

1. 有利于学校教学质量的提升

数字化产品一般具有图文并茂、交互环境友好、信息资源丰富等特点。图文并茂能给学生提供多种感官的综合刺激,有利于提高学生的学习兴趣。丰富多彩的人机交互式学习环境,使学生能够按照自己的知识基础等个体因素选择学习内容,而不是被动地接受知识,这将充分发挥学生的主观能动性,真正体现其作为认知主体的作用。大量的多媒体信息和资料,能创设丰富有效的教学情景,有利于学生获取知识。“助教型”数字化产品的开发,不但能大量节约教师编写教案的时间和精力,而且有利于发挥教师的创造性,如教师可以自行修改课件的相关内容,以便有效地组织课堂教学等。综上所述,教材开发过程中数字化产品的开发与应用,对学校改变教学模式、提高教学质量具有重要的推动作用。

2. 有利于出版社数字化转型的推进

为加快数字出版产业的健康发展,国家对数字出版给予高度重视和政策支持。传统出版社作为新闻出版业的重要组成部分,其责任十分重大,因此纷纷加大力度,不断推进数字化转型。人民交通出版社作为传统的交通教育教材出版基地,在各层级教材的开发过程中,非常注重对数字化产品的开发。数字化产品的开发与应用有效地推动了人民交通出版社运用数字信息技术对产品结构的优化,实现了人民交通出版社从单一纸质出版物向纸质出版物与多媒体出版物并存、互补、互动的转变。在数字化产品开发过程中积累的大量素材资源和宝贵经验,为推动人民交通出版社传统出版业数字化转型,以及产品的升级更新、流程的优化再造奠定了坚实的基础。

3. 有利于出版社纸质教材的开发与推广

一般而言,与纸质教材配套的数字化产品开发是基于纸质教材开发而进行的,但反过来,优质的数字化产品同样能促进纸质教材的开发。如人民交通出版社“高职高专工学结合课程改革规划教材”中的《汽车维修服务企业管理软件使用》及《机动车保险专用软件使用》便是依托北京运华天地科技有限公司生产的软件而开发的教材,该公司还充分发挥软件开发的优势,为其配备了高质量的教学课件。另外,优质的数字化产品能满足教师和学生的需求,有效地提升学校的教学质量,这对学校最终选用相应的纸质教材具有积极的促进作用,从而使出版社在获得社会效益的同时,能够获取可观的经济效益。

为应对日益激烈的竞争,出版社已不能仅仅做教学资源的提供商,而要做学校教学的领跑者。出版社除了提供课件、高仿真模拟试卷、在线测评等教学资源作为延伸服务,还要设计教学,通过教材使用培训、名师教学示范、课件设计比赛,打造以读者为核心的立体化教材,为读者提供全方位的服务。

敏捷开发在软件开发中的应用 篇4

关键词:敏捷开发,拆分,并列,企业架构,敏捷方法

1 实现敏捷在软件开发中的应用

1.1 敏捷方法和企业架构和谐共舞

一份来自Cutter Consortium的报告向我们提出了这样一个问题:“敏捷方法和企业架构兼容吗?”并且也给出了这样一个答案:“是的, 但需要付出努力”。该报告的作者推荐运用特殊技巧以允许敏捷方法和企业架构互相受益。此外, 他们的观察结果、分析和建议也直接是适用于敏捷方法和“面向服务的架构SOA”之间的结合

企业架构 (EA) 和敏捷方法 (AM) 拥有共同的目标——交付能够跟业务需要对齐的软件, 并响应对这些业务需要无可避免的变更。然而, EA和AM在达成这个目标时却采用了截然不同的方式。

一个曾经使用过其中一种但因为缺乏对另一个的使用而失败了的项目会最大程度拥有使用两者的经验。例如, 一个重要的文档处理系统可以使用最好的AM实践开发出来, 但不能协调好系统的EA需要如跨越需求、接口、和操作性问题等。作为选择, 一个采用瀑布方式的项目会准备妥当它的所有的企业架构, 但是却不能向及早的向客户展现它的价值, 或者不能够通过有意义的迭代来解决风险问题。所以, 这些paper都是来自于经验的, 例如:项目是如何因为忽略了其他可行的规程才陷入这种境地的, 有效的处理方式是什么等。

一个意义更加深远的案例可能是在项目启动时均衡EA和AM。然而, 这其实非常难, 很少发生, 主要是因为组织性问题, 以及谁在过程的哪个部分被涉及的角度。你会看到很多的失败, 例如架构师跟客户 (更惨的是在根本没有客户) 但没有开发团队参与的情况下整理需求, 然后开发团队脱离开架构师进行接管。

一个推荐的方案是, 对一个AM团队而言它被当作架构的一个包含部分, 作为每个团队的成员与EA组进行联络。当被要求阐明推荐Architect Reloadus或是Architect Oryzus (其定义见Martin Fowler的Who Needs an Architect) 中的哪种架构类型时, Michael Rosen建议哪种也不采用。所以, 拥有E A组和A M团队的组织不必要互相容忍, 虽然他们拥有共同的目标, 他们的缺省操作模式是不与其它成对的并且 (成对使用通常会) 产生问题。因此这些实践等对达成企业的战略目标和交付战术性的软件项目非常有用。

1.2 走向敏捷三模式

敏捷联盟创始人之一、咨询师兼图书作者Mike Cohn最近根据其自身经验将“如何帮助团队采纳敏捷”总结为三对核心模式, 当团队向敏捷过渡时, 可以利用这些模式。Mike建议, 团队或者组织在逐步采用敏捷的过程中, 应该从每对模式中选出一个最适合他们自身情况的模式

范围有多广:“小步前进”还是“全面推广”。

“小步前进”是指最初在一个试航团队中尝试敏捷的转型, 然后逐渐推广到整个组织中的方法。Mike建议, 这种方法在以下几个方面具有优势:最小化因错误而导致的成本、将最初成功的可能性最大化、培养内部的“专家”, 以协助后期推广过程的顺利进行。Mike紧接着提及三个隐患:团队在试验阶段产生的早期的成功, 可能会给整个组织带来错误的期望;组织推广所用的时间会更长;一旦失败, 怀疑者将把其视为公司无法实现承诺的一种信号。

与其相反, “全面推广”的特征是从一开始就让所有团队进行转型, 它可以在以下方面让企业受益:展现管理中的各种承诺, 组织会变得更加灵活, 避免同时使用两个过程带来的不一致, 以及减少总体上的抵触感。Mike同时也指出了“全面推进”的缺点:高风险, 高开销, 可能需要机构重组, 会遇到来自于组织的很大压力。

1.3 如何对待技术:“技术实践优先”还是“迭代优先”

“技术实践优先”要求团队接受敏捷是从关注XP的诸多实践开始的, 比如简单设计、测试驱动开发、结对编程、持续集成以及短迭代周期。它带给团队的好处是:转型的启动非常迅速而且平滑。Mike指出这种方法的不足在于:通常较难做到, 而且会导致开销激增, 同时还可能将团队带离以用户为中心的思考, 从而失去了敏捷的真正意义。

相反, “迭代优先”方法, 它最初只关注“团队以迭代方式工作”, 一旦这个目标受到阻碍, 才着手改变技术实践。它的优势可能在于:它很容易实现, 而且遇到团队成员抵触的可能性很小。但也有另一个风险:团队可能永远也不会采用对于改善敏捷而言最基础的工程实践。

1.4 可见性怎样:“秘密行动”还是“公开推广”

“秘密行动”是指团队在采用敏捷实践过程中积累的大量知识只保留在团队的内部。它允许团队在受到其他人关注之前就能获得成功, 这就是它给团队带来的好处;那些关注即来自于希望模仿他们的人, 也来自于可能会反对他们的人。其缺点包括:难以获得组织所能提供的必要的支持, 同时, 即使这个团队成功了, 也不容易说服怀疑者们去信服。

“公开推广”是指团队在采用敏捷过程中所做的努力对于团队以外甚至组织以外都是公开的知识。它的优势在于:它会激励团队去坚持采用敏捷之路, 帮助团队得到外部的支持, 更早地发现怀疑者们的疑虑, 并证明高层管理者支持这种变迁并希望它成功。其可能引起的不良后果是, 假如公开宣布开始做某件事, 最终却没有成功, 别人会认为这是非常鲁莽的, 也就是说, 此时反对者的质疑声就彻底抵消了这种方法的优势所在, 而这正是“公开推广”的劣势。

2 敏捷开发中常见问题

2.1 在软件开发中, 人的因素要远远大于过程和技术, 人是有缺陷的

(1) 容易犯错误, 因此必须在错误扩散之前找到并改正错误; (2) 当觉得可能失去较多的时候, 不愿意冒险; (3) 重新构造而不愿意重复使用已有的东西; (4) 难于坚持一个习惯。

2.2 针对个人因素的几个建议

(1) 具体的模型较抽象的模型更容易理解; (2) 从一个例子开始是容易的; (3) 通过观察他人的成果学习; (4) 要有足够的不受打扰的时间; (5) 分配的工作要与个人意向, 能力匹配; (6) 不正确的奖励会有坏作用, 从长期看个人兴趣比奖励更重要, 培养在工作中的自豪感; (7) 鼓励关心其他人的工作和整体的工作。

在一个团队之间, 交流是最重要的, 实践证明面对面的实时的交流是最有效的, 对交流的延误会损失信息, 白板是最好的交流工具, 交流工具的先进并不能提高交流效果。文档的作用是记录和备忘, 不能通过文档交流。

2.3 敏捷开发方法要避免的过程设计的几个常见错误

游戏开发程序的主要方面 篇5

游戏开发中的程序开发主要由如下几个方面组成:

1.图形引擎

2.声音引擎

3.物理引擎

4.游戏引擎

5.人工智能或游戏逻辑

6.游戏GUI界面(菜单)

7.游戏开发工具

8.支持局域网对战的网络引擎开发

9.支持互联网对战的网络引擎开发

下面逐一介绍每个部分:

1.图形引擎主要包含游戏中的场景(室内或室外)管理与渲染,角色的动作管理绘制,特效管理与渲染(粒子系统,自然模拟(如水纹,植物等模拟)),光照和材质处理,LOD(Level Object Detail)管理等,另外还有图形数据转换工具开发,这些工具主要用于把美工用DCC软件(如3DS Max,Maya,Soft XSI,Soft Image3D等)软件制作的模型和动作数据以及用Photo shop或painter等工具制作的贴图,转化成游戏程序中用的资源文件。

2.声音引擎主要包含音效(Sound Effect简称SE),语音(VOICE),背景音乐(Background music简称BGM)的播放。SE是指那些在游戏中频繁播放,而且播放时间比较短,但要求能及时无延迟的播放,VOICE是指游戏中的语音或人声,这部分对声音品质要求比较高,基本上用比较高的采样率录制和回放声音,但和SE一样要求能及时无延迟的播放,SE在有的时候因为内存容量的问题,在不影响效果的前提下,可能会降低采样率,但VOICE由于降低采样率对效果影响比较大,所以一般VOICE不采用降低采样率的做法。BGM是指游戏中一长段循环播放(也有不循环,只播放一次)的背景音乐,正是由于BGM的这种特性,一般游戏的背景音乐是读盘(光盘或硬盘)来播放。另外一些高级声音特效,如EAX,数字影院系统(DTS5.1),数字杜比环绕等。

3.物理引擎主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟,以及发生碰撞后的物体骨骼运动的力学模拟(比较著名的物理引擎有havok公司的game dynamics sdk,还有open source 的ODE—Open Dynamics Engine)。

4.游戏引擎主要是把图形引擎、声音引擎、物理引擎整合起来,主要针对某个游戏制作一个游戏系统,其包含游戏关卡编辑器,主要用途是可以可视化的对场景进行调整,光照效果和雾化等效果调整,事件设置,道具摆放,NPC设置,另外还有角色编辑器,主要用于编辑角色的属性和检查动作数据的正确性。一般日本游戏公司的做法,他们会把关卡编辑器和角色编辑器直接做到游戏中,所有的参数调整都在游戏中通过调试菜单来进行编辑,所以一般他们把这部分调试菜单的功能做的很强大,同时在屏幕上实时的显示一些重要的信息,这样做的好处是关卡编辑器调整的效果直接就是游戏的效果,但是对于程序的重用性来说可能不是很好,比如说要用到另外一个游戏项目中就比较难,除非两个游戏类型相同,只要把场景和角色数据换一下,还有做下一代产品也没有问题,只要根据式样增加调试菜单的功能就可以了。

5.人工智能和游戏逻辑开发,这部分日本和欧美的游戏开发模式也有很大不同,在欧美游戏公司中运用脚本语言开发很普遍,所以这部分程序开发主要是用脚本语言编写,而且脚本程序和游戏程序的耦合性很低,有单独的编辑、编译和调试环境,这样比较利于游戏程序和关卡设计开发分开,同时并行开发,所以一般他们都会有专门做关卡设计的程序员岗位。而日本游戏公司脚本语言一般和游戏的耦合性比较高,一般通过一些语言的宏功能和一些编译器的特定功能来完成一个简单的脚本系统,所以一般这些脚本程序只能在游戏程序中进行调试,而不能在一个单独的脚本编辑,编译环境中进行开发。

6.游戏GUI界面(菜单),主要是指那些游戏中用户界面设计,有做的复杂,有简单的,做的简单就是2D GUI界面,做的复杂有3D GUI界面。

7.游戏开发工具主要包含关卡编辑器,角色编辑器,资源打包管理,DCC软件的插件工具等开发。

8.支持局域网对战的网络引擎开发,主要解决局域网网络发包和延迟处理,通讯同步的问题,有同步通讯和异步通讯两种做法,异步通讯用于那些对运行帧速要求比较高的游戏,同步通讯相对异步通讯来说效率相对低,但是同步通讯的编程模型相对异步通讯来得简单一些。

9.支持互联网对战的网络引擎开发,目前大部分网游都是C/S结构的,服务器端软件配置管理,服务器程序的最优化,还有游戏大厅、组队、游戏逻辑处理、道具管理、收费系统等。另外还有一些网络系统是C/S和P2P两种结构混合的,如XBOX Live等。

二、游戏公司中有哪些和程序员相关的岗位

程序员在游戏公司中的岗位在日本游戏公司和欧美的游戏公司有些不同,日本游戏公司中程序员的岗位主要有技术监督(Director),主程序员(Main Programmer),程序员(Programmer),在日本游戏公司里负责游戏项目开发的程序员,一般不会专门根据工作内容划分程序员,除了独立的系统研究室和声音系统制作部门(这两个部门是比较独立的,往往同时给好几个项目服务),负责每个游戏项目开发的程序员,随时都可能一人多职,比如说主程序员除了负责整个游戏系统以外,可能还要负责图形或声音引擎开发等,程序员除了人工智能以外还有菜单制作等。这种情况在欧美的游戏公司比较少见,他们分工的比较细,一般有图形程序员,声音程序员,人工智能或游戏关卡程序员,物理程序员,每个组中可能还会有一个Leader。

三、游戏公司一般是如何招聘程序员的这一点,日本公司和欧美公司也有些不同。日本公司一般喜欢从一些高校中招聘一些应届优秀毕业生,一方面比招聘有经验的人要来的成本低,另方面新人是一张白纸,容易培养,像SEGA、KONAMI等都是按这种原则招聘员工的,所以想进入日本游戏公司,你要学好你的软件课程。而欧美公司希望招聘进来,能马上进入项目的开发中去,所以他们一般希望招聘有工作经验的人,即使不是行业中,在相关行业中工作2、3年的也可以,所以想进入欧美游戏公司你的工作经历很重要。

四、想成为一名游戏开发程序员应该具备哪些条件

我觉的一个游戏软件程序员,最起码的要求是熟练掌握计算机本科专业所学的知识,主要包括C语言或C++语言,数据结构,编译原理,算法等,另外线性代数、微积分、牛顿力学在图形和物理引擎开发方面用途也很广泛,如果要提高的话还有必要了解硬件相关的知识如计算机体系结构、汇编语言,这些对我们学习一个新的硬件平台、编写最优化代码、提高自己游戏的竞争力都是非常有益的。另外,保持有恒心、不怕苦(比如说通宵加班)的心态,对游戏的热情也是非常重要的。对于那些想进入游戏行业,但缺乏软件开发知识的人,可以通过参加游戏开发培训来

五、学习游戏编程有哪些好方法

应用程序的开发 篇6

关键词:JSP;Web网站;Web服务器;安全

中图分类号:TP309文献标识码:A 文章编号:1009-3044(2007)12-21562-02

Security policy of Web application procedure development based on JSP technical

ZHAO Feng

(Information Department of Science and Engineering, City College of Wuhan University of Science and Technology, Wuhan 430083,China)

Abstract:This article introduces the characteristic and work mechanism of the JSP technology. The analysis has studied security problemwhich Web application procedure development exists based on JSP technical from Web Server security, JSP script programming, database security and visit jurisdiction and so on several aspect anddiscusses when and how the Web development based on JSP should adopt security measure.

Key words:JSP; Web Site; Web Servers; Security

互联网为信息共享、信息交流、信息服务创造了理想空间,网络技术的发展和应用,为提升信息社会发展服务能力和品质提供了巨大的推动力。同时人们已经不再满足于静态HTML技术,更多的是要求动态、交互的网络技术。JSP作为一种崭新的服务器端动态网页设计技术,被广泛应用在电子商务、网上调查、网上查询等各种互联网应用中。各种动态内容生成环境美化了WEB,他们的设计目标就是为了给开发者更多的便利,给最终用户更多的方便。但當网络编程越来越方便,系统功能越来越强大,系统的弱点和漏洞也越积越多,安全性成指数倍地下降,所有电脑驱动的系统都很容易受到侵犯和破坏,对计算机系统进行任何有计划的攻击,都可能产生灾难性的后果。本文就将比较详细分析基于JSP技术的Web应用程序开发的安全策略

1 JSP的特点与工作机制

1.1 JSP的特点

JSP (Java Server pages)是由Sun公司在Java语言上开发出来的一种动态网页制作技术。它允许把Java代码逻辑嵌入到HTML和XML文档当中,为创建和管理动态网页的内容带来了方便。与ASP、PHP工作机制不太一样,JSP页面在执行时是编译式,而不是解释式的。首次调用JSP文件其实是执行一个编译为Java Servlet的过程。当浏览器向服务器请求这一个JSP文件的时候,服务器将直接用相应的Servlct结果作为应答。

1.2 JSP的工作机制

JSP是一种将Web浏览器、Web服务器、数据库系统结合在一起的,使Web应用更容易开发、访问和发布的技术。它使用Java代码动态生成HTML文档的Web页面模板。它运行于称之为JSP容器的服务器端组件。JSP容器将JSP转换为等价的Java Servlet。它是一种安全、健壮和平台独立的技术,把Java的强大功能引入电子商务和企业Web计算中。目前最新版本是2007年4月发布的JSP4.0版。由于它本身是个开放式的体系结构,可以方便地通过自定义标签库的形式进行扩充。目前有相当多的基于JSP技术的Web应用开发框架,如Struts,Cocoon等,显示了强大的生命力。JSP的工作机制是首先由用户浏览器向Web服务器,如Tomcat等发送JSP文件请求,服务器接到请求后知道这个JSP文件需要被生成Servlet,于是她在工作目录中寻找是否有已经生成编译好的Class文件,如果有,就直接调用并生成输出。否则,JSP容器会将JSP文件生成对等的Servlet源文件,并编译成Class文件后运行,产生格式为HTML的输出。在静态网页HTML文件(*.htm,*.htm1)中加入Java程序片断(Scriptlet)和JSP标记(Tag),就构成了JSP 网页(*.jsp)。JSP页面以扩展名为jsp的纯文本文件形式存于服务器上,当服务器接收到客户端某个JsP页面的请求时,触发JSP引擎,JSP引擎首先检查JSP文件是否是新创建或修改过,若是,则把该JSP页面内容转换成一个纯Java语言的Servlet源码,然后使用标准的Java编译器,将Servlet编译成Servlet字节代码,生成所请求的内容,最后将执行结果以HTML页面的形式发送回浏览器。

2 基于JSP技术的Web应用程序开发的安全策略

随着社会的发展,基于WEB方式的电子商务平台正逐渐兴起,各种建立在WEB方式下的动态交互系统正极大地变革着人们的工作和生活方式。而JSP(Java Server pages)正是构筑动态WEB平台的首选语言,它强大的功能,诱人的平台无关性,较好的安全机制还有免费的系统软件都深得众多业内人士和IT企业的支持。

2.1 数据传输时的安全策略

一般情况下,客户端与服务器端之间的数据传输以明文形式传输,如何防止其中包含用户名、密码等的敏感信息被恶意用户截获十分重要。GET请求方法是把请求数据从客户端传输到服务器端最简单的方法。使用GET请求方法时,输入数据附加到请求URL之后,格式如下:URL[?name=value[&name=Value[&?]]]显然.对于传输敏感数据来说,这种编码方式是不合适的,因为通常情况下,整个URL和请求字符串都以明文方式通过通信通道。所有路由设备都可以和服务器一样记录这些信息。如果要在客户请求中传输敏感数据,我们应该使用POST方法,再加上一种合适的加密机制(例如,通过SSL连接)。从JSP引擎的角度来看,在很大程度上,使用哪种传输方法无关紧要,因为两者的处理方式一样。在WWW 的发展过程中,Netscape引入了Cookie的概念。Cookie是服务器保存到客户端的少量信息,服务器提取这些信息以维持会话状态或跟踪客户端浏览器的活动 JSP提供了一个response隐含对象的addCookie()方法,用来在客户端设置Cookie;提供了一个request()对象的getCookie()方法,用来提取Cookie的内容。Cookie是iavax.servlet.http.Cookie类的实例。由于两个原因,如果把敏感数据保存到Cookie,安全受到了威胁:第一,Cookie的全部内容对客户端来说都是可见的;第二,虽然浏览器一般不提供伪造Cookie的能力,但没有任何东西能够阻止用户用完全伪造的Cookie应答服务器。一般而言,任何客户端浏览器提交的信息都不可以假定为绝对安全。再次,JSP通常使用SSLSSH协议在客户端和服务器端建立加密通道以保护传输中数据不被截获。同时时刻确保已安装最新的服务程序包,补丁能够帮助我们保护SQL Server数据库免受许多威胁。但是安全补丁的发布速度总是跟不上那些移动迅速的安全性问题的处理。建议使用微软公司的免费的安全通知服务或WSUS服务。使用监控连接,连接可以告诉我们谁试图访问SQL Server。所以监视和控制连接是保护数据库安全的一个非常好的方法。对于一个大型的活动的SQL Server数据库,可能会有很多数据连接需要监控.但是监控失败的连接是非常有价值的,因为它们可能表现出使用的企图。最后还要防止防范SQL注入(SQL Injection),SQL Injection是当前网站安全的主要问题之一。攻击者可以利用它读取、修改或者删除数据库内的数据,甚至可以获得操作系统的控制权,SQL Injection攻击无法通过安装系统补丁或配置防火墙拦截。赵文龙等人提出通过输入认证+数据库安全策略可有效抵御防范SQL注入。

2.2 基于JSP的数据库应用程序权限访问控制

基于JSP的数据库应用程序权限访问控制系统包括图书检索模块、编目模块、采访模块、流通模块、系统管理模块等几个部分。使用系统的用户被划分为三个层次:其一是大众用户(设其权限为5),注册后只能访问检索模块,这是最低的权限;其二是各编目人员(设其权限为2)、采购人员(设其权限为3)、流通人员(设其权限为4),分别具有访问编目模块、采访模块、流通模块的权限,互不越权访问,同时拥有访问检索模块的权限;其三是系统管理员(设其权限为1),拥有系统的最高权限,即访问所有模块,负责各个模块的维护,管理用户权限与密码、用户的注册等。设置一个访问控制列表(表示用户对资源的访问权限)userdbf,它主要包含4个字段,即用户名username、用户密码passwird、对应的权限jibie、单位字段company。在登录页面设计表单输入用户名、密码、单位,登录检查页面中对上述输入字段内码转换后,验证用户是否合法并获得合法用户的权限,用session对象的putValue()方法存储,在以后的页面无需用户再输入用户名及密码,只需根据这个session对象中保存的权限值,在每一个需要进行权限检验的页面判断该用户是否拥有访问权利。

2.3 保障Web服务器的安全措施

网络防范技术的日益成熟,使木马、病毒这类恶意代码的植入变得困难。网络入侵者开始针对系统自身存在的漏洞,编写相应的攻击程序,其中较常见的是对缓冲区溢出漏洞和DOS攻击。缓冲区溢出的原因是应用程序不够完善,设计的缓冲区不能满足特殊情况下的需求,就可能发生缓冲区溢出,导致数据丢失或损坏,甚至引起程序或服务器崩溃。比如Windows下的IIS4,IIS5某些版本在处理超常文件名时,就存在缓冲区溢出漏洞。人们往往认为,JAVA作为一种类型安全的、具有垃圾收集能力的、具有沙箱机制的语言,他能够奇迹般地保证软件安全,所以具有JAVA所有好处的JSP页面也是安全的,许多在其他语言中存在的低层次安全问题,比如缓冲或堆栈溢出,很少给JSP程序带来危害。然而,这并不意味着人们很难写出不安全的Servlet程序。因为缓冲区溢出的根本原因在于C语言本身的特性,而JAVA的解释器就是用C语言编写的,所以JAVA解释器还是可能存在缓冲区溢出漏洞并受到攻击。不过缓冲区溢出攻击实施起来相当困难,因为入侵者必须能够判断潜在的缓冲区溢出何时会出现以及他在内存中的位置。缓冲区溢出预防起来也同样困难,管理员应及时注意软件的安全公告和安装发布的最新补丁程序,完全去掉缓冲区溢出存在的条件才能防止这种方式的攻击。拒绝服务攻击是指一个或多个用户占据了大量服务器资源,使系统没有剩余的资源给其他用户提供服务的攻击方式。一个Web服务器为了尽可能地发挥出主机的功能,会限制同时连接到该主机上的人数,如果黑客占据了这些入口并维系一段时间,那么其他用户的合法请求就会被服务器拒绝。拒绝服务攻击还能通过降低系统资源例如CPU时间、磁盘空间、网络带宽、甚至是系统管理员的时间来进行。同时我们可以通过查看日志文件、监视连接登记状态,将入侵者的IP地址设置为黑名单来立即拒绝他们的继续访问,也可以通过控制同一源IP地址的连接数来达到抵御DOS攻击的目的。

2.4 从编程角度来加强安全

Michael Howard从安全编程方面总结出一系列编写安全代码的技巧,这些技巧不局限于特定的语言。Jess Garms及Daniel Somerfield等则从Java编程的角度出发,提出了如何编写安全的Java代码的意见和建议。如限制序列化,使类不可克隆,避免硬编码敏感数据等。同时随着系统资源的扩展和用户的增多,访问控制列表的长度会变长,这时权限的分配和管理工作越来越难,这时可以采用基于角色的安全访问控制(RBAC)。若对用户口令表及重要库文件进行加密,整个系统的安全性会进一步提高。

3 结束语

提高一个Web应用系统的安全性,抵御非法用户的入侵,任何一个漏洞都可能成为系统安全的隐患。作为基于JSP的WEB设计开发人员,必须对采用的动态网页技术、系统环境和网络协议等各个方面可能存在的安全问题比较清楚,在应用系统的开发过程中,采用适当的系统设置和安全的网络传输协议,摈弃不安全的脚本编程,这样才能保证系统的安全、正确运行。

参考文献:

[1]张建华,等,Web页面防篡改及防重放机制[J].计算机应用,2006,(2):327-328.

[2]耿祥义,张跃平.JSP实用教程[M].北京:清华大学出版社,2003.

[3]盂宪虎,沈均毅.WEB数据库应用程序安全性设计的一种实现[J].计算机工程与应用.2002(9):119.

[4]谢炎桦著,Visual Basic&Access数据库管理系统构建实例,清华大学出版社,2001.

[5]Gary Bollinger,Bharathi Natarajan.JSP程序设计指南[M].天宏工作室译.北京:清华大学出版社,2002.

[6]Kevin Mukhar,Todd Lauinger,John Carnel1.Java数据库应用程序编程指南[M].魏海萍译.北京:电子工业出版社,2002.

[7]中國互联网络发展状况统计报告.中国互联网信息中心,CNNIC,2004—0l

应用程序的开发 篇7

Web Service是通过标准的Web协议使计算机和各种计算设备实现信息通信和共享的一种新方法。它将一系列功能和逻辑封装在一起, 供用不同语言开发、运行在不同平台、分布于不同地方的应用程序使用。Web Service的实现原理类似于过去的RPC (Remote Procedure Calls, 即远程过程调用) 技术, 如Microsoft的DCOM (Distributed Component Object Model) 、Sun One的RMI (Remote Method Invocation) 、IBM的Web sphere等。而Web Service如下的一些核心特征使它能克服以前技术的一些局限性:

(1) 平台互操作性:Web Service使用基于XML的消息处理作为基本的数据通信方式, 是客户端在服务的使用上不依赖于特定的平台。

(2) 广泛接受的协议:Web Service以一系列被国际通信组织和软件机构广泛接受的标准协议为基础, 为超大规模的集成运算提供了可能。

(3) 基于耦合的连接:Web Service的服务和客户是相互独立的, 一端可以在不影响另一端的情况下, 添加功能和扩展程序, 只要保持对外的应用程序接口不变就行。

Web服务体系结构一般由两种角色组成:一个是Web Service客户端, 访问Web服务, 向Web Service服务器索取服务;另一个是Web Service provider, 提供Web服务, Web服务由应用程序项目文件中的下列4个文件组成:

(1) 发现文件 (.vsdisco) 动态XML Web Services发现进程使用的基于XML的文件, 此进程使用该文件标识Web服务器上的可搜索路径。

(2) ASMX文件 (.asmx) 一个文本文件, 充当调用Web服务的客户端的基URL。

(3) 代码隐藏文件 (.CS、.VB等) 一个编译文件, 包含实现Web服务的代码。

(4) Web.Config文件用来配置Web服务。

Web Service并不是微软的专项, 但微软的.NET平台却极好地支持了Web Service的开发。完全可以这么说, 微软的.NET策略的一个主要目标就是构建一套完善的Web Service体系, 实现人、资源、信息的高度集成, 为软件开发人员提供一个快速、灵活、安全可靠的开发软件环境。而C#作为一门简单的、真正面向对象的、类型安全的语言, 是微软专门为.NET平台而设计的。毫无疑问, 在Web Service应用开发上, C#具有其得天独厚的优势。下面通过一个实例详细介绍如何利用C#开发一个基于Web Service的应用程序。

2 建立Web Service服务器端

首先, 需要在服务器端建立好一个Web Service服务, 具体步骤如下:

(1) 启动Visual Studio.net, 在主界面中, 依次选择“文件”、“新建”、“空白解决方案”菜单, 在“项目类型”栏选“Visual Studio解决方案”, 在“模板”栏选“空白解决方案”, 建立一个名称为“测试Web Service”的解决方案。

(2) 右击解决方案, 选择“添加”、“新建项目”, 在“添加新项目”对话框中选“项目类型”栏下的“Visual C#项目”和“模板”栏下的“ASP.NET Web服务”, 并在“位置”栏中输入“http://localhost/数据库Web服务”, 然后单击“确定”按钮。

(3) 在打开的解决方案资源管理器中, 双击Service1.asmx文件, 打开窗体设计器。从工具箱“数据”选项卡中将SQL-Data Adapter对象拖到窗体上。在数据适配器配置向导中, 执行下列操作:

(1) 在第2个窗格中, 创建一个指向SQL Server 2000自带的Northwind数据库的连接。

(2) 在第3个窗格中, 指定要使用SQL语句来访问数据库。

(3) 在第4个窗格中创建以下SQL语句:

SELECT Employee ID, Last Name, First Name, Country FROMEmployees

最后单击完成按钮。

(4) 返回到Visual Studio.net主界面, 从“数据”菜单中选择“生成数据集”。在“生成数据集”对话框中选择“新建”选项, 数据集名字取默认的Data Set1 (确保“将此数据集添加到设计器”复选框未选中) , 然后单击“确定”。

(5) 从工具箱“数据”选项卡中将Data Set对象拖到窗体上。在“添加数据集”对话框中, 选中“类型化数据集”单选按钮, 并从“名称”下拉列表框中选择“数据库Web服务。Data Set1”项, 单击“确定”, 生成一个data Set11的对象实例。

(6) 在设计器窗口单击右键, 选择上下文菜单中的“查看代码”, 切换到代码编辑窗口, 输入如下代码:

(7) 最后, 在Visual Studio.net主菜单中生成项目文件。

3 Windows客户端远程调用

建立好Web Service服务器端后, 接着建立了一个Windows客户端来演示对数据库Web Service的调用实例, 具体步骤参照如下:

(1) 右击解决方案, 选择“添加”、“新建项目”, 在“添加新项目”对话框中选“项目类型”栏下的“Visual C#项目”和“模板”栏下的“Windows应用程序”, 并在“名称”栏中输入“引用Web服务”, 然后单击“确定”按钮。

(2) 右击解决方案窗口中的“引用Web服务”项目, 在弹出的上下文菜单中点选“添加Web引用...”, 在弹出的对话框地址栏“http://localhost/数据库Web服务/service1.asmx”, 并单击右侧的跳转箭头, 当在“可用的引用”栏中出现上面建的服务时, 单击“添加引用”按钮, 在解决方案资源管理器将会出现如图1所示画面。

(3) 双击“Form1.cs”文件, 打开Windows窗体设计器, 并从工具箱“Windows窗体”选项卡中为窗体添加如表1所示对象控件。

(4) 右击窗体设计器, 在上下文菜单中, 选择“查看代码”, 切换到代码编辑器, 在变量声明处增加一行代码“private localhost.Service1 data Service;”, 在窗体构造函数内添加代码“data Service=new localhost.Service1 () ;”, 然后返回窗体设计器。

(5) 在窗体设计器中, 执行下列各步骤 (主要3个事件函数通过调用Web服务实现对远端数据库的控制) :

1) 双击“查询”按钮, 在select_Click事件函数中, 输入下列代码:

2) 双击“添加”按钮, 在add_Click事件函数中, 输入下列代码:

3) 双击“删除”按钮, 在delete_Click事件函数中, 输入下列代码:

4) 双击“清空”按钮, 在empty_Click事件函数中, 输入下列代码:

(6) 最后, 生成整个解决方案, 运行客户端程序, 测试一下Web Service应用程序, 点击查询按钮, 得到结果如图2所示。

4 结语

在上面制作的应用程序中, 删除功能只能删除添加的项, 而不能删除Employees表自带的数据, 因为在它与Northwind数据库其他表之间存在级联关系, 否则会产生错误。希望通过对上面实例的介绍, 可以进一步研究、挖掘出更有实用价值的Web Service。通过Web Service将各种资源、媒体、逻辑、信息等封装成单个实体并发布到网络上, 实现高度的软件资源和信息资源的共享。

摘要:通过一个Windows客户端/服务器程序, 对数据库Web服务的调用进行了实例介绍。

应用程序的开发 篇8

实行标准化是解决软件复杂度问题和增强模块性、适应性、轻便性、重用性、可维护性等的要点。标准化可以通过定义优良的软件架构和需求结构化来达到。需求结构化由AUTOSAR规定, 旨在达到模块化, 兼容性, 可移植性和重用性。根据AUTOSAR, 模型要求组件配置、接口定义和接口的抽象层能够方便地被AUTOSAR兼容软件所实现。

二、AUTOSAR概念综述

AUTOSAR的主要目标是开发封装的应用软件, 它从硬件中抽象出来, 并且独立于通讯技术, 操作系统等。这类软件组件可以重新部署到不同的ECU, 同时可以在不同的汽车制造商和供应商中进行重用。

AUTOSAR软件组件 (SWC) –应用和下部构造分离, 并且将软件组件进行封装。每个软件组件将以功能结构自我封装, 拥有与其他软件组件进行交互的接口。

实时环境 (RTE) –AUTOSAR指定了软件组件间的通讯, 这些组件驻留在抽象层。在ECU内实现通讯抽象层被称为实时环境。一个联网的环境一般由几个ECU组成, 相关联的RTE共同建立了通讯网络的抽象层。在AUTOSAR术语中, 它被称为虚拟功能总线 (VFB) 。

AUTOSAR底层软件 (BSW) –运行在下部构造软件中的应用软件组件, 该组件隐藏了详细的微处理器, ECU硬件, 设备驱动, 以及服务的细节。这个下部构造软件由ECU指定, 并且提供了应用软件的软件平台。应用软件组件和底层软件组件的交互总是通过在RTE中定义的通用API来完成的。

三、在基于模型的开发中集成AUTOSAR需求

基于组件的设计–应用软件建模从建立框架开始。组件映射到一个内嵌的Simulink子系统中, 使硬件、通讯和操作系统互相分离。

数据与服务–与AUTOSAR综述中指定的通讯机构相关联。此模型需要一个模拟数据与服务通讯的通讯层, 其中包含信号的映射, 必要的信号条件, 信号传送功能等。在软件中, 该层被映射到复合I/O抽象层和通讯层。这种设置提供了一个使应用层独立于目标环境的通用平台。

实时环境 (RTE) –位于RTE区域中的功能模块, 它能促进应用层和操作系统的交互。每个软件组件与RTE交互, 使得数据与事件传递到各个模块。RTE链接了不同的应用软件组件。在执行时, RTE提供了入口函数和与其他模块通讯的宏定义。建模、仿真和RTE的实现是重点, 它们互相补充, 构成了基于模型的开发过程。

操作系统 (OS) –需要小型的操作系统模型来模拟OS服务, 比如像计数器, 警报器等等, 这些是和应用层分离开的。应用层使用了OS服务以得到想要的事件驱动动作。

四、外灯模块建模过程示例

外灯模块是一个应用软件组件, 它控制了汽车的外灯, 例如刹车灯, 转向灯, 大灯, 位置灯等。该组件接收刹车板, 转向灯, 大灯, 档位位置和其他感应器的输入信号。

此例的目标是在基于模块的开发环境中实现AUTOSAR的概念。该项目由应用层执行模块和可仿真的RTE和OS组成。

模型的构造描述——模型的构造分为功能分区和接口定义。功能分区就是把具有相关逻辑的功能归类到一个软件组件中。接口定义描述了每个软件组件输入和输出的接口。组件接口有几种属性:例如, 名称, 类型, 系统类型, 方向, 软件数据类型, 数据升级策略等。

架构模型的生成——这个过程由组件配置工具自动操作。

生成可仿真的RTE——此架构模拟了软件RTE, 以提供模型测试的实际环境。

功能模型——虽然AUTOSAR不指定组件的内部结构, 但是对于组件的模块性和重用性有一定的要求。为了提高重用性, 需要有更强的功能配置、数据改变和优化配置的能力。

子函数处理器——软件组件被细分成各个子功能。在外灯的例子中, 每个子功能按灯的性质来分组。这个分组的设计保证了软件的标准化, 以使该组件可以被重用。

代码生成——建立数据词典是代码生成过程中的首要任务。在数据词典完成后, 运用组件配置工具可以让模型属性的设置得以自动化。

系统配置——因为组件是独立于环境的, 组件描述文件不包含有关于数据和服务来源的信息。同样, 它也不包含ECU驻留的信息。系统描述文件提供了数据和服务网络的细节。

总结

一个基于模型的AUTOSAR兼容软件开发使得标准化的软件开发拥有高质量和高效率。辅助AUTOSAR兼容软件开发的工具也在逐步推出, 选择这些工具将极大的帮助AUTOSAR兼容软件组件的开发。

摘要:车载系统软件的复杂特性以及在短时间内开发出高兼容性软件的要求, 使得汽车软件架构的开发标准不断更新。在各种支持功能模块开发的方案中, AUTOSAR是被广泛使用的方案之一。此文探讨了AUTOSAR组件结构需求的实现方法, 以及在基于模型的开发环境下应用层接口的实现方法。文中概述了AUTOSAR对于软件组件最主要的需求, 并且描述了一个操作系统基于模型的实现。另外, 文中介绍了软件架构开发和模型的仿真, 以及AUTOSAR兼容软件的自动代码生成, 这些都将以车身控制的外灯模块为例加以阐述

圆角曲面加工宏程序的开发与应用 篇9

圆角曲面的加工属于曲面的加工,曲面加工可在三坐标轴、四坐标轴或五坐标轴等数控机床上完成,其中三坐标轴曲面加工应用最为普遍。曲面加工的走刀路线有参数法、截面法、放射型法、环型等多种走到路线方式。下面介绍用截面法加工圆角曲面的原理。

截面法加工的基本思想是指用一组截平面去截取加工表面,截出一系列交线,刀具与加工表面的切触点就沿这些交线运动,完成曲面的加工。

根据截面法的基本思想,加工如图1中的圆角曲面可用一组水平面作为截平面,截出的一系列交线,如图1所示,然后刀具与加工表面的切触点就沿这些交线运动,即可加工出圆角曲面,只要控制相邻截面与截面间的距离足够小,即每次的下刀深度足够小,就可以加工出满足加工质量要求的圆角曲面。

由图1可见这一系列的交线都是圆角所在外轮廓的等距线,所以为简化编程可采用半径补偿功能进行编制。

2 下刀深度的确定

由图1可见,加工圆角面的过程相当于是以折线逼近曲线的方式来编制的,此时则产生了逼近误差,要使加工出的圆角曲面满足加工质量要求,逼近误差一般取零件公差的1/10~1/5。

为使加工后残留量均匀,采用圆心角作为参数变量来确定每次下刀深度及相应刀具刀位点与外轮廓的偏移量。若以圆心角为参数变量,采用等步长法加工圆角曲面,可建立刀具与被加工曲面在XZ平面的数学模型如图2,A、C点是在任意相邻两截面刀具与被加工面的切触点。对半径相同的圆弧,相同的圆心角θ对应长度相同的弧长和弦长,所以任意相邻两截面其切触点A、C之间的距离1是相等的。分别过A、C作水平线和铅垂线,分别交于点B和D,连接DB,交AC弧于E,交AC线段于F,如图2所示。因为AC长度一定,且AB⊥BC,所以随着AC线段位置的改变,B点相对线段AC的位置一定在以线段AC为直径的圆周上。由图2可知,B点到线段AC的最大距离为A C/2=1/2,这时平行四边形ABCD为正方形,即β=45°,这时残留的误差δ最大。

设被加工圆角面的半径为r,由图2几何关系可知,当残留的误差δ最大时,ABCD为正方形,∴AC=BD=l。

只要控制圆心角的增量不超出上述公式(1)计算出的角度,由圆心角的增量控制的每次的下刀深度也不会过大,则加工的圆角面就能满足加工精度要求。

若工件圆角曲面的半径r=5mm,轮廓度公差为0.03mm,若取δ为1/5的轮廓度公差,即δ=0.006,当采用立铣刀加工时,则由式(1)得θ=0.137°,即角度增量为不大子0.137°就可满足加工精度。

3 在任意截面,刀位点相对圆角曲面位置的确定

由上述内容可知,加工如图3中R5圆角时,刀具加工工件时的轨迹在不同的高度,都是圆角所在外轮廓的等距线,所以加工XZ面内的R5圆角时,可在高度方向用足够短的直线段逼近,即Z方向加工一小段直线,再利用改变刀具半径补偿偏置量的办法,调用外轮廓子程序实现这些等距线轨迹。

如图3所示,将工件坐标系G54的原点建立在工件上表面的中心上,则用立铣刀加工R5圆角时,在XZ平面内,任意加工高度上刀具与圆角曲面间的关系见图4,C点为R5圆弧的圆心,作点为刀具底面中心,E、F点均为R5圆弧的象限点,A点为圆弧上任意一点,过A点作垂线交CE线段于D点,过A点作水平线交CF线段于B点,过E点作垂线交AN线段于M点。随着加工高度的改变,角α从0~90°变化,刀具中心N点离工件上表面的距离FB在改变,即刀具的Z坐标在改变;刀具中心N点离圆角所在外轮廓的距离MN也在改变,即刀具半径补偿的偏置量在改变。设刀具半径用R表示,工件边缘圆角半径用r表示,从图4的几何关系可知:

刀具偏置量:MN=NA-AM=NA-DE=R-(r-r*sinα);

刀具在Z向的位置:FB=FC-BC=r-r*cosα。

4 程序编制

下面以图3工件为例,用φ12的高速钢立铣刀加工R5圆角曲面,其参考程序如下。

4.1 编写主程序

4.2 编写轮廓子程序

4.3 加工圆角宏程序的编制

A为工件圆角半径,自变量参数为#1;B为刀具的半径,自变量参数为#2;C为工件圆角在XZ平面内最高象限点在工件坐标系中的绝对Z坐标值,自变量参数分别为#3;E为根据工件精度要求,允许的最大误差值δ,自变量参数为#8;F为进给速度,单位为mm/min,自变量参数为#9。

5 结束语

对于加工上述类似的情况下的圆角曲面,只需事先采用半径补偿功能编写圆角所在外轮廓的子程序,然后在主程序中调用上述加工圆角曲面的宏程序,并将工件圆角半径、刀具半径、圆角在XZ平面内最高象限点在工件坐标系中的绝对Z坐标值、工件允许的最大误差值、进给速度等变量进行指定即可完成。此外,圆角宏程序能还有如下特点:能根据加工要求自动计算步距角,确保了加工精度;圆角可在工件坐标系中的任意高度上,所以其适应性好;利用程序输入补偿指令G10进行半径补偿偏置量的自动传递,大大简化了程序。

摘要:通过研究圆角曲面的加工路径及铣削过程,利用FANUC Oi-MB系统提供的宏程序功能编制出了具有通用性、适用性且应用简单的圆角曲面的数控加工程序。使用时只需在主程序中对相关变量进行赋值即可完成所需圆角曲面的加工。

关键词:宏程序,数控铣削,圆角曲面,刀具半径补偿

参考文献

[1]唐正清数控铣削加工刀具运动轨迹研究北京工业职业技术学院学报第4卷第3期2005年7月第14~18页.

[2]李善术主编《数控机床及其应用》[M]机械工业出版社1997.10.

应用程序的开发 篇10

1 Android平台的架构

Android平台整体自底向上由以下四个层次组成:Linux内核层、Android运行时库和其他库层、应用框架层、应用程序层。

1)Linux内核层:Android基于Linux version2.6.23内核开发的,主要是添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码。该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。作为一虚拟的中间层,该层位于硬件与其它的软件层之间。需要注意的是,这个内核操作系统并非类GNU/Linux的,所以其系统库、系统初始化和编程接口都和标准Linux系统有所不同的。它没有采用虚拟内存文件系统。而是采用YAFFS2文件系统。YAFFS(Yet Another Flash File System)文件系统是一个开源的,专门为NAND Flash设计的文件系统,具有很好的可移植性,也是一种日志型文件系统,能够在Linux,uCLinux.和Windows CE上运行。YAFFS目前有YAFFS和YAFFS2两个版本,一般来说,YAFFS对小页面(528字节/页)有很好的支持,而更大的页面(2K+64字节/页)就需要支持超大容量的NAND Flash。所以采用支持大页面的YAFFS2文件系统。

2)Android运行时库和其他库层:Android运行时库包含一组核心库(提供了Java语言核心库内的大部分功能)和Dalvik虚拟机。同时Android提供了丰富的库类支持且大部分为开源代码,如采用的数据库为SQLite。Android选择它作为移动终端的嵌入式数据库有以下优点,它无需安装和管理配置,它是一个存储在单一磁盘文件中的完整的数据库,体积小只有250KB但支持数据库大小至2TB,提供了对事务功能和并发处理的支持,而且比目前流行的大多数数据库运行速度快。

3)应用框架层:在应用框架Android开发人员可以跟那些核心应用一样拥有访问框架APIs的全部权限。应用的系结构化设计简化了各组件之间的重用,任何应用都可以分发自己的足见,任何应用也可以使用这些分发的组件(应用的使用方法需遵循框架的安全性约束)。

4)应用程序层:Android本身会附带一些核心的应用程序,包括e-mail客户端、短信程序、日历、地图、浏览器、通讯录等等,目前所有的应用程序都是由Java语言开发的。

2 Android平台与J2ME的区别

J2ME是Java语言专门针对嵌入式电子产品开发的版本,应用在移动电话、PDA、电视机机顶盒以及其它资源受限的设备上,J2ME是目前移动设备上使用最广泛的开发平台.J2ME平台由多种配置、简表和可选包组成.

可以发现J2ME的应用是建立在JVM(或KVM)之上,而主机操作系统是位于J2ME平台之外.这样的设计一方面提供了跨操作系统的特性,主机操作系统可以是Symbian、Windows Mobile和Linux,另一方面J2ME虽然提供了统一的开发平台,但是JVM的安全机制让J2ME的应用程序不能调用本地系统资源.而Android向下既包括操作系统内核心,向上又拥有通现成的应用软件,加之开源、免费、可以直接使用Java语言为开发人员提供了极大的便利。

另外需要强调的是虽然同样是使用Java语言进行开发,但是Android使用的Dalvik虚拟机和J2ME使用的标准的Java虚拟机(JVM)存在以下区别:

1)Dalvik是基于寄存器,而JVM是基于堆栈的.Android选择采用寄存器的方式是因为它对提前优化(ahead-of-time optimization)提供了更好的支持,而这对类似于移动电话这样的受限环境是颇有裨益的.针对基于寄存器虚拟机和基于堆栈的虚拟机更深入的比较分析指出,基于寄存器的虚拟机对于更大的程序来说,在它们编译时花费的时间更短.

2)运行环境的区别.Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例.

3 Android平台应用程序开发例程

开发实例是一个Android平台上地理定位应用程序,该应用是利用Android平台上的Google Map中的API来获取当前设备的地理位置,可以定时地请求更新设备当前的地理位置信息。

Android提供的地图(Map)功能可能是广大开发者非常关心的一部分。到目前为止,开发内嵌式地图应用的软件相当的困难,而且往往还需要支付很高的地图厂商的版权费用,加之手机上GPS功能还不完善,导致很多可以基于当前位置来开发功能的软件少之又少,就算是几个比较著名的LBS(Location-Based Service)软件,使用者也是寥寥无几。Android的出现打破这一格局,提供给普通开发者非常灵活的地图展示与控制功能。

3.1相关地理知识的简介

在详细进入coding之前,我们先介绍下经纬度知识。

经度是地球上一个地点离一根被称为本初子午线的南北方向走线以东或者以西的度数,本初子午线的经度是0度,地球上其它地点的经度是向东到180度或者向西到180度。

纬度是指某点与地球球心的连线赤道面所成的线面角,其数值在0至90度之间,位于迟到以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。

所谓地图投影,就是在平面上建立与地球曲面上相对应的经纬网的方法。地图投影的拟定和计算,一般均假定地球表面为旋转椭球面或参考椭球面。

3.2 Google Map中的API

使用geocode,地球上任何一个地点都可以用精度+纬度来代表。在Android中,com.google.android.maps.GeoPoint这个类代表了一个地点的经纬度;GeoPoint(int latitudeE6,int longitudeE6),E6是纬度(microdegrees).就是度数再乘以1000000。目前如果要指定地图地点,一定要传递一个Point的类到地图中。

Android中定义了一个名为com.google.android.maps的包,其中包含了一系列用语Google Map上显示,控制和层叠信息的功能类,以下是该包中最重要的几个类:

MapActivity:这个类是用语显示Google Map的Activity类,它需要连接底层网络。

MapView:MapView是用于显示地图的View组件。它可以获取键盘事件(onKeyDown和onKeyUp)来支持地图移动和缩放功能。它还支持多层Overlay,可以在地图上面画坐标,写地名,画图片等等,MapView必须和MapActivity配合使用。另外,MapView还提供了卫星图、交通图和路况图3种模式功能。

MapCotroller:它是用语控制地图的移动。Overlay:这是一个可显示于地图之上的可绘制的对象。

GeoPoint:这是一个包含经纬度位置的对象。使用GeoPoint对象,地球上的任何一点都可以用精度+维度来代表。这个类对象代表了一个地点的经纬度:GeoPoint(int latitudeE6,int longtitudeE6),E6是微度(microdegrees),就是度数再乘以1000000,目前如果要指定地图地点,一定要传递一个GeoPoint的类到地图中,例如:

纽约帝国大厦的经度和纬度

GeoPoint p=new GeoPoint(40.74836*1000000,-73.984621*1000000);

//获取当前地图的控制器

MapController mc=mapview.getController();

//地图中心移动到指定的点上

mc.animateTo(p);

//放大到21级(level),level的范围1-21

mc.zoomTo(21);

以下是几个Android关于定位功能的包中比较重要的类:

LocationManager:本类提供访问定位服务的功能,也提供获取最佳定位提供者的功能。

LocationProvider:该类是定位提供者的抽象类。定位提供者具备周期性报告设备地理位置的功能。

LocationListener:提供定位信息发生改变时的回调功能。必须实现在定位管理器中注册监听器对象。

Criteria:该类使得应用能够通过在LocationProvider中设置的属性来选择合适的定位提供者。

3.3项目源程序开发

3.3.1用户界面的布局

Android是通过布局(Layout)来定义UI(用户界面)的。一般视图(View)可以直接在布局的xml里声明。但是MapView只能通过自定义类来声明来实现:

3.3.2申请APIkey

要使用Google Map服务的话,我们需要一个APIkey。我们可以通过如下方式获取APIkey:

1)找到USER_HOMELocal SettingsApplication DataAndroid目录下的debug.keystore文件。

2)使用keytool工具来生成认证信息(MD5),使用如下命令行:

3)打开‘sign up for the android maps API’页面,输入之前生成的认证信息(MD5)后将获取到你的APIkey。

4)替换上面AndroidManifest.xml配置文件中“API?_Key_String”为你刚才获取的APIkey。

3.3.3权限设置

另外,要使用定位信息的话,必须设置一些权限,AndroidManifest.xml中的配置如下:

3.3.4程序中的核心代码

3.3.4.1创建主程序

接着创建一个MyGPSActivity,并继承MapActivity的activity类:

3.3.4.2使用定位管理器

我们可以通过Context.getSystemService方法并传入Context.LOCATION_SERVICE参数获取定位管理器的实例:

之后,我们需要将我们原先的MyGPSActivity作一些修改,让它实现一个LocationListener接口,使其能够监听定位信息的改变:

现在的代码中的onLocationChanged方法就会在用户的位置发生500米距离的改变之

进行调用。这里默认使用的LocationProvider是“gps”(GSP_PROVIDER),不过你可以根据你的需要,使用特定的Criteria对象调用LocationManger类的getBestProvider方法获取其他的LocationProvider。以下代码是onLocationChanged方法的参考实现:

上面的代码用于获取当前的新位置并更新地图上的位置显示。

3.3.4.3添加缩放控件

我们还可以为应用程序添加一些诸如缩放效果,地图标注,文本等功能。

//将缩放控件添加到地图上

3.3.4.4添加Map Overlay

下面的代码是定义一个overlay:

//将经纬度转换成实际屏幕坐标

上面的这个overlay会在地图上显示一个“I am here”的文本。

让我们把这个overlay添加到地图上去:

3.4代码的运行

运行模拟器,在Eclipse的DMMS视图的“Emulator Control”窗口中我们可以输入经度和纬度值发送到模拟器上,之后模拟器的屏幕上就会根据这个经纬度来进行定位。实际效果图如图2。

4结论

Android手机应用程序开发着眼于它的整个体系构架,是一项复杂的工程。本文分析了Android体系的层次架构,并通过一个应用实例开发验证了其平台的可用性。Android平台本身大量使用开源库类,并且为开发人员提供了一个非常便捷的开发环境。相信广大开发者可以借助Android提供的强大的源码开放软件开发包(SDK),开发出丰富多彩、极具个性的移动应用。

参考文献

[1]高博.基于J2ME的移动通信技术的研究与应用[D].沈阳工业大学硕士学位论文,2006.

[2]李观华,范辉.J2ME在移动通信程序中的应用[J].计算机应用,2003,23(3):124-126.

[3]廖永刚,余冬梅,张秋余.J2ME架构与安全机制的研究[J].计算机工程与设计,2006,27(4):575-577.

[4]张超,王阿川,王智.基于J2ME和J2EE的手机软件的研究[J].黑龙江科技信息,2007(3):21,201.

[5]Keogh J.J2ME开发大全[M].潘颖,王磊译.北京:清华大学出版社,2004.

[6]刘向辉.基于Java的移动终端中间件的研究与设计[D].华东师范大学硕士学位论文,2005.

[7]叶达峰.Eclipse编程技术与实例[M].北京:人民邮电出版社,2006

[8]刘岩.PCI标准及其应用现状的分析[J].信息安全与通信保密,2008,1(2):38-40.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:开发一个软件的过程 下一篇:最新对领导班子成员个人的意见和建议简短(3篇)