当前位置:文档之家› NCV5-二次开发框架技术红皮书

NCV5-二次开发框架技术红皮书

NCV5-二次开发框架技术红皮书
NCV5-二次开发框架技术红皮书

NC二次开发框架技术红皮书

NC 5.0

用友NC-总体设计部,平台技术部

2013-09-23

目录

第一章前言 (1)

第二章身份认证 (2)

1.概述 (2)

2.实现说明 (2)

2.1后台认证接口 (2)

2.2前台预处理接口 (3)

2.3前台认证结果信息接口 (3)

2.4配置工作 (3)

3系统登录身份认证相关包及类 (4)

第三章单点登录方案(V5.0) (6)

1概述 (6)

2过程说明 (6)

3URL格式 (7)

4配置文件 (7)

第四章功能按钮及UI事件扩展方案(V5.011) (8)

1.概述 (8)

2.菜单扩展按钮的相关类 (8)

3.扩展类FuncMenuExtends (9)

4.配置文件funcMenuExtConfig.xml (12)

5.开发过程简介 (13)

5.1编写FuncMenuExtends子类 (13)

5.2在funcMenuExtConfig.xml文件中进行配置 (15)

5.3运行程序 (15)

6.附录:供应链产品按钮扩展 (17)

方案介绍 (17)

支持二次开发按钮扩展功能单据清单(已覆盖全部核心单据) (18)

优劣势分析 (19)

第五章UI界面API的发布规范(V5.02后,仅参考) (20)

1.概述 (20)

2.发布UI-API接口的步骤 (21)

2.1定义接口 (21)

2.2实现接口 (21)

2.3填充配置文件 (22)

2.4提供接口说明文档 (23)

第六章业务组件服务扩展开发(V5.0) (24)

1.概述 (24)

2.财务产品单据组件关键方法扩展接口方案 (24)

2.1收付产品方案 (24)

2.2财务开发部改进 (24)

第七章UAP开发资源(V5.0) (26)

1.UI端环境变量 (26)

2.发送邮件 (27)

3.发送待办消息 (28)

第一章前言

NC作为一个平台化的ERP产品,在提供完整的系统管理和应用功能同时,为满足本地化、行业化甚至是企业化的个性应用,设计了一个开放的实现框架,来满足二次开发过程中对标准应用的扩展、替换。目前,这个框架包含了系统管理安全方案、UI端按钮扩展及事件方法扩展方案、业务组件服务扩展方案三部分,包含的主要内容是一系列的插件接口和API。

这个框架与二次开发产品安装部署方案(详见《NCV5-安装盘配置与升级技术红皮书》有关内容)结合,共同组成了NC二次开发解决方案。这个方案定位于实现3个目标:降低二次开发难度,减少并最终杜绝对标准产品源代码的修改;二次开发产品与标准产品开发和成果部署上的分层隔离;标准产品升级兼容二次开发成果。

NC二次开发解决方案势必在以后版本中持续地完善,目前各详细方案分章节说明如下。需要说明的是,在该框架推出之前,NC也曾基于项目要求提供了一些中间方案,基本情况收录相关章节附录中。这些方案为兼容项目成果还保留,但在新项目二次开发中已经不准使用,并在今后的版本中逐渐取消支持。

注:本文针对二次开发描述也同样适用于行业开发过程中,在标准产品基础上进行的行业定制。

第二章身份认证

1. 概述

NC系统面向高端企业集团ERP应用的产品定位决定了其系统安全的重要性,系统安全性包括登录身份的认证和各种数据的安全。NC系统对数据安全性的处理不在本文描述,本文主要阐述系统登录的身份认证的安全性及认证方式的实现。

NC系统默认的身份认证方式是基于静态密码的认证方式。目前,在身份认证领域,也有许多厂家能提供更为安全可靠的认证方式,如CA认证,动态密码认证。为了提高NC系统本身在登录认证方面的安全性,NC系统提供了一套用于集成第三方认证方式的接口,能够方便地将更为安全的身份认证方式集成到NC系统中,进而加强NC系统在登录时身份认证的安全性。

2. 实现说明

NC系统的身份认证集成接口主要包含:

●后台的认证接口:nc.bs.sm.identityverify.IAMode

●前台的预处理接口:nc.bs.sm.identityverify.IloginPretreatment

●前台的认证结果消息接口:nc.bs.sm.identityverify.IloginResultMessage

一般实现某种身份认证方式即实现上述接口。

2.1后台认证接口

后台的认证接口是实现一个身份认证方式必须要实现的一个接口,不过在实际的代码中,一般都是继承nc.bs.sm.identityverify.AbstractIAMode抽象类,它实现了nc.bs.sm.identityverify.IAMode接口。程序员需要实现verify方法,在该方法中进行用户的身份认证。

int verify(nc.vo.sm.login.LoginSessBean lsb, https://www.doczj.com/doc/2717865135.html,erVO userVO);

参数:

LoginSessBean lsb 主要存储登录用户的一些信息,如用户编码,用户密码,或其他一些信息(可以有LoginSessBean.put()方法和LoginSessBean.get()方法存取)。

UserVO userVO 利用lsb中的公司信息和用户编码信息在数据库中查找到的nc用户对象,包含了nc用户的信息。

返回值int 表示身份认证的结果,如果身份认证成功,请返回nc.vo.sm.login.ILoginResult.LOGIN_LEGALIDENTITY。如果不合法,返回其他自定义的int 值,但是自定义的返回值必须大于200(小于200的返回值分配给系统自己使用)

nc.bs.sm.identityverify.AbstractIAMode类有一个方法是Object getParameter(String key),它的是返回定义在配置文件中的参数,关于配置文件,后面将有描述。

2.2前台预处理接口

前台的预处理接口是在前台运行的,它提供了在调用后台认证功能之前进行一些预处理操作的机会。例如一般在实现某种CA认证方式时,需要从usbkey中读取用户信息,以及对挑战码进行签名的操作等等,并将这些挑战码传输到后台,供身份认证使用,此时即可实现该接口。

该接口定义了一个方法:

void pretreatment(LoginSessBean lsb) throws Exception,在该方法中进行上述的操作,一些需要传输到后台的信息利用lsb传递,例如用户编码,需要利用lsb.setUserCode方式设置。对于其他用于外系统进行认证的数据,如挑战码,应该使用lsb.put方法设置到lsb中,供后台调用

void pretreatment(nc.vo.sm.login.LoginSessBean lsb) throws Exception

参数:LoginSessBean lsb 这里的lsb主要用来存储一些后台认证需要的数据,可以使用lsb 的相关方法进行设置,这个lsb对象将传递给后台的认证方法verify(nc.vo.sm.login.LoginSessBean lsb, https://www.doczj.com/doc/2717865135.html,erVO userVO);中的参数lsb。

异常:出现一些需要终止操作的异常,可以抛出

如果认证方式中不需要前台的预处理过程,可以不实现该接口。

2.3前台认证结果信息接口

前台的认证结果消息接口nc.bs.sm.identityverify.IloginResultMessage的作用主要在于,在我们的认证方法中返回的是int型数据,不能直接反馈给用户,故利用此接口进行认证结果的映射,将int型的认证结果翻译为用户能够理解的文字信息,这些文字信息将提示用户认证失败的原因。

该接口方法定义如下:

String getResultMessage(int intResult);

参数:int intResult 该值由后台认证接口方法返回,

返回值String 返回给用户的对应intResult的提示文字

2.4配置工作

对于代码开发来说,实现上面的接口后,就完成了开发工作。紧接着就是需要进行一些配置工作,即可在NC系统中使用新的身份认证方式。

对于nc3x的版本

配置文件为./ierp/bin/IAConfig.xml,它的一般格式为:(例子)

对于nc5x的版本

配置文件为./ierp/bin/IAConfig.xml,它的一般格式为:(例子)

对于,如果程序中不需要额外的参数配置,可以不需要配置

对于,如果认证方式中不需要前台的预处理过程,也可以不配置该项

对于,如果没有额外的信息返回,也可以不配置该项

3 系统登录身份认证相关包及类

nc.bs.sm.identityverify

|——AbstractIAMode #身份认证方式抽象类,一般实现某种认证方式都要实现该类|——IAConfigFileTool #读写身份认证配置文件的工具类

|——IAConfSetupDlg #和IASetupFrame类一起配置身份认证配置文件

|——IAMode #身份认证方式接口类,由AbstractIAMode实现

|——IAModeFactory #在系统运行时根据身份认证配置文件构造一个认证方式对象

|——IASetupFrame #配置身份认证配置文件的工具

|——IASetupPanel #配置身份认证配置文件

|——StaticPasswordIAMode #系统默认的静态密码认证方式类,它实现了AbstractIAMode

nc.ui.sm.identityverify

|——DefaultLoginPretreatment #默认的登录预处理类

|——IloginPretreatment #登录预处理接口类。凡在登录前需做的工作可实现该类来完成|——>IloginResultMessage #登录返回信息类。根据返回的int值得到string值。

nc.vo.sm.identityverify

|——IAConfigFileVO #对应于身份认证方式配置文件的vo类

|——IAConfVO #对应于一种身份认证方式的vo类

|——IAContext #身份认证上下文类,可以通过该类获取身份认证方式需要的参数|——IAParameterVO #对应于身份认证方式的参数vo类

第三章单点登录方案(V5.0)

1 概述

登录方案示意图如下:

2 过程说明

2.1当客户端用户希望进入NC系统时,首先向外部的认证系统提交请求。

2.2由外部认证系统向nc服务器注册客户端的登录信息,这些信息是nc系统所必需的信息。

可以通过一个随机的键值key来索引登录信息。

2.3客户端将通过该键值来进入nc系统。即客户端将向nc应用服务器提交其键值。nc服

务器将利用该键值从注册中心中获取登录信息(同时注销注册信息)。然后利用这些登录信息登录到NC系统。

2.4超时处理:注册的登录信息有其生命期,超过生命期的注册信息将会被清除。客户端只

能在超时以前登录nc才有效,否则不能进入nc系统。超时的值在配置文件中进行配置

3 URL格式

3.1注册用的URL

外部系统服务器利用此url向nc服务器注册登录信息。

该URL的基本格式为:

http://localhost/service/RegisterServlet?key=111111&usercode=1

注:usercode和key是必须的。key值为注册登录信息的键值,必须保证唯一。

在这个url后面还可以提供一些附加参数

accountcode用于指定登录的账套

pkcorp用于指定登录的公司

workdate用于提供登录日期,默认为NC服务器当前日期

language用于提供登录的语种,默认为简体中文。

height 客户端分辨率的高度值

width 客户端分辨率的宽度值

3.2登录用的URL

外部系统服务器注册完毕后,返回客户端该url,使客户端重定向到该url,实现登录NC http://localhost/login.jsp?key=111111

注:其中key的取值和注册时的值一致

4 配置文件

文件ierp\bin\exterior.xml用于配置在单点登录中能够注册登录信息的主机ip和注册信息的超时值。这些配置都是出于对安全的考虑,因为只有在该文件中配置的主机才能向nc服务器注册登录信息。

exterior.xml的内容为:

192.168.0.1 用于指定可以注册的外部主机ip

10.5.2.* 可以使用*指定某个网段

127.0.0.1

20 用于指定注册信息的生命期,单位为妙

第四章功能按钮及UI事件扩展方案(V5.011)

1. 概述

在具体的项目中,对于已有的产品,往往会有一些新的需求。其中就包含了对已存在的功能节点扩展菜单功能的需求。比如需要在某个节点上增加一些菜单按钮来响应新的功能。在以前的产品中,由于没有对菜单按钮扩展的支持,二次开发的程序员们不得不将产品中的一些相关类的逻辑进行修改来达到要求。但这就给产品的维护和升级带来了问题与麻烦。因此,急切地需要我们的产品中提供对功能节点菜单扩展的支持。以满足在不修改现有代码的情况下,二次开发的程序员们能方便地扩展功能节点的菜单功能。

对于二次开发扩展功能节点菜单按钮的需求,在NC5.011的版本中,我们提供了支持,下面的内容将讲述怎样来扩展功能节点的菜单按钮功能。

2. 菜单扩展按钮的相关类

如上图所示,二次开发的程序员们在扩展菜单按钮时,所需要关心的只有两个东西:

FuncMenuExtends类和funcMenuExtConfig.xml文件。FuncMenuExtends类是一个抽象类,它定义了一些事件回调方法以及一些常用方法;funcMenuExtConfig.xml文件则配置了功能节点和扩展类的匹配关系。

3. 扩展类FuncMenuExtends

FuncMenuExtends类是一个抽象类,全路径名为nc.ui.sf.menuext.FuncMenuExtends,其中定义了许多回调方法,系统将在不同的时机调用相应的方法,另外的一些方法则提供了一些方便的功能,让二次开发的程序员们调用。下面将详细介绍每一个方法:

●postUIInit方法

public void postUIInit()

该方法是在节点刚刚被打开,toftpanel的实例被构建完成后调用的,设置此方法的目的是提供一个机会让二次开发进行一些额外的界面初始化的功能。系统默认为空操作。

●deExtendsAction方法

public abstract void doExtendsAction(ButtonObject bo)

该方法是一个抽象方法,子类必须实现它。它响应扩展按钮(现在一个功能节点上的菜单按钮按照来源分为两种,一种是系统默认定义的那些按钮,我们称为“系统默认按钮”,另外一种是二次开发程序员扩展所增加的那些菜单按钮,我们称其为“扩展按钮”)的点击事件,即当最终用户在节点界面上点击了一个扩展按钮时,系统会回调该方法。通常在该方法类根据不同的按钮实现对应的响应逻辑。

●addExtendsMenus方法

public abstract void addExtendsMenus( ArrayList bos )

该方法是一个抽象方法,子类必须实现它。它主要是实现将扩展按钮增加到功能节点菜单上去的功能。系统在设置功能节点的菜单之前回调该方法,传递的参数为一个ArrayList对象,该对象中包含了系统默认按钮,二次开发程序员只要将扩展按钮增加到这个对象中,即可将扩展按钮增加到界面上。

●preDoneSysDefMenuAction方法

public boolean preDoneSysDefMenuAction( ButtonObject bo )

该方法是在最终用户点击了一个系统默认菜单时,在响应其默认的处理逻辑之前调用的,其返回一个boolean值来确定事件是否继续执行,返回true,将继续执行其默认的处理逻辑以及回调postDoneSysDefMenuAction方法,返回false,将终止事件的执行。一般来说二次开发程序员可以在此方法类增加一些额外的校验逻辑。

●postDoneSysDefMenuAction方法

public void postDoneSysDefMenuAction( ButtonObject bo )

该方法是在最终用户点击了一个系统默认菜单时,在其默认的处理逻辑调用完成之后调用的。一般来说二次开发程序员可以在此方法类作一些额外的界面状态处理,例如可以设置某些扩展按钮的状态。

●getToftPanel方法

public ToftPanel getToftPanel()

该方法返回所对应的ToftPanel实例,以方便二次开发程序员调用ToftPanel上的一些方法,例如获取界面上的某些控件。

●getComponentFromToftPanelByName方法

public Component getComponentFromToftPanelByName(String name)

该方法是根据控件的名称从节点界面(ToftPanel)上获取对应的控件。提供该方法是为了方便二次开发程序员获取节点界面上的某个控件的引用。如果没有找到,返回null值。如果存在多个控件名称相同时,返回第一个找到的控件。

●getComponentsFromToftPanelByClass方法

public Component[] getComponentsFromToftPanelByClass(Class cls)

该方法是根据Class类型从节点界面上获取满足条件的控件。返回值为Component数组。提供该方法可以方便地通过控件的类型获取功能节点界面上的空间引用。如果没有找到,返回长度为0的数组。

●getButtonObjectByCode方法

public ButtonObject getButtonObjectByCode(String code)

该方法是根据菜单按钮的编码来获取菜单按钮BO的实例引用,如果没有找到,返回null 值。例如在需要对一个BO设置状态时使用。

●updateButton方法

public void updateButton(ButtonObject bo)

该方法提供更新某个菜单按钮界面状态的功能。一般在设置了ButtonObject对象的状态后,都需要调用该方法来通知界面更新状态。

●updateButtons方法

public void updateButtons()

该方法提供更新所有菜单按钮界面状态的功能。一般在需要通知界面更新所有菜单按钮状态时调用此方法。

●lookup( String interfaceClassName )

public Object lookup(String interfaceClassName)

功能节点对二次开发提供的api是通过接口提供的,通过该方法,可以获取一个对应接口的实现类实例,以便于二次开发程序员调用功能节点的API。如果没有找到,返回null。

●mouseClicked方法

public void mouseClicked(MouseEvent e)

在ToftPanel界面上某个控件发生了鼠标点击事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●mousePressed方法

public void mousePressed(MouseEvent e)

在ToftPanel界面上某个控件发生了鼠标按下事件时,系统将会回调该方法。子类应该根据

事件源来分别处理。

●mouseReleased方法

public void mouseReleased(MouseEvent e)

在ToftPanel界面上某个控件发生了鼠标释放事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●mouseEntered方法

public void mouseEntered(MouseEvent e)

在ToftPanel界面上某个控件发生了鼠标进入事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●mouseExited方法

public void mouseExited(MouseEvent e)

在ToftPanel界面上某个控件发生了鼠标退出事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●mouseDragged方法

public void mouseDragged(MouseEvent e)

在ToftPanel界面上某个控件发生了鼠标拖动事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●mouseMoved方法

public void mouseMoved(MouseEvent e)

在ToftPanel界面上某个控件发生了鼠标移动事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●keyTyped方法

public void keyTyped(KeyEvent e)

在ToftPanel界面上某个控件发生了键盘键入事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●keyPressed方法

public void keyPressed(KeyEvent e)

在ToftPanel界面上某个控件发生了键盘按下事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●keyReleased方法

public void keyReleased(KeyEvent e)

在ToftPanel界面上某个控件发生了键盘释放事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

●focusGained方法

public void focusGained(FocusEvent e)

在ToftPanel界面上某个控件发生了焦点获取事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

focusLost方法

public void focusLost(FocusEvent e)

在ToftPanel界面上某个控件发生了焦点丢失事件时,系统将会回调该方法。子类应该根据事件源来分别处理。

4. 配置文件funcMenuExtConfig.xml

funcMenuExtConfig.xml文件位于NC系统安装目录的ierp/ext/目录下。通过它可以为一个功能节点配置一个或者多个菜单按钮扩展实现类,一个功能节点和其菜单按钮扩展类是通过他们的类全路径或者功能节点编码关联上的。其大致格式如下:

5. 开发过程简介

综上所述,功能节点菜单按钮扩展的开发步骤比较简单,只需要继承FuncMenuExtends 类,并将该类在funcMenuExtConfig.xml 文件中进行配置,下面我们将通过一个具体的例子来说明怎样进行功能节点菜单按钮扩展的开发。我们将以公司目录节点来说明开发过程。

5.1 编写FuncMenuExtends 子类

我们在开发环境中新建一个类叫做nc.ui.menuext.CorpTree 。该类继承了FuncMenuExtends 类。

我们将扩展出三个菜单按钮,因此声名了三个ButtonObject 实例,bo3按钮将作为bo2的子菜单出现

我们将把bo1,bo2按钮放到顶级, 因此需要实现addExtendsMenus 方法。

这里也可以通过ArrayList .add(index, element)

方法将按钮添加到指定的位置,或者先找到

某个有下拉菜单的按钮,将扩展的按钮添加到它的下面去

对于增加的这几个扩展按钮的事件响应,我们应该通过实现doExtendsAction方法来实现。

到目前为止,扩展的按钮已经被增加到节点的菜单上并且可以响应事件了,主要的功能已经完成了。

下面我们需要实现这样一个功能,就是当用户在公司目录树上选择了树根时,bo1不可用,当选择了公司时才可用。想要实现这个功能,我们需要监听用户鼠标点击事件和获得公司目录树控件,对于监听用户鼠标点击事件,我们只需要实现mouseClicked方法即可。至于如何获取节点界面上控件引用的方法,我们最好区分一些情况分别对待。在一般情况下我们最好是通过调用功能节点提供的uiapi接口来获取界面上控件的引用或数据,这样是最安全的方法。另外,FuncMenuExtends类还提供了两个较为实用的方法让我们可以简单地获取到节点上的控件引用,它们是getComponentFromToftPanelByName和getComponentsFromToftPanelByClass方法,前面对它们有详细介绍。在公司目录这个节点上,由于界面相对简单,在该节点的程序员没有提供可以直接调用的方法时,我们可以通过这两个方法来获取公司目录树控件的引用,例如,由于该节点上就只有一个树控件,那么通过调用getComponentsFromToftPanelByClass方法就可以轻松地得到公司目录树控件的引用。

5.2在funcMenuExtConfig.xml文件中进行配置

在代码编写完成后,我们就需要在funcMenuExtConfig.xml文件中进行配置了,公司目录的toftpanel子类类名为nc.ui.bd.CorpTreePanel,我们扩展的类名称为nc.ui.menuext.CorpTree,则配置如下所示:

5.3运行程序

在上述工作完成后,我们就可以启动NC服务器中间件,然后登录进去查看效果了。如下列图所示:

选中根节点时的效果

选中公司节点的效果:

点击bo1按钮的效果:

点击bo3按钮的效果:

6. 附录:供应链产品按钮扩展

面对二次开发项目对于按钮添加的集中需求,加强对产业链发展的支持,SCM产品在NCV31sp1推出了一个中间方案,实现了全部核心单据支持二次开发按钮扩展的功能。

方案介绍

●首先,SCM设计了一个接口类nc.ui.scm.pub.bill.IBillExtendFun,来完成扩展按钮的

添加、状态控制、相关方法的绑定,方法如下:

/**

* 获取扩展按钮数组。修改现有ui类,调用getExtendBtns()将获取的按钮加入按钮组。

*/

public abstract nc.ui.pub.ButtonObject[] getExtendBtns();

/**

* 控制扩展按钮的事件。在onButtonClick中最后此方法。

*/

public abstract void onExtendBtnsClick(nc.ui.pub.ButtonObject bo);

/**

* 控制扩展按钮状态。需要在setState方法注释中说明单据状态的取值。

*/

public abstract void setExtendBtnsStat(int iState);

●二次开发人员需要开发一个新的界面类,新类只需继承节点UI类,重写

nc.ui.scm.pub.bill.IBillExtendFun的接口方法就能实现增加新按钮的功能。

●最后,需要把“客户化/二次开发工具/系统管理工具/功能注册”相应功能节点中的

“对应文件名或控件名”修改为新类名。

软件项目技术开发合同

合同登记编号: 技术合同开发 项目名称: 委托人(甲方): 研究开发人(乙方): 签订地点:xxxxxx 签订时间:xxxx年xx月xx日 有效期限:xxxx年xx月xx日至xxxx年x月xx日 xxx技术市场管理办公室

根据《中华人民共和国合同法》的规定,合同双方就xxxxx系统项目的技术开发,经协商一致,签定本合同。 一、标的技术的内容、范围及要求: 根据甲方的要求,乙方完成西安火车站售票系统的研制开发。 1.根据甲方要求进行系统方案设计,要求建立B/S结构的,基于的Sqlserver数据库、NT 服务器和J2EE技术的三层架构体系的综合服务软件系统。 2.配合甲方,在于整体系统相融合的基础上,建立系统建立的软硬件环境。 3.具体需求见SOW 二、应达到的技术指标和参数 1.系统应满足并行登陆,并行查询的速度要求。其中主要内容包括(1)保证xx人以上可以同时登陆系统(2)所有查询速度应在xx秒之内(3)保证数据的每周备份(4)工作日期间不能当机(5)出现问题应在xx分钟内恢复。 2.系统的主要功能是满足双方认可的需求规格,不可以随意改动。 三、研究开发计划 1.第一间断:乙方在合同签订后xx个工作日内,完成合同内容的系统设计方案。 2.第二阶段:完成第一阶段的系统设计方案之后,乙方于xx个工作日内完成系统基本功能的开发。 3.第三阶段:完成第一和第二阶段的任务之后,由甲方配合乙方于xx个工作日内完成系统在西安火车站信息中心的调试、集成。 四、研究开发经费、报酬及其支付或结算方式 1.研究开发经费是指完成本项目研究开发工作所需的成本。报酬指本项目开发成果的使 用费和研究开发人员的研究补贴。 2.部项目研究开发经费和报酬(人民币大写):xxx元整。 3.支付方式:分期支付。 本合同签订之日起生效,甲方在五个工作日内应支付乙方合同总金额的xx%,计人民币xxx元(人民币大写xxx元整),验收后加分那个在五个工作日内付清全部合同余款,计人民币xxx元(人民币大写柒万伍千元整)。 五、利用研究开发经费购置的设备、器材、资料的财产权属: 本合同签订之日起,在项目结束之时,凡是关于本项目开发所购置的设备、器材在合同结束后归乙方所有,但是项目所涉及的资料归甲方所有,知识产权归甲方。 六、履行的期限、地点和方式 本合同自xxx年x月x日至xxxx年xx月xx日在西安履行。 本合同的履行方式: 甲方责任 1.甲方权利协助乙方完成合同内容。 2.合同期内甲方为乙方提供专业性接口技术支持。 乙方责任: 1.乙方按甲方要求完成合同内容。 2.乙方愿提供在实现功能的前提下,进一步予以完善。 3.乙方在合同商定的时间内保证系统正常运行。 4.乙方在项目验收后提供一年免费维护。 5.未经甲方同意,乙方在两年内不得向第三方提供本系统中涉及专业的技术内容和所有的系统数据。 七、技术情报和资料的保密

移动应用开发框架(WADE-Mobile).

移动应用开发专题二创新周报总第172期 框架为桥,天堑变通途 ——移动应用开发框架(WADE-Mobile 参与过早期J2EE WEB开发的同事一定记忆犹新,大多数程序员都刚刚从传统的PB、Delphi等 C/S模式应用开发中转型过来,不再是单一的编程语言,也缺少统一的集成开发环境(IDE,满眼尽 是从前端(JSP、HTML、Javascript到后端(Java、HTTP、WSDL、DB数量众多、纷繁复杂的全新面孔。 混乱过一阵子后,开源和定制开发框架逐渐兴起,技术门槛高、开发效率低的糟糕境况才得以好转。 今天,移动应用开发又将我们拉回到这似曾相识的境地。云计算、移动互联网大势所趋,HTML5、CSS3 新技术闪亮齐登场。Apple iOS、Google Android、Windows Phone、OMS(中国移动OPhone、Linux(中 国联通沃Phone等平台之争,Objective-C、Java、C/C++各种语言伴随着陆。Apple xCode、Google Android Development Tools (ADT、中国移动Open Mobile System Development Tools (ODT、Microsoft Visual Studio 2008等各种开发环境跟着乱象纷呈。我们会不会再次回到混沌之初,期 待盘古重开天地呢?答案是否定的,请看下面关于《移动应用开发框架(WADE-Mobile》的详细介绍。

WADE移动应用开发框架(简称WADE-Mobile基于最新的WEB技术(HTML5、CSS3,并结合面向各 种操作系统、移动设备的专用APP壳,可广泛用于各种企业场景的移动应用开发,能够有效降低技术 门槛、提高开发效率、保证产品质量和保障信息安全。 适用场景 WADE-Mobile适用于公司内部各部门移动应用产品研发和项目实施,包括满足运营商业务支撑系 统向移动设备终端的延伸需求,以及面向更为广阔的移动互联网领域,开发公众使用的移动应用产品。 在运营商业务支撑系统方面,已知能够适用的一些需求包括:中国移动集团规范(NGBOSS-CRM3多OP 管理分册G3版工作台部分、广东移动G3版CRM手机客户端解决方案、中国移动集团公司统一积分 商城、上海移动WLAN登录、江苏电信掌上BOSS等。在移动互联网方面,可以支持的移动设备操作系 统包括:Apple iOS,开发使用Objective-C程序语言和xCode集成开发环境;Google Android,开 发使用Java程序语言和Eclipse集成开发环境,包含Android Development Tools (ADT插件包; 中国移动Open Mobile System (OMS,程序语言和开发环境同谷歌类似,不同的是插件包为OMS Development Tools (ODT;中国联通沃PHONE,国产Linux

软件技术开发合同协议书范本详细版

编号: _____________ 软件技术开发合同 甲方: _______________________ 乙方: _______________________ 签订日期: ___ 年____ 月_____ 日 第1 页共11 页

说明: 一、本合同为中华人民共和国科学技术部印制的技术开发(委托)合同示范文本,各技术合同登记机构可推介技术合同当事人参照使用。 二、本合同书适用于一方当事人委托另一方当事人进行新技术、新产品、新工艺、新材料或者新品种及其系统的研究开发所订立的技术开发合同。 三、签约一方为多个当事人的,可按各自在合同关系中的作用等,在“委托方”、“受托方” 项下(增页)分别排列为共同委托人或共同受托人。 四、本合同书未尽事项,可由当事人附页另行约定,并可作为本合同的组成部分。 五、当事人使用本合同书时约定无需填写的条款,应在该条款处注明“无”等字样。 委托方(甲方):_____________________________________________ 住所地:_______________________________________________________ 法定代表人:___________________________________________________ 项目联系人:____________________________________________________ 联系方式:_____________________________________________________ 通讯地址:______________________________________________________ 电话:____________________ 传真:_____________________________ 电子信箱:______________________________________________________ 受托方(乙方):_____________________________________________ 住所地:_______________________________________________________ 法定代表人:___________________________________________________ 项目联系人:____________________________________________________ 联系方式:_____________________________________________________ 通讯地址:______________________________________________________ 电话:_______________________ 传真: __________________________ 电子信箱:______________________________________________________

Android开发实战中常用安卓开发框架

Android是基于Linux平台的开源移动操作系统,主要适用于移动设备,如智能手机和平板电脑(当然现在已经适用车控应用了),由Google公司和开放手机联盟领导及开发。不完全统计,Android平台手机的全球市场份额已经达到80%,本文介绍了android开发者实战中最喜欢使用的几种Android开发框架。 1) Corona SDK Corona SDK是一个跨平台技术的工具,它利用Lua开发脚本,从一个特定的移动操作系统开发应用。应用程序可以在模拟器中测试,然后编译为Android的本机代码。同时Corona SDK 还支持与Map、Facebook、OpenFient、GameCenter的集成。然而在编译项目时,程序员需要把代码上传到Corona的服务器上去编译,不能在本地直接编译。 2) Phonegap Phonegap是一款开源的开发框架,旨在让开发者使用HTML、Java、CSS等Web APIs开发跨平台的移动应用程序。它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等,也可以和DW5.5及以上版本配套开发。使用PhoneGap比为每个平台分别建立应用程序稍好一些,因为虽然基本代码是一样的,但是程序员仍然需要为每个平台分别编译应用程序。 3) Xamarin Xamarin 始创于2011年,旨在使移动开发变得难以置信地迅捷和简单。Xamarin的产品简化了针对多种平台的应用开发,包括iOS、Android、Windows Phone和Mac App。Xamarin 由许多著名的开源社区开发者创立和参与,而且也是Mono项目的主导者——C#与?NET框架的开源、跨平台实现。 而这其中Xamarin Studio就是一个用C#语言开发跨平台应用的集成开发环境,它和iOS 以及Android SDK紧密整合。Xamarin Studio提供了很多现代开发所需功能,包括代码完成、调试器、打包和发布应用(支持通过TestFlight发布应用程序)。对于Android,Xamarin还包含了自己的UI生成器(对于iOS,则使用苹果Xcode的UI生成器),此外还集成了Git和Subversion。Android开发者可以使用Xamarin Studio在模拟器和真机上对移动应用进行测试和bug调试。 4) Sencha Touch 2 Sencha Touch是由Sencha公司开发的移动Web应用开发框架,用以提升主流移动设备在浏览器上的触碰操作,增强用户体验。该框架以久负盛名的Ext JS富客户端框架为基础,并支持最新的HTML5及CSS3标准,与流行的Apple iOS和Andriod设备兼容。一方面,它以Webkit浏览器引擎为基础,提供了出色的性能和用户体验;另一方面,它提供了基于GPL V3许可的开源版本和详尽的API文档,体现了良好的开放性和易用性。因此,该框架可帮助移动应用开发人员提升开发效率,从而创造出更多富有创意的移动应用。 5) Appcelerator Appcelerator是一个构建基于SOA的RIA应用的全集成平台,用来构建富应用、交互式的网站和应用程序。Appcelerator应用的语言——Web Expression Language,是一种对HTML 的扩展,它采用直观、声明的方法来构建动态的web应用。

软件技术委托开发协议书范本

合同订立原则 平等原则: 根据《中华人民共和国合同法》第三条:“合同当事人的法律地位平等,一方不得将自己的意志强加给另一方”的规定,平等原则是指地位平等的合同当事人,在充分协商达成一致意思表示的前提下订立合同的原则。这一原则包括三方面内容:①合同当事人的法律地位一律平等。不论所有制性质,也不问单位大小和经济实力的强弱,其地位都是平等的。②合同中的权利义务对等。当事人所取得财产、劳务或工作成果与其履行的义务大体相当;要求一方不得无偿占有另一方的财产,侵犯他人权益;要求禁止平调和无偿调拨。③合同当事人必须就合同条款充分协商,取得一致,合同才能成立。任何一方都不得凌驾于另一方之上,不得把自己的意志强加给另一方,更不得以强迫命令、胁迫等手段签订合同。 自愿原则: 根据《中华人民共和国合同法》第四条:“当事人依法享有自愿订立合同的权利,任何单位和个人不得非法干预”的规定,民事活动除法律强制性的规定外,由当事人自愿约定。包括:第一,订不订立合同自愿;第二,与谁订合同自愿,;第三,合同内容由当事人在不违法的情况下自愿约定;第四,当事人可以协议补充、变更有关内容;第五,双方也可以协议解除合同;第六,可以自由约定违约责任,在发生争议时,当事人可以自愿选择解决争议的方式。 公平原则: 根据《中华人民共和国合同法》第五条:“当事人应当遵循公平原则确定各方的权利和义务”的规定,公平原则要求合同双方当事人之间的权利义务要公平合理具体包括:第一,在订立合同时,要根据公平原则确定双方的权利和义务;第二,根据公平原则确定风险的合理分配;第三,根据公平原则确定违约责任。诚实信用原则: 根据《中华人民共和国合同法》第六条:“当事人行使权利、履行义务应当遵循诚实信用原则”的规定,诚实信用原则要求当事人在订立合同的全过程中,都要诚实,讲信用,不得有欺诈或其他违背诚实信用的行为。

11个有用的移动网页开发App和HTML5框架

11个有用的移动网页开发App和HTML5框架 在过去的两年里,触屏设备飞速增长。iOS和Android设备让开发者和设计师开始重新思考他们的网页应用,以提供更好的触屏体验。 移动Web应用相对于本地的App有很多优势,虽然也有很多设计和开发上的挑战。这里列出了一系列有用的框架来帮助基于HTML的WebApp开发。他们支持大部分流行的智能手机和平板。 1. Lungo.js:HTML5 移动开发框架 Lungo.js是第一个应用HTML5和CSS3特性的移动开发框架。它可以帮助开发者创建iOS、Android、Blackberry和WebOS平台的应用。 Lungo.js不需要任何Web服务器的支持就能帮助用户实现HTML5的功能,例如WebSQL、Geolocation、History、Device orientation等等。 2. JO:一个简单的HTML5 App框架 JO可以帮助你创建类似本地应用的WebApp。JO是一个开源的免费框架,可以和PhoneGap一起使用。 3. Joshfire:跨设备的开发框架 Joshfire是一个开源的跨设备开发框架,帮助开发者创建可以在多种设备上运行的WebApp。它使用HTML5和JavaScript,并且允许开发者快速整合本地应用和特定的Web应用。 Joshfire可以让你的应用接受键盘、鼠标、触摸屏、遥控器等设备的输入。Joshfire支持Node.JS。 4. Sencha Touch:基于HTML5的移动网页开发框架

Sencha touch可以让开发者创建类似本地应用体验的WebApp。Shencha是第一个使用HTML5、CSS和JavaScript并且支持音频/视频、本地存储、圆角、渐变背景以及阴影的开发框架。 5. Baker:HTML5 电子书框架 Baker是用来在iPad或者iPhone平台上发布交互式的电子书或者电子杂志的HTML5电子书框架。 6. Touchy Boilerplate Touchy Boilerplate是一个用来创建移动WebApp,包括HTML模板、Meta tag等的工具。Touchy 可以支持动态页面导航、固定页头、滚动内容、浏览历史记录等功能。Touchy使用jQuery 或者Zepto.JS。 7. Ripple:让移动开发测试更容易 在不同的平台上测试移动应用是一件令人头疼的事情。Ripple可以帮助你在不同的平台上测试并且调试你的HTML5移动应用。Ripple是一个chrome的扩展。它可以模拟每个设备的详细信息,例如user_Agent、Geolocation等等。 8. RestKit Restkit是一个objective-c的开发框架,目的是简化并加快与Restful的Web service交互。它提供了一个简洁的HTTP request/response API和一个强大的对象映射系统。 9. HTML5 兼容性表格 Mobile HTML5是一个表格,显示了不同设备/平台对HTML5特性的支持情况。包括Safari、Android、Blackberry、IE、Opera、Firefox、WebOS和Symbian。

移动端混合开发框架分析

移动端架构分析 目录 移动端架构分析 (1) 1移动端常见开发模式 (5) 1.1纯N ATIVE A PP (5) 1.1.1主流框架 (5) 1.1.2优势 (6) 1.1.3劣势 (6) 1.1.4主流应用 (6) 1.2H YBRID A PP (6) 1.2.1多View混合型 (7) 1.2.1.1主流框架 (7) 1.2.1.2优势 (7) 1.2.1.3劣势 (7) 1.2.1.4主流应用 (7) 1.2.1.5发展趋势 (7) 1.2.2Web主体型 (8) 1.2.2.1主流框架平台 (8) 1.2.2.2优势 (9) 1.2.2.3劣势 (9)

1.2.2.5发展趋势 (10) 1.2.3单View混合型 (10) 1.2.3.1主流框架 (10) 1.2.3.2优势 (10) 1.2.3.3劣势 (10) 1.2.3.4主流应用 (10) 1.3W EB A PP (10) 1.3.1主流框架 (11) 1.3.2优势 (11) 1.3.3劣势 (11) 1.3.4主流应用 (11) 1.4四种主要开发模式对比 (11) 2移动前端主流框架分析 (12) 2.1W EB和N ATIVE混合 (12) 2.1.1WindVane+Hybrid+Native (12) 2.1.1.1简介 (12) 2.1.1.2框架实现 (12) 2.1.1.3架构图 (13) 2.1.2AppCan (13) 2.1.2.1简介 (13) 2.1.2.2框架实现 (13)

2.2跨平台原生应用 (15) 2.2.1BeeFramework (15) 2.2.1.1简介 (15) 2.2.1.2框架实现 (15) 2.2.1.3架构图 (16) 2.2.2Native Script (17) 2.2.2.1简介 (17) 2.2.2.2框架实现 (17) 2.2.2.3结构图 (18) 2.2.3React Native (18) 2.2.3.1简介 (18) 2.2.3.2框架实现 (18) 2.2.3.3架构图 (20) 3数梦移动端开发框架选择..................................... 错误!未定义书签。 3.1开发模式选择 (20) 3.1.1为什么不选择Native (20) 3.1.2玩什么不选择WebApp或Web主体型Hybird (21) 3.1.3选择多页面混合型Hybird (21) 3.2选择类W IND V ANE框架 (21) 3.2.1玩什么不选择React Native (21) 3.2.2玩什么选择类WindVane框架 (21)

软件开发合同

软件开发合同 软件开发合同 合同编号:____________ 甲方:_______________________________ 法定住址:___________________________ 法定代表人:_________________________ 职务:_______________________________ 委托代理人:_________________________ 身份证号码:_________________________ 通讯地址:___________________________ 邮政编码:___________________________ 联系人:_____________________________ 电话:_______________________________ 电挂:_______________________________ 传真:_______________________________ 帐号:_______________________________ 电子信箱:___________________________ 乙方:_______________________________ 法定住址:___________________________ 法定代表人:_________________________ 职务:_______________________________ 委托代理人:_________________________ 身份证号码:_________________________ 通讯地址:___________________________ 邮政编码:___________________________ 联系人:_____________________________ 电话:_______________________________ 电挂:____________________________ __ 传真:_______________________________ 帐号:_______________________________ 电子信箱:___________________________ 鉴于甲方有意委托乙方开发用于_________(财务、经营管理等业务)的计算机信息化系统软件,双方特依据《中华人民共和国合同法》及相关的法律法规之规定,在自愿、平等、互利互惠、协商一致的基础上,双方达成如下协议: 第一条定义 1.“软件”包括“软件系统”,除另有指明外,指描述于本合同附件 _________中的在本合同履行期内所开发和提供的当前和将来的软件版本,包括乙方为履行本合同所开发和提供的软件版本和相关的文件。 2.“可交付件”指附件中指定的由乙方所交付的软件,包括源代码、安装盘、技术文档、用户指南、操作手册、安装指南和测试报告等。 3.“交付”指乙方在双方规定的日期内交付约定开发的软件的行为。但是乙方完成交付行为,并不意味着乙方已经完成了本合同项下所规定的所有义务。

Android移动应用架构设计

Android 移动应用架构设计

随着新技术的引入,及编写原生Android 代码的技能不断提升,我们开始思索如何去解锁移动应用新架构,也就是Growth 5.0。 我们尝试使用了Kotlin + React Native + Dore + WebView 搭建了一个简单的Android 移动应用模板。为了尝试解决Growth 3.0+ 出现的一系列问题:启动速度慢、架构复杂等等的问题。 作为Architecture 练习计划的一部分,我们将采用规范一些的叙述方式来展开。 1.业务架构 2.技术远景 3.方案对比 4.架构设计方案 5.持续集成设计 6.测试策略 7.架构实施 即下图:

技术架构设计之路 业务架构 技术是为了解决业务的问题而产生的。 脱离了业务,技术就没有了存在的前提。脱离了业务的架构不叫“架构”,而叫刷流氓,又或者是画大饼。业务由于其本身拥有其特定的技术场景,往往是对技术决策影响最大的部分。 因此,开始之前让我们先了解一些业务,这里以Growth 为例。 Growth 的价值定位是:带你成为顶尖开发者。

复杂一点的说明就是:Growth提供编程学习服务使用Web开发路线帮助新手Web 程序员解决Web 学习路径问题。 让我们来看一下,更复杂一些的说明(电梯演讲): 在原有的业务架构下,我们拥有Growth、探索、社区、练习四个核心业务,以及用户中心的功能。 o Growth(首页),即带有详细介绍的Web 应用的生命周期,能帮助开发者理解Web 应用的构建流程。

o探索,以辅助开发者了解Web 应用方方面面的知识,如常用工具、练手项目、技能测验、读书路线等等。 o练习,通过这些练习项目,来帮助开发者更好的掌握知识。 o社区,一个简易的论坛。 o用户中心,一些用户的收藏数据、应用相关的设置等等。 这就是业务上的主要架构,接下来让我们看看技术上的事务。 技术远景 远景,即想象中未来的远大景象。技术远景,即想象中未来的技术方面的远大景象。 在上一节中,我们介绍的是项目的业务远景。而作为一个技术人员,在一个项目里,我们也已经创建自己的技术远景。一来,我们可以创建出可持续演进的架构;二来,可以满足个人的技能需求。 以Growth 为例,我的最基本的技术需求是:提升自身的能力。然后才是一个跨平台的技术设施——减少构建时间。 从Growth 1.0、Growth 2.0 采用的Ionic,到Growth 3.0 采用的React Native,它都优先采用新的技术来帮助自己成长,并使用了跨平台的移动应用开发框架。而这几个不同的版本里,也拥有其对应的不同技术问题 o Growth 1.0 主要是Angular 1.x 的跳崖式升级,使之变成不可维护的系统。 o Growth 2.0 则是Angular 2.x 那庞大的构建体积,带来了启动时间慢的问题。 o Growth 3.0 则是,React Native 生成的 index.android.bundle 文件有3.1M,这个体积相当的大,以至于即使在高通的骁龙835 处理器上,也需要4~5 秒的打开时间。

软件开发技术服务合同模板

项目号:XXX合同编号:XXX技术服务合同 项目名称: 委托方(甲方): 受托方(乙方): 年月日2015签订时间: 市XX 签订地点:省XX 有效期限:三年 印制XXXX. 填写说明 一、本合同示范文本适用于智能化、信息化项目。 二、本合同书适用于一方当事人(受托方)为另一方(委托方)就特定技术项目提供可行性论证、技术预测、专题技术调查、分析评价报告所订立的合同。三、签约一方为多个当事人的,可按各自在合同关系中的作用等,在“委托方”、“受托方”项下(增页)分别排列为共同委托人或共同受托人。

四、本合同书未尽事项,可由当事人附页另行约定,并作为本合同的组成部分。 五、当事人使用本合同书时约定无需填写的条款,应在该条款处注明“无”等字样。 六、合同文本最后页的“认定事项”部分,由技术合同认定登记部门填写并加盖公章,作为技术合同认定登记的凭证。 七、合同文本要求按规定格式打印,大小为A4幅面(高297毫米,宽210毫米),竖装。左边为装订边,正文内容所用字型应不小于5号字,合同正本中所涉及与本合同约定事项有关的技术资料及其指定附件备齐后应合装成册,其规格大小应与合同书一致。 八、本填写说明不作为合同的构成部分,不具备法律效力。 技术服务合同 委托方(甲方):XXXX 住所地:XXXX 法定代表人:XX 项目经办人:XX 项目联系人:XX XXXXX 联系方式:XXXXXXX

通讯地址:传真:XXXXX 电话:XXXXX 电子信箱: XXXXX :受托方(乙方)住所地:XXXXX 法定代表人:XXXXX 项目经办人:XXXXX XXXXX 项目联系人: XXXXX 联系方式:XXXXX 通讯地址:传真:XXXXX 电话:XXXXX XXXXX 电子信箱: 本合同甲方委托乙方就XXXX 项目进行技术服务,并支付服务报酬。根据2015年3月26日招标的结果(招标编号:XXXXX),以招标文件和投标文件为基础,双方经过平等协商,在真实、充分地表达各自意愿的基础上,根据《中华人民共和国合同法》的规定,达成如下协议,并由双方共同恪守。 第一条组成本合同的文件及优先解释顺序如下: (一)本合同书; (二)中标通知书;

逻辑框架法

逻辑框架法 逻辑框架法(logical framework approach,LFA) [编辑] 什么是逻辑框架法 逻辑框架法(LFA)是由美国国际开发署(USAID)在1970年开发并使用的一种设计、计划和评价的方法。目前有三分之二的国际组织把它作为援助项目的计划、管理和评价方法。 这种方法从确定待解决的核心问题入手,向上逐级展开,得到其影响及后果,向下逐层推演找出其引起的原因,得到所谓的“问题树”。将问题树进行转换,即将问题树描述的因果关系转换为相应的手段---目标关系,得到所谓的目标树。目标树得到之后,进一步的工作要通过“规划矩阵”来完成。如下表所示:

如上表所示,规划矩阵是一个4×4矩阵,矩阵自下而上的四行分别代表项目的投入、产出、目的和目标的四个层次;自左而右4列则分别为各层次目标文字叙述、定量化指标、指标的验证方法和实现该目标的必要外部条件。目标树对应于规划矩阵的第一列,进一步分析填满其他列后,可以使分析者对项目的全貌有一个非常清晰的认识。 [编辑] 逻辑框架法的目标层次及逻辑关系 [编辑] 逻辑框架法的目标层次 逻辑框架汇总了项目实施活动的全部要素,并按宏观目标、具体目标、产出成果和投入的层次归纳了投资项目的目标及其因果关系。 1)宏观目标 项目的宏观目标即宏观计划、规划、政策和方针等所指向的目标,该目标可通过几个方面的因素来实现。宏观目标一般超越了项目的范畴,是指国家、地区、部门或投资组织的整体目标。这个层次目标的确定和指标的选择一般由国家或行业部门选定,一般要与国家发展目标相联系,并符合国家产业政策、行业规划等的要求。 2)具体目标 具体目标也叫直接目标,是指项目的直接效果,是项目立项的重要依据,一般应考虑项目为受益目标群体带来的效果,主要是社会和经济方面的成果和作用。这个层次的目标由项目实施机构和独立的评价机构来确定,目标的实现由项目本身的因素来确定。

软件技术开发合同样本

编号:_____________ 软件技术开发合同 甲方:___________________________ 乙方:___________________________ 签订日期:_______年______月______日

(甲方):xxxx有限公司 (乙方):xxxx公司 一、合同标题 乙方同意委托甲方开发XX统软件_项目。甲方愿意承接乙方上述开发项目,并保证按时、按质地完成开发任务。 二、甲方的权利和义务 1.1鉴于业务在甲、乙双方之间进行,甲方不与乙方客户发生直接经济往来。1.2甲方负责DL产品提供和技术支持。在保修期半年后甲方到乙方及其客户上门服务所有费用由乙方支付。 1.3对于乙方与其客户之间除涉及DL产品技术以外的纠纷、争议、损失、侵权、违约责任等,均由乙方与客户自行解决;甲方不介入,也不对客户的任何损失负责。 1.4甲方在乙方搭建后台硬件的平台上,负责培训乙方的技术人员。 1.5甲方负责乙方后台管理软件安装和两个娱乐场所的集成工作。 1.6甲方负责提供表1所列的DL产品。 三、乙方的权利和义务 乙方应提供软件开发的详细的功能需求文档,并由甲乙签字确认,并存档,做为项目以后的验收标准。 2.3乙方按照要求负责落实公安要求的一切硬件设施。 2.4 乙方负责场所前台软、硬件的安装。 2.5乙方负责场所和人员信息采集工作。 2.6乙方负责从业人员IC卡信息的写入及信息卡的制作工作。

2.7乙方负责系统的维护工作。 2.8乙方由下列行为之一的,要承担违约责任: 2.8.1从甲方以外的第三方购买表1 DL产品的。 2.8.2在协议有效期内,乙方向与甲方构成商业竞争关系的企业、商业机构、组织或个人提供DL产品技术等一切相关信息或者资料的。 四、合同额及支付方式: 1、合同总额: xxxx 元(人民币大写:xxxx万元整) 支付方:乙方 合同额明细如下: 软件费: 系统集成费: 培训费: 2、支付方式: 第一期:合同生效一周内支付合同总额25%, 即:元(人民币大写:)第二期:应用系统试运行后一周内支付合同总额55%, 即:元(人民币大写:)第三期:应用系统验收三个月内支付合同总额20% 即:元(人民币大写:) 七、验收标准和方式: 系统验收:由甲乙双方根据合同内容、需求分析、技术协议内容进行验收,

软件开发技术合同书

软件开发合同书项目名称:北京市崇文区干部教育培训信息网

甲方名称:北京市崇文区组织部 乙方名称:北京翔宇网科信息技术有限公司 二00五年四月 甲方委托乙方开发“北京市崇文区干部教育培训信息网”项目,详细内容如下: 一、项目内容、形式、要求及提交方式 1、“北京市崇文区干部教育培训信息网”项目内容、形式。 随着首都社会经济的飞速发展,肩负全区工作的各级领导干部,日常工作愈来愈繁重,压力也愈来愈大。为适应新形式下工作需求,中央、北京市组织工作会议进一步强调了领导干部再教育培训的重要性。为贯彻落实会议精神。我区组织部紧抓信息化、网络化飞速发展的机遇,切实推进全区干教工作不断迈向深入,在吸收借鉴市干教信息网的成果上,结合我区干部教育的特点,整合各类教学资源,希望通过最新信息技术与课程整合,将网络技术作为一种工具,建立一套以“区管干部”为核心、兼顾其他层级干部学习交流及面向公众宣传我区干部教育工作情况的信息系统已迫在眉睫。系统通过互联网,实现信息发布管理、机关内信息上传、下达、在线报名等功能,同时采用图文、多媒体、动态课件形式,方便各级干部异地培训、网上同步练习、及时获取学习信息及资料。有效改变传统形式培训教学工作中的工学矛盾。根据现状及需求,网站及培训平台具体功能模块如下:

2、“北京市崇文区干部教育培训信息网”解决方案: 系统总体建设是一个渐进的过程,主要表现为数据资料发布管理系统和内部干部培训平

台的逐步融合。初期,主要是将一些简单实用的数据资料和业务功能通过网站的形式展开,然后网站与培训平台进一步结合,最终成为整个单位的应用门户,将两个相对分离的系统结合在一起。 根据需求,我们的解决方案是:系统采用J2EE技术,B/S架构,对象关系数据库管理系统(ORDBMS)进行数据存储。建议分为公众宣传信息系统和和干部教育培训平台两部分。初期,主要是将一些简单实用的数据信息资料分类整理发布,同时实现最新消息、图片新闻、网上调查、图片展示、政策法规、好书推荐等多种形式的互动式网站宣传。 干部教育培训平台采用用户和权限认证,面向全区机关干部,实现信息的上传、通知的发布、在线报名等功能,同明采用图文、多媒体、动态课件形式,方便各级干部异地培训、网上同步练习、及时获取学习信息及资料。真正成为一个不受时间、空间限制的互动式数字课堂。系统采用简单灵活的后台进行分类、用户、信息的管理维护,以保证用户一次投资、长期受益。最终将信息系统建成单位的应用门户,将两个相对分离的系统结合在一起。 3、提交内容: ?“北京市崇文区干部教育培训信息网”原始备份盘 1 张。 ?“北京市崇文区干部教育培训信息网”管理员操作手册 1 套。 二、甲方责任 1、甲方负责向乙方提供系统所需业务数据和资料。 2、甲方配合乙方完成系统的安装、调试和试运行工作。 3、甲方有责任对产品的软件代码进行版权保护,不得以任意形式复制、传播。 三、乙方责任 1、乙方负责对甲方派出的人员进行培训。 2、乙方负责对应用系统进行技术支持。 四、价格及付款方式 项目金额总计:人民币:捌万陆仟元整,小写人民币:¥86000.00元,共分两笔支付。 本合同经双方签章后一周内,甲方向乙方支付项目金额捌万元整(¥80000.00元),项目验收后一周内,甲方再向乙方支付项目余款即陆仟元整(¥6000.00元)。

很详细的系统架构图-强烈推荐

很详细的系统架构图--专业推荐 2013.11.7

1.1.共享平台逻辑架构设计 如上图所示为本次共享资源平台逻辑架构图,上图整体展现说明包括以下几个方面: 1 应用系统建设 本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发,从而建立行业的全面的应用系统架构群。整体应用系统通过SOA面向服务管理架构模式实现应用组件的有效整合,完成应用系统的统一化管理与维护。 2 应用资源采集 整体应用系统资源统一分为两类,具体包括结构化资源和非机构化资源。本次项目就要实现对这两类资源的有效采集和管理。对于非结构化资源,我们将通过相应的资源采集工具完成数据的统一管理与维护。对于结构化资源,我们将通过全面的接口管理体系进行相应资源采集模板的搭建,采集后的数据经过有效的资源审核和分析处理后进入到数据交换平台进行有效管理。 3 数据分析与展现 采集完成的数据将通过有效的资源分析管理机制实现资源的有效管理与展现,具体包括了对资源的查询、分析、统计、汇总、报表、预测、决策等功能模块的搭建。 4 数据的应用 最终数据将通过内外网门户对外进行发布,相关人员包括局内各个部门人员、区各委办局、用人单位以及广大公众将可以通过不同的权限登录不同门户进行相关资源的查询,从而有效提升了我局整体应用服务质量。 综上,我们对本次项目整体逻辑架构进行了有效的构建,下面我们将从技术角度对相

关架构进行描述。 1.2.技术架构设计 如上图对本次项目整体技术架构进行了设计,从上图我们可以看出,本次项目整体建设内容应当包含了相关体系架构的搭建、应用功能完善可开发、应用资源全面共享与管理。下面我们将分别进行说明。 1.3.整体架构设计 上述两节,我们对共享平台整体逻辑架构以及项目搭建整体技术架构进行了分别的设计说明,通过上述设计,我们对整体项目的架构图进行了归纳如下:

浅谈移动应用软件的架构

浅谈移动应用软件的架构 16软工吴文超 1.软件架构的定义 软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。软件架构设计就是从宏观上说明一套软件系统的组成与特性。软件架构设计是一系列有层次的决策,比如:功能与展现的决策;技术架构的决策;自主研发还是合作;商业软件还是开源软件。 2.为什么要进行软件架构? 2.1软件架构的目的 对于外包业务类型的项目,软件架构设计的目的与产品类型的项目有所不同,在这里主要讨论外包类型项目的软件架构设计目的。 1、为大规模开发提供基础和规范,并提供可重用的资产,软件系统 的大规模开发,必须要有一定的基础和遵循一定的规范,这既是软件工程本身的要求,也是客户的要求。架构设计的过程中可以将一些公共部分抽象提取出来,形成公共类和工具类,以达到重用的目的。 2、一定程度上缩短项目的周期,利用软件架构提供的框架或重用组 件,缩短项目开发的周期。 3、降低开发和维护的成本,大量的重用和抽象,可以提取出一些开 发人员不用关心的公共部分,这样便可以使开发人员仅仅关注于业务逻辑的实现,从而减少了很多工作量,提高了开发效率。 4、提高产品的质量,好的软件架构设计是产品质量的保证,特别是 对于客户常常提出的非功能性需求的满足。 与其他复杂结构一样,软件必须建立在坚实的基础之上。不考虑关键情况,不考虑通用问题的设计,或者不考虑关键决策的长期后果,都将置

应用于险地。现代工具和平台有助于简化搭建应用的任务,但是他们并不能代替针对特定情景和需求的细心应用设计。质量低下的架构带来的风险包括不稳定的软件,无法支持现有或者将来的业务需求,或者难以在生产环境中进行部署和管理。 系统设计应当考虑用户,系统本身(IT基础设施),以及业务目标。在每个方面,都该描绘出关键性案例,并以此找出重要的质量属性(比如,可靠性和可扩展性)以及重点满足或忽视的方面。可能的话,最好找到衡量在不同方面成功的方法和指标。 用户,业务,以及系统目标有关这三个方面的需求可能相互矛盾,因此需要达到一个平衡。妥协也是经常地事情。比如说,一个解决方案的用户体验大都关乎业务和IT基础设施上的一个功能,其中任何一个改变了也会极大影响用户体验。同样的,用户体验的改变也会极大影响业务和IT底层设施需求。性能可能是一个很重要的用户和业务目标,但是系统管理员可能无法为了百分百满足用户一次性投资那么多到硬件上,刚开始可能就是80%差不多。 架构关注于应用内的关键元素和组件彼此之间的调用和交互。单个组件的数据结构,算法或者实现细节是设计的事情。架构和设计的关注点通常相互覆盖。与其硬性区别架构和设计,不如索性放在一起考虑。一些场合下,架构用的多一些。另外一些场合下,就更在乎设计上与架构有关的事情。考虑以下有关软件架构的high-level关注点:用户如何使用本应用?如

软件开发及技术服务合同协议

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 软件开发及技术服务合同协议 甲方:___________________ 乙方:___________________ 日期:___________________

软件开发及技术服务协议 甲方: _____________________________ 乙方: _____________________________ 签订日期: _____ 年M 日 甲方: 地址: 邮编: 联系人: 电话: 传真: 法定代表人: 电子邮箱: 乙方:

地址: 邮编: 电话: 身份证号: 电子邮箱: 甲、乙双方本着互惠互利、优势互补、共同发展的原则,经过友好协商,就甲方委托乙方开发项目平台(以下称“委托事项”),达成如下协议: 一、协议内容 1、甲方委托乙方开发,功能要求如下: 二、双方责任 甲方责任: 1、甲方有责任协调局方就项目各方与乙方进行项目协调及系统调试; 2、甲方对乙方提交的系统方案及开发计划进行确认; 3、甲方有责任协调现场的环境准备; 4、甲方有责任对乙方提交的合格系统进行初验、终验审核确认; 5、甲方负责按照付款要求提供协议约定的开发费用和双方确认的需求变更所需产生的追加费用。 乙方责任: 1、乙方负责向甲方提交合格系统设计方案及开发计划; 2、为保证项目进度,乙方从项目签订之日起,每五天向甲方提供一次书面项目周报; 3、乙方须按照项目进度的要求完成接口的开发、内测、接口联调及系统开通; 4、乙方有责任向甲方提供系统所有的成果:包括各种技术文档,源程序等; 5、乙方应遵循甲方的软件开发管理规范,配合甲方实现甲方内部所要求的单元测试、集成测试及配置管理等;

相关主题
文本预览
相关文档 最新文档