07-28
2020
基于MCAPI的多核软件开发方法随着技术的进步,电子产品更新换代的速度越来越快。单纯提高主频来提升系统性能的方式已经接近瓶颈,而使用多片处理器搭建系统又不符合产品的小型化要求。传统的单核处理器已经不能满足日益增长的性能需求,能够完成并行任务处理的多核处理器应运而生。现代多核处理器主要依靠增加核数而不是频率来提升性能,同时芯片的高集成度也带来了资源调度和功耗等问题。随着多核处理器并行度的增加,各类同构、异构多核处理器的出现使得软件开发面临着巨大的挑战。如何在多核上高效地实现算法,如何合理地分配资源都是需要解决的问题。一、多核DSP器件简介TMS320C6678是德州仪器公司(Texas Instruments,TI)在2010年推出的一款经典的同构多核数字信号处理器(Digital Signal Processor,DSP),包含8个DSP内核,每个核在1.4GHz的最高工作频率下性能可达到22.4G每秒浮点运算次数(FLoating—point Operations Per Second,FLOPS),支持Hyperlink等多种高速接口,可广泛用于移动通信、医疗电子、高性能计算等领域。核间通信(InterP rocessor Communication,IPC)以及核与外设的通信是多核软件开发的关键所在。针对这一需求,德州仪器公司在其新一代Keystone架构的处理器上提供了多核导航器,包括硬件队列管理器和基于包的直接存储访问(Direct Memory Address,DMA),以实现核间高速数据传输。使用多核导航器进行核问通信,可以通过软件对相应的控制寄存器进行读写和查询实现,也可通过内部硬件进行事件触发实现,这种方式可大大简化核间通信处理,但是仍存在缺点。一旦软件拓扑结构发生改变,或者需要调整核的运算负载来提升系统性能时,这部分工作量很大,而且应用受限于厂商。二、多核通信应用程序接口概述多核通信应用程序接口MCAPI(Muhicore Communications Application Program Interface)是由多核联盟提出的基于消息传递的轻量级应用程序接口标准,特别适用于嵌人式系统处理器核间通信和同步。MCAPI的应用不受处理器核的数目、处理器架构以及操作系统的限制,并且提供了源码级的兼容性支持,可扩展性很强。相对于普通的多片处理器间通信来说,多核处理器的核间通信普遍要求低延迟、高带宽。大部分多核处理器都包含片上存储器或高速缓存(cache)。为了避免出现计算瓶颈,核间通信需要减少不必要的存储器访问。MCAPI中定义了域(domain)、节点(node)、端点(end.point)、通道(channe1)等关键概念。域是依赖于具体实现的,既可以是具有多个处理器核的单个芯片,也可以是板上的多个处理器。节点可以是线程、处理器或硬件加速器等,通常可用处理器核作为节点。端点是类似于套接字的通信点,一个节点通常包括多个端点。通道提供了一对端点之间的点到点的先人先出First In First Out,FIFO)存储器用于通信,方向为单向的。此外,MCAPI定义了3种通信基本类型:消息、包通道和标量通道。消息是最常用的通信类型,提供了端点之间收发数据的机制,支持优先级动态调整,可用于同步、初始化和负载平衡。包通道和标量通道提供了轻量级的流通信机制,相应的程序开销很小。三、基于Poly—Platform工具的多核软件开发流程3.1Poly—Platform工具简介Poly—Platform是Poly Core公司提供的针对多核软件开发的集成开发工具套件,包含Poly-Mapper、Poly-Generator、Poly—Messenger/MCAPI、Poly—Templates等功能模块。采用该工具进行开发可以基于MCAPI标准建立应用程序节点,利用用户图形界面(Graphical User Interfaces,GUI1向导自动生成代码,在几乎不修改源代码的基础上,实现应用程序在同构多核、异构多核、多处理器等不同平台上的灵活配置和扩展,不受限于厂商,应用前景广阔。3.2多核软件开发流程将Poly—Platform软件使用插件方式集成到Eclipse软件环境中后会在TI的Code Composer Studio开发环境下出现相应的菜单和选项,即可进行基于Poly—Platform的多核软件开发。这里选择TMS320C6678多核DSP器件进行开发,并且以8个DSP核之间依次相连并传递数据的环形拓扑结构为例描述开发流程。(1)建立拓扑结构。首先建立一个拓扑(Topology)工程,拓扑主要描述了应用程序在(多核)平台上的映射关系。借助Poly—Mapper工具在建立工程后生成的拓扑映射文件中进行属性设置,选择处理器类型,设置节点个数为8(对应8个DSP核),名称分别为N0一N7,操作系统为TI的DSP专用操作系统。然后在拓扑图中绘制8个节点,并在每个节点中间绘制一条链路(1ink),得到环形结构的8节点拓扑结构图。(2)建立内存映射文件并分配资源。建立内存映射文件并分配若干个段(section1,设置其起始地址、大小、方向等参数。这些段分别用于内存访问区域(Memory Access Regions,MARs)和链路(1ink)。其中内存访问区域包括一些常用的资源池(poo1),如消息池、消息队列池、数据池、等待池等,不同节点之间通过MARs共享资源可以提高资源利用效率,提升系统性能。(3)在拓扑结构图中进行内存映射。针对每一个节点(N0一N7),设置其可访问的内存访问区域。然后,还需要对内存访问区域包含的每一个资源池进行参数设置,如起始地址等。同样地,对链路也需要进行参数设置。(4)建立节点工程。这里与常规的DSP开发流程基本一致,针对8个节点(对应处理器核)分别建立节点工程,然后需要将这8个节点工程与第一步建立的拓扑工程建立映射关系。(5)编写初始化代码和配置文件。首先利用Poly—Generator工具将拓扑结构图转化为基于拓扑定义的C语言和相应的头文件,并存放到每个节点工程的工作目录下。然后利用Polv—Template工具,按照软件自带的MCAPI模板,自动为每个节点工程生成节点初始化文件和硬件初始化文件。最后编写TI专用的实时软件组件Real Time Software Component,RTSC)配置文件和用于存储器分配的连接器命令文件。(6)编写每个节点工程的主函数。主函数主要内容包括调用节点初始化函数,硬件初始化函数,以及节点之间消息收发的函数(基于MCAPI)等。这些都可以利用Poly—Template工具提供的模板快速完成。(7)编写每个节点工程的应用程序。将用户的算法进行代码实现并加入节点工程,这一步与常规的DSP开发流程完全一致。(8)建立目标配置文件和RTSC平台。首先建立用于仿真调试的目标配置文件,然后建立RTSC平台用于硬件配置,并将其加入节点工程。这些都是TI专用的文件。(9)编译、调试、运行。对每个节点工程进行编译、调试、运行,观察程序运行结果。注意不要编译拓扑工程。(10)程序性能分析和优化。借助Poly—inspector工具提供的交互式报告环境,可以对多核软件实现进行性能分析,方便用户进行程序优化和调整。结论当前计算环境变得越来越多元化,DSP、可编程逻辑器件(Field Programmable Gate Array,FPGA)、图形处理器(Graphics Processing Unit,GPU)都具有较强的运算能力,并适用于不同的应用场合。多核处理器是当前的研究热点,而高集成度的异构多核处理器是未来的发展趋势。基于多核的软件开发始终是一个难点,给软件开发人员带来了巨大的挑战。本文提出的基于MCAPI的多核软件开发方法可应用于同构多核、异构多核以及多处理器平台,通用性较强,不受厂商、处理器、操作系统的限制,可帮助用户简化软件设计和优化过程中的拓扑设计、运算负载平衡以及核间通信和资源分配等工作,显著地提升开发效率。以上就是我们深圳市组创微电子有限公司为您介绍的基于MCAPI的多核软件开发方法。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
07-27
2020
软件开发中的三层架构技术分析三层架构技术,其实就相当于在客户端与数据库端之问加了一个“中间层”,也可以称之为组件层。这个“中间层”,并不是实际物理意义上的中间层,而指的是逻辑上的中间层,把应用程序中的业务规则、数据访问、合法性校验等工作放到了中间层进行处理,客户端不再直接与数据库进行数据交互,而是通过中间层来建立连接,再由中间层和数据库进行数据的交互,最终实现客户端和数据库端的数据的交互。三层架构软件技术的规则在软件开发的三层架构技术中,第四层数据实体层是基本的数据源,是必不可少的一层,是软件操作的基础,它的运算效果取决于计算机的硬件和数据库设计的合理性。而对于另外三层,并不是只要项目被划分成了表示层、业务逻辑层和数据访问层就称之为三层架构,这三层之间还必须要遵守一些约定的规则:(1)表示层仅仅只是一个和用户进行对接的界面,因而可以将其任意移植到其他类似环境的项目中。(2)数据实体层只能通过数据访问层进行数据读取,其他层都不能够直接从数据实体层中读取数据。(3)数据访问层只能作为一个对数据库实体的读取中间层,而不能进行任何业务逻辑的处理操作。(4)软件设计应该以业务逻辑层为核心,而不是数据访问层或是数据实体层,更不应该是表示层。在业务逻辑层应该以面向对象的方式,实现所有的有业务逻辑操作。(5)数据层中所有的数据都应该在一定的抽象程度上做到与系统无关。(6)设计的时候,所有的远程对象技术都应该考虑到不同的服务器和多台服务器之间的负载均衡作集群。(7)这3个模块中的任意模块都可以运行在不同的服务器上。一个项目是否需要进行三层设计,首先要看这个项目的复杂度。实际上,很多项目只需要编辑一个W e bAp plicatio n就足够实现全部功能了,根本不需要更复杂的技术,而只有真正复杂的项目,才需要利用三层架构技术进行设计和开发。三层架构技术的优势通过对三层架构技术的工作原理的理解,我们可以得到通过三层架构技术开发出来的软件的优点。(1)结构清晰,耦合度低。三层架构技术中层次分明,层与层之间结构清晰,软件编写人员分工明确,层与层之间的关联不多,降低层与层之间的依赖性,编写人员可以只关注整个结构中的某一层,从而极大地避免了二层技术开发的软件中存在的耦合度问题。(2)可维护性高,可扩展性高。用三层架构技术开发的软件在后期维护的时候,极大地降低了维护成本和维护时间。软件的任意一部分的功能更改和升级,仅需更改某层的设计和编写,而不需要对整个系统做出改变,而不像用二层技术开发的软件那样,一个小程序的变化都需要调整整个软件开发,极大地提高了软件的维护性和扩展陛。(3)利于开发任务同步进行,容易适应需求变化。三层架构技术极大地解决了软件开发的问题,特别是大型软件开发的问题,让软件开发实现任务的同步。在二层技术开发软件时,由于仅有2个端点,故软件开发时就存在一个编程的先后,必须由一个团队对整个软件流程十分清楚,并从始至终编写所有环节的程序。而三层架构技术把软件分成4个层次,而且层与层之间关联不大,故可以将软件分成4个不同层次进行同步开发,实现任务的同步,从而大大缩短了软件开发的时间,更容易适应需求的变化。软件三层架构技术的缺点(1)降低了整个系统的读取数据的速度。在二层技术结构中,大部分数据的读取是通过客户端直接造访数据库而得到的结果,而三层架构技术却必须经1/4个层次的完整过程才能得到最终结果,无形中增加了中间环节,从而降低了系统的性能。(2)有时会导致关联层次的修改。由于三层架构技术中层与层之间存在逻辑关系,当其中一个层次由于需要而发生功能的改变或增加时,很有可能导致其他层次的代码改变。例如:当表示层中增加了一个功能,为了保证其各层设计的结构合理性,可能需要在对应的业务逻辑层和数据访问层中都增加相应的代码,从而达到最终数据的一致性。(3)整体代码编写的工作量增加。由于三层架构技术增加了层与层之间的接口,有些能够直接使用的代码现在不得不分开使用,无形中增加了代码的编写工作量。(4)增加了开发成本。原先一个整体的软件开发,现在首先必须将其分割成不同功能的层次,而且需要考虑层与层之间的连接接口,无形中增加了整个软件开发的过程和工作量,从而增加了软件开发的成本。总结总体而言,针对如今软件开发的日趋大型化、规模化的特点,三层架构技术解决了很多二层架构技术中无法解决的问题,从而真正实现了软件开发的同步性、可维护性和可扩展性,是软件开发进步的重要标志。以上就是我们深圳市组创微电子有限公司为您介绍的软件开发中的三层架构技术分析。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
07-26
2020
现今,计算机已经成为人们日常生活必不可少的物品。随着计算机技术的不断发展,人们对软件的要求越来越严格,对软件的开发和安全性的关注度不断加强。本文对计算机软件开发与保护技术进行总结,希望引起大众对计算机开发与软件安全应用的重视。一、计算机软件开发的安全设计随着科技水平的提高,市面上出现许多能够直接应用于程序,且设计成熟的安全性产品。安全功能产品不仅能提高整个计算机系统的统一性、整体性,而且还能构建应用程序模块,提高原有安全产品的功能,增强安全性。比如,一般情况下,安全产品不会提供数字签名的功能,但是通过安装相关的应用就能够实现该功能安全程序开发过程就是程序员将有效的安全服务模块安装在一起的过程。在软件开发的过程中,技术部门要先调查开发相关需求,再通过计算机内部建设构建安全工程方面的内部控制流程,总结流程特殊性及相应的运行参数,从而降低开发成本,提升开发效率。这种开发方案不仅能够加强软件各环节的安全性,而且还能提高系统的稳定性、可靠性。应用程序和文档管理的保密工作关键在于是否能够有效的进行输入输出和处理控制,确保输入输出数据完整性、准确性和安全性。进行交易时,为避免出现错误,需要进行数据传输及处理的程序控制,一旦发现程序出错,程序会发出错误提示和修改意见。同时,应加强对系统更正完整性、正确性的跟踪和审计,务必达到开发程序符合业务需要的要求。如果设计时出现各模块间产生矛盾或者密码模式不充分的情况,导致安全需要不能全部实现,则应对其进行取舍或选择其他安全运行机制,努力满足安全需求的可行性。二、计算机软件保护技术分析计算机软件保护技术开发的首要目的是预防、阻止不法商贩对正版软件的复制传播,其主要包括以下两个方面:一是以保护硬件为目的开发软件保护技术;二是以软件开发为目的开发软件保护技术。目前,软件保护技术应用范围广泛,包括应用软件、操作系统、驱动、网络等领域。判定软件保护技术及其产品的安全性需要进行综合评判,仅仅通过单一方面评价安全性是不可取的。2.1硬件层面(1)加密狗:加密狗是外形酷似u盘的一种硬件设备,正名加密锁,后来发展成如今的一个软件保护的通俗行业名词,其是一种插在计算机并行口上的软硬件结合的加密产品一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换,即对软件狗进行读写,来检查软件狗是否插在接口上;或者直接用软件狗附带的工具加密自己EXE文件。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。虽然加密狗优点较多,但是却有便捷性较低、成本造价高的弊端,不能被大范围推广。(2)光盘、软盘。软盘、光盘均可通过在其存储空间中隐藏密钥的方式保护存入的电子信息此外,软盘具有写保护状态,可防止误写操作,也可避免病毒对它的侵害。在使用的时候最好将一些重要的软盘(如程序安装盘和数据备份盘)制成写保护状态。将写保护按钮推向里面盖住软盘左后角的孔,露出写保护按钮的方孔,软盘即可处于书写状态,软盘可接受输入记录。一个软盘可以记录存储多个文件,它同时也像录音磁带一样可以重复使用。但是,光盘、软盘保护具有两个缺点:首先,如若光盘、软盘遭到损坏,存储在其中的电子信息将无法修复。其次,专业技术强的黑客很容易判断密钥的位置,破解后进行盗版。2.2软件层面(1)序列号:序列号保护是现今最流行的软件保护方式,软件通过验证用户名与序列号之间的换算关系,确保序列号的合法性。当用户购买软件并下载到电脑上,如果想进行安装和正常使用,需要进行软件注册。用户将个人信息发送给软件公司,注册属于自己独有的私人账号,软件公司会提供给客户一个具有唯一性的序列号。客户必须准确输入序列号,并且通过验证才能使用软件全部功能。这种方式的优点是操作简捷,成本低廉,容易推广。(2)Nag窗口:软件未注册或软件的试用版经常会弹出一些提示要求注册的窗口,这些窗口被称为Nag窗口。Nag窗口在软件试用期过后,很可能屏蔽软件的正式窗口或某些具有重要功能的窗口,从而使软件不能正常使用。同时,软件可以控制Nag窗口的弹出时间和弹出次数,但由于弹窗会给用户带来不佳的印象,因而使用的越来越少。(3)时间、功能限制:对软件进行时间限制的保护方式现在比较普遍,其包括两类:一是进行单次运行时间限制,超过限定时间数据自动停止软件运行;二是进行使用次数或期限的限制。对软件功能进行限制,就是对软件中的模块功能进行处理,使用户不能正常使用,目前此项限制的效果反馈较好。(4)反反汇编:反反汇编是一种较为综合的软件保护技术,通过结合本文中提到的各种保护技术特点实施保护,效果较为理想。此种技术现在主要用于防范Cracker的动态跟踪与分析。总结现阶段,计算机技术与网络飞速发展,软件、系统程序逐渐深入我们的工作和学习之中,以后甚至可能影响到我们的衣食住行,所以对计算机软件的开发应予以高度的重视。而相对的计算机信息安全也更会够影响到我们正常的工作生活,因此对计算机软件保护技术的研究刻不容缓。以上就是我们深圳市组创微电子有限公司为您介绍的计算机软件开发与保护技术研究。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
07-25
2020
小型应用软件快速开发方法研究计算机由硬件与软件构成,软件是其核心,是完成计算机各种控制和操作的指令集合,硬件是保障计算机系统正常运行的各种元器件。软件又分为系统软件和应用软件,系统软件是运行在计算机硬件上的基础软件,是其他应用软件运行的基础平台,而应用软件是为了满足使用者对于计算机系统的不同需求而设计开发的具有专业性和较强应用性的程序,其最大的特点就是其应用性。软件开发是一项特殊工作,其特殊性表现在工作内容复杂且工作量大、开发时间紧张、需求不清晰、进度难保证、错误难杜绝,而且软件产品是一种逻辑产品,不具有实物特征,开发过程具有一定隐蔽性,因此,应用软件开发应严格遵循软件工程思想、建立一套严密的开发流程才能保证软件产品满足用户需求。与大型应用软件开发相比,小型应用软件开发工作量较小、复杂度可控、只需完成特定功能、应用范围窄、功能针对性强,小型应用软件只需少量开发人员或一人独立开发就能完成。一、小型应用软件开发流程软件的开发过程和技术是由软件的性质决定的。小型应用软件开发流程与大型应用软件开发流程基本类似,都应遵循软件工程思想,经过需求分析、概要设计、详细设计、编码、内部测试、软件部署、用户测试等环节才能上线使用。对大型应用软件开发而言,因其开发过程复杂、开发成本高,为确保开发的软件符合用户需求,大型应用软件开发的每个步骤都需要多人精心调研、策划、论证、确认,形成相应开发文档,而小型应用软件开发相对来说复杂度较低、工作量较小,每一个开发环节要简单并且可控,开发者对小型应用软件的全局和细节都能完全掌控,开发效率自然就有了很大提高,但开发过程中每一个环节都不能少。(如图1)二、提高小型应用软件开发效率方法2.1提高软件页面开发效率方法在开发过程中,我们主要采用VS(Microsoft visual studio2008)集成开发工具,该开发工具既适合开发C/S结构软件,也可以开发B/S结构软件,但VS工具更适合服务端程序的开发,在页面开发效率上,VS不如Dreamweaver工具来得快。为了提高系统页面开发效率,我们可以把同一个软件页面文件在VS和Dreamweaver中同时打开,并在Dreamweaver中对系统页面进行设计、修改,VS开发工具中会自动弹出该文件在其他地方已经进行修改,提示是否需要保存,我们在VS中保存该修改的文件,那么在Dreamweaver工具中设计的软件页面就能被VS开发工具识别、认可。在Dreamweaver工具中完成软件页面设计,在VS开发工具中完成服务端程序开发,我们将VS开发工具与Dreamweaver页面设计工具两者结合应用,将大大提高软件页面开发效率,从而提高应用软件开发效率。2.2提高软件开发代码编写效率方法代码编写是应用软件最终实现的基础。在小型应用软件开发中,我们在代码编写时使用有规律的变量名称,在控件命名时也使用有规律的名称来命名控,这样一方面容易查错,避免变量使用的错位、遗漏,另一方面可以对代码有规律的修改,提高编写效率。总结相较于人工操作而言,计算机的软件处理能力具有更高的效率,其质量也有了很大提高,能明显降低出错率。小型应用软件虽然规模小、应用范围窄,但它针对性强,能解决特定问题,如年终考核测评、民主推荐等小型应用软件的应用不仅能提高工作效率,同时也可以满足公平、公正、保密等方面的要求,投入与产出比高。文中提成了两种方法来提高小型应用软件的开发效率,首先是将VS开发工具与Dreamweaver页面设计工具两者结合应用,将大大提高软件页面开发效率,其次,当软件系统中使用到大量同类型控件情况下,利用Excel软件、记事本软件来自动生成的代码文本没有错误,节省代码编写和检测时间,从而提高了小型应用软件的开发效率。以上就是我们深圳市组创微电子有限公司为您介绍的小型应用软件快速开发方法详情。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
07-24
2020
微信官方给出的小程序的解释是:“小程序是不需要下载安装便可以使用的应用,它实现了应用触手可及的梦想,用户扫一扫或搜一下即可打开应用,也体现了用完即走的理念,用户不用关心是否安装太多应用的问题,应用将无处不在,随时可用,但又无需安装卸载。”微信小程序自2017年1月9日正式上线以来,就引起广泛关注。微信团队也不停地对小程序进行更新。微信小程序的优势十分明显,小程序触及了PC网页,公众号,H5,APP无法触及的地方,其无需安装,用完即走的理念能够满足用户需求且节省手机内存。站在小程序的拥有者的立场,其开发成本大大减小,同时可借助微信强大的流量入口,因而也降低了推广的难度。总的来说,微信小程序是一种全新的方式,能够更好地在用户和服务中建立连接,并且可以在微信中便捷地获取和传播,具有不错的使用体验。一、小程序开发前准备小程序采用了类似React Native和Weex一样的解析技术,开发者可以编写一套程序在多种客户端运行,同时,相比于公众号、微商城具有更好的原生体验。全面开放申请以后,作为企业、政府、媒体、其他组织或者个人的开发者,都可以申请并注册小程序。小程序和微信的订阅号、服务号以及企业号是并行的体系,具有独立的注册以及发布流程。1、小程序接入流程小程序的接入主要有4个步骤。(1)小程序注册:在微信公众平台官网首页(mp.weixin.qq.com)注册并提交注册信息、完善主体信息和管理员信息。(2)完善小程序信息:完善小程序的基本信息如名称、头像及服务范围等。开发前需绑定开发者并获取APP ID,以保证程序可以通过手机进行扫码测试。(3)开发小程序:下载安装微信开发者工具,微信官方提供了一套完整的开发框架,开发者可以根据微信开发文档进行小程序的开发与调试。(4)代码审核及发布:小程序开发完成后,不能够直接发布,需提交代码与开发配置信息提交审核,完成后尚可发布。2、微信Web开发者工具官方公布的微信开发工具名为微信Web开发者工具,小程序前端开发框架是微信官方提供的框架。微信Web开发工具是一种基于Native System系统层的框架,由于并不是运行在浏览器中,所以JavaScript在Web中的一些诸如Document,Window等方法均不可使用,以往HTML5在加载的时候在网络环境会有所限制,需要逐步加载HTML,CSS,JS,然后返回数据,最后渲染页面展现在浏览器中。用户总是需要等待很久,这样使得用户体验感大大降低。相比之下,小程序的两个线程:Appservice Thread和ViewThread会同时进行、并行加载,甚至Appservice Thread会更早执行,当视图线程加载完,通知Appservice,Appservice会把准备好的数据用setData的方法返回给视图线程。小程序的这种优化策略,可以减少用户的等待时间,加快小程序的响应速度。微信Web开发者工具区别于H5的开发工具+浏览器Device Mode预览的模式,而是基于自己的开发者工具,可以实现同步本地文件+开发调试+编译预览+上传+发布等一整套流程。同时小程序自己开发了一套WXML标签语言和WXSS样式语言,并非直接使用标准的HTML5+CSS3。同时提供了很多原生APP的组件,之前在HTML5中需要模拟才能实现的功能,在小程序中可以直接调用组件来实现。二、小程序的结构及其核心技术1、小程序的文件结构使用微信Web开发工具新建一个项目,框架会自动生成描述整体程序的APP和多个描述页面的page文件。完整的小程序主要组成有:一个入口文件:app.js;一个全局样式:app.wxss;一个全局配置:app.json;在页面pages下将页面安装文件夹划分,每个页面存在4个文件,分别是:视图层:wxml文件、wxss文件;逻辑层:js文件、json文件(页面配置,不是必须)。(1)app.js是控制小程序逻辑的脚本文件,app.json是小程序的配置文件,负责对小程序的全局配置。app.wxss是全局样式表,作用范围是项目的每一个页面。(2)wxml是一种类似xml格式的语言,具有数据绑定、条件渲染、列表渲染、自定义模板、事件回调和外部引用等功能。page.wxml主要通过使用基础组件构建页面结构。wxss和css格式的语言有相同之处,用于描述wxml的组件样式,page.wxss的优先级比app.json的Window高。同时,微信为小程序新增了尺寸单位rpx,rpx可以根据屏幕宽度进行自适应,rpx实际上就是系统级的rem(把页面按比例分割750份,1rpx=innerWidth/750)。page.json可以对独立定义的页面进行一些属性的设置,以满足实际需要。config.json可以设置一些个性化配置,当重新安装工具或者换一台电脑时,只要导入相同的代码包,开发工具就会自动恢复到开发这个项目时的个性化设置。JS文件主要用于用户交互、响应用户点击等。在小程序中,通过JS脚本来响应用户操作。2、小程序的框架微信小程序的开发是基于框架的,从软件设计角度来说,框架是一个可复用的软件架构解决方案,规定了应用的体系结构,阐明软件体系结构中各层次间及其层次内部各组件间的毅力关系,责任分配和控制流程,表现为一组接口、抽象类以及实例间协作的方法,是指对某一指定应用领域中的应用系统的部分设计与实现子系统的整体结构。小程序开发框架的核心是一个响应的数据绑定系统。分为视图层(View)和逻辑层(APP Service),小程序开发工具提供了视图层描述语言WXML和WXSS,以及基于JavaScript的逻辑层框架,并在视图层与逻辑层间设置了数据传输和事件系统,使得开发者能够很简单地将重心放在数据与逻辑上。处理事务逻辑的地方被称为逻辑层。在微信小程序中,所有.js脚本文件的集合构成逻辑层。逻辑层与视图层相互配合,完成数据处理及接收事件反馈。框架的视图层由WXML与WXSS编写,通过组件进行展现。对于小程序本身,.wxml文件与.wxss文件的集合构成了视图层,逻辑层处理数据之后,会发送给视图层用于与用户的交互,同时接收用户对视图层的反馈。视图层以给定的样式展现数据并反馈事件给逻辑层,数据展现是通过组件来进行的。视图的基本构成是组件。3、小程序的相关组件微信提供了一系列基本组件,可以通过使用这些基本组件组合形成来进行小程序的开发。这里说明几个比较有特点的组件。(1)<view/>和html5中的<div/>类似,是布局中最基本的一个组件,任何一种复杂的布局都可以通过嵌套<view/>组件来实现,<view/>是一个块级容器组件,默认display:block,它是盒模型,在布局过程中一般推荐display:flx的写法。(2)<textarea/>是多行输入框,与HTML中不同的是,它的值需要赋值给value属性,而不是被标签包裹,是一个自闭合标签,css动画对<textarea/>组件无效。(3)<navigator/>是页面链接,和HTML中超链接标签<a/>一样,主要进行页面跳转控制。链接的内容可以是一个字、词或者一幅图片,通过点击内容实现页面的跳转。(4)<canvas/>主要用于绘制图形,其本身是一块无色透明区域,并没有绘制的能力,仅仅是图形容器,需要调节相关的应用程序编程接口(Application ProgrammingInterface,API)来完成实际的绘图任务。4、小程序的API及其配置(1)域名配置:根据小程序提供的组件,开发者可以根据需要设计UI界面,然而小程序的一些功能就要依赖框架提供的API来实现。在使用API时,首先要对小程序进行服务器域名的配置,每个小程序都需要设定通信的域名,小程序可以跟指定的域名进行网络通信。目前支持的有HTTPS(request)、上传文件(uploadFile)、下载文件(downloadFile)和WebSocket通信。(2)常用API:1)wx.request(Object):实现小程序与开发者的服务器实现数据交互。request方法的作用是发起HTTPS请求,在小程序中,只能使用HTTPS请求而不能使用HTTP请求,一个微信小程序同时只能有5个网络请求连接。2)WebSocket:request方法是通过客户端主动向服务器发起请求,而服务器端响应返回数据来实现通信的目的。这种方法存在缺点,那就是服务器不能主动向客户端发送消息。因此要实现服务器和客户端之间的即时通信只能采用轮询的方法,而且request的Header是十分长的,为了传输一个很小的数据会占用很多的宽带。针对这种情况,开发者可以通过小程序提供的WebSocket相关API创建WebSocket,WebSocket只需要服务器和浏览器通过HTTP协议进行一个握手的动作后单独建立一条传输控制协议(TransmissionControl Protocol,TCP)的通信通道就可以进行数据的传送,实现长连接以达到通信的目的。三、小程序设计的项目发布1、小程序发布流程项目开发完成后,管理员需手动打包上传代码,填写相关配置类目并将代码提交审核,若第一次审核未通过,再次提交审核将开放提供测试的入口,该入口由开发者提供,用于微信审核人员审核微信小程序时登录。审核后手动发布即可。2、小程序上传原理管理员手动将代码打包上传是怎样实现的呢?编辑器本身是基于Web技术体系实现的。简单是说就是node+webkit,node提供给我们本地api的能力,而webkit提供给我们Web的能力,两者结合之后便可以使用JS+HTML实现本地应用程序。既然有nodejs,那打包选项里的功能就好实现了。其中ES6转ES5就是引入babel-core的node包,CSS补全是引入postcss和autoprefixer的node包,代码压缩则是引入uglifyjs的node包。结语微信小程序站在月活跃用户9亿人次的微信的肩膀上,自带流量趋势,入口多,功能简单便捷。小程序功能快速迭代,意味着围绕小程序的开发和生态工具建设将会是移动互联网的一个巨大机会。目前各行业内诸多企业单位纷纷加入了小程序开发,开通了小程序功能。虽然前段时间不少声音都不看好小程序,但小程序进行优化后,开放了很多入口,使得开发者和用户关注度不断提升。纵使一些高频和复杂应用暂时无法被小程序取代,但是一些低频应用的主要功能,只要能在小程序上实现,APP就可以完全卸载了。总的来说,微信小程序目前发展空间甚好,至于以后未来的发展仍旧不能够准确预测。以上就是我们深圳市组创微电子有限公司为您介绍的微信小程序开发技术详情。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS方案开发、蓝牙音频开发、儿童玩具方案开发、电子教育产品研发。
07-23
2020
基于HTML5的Web前端APP开发伴随着互联网信息技术的飞速发展,人们的生活已经发生了翻天覆地的变化,移动互联网技术给人们的生活带来了巨大便捷和变化。现如今,只用一个智能手机在手,几乎一切问题都可以随时随地解决,吃饭、炒股、打电话、在线学习、网上购物、网上求职、游戏娱乐等等。APP的开发层出不穷,HTML5作为一种新的技术形式,最早是应用于桌面浏览器,给用户以使用浏览器却又有使用一个应用的感觉体验。现在,HTML5应用到Web前端APP的开发,极大地推动了移动互联网技术的发展。一、HTML5简介HTML5是超文本标记语言(HTML)的第五次修改,是W3C(World Wide Web Consortium,万维网联盟)与WHATWG(Web Hypertext Application Technology Working Group,Web超文本应用技术工作组)合作的结果。WHATWG致力于Web表单和应用程序,而W3C专注于XHTML2.0。二、HTML5的一些新特性(1)用于绘图的Canvas元素:本身没有绘图功能,通过JavaScript在网页上绘制2D图形。<canvas id="myCanvas1”width="300”height="200"></canvas>(2)视频video元素和声频audio元素:HTML5中解决了移动设备上音频和视频的关键问题,不需要插件,通过audio元素就可以渲染音频,用户就可以很好地聆听音乐。在video元素中加上preload=”preload”或只是preload,当用户访问页面时便可以进行视频预载,用户就可以欣赏丰富的视频。为移动APP开发带来了极大地便利,增添了更多色彩。(3)HTML5能够实现离线存储:无论互联网技术发展得多么迅速,总会有出乎意外的时候,比如因为天气或是其他原因导致网络信号不好或是网络不稳定,HTML5能够使网络应用程序离线使用,有效地解决了这个问题,为移动开发带来了便捷。(4)新的标签元素:如calendar、date、time、email、url、search和article、footer、header、nav、section。三、基于HMTL5的Web前端APP开发3.1 H5 Web App构成与分类每个应用都是由多个页面组成,而HTML5、JS代码、CSS样式构成了一个页面描述。在页面中能调用服务,实现访问后台数据库的功能,还可以通过调用本地设备API调用设备硬件能力。目前,分为三类基于移动设备的应用:Native App(原生应用),是特别为某种操作系统开发的,比如IOS、Android、黑莓等等,它们是在各自的移动设备上运行的;Hybrid App(混合应用),是原生应用和Web应用的结合体,分别采取了原生应用和Web应用的一部分,所以部分在Web上运行,部分在设备上运行;Web App(Web应用),本质上是为移动浏览器设计的基于Web的应用,它们是用普通Web开发语言开发的,可以在各种智能手机浏览器上运行。对于想要使用哪一种应用,可以结合具体情况而定,针对不同需求和开发不同类别的Web App。3.2 HMTL5技术的优势HTML5的显著优势一次开发,跨平台使用,摆脱了对平台的依赖,且很多浏览器(如Chrome(谷歌浏览器)、Firefox(火狐浏览器)、Safari(苹果浏览器)、IE(微软浏览器)、Opera(欧明浏览器)以及基于IE或Chromium所推出的360浏览器、搜狗浏览器、QQ浏览器和猎豹浏览器等国产浏览器)都支持HTML5,节省时间,提高了运行效率;并且HTML5支持手机端的跨应用切换,不需要回到桌面,用户便可以在不同的APP之间进行来回切换,如此,为人们使用APP带来了便捷,节省了时间,带来了更好的用户体验;其书写代码清晰简洁易懂并且全部都进行了加密,本地应用解密后再运行,变得更加安全,如今已经被很多公司采用,HTML5技术如已经被百度网站看中并使用,被很多人学习运用投入到生活实际,待到HTML5规范开发完成时,将成为主流。3.3基于HTML5的Web前端APP开发的发展前景从现代社会层出不穷的移动应用就知道,在这个智能手机和平板电脑等移动设备大爆炸的时代,移动优势已经成为势不可挡的趋势,不管开发什么,现如今都是以移动为主,HTML5开发技术降低了对适配终端和应用的技术门槛,跨平台跨网络,使得成本大大降低,有利于促进行业的良性发展。目前全球将有10亿手机浏览器支持HTML5,同时Web开发者的数量迅猛提升,数量将达到300万。按照互联网的发展速度,人们现在的生活方式,已经离不开网络,以后对于APP的需求变得更大,未来极有可能生活中的一切都会与智能手机,Web应用有关,一切可以在网上实行。总结如今移动互联网已经成为时代的潮流,而HTML5技术的发展将会是一种无法阻挡的趋势,虽然HTML5技术仍然在不断完善和改进中,但是在未来移动互联网的发展的大趋势下,将为HTML5的发展锦上添花,使得HTML5的发展空间更为广阔,发展前景更加光明,在目前未来的一段时间内一定是发展的主流,值得人们学习研究并应用。以上就是我们深圳市组创微电子有限公司为您介绍的基于HTML5的Web前端APP开发方法。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。注:部分图片内容来源于网络,如有侵权,请联系删除。
07-22
2020
基于OCR技术的室内定位APP开发随着我国经济的不断发展、人民生活水平的日益提高,各种室内场所也趋向于大型化、复杂化,例如图书馆、医院、大型超市、高铁站、地下车库等,在大型室内环境下的定位需求也随之产生。不同于GPS、北斗卫星定位系统等室外定位系统,室内定位系统是移动应用领域的一大挑战。基于OCR技术的室内定位系统,是通过建立室内的标志物上的文字信息与其对应坐标的数据库,使得用户在GPS信号弱的室内,也可以享受较为精确的定位服务。通过手机上的APP对室内标志物的文字信息进行拍照,如店铺名、路牌、展品介绍等,APP中接入的OCR识别引擎会识别图中的文字信息,然后传输到服务器,在数据库中对文字信息进行检索和匹配,匹配成功后返回坐标,并在APP上以地图和坐标点的形式显示位置。一、室内定位APP的系统分析1.1定位APP系统架构软件的架构需要UI组件、UI处理组件、百度OCR引擎、高德地图SDK、数据访问组件等。UI组件用来显示用户界面,百度OCR引擎提供文字识别服务,高德地图提供地图源,软件通过数据访问组件和数据库交换信息。此外,还需考虑到通信、运行管理以及系统安全性等方面的问题。软件架构如图1所示。1.2室内定位APP主要功能模块室内定位APP主要包括6大功能模块。(1)注册模块:注册方式为手机号或者邮箱注册,点击获取验证码来验证手机号或者邮箱的正确性,防止恶意注册或错误注册。验证成功后需要设置登录密码,填写两次且两次密码相同才算注册成功,然后自动登录系统,无需再次输入账号和密码,同时系统将注册信息传输到服务器端,插入用户表中。(2)登录模块:用户需要输入账号和密码,如果不记得密码的话可以点击“忘记密码”,验证手机号或者邮箱后可以重置密码。点击登录后,登录信息会传输到数据库中进行比对,完全正确才能进入主界面。(3)设置模块:在主界面中点击齿轮图标后会进入设置界面,可以在设置中选择修改密码、地图管理、是否允许管理员进行消息推送、是否允许WiFi下自动下载最新版本软件、清除缓存以及退出登录等功能。其中,地图管理是指可以下载指定城市的地图,这样可以节省流量,不必每次打开软件后都要联网接收地图资源。(4)OCR识别模块:点击顶部搜索栏右侧的相机图标后,软件会打开系统相机进行拍照,然后自动调用百度OCR引擎进行识别,识别出的文字显示出来后,用户可以选择手动修改文字,修改好后上传至服务器,或者直接上传。(5)地图模块:使用高德提供的地图,根据服务器返回的坐标信息,在地图上显示当前位置。(6)历史记录模块:在主界面点击时钟图标后会进入历史记录界面,可以看到用户定位的记录,包括时间、地点和OCR识别的文字信息。1.3定位APP系统流程打开软件后点击搜索框右侧的相机图标,打开手机相机,拍摄照片后,系统会调用百度OCR引擎识别照片中的文字,识别失败会提示用户重新拍摄清晰的照片,识别成功后系统会将识别出的文字显示出来,让用户检查是否正确,若有错误可以选择手动修改文字,无错误则直接上传至服务器,然后在数据库中进行查询和匹配,匹配失败就会返回到拍照界面,提示用户重新选择标志物,匹配成功则会返回坐标值,然后系统调用高德地图源,显示室内地图和坐标点,一次室内定位完成。二、APP设计的主要技术2.1数据库设计本系统在服务器端的MySQL数据库中创建数据库表,根据不同的数据格式,将数据分为用户登录数据、用户行为数据以及位置坐标数据3大类进行存储。用户登录数据包括用户的登录账号和密码等信息,由于这类数据相当重要,不应以明文的方式存储在数据库中,通过使用MySQL的AES_ENCRYPT函数加密数据,因为加密后的数据比较难看,所以再使用to_base64函数转码数据,将加密后的用户信息存储在数据库中。用户行为数据包括用户使用该软件进行室内定位的时间、OCR识别出的文本、用户修改后的文本以及定位后的位置坐标。该数据内容供用户在历史记录中查看,用户可自行删除。位置坐标数据包括室内环境下特征物上的文字信息以及对应的坐标值。通过匹配用户上传的字符串,返回坐标,用于在手机客户端显示当前所在位置并在地图上进行标注。2.2调用OCR接口该软件使用百度的OCR进行文字识别,百度的OCR服务免费,不过每天有次数的限制,但对于学生项目来说够用。首先,在百度AI开放平台中进入控制台,找到文字识别的产品服务,创建应用后填写相关信息,获得AK、SK。然后,下载license文件,在项目中如果直接用AK、SK明文调用百度的OCR,很不安全,可能会被别人反编译之后获得用户的AK、SK,而license文件集成了AK、SK,放在项目中可以防止别人破解。之后,再下载百度OCR的Android SDK,添加进项目中。准备工作完成后就可以开始调用百度的OCR接口了。在需要进行识别的页面所在的文件中创建根据License文件初始化OCR实例的函数,并在onCreate()方法中调用。接下来新建一个可以存放OCR的识别方法的类RecognizeService,在onActivityResult方法中,调用刚刚新建的类的recAccurateBasic方法,此方法接收3个参数,分别是context、拍照获取的图片路径和在RecognizeService类中定义的监听接口,在onResult方法中,返回的result字符串即为识别结果的json字符串,只需要对JSON进行解析就能得到识别结果。2.3获取室内地图服务该软件使用高德提供的地图服务。在高德开放平台中进入控制台,创建应用,获取API KEY,下载Android平台下的地图SDK文件,将解压后的jar包导入工程中。开发环境配置好后,在工程的“AndroidManifest.xml”文件中添加用户KEY和所需要的权限,在布局xml文件中添加地图控件,创建地图Activity,管理地图生命周期。总结本文基于Android平台设计并开发了基于OCR技术的室内定位APP,为室内定位提供了一个新的解决方案。现阶段比较成熟的室内定位方案,是需要基础设施的,比如室内部署密集的接入点或者基站,例如各种传感器,信号接收装置,信号发射器等,成本较高,且需要维护设备。而基于OCR技术的室内定位方案的成本是很低的,并不需要各种用来定位的设备,较为麻烦的只是第一步,建立坐标库。将室内标志物上的文字信息提取出来,并建立坐标库。这的确是不小的工作量,但是随着OCR技术和人工智能技术的发展,未来可能只需用无人机将室内所有场景拍摄下来,然后系统便可以自动整理出图片并匹配其对应的坐标,导入数据库中,这样就可以大大降低工作量,甚至可以打开摄像头,通过录像的方式来实现室内的实时定位。作为一种无需传感器的室内定位方案,它可以给我们提供更多的创新想法和研究方向。以上就是我们深圳市组创微电子有限公司为您介绍的基于OCR技术的室内定位APP开发技术。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
07-21
2020
软件工程的出现是为了应对因为软件的需求量大量增加而出现软件开发的“软件危机”而产生的。所谓的软件工程就是借鉴传统工程的方法进行软件开发,软件工程中经典的软件开发流程包含几个阶段,分别是需求分析、概要设计、详细设计、编码、测试、运行和维护。软件工程的出现,使得研发出质量过关、成本合算的软件产品成为常态,“软件危机”的问题得到了解决,但是随着软件使用的进一步广泛,软件产品在人们生产和生活中所占的地位越来越重要,出现了新的问题,就是软件安全。而原有的软件开发的工程流程无法很好地解决软件安全问题。以原有的软件工程中的软件开发流程为基础,并参考已有的软件安全开发流程SDL,进行适当的改造,提出一种新的软件安全开发流程。一、现有的软件安全开发流程1、SDL介绍随着软件使用的普及,已经有一些有识之士对软件安全问题有所研究,并有一些可以使用的成果,在这之中,软件安全开发流程也应运而生。迄今,最为普及的软件安全开发流程是微软提出的软件安全开发周期—-SDL,这个流程的典型之处在于它把安全工作贯穿于整个软件开发的生命周期中,而且,即使仅仅是对其中的一个过程进行安全工作,也能大大提高软件的安全性。下面对SDL进行简单的说明。在一个完整的软件SDL实施过程中,一共可以分为13个阶段。(1)安全教育和提高安全意识;(2)项目启动;(3)定义并遵从设计最佳实践;(4)产品风险评估;(5)产品风险分析;(6)为客户创建安全文档,工具;(7)安全编码策略;(8)安全测试策略;(9)安全推动活动;(10)产品最终安全评审;(11)安全响应计划;(12)产品发布;(13)执行安全响应。SDL可以有效地提高软件安全性,降低软件安全问题。据微软提供的相关数据显示,使用SDL进行开发的WindowsVista所发现的安全漏洞比没有使用SDL的Windows Xp减少45%;使用SDL开发流程的sQLServer2005发现的安全漏洞比没有使用SDL的SQL Server2000减少91%。SDL具有一些明显的优势,它既可整体使用也可以在某一个阶段使用,灵活性高,而且它与一般的开发流程比较匹配,所以实用性很高。另外,SDL不仅仅适合微软的平台,还适用于多种平台;SDL有比较充分的工具支持,例如威胁建模和静态源代码分析工具;SDL属于微软开发,所应有的文档非常详细。2、SDL应用现状通过2010年在美国旧金山的RSA会议上对软件开发流程与安全结合的调查数据发现,目前的软件公司已经开始关注软件的安全问题,而且其中超过50%的调查参与者表示对SDL进行关注。但是进一步的调查数据显示,在开发过程中真正应用了SDL的参与者仅仅13%。没有使用软件安全开发流程的调查参与者也给出了自己的理由,主要是其时间成本、资源成本以及暂时的安全意识。由此看来,即使对软件安全开发流程的关注度越来越高,但是其实际使用情况仍不够理想。通过调查发现,企业规模是影响是否使用安全开发流程的重要因素之一。大企业可以承担更大的资源投入,保证安全工具和安全活动的费用,而一些中小企业对投入有一定的担忧。二、对SDL的改进有大量的数据证明,软件安全测试介入的时间越晚,所需要的付出越多。在软件发布后对安全漏洞的修复所需的成本至少是在软件设计和编码阶段就进行修复的30倍。SDL的出现正是为了解决上述问题,但是现有的SDL具有一定的限制性,为了提高SDL的适用对象,降低其经济要求,将SDL进行了适当的改造。经过改造的软件安全开发流程的核心是安全知识库,安全知识库在软件生命周期中一直有效,并起到不同的作用。为了将软件开发流程变得更加灵活,将软件开发周期简化为需求、设计、测试、维护4个阶段。在这4个阶段中,采取不同的活动来提高软件安全性。1、软件安全知识库在所改造的软件开发流程中,安全知识库是最核心的存在,它可以包含很多内容,包括产品风险库,软件安全漏洞库,软件安全开发设计规则,安全工具,甚至包括一些相应的安全知识培训。产品风险库:包括在项目开展之初的需求风险和已经评估的风险。安全工具:包括网络安全测试工具以及白盒安全测试工具。例如AppScan,Sninffer;白盒安全测试工具包括Fortify或者CheckMarx。安全知识文档:项目累积的安全经验文档或者培训文档。安全漏洞库:能够收集到的相关的产品安全漏洞,包括网络和代码级。安全设计规则:安全开发基础知识,例如编码规则。安全知识库在软件安全开发流程中的地位极其重要,在每一个开发阶段都可以使用安全知识库中的内容。2、软件开发需求阶段需求阶段的主要工作是需求收集和需求分析。在这个阶段,可以根据安全知识库的产品风险库对产品需求进行分析,把隐含安全风险的需求重新设计,或者计算针对某些功能或者过程不进行安全活动将会有多大的损失。3、软件安全设计阶段设计阶段分为概要设计和详细设计。概要设计阶段,将主要是对软件架构设计,软件模块功能定义,在这一阶段需要参考产品风险库和漏洞库,对一些已知的安全问题进行预处理,尤其是一些网络软件,面对各种广为人知的攻击手段做出相应的设计。详细设计阶段的工作主要是代码编写,这时要根据漏洞库---主要是白盒安全漏洞和安全设计规则进行编码。对于白盒安全漏洞,现在已经有比较成熟的定义,例如fortify对白盒安全漏洞的分类和定义,参考这些漏洞分类,结合已经比较成熟的保证编码质量的编码规则进行详细设计工作。4、软件安全测试阶段软件安全的测试工作,主要分为3种类型,第一种是模糊测试:这种测试的原理是向目标系统发送非预期的输入并观察结果来发现软件漏洞。一般是设置大量非正常形数据进行解析,并包含了对网络协议和不信任的访问所产生的问题代码的测试。第二种是渗透测试:这种测试是为了证明网络防御按照预期设置正常运行的一种机制。它主要用来测试网络和主机系统的操作配置以及补丁的修复程度,较多的是使用模拟攻击发现信息系统中的漏洞,发现系统的脆弱性。第三种是运行时验证:对运行中的问题进行验证,用来完成常规运行中的测试和对问题日志的分析。可以使用缺陷分类表或者风险分类表来对测试出的缺陷进行统计,使用相应的测试方法修复发现的缺陷。在这一阶段,可以大量的使用安全工具进行测试,比如网络软件的安全,使用一些渗透性测试工具进行测试(如Ac-tivePerl,Sniffer);代码级的安全测试,主要依靠一些静态测试工具和动态测试工具,比如专门代码静态安全测试的forti-fy,CheckMarx;还有一些对于软件使用环境和整体软件系统的安全测试,例如美国的安全软件nessus。现在,软件安全测试工具越来越多,已经涌现出许多成熟的或者有特点的商业的或者开源的软件安全测试工具,国内也有一些不错的软件安全工具,例如启明星辰天镜或者安华明鉴,这些都为实施软件安全的测试工作提供便利。在这一阶段,从成本考虑出发,大量的开源工具是优先考虑的。5、软件维护阶段维护阶段的工作主要是处理已经出现的安全问题并且将问题和处理方法搜集入安全知识库,为以后的软件安全开发提供知识储备。经过简化后的软件安全开发流程仅仅包括了需求、设计、测试、维护4个阶段,这4个阶段都需要使用到安全知识库,所以建立的这套流程核心仍然是安全知识库。改造后的软件安全开发流程更加灵活,可是适应不同的开发流程,一旦建立安全知识库后,也可以在不同的阶段开展软件安全开发工作,降低安全成本。总结软件安全开发生命周期的应用主要是为了减少安全漏洞和降低安全漏洞的影响。但是软件开发仅仅是基于目前最优的安全方案,新的攻击手段层出不穷,所以安全问题和软件漏洞是不可能被彻底消除的。软件安全工作现在更多的是体现在安全测试上,在软件安全开发上进行的工作仍然稀少,这与现有的软件开发流程所需成本较高,流程复杂有一定关系。通过对现有的软件安全开发流程SDL进行简化以适应中小企业的需要,也可以作为一些敏捷开发或者流程简单的开发使用。优化后的软件开发流程主要有这几个优点:开发时间更灵活,强调安全工具包括免费工具的使用,流程进行了简化,成本有所降低。以上就是我们深圳市组创微电子有限公司为您介绍的对软件安全开发流程的研究。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS方案开发、蓝牙音频开发、儿童玩具方案开发、电子教育产品研发。
07-20
2020
近年来,网络社交工具应用越来越多,比如QQ、微博、微信、MSN等等,这些社交工具无疑席卷了现代社会,已经走进每个人的生活、工作和学习,教育领域也受到强烈影响。一方面,网络社交中存在大量不良信息的传播,对青少年的危害很大,严重影响学生的健康成长。另一方面,网络社交工具存在积极的有利的因素,可以促进教育教学的改革增效。比如,笔者通过调查发现微信公众号在教育领域的应用场景就越来越多,很多学校、老师尝试使用微信公众号进行教育、教学、宣传、推广工作,取得了可喜的成绩。但微信公众号在教育领域的应用目前还处于一种自发的状态,也存在很多不确定的问题。因此,兴利除弊,因势利导将网络变成一个有利于大学生成长的工具就是本项目研究所要达到的目标。一、微信公众号需求分析当前,高职院校内已经部署有网络中心、电子教室、多媒体教室和实验室等信息化教育教学环境,在这种条件下只需要再部署移动网络即可以实现移动校园内场景的学习。然后在软件环境上实现平台的搭建,可以实现学生随时随地利用自己的移动网络进行学习。通过调研发现,本项目所研究的基于HTML5和微信公众号的直播课堂需要解决一下问题:1)移动端应用,系统不需要安装,直接通过微信公众号进行访问。2)针对不同手机平台,只需开发一套。3)版本不需要时常更新,服务器更新代码,所有客户访问即可更新。4)可实现客户实时流与直播服务器传输。5)可实现直播服务器流的转发与中继。6)白板和文档演示。7)视频流、音频流、白板信息、文档信息同步。8)直播数据的云存储与云播放。9)满足轻量级的在线直播服务。二、微信公众号系统设计系统设计的主要理论依据是软件工程原理、加涅的九段教学策略、建构主义学习理论、教学传播优化原理中的重复作用和共同经验原理。根据设计需求可以将平台功能分为三大部分:教学信息发布、交流反馈、辅助平台学习。根据教学内容、教学环节、教学安排等情况可以进一步细分为:预习、讲授、复习、拓展、总结、交互和考核7个功能模块。预习:主要是让学生了解学习目标、学习重点、学习难点、学习方法等。讲授:可以是直播讲授,也可以是微课、MOOC等制作好的课程资源讲授。复习:主要是巩固重点知识,解决难点问题,加深记忆和理解。拓展:提供拓展资源,拓宽学生视野,激发学生思维,促进知识向应用转化。总结:通过提炼内容框架,让学习者掌握知识的脉络,自我评测、自主建构知识体系。考核:提供考核资源,自动组卷,自主检测,也可统一考核。交互:主要是师生间答疑解惑,学习交流,资源共享。预习、讲授、复习、拓展、总结、交互、考核等7个模块相辅相成,构成一个学习过程的完整闭环,可激发学习动机,明确学习目标,巩固学习基础,拓宽学习视野,建构学习体系,交流学习经验,共享学习资源,考核学习成效。三、微信公众号开发和应用该平台主要解决教育教学场景下的如下问题:①教学内容发布,可以在平台上发布通知、消息、学习资料,学习资料可以是文本、图片、PPT、录音、微课、MOOC、源程序等,用于学生的课前课后自主学习。②个性化设置,公众平台可以用关键字实现“对话即搜索”的服务,也可以通过用户设置,实现自动回复。③留言板管理,在平台上开辟出留言板区域,可以实现发布交流主题或者就某些问题提问、发表自己的看法,实现问题的深层次、多用户交流。④应用情况统计,如用户人数、交流主题数、点赞人数等,用图表形式展示。⑤资源管理,资源库分为教学资源库、拓展资源库、考核资源库,资源提前放置到管理库中。⑥用户管理,可以对用户进行分级、分组,用户自己也可以修改某些信息等。根据公众号和我们要求的功能,要实现需求,结合实际情况我们选择以下技术的支持。1、RTSPRTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。该协议有如下特点:①传输方式灵活,RTSP在体系结构上位于RTP和RTCP之上,可以根据网络情况选择TCP或UDP完成数据传输。②双向请求,HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器可以双向请求。③多媒体流,RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制。④支持多方视频应用,允许同时多个串流需求控制可以降低服务器端的网络用量,支持多方视频应用。该技术和项目的应用场景高度契合,非常适合分布式教育应用,可实现单播和组播,现场数据和存储剪辑数据的应用。2、WebrtcWebRTC实现了基于网页的视频会议,标准是WHATWG协议。项目的最终目的主要是让Web开发者能够基于浏览器快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件。①该协议功能强大,提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能。②并且还支持跨平台:windows,linux,mac,android。便利的交互体验,丰富的产品功能。③支持大规模观看可以在全球范围内进行音视频高清、大规模、稳定的直播教学。④丰富的课件类型除传统的静态课件,还支持动态ppt课件。支持全格式多媒体的播放,支持本地文件直接推流,秒级打开,流畅还原。3、HTML5万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改即为HTML5。HTML5的设计目的是为了在移动设备上支持多媒体。用HTML5的优点主要是可以进行跨平台的使用。另外,它是一种自适应网页设计技术,可以根据不同大小的屏幕,自动调整布局。正是这些优点,本项目在web技术上选择HTML5。项目完成后,经过动漫软件与教育学院软件16级和17级师生的应用验证。在实践中,通过手机等移动式设备随时进行学习,使学习不受时空的限制。在这种学习方式下,学生互动得到激励,教师利用微信公众号推送学习内容,学生参加在线讨论,帮助学生积累知识,优化知识结构,学生的学习积极性得到显著提高,学习成效显著。同时,微信公众号作为师、生、家长间有效的沟通工具,开创了一种新的交往模式,给人们之间的交往活动提供了许多便利,实现三方的有效沟通,能够及时了解和掌握学生的学习情况,并使资源通过网络实现利益最大化。平台满足各类教室的需求允许创建各类教室,支持课前暖场,现场排麦,录播课。丰富的互动功能支持各种常用的授课功能,聊天问答,桌面共享,点名签到,抽奖投票等。支持桌面,区域,程序等屏幕共享手段。服务器端录制、回放支持服务器端1080P高清录制,自动生成回放,可上传下载。针对回放亦可进行二次编辑,生成定制的录制件。开放的接口,网页互动直播全终端覆盖,支持网页和客户端,PC(MAC)和移动端。总结通过项目开发和实践应用,基于微信公众平台的直播课堂能够激发学习者的学习兴趣,可以使学习者反复练习和巩固,夯实基础,拓展提高,学习效果提升明显。实践结果表明基于HTML5的微信公众平台直播课堂简单易用,快速直连,场景多样化满足直播课堂、学术讲座、公开课等各类大规模教学场景的应用需求,是教育教学手段的有益补充,在条件允许的情况下可以推广使用。以上就是我们深圳市组创微电子有限公司为您介绍的基于HTML5微信公众号的直播课堂设计方法。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS方案开发、蓝牙音频开发、儿童玩具方案开发、电子教育产品研发。
07-19
2020
软件开发项目人工成本控制流程设计与应用一、国内软件开发项目人工成本管理现状及存在的问题项目成本包括直接成本和间接成本。直接成本包括直接人工成本、软硬件采购成本、差旅费等直接费用。间接成本包括管理费用分摊等。软件开发项目中人工成本所占比重很高,管理好人工成本意义重大。人工成本等于人员工时投入乘以人员单价。对人工成本的管理,可以简化为对工时的管理。人工成本管理包含两个方面,一方面要准确估算,制定合理的成本基准;另一方面要控制成本投入,使实际成本控制在成本基准之内。目前,国内IT行业在这两个方面都还不是很成熟,存在的问题主要有如下几个方面。1.1没有统一的估算标准,估算结果偏差大整个软件行业长期以来缺乏科学的估算方法和估算标准,成本定额计算问题一直没有得到很好解决,导致在软件开发项目招投标活动中,频频出现恶意竞标现象,这已成为软件产业进一步发展的障碍。为了解决行业的迫切需求,工业和信息化部于2010年正式立项启动了《软件研发成本度量规范》制定工作,该规范将作为国家电子行业标准进行发布。该标准以快速功能点方法衡量软件功能规模,估算软件工作量,从而确定软件研发成本。尽管行业标准即将出台,但由于很多企业不了解标准内容,不掌握估算方法,在估算时仍然依据个人经验进行,估算结果千差万别。在合同签订或招投标阶段,即使用户提出了明确的软件开发项目需求,不同的供应商采用不同的估算方式,考虑不同的估算因素,产生不同的估算结果,导致同一个项目估算成本相差巨大。由于没有统一的标准,作为甲方,面对相差悬殊的合同报价,很难判断哪个供应商的估算结果和报价是接近客观事实的、合理的,哪个供应商在哄抬价格或恶意竞争?作为乙方,估算不准往往导致在预算阶段利看项目利润很高,但在决算时发现实际利润很低甚至亏本。估算不准对甲乙双方都可能造成伤害。基于不准确的估算制定的项目人工成本基准也不准。基准缺乏科学性,导致项目人工成本管理从源头上缺乏执行的严肃性。1.2管理粗放,仅做人工成本统计,但分析、控制不够一般情况下,各IT企业都统计软件开发项目投入的工时,用统计的工时作为项目人工成本预决算的参考数据,但是,很多企业仅做统计,不做分析和控制,或分析和控制很弱。之所以出现这样的现象,有几方面原因。首先,思想认识问题,即工时分析控制工作动力不足。由于估算不准,大家认为后期工时基准可以变更,进行工时分析和控制意义不大,统计一下实际投入就够了。其次,很多企业的管理还不够精益化。项目管理的精益化是需要成本的,也是管理能力水平的体现。例如,从理论上讲,在项目执行过程中,应当进行挣值分析,关注成本绩效指数,出现偏差时,立刻分析原因,进行纠正。但是,要真正做到,需要建立挣值分析模型,制定相关的制度要求,配备管理人员等。第三,信息化支持不够。如果没有信息化手段做支撑,仅通过手工方式完成工时统计分析,效率低、成本高、准确性差,即使有精益化管理思想和要求,也很难在操作层面执行。二、软件开发人工成本管理解决思路针对软件开发项目人工成本管理中存在的问题,主要解决思路是,学习掌握先进的估算方法,依据即将颁布的行业估算标准,进行科学的估算,从源头上控制人工成本基准,并在此基础上设计控制流程,在各个环节设置明确的控制点,通过信息系统保障管理思想落地实施。具体如下:(1)跟踪行业标准,掌握标准内容,在实际估算操作中应用标准,形成重视估算、尊重科学的企业文化。依据标准进行估算,将使人工成本估算更趋准确,并彻底解决甲乙双方对软件开发人工成本计算口径不统一的问题。(2)引入精益化管理手段,加强项目执行过程中的成本分析和控制。对成本的管理不是等项目结束时做分析,而是每周统计分析成本绩效指数CPI,并且与进度绩效指数SPI进行匹配分析,实时关注人工成本的使用情况。在项目结束时,要重新对软件规模进行计数统计,根据实际发生的人工工时计算企业的生产率,用于指导新项目人工成本估算过程。(3)提出人工成本管理需求,开发信息系统,使管理思想、管理流程通过信息系统进行固化和不断优化。只有通过系统实现项目预算、项目计划、工作任务包、实际填报的工作日志工时、项目进度绩效指数、项目成本绩效指数等的联动,才能使人工成本控制高效、准确、透明。三、软件开发人工成本控制流程设计(1)从项目售前阶段开始,控制估算和预算。设专岗进行工时成本审核。软件开发项目,可以采用快速功能点法,也可以采用类推/类比法,或德尔菲方法。工时专员根据事先准备的审核检查表进行审核。审核重点在于估算、预算过程的规范性及有关参数选择的合理性。(2)预算表导入项目管理系统,自动形成里程碑,作为后续控制依据。(3)项目计划导入系统,或直接在系统中拆分工作包,形成项目组员的工作计划。(4)项目组成员在系统中填报工时,由系统自动生成工时相关的各统计数据报表,如SPI、CPI、完工率、人员使用率、人员产出率等。(5)项目管理办公室QA定期分析异常数据的形成原因,发现存在的问题或风险,与项目组一起制定改进措施。(6)公司对异常数据产生的原因、问题风险等统一管理,不断改进,形成度量库和相应的数据基线,作为后续项目估算人工成本的参考,使得人工成本控制越来越科学、越来越精益。四、软件项目管理系统需实现的主要需求及技术实现4.1软件项目主要需求(1)预算表导入:根据公司的项目预算体系,针对不同合同类型,实现不同的预算模板。预算表导入后直接形成一级摘要。项目的各个里程碑、里程碑的开始日期、结束日期、工作量等全部自动形成。预算表导入的一级摘要只能由QA手工修改。如预算表变更,由QA手工修改。(2)项目计划导入:项目计划导入项目管理系统时,具体要求为:计划中的标题生成摘要,且自动将责任人设为项目经理;计划中的具体任务生成工作包,任务中的资源对应工作包资源;如计划中为虚拟人员,则导入系统时默认为项目经理;预算表生成的一级摘要不能被修改。4.2软设计技术实现人工成本控制方式在原有工时填报系统的基础上扩展实现。采用Microsoft.NET平台,B/S方式,数据库是SQLserver2000。该系统实现excel导入、导出;project导入、导出等功能。总结从跟踪行业标准、依据标准进行估算、工时专员独立审核、通过系统实现工时填报、到SPICPI定期分析、发布生产率基线和提升目标,从各个环节进行有效的人工成本控制,该方式实现了对软件开发项目人工成本控制的目标,帮助组织提升了项目管理能力和赢利能力。以上就是我们深圳市组创微电子有限公司为您介绍的软件开发项目人工成本控制流程设计与应用。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
07-18
2020
基于组件的软件开发方法研究计算机硬件技术的快速发展导致各种硬件快速组装在一起,能够既方便又省钱的快速组装处一台计算机。但大多数的软件组装一般都会浪费很多不必要的时间,或者是费用超出预算。近几年来,软件开发的技术已经日趋成熟。基于组件的开发(CBD)由第一代和第二代服务器发展而来,对软件开发过程中的被动局面起到了明显的缓解作用,令开发者通过自己手动组装组间并装成应用程序,为软件组装行业带来新的生命力。CBD和面向对象之间存在着本质上的差异,作为一种新的分布计算的方法,CBD能够提高软件的可重复使用率,摆脱软件的小作坊式生产模式,CBD是软件开发过程中的必要环节和必然结果。一、基于组件开发的相关概念有一些对象类组成的物理意义上的包叫做组件,组件具有独立可传递性,是软件开发中的能够替换的软件单源,它封装了设计决策,同时与其他组件相结合。组间具有特定的功能,能够跨越进程的边界,实现网络、语言、应用陈旭和开发。2.2 CBDCBD是一种利用可重用的软件组件构建应用程序的技术。组成组件的三部分分别是组件的说明书、组件如何工作的实现设计和在指定平台上开发的传递方法。CBD的基本活动包括收集组件、改善组建的质量以及令组件之间相互适应,最后是组装组件和更新组件。CBD工具的基本要素是组件仓库、组件的建模工具、组件搜索工具、以及可运行的系统。CBD的特征与结构化软件开发技术相比,CBD特征显著:首先CBD具有高度的互相操作性,能够实现真正的软件重用。组件是完成通用或特定的一些能够互相操作和利用的模块,开发者可以再不头痛的领域中利用它们形成合适的系统。其次,CBD的接口具有可靠性。组件的接口是不变的,一旦被发表就不能修改。这也说明一旦使用组件者从某个接口获得某项服务,南无他可以总从这和接口获得这项服务。随意一般组件封装之后只能通过已定义的借口来提供合理的、一致的服务。这种接口定义的稳定性使客户应用开发者能够开发出坚固的应用。同时CBD还具有可扩充服务和强有力的基础建设。二、CBD的主要研究重点目前关于CBD的研究重点主要分为三个方向,组件软件、组建软件的过饭和基于知识的方法和给予架构的软件构建。2.1组件软件这里所指的组件软件是指通过一系列通过对象和文档模型实现组件之间相互联系和应用的活动。例如Microsoft的COM和OMG等均属于对象模型的一种,他们对如何进行对象之间的语言、地址空间、计算机类型和操作系统边界无关的通信进行了描述。文档模型如OLE2能够提供给用户不同数据类型和统一管理这些数据的应用程序。这一技术产生了新的可视编程工具,从而改变了编程者对信息表达的方法和处理过程,令用户更加容易理解和接受。2.2组件软件的规范和基于知识的方法解决组件标准化的问题是组件软件的规范任务,目前看来分布式对象标准的分布形式多样,且组件本身不具有统一明确的定义,所以增加了异种标准组件之间组装的难度。基于知识的方法研究主要是在学术界进行的,为了在领域知识的基础上实现软件系统过程的自动化,通过规范的方法对组间的组装过程进行描述。2.3基于架构的软件构建这一方向是提供给系统开发者在特定领域应用程序的架构和参考体系结构。基于组件的应用程序不仅是一些普通部分的简单拼凑,同时也是为了部分特定领域所构建的,所以需要一种体系能够将组件装配到一起,实现组件之间的互相操作性,从而提高工作效率,所以不同领域的体系结构的研究就变得非常的重要,对于组件的治疗和组件的重复使用程度产生直接和关键的影响。参考体系结构对组件和特定领域之前的关系进行了描述,架构则为运行对象提供了有组织的环境。因此在构建一系列组件时能够实现设计和一致性。在组件软件的过程中,开发者对软件内部的工作和操作原理不需要进行明确和了解,只需要在外部使用上做足心思,这是一种黑盒式的软件重用。架构则通过继承来实现软件的重用,是一种白盒式的软件重用,两者存在着本质上的差别。研究架构的专家建议应从白盒式逐渐过渡为黑盒式,现在架构的使用非常普遍。结语正在CBD的初期需要对基本的程序组件进行编写,其中花费了工作者大量的时间、金钱和精力,因此在后期逐渐提高了组件的重用率,优势是减少了生产和开发成本,缩减了劳动力,提高了工作效率,同时在修改系统是,只需要对部分相关组件进行修改,而不影响其他部分的使用。同时组件可以实现并行开发的梦想。用户在逐渐对分布计算加深了解之后,开始认识到了系统是在一个空间某处松散结合的服务,在获取服务是不需要了解信息存在于何处。同时基于主机的系统壮行server等计算时,使一个应用程序不再是单片的,而是分离的和相互的。随着软件开发技术的逐渐成熟和发展,CBD技术更加得到重视,作为一名如阿健开发者对于CBD的掌握和关注不可或缺,对于软件开发中遇到的问题,包括软件的质量、开发软件的速度以及开发费用等都可以通过CBD技术寻求良好的解决办法,虽然过渡到CBD的道路存在坎坷,但不可否认的是CBD技术已经成为互谅网且能够发展的必然趋势,具有良好的发展前景。以上就是我们深圳市组创微电子有限公司为您介绍的基于组件的软件开发方法。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
07-17
2020
现代系统设计许多都是由C/C++,Python等高级语言来完成,而且这些系统越来越复杂,涉及到的算法的运算量也越来越大,许多算法需要用硬件实现来满足算法的实时性要求。FPGA是一种可编程的逻辑器件,它具有便于修改,调试,并能并行地完成大量的运算,从而提高算法的实时性,并且随着硬件制造水平不断地提高,FPGA的资源越来越大,工作频率也越来越高,使得能在其上面完成的算法也越来越复杂。但是传统的软硬件分开设计的方法由于软硬件设计者采用不同的设计语言,存在软硬件设计者之间难以沟通导致设计周期长等问题,这种设计方法已不能满足快速地增长的市场要求,如何将这些系统设计中的算法快速转换为相应的硬件来实现,需要新的软硬件协同设计方法。当前基于C/C++的软硬件协同设计,有一个SystemC标准化组织一直致力于这个工作,可以将C/C++算法转换为相应的硬件。Python是一种简单易学并且功能强大的编程语言,有许多算法是由Python来实现,而且这些算法很多是免费、开源的,和C/C++类似需要如何完成基于Python的软硬件协同设计。一、基于Python的软硬件协同设计发展由于Python的强大的软硬件描述能力,近年来许多研究者在Python的软硬件协同设计方面进行了许多研究,其中一种称为MyHDL的Python扩展包来进行软硬件协同设计,采用MyHDL完成了一个接口设计实例。这些开发工具各自具有自己的一些特点,但是他们有一点是相同,就是采用Python来进行软硬件协同设计。下面以MyHDL为例介绍基于Python的软硬件协同设计。二、基于Python的MyHDL包简介MyHDL采用Python扩展包的形式使其能支持硬件设计和仿真并在仿真结果符合要求后可将软件算法自动转换为相应的采用Verilog或VHDL硬件描述,由于MyHDL包是基于Python的硬件扩展,下面主要对MyH⁃DL硬件方面的一些主要特点做简要介绍。1、数据类型:标准Python的int类型已经具有许多硬件设计所需要特征,但是在硬件设计中由于包含许多位操作和处理,MyHDL设计了intbv类,提供索引和切片操作来支持位的操作和处理。2、模块,端口和信号:在MyHDL采用函数来对硬件的模块进行建模,My⁃HDL也有信号对象,类似于VHDL语言的信号,采用信号作为函数的参数来定义模块的端口。3、发生器:发生器是MyHDL的一个关键概念,用来建立并发性模型,对应于Verilog的always块或者VHDL的进程。4、自动转换:在一定限制条件下,MyHDL使用toVerilog()或者toVHDL()函数将MyHDL设计自动转换为相应的Veril⁃og或者VHDL代码,如果符合MyHDL可综合子集的要求,就可使用MyHDL完成可硬件综和的代码并在FPGA上实现。5、仿真:MyHDL通过Cosimulation对象使其能支持仿真,对于自动转换的Verilog代码或者VHDL代码,MyHDL还可作为硬件校验语言来对转换后的Verilog或VHDL进行协同仿真和校验。三、采用MyHDL的硬件设计优点Verilog和VHDL是当前的主流硬件设计语言,但是使用基于Python的MyHDL作为硬件设计也具有许多优点使得其可以作为设计者特别是硬件设计的初学者另外一种较好的选择。1、MyHDL使用成本低:MyHDL是免费的并且开源,在使用MyHDL设计的工具链中同样可以使用大量的免费工具比如ICArus,IVERILOG仿真工具,GTKWAVE查看仿真波形,从而可以减少设计成本。2、在硬件设计中使用先进的软件开发技术:由于Python本身是一种软件开发语言,现代软件开发的先进方法比如快速应用开发,测试驱动开发都在Python上得以体现,由于硬件描述语言的硬件设计和软件开发具有一定的相似性,采用MyHDL可以使用最新的软件开发技术。3、软硬件设计可以采用同样的开发环境:Python是算法实现的一种理想的语言,很多算法都由Python实现,通常算法的软硬件实现由不同工程师来实现,软件工程师使用Python,硬件工程师使用通用的硬件描述语言,例如Verilog或VHDL,硬件工程师和软件工程师之间存在一条鸿沟,而采用MyHDL,就可以在同一个Python环境实现算法设计,仿真和校验。4、其他优点:对于没有一定硬件设计经验的设计者,通常采用Verilog设计会混淆阻塞和非阻塞赋值,不清楚Verilog的符号运算,采用VHDL进行设计又不理解VHDL的信号概念,会觉得VHDL的类型和位宽转换很繁琐,但是如果采用基于Python的MyHDL包作为设计语言,这些都将不成为问题。四、基于Python的软硬件设计流程在现代系统设计中,软件工程师采用Python等高级语言,而硬件系统设计多采用Verilog,VHDL硬件描述语言,在如何将Python描述的软件映射为相应的硬件上,软硬件开发者之间的交流存在一道天然的鸿沟,而采用Py⁃thon来进行软硬件协同设计就可以解决这一个问题,基于Python的软硬件协同设计的流程如图1所示。首先采用Python进行系统设计,然后根据系统性能要求进行软硬件划分,对于系统性能要求比较高的部分采用Python的MyHDL扩展包的形式来由硬件实现,同时采用Python来编写硬件测试平台。测试仿真如果不符合系统设计要求可以重新进行软硬件划分,如果测试仿真结果不正确,可重新修改。仿真通过后可以用MyHDL扩展包自动将Python转换为Verilog代码,这时的Python测试平台无需修改还可以与转换后的Verilog代码一起进行混合仿真,如果仿真通过就可以进行硬件的综合,下载,测试阶段,这与传统的硬件设计过程相同。结语从上面分析可以看出基于Python的MyHDL既是一种软硬件协同设计方法,同时其也是Python的扩展包,使得整个开发过程仅使用一种Python语言,并可以很方便地将一个软件算法快速地转换为其相应的硬件实现,从而完成一个软硬件系统设计。由于Python目前的可综合子集的限制和其本身还处在发展阶段,基于Python的软硬件设计还主要用于系统的建模方面,将其用于芯片设计的应用还不是很多,有研究者比较过MyHDL与传统硬件设计语言的实现,对于小规模的应用优势不是很明显。但是随着现代系统的算法越来越复杂性,系统规模也不断增大,相对于传统的软硬件设计方法采用Python来进行软硬件协同设计的优势就会体现出来,系统设计、仿真、校验的速度会大大提高,采用Python进行系统设计的产品能更快地进入市场。随着基于Python系统设计方法和工具的发展,基于Python的软硬件协同设计方法将会有广泛的应用前景。