时间:2022-05-06 04:33:52
序论:速发表网结合其深厚的文秘经验,特别为您筛选了1篇软件设计毕业论文范文。如果您需要更多原创资料,欢迎随时与我们的客服老师联系,希望您能从中汲取灵感和知识!
摘要:传统构架下的ERP软件,在实际应用中出现了许多问题。文章介绍了一种新的软件架构方法――面向服务架构(SOA)的理念及其特点,并对面向服务架构的ERP和面向对象架构的ERP分别在体系结构和开发方法上作比较,最后选取SAP公司的NetWeaver和ESA产品设计理念作为案例,进一步阐述了SOA思想在ERP设计中的应用特点和优势。
关键词:面向服务架构(SOA);面向对象架构(OOA);软件设计
0 引言
ERP由最初的财务软件逐渐发展起来,内容越来越丰富,功能也越来越齐全[1]。到目前为止,ERP的产品模式最常见的有两种:通用型ERP和专业型ERP。通用型ERP,顾名思义,是适用于多种行业的套装软件。通过对其进行二次开发、系统配置,达到满足不同行业的管理信息化需求。它的拓展性好、通用性高,成为目前的主流。专业型ERP,也称之为行业型软件,是专门针对某一特定(或相近)行业设计和定制的,便于满足目标行业的个性化管理需求。
但这两种ERP产品都存在各自的缺陷,从而导致了应用实施过程中出现了很多问题,最终以失败告终的案例也不在少数。如通用型ERP,它的优点也正是它缺点所在。通用代表了缺乏个性,流程固化,不能针对不同企业做出有效的变化,只能通过企业进行业务流程再造,来满足ERP产品的需求,忽视了企业的个性化需求;专业型ERP的最大缺陷是它的开发成本高,使企业望而却步,同时适用的企业并不多,所以这种专用型ERP,企业很少主动开发,往往是在目标企业提出某种需求的前提之下,进行定制开发,需要很高的成本。
传统ERP产品存在的这些缺陷,大部分原因是其架构理念的落后,开发方法的局限。现在,面向服务架构(SOA,Service Oriented Architecture)这种新的架构理念被引入到ERP软件的设计与开发中,为传统ERP产品走出困境带来了希望,为ERP领域的又一次革命性的飞跃奠定了基础。
1 面向服务架构SOA
早在1996 年,Gartner Group就已经明确地提出了SOA的理念,但目前尚未有一个统一的、业界广泛接受的定义[2]。IBM的高级软件工程师李珉先生说过,不同行业的人可以从不同的视角来理解SOA,从程序员的角度,SOA是一种全新的开发技术,新的组件模型,比如说Web Service;从架构设计师的角度,SOA就是一种新的设计模式,方法学;从业务分析人员的角度,SOA就是基于标准的业务应用服务。
一般认为:SOA――面向服务架构是一个组件模型,它将应用程序的不同功能单元――服务,通过服务间定义良好的接口和契约联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样系统中的服务可以使用统一和标准的方式进行通信。其中服务,是指仅基于两个组件接口之间的契约,由一个组件提供其行为方法给另一个使用。
SOA中一般都包含三个角色:服务的提供者、服务的请求者、服务[3]。三个角色是根据对服务提出不同的需求和行使的不同功能来划分的。它们的关系可以简单理解为:服务的提供者将它提供服务的具体描述在服务,以方便服务的请求者查询;服务的请求者通过对服务搜索,查找到需要的服务及其提供者的地址;最后是服务的提供者与服务的请求者进行直接的绑定,完成服务(见图1)。 举个最简单的例子,我们若要在网上下载一首歌,先可以通过搜索引擎GOOGLE等,搜索可下载这首歌的网站,获知这首歌的免费下载的地址,最后我们直接链接这个地址下载歌。在这个过程,网站即相当于一个服务,我们是服务的请求者,而最后那个下载地址背后的服务器为服务的提供者。
图1SOA 三者关系图
SOA主要特征是将应用程序功能包装成服务,服务间彼此独立,可单独作为组件使用。它具备松散耦合,提供粗粒度的服务和标准化的接口等。SOA旨在提供一个通用的,可互操作的和有弹性的行业标准架构,可以在软件基础架构之上建立一系列可重复利用的服务,实现企业适应业务流程变化的需求。
2 基于SOA的ERP与传统架构下的ERP的比较分析
2.1 ERP传统体系结构和基于SOA的ERP体系结构的区别
传统的ERP软件在其体系结构上可以分为三层:表现层、业务逻辑层和数据库[4]。在这种体系结构下,其客户端访问存在很多的问题。如表现层在访问业务逻辑层的各个业务对象时,一个客户端可能同时访问多个业务对象,一个业务对象也可能同时被多个不同的客户端访问。因此它们之间关系杂乱、复杂,造成层与层之间的耦合性强;表现层与业务逻辑层相互依赖,访问接口不是公开标准的,而是依赖于特定的接口函数,一旦其中的某一层发生改变,其接口函数也要作相应的改变,导致系统地扩展性和维护性差(见图2)。
图2传统ERP体系结构
将SOA思想引入ERP软件的设计开发之后,其传统的三层体系结构,将会在概念上演变为四层结构,包括表现层、服务层、业务逻辑层和数据库。其中,服务层是抽象层,是独立的、由可重用的、基于标准的服务组成。每一个具体的服务包含了接口部分和实现部分,其接口部分定义了服务使用者和服务提供者进行程序访问的契约;实现部分包含了服务作用和商业逻辑等信息(见图3)。
由图3与图2比较可以清楚地看到两者的区别,SOA架构的四层体系结构,客户端并不像传统的体系结构直接调用业务对象实现最终目的,而是通过调用一个独立的服务,服务再调用相关的业务对象去实现最终目的。由于它调用服务的接口包含在服务层内,所以,各个层之间都是独立的、松耦合的,没有很强的依赖性。任何一层发生变化,只要接口不变,不会影响服务的实现,有利于系统地扩展和维护。
因此,设想以SOA思想实现的ERP软件,具备很强的弹性,可以根据不用企业的不同需求进行调整,符合企业的个性化需求,具体会在后面的实例中说明。
图3 SOA四层体系结构
2.2采用SOA和OOA进行ERP软件设计开发的区别
ERP软件发展至今,它的开发方法由最初的面向过程(POA)的开发方法,发展到面向对象(OOA),至现在提出的面向服务(SOA)的开发方法[5]。面向对象的开发方法是目前ERP软件开发中的主流技术,但它本身存在很多的缺陷。它对编程语言有很强的依赖性,封装粒度小,耦合度高,未形成标准的模型和概念,从而难以形成标准和开发规范,不能达到软件重用的可移植性和互操作性,产生了大量的“对象孤岛”。
相对于传统的面向对象体系结构的紧耦合,SOA是一个粗粒度、松耦合的面向服务架构,其服务之间通过公开、精确定义的接口进行通讯,不涉及底层具体编程接口和通讯模型,服务与服务之间是相互独立的,且服务可以被重复调用,也可以被任何潜在需求者调用。
以下是某公司针对订购产品这一实务做出的一系列数据处理的例子,分别从面向对象架构与面相服务架构这两种不同架构理念对软件设计开发的不同要求做出的比较(见图4)。
面向对象设计中,公司在生产和销售产品的时候,是根据收到的采购订单进行的。采购订单有很多属性,但它的订单编号是唯一的。根据其订单编号,编制公司的销售订单。根据其销售订单中产品清单编号主码,关系到产品清单。最后根据其具体产品编号关系到产品目录,一层一层的处理数据。以上过程,就是软件面向对象架构的最基本思路,对象之间继承关系的依赖性很强,层层相扣。因此,对象的分析与设计及编程实现,要求很高,也很复杂。
图4面向对象架构与面向服务架构
现采用面向服务架构思想对软件进行开发。可以把所有相关的主体分为三个层次,从基础的对象层,到由不同对象组成的组件层,至最终的服务层。关于这项订购实务,公司要处理的有四个基本对象,采购方信息处理,采购订单,产品清单,与产品目录;组件层包括采购方信息和单据两个实体;而它们都包含在订购产品这项服务中。那么公司在开发这项订购产品服务的时候,可以把它分为若干部分,从对象这个最小粒度开始,再组合成不同的组件,到最终完成一项服务。这样对开发人员技术的要求会低一点,且不同部门可同时进行软件开发。
这里需要说明的是,SOA并不是OOA的完全替代,如开发人员对单个对象,或组件乃至整个服务采用面向对象的架构设计,但在整体上是面向服务的,主要原因是接口的设计。
2.3 SAP的NetWeaver平台和ESA思想
目前,SOA的思想被越来越多的用于ERP产品的开发上,ERP产品的巨头SAP也不例外。企业服务架构ESA就是SAP基于SOA的思想提出的新产品的模式。提到ESA就不得不提到它的另一个产品NetWeaver,因为企业服务架构是建立在这个技术平台之上的。
NetWeaver是SAP于04年正式推出的一个产品,它是一个底层技术平台,SAP的很多新产品的应用都是跑在这个平台上,相当于一个中间件产品。它主要提供了以下四方面的功能,人员集成,信息集成,流程集成和应用平台。它是由交换架构XI,主数据管理MDM,解决管理Solution Manager等组件构成。它是目前支持所有SAP应用的基础产品,是企业应用软件的开发平台、同时又为企业搭建一个基于NetWeaver的面向服务的IT架构。
SAP的企业服务架构并不是简单的技术层面的SOA,而是面向企业层面的,它将原有的ERP、SCM、PLM等模块在NetWeaver这个技术平台上集成,组合成业务流程平台(见图5)。企业在这一个平台上可以共享很多组件,不同的企业也可以根据不同的需求,增加或选用不同的企业服务库,或自主开发部分功能,实现企业的个性化。
图5 SAP NetWeaver平台业务组件
SAP的一位主管曾作过这样一个比喻,将软件的企业服务架构化比作电路的集成化。集成块(IC)本身是功能模块化设计的,但它是更复杂电路的基本组件,设计一个个的集成块,把他们组成电子设备,而不再是从电阻、电容、电感、晶体管等基本元件来组建电路。以后软件业业一样,要设计这些“集成块”和利用这些“集成块”,这些“集成块”就是企业服务(Enterprise Service)。 这也是面向服务架构思想在ERP软件开发和产品发展中应用的最佳体现。
3 总结
面向服务架构(SOA)得到了各大软件公司的重视,如IBM、Oracle、SAP等,说明其理念是先进的,相对于传统的架构模式存在很大优势。本文也具体阐述了其存在的优势,但大部分也只存在于理论,因每个公司对SOA的理解各不相同,基于此理论设计开发出的产品也是各有特点,没有得到一致的公认。
本文分析了SAP基于SOA思想提出的ESA这个思想,其最终产品仍处于开发阶段,只能对其主导思想略为阐述。现在是SOA乱战时代,但可以预见,随着SOA思想的发展和完善,以及在软件业的广泛应用,它的优势会逐步显现出来,为传统的ERP软件带来革命性的转变。
美国Globalpress公司举办的2007电子高峰会议上,举办了一场SoC(系统芯片)的专题讨论会:设计师如何利用嵌入式软件作为SoC器件设计的关键。会议上的专家各抒己见。
完整方案比单个硬件重要
主持人:Gartner公司的高级分析师JohnBarber
软件在嵌入式产品中的份量越来越重。自2000年来,价值观念发生了巨大的变化,2000年以前,主张是器件,即让我们的器件与竞争对手的性能、品质进行对比具有优势,这就是那时形成鲜明特色的关键。现今,制造商和客户需要的是解决方案,而不仅仅是器件。我的价值主张,我的鲜明特色,必须是完整的解决方案,包括与硬件一块推出的可以立即投入大批量制造的软件栈。
硬件与软件将设法整合到单个流程
Mentor Graphics系统级设计总监BillChown
我们过去所从事的是硬件设计,现在则还需要辅以软件应用方面的大量工作。但这两者的“婚姻”却并不幸福。在两者之间,我们需要填补在基础架构方面的鸿沟,如今的硬件小是从头设计的,需要进行基础架构的复用。需要复用的包括处理单元、内存、接口器件……许多基础设计事先已经被人们所了解、得到了分析和预先进行了配置。我们需要把它插入到系统中,提供针对硬件的软什能力,以及针对具体应用的软件能力。在用户对硬件和应用软件的使用目标的这两个空间之间,我们必,坝确保能让他们寻求到与他们的具体需求相应的问题所在,但是最大限度减小他们仡存两个空间之间的工作量。
EDA代表电子没计自动化,但我们有时候会迷失,而忘却了“自动化”一词正是我们在这个空间中应该完成的工作。我们应该回顾在这个流程中应该实现自动化的对象是什么?那并不仅仅意味着工具的改进,而且意味着我们能通过标准化来简化问题。
总结一下,我们能让人们去做的事情,是从一个任系统空间中的概念设计,一直到完成整个流程。慨念设计上的革新是关键,我们需要灵活多样;随着设计的进行,我们需要尝试不同的解决方案。如果我不知道我往做什么,就无法去尝试替代方案。所以良好的分析将告诉我,我所做的工作将会把我带向何方。这些不同的任务中的每一项,都对应着每一个团队所从事的领域。因此,这是一个复杂的世界,但我们将设法将其整合到一起。在实现整合的过程中,我们应该能加速、改动,并将来自于不同领域的软件与硬件、系统与验证集成到单个流程中。
软件的关键作用是保证批量
MIPS Technologies公司市场行销副总裁Jack Browne
在SoC设计时,我们所面临的挑战是多方面的。首先我们希望能向市场上推出种类多样的产品。以MIPS公司为例,有3种不同的微架构系列,10种不同的处理器内核。我们必须具有某种能让我们能投入制造的业务模式,因为本公司的业务模式是基于IP(知识产权)使用费的,我们的年收入的一半来自于授权和版权使用费。客户的产品要达到制造批量,交货则需要3-4年;他们拿到所设计出的芯片,要2年,然后他们再让OEM来设计出系统,而这又要花上2年。所以,该供应链有一个问题:如果我的收入严格取决于制造批量,你应该如何来支付这些开发的费用?费用的支付要延后4年,财经界是不能容忍战略性项目上的亏损的,你必须展示出业务的良好性。
另外一个挑战是,你希望进入不同的、类型各异的市场。其中每个市场的成功的临界数量(客户数量)是不同的。同时你还必须支持不同的OS(操作系统)。你必须有解决所有这些问题的方案。我们的做法是,承认人们有一个平台。软件,无论是Linux还是其他的实时操作系统,一直到应用层次。我们所追求的关键一点,是使用硬件抽象层。从根本上来说,如果我有两家不同的客户,他们决定购买不同的套装,或者甚至不同的USB控制器,则通过硬件抽象层,如你的PC中的BIOS,我可以实现不同的偏好,而不用移植操作系统。
你去考察供应链上的不同玩家的商业模式的话,就会发现,将操作系统移植到另一个硬件平台上的工作并不能提供多少余地。如果你所选择的应用不对路的化,则很难实现足够的产量。如果你考察如今的标准数字电视的话,就会发现其中有些采用了300万行的软件。而你将看到2年后的HDTV将采用500万行的软件,而且其中有16个处理器,用于处理不同的任务。
所以软件的关键作用就是保证批量。如何找到一个合理的财经运作模式,是EDA、IP公司、半导体公司、软件公司共同努力解决的挑战。
多处理器的软件设计法
Tensilica公司市场行销副总裁SteveRoddy
软件的重要性到底有多高?有人认为市场规模尚小,有些人认为它很重要,另一些人则主张我们处在一个临界阶段,许多软件都实现了移植。
3种现点也许都是正确的,具体取决于其市场。但我想退一步思考一下处理器也许倒也无妨。一个有趣的问题是,如今和未来的应用应该需要多少个处理器?这里借用ITRS(国际半导体技术发展路线图),来展示在每个工艺节点对应着的、每个SoC上平均使用的处理器的数量(图2)。当前,ITRS宣称每个SoC上平均有32个可编程器件。我们知道,有些可能数量会多些,有些则少些。Tensilica与Cisco合作,推出了基于130nm节点的、采用192个处理器的设计。所以处理器的数量会出现迅速增长。而软件正是在此之上运行的。
是的,软件的复杂程度和架构的复杂程度都正在增加。即便处理器的数量在增长,它们并不全都一模一样。这些器件上将出现多样化的处理器。
关于嵌入式的设计,很明显的一点是,软件的形式必然迥异于普通的通用型软件。事实上,嵌入式世界迥异于与通用型软件世界。在通用型应用的世界中,如Intel和AMD,在处理器上运行的软件在器件开始推出时尚不为人所知。因此一般采用通用型的计算,对于通用型的计算,人们采用通用的SMP Die Bucket架构。在嵌入式世界中,如果你设计用于路由器的芯片的话,它就是供路由器专用的。优点就在于你知道器件的用途,所以其设计会针对具体应用进行优化,让人们能利用专用的处理器,如可重构的和可扩展的处理器,以节省面积、成本和功耗。因此两者的设计之道大相径庭。拥有许多可重编程的处理器,并不意味着你有一个全新的世界。系统架构和硬件架构研发者努力解决这个问题已经有几十年了。他们将其称为SoC,现在人们以处理器为单位进行设计,而不是硬件模块,他们在系统中引入了许多软件的东西。但这并不意味着在设计这些东西的方式上会遇到什么危机。
设计这些系统的风格,仍然具有一个SoC 只有一个处理器的年代的SoC设计、架构所具备的那种多样性。你可以让处理器间具有一个看起来非常传统的联系,采用SMP通用型架构,你可以让处理器之间根据具体应用来建立互动关系,你可以在处理器间建立硬件风格的数据流。事实上,某些处理器甚至根本都不清楚芯片上有其他处理器的存在。这些东西的实现有多种多样的途径,成功的关键是功能划分,人们可以在功能模块中放入标准、API,事实上,在这些系统上运行的软件,可以造成复杂性极大增长,而我们在实现上仍然感受不到危机的存在,通过功能划分,经过优化的处理器、经过优化的API将通用型的程序与软件的所有复杂性隔离开来。
设计者完全可以利用直截了当的设计方法来掌握如此复杂的,设计数百万行程序的软件工作。
软件发挥至关重要的作用
Wipro公司半导体/消费事业单位副总裁Siby Abraham
今天,推动半导体业发展的仍然是摩尔定律。对我来说,在设计中如何放入更多的逻辑、在一定的芯片面积上能放入多少个晶体管这一问题所带来的痛苦和挑战一这是技术经理和工程师们关心的问题,倒还比不上呈指数化增长的IC设计成本。源程序的复杂性的日益增长,而成本的上涨幅度超过了硬件的。
如今,逻辑电路的80%都被复用。这意味着SoC上只有20%的逻辑是用来体现其不同之处的。这也就是利用软件来实现SoC鲜明特色的地方。我们所看到的趋势是,根据我们过去4年所从事的项目,我们在软件和半导体业摸爬滚打了多年,SoC的未来在于多核架构方面的改进,而这正是软件发挥其效用的地方。
如今,我们的软件还不能有效而自然地利用好多架构带来的优势。挑战在于,软件工程师如何能利用众多核架构带来的优点。我们已经看到了在SoC中对软件的多方面的应用。软件的挑战,可以认为与硬件工程师们所面临的挑战是一样的。
我们今天所看到的更重要的一点是,现在需要那些不仅仅把自己划入硬件工程师或软件工程师等类别的工程师们,他们了解更多的专业,从而能利用众多领域的知识。我们看到一个大挑战,有的客户要求在产品供货时就能提供软件。
我们所看到的技术上的挑战,价格、性能、功耗,而如今软件团队也将承担相应的责任。如果没有可调试性,硬件团队将困难重重。
摘要:在LabVIEW图形化的编程环境下,利用MIT-BIH生理信号数据库和LabVIEW的各种控件,实现对心电信号的采集读取、滤波、保存和回放。通过改进普通阈值法,利用“双阈值+校正阈值”的方法实现自动实时计算心率,对异常心电给予报警提示。同时,本系统设置了众多交互按钮,使得此心电监护系统功能多样、人机界面简洁友好、操作方便。
关键词:心电信号;虚拟仪器;虚拟心电监护仪;LabVIEW
前言
当今心脏病已成为威胁人类健康最严重的疾病之一,因此需要一种能够连续记录或者智能记录并分析心脏活动的心电监护系统,对患者进行实时监护。至今心电监护技术经过40年的临床实践和技术发展,其监护内容和仪器技术有了相当的发展。目前国内外心电监护的发展呈现出模块化设计、长时数据保存、低功耗小型化、网络信息化趋势。理论和技术的不断发展也为心电监护的进一步研究创造了条件。
LabVIEW是一种基于图形编程语言-G语言的可视化开发平台,多被应用于仪器控制、数据采集、数据分析等领域。鉴于实际心电监护仪难以普及和虚拟仪器的强大优势,我们采用LabVIEW的开发环境、设计了虚拟心电监护仪系统,实现了对心电信号进行采集读取、滤波、保存和回放,自动计算心率并对异常心电给予报警。此心电监护仪可以实现长时间的数据保存,而且操作界面简洁友好,便于掌握。
心电监护系统
此心电监护系统采用模块化设计,包括读取模块、滤波模块、保存和回放模块、心率计算和异常报警模块,各模块间的关系如图1所示。我们采用的数据取自心电数据库、不需滤波,因此略去滤波模块;其中“双阈值+校正阈值”的设计方法包含在心率计算与异常报警模块中,引入校正阈值的目的是为了“放大”心电的某些波段,针对性的检测某些心脏疾病。
系统子模块的实现
读取模块
获取心电信号有三种主要方式:数据采集卡现场采集:软件仿真心电信号;从数据库中读取。鉴于开发成本和真实性,我们采用最后一种方法。
我们采用著名的MIT-BIH数据库,其心电数据由.atr.dat.hea三种文件描述。我们采用LabVIEW脚本接口控件MATLAB Script Node,利用读取心电数据的MatLab程序rddata.m,读取心电信号,输出心电波形。
滤波模块
心电信号总是存在各种干扰,如工频干扰、基线飘移、肌电干扰等,噪声严重时可完全淹没ECG(心电)信
号,因此必须消除噪声,对心电信号进行滤波处理。
由于本设计采用的心电数据基本不需滤波处理,故这里的滤波是为校正阈值而设计的特殊处理模块。我们选用的是平滑滤波器,它能很好地滤除心电信号中混杂的高频噪声信号。
保存和回放模块
本模块是以“写入测量文件”和“读取测量文件”控件为核心,辅以“数据转换”控件,可以实现心电异常时自动保存以及有选择地回放,可以在8道(可增删)心电通道间任意切换,也可以选择保存的文件类型。
这里,“数据转换”控件的运用体现了LabVIEw数据流编程的思想。即每个控件都是对数据流进行操作,但作用的数据类型不同,其间通信必须先转换数据类型。
心率计算和心电异常报警模块
此模块是虚拟心电监护仪的核心,也是用户最关心的功能模块。目前ECG自动检测技术的研究主要集中在QRS波,P波和T波检测,ST段检测等方面,QRS波检测是ECG检测中的首要问题。
QRs波群检测方法有阈值法、面积法、幅值法、神经网络法、模式匹配法等。面积法和幅值法易受到噪声干扰。后几种方法较为复杂,运算量大且计算速度较慢,不适用于实时处理系统的要求。本系统采用的是改进的阈值法,可以概括为“双阈值+校正阈值”。心电异常报警就是根据双阈值和校正阈值的检测数据,利用布尔运算判断分析,结果送前面板显示。
此方法的设计原理和思想与普通阈值法相似,即以检测QRs波波峰的个数作为计算心率的依据,不同的是,此法采用双阈值,利用“波峰峰值检测”控件,设置两个不同的波峰检测阈值,一个阈值较大,用于检测R波:一个阈值较小,用于检测过强的T波和R波(本系统的检测阈值可以在前面板中设置),得到两个检测心率,然后利用比较、布尔运算,分析心电信号的异常情况并适时报警。针对心电的某些特征信号、这里设计了校正阈值算法,用于特定心电异常的检测(如高频噪声干扰,可以选用平滑滤波器,设置合适阈值,校正检测心率)。
此算法优点是计算量小,实时性好,便于在线分析;开放性强,可以扩展检测阈值数量,提高分析的可信度;可以根据需要设置校正阈值。此法缺点是手动设定阈值,可以添加自学习模块加以改进,利用自学习算法可实现。
“双阈值”法可以解决普通阈值法中存在的幅度大的T波误检或低压的QRS波被漏检情况,而“校正阈值”能够解决噪声干扰造成的心率误检等(取决于校正算法)。总之,与普通阈值法相比,该算法极大地提高了系统的抗噪能力,并减低了误判率。当然,可以根据需要,增加阈值检测数目、以及采用其它校正算法,使其不仅仅局限于校正噪声干扰造成的心率误检。
该心电监护系统的前面板和程序框图分别见图2和图3。
结语
本文阐述了基于LabVIEW的虚拟心电监护系统的设计,该系统用户界面友好、使用方便,充分发挥了LabVIEW的优势;本心电监护仪实现了心电信号读取、滤波、保存和回放,并且可以自动保存异常数据,实时报警和简易的心电分析。
摘要:分析了手机应用运行环境的特点,并针对这些特点提出相应的对策;同时,针对手机中应用程序显示区域小,CPU处理速度和内存容量限制,应用程序的实时性要求和开发环境的封闭性等特点,提出了一些设计策略和解决方案。
关键词:手机;应用软件;设计;对策
0 引言
用户在使用手机中无时无刻不在和手机上的应用程序打交道,手机应用程序设计得好坏直接影响用户对该款手机的感受。手机的应用程序的好坏决定了一款手机的内在品质,从而在很大程序上决定了一款手机在市场上的命运。本文结合笔者开发手机应用程序的经验,探讨手机上应用软件的设计和开发方法。
1 手机应用软件的特点分析
目前市场上的手机分两类:功能手机(Feature Phone)和智能手机(Smart Phone)。虽然这两类手机还没有一个明确的界线,但是手机上运行的应用程序都有如下特点:
显示区域小为了方便携带和按键,大屏的像素点为128x160、160x24、240x320等。
CPU处理速度和内存容量比段小基于成本的考虑,手机上的处理器(MCU)的频率较低,一般只有几十M,智能手机稍高,一般200―400M。内存(RAM和FLASH)一般为8M,16M,智能手机一般32M,64M。
和移动网络的交互密切,实时性强能与移动网络随时随地通信,交换语音和数据信息。对于来自移动网络的来电,短消息,彩信,推消息(Push message)等,应用程序必须能及时提示用户,并能让用户方便地处理这些信息。这一点也是手机产品和其他的PDA,PMP等产品的最大区别,同时对这些信息的处理也是手机软件设计和开发的关键点和难点。
软件的开发环境千差万别,因而手机应用程序的运行环境相差甚远现在市场上的手机的开发环境要么是手机的芯片开发商提供,要么是独立的软件公司提供,还没有一个统一的开发标准。各个平台的软硬件环境差别很大,在一个平台上的应用程序根本不能在另外一个平台上运行。手机应用软件开发和平台紧紧地绑定在一起,软件的可移植性极差。
2 手机应用软件设计和开发的对策
针对上述手机应用软件的特点,在进行手机应用软件设计和开发的时候必须有清醒的认识,并预先有相应的解决方案,在项目进行到中间或者最后才发现或者考虑这些问题为时太晚。下面是笔者认为在手机应用软件设计和开发上总体需要把握好的关键点。
2.1怎样应对应用程序显示区域小
应用程序的界面风格应一致。好的做法是设计一个共用的应用程序的基类(接口),所有的应用程序都从这个基类(接口)继承;设计一组公共的显示控件,这些控件的显示风格可以通过配置文件进行设置。这样可以很方便地达到“换肤”的功能,从而满足用户界面上个性化的需求。
多用图标和简洁文字来表达界面的含义。由于显示区域的限制,手机很难像PC那样利用多重窗口,基本上是一个应用程序占用整个窗口。采用统一的图标和简洁的文字能达到界面意义明确,表达意义形象的目的,这比冗长的文字更能吸引人的注意,使人记忆深刻,从而给用户良好的使用体验。如果能结合富有表现力的动画图片更好。因此,必须设计的图形控件有:应用窗口类,图片类,动画类,图片标签类,进度条类,单行列表类,多行列表类,单选列表类,多选列表。在手机应用窗口中应该充分利用这些类来设计有特色的用户界面。
设计一个通用的合理的输入法接口。输入法的设计在手机应用程序中有重要的地位。输入法的设计在实现的时候要考虑的实际问题有:
(1)怎么方便地切换各种输入。例如,可以考虑用#,*键来切换各类文字的输入。另外,标点字符和数字等由于使用的频率很高,可以考虑增加快捷菜单或者快捷键操作的输入方法。
(2)待选字符的安排是否合理,操作是否方便。例如图1所示界面是笔者设计的中文编辑界面。
说明:如果用户输入xyz所在的按键。则在区域1显示所有的待选拼音/笔画。在这个时候用户可以按左右方向按键来选择待选拼音/笔画。用户按OK键,在区域2,高亮(Highlight)显示的是第一个待选汉字。这时按左右按键高亮光标在待选汉字间移动。如果汉字太多,可以按上下按键来在前一页和后一页汉字之间切换。按OK键,高亮选定的汉字将被输入到编辑界面上。在区域3,是区域2高亮汉字的联想词组。用户可以长按1-9键将显示的词组直接输入到编辑界面(不需要高光选择)。短按一次取消键(C键)删除编辑界面的一个汉字,快速短按两次,删除编辑界面的一行汉字,长按取消键,全部删除编辑界面的汉字。
上面举的例子只是中文的输入,实际情况是还需要英文字母,英文单词,标点符号等字符的输入。所以,输入法的软件设计的细节问题很多,各个应用的需求千差万别,需要我们在开始设计软件时充分考虑输入法接口的可扩展性和灵活性。
2.2怎样应对CPU处理速度和内存容量的限制
设计或者选定一个合理而高效的系统架构。好的应用程序需要一个好的系统框架。针对手机的CPU和内存的特点,手机的应用程序的运行环境和PC上的程序运行环境有很大的不同,用表1总结如下:
通过上面的对比,可以看出,手机的设计应注意以下几点:
(1)以当前手机的硬件为基准,采取适度超前的原则来定义系统架构。整个架构不必大而且全,要小而精,并尽量做到架构中的各个部件具有很好的可裁减性。这样的系统架构才能满足各种不同的硬件需要。
(2)精心设计架构中的每一个部件,消除系统冗余的代码;合理定义接口,系统的架构才能清晰容易被人理解,并且系统的可靠性也高。只有这样,整个系统架构的代码占用的内存少,应用程序在运行的时候占用的内存和CPU资源少。
(3)应用程序可以在PC上模拟运行。一般手机上调试应用程序的过程比较复杂,如果一个很小的改动都要到手机上去调试很浪费时间,同时,在PC上调试程序也比在手机上调试程序方便得多。一个好的程序架构的基本要求是绝大部分的应用都可以在PC机上模拟开发完成。
精心设计应用程序。应用程序的执行效率和应用程序的设计密切相关。对于手机上的应用程序,不同的设计策略有不同的结果。例如:对于一个电话本的应用程序,读取所有电话记录至少有两种方法:一种是在一开机的时候就读;另外一种是在电话本应用打开的时候才读。实际情况是前一种情况较好,因为,这样用户每次进入电话本的时候手机可以很快地显示所有的电话记录,后者则慢得多,在有些系统中可能是难以忍受,必须提前准备好数据。
在设计应用程序中着重考虑的问题有:
(1)程序的处理效率是否高;
(2)程序的内存占用和CPU是否太多;
(3)用户的操作是否方便,应用的响应速度是否足够快;
(4)界面的定义是否美观,和系统的总体风格相一致;
2.3怎样应对应用程序的实时性要求
手机最重要的功能是通话和通信。这些一般和无线网络都有密切的关系。对于来自无线网络的来电,短消息,推消息等,必须有一个应用来统一调度和处理这些消息和信息。笔者称之为待机管理应用。待机管理应用是底层软件和其他应用程序的调度员,同时它也负责待机界面下的界面显示和其他应用不方便处理的一些任务。如果用图来表示,那么它在整个系统中的位置如图2所示。
待机管理应用的特点是:(1)一开机就首先运行;(2)总是处于运行或者待命状态,不会退出。
因此,这个应用的稳定性要求就特别高。在软件设计的时候要特别注意功能划分,如果某项功能能在其它的应用中处理,该功能应尽量分到别的应用中去,以免待机管理过于复杂,影响系统的稳定性。
待机管理应用的功能一般如下:
(1)处理与充电器和电池有关的消息。例如:插入充电器,如果是在开机,则在待机下显示充电动画;拔掉充电器,关闭充电动画的显示等;
(2)处理开机动画或者问候语的显示;
(3)如果底层协议报告SIM卡设置了PIN码,启动SIM卡的PIN码输入界面;如果还设置了手机密码,则启动手机的密码输入界面;
(4)显示待机下面的各种状态图标,网络注册的信息,时间和日期信息,各种应用图标的排列;
(5)显示屏幕保护的界面;
(6)处理用户在待机状态下的各种按键操作,例如:如果用户短按了数字1所在的按键,则要启动号码编辑应用或者界面,如果用户在应用图标或者菜单中按或者点击了某一个应用,则要启动该应用;
(7)显示各种系统状态,例如:未接来电和短消息的提示,电池电量不足的提示,闹钟的提示等;
(8)转发底层的各种消息给相应的应用程序,为其他的上层应用提供统一、简洁的接口。这样做的原因是通过对底层消息的封装和转换,能简化其他应用处理。并且使待机管理应用能及时了解系统当前的状态,并及时通知给用户。
2.4怎样应对应用程序的开发环境的封闭性
正如上面提到的,现在市场上主流的手机开发平台很多,并且还不断有新的平台涌现,怎样开发能在各种不同的平台上有很强移植性的应用程序对程序设计和开发人员是一个艰巨的任务。笔者结合自己的经历认为可行的思路如下:
(1)应用的用户界面和实际的处理逻辑尽量分开,将一些可以共用的处理逻辑提炼成共用的函数接口。例如:日程应用的阴阳历转换算法,电话本中的首字母查找算法等都可以放在一个单独文件或者库文件中,这样的代码可以很方便地移植到其他的平台上。
(2)编写代码的时候,数据结构的定义和函数的处理要考虑不同硬件平台的差别。一个好的做法是定义一个平台上通用的数据类型定义,而不是直接使用设计语言里面原始定义的数据类型。例如:如果是在C/C++的开发平台上,我们可以定义一个文件types.h,它里面包含如下通用类型的定义:
typedef char BOOLEAN;
typedef unsigned char BYTE;
typedef char CHAR;
typedef unsigned short WCHAR;
typedef char INT8;
typedef unsigned char UINT8;
typedef shOrt INTl6;
typedef unsigned short UINT16;
typedef long INT32;
typedef unsigned long UINT32;
typedef long LONG;
typedef unsigned long ULONG;
在程序中,所有数据结构的数据项,函数的参数和返回值,类的成员数据都用上面的这些通用类型,这样编写的软件的可移植性就可以大大提高。
如果可能,多采用成熟的第三方软件或者知名的开源代码库。
手机的应用经常碰到部分模块是自己开发还是采用第三方软件的问题。为了软件的可移植性,加快软件的开发速度,这些模块应该多采用专业公司开发的成熟软件或者采用稳定的开源软件。这比自己重新开发好、快捷方便得多,开发成本也比较少。例如:现在很多手机都支持MP4播放,这样就涉及音视频编解码的问题,如果可能,选择一个经过市场验证,可移植性强的第三方或者开源的音视频编解码库比自己进行开发要合算得多,这样的应用程序的可移植性比自己在特定平台上全部由自己开发的应用程序要好。
3 结束语
手机上的应用程序开发环境现在还是一个比较封闭,与应用程序耦合比较紧密的系统;应用程序的设计和开发相对复杂,对应用的稳定性,安全性,实时性要求也比较高。无论是对手机系统平台的设计人员还是开发人员,只有在了解其特点的基础上才能提出有针对性的方案。本文指出了这些特点并阐述了笔者的观点,希望能起到抛砖引玉的作用。
摘 要:为解决大容量遥测数据文件的快速分割,软件针对遥测文件以帧为基本单位且每帧头都含有时码的特点,设计按特征参数截取、按时间截取以及按帧序数截取等三种方法以满足不同的截取要求。遥测参数的解算调用已成熟的动态链接库,对于一些耗时的运算使用了二分搜索等优化算法。该软件操作方便、截取效率高,在型号应用中发挥了重要作用。
关键词:遥测; 文件截取; 软件设计; 二进制; 数据图形显示
0 引 言
随着科技的进步,空空导弹的研制越来越复杂。相应地就有越来越多的数据信息需要遥测传输,这必然导致遥测接收的数据文件较大。以3 Mb/s码率计,10 min的遥测数据就有214 MB之多。数据处理软件往往需要经过异步帧提取,有效位屏蔽,甚至经过费时的字符串处理[1]才能得到最终结果。所以当用户处理这种大文件时往往需要等待很长的时间。如果能够把这样大的文件分割成较小的几个文件然后分别处理,那么处理软件的运行时间就可以缩短到用户可以忍受的程度。
另一方面,空空导弹的发射试验往往比较短暂,从导弹离开载机直到导弹爆炸只有不到1 min的时间。数据分析人员最关心的也正是这段时间的数据。而实际遥测中,为了确保数据的可靠接收,会从发射前5 min开始记录直到遥测信号完全消失才停止记录。
这种情况下,如果能够根据导弹发射的特征信号(比如导弹与发射架分离的信号)来截取遥测数据文件也具有重要的实际意义。
本文通过对实际需求的分析,提出了按遥测帧数、时间和特征参数三种文件截取方法,并在VC 6.0平台上予以实现。
1 软件设计
1.1 功能设计
在空空导弹遥测中,待传输的信号都是先通过多路复用组装成一个N字节长的遥测帧然后调制传输。在接收端解调后先通过帧同步获得该N字节长的遥测帧,然后在帧头加入8 B的时码(又称为B码)来表示接收到该帧的时刻,如图1所示。这样存盘后的文件字节数是N+8的整数倍[2]。
图1 遥测帧发送接收过程
因为遥测数据按帧存放,所以有意义的最小分割单位是帧而不是字节,对文件的截取最后都要归结到按帧来截取。因此,软件的第一个功能同时也是最基本的功能就是按帧的起止序号进行分割。
由于文件中每一帧数据的帧头都有B码,所以将该B码换算成实际时间之后也可以根据时间进行截取。
数据分析人员一般要求提取导弹发射后到爆炸这一时间段的数据,所以利用导弹发射电气分离信号(ES)的跳变,截取跳变时刻前5 s直到跳变时刻后50 s的数据能够确保覆盖所需数据,同时尽量减小数据文件的大小。
典型的电气分离信号图形如图2所示。
图2 典型电气分离信号图形
(a) ES没有跳变 (b) ES有跳变(c) ES有跳变,信号有野点
(a)图导弹未发射,(b)图导弹发射,(c)图导弹正常发射但信号有野点
通过对图2的分析可以得出以下结论:ES跳变点需要通过计算的来判决,比如当前数据点与下一数据点之差超过信号范围的2/3,那么就认为当前点为跳变点。但是对于图2(c)中有野点的情况这种判决方法就有可能导致误判。所以最好的办法是让用户参与跳变点的判决。软件自动找到第一个跳变点,用户可以通过快捷键[3]找到下一个跳变点,直到正确的跳变点为止。
这种设计方法杜绝了跳变点的误判,同时又能直观快捷地辅助用户找到跳变点,另外还简化了软件的设计。
1.2 模块设计
分割一个文件的流程[4],如图3所示。
分析图3可以得出软件必须的几个模块:
(1) 打开待分割文件并自动生成分割后文件;
(2) 分割方式选择;
(3) 特征参数数据绘制;
(4) 起止帧序数选择;
(5) 起止时间选择;
(6) 是否需要剔除无效帧。
最终确定的软件界面[5-6]如图4所示。
图3 文件分割流程图
图4 软件界面
2 软件实现
2.1 按特征参数分割
按特征参数分割涉及到遥测参数解算。程序运行时首先加载动态链接库dbreader.dll,postpro.dll和eu.dll。在OnInitDialog中调用函数GetTMFrameFormatInfo来获取遥测帧格式,包括遥测帧的长度,码率,同步码位置等信息。然后调用函数GetTMParaAllRecord来获取所有参数在遥测帧中的位置信息,解算方法等。
当用户从程序界面的参数下拉列表框中选择一个参数时,触发CBN_SELCHANGE事件并调用消息函数[7]。在消息函数中根据参数是帧同步数据还是帧异步数据分别调用GetASyncParaValue函数或EUConvert函数解算出数据,同时从数据中找出跳变点,然后在图形控件上绘出曲线。
2.2 按B码时间分割
要想根据时间信息来查找对应的遥测帧就需要将该时间和文件中各遥测帧头的B码代表的时间进行比较。如果采用遍历查找的方法,对于总帧数为N的文件,理论上需要比较(N+1)/2次,要找到起、止两个时间对应的帧就要比较N+1次。这对于较大的文件来说消耗的时间会很长。
在遥测文件中,每帧数据都是按接收到的先后顺序从前往后依次存放。也就是说,搜索的目的序列是有序的。对于这种情况,可以采用折半查找法[8]进行搜索。理论证明,采用折半查找最多需要的比较次数为Иlog2(n+1),搜索起、止两个时间共需比较2*log2(n+1)次。
2.3 按帧序数分割
三种分割方式最后都归结到按帧分割。按帧分割惟一复杂的地方就是剔除无效帧。要剔除无效帧需要将每一帧数据的同步码取出来和标准的同步码进行比较。如果差异位数超过容许值就丢弃该帧,否则保留。很多程序都采用依次右移一位,看二者最低位是否相同,如果不同则计数加1,循环直到两个数都为零的方法。
这种方法效率非常低。本文采用了如图5所示的计算方法[9]。
图5 计算同步码错误位数
这种算法的关键在两处:首先对两个被比较数a和b按位异或,结果c的二进制数中为1的位置就是a和b不一致的位置。然后c不停地与c-1按位与[3]并将结果赋给c,直到c为0。通过归纳法可以证明c与c-1按位与可以消掉c的从低位往高位数的第一个1,所以c的二进制值有几个1就循环几次。
3 结 语
本遥测软件采用模块化设计,便于实现和测试。同时结合遥测文件的结构,实现了按帧序数、按时间和按特征参数三种分割方法,较好地满足了型号遥测数据处理的需求。从软件的设计可以看出,对于较复杂的软件采用自顶向下,逐渐细化的分析方法,分模块设计[10];对于影响程序性能的处理过程有针对性地进行优化,可以有效地提高程序的可靠性和性能并简化设计过程。
(中国海洋大学 信息科学与工程学院, 山东 青岛266100)
摘要:介绍了用于对20 kg级便携式AUV的运行状态进行控制的软件设计以及实现。该软件是基于MFC对话框运行于Windows操作系统下的程序,使用了多线程编程技术和串口通信技术。串口操作线程用于向串口读取或写入数据,并且在处理后把最终结果发送给主线程和导航线程。在主线程中将数据显示到界面上,在导航线程根据导航算法计算出用于导航的数据并写入串口以控制AUV的运行状态,包括AUV上浮、下潜、前进、后退、左转弯、右转弯。实验结果表明,该软件达到了预定效果。
关键词:便携式AUV; 多线程; 串口通信; MFC
自主式水下机器人(Autonomous Underwater Vehicle,AUV)代表着未来水下机器人的发展方向,因而是世界各国研究的热点[1]。而便携式AUV由于使用方便,可执行环境评估、水文地理、辅助水道测量、港口安全、岩屑区域绘图等工作以及可以用在未来战争中[2],将是未来AUV发展的重点。
本文主要论述了便携式AUV控制软件的设计及其实现,该软件主要用于监视AUV在水下运行时的状态信息以及控制AUV的运行。AUV在水下运行时的状态信息包括位置信息、航向、舱内温湿度、推进器转速、舵的方向角以及在水面时GPS传感器数据等信息,该软件将这些信息显示到界面上最终实现对AUV的监控和导航。
1便携式AUV系统简介
该小型AUV由两个密封舱组成,前舱安置了传感器系统,后舱安置了AUV推进器以及方向舵的控制系统。两个密封舱中间放置的一个垂直推进器用来控制AUV的上下运动,后舱安放了用于控制AUV水平方向的水平推进器和方向舵。系统搭载了AHRS、数字罗盘、GPS等传感器,这些传感器采集到的数据用于AUV的导航。AHRS传感器用来测量AUV的航向角、俯仰角、横滚角、3个方向的速度、加速度;数字罗盘测量AUV的航向角等信息控制软件对一串口进行操作,该串口连接与AUV进行通信的无线模块。将从无线模块接收到的数据经过惯性导航算法处理,根据协议将惯性导航算法处理结果发送到AUV,最终实现对AUV的控制。
2串口通信
串口在做文件处理时,简单的应用可以采用查询方式或定时方式,复杂的可以采用事件驱动的方式。所谓事件驱动,即当串口有数据进入输入缓冲区时,自动执行接收程序。利用WinAPI读/写串口操作可以有同步方式与异步方式。所谓同步方式是指发出写命令时,直到有数据写入到输出缓冲区写函数才返回。异步方式的重叠方式是指发出写操作命令后,不管写操作是否完成,写函数马上返回,写操作在后台继续进行,写操作完成后通过某种方式通知调用写操作的线程。这样避免了主线程被挂起,提高了程序的工作效率[34]。
2.1串口通信设置
在实现串口通信时,首先在界面上设置串口号、波特率、校验等信息。单击按钮打开串口,进入命令响应函数OnBtnOpen(),利用API函数打开并对串口进行配置[56]。最后使用API函数CreateThread创建一个线程。由于软件工作过程中需要传送的数据量不大,所以仅仅打开一个串口。
主线程打开串口具体流程图如图1所示。
图1打开串口、创建线程流程图在主线程中打开串口的代码如下:
m_hCom=CreateFile(m_port,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL)
在串口操作线程中使用API函数ReadFile用于读取串口数据ReadFile(hCom,buf,19,&Length,&Eol);而在该线程中向AUV发送控制指令时使用:
fState=WriteFile(m_hCom,buf,19,&m_bytes,&m_osWrite)
2.2串口通信协议
串口通信必须遵守一定的通信协议,才可实现该控制软件与AUV的正常通信。串口通信数据格式如图2所示,图中Data0,Data1,Data2…代表一个字(2 B)。
图2串口通信数据格式发送或接收的一帧数据最长为19 B,Data0中第1个字节代表指令(0xA1)、请求(0xB2)或者正常应答(0xC3)等含义;Data0中第2个字节代表具体指令、请求何种信息或者某种信息的应答。Data1,Data2,…代表发送或者接收到的数据。开关机指令长度为19 B,第19字节控制8个继电器,1,0分别表示开、关第零位控制总电源。开机、关机指令前18 B分别是:
~A16613579BDF02468ACE13579BDF02468A
~A166DF9B5713CE8A4602DF9B5713CE8A46
开机指令的第19个字节根据需要选择相应的继电器开启或关闭;关闭指令第19个字节为0x00,所有的继电器关闭。
3软件实现
3.1多线程实现
一个进程可有多个线程,使用多线程可提高软件的执行效率。该控制软件共有3个线程组成,包括一个主线程、一个导航线程和在成功打开串口后利用API函数CreateThread[78]创建的一个串口操作线程(如图3所示)。
图3多线程组织结构串口操作线程读取串口数据,并提取有效数据,接着利用函数PostMessage将有效数据分别传送到主线程和导航线程。主线程将有效数据根据协议进行解包并把数据包中包含的AHRS、数字罗盘、GPS等传感器和推进器、前舱环境参数等数据显示到界面上。当使用摇杆控制AUV的运行时主线程每隔0.5 s从USB接口接收数据,并转换成推进器转速以及方向舵的方向角信息,且将这些信息发送到串口操作线程写入串口。
在主线程中创建串口操作线程的代码如下:
hThread=CreateThread(NULL,0,ThreadProc,
(LPVOID)this,0,NULL);
在串口操作线程中将有效数据发送到主线程的代码如下:
PostMessage(*pDlg,WM_MYMSG1,
(WPARAM)buf,(LPARAM)Length);
3.2关键算法
由于惯性导航系统提供的位置估计精度会随时间而漂移,所以导航线程采用基于GPS/INS的组合导航[9]算法,用GPS辅助导航,即用GPS信息辅助修正惯导系统的输出,包括航向角和速度。对AUV的航向角信息修正是通过经典的PID控制算法来实现的,如图4所示。
图4AUV PID航向角闭环控制算法设Ji-1,Ji为AUV的2个节点,AUV即A点从Ji-1到Ji 点运行。设正北方向矢量为k=(1,0),根据图5按照下式可计算出角度θ。角度θ计算公式为:
θ=AJie北|AJi|•|e北|
=(Jix-Ax,Jiy-Ay)•(0,1)(Jix-Ax)2+(Jiy-Ay)2•02+12
=Jiy-Ay(Jix-Ax)2+(Jiy-Ay)2
在AUV进行Ji-1~Ji段的航行时,AUV根据导航算法不断算出坐标并判断是否到达指定区域,当离指定区域为R时(R很小),即可判定到达指定区域。在到达指定区域之前不断利用AUV PID航向角闭环控制算法修正航向角θ,最终实现AUV的GPS/INS组合导航。
图5航向角计算图解4控制软件界面及实验结果
4.1软件界面
本文设计的软件界面左侧上半部分和右侧主要实现对AUV的控制,界面左侧中下部分的3个仪表盘和TAB页控件显示AUV的各个状态信息。
单击开机、关机按钮将实现AUV的开启与关闭;单击询问AUV按钮,此时应答情况为AUV存在,表示监控软件与AUV的通信正常,否则应该检查无线模块和AUV。单击前舱参数、GPS经纬度、GPS时间、推进器状态、AUV航向角等按钮将持续获得AUV相应的信息;步进电机控制按钮用于实现方向舵的调整,进而实现AUV方向的调整。为了防止步进电机失步,这里还特意设计了步进电机的微调按钮,目的是在步进电机失步时将方向舵调整回原位置。
该控制软件还以仪表盘的方式显示推进转速、罗盘、温、湿度等信息。
以速度仪表盘为例,当从串口接收到的数据中提取出水平推进器或垂直推进器速度信息时,将速度信息存放到成员变量m_Spd1或者m_Spd2。利用API函数得到控件IDC_STATIC_SPD的区域坐标rect2,调用API函数InvalidateRect(&rect2)重绘,将进入函数CDspsockDlg::OnPaint()重绘。利用MFC中的函数Pie,Ellipse,SetBkColor,TextOut[10]画出仪表盘背景。最后通过下列两个公式将速度值转换成对话框上的坐标值,调用函数画一条连接该区域中心位置到该点(a1,b1)的直线[11],最终实现仪表指针随速度值的变化。坐标(a1,b1)计算公式如下:b1=60sin((m_Spd1×3/25+150)π/180)
a1=60cos((m_Spd1×3/25+150)π/180)4.2实验结果
软件运行期间界面显示如下。图6显示了温、湿度分别是32°,51.5°;单击复位按钮、温湿度指针将分别指向-30°,20°位置处;图6还显示了2个推进器的速度信息,其中水平推进器速度为1 180 r/min,垂直推进器速度为0,此时AUV在水平方向运动垂直方向静止。
摘要:本文深入分析了计算机实践性教学的内涵,探讨了软件设计类课程实践环节的组织模式,研究了这一方案的可行性。
关键词:实践性教学;软件设计;课程改革;计算机专业;项目实训
0引言
从1956年哈尔滨工业大学率先开办“计算装置与仪器”专业算起,到现在普遍采用的“计算机科学与技术”专业,计算机专业教育在中国的大学里已经走过了50年的历程。70%以上的本科学校开设了计算机专业,在校学生近30万[1],其规模居所有本科专业的首位。加上专科、高职、中职在内,其数量还要大得多。计算机专业人才在信息化建设过程起着举足轻重的作用。然而,企业面对十里挑一的大好形势,却经常会找不到合适的人才,造成这种局面的主要原因是学校培养与单位需要存在一定的脱节现象,主要表现为重理论轻实践,动手能力差,因而改革实践环节提高学生的操作技能成为高校计算机类专业的必经之路。
1软件设计类课程实践性教学的内涵
实践性教学是指为配合理论教学,培养学生分析问题和解决问题的能力,加强专业训练和锻炼学生实践能力而设置的教学环节,通常有两种落实途径:一是随堂实践,即课程作业、实验、上机操作等;二是集中实践,即社会调查、各类实习及见习、课程设计以及毕业论文或毕业设计。教学计划中规定的作业、实验、实习等环节和集中实践环节是学生必修的内容,在课程和专业学习中具有突出的地位。不同专业的实践性教学方式,教学管理和考核办法也不相同,但都是以专业培养目标作为前提。对于计算机(包括软件工程)专业的软件设计类课程,其教学目的就是培养合格的软件工程师,适应软件设计和项目管理岗位的需要。
1.1软件工程师岗位需求
任何一个软件企业,开发团队都需要这样三类人才:一是既懂技术又懂管理的软件人才即系统分析师(高级),二是软件工程师(中级),三是程序员(初级),这三类人员在软件企业的正常比例应该是呈金字塔结构,根据国际经验,高、中、初级软件专业人才的比例应基本维持在1:4:8。通常系统分析师由研究生承担,软件工程师由本科生承担,程序员则由大专生以及专门培训机构的学员完成。如图1所示。
从图1可以看出,计算机专业的本科生对应软件工程师岗位,在软件开发团队中处于中间层,优秀者可以上升到系统分析员层次。同时,软件工程师也要兼任程序员角色,因为不少软件企业规模较小,难以按照软件工程的规范细化分工,需要能做分析、能写代码、能做实施甚至用户培训的“多面手”。作为高校,必须充分考虑这种情况,以培养软件工程师为主线,也要提高系统分析能力,同时还应该加强代码编写的训练。
1.2软件设计类课程实践性教学的内涵
软件设计类课程主要包括计算机语言类、开发类、设计类、制作类和工程类课程,共同的特点都是经过系统学习,既能够按照规范独立设计小型软件,组成团队后又能够设计出具有实用价值的中大型软件。
软件设计类课程实践性教学标目的是培养学生两个方面的能力:即独立编程能力和项目合作开发能力。一方面,能够利用所学语言和平台设计小型软件,同时能够按照项目分工,在项目经理(负责人)的统一安排下,在技术上服从既定的设计方案完成模块的开发,并做好相应的文档。良好的责任心、解决问题的独立编程能力和分工合作制的团结协作精神是必须重点培养的内容。软件设计类课程实践性教学的内涵如图2所示:
2软件设计类课程实践性教学的组织
按照软件设计类课程实践性教学的内涵,一般应包括3个环节:课堂实验实训、课程设计、项目实践,分阶段实施。其具体安排如图3所示:
2.1课堂实验实训环节
如果一门课程的教学任务规定在一个学期内完成,课堂实验实训环节应该安排在学期的前半部分进行,以讲授语法、数据类型、常用类库、开发平台为主。学生所学知识和编程技术有限,难以形成完整的程序思路,实践环节只能是练习基本功单独完成,以每一次堂或者每一个章节为单位安排学生进行相关的训练,以熟练掌握语法的基本用法,为后一阶段的课程设计做准备。老师指导时,要注意培养学生良好的编程习惯,包括标识符的规范化命名、注释语句的广泛运用、编程语句的缩进格式、帮助文档的使用方法,逐渐形成编程思想。
为了配合实践性教学,教材的选择也十分关键,最好是采用基于案例教学法或者项目驱动教学法的教材,这种教材往往会通过一些典型的实例或企业项目组织内容,大部分章节的主题相对集中,围绕项目展开讲述,特别适合于实践性教学。如果采用实践性较弱的教材,老师需要自行补充一些实习实训内容让学生当场消化吸收。
2.2课程设计环节
这一阶段十分关键,完全模拟软件企业的开发流程组成小组共同完成一个中小型项目的设计,一般安排在后半学期进行。这时要求学生停止其它课程的学习,每天八小时工作制,甚至晚上可以加班加点,专心设计项目,其最终成果包括软件和文档以及用户操作手册。以每班30人为例,可以考虑分为5个小组,每组6人,每个小组安排组长(项目负责人或称项目经理)一人,组长的职责是:组织成员实地项目调研、模块划分与任务分工、接口的确定、进度的监督与协调、集成测试等,组长直接接受指导老师的安排。鉴于组长在在项目设计过程所处的重要地位,老师在确定组长时,至少考虑三个方面:一是组织能力,二是专业技能的基本功,三是责任心。
这一过程通常安排两周到三周集中在校内机房(实训中心)进行,老师每天针对总体要求及当天的任务进行讲解,然后分小组实施。选择课题时,不宜太复杂,应尽可能让大多数课题组可以在规定的时间内做完。一般选取学生们比较熟悉的内容,如学生成绩管理系统、班级管理系统、教材管理系统、仓库管理系统、工资管理系统、就业反馈跟踪系统、水电费管理系统等,这些课题的要求大家都比较清楚,在校内即可进行客户调研和需求分析,同时也具有较强的推广价值,为将来的职业奠定基础。这时每个人同学都应该至少准备一本项目开发类指导书作为参考,因为涉及到数据库、界面、网络通信、硬件编程等方面的知识,仅仅靠教材还不够。
2.3项目实践环节
项目实践环节是学生到软件研发企业(校外实训基地)全程参与项目开发的过程,一般应安排在学期的最后一到两周或者利用假期顶岗实习,因为经过了课程设计,学生基本掌握了软件企业的开发流程和一般方法,进入软件公司后就能够较快地进入程序员角色,而不至于胆怯,也不会无所适从。完成本部分实践内容要做好以下三个方面的工作:
确定好项目指导老师:企业开发与在学校进行课程设计并不尽相同,软件公司具有自己的风格,往往更加愿意采用自己熟悉的开发工具,以达到客户的需求作为目标,并不一定会使用最新技术,这点与教学理念不同。理想的方案是由任课老师带队进入软件企业(校外实训基地),并选择目前正在开发的项目经理担任总负责人(校外实践指导老师),任课老师也参与项目实践并组织学生实施,因为一个优秀的项目经理不一定是优秀的老师,能做软件不见得会上课,项目负责人与任课老师共同配合更能发挥各自的优势,便于学生理解项目思想和相互沟通。经过简短的培训后,由模块责任人指导学生设计或者由学生独立完成,一切按照企业的开发规范进行。考虑到软件企业一次难以容纳过多实习生的特点,也可考虑将项目拿到学校来做,或者将项目经理请到学校现场指导,以节省时间和费用。
确定项目指导方法:开发应用项目没有现成的教材,需求分析、概要设计说明书、详细设计说明书、数据库和数据字典就是设计的依据,老师必须严格按照这些文档指导学生进行设计,定期检查学生的进度及过程,一旦发现偏差,及时纠正,将错误消灭在萌芽状态。
及时组织项目总结:每天规定一个时间,将同组学生集中起来,针对当天完成的任务进行总结,交流自己的想法,提出存在的问题,集体讨论,这样就能够做到日日有收获,天天有提高,从而锻炼自己的实战水平和组织经验。
3软件设计类课程实践性教学效果的考核
软件设计类课程实践性教学效果的考核也是一个较难把握的环节,既要考核学生的独立编程能力,也要考查其团队协作精神,同时还要考虑其组织能力、表达能力、文档编写能力、纪律性等内容。为了客观科学地评价学生的实际效果,最好是分阶段考核,各部分按照一定的比例综合得到总成绩,可以等级表示,也可以用分数反映。
在课堂实验实训阶段,可以由任课老师根据每一次操作任务的完成情况进行登记评分,重点考察其规范程度,对于具有创新性的作品,可以适当加分,并在全班展示,让设计者讲解思路,为其它同学提供启示。
课程设计阶段的考核由指导老师和项目组长组织学生共同进行,首先由组长汇报课题的设计思想、主要技术、任务分工等情况,并演示软件,大家可以相互提问。老师根据项目完成效果确定这个组的等级,然后由各位成员介绍自己所设计的模块,老师重点检查此模块的功能、难易程度、技术含量、界面美观等因素,再确定其成绩或者等级,这时还要充分考虑组长对成员在设计阶段各方面的综合表现。
项目实践阶段的考核由校外指导老师和校内老师组成考核小组,利用项目汇报加平时表现的形式评定,既要考察项目的完成情况,也要考察各位学生在企业实习期间的领悟能力、工作主动性、团队合作情况、算法的复杂性、程序的规范性等方面,其主要依据是提交的软件(包括源代码)以及各种文档。
实际上,对于实践性教学的考核可以采用灵活的方式进行,不拘一格,比如聘请行业专家、现场答辩、随机抽题、项目论文等形式,只要能够检查学生的真实技能即可。
4我们的实践
我们学校十分重视实践性教学,长期坚持强化学生的动手操作能力和实战水平、力争与企业零距离接轨的做法。为了提高程序设计类课程的实践性教学效果,主要采取了以下措施:
4.1严把教师关
教师是实践性教学效果的基本保证,学生的水平在一定程度上反映了教师的水平,既具有扎实的理论功底,也拥有丰富的项目经验是优秀教师的标准。一方面,我们积极将已有教师定期送到企业实地参加项目开发实践,积累经验,另一方面,不断从软件企业引进专业技术人才,将他们的成功案例带回学校,同时,每年组织专业教师进行实践性教学能力考核,通过考核者才能承担课程设计和项目实践的教学任务,并频发相应证书,作为教师晋升职称和评先评优的重要指标。
4.2实践性教学环节流程化
改革原来的学期一贯制,将一个学期分为两个阶段,前一阶段以学习基础理论为主,随堂考试,在学期的最后几个礼拜专门安排做课程设计,一般开设两门小课,专心实践,在项目指导老师的统一安排下,综合运用本学期所学的程序设计工具,结合前面所学内容,以项目小组的形式,完成一个小型软件的设计,成绩计入学生档案,完成者才能获得相应的学分。暑假或者寒假以及最后一个学期,老师分批带领学生前往校外实训基地或软件企业从事项目开发,作为社会实践或毕业设计的成绩,并要求撰写项目总结或论文。
4.3实验室环境企业化
聘请软件企业技术人员设计实验室(实训中心)建设方案,将原来的布局改造成软件研发中心或者工作室模式,服务器、网络设备、数据库完全仿真企业的环境,将开发流程和软件文档国家标准打印并悬挂在墙上,并购置专业书籍存放在实验室,让学生一旦进入实验室,就能迅速感受到真实的企业氛围,还能方便查阅相关资料。
4.4实践项目规范化
教师和软件企业合作开发一整套实践教材,采用项目驱动、案例教学作为主要方法,将常用软件项目的全部开发过程编写到教材中,源程序存放在服务器,供学生编程参考。每次课程设计或者项目实践后都要评比出优秀作品,将其全部程序及文档资料保存下来,供以后教学和低年级学生使用。
经过近几年学生的反馈情况,我们的改革收到了良好的效果,学生在校期间已经具备了一定的经验,走入社会即可迅速融入开发团队,胜任软件工程师职责,深受单位的好评,不少毕业生特别是原来担任过项目小组长的学生很快即可成为业务骨干或者项目经理。
5结束语
高校教学与行业脱节是普遍存在的现象,程序设计类课程实践性教学更是一个永恒的话题。所幸的是,学校和企业都充分意识到了这一点,各高校正在采取积极的举措消除这一段距离,企业已变得越来越务实,不断细化岗位职责。随着校企合作的深入,订单培养方式的持续,相信在不远的将来,这种差距会越来越小,直到完全消失,那时学校、企业、学生三方都能成为实实在在的受益者。
摘要:本文讨论了软件设计模式课程教学中的几个问题,介绍了经典的PBL教学法及其不足,对其教学过程设计进行了改进并给出了一个教学案例,另外本文还就应用PBL教学法的注意事项进行了讨论。
关键词:PBL;软件设计模式;计算机教学;面向对象;教学方法
“软件设计模式”是一门理论性和实践性都非常强的课程,内容抽象难懂,目前的大部分教材仅仅在一般意义上给出了各种模式的定义、结构、代码框架,授课时容易出现内容空泛、言之无物的情形,学生感觉这门课程比较困难。如何根据学生的特点,选用合适的教材,采用适当的教学方法是提高软件设计模式教学效果所必须要解决的问题。本科学生的特点我们很难改变,教材问题可以通过授课教师的主观努力,以讲义和补充材料的方式加以解决,而本文则主要讨论软件设计模式的教学方法问题,即在软件设计模式课程的教学中如何使用PBL教学方法来提高教学效果。
1PBL及改进的教学过程设计
PBL(Problem-based Learning)是一种行之有效的“做中学”教学方法,最初是由Barrows在加拿大McMaster大学提出来的一种教学策略和课程设计思想,符合以学生为中心的自我引导学习的建构主义学习理论。有效的PBL可以提高学生下面这几方面的能力和素质:解决问题的技能;思维能力;团队合作能力,包括赏识和包容异类学习同伴的精神;组织利用时间的技能;获取和评价信息的能力;传播信息的技能;计算机运用能力等。
在教学中引进PBL教学法后我们发现该方法的不足之处,主要问题是:时间消耗量大,学生学习的效率不高;在班级规模较大时,教师对教学的组织和教学过程的控制也存在很大的困难;以小组为单位,容易造成学生能力发展不均衡,出现小组内某些学生成为主导,另一些学生则滥竽充数的情况。为此我们对PBL方法作了一些修改,教学过程设计如下:
(1) 提出一个与本次课程要学习的设计模式相关的设计问题。这一步非常关键,提出的设计问题必须与学生已有的基础较接近,规模适中,是学生可能完成的任务。这样可以激发学生的学习兴趣。
(2) 讲授与该设计模式相关的面向对象的设计原则。对这些原则的讲授可以贯穿在该门课程的整个教学过程中,适当的重复和强调可以加深学生的印象,促使学生在其今后的设计中自觉运用设计原则,即使不套用设计模式,也能产生良好的设计方案。
(3) 给学生留出时间,让学生设计前面问题的解决方案。要求每个学生自己进行设计,但允许和同学讨论。
(4) 抽取并公布学生的设计方案,组织同学讨论其优劣,对比与事先提出的设计目标的差距并分析原因。
(5) 以相应设计模式的思路,对学生的方案进行改进,并给出其简单实现。
(6) 从上述实例中提炼出要讲授的设计模式,总结其意图、结构、角色、示意性代码,分析其可能的变化。
(7) 布置一个类似的设计问题作为课偶作业,要求学生给出完整的设计和实现。
我校“软件设计模式”课程只有32个学时,在这么短的学时内让学生完整深入地掌握23个设计模式是不现实的。
我们在制定教学大纲时充分考虑到了这个问题,选取了其中一部分作为课堂教学的内容,选取的准则是:①是常用模式;②在模式分类中具有代表性。其余的设计模式则留给学生课后自学。
2一个基于PBL的设计模式教学案例
Strategy Pattern(策略模式)是一种常用的重要的设计模式,下面以该设计模式的教学为例,说明PBL教学方法的应用。
(1) 提出问题。某公司销售打印机时有一定的折扣让利给顾客,但折扣计算的方法有很多种,如不打折、每台减扣固定的金额、按售价的5%打折等。现在要为该公司开发销售系统,实现打印机销售时的折扣计算,要能够灵活地选用折扣计算方法,并且可以很容易地增加或修改折扣计算方法,而不至于对整个系统的维护造成困难。
(2) 相关设计原则的讲授。本设计模式主要涉及三个面向对象的设计原则:针对接口编程,而不是针对实现编程;优先选用对象组合,而不是类继承的软件复用方式;分离变化,并对变化进行单独封装以使得今后对软件的维护局部化。在讲授这三个原则时,各举简单的例子加以说明。
(3) 让学生解决第一步提出的问题,给出设计方案。设计时尽量运用前面讲授的三个设计原则。要求每个学生自己动手,但鼓励讨论。
(4) 抽取学生的设计方案,并比照第一步提出的设计目标进行分析讨论。由于时间关系,不可能对每个学生的方案进行讨论,一般鼓励学生主动提交,主动提交的学生一般认为自己的设计方案较好,此外也可以选一个不理想的设计方案进行讨论。
学生的设计方案五花八门,图1是其中的一种。
图1 学生的一个设计方案
该设计方案部分运用了讲授的设计原则,如PrinterSaler使用抽象类Printer而不是直接使用具体类HPPrinter等,这体现出学生试图运用针对接口编程的原则;该方案将计算折扣的方法单独抽象成一个接口,但却是用打印机的具体类来实现该接口的,说明了设计者意识到计算折扣是变化的部分,试图将其分离出来,但却没有将它进行独立的封装,因此对改善系统的可维护性和折扣方法的灵活选用并无多大帮助,而且由于抽象类Printer没有实现该接口,使得PrinterSaler通过使用Prinetr来计算折扣难以实现。
通过分析和讨论(这一过程要鼓励学生参与发言,而不是教师唱独角戏)学生的方案,指出其不足,并一步步加以优化,最后可以得到基于Strategey模式的设计方案,如图2所示。
图2 基于Strategy Pattern的设计方案
在此强调由于折扣计算方法的分离和单独封装,就可以通过实例化不同的具体折扣计算类ConcreteDiscount并赋值给Printer的引用变量(假定为Discount),然后通过调用discount.calcDiscount()灵活选用相应的折扣计算方法;折扣计算方法可以被所有打印机类复用,甚至可以被其他类复用;而且修改或增加新的折扣计算方法也不会影响其他打印机类的代码。
(5) 为了使学生有更为切身的体验,给出上述设计方案的实现代码,编译并演示运行结果。
(6) 从上述实例中提炼出要讲授的设计模式,总结其意图、结构、角色、示意性代码,分析其可能的变化。
(7) 布置一个类似的设计问题,作为作业,要求学生给出完整的设计和实现,提交实验报告。
摘要:为了培养既懂财务又懂软件开发技术的复合型人才,根据金融财务类应用的需要,本文提出了一个面向软件课程设计的教学模型。融合计算机基础理论、软件开发技术、软件工程学原理以及CMM软件过程体系,构建了教学模式框架。该模型具有良好的课程总体结构以及动态适应新技术发展的能力,该模型适合财务类院校软件复合性人才培养的需要。
关键词:软件课程设计;财务应用;复合型人才;教学模式
1引言
目前,中国软件产业计划以超常规的发展速度在世界上占有一席之地。 软件产业近年来已成为中国电子信息产业中增长最快的部分之一。在新一轮的国际分工中,高附加值、低成本、智力密集型的软件与信息服务业正逐步向亚太地区转移,这给中国和印度等国的软件产业带来巨大的发展机遇。尽管中国软件产业已从初始阶段进入成长阶段,一些软件企业正在一步步正规化;但是软件企业和软件人才结构不合理:几乎没有从事个人消费者软件的企业;大部分软件人才为编程工程师,缺少软件架构师、项目经理、测试员等。另一方面,随着IT技术的飞速发展和日新月异,特别是互联网技术的发展和应用,企业能够在一个全新的、统一的高科技信息技术的环境支撑下来建立和实施现代企业管理。财务软件系统的应用已经普及,但我国财务软件的发展前景却不容乐观,财务管理人员队伍普遍存在知识老化,不能适应网络经济时代对财务管理工作的需求,也不能很好地理解和使用财务软件和信息系统,直接影响了财务软件的使用效果和财务软件产业的发展。会计制度体系的变革和会计理论研究的滞后是制约财务软件和财务信息系统的模型进行创新设计的重要瓶颈,影响了财务软件产业的发展。
财务软件设计的复合型人才在财务软件产业发展中处于最重要的地位。财务软件设计的复合型人才必须在财务和计算机软件设计两个领域都非常有专长,成为这两个领域里的行家里手。所以,培养高级的、现代化的财务软件设计的复合型人才势在必行。目前我国财经高等院校和大部分综合类高等院校、成人高校和新兴的职业技术学院都开设有计算机专业和财会专业。但从横向上看,这两个专业在课程的设置上还存在着“单打一”的现象;从纵向上看,课程的深度,尤其是计算机网络知识和财会知识的结合程度比较肤浅,学财会的学生仅仅掌握数据库的操作和简单的凭证输入及报表编制是远远不够的。从将来培养高级会计软件工程人员的角度出发,计算机和财会专业应互相渗透、互相兼容,让学生“两条腿”跑步,对于这类学校的计算机专业更要调整软件课程设计模式,
使学生能够迎接当今财务软件产业的挑战,获得更多的工作机遇。
软件设计课程是一门综合性的实践课程,其通过合理的软件项目,来锻炼学生的分析、设计、编程、测试、维护等多方面的综合能力,既要学生掌握应用领域的专业知识,又要学会应用计算机软件的专业理论来解决应用领域的实际问题。如何通过软件课程设计来提高学生在未来工作中的适应能力,是目前软件教育业普遍关注的核心问题。如何使软件课程设计具备灵活的面向财务应用的适应能力,也成为金融财务类院校探讨的热点[1、2]。本文针对培养财务软件设计开发的复合型人才的需要、结合计算机基础理论、软件开发技术、软件工程学原理[3]以及软件过程模型[4~6]的特点,提出了一个软件课程设计动态模型。其可以根据学生的不同层次、不同的培养目标,定制裁剪,该模型适合财务类院校软件复合性人才培养的需要。
2面向财务应用的软件设计课程教学模式
2.1 课程目的
面向财务应用的软件设计课程教学目的如下:
1) 锻炼学生综合分析、设计、开发软件产品的能力;
2) 融合学生已经学过的计算机课程、财务会计课程的内容,使理论与实践相结合;
3) 根据当前的技术发展水平和社会财务软件行业的需求,适当扩充学生的新技术的容量;
4) 掌握规范的软件开发过程、管理过程,与国际软件界接轨;
5) 财务管理系统对软件设计的要求。
2.2教学模式的框架
面向财务应用的软件设计课程教学模式应该根据财务复合型人才培养的需要,结合现有的计算机基础理论的教育,同时融合现代软件工程学的思想,制定相应的教学框架。该教学模式的框架结构如图1所示。
图1中的有向边表示各个部分之间的依赖关系,各个组成部分描述如下:
(1) 软件、财务基础课程
该部分是“软件课程设计”的必要基础条件,应在开设“软件课程设计”之前完成。主要有:离散数学、数据结构、数据库原理、过程程序设计、面向对象的程序设计原理、计算机系统结构、计算机网络、操作系统、会计学、财务管理、会计信息化。
(2) 各类应用模型
主要探讨与企业应用相关的领域模型,不仅仅限于财务软件系统。其可以包括如下内容:
1) 电子商务;
2) 企业资源管理;
3) 客户关系管理;
4) 供应链管理模型;
5) Internet多媒体应用;
6) 财务管理等等。
(3) 研究的软件课题集
根据(2)所描述的应用领域,根据学生的不同层次和培养目标,抽象领域应用模型,形成供软件课程设计所需的软件课题集。每个软件课题既要包括该软件所需的应用领域背景、领域知识、领域模型,又要包含该软件系统开发的所有文档、过程文档、以及学生实际开发过程文档、评测文档、改进文档等等。该部分是该模型的核心,其的构建需要若干周期的软件开发和学生实践才能获得,同时还要考虑软件应用领域和软件技术变化发展的因素。
(4) 当前流行的软件技术
主要包括当前业界盛行的开发技术。这些技术不仅是学生完成该课程所需要,而且也是当前主流的软件开发技术和工具;学生掌握这些技术后,在就业的竞争中,可以发挥重要作用。并且这些技术应该随着产业的发展而变化发展。目前主流的技术有:
1) 基于微软.net技术的应用开发模式,如Windows OS、C++、C#、VB、ASP、SQL SERVER等;
2) 基于SUN公司的JAVA2(EJB)、SUNOne技术的应用开发模式,如LINUX、JAVA Bean、JAVA2 EJB、JSP、ORACLE等;
3) 基于OMG的CORABA技术的应用开发模式,如C++、ORACLE、UNIX等。
(5) CMM体系
CMM模型已经在业界得到公认,并且如果软件企业要想获得美国的软件开发资格,必须要通过CMM认证。如果学生在学校能够了解CMM体系,那么其在今后的企业工作过程中就可以很好地适应企业认证的需要,同时也增加了学生的就业竞争力。CMM体系分为三个层次:1)PSP(The Personal Software Process)规范;2)TSP(The Team Software Process)规范;3)CMM(Capability Maturity Model)规范。由于该体系过于庞大、抽象,学生掌握比较困难,所以可以重点培训PSP和TSP过程规范。
(6) 课程过程文档集
课程过程文档是掌握学生学习情况的重要依据。学生的学习过程的记载可以参见PSP模型,但又不可生搬硬套。PSP的许多文档过于繁琐,实践证明学生感到其过于单调,往往会影响学生的学习兴趣。在构建过程文档的时候,还要引进PSP模型中的小组过程信息,使过程和软件项目的整体所统一。
(7) 课程评测系统和评测规范
评测系统要根据学生开发的软件产品原型、课程过程文档集以及评测规范来进行。评测不仅要对软件原型的功能、性能进行检验,还要评测软件过程文档的规范性、完整性。更重要的一点,要评测学生的应用领域知识、背景的掌握情况;必要时可以给被评测者一个新的应用领域模型,来检测其对新问题的处理能力。评测规范应该根据实际情况而定,既要检验学生的专业深度,又要考虑其应用知识面的广度;既要定量考虑,也要定性分析。有关具体评测方法可以参见CMM体系。
(8) 课程的实际效果
课程的目的是培养应用领域复合人才,课程的实际效果的检验需要学生的实际就业情况、实际工作情况而定。可以建立一套学生跟踪系统,和学生签订检验合同。毕业就业的学生定期把自己的工作情况反馈给该跟踪系统,跟踪系统根据这些反馈进行整理分析,以便动态调整该课程模式的实施。
2.3课程模型的实现模式
在课程模式框架图中,涉及的范围太广,学生很难掌握,所以可以根据学生的实际情况分解成四种实现模式:
(1) 单一技术模式
单一技术模式主要培养学生的软件开发技术,同时要掌握个体软件过程技术。根据本模型框架,可以裁剪为如下内容:
1) 具体一门技术;
2) 一个简单的应用模型;
3) 财务系统分析工作;
4) 基础软件工程学;
5) PSP规范、财务管理标准及规范。
(2) 软件开发规范模式
软件开发规范模式主要培养学生的软件开发技术,同时要掌握软件过程模型,重点为CMM体系。根据本模型框架,可以裁剪为如下内容:
1) 具体一门技术;
2) 一个简单的应用模型;
3) 财务系统分析工作;
4) 基础软件工程学;
5)PSP规范、TSP规范、财务管理标准及规范。
(3) 复合模式
复合模式主要培养学生的领域问题解决能力、掌握软件开发技术,同时要求掌握软件过程模型,重点为CMM体系。根据本模型框架,可以裁剪为如下内容:
1) 具体一门技术;
2) 一个中等难度的应用模型;
3) 财务系统分析工作;
4) 基础软件工程学;5)PSP规范、TSP规范、财务管理标准及规范。
(4) 高级模式(研究生)
高级模式主要培养学生的领域问题分析能力、掌握建模技术、开发技术、管理技术,同时要掌握软件过程模型,重点为CMM体系;这个模式需要学生已经具备良好的软件开发技术和软件工程学原理。根据本模型框架,可以裁剪为如下内容:
1) 一个大的应用模型;
2) PSP规范、TSP规范、CMM规范、财务管理标准及规范。
2.4实施部骤
该模型的实施步骤如下:
(1) 模型集构建
1) 收集已经完成的应用项目;
2) 项目归类;
3) 项目抽象成应用模型;
4) 给出评测标准(规范)。
(2) 确定实现模式
1) 了解学生基础情况;
2) 测试学生的能力;
3) 选定一个实现模式。
(3) 学时安排包括
1) 新技术培训;
2) 项目开发、评测;
3) 总体评测、评分。
3结束语
企业财务电算化的普及,是提高企业科学管理水平、增强竞争力的核心。培养既懂财务、又会软件设计、同时具备软件过程规范的复合型人才是企业的需要,同时也是金融财务类院校的责任。有效的软件课程设计的教学模式是培养复合型人才的关键,本文提出的模型对这方面进行了初步探讨。有关具体内容还需在实际的教学过程中细化、研究。
摘要:专业建设只有根据社会产业需求进行才有生命力。随着现代服务业的快速发展,社会急需创意与软件设计人员,所以重点建设好创意与软件设计类专业,培养适应软件、创意设计等现代高端服务业发展要求的有用、适用人才是当务之急。本文阐述了上述观点。
关键词:创意产业;现代服务业;软件产业;专业建设
1专业设置的必要性
为加快无锡国家动画产业基地建设,促进动漫产业发展,无锡市政府先后出台《市政府关于鼓励和扶持动漫产业的若干政策意见》和相关补充条款。为加快发展我市软件产业,加快经济增长方式转变,无锡市政府又制定了《市政府关于加快无锡市软件产业发展的意见》,要求到“十一五”期末,无锡要培育一批骨干龙头软件企业,要成为江苏省内乃至国内重要的软件产业基地之一,到2010年要完成软件业销售收入300亿元,全市拥有省认定的软件企业200家。为抢抓国际服务外包转移机遇,加快集聚国际服务外包和软件出口企业,把无锡太湖保护区建设成 “中国服务外包示范区”,无锡市人民政府制订了《市政府关于集聚国际服务外包和软件出口企业“123”计划的政策意见》,提出到2010年末,全市要集聚国际服务外包和软件出口企业100家,每家企业从业人员超过2000人,年出口超过3000万美元。
产业发展、人才需求对职业教育提出了新要求,同时也为职业教育提供了新机遇。我校将紧紧抓住这一机遇,以服务为宗旨,以就业为导向,总结现有动漫、软件和设计专业的办学经验,开设创意与软件设计类专业,重点培养无锡服务外包产业发展所需的软件、创意设计、动漫影视类中端及实用性人才。
2专业设置的可行性
学校信息类和艺术类专业已开设多年,形成了一支结构合理、业务精良的师资队伍,取得了明显的办学成果,为创意与软件设计类专业建设奠定了良好的基础。学校早在上个世纪80年代初就引进计算机课程教学,1993年设置计算机技术及应用专业,并很快开发出软件、维修、网络等专业发展方向。顺应地方经济发展对人才的要求,1999年学校又设置多媒体制作专业。2004年,在全国的同类型学校中,率先与印度国家信息技术学院(NIIT)合作,培养软件开发人才。2006年与汇众益智科技有限公司合作,培养游戏人才。2007年增设影视动漫专业,并于同年秋季首次招生。
学校拥有一支专兼职结合,结构合理的专业教师队伍。学校现有信息和艺术设计类专业教师44人,其中高级职称教师11人,中高级职称教师占本专业教师的62%。享有国务院津贴专家1人,特级教师2人,省市级骨干教师9人。双师型教师26人,现已参加NIIT培训8人,参加游戏动漫培训并获得相关技能证书6人。21人硕士研究生毕业或在职攻读硕士学位。学校还拥有一支由行业专家、企业技术骨干组成的兼职教师队伍。他们参与专业开发、课程改革和教学活动,是学校的宝贵资源。
学校坚持从产业结构调整和社会岗位的变化来谋划专业设置,坚持面向职业需求,以培养学生能力为本位实施课程改革,加强专业建设。2004年计算机技术及应用专业被评为江苏省示范专业,2007年“FLASH动画制作”课程被评为无锡市优秀课程。在校学生参加各级各类技能大赛,多次获奖。
学校已建成“三中心五室”实训基地。“三中心”为网络中心、信息技术研发中心、计算机技能综合实训中心;“五室”为游戏动画制作实训室、NIIT软件开发实训室、计算机网络实训室、多媒体工作室和美术基础实训室。基本满足当前教学需要。
3专业设置方案
(1) 专业设置、学制和培养目标
培养目标:培养大专层次的创意与软件设计产业所需的中端及实用型技能人才,见表1。
学制:初中起点五年。
(2) 教学设施和实训基地建设
学校将本着配套、实用、先进的原则,加大投入,增添创意与软件设计类专业教学所需的设施设备,并建成1200O的校内实训基地,见表2。
说明:动漫实训基地包括渲染工作室、手绘工作室、模型工作室、美术工作室、动作捕捉室、影视高端实训室、专家指导工作室、摄影棚、放映室、衍生产品工作室等。
基地建成后,学校还将以此为载体,面向社会开展技能培训和职业资格认定;主动迎接企业教育社会化的任务,承接企业订单,参与企业技术改造和产品研发,使其成为产教研合作的新平台。
(3) 教师队伍建设
专业建设,教师是关键。除借助国家、省、市已有的各类师资培训途径培养教师外,学校拟针对专业教师专业知识丰富、实践经验不足、动手能力不强的现实,加强校本培养和培训。一方面学校将花大力气从企业引进有志于学校教育的实用型专业技术人才;另一方面继续推行专业教师下企业实践的制度,每年至少选派一位教师下大企业进行为期6个月到1年的实践。另外,学校还设想依托已有的“大昭”工作室,鼓励教师搞专业开发、技术改造、技术创新和产品生成,培养本专业的技术领袖。
(4) 教材建设
教材建设是专业建设的重要内容,但目前这类专业可供选择的教材不多。学校将根据教学计划、教学大纲选择优秀教材,并根据前期开设NIIT软件技术、游戏动漫等专业的经验,继续引进与国际接轨、符合企业要求的优质教育资源,还将组织教师自主开发、编写顺应产业发展、适合于教学、有利于提高学生动手能力的教材,见表3。
(5) 校企合作
职业教育的本质是向企业提供人力资源,所以职业院校和企业有着天然的联系,校企合作就成为学校和企业的共同选择。下一阶段,学校将继续加强与企业的合作,在为企业输送人才的同时,依托企业培养师资和学生,实现“双赢”。
根据无锡产业的发展走向,动漫影视、动漫游戏、软件、创意设计类人才的需求是大量的。我们将延续学校近百年办学所形成的厚重文化,解放思想、抢抓机遇,提升传统优势专业,拓展创意与软件设计等新专业,为无锡经济跨越式发展提供智力支持和人才支撑。