某软件保护加密锁技术开发手册

某软件保护加密锁技术开发手册
某软件保护加密锁技术开发手册

目录

1.产品介绍 (1)

1.1.新的软件保护方法 (1)

1.2.产品基本组成 (2)

1.2.1.精锐IV开发工具包 (2)

1.2.2.精锐IV硬件设备 (3)

1.2.3.用户运行时环境 (3)

1.3.重要的安全事项 (3)

1.3.1.口令 (3)

1.3.2.文件系统 (4)

1.4.更多的功能 (6)

2.产品安装 (7)

2.1.系统需求 (7)

2.2.SDK安装 (7)

2.2.1.关于设备驱动程序安装的说明 (7)

2.3.SDK卸载 (8)

3.开始使用 (9)

3.1.示例软件 (9)

3.2.代码移植 (10)

3.2.1.创建一个精锐IV工程 (10)

3.2.2.编写精锐IV代码 (10)

3.2.3.编译测试精锐IV代码 (12)

3.2.4.下载代码到精锐IV硬件 (12)

3.2.5.修改PC代码 (13)

3.2.6.测试保护结果 (16)

3.3.程序结构分析 (16)

4.开发精锐IV代码 (18)

4.1.编写精锐IV内部代码 (18)

4.1.1.代码结构 (18)

4.1.2.输入与输出 (19)

4.1.3.内存结构 (20)

4.1.4.使用系统函数库文件 (24)

4.1.5.数据类型 (24)

4.1.6.代码编写建议 (24)

4.2.访问精锐IV设备 (25)

4.2.1.一般性访问 (25)

4.2.2.开发级访问 (28)

4.2.3.用户级访问 (32)

4.3.关于代码测试 (34)

5.1.K EIL C51使用说明 (35)

5.1.1.工程创建与管理 (36)

5.1.2.代码编译与调试配置 (38)

5.1.3.代码调试方法 (39)

5.1.4.仿真器特别说明 (43)

5.2.R AISONANCE R KIT使用说明 (44)

5.2.1.工程创建与管理 (44)

5.2.2.代码编译与调试 (47)

5.3.深思洛克S KIT (47)

5.4.可执行文件格式 (47)

6.工具软件使用说明 (48)

6.1.开发测试工具 (48)

6.1.1.重新连接 (49)

6.1.2.重置设备 (49)

6.1.3.PIN码管理 (51)

6.1.4.下载文件 (51)

6.1.5.清空目录 (52)

6.1.6.执行文件 (53)

6.1.7.授权管理 (54)

6.1.8.PC密钥 (54)

7.网络版使用说明 (56)

7.1.精锐IV网络版简介 (56)

7.1.1.特性 (56)

7.1.2.网络锁口令 (57)

7.1.3.网络锁的模块 (57)

7.2.使用网络版精锐IV (57)

7.2.1.网络锁服务程序的安装和卸载 (57)

7.2.2.网络锁服务管理工具的使用 (57)

7.2.3.网络锁API的使用 (62)

8.系统函数参考 (64)

8.1.流程控制类 (65)

8.1.1._exit (65)

8.2.输入输出类 (66)

8.2.1._set_response (66)

8.3.文件操作类 (67)

8.3.1._open (67)

8.3.2._close (68)

8.3.3._read (69)

8.3.4._write (70)

8.3.5._create (73)

8.3.6._enable_exe (75)

8.4.1._addf (77)

8.4.2._add (78)

8.4.3._subf (79)

8.4.4._sub (80)

8.4.5._multf (81)

8.4.6._mult (82)

8.4.7._divf (83)

8.4.8._div (84)

8.4.9._sinf (85)

8.4.10._sin (86)

8.4.11._cosf (87)

8.4.12._cos (88)

8.4.13._tanf (89)

8.4.14._tan (90)

8.4.15._asinf (91)

8.4.16._asin (92)

8.4.17._acosf (93)

8.4.18._acos (94)

8.4.19._atanf (95)

8.4.20._atan (96)

8.4.21._atan2f (97)

8.4.22._atan2 (98)

8.4.23._sinhf (99)

8.4.24._sinh (100)

8.4.25._coshf (101)

8.4.26._cosh (102)

8.4.27._tanhf (103)

8.4.28._tanh (104)

8.4.29._ceilf (105)

8.4.30._ceil (106)

8.4.31._floorf (107)

8.4.32._floor (108)

8.4.33._absf (109)

8.4.34._abs (110)

8.4.35._fmodf (111)

8.4.36._fmod (112)

8.4.37._expf (113)

8.4.38._exp (114)

8.4.39._logf (115)

8.4.40._log (116)

8.4.41._log10f (117)

8.4.42._log10 (118)

8.4.43._sqrtf (119)

8.4.45._powf (121)

8.4.46._pow (122)

8.4.47._modf (123)

8.4.48._frexp (124)

8.4.49._ldexp (125)

8.4.50._fdcmp (126)

8.4.51._dtof (127)

8.4.52._ftod (128)

8.4.53._dtol (129)

8.4.54._altod (130)

8.4.55._lltod (131)

8.5.密码算法类 (132)

8.5.1._tdes_enc (133)

8.5.2._tdes_dec (134)

8.5.3._des_enc (136)

8.5.4._des_dec (138)

8.5.5._sha1_init (140)

8.5.6._sha1_update (142)

8.5.7._sha1_final (143)

8.5.8._rsa_enc (145)

8.5.9._rsa_dec (148)

8.5.10._rsa_sign (150)

8.5.11._rsa_veri (152)

8.5.12._rand (155)

8.6.内存操作类 (157)

8.6.1._mem_copy (157)

8.6.2._mem_move (158)

8.6.3._mem_set (159)

8.6.4._mempool_init (160)

8.6.5._malloc (161)

8.6.6._calloc (162)

8.6.7._realloc (163)

8.6.8._free (164)

8.6.9._invert (165)

8.6.10._mem_cmp (166)

8.7.时间操作类 (167)

8.7.1._set_timer (167)

8.7.2._start_timer (168)

8.7.3._stop_timer (169)

8.7.4._get_timer (170)

8.7.5._time (172)

8.7.6._mktime (173)

8.7.7._gmtime (174)

8.8.1._swap_u16 (176)

8.8.2._swap_u32 (177)

8.8.3.LE16_TO_CC (178)

8.8.4.LE32_TO_CC (179)

https://www.360docs.net/doc/f87134301.html,_TO_LE16 (180)

https://www.360docs.net/doc/f87134301.html,_TO_LE32 (181)

8.8.7.BE16_TO_CC (182)

8.8.8.BE32_TO_CC (183)

https://www.360docs.net/doc/f87134301.html,_TO_BE16 (184)

https://www.360docs.net/doc/f87134301.html,_TO_BE32 (185)

8.8.11._atod (186)

8.8.12.DEFINE_AT (187)

8.9.设备基本信息类 (188)

8.9.1._get_gbdata (188)

8.10.系统函数错误代码索引 (189)

8.11.双精度浮点数边界条件 (190)

9.API参考 (192)

9.1.API列表 (193)

9.1.1.S4Enum (194)

9.1.2.S4Open (196)

9.1.3.S4OpenEx (198)

9.1.4.S4Close (200)

9.1.5.S4Control (201)

9.1.6.S4CreateDir (206)

9.1.7.S4CreateDirEx (208)

9.1.8.S4ChangeDir (211)

9.1.9.S4EraseDir (212)

9.1.10.S4VerifyPin (213)

9.1.11.S4ChangePin (215)

9.1.12.S4WriteFile (217)

9.1.13.PS4WriteFile (222)

9.1.14.S4Execute (226)

9.1.15.S4ExecuteEx (228)

9.1.16.S4Startup (230)

9.1.17.S4Cleanup (230)

9.2.错误代码索引 (231)

附录A.密码算法使用说明 (233)

A.1.密钥处理函数 (234)

A.1.1X_GenerateRsaKeys (234)

A.1.2R_GenerateRsaKeys (235)

A.1.3X_Pub2Cos (237)

A.1.4X_Pri2Cos (238)

A.1.6X_Cos2Pri (240)

A.2.密码算法函数 (241)

A.2.1RSAPublicEncrypt (241)

A.2.2RSAPrivateDecrypt (242)

A.2.3Sign (243)

A.2.4Verify (244)

A.2.5Digest (245)

A.2.6DES (246)

A.2.7TDES (247)

A.3.错误代码索引 (248)

附录B.硬件参数列表 (249)

附录C.旧版系统函数 (250)

C.1._SHA1_FIRST_BLOCK (250)

C.2._SHA1_MID_BLOCK (251)

C.3._SHA1_FINAL_BLOCK (252)

C.4._SHA1 (253)

C.5._SHA1_FIRST (254)

C.6._SHA1_MID (255)

C.7._SHA1_LAST (256)

C.8._SHA1_ONLY (257)

附录D.系统函数索引 (258)

附录E.设备驱动安装API参考 (260)

E.1.S4DRV_G ET D RIVER I NFO (260)

E.2.S4DRV_I NSTALL (262)

E.3.S4DRV_U NINSTALL (263)

E.4.S4DRV_I S N EED R EBOOT (264)

1.产品介绍

精锐IV是北京深思洛克软件技术股份有限公司开发的新一代软件加密锁,它是目前世界上最安全的软件保护产品。

两种关键技术保证了软件保护真正的安全性:

●程序代码保护

您可以将10,000行左右的高级语言程序代码转移到精锐IV内部去执行,这些被转移的代码不会在计算机中留有任何痕迹,也没有人可以获得这些代码的副本;您的软件将在两个系统上运行:一个是计算机,一个是精锐IV。盗版被精锐IV保护的软件是不可行的,因为精锐IV硬件不可能被复制。

●可靠的硬件基础

不可复制、抵御攻击都是靠硬件的安全性来完成的,为此,精锐IV不仅采用了智能卡技术,而且还选用了最好的智能卡芯片(通过CC EAL5+的安全认证1)。如果您仔细研读了相关的安全标准,您就会发现精锐IV的硬件绝对值得信赖。

精锐IV首次在软件保护领域提出了“不可破解”的安全模型,可以从根本上杜绝盗版从而最大程度保护软件开发者的经济利益。

1.1.新的软件保护方法

如果您曾经使用过其他类型的加密锁,请尽量先忘掉那些加密锁的技术细节,并仔细理解本小节中提供的内容,因为这是一种先进的、全新的思想。如果您之前没有用过任何加密锁的话,那只需要看看下面的图片,您会发现整个过程很容易理解。

请记住已经没有了“数据区”、“算法单元”等概念,这些都是老皇历了。现在您的加密锁拥有一个完整的“操作系统”,在这个系统中一切都是文件:可执行文件、数据文件以及密钥文件;当然也可以有目录。您可以想象这就像是一个MS-DOS操作系统。

下面我们来看看软件保护是怎么完成的(图1-1)。

图1-1 精锐IV软件保护方法

1.专心开发软件并完成测试工作,这时完全不必理会加密锁、软件保护技术;

1这是一个很高的安全认证级别,详细细节您可以参考ISO15408标准的内容。

2.在软件中找出一些相对重要的代码,通过精锐IV兼容的编译器,将这些代码编译并写入到精锐IV内部;

3.在软件中这些被“挖走”的代码的位置,加入对精锐IV的调用;

4.软件运行时,这些被移植的代码将在精锐IV内部运行,并将结果返回给软件;

由于软件的一部分被移植到了精锐IV硬件内部,脱离精锐IV将使软件变得不完整,从而使破解被精锐IV保护的软件成为“无法完成的任务”。

每个被移植的代码部分都可以在精锐IV内部成为一个独立的“可执行文件”,当然也可以将它们组合在一起。精锐IV目前最多可以提供64K字节的安全存储空间,文件的数量几乎没有限制(文件头会占用一部分空间,所以过多的文件会造成存储空间的浪费)。总计可以移植的代码数量在10,000行左右,可以保护任意多个软件。

注意:尽管代码的“移植”是精锐IV最主要的软件保护手段,但是这并不说明您需要完全丢弃原有的技术策略,在多数情况下它们是互为补充的。不过请记住只有代码移植到精锐IV内才可以使您的软件真正安全。

1.2.产品基本组成

精锐IV不是一个简单的加密锁,您需要在它的操作系统2上开发软件中某些部分的“加密锁”版本。这并不是一项艰难的任务,多数情况下只要简单修改代码就能使它们在精锐IV中运行,因为精锐IV支持标准C语言编写的代码。如果软件是通过其它高级语言开发的,例如Delphi,您需要用C语言来改写其中被移植的部分。尽管高级语言之间的“翻译”工作需要一些投入,但是如果“翻译”几百行代码就能够使您的软件彻底远离盗版,这项工作绝对物有所值。在本文的后续部分,我们通常把移植到精锐IV内部的代码称为“精锐IV 应用程序”或者“精锐IV可执行程序”。

精锐IV产品由以下部分组成:

●精锐IV开发工具包

●精锐IV硬件设备

●精锐IV用户运行时环境

1.2.1.精锐IV开发工具包

最重要的部分是精锐IV可执行程序的集成开发环境。精锐IV支持标准C语言开发,任何一款支持MCS 51或者SmartXA 2的编译器都可以用来开发精锐IV可执行程序。我们的SDK中包括了一个全功能的编译环境Skit,如果您更习惯于使用流行的开发工具,我们推荐您购买Keil Software公司的C51编译器或者是Raisonance SA公司的RKit,您可以访问https://www.360docs.net/doc/f87134301.html,和https://www.360docs.net/doc/f87134301.html,获取关于这两种编译软件的信息。

一些工具软件也包含在开发工具包中,包括:

●开发测试工具。协助开发、测试移植到精锐IV内部的代码,并可以简单管理设备;

2精锐IV内部的操作系统符合智能卡操作系统的国际标准,您可以通过查阅ISO7816系列的标准来获取“智能卡操作系统”的相关知识。

●用户测试工具。可以分发给软件最终用户,协助解决可能出现的配置故障;

●批量设置工具。高效率的加密锁批量初始化工具;

您可以在开发工具包中找到很多范例代码,可以作为开发过程中的参考或者是样板。

注意:关于编译器的更详细内容,请参考第五章“编译器使用说明”;关于工具软件的更详细内容,请参考第六章“工具软件使用说明”。

1.2.2.精锐IV硬件设备

硬件设备是精锐IV可执行程序的运行环境和存储介质,完全基于智能卡技术开发,采用16位、16MHz的高性能CPU。精锐IV主要提供USB接口设备类型,作为可选项,也可以按标准智能卡的形式提供。精锐IV是一种高度集成化的产品,其所有器件(包括CPU、RAM、EEPROM以及USB通讯模块)都集成在同一块智能卡芯片上面,这极大提高了产品的安全性和稳定性。

每一个精锐IV设备都具有全球唯一的序列号,该序列号在芯片生产的阶段就已经确定。

1.2.3.用户运行时环境

本文中的“用户”指的是最终的软件用户。

用户运行时环境主要是指精锐IV设备的驱动程序。精锐IV可以运行在两种模式下:一种是通过标准的USB驱动来访问设备,我们称之为标准模式;另一种是无驱动模式,这时它将作为标准的HID设备被Windows操作系统识别。在提供方便性的同时,无驱动模式相比标准模式要牺牲一些高级功能和通用性(例如设备多进程访问),所以我们建议使用标准模式。

1.3.重要的安全事项

在软件保护工作开始之前,请务必确保您已经理解了本小节所提供的内容!

1.3.1.口令

精锐IV共提供了两个级别的口令:开发口令和用户口令(本文中口令有时也称为“PIN 码”),通过不同级别的口令来获得不同的操作权限3。

开发口令共24字节,成功验证开发口令后,可以获得对精锐IV设备的设置权。尽管拥有开发口令并不能直接读出精锐IV硬件内部的数据,但是开发口令泄露仍然会严重威胁精锐IV内部数据的安全。精锐IV在初次使用时,其默认的开发口令为“123456781234567812345678”(0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38)。在发行精锐IV 之前,务必将其修改为一个秘密值。

3操作权限有时也称为“安全状态”,如果硬件设备被重置、断电,则操作权限将丢失。例如,当计算机休眠后,尽管重新启动后软件可以继续运行,但由于USB端口有断电过程,所以加密锁的操作权限将丢失,从而导致软件操作加密锁失败。

用户口令共8字节,其默认值为“12345678”

(0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38)。成功验证用户口令仅能获得对精锐IV设备的“调用权”,即可以调用精锐IV内部的可执行程序,但不能访问其它的文件如数据文件。原则上用户口令没有“安全性”问题,您可以用它来简单检查是否是属于您的加密锁。

下面是一些跟口令相关的重要安全细节:

?无论是开发口令还是用户口令,都是针对精锐IV内部的目录,而不是针对特定的精锐IV设备,每个目录都包含自己的开发口令和用户口令。目录之间的安全

属性是独立的,因此,修改了根目录的口令并不意味着子目录的口令同时得到

修改,获得了根目录的权限也不会自动获得子目录的相应权限。这一特性可以

使多个不相关的软件被同一个加密锁保护并互相不产生干扰和威胁。但是删除

根目录会导致子目录的内容同时被删除。

除非必要,我们不建议使用多级目录以避免产生管理上的混乱。

关于目录的详细介绍,请参考下一节“文件系统”。

?根目录的开发口令连续15次错误重试,会将硬件设备锁定;一旦锁定后将没有任何办法可以恢复。所以需要妥善保管加密锁的开发口令,切记深思洛克并不

能恢复您的口令或者对设备进行解锁,这是为了最大程度保证您的安全性。

子目录开发口令错误重试仅会导致该目录锁定,但仍然可以通过擦除上级目录

的方法将其删除。

?用户口令无论重试多少次都不会导致锁定。

?每次重新初始化文件系统,例如删除并重建根目录、清空子目录时,目录的两级口令都会恢复为默认值,所以重新初始化文件系统后一定要记得将开发口令

修改为一个秘密值。

1.3.

2.文件系统

了解一些文件系统的安全性细节会有助于构造更安全的保护方案。

精锐IV支持“目录-文件”结构。精锐IV内部的存储空间按照目录的方式进行管理,下面是精锐IV目录的一些关键特征:

?有且只有一个根目录,目录下面可以有子目录,但最多不能超过三级;

?建立目录必须指定目录所占用的空间,目录一旦建立后其大小不能更改;根目录占用硬件所有的存储空间;

?根目录可以被删除,删除根目录将同时删除目录中包含的所有内容,例如子目录、文件;

?任何目录的父目录,兄弟目录和子目录的目录ID不能重名。

?子目录只能被清空,而不能被直接删除。清空子目录将删除该目录中所包含的所有内容,例如子目录、文件。子目录清空后,其开发级口令、用户级口令都将恢复为

默认值。如果要彻底删除子目录以释放其占用的空间,必须清空/删除其上级目录;

?网络锁只支持根目录。

在精锐IV内部,通常会使用到三种文件:可执行文件、数据文件、密钥文件,任何一种文件都不可能直接从硬件中被读出,验证开发口令后可以创建和修改文件。

?可执行文件

可执行文件是一种可以在精锐IV内部操作系统上被加载并运行的文件格式,软件加密过程中所移植的代码会被编译成可执行文件。可执行文件分为两种:VM可执行文件(或者称为普通可执行文件)与XA可执行文件,对应于两种不同的运行模式。关于运行模式的详细说明,请参考第四章“开发精锐IV代码”。XA可执行文件只被硬件版本2.3及以上的精锐IV支持,其运行效率比VM可执行文件要高,但是在精锐IV上的通用性要差一些。通过运行产品包中提供的工具软件,您可以获取精锐IV的硬件版本号。

可执行文件通过硬件内部的系统函数可以操作其它的同目录文件,例如读写数据文件。对于操作可执行文件,情况稍微有些复杂:可执行文件并不一定可以被其他可执行文件读写,这取决于它自身的安全属性(参看表1-1)。

?数据文件

数据文件仅用于存放二进制数据。计算机中的程序不能直接从精锐IV中将数据文件读出。要访问精锐IV内部的数据文件,您必须通过精锐IV内部的可执行程序来完成。

?密钥文件

目前只有RSA密钥文件被支持,您可以查阅第八章“系统函数参考”来获取更详细的信息。

我们将精锐IV内部常用文件的安全属性总结如下:

表1-1 精锐IV文件安全属性

开发级

(验证开发口令)

用户级

(验证用户口令)

内部

(内部可执行文件)

可执行文件不可读写W E N 内部可读写W E R/W

数据文件W N R/W

密钥文件W N W

R:Read W:Write E:Execute N:None

对于精锐IV内部操作文件时所涉及的安全属性,有更详细的规定,细节请参看第八章“系统函数参考”中有关文件操作部分。

精锐IV内部的文件通过一个16位(2字节)的无符号整数进行标识,部分标识符被系统保留,这些保留的文件标识符包括:0x0000,0x0015,0x0016,0x0018,0x001e,0x3f00,0x3f01,0x3f02,0x3f03,0x3f04。

1.4.更多的功能

精锐IV内部包含了RSA(1024位)、DES/TDES密码算法的硬件协处理器,并提供了SHA-1算法功能和硬件真随机数发生器。以这些密码学功能为基础,深思洛克提供了远程升级和销售管理的平台,被精锐IV保护的软件可以通过互联网完成软件的收费升级,并借此实现对软件销售渠道的管理。深思洛克开放远程升级的底层技术细节,您可以通过深思洛克提供的底层技术来构造自己的远程升级和销售管理平台。

利用精锐IV的这些密码学算法,您还可以用来登录Windows操作系统、加密解密邮件以及完成各种复杂的网络安全功能。

2.产品安装

本章节将指导您如何安装精锐IV的SDK。

2.1.系统需求

要使用精锐IV的SDK,建议您使用一台运行Windows 98、Windows2000或更高版本操作系统的PC。如果在NT4下安装,您需要先安装Service Pack 4、IE4.0或更高版本。

精锐IV支持Microsoft Windows、Linux及Mac OS X,您可以在上述操作系统上使用精锐IV设备。

2.2.SDK安装

将光盘放入光驱,如果安装程序没有自动启动,请运行精锐IV SDK光盘中的Windows\Setup.exe程序,并根据安装向导的提示完成安装。

安装完成后,目标目录将包含以下内容:

子目录内容

API 精锐IV的API函数。

Doc 产品开发手册以及其它说明文档。

Drivers硬件设备驱动,关于驱动程序安装的细节,请参考第2.2.1节“关于设备驱动程序安装的说明”及附录E“设备驱动程序安装API参考”。

IDE 深思洛克提供的使用其它开发工具(如Keil C51)时所需要的支持库。

精锐IV硬件系统函数库,详细信息请参考第八章“系统函数参考”。

Samples 范例代码,包括基本的操作示范以及应用案例源代码。

Tools 各种工具软件,关于工具软件使用的详细信息,请参考第六章“工具软件使用说明”。Support 各种辅助资源,如密码算法库、系统诊断工具。详细内容请参考附录A“密码算法使用说明”。

2.2.1.关于设备驱动程序安装的说明

安装SDK的过程会自动安装精锐IV的设备驱动程序,在一些情况下您可能需要单独安装驱动程序(例如将整个SDK复制到其它计算机中直接使用、发布您的软件),这时候您需要使用SDK中提供的驱动程序安装工具。

该工具位于%SDK%\Drivers目录下,名称为“InstWiz3.exe”。这是一个WIN32可执行程序,可以接受以下命令行参数:

?/INSTALL安装驱动程序(该选项为默认选项)

?/UNINSTALL卸载驱动程序

?/NOGUI不显示安装界面

这些命令行参数可以组合使用,例如,您可以运行“InstWiz3.exe /uninstall /nogui”来隐式卸载设备驱动。

精锐IV开发手册产品安装

注意:InstWiz3.exe不能单独执行,InstWiz3.exe同目录下必须包含mkSetup.dll、language.dll、win98目录、winlh64目录、winlh86目录、winxp64目录、winxp86目录等全部内容,并保持原有的目录结构。

该工具也可以用来检测当前系统中精锐IV设备驱动程序的安装情况:运行InstWiz3.exe,工具将自动检测并汇报驱动程序的安装情况。

有几种办法可以测试驱动程序是否安装成功:

1.插入精锐IV设备,检查硬件设备列表中是否出现正常的Senselock SenseIV v

2.x

设备(“设备管理器”→“智能卡阅读器”下);对于Windows98、Window2000或更

高版本,如果设备是第一次插入,系统会自动提示“找到新设备”并完成安装;

2.插入精锐IV设备,运行开发测试工具或者用户工具,看是否能成功访问设备;

如果您对设备驱动程序的安装过程非常熟悉,您也可以选择手工的方式安装精锐IV设备驱动。%SDK%\Drivers\Obj目录下面包含了手工安装驱动程序所需要的文件和说明。

如果您希望通过API自己完成设备驱动程序的安装,请参考附录E“设备驱动程序安装API参考”。

精锐IV设备驱动程序已经通过微软徽标认证(Designed for Windows XP),详细情况请连接https://www.360docs.net/doc/f87134301.html,/,并查询产品SenseIV。

2.3.SDK卸载

在“控制面板”→“添加/删除程序”中可以直接卸载SDK,删除SDK的过程会自动删除精锐IV设备驱动程序。

3.开始使用

本章将通过一个范例将向您展示如何向精锐IV内部移植一部分代码,这个范例可以使您大致了解使用精锐IV保护软件的全过程。

完整的范例可以在%SDK%\samples\Developer Manual\Chap3目录下找到。

3.1.示例软件

为了使过程看起来更易于理解,我们选择了一个简单的示例程序:冒泡排序算法。在移植之前,整个软件代码如下:

#include

#include

#include

/*bubble sort function*/

void bubble_sort(unsigned char *p, int len)

{

int i,j;

unsigned char tmp;

for (i=0;i

{

for (j=0;j

{

if (p[j] < p[j+1])

{

tmp = p[j];

p[j] = p[j+1];

p[j+1] = tmp;

}

}

}

}

/*main procedure*/

void main()

{

unsigned char test[] = {4,3,8,2,9,7,1,5,0,6};

int len = sizeof(test);

int i;

bubble_sort(test, len);

printf("result:\n");

for (i=0;i

{

printf("%d ",test[i]);

}

}

在Microsoft Visual C++ 6中新建一个WIN32控制台程序工程(Win32 Console Application),将上述代码添加到VC6工程中。本例中,我们假定将工程保存为C:\s4demo\Win32\demo1.dsp,上述代码保存为C:\s4demo\Win32\pc_demo1.c,编译并运行上面的代码会得到如下输出结果:

result:

9 8 7 6 5 4 3 2 1 0

我们假定软件中的排序算法是一段需要保护的代码,并把它移植到精锐IV的内部。3.2.代码移植

在代码移植之前,您需要选择一款精锐IV支持的编译器,本范例中选用Keil C514。本章节仅对Keil C51编译器软件的配置进行必要的说明,关于编译器软件使用的更详细信息,请参考第五章“编译器使用说明”。

3.2.1.创建一个精锐IV工程

运行Keil μVision,在菜单中选择“Project”→“New Project…”,将该工程命名为“Demo1.uv2”,并保存在磁盘上,本例中假定工程保存为“C:\s4demo\Demo1.uv2”。

接下来μVision会提示您选择设备类型,在“Data Base”列表中选择“Intel”→“8052AH”。现在一个空白的工程就创建完了。为了使该工程能够被精锐IV支持,还需要作一些额外的配置。

在菜单中选择“Project”→“Options for Target ‘Target1’”,在“Target”选项页中,设置“Memory Model”为“Large: variables in XDATA”;切换到“Output”选项页,选中“Create Hex File”。

3.2.2.编写精锐IV代码

现在我们可以向工程中增加移植代码。新建一个C文件,命名为demo1.c,将pc_demo1.c 中的bubble_sort()函数复制到demo1.c中,并增加精锐IV的main()函数,完整的demo1.c 的内容如下:

#include “ses_v3.h”

4本章的范例代码与编译器无关,可以在任何一款精锐IV支持的C编译器上编译通过。

/*bubble sort function*/

void bubble_sort(unsigned char *p, int len)

{

int i,j;

unsigned char tmp;

for (i=0;i

{

for (j=0;j

{

if (p[j] < p[j+1])

{

tmp = p[j];

p[j] = p[j+1];

p[j+1] = tmp;

}

}

}

}

/*EliteIV main procedure*/

void main()

{

unsigned char *test = pbInBuff;

int len = bInLen;

bubble_sort(test, len);

_set_response(len,test);

_exit();

}

上面的代码经编译后可以在精锐IV内部运行。在开始编译工作之前,我们对代码进行简要的解释。

这段代码的功能是:将从PC端接收的数据以及数据长度(字节数),交给精锐IV内的bubble_sort()函数处理,并将处理结果返回给PC。

pbInBuff和bInLen是两个预定义的宏,前者指向通讯缓冲区,即由PC传递来的数据;后者表示所传递数据的长度。

bubble_sort()函数的代码与pc_demo1.c中完全一样,这是精锐IV一个非常重要的特性:支持标准C代码的移植。

_set_response()和_exit()是两个精锐IV系统函数,前者用于将数据传送到PC,后者的功能是从精锐IV应用程序中返回。关于这两个系统函数的更详细说明,请参考第八章“系统函数参考”。

为了方便起见,将demo1.c保存到C:\s4demo目录下。

3.2.3.编译测试精锐IV代码

在修改PC端代码(pc_demo1.c)之前,您可以先编译并测试刚才编写的精锐IV代码。

在刚才创建的工程中,选择菜单“Project”→“Components, Environment and Books”,在对话框中点击“Add Files”将demo1.c添加到工程中;同时,将精锐IV SDK中提供的“Ses51L.lib”添加到工程中5。

选择菜单“Project”→“Build target”编译代码,如果编译成功,将在C:\s4demo 目录下生成demo1.hex文件,该文件就是代码的编译结果。

现在您可以测试或者调试精锐IV代码,关于测试和调试技术的细节,请参考第四章“开发精锐IV代码”和第五章“编译器使用说明”。

3.2.

4.下载代码到精锐IV硬件

将精锐IV2.3版连接到计算机上,运行SDK中提供的的“开发测试工具”(%SDK%\Tools\Devtest.exe),如果正确安装了设备驱动程序,工具将显示所连接设备的ID号(与全球唯一序列号并不一定相同)。点击“重新连接”可以查看硬件的详细信息,如图3-1所示。

图3-1 精锐IV开发测试工具——硬件信息显示

为了测试方便,我们首先将设备重新初始化,点击“重置设备”重建精锐IV内部的文件系统。我们假设将前面编译的demo1.hex文件下载到根目录下,文件ID为0xd001。点击“下载文件”,并按照图3-2填写文件信息。

5建议将ses51L.lib和ses_v3.h两个文件复制到工作目录下,即本例中的C:\s4demo。

图3-2 下载文件到硬件

软件会自动计算所需创建的文件大小,本例中文件至少需要398字节。您也可以输入一个更大的值,这样当文件扩大时,所创建的文件仍然可以使用。如果要往已经存在的文件中写入数据,则需要选中“覆盖原文件”框。

3.2.5.修改PC代码

由于bubble_sort()函数已经被移植到了精锐IV内部,我们在pc_demo1.c中将其注释掉或者删除;同时,将main()函数中对bubble_sort()的调用部分修改为对精锐IV内部代码的调用。修改后的pc_demo1.c内容如下:

#include

#include

#include

#include “sense4.h”

/*bubble sort function removed. Add EliteIV invoking code.*/

void call_sense4(char *, unsigned char *, int);

/*main procedure*/

void main()

{

unsigned char test[] = {4,3,8,2,9,7,1,5,0,6};

int len = sizeof(test);

int i;

call_sense4(“d001”, test, len);

printf("result:\n");

for (i=0;i

{

printf("%d ",test[i]);

}

}

void call_sense4(char *fid, unsigned char *buff, int len)

{

/* See remarks for details.*/

}

红色加粗、大号的文字表示对原内容进行的修改,共三部分:

?增加对精锐IV硬件设备的访问支持,包括头文件(sense4.h)和相应的API函数库(sense4.lib+sense4.dll或sense4st.lib)

?去掉被移植代码在软件中的副本,增加精锐IV调用函数call_sense4()

?增加对精锐IV内部代码的调用,完成被移植代码的功能

为了阅读方便,上面的代码中省略了call_sense4()函数的实现过程,您可以在下面的备注中找到该函数的细节信息。可以看到,main()函数仅有一处修改。

备注:关于call_sense4()函数

在本例中,call_sense4()函数的功能是:运行精锐IV内部ID为0xd001的可执行程序,将test

和len作为输入数据,并将运算结果保存在test中。call_sense4()并不是SDK中提供的通用

API函数,它是对标准API的一组封装,目的是为了提高范例代码的易读性。

事实上,要执行精锐IV内部的可执行程序,标准的访问过程应该是:列举设备→打开指定设

备→选择目录→验证用户口令→执行…→执行→关闭设备→释放资源。我们不建议您在

正式的软件中使用这个函数进行设备访问,关于设备访问的细节和建议方法,请参考第九章“API

参考”和第四章“开发精锐IV代码”。

call_sense4()函数的源代码:

void call_sense4(char *fid, unsigned char *buff, int len)

{

SENSE4_CONTEXT ctx = {0};

SENSE4_CONTEXT *pctx = NULL;

unsigned long size = 0;

unsigned long ret = 0;

S4Enum(pctx, &size);

if (size == 0)

{

技术开发部管理手册1

目录 第1章概述 (1) 1.1 技术开发部管理权限 (1) 1.2 技术开发部管理职能 (1) 1.3 技术开发部主要职责 (1) 1.4 日常管理制度 (2) 第2章产品开发设计控制程序 (4) 2.1 目的 (4) 2.2 范围 (5) 2.3 引用文件及术语 (5) 2.4 职责 (5) 2.5 工作程序 (6) 2.6 支持文件 (9) 2.7 表格清单 (9) 2.8 附表 (9) 第3章产品实现的策划程序 (17) 3.1 目的 (17) 3.2 适应范围 (17) 3.3 引用文件及术语 (18) 3.4 职责 (18) 3.5 工作程序 (18) 3.6 支持性文件 (19) 第4章内部质量审核控制程序 (20) 4.1 目的 (20) 4.2 适用范围 (20) 4.3 引用文件及术语 (20) 4.4 职责 (20) 4.5 工作程序 (21) 4.6 支持文件 (23) 4.7 质量记录 (23) 附录 (25) 附录1 (25) 附录2 (26) 附录3 (27) 附录5 (29) 附录6 (30) 附件7 (31) 附件8 (32)

第1章概述 技术开发部的工作主要是从事电表、水表、煤气表及其远程自动抄系统的研发和产品的优化,以及为生产部和工程部提供技术支持等。 1.1 技术开发部管理权限 受总经理和技术总监委托,行使对公司技术引进、新产品开发研究、新技术推广应用、技术指导与监督等全过程听管理权限,并承担执行公司规章制度、管理规程及工作指令的义务; 1.2 技术开发部管理职能 负责对公司产品实行技术指导、规范工艺流程、制定技术标准、抓好技术管理、实施技术监督和协调的专职管理部门,对所承担的工作负责。 1.3 技术开发部主要职责: 1.坚决服从总经理和技术总监的统一指挥,认真执行其工作指令,一切管理行为向总经理和技术总监负责; 2.严格遵守公司规章制度,认真履行其工作职责; 3.负责制定公司技术管理制度。负责建立和完善产品设计、新产品的试制、标准化技术规程、技术情报管理制度,组织、协调、督促有关部门建立和完善设备、质量、能源等管理标准及制度; 4.组织和编制公司技术发展规划。编制近期技术提高工作计划,编制长远技术发展和技术措施规划,并组织对计划、规划的拟定、修改、补充、实施等一系列技术组织和管理工作; 5.负责制订和修改技术规程。编制产品的使用、维修和技术安全等有关的技术规定; 6.负责公司新技术引进和产品开发工作的计划、实施,确保产品品种不断更新和扩大; 7.合理编制技术文件,改进和规范工艺流程; 8.研究和摸索科学的流水作业规律,认真做好各类技术信息和资料收集、整理、分析、研究汇总、归档保管工作,为逐步实现公司现代化销售的目标,提供可靠的指导依据; 9.负责制定公司产品的企业统一标准,实现产品的规范化管理; 10.编制公司产品标准,按年度审核、补充、修订定额内容;

软件开发应知应会

数据结构是计算机()数据的方式。 A.存储、组织 数据结构中,与所使用的计算机无关的是数据的()结构。 C. 逻辑 一个队列的入队序列是1,2,3,4,则该队列的出队序列是____。 C.4,3,2,1 以下说法正确的是()。 C.图的深度优先搜索序列不是唯一的 D. 图的广度优先搜索序列不是唯一的 以下是线性表的数据结构是()。 A.数组 B.单链表 C.双链表 D.循环链表 不属于Android四大组件的是()D. 以上都不是 (A)脚本语言是一种解释性的语言,需要相应的脚本引擎来解释执行。(B)不像c\c++等可以编译成二进制代码,以可执行文件的形式存在,脚本语言需要编译,不可以直接用,由解释器来负责解释。以上说法正确吗? A.AB两句都正确 ()是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件 A.activity 三维图形与特效则是指:() A.Canvas 画布元素 D. WebGL 规范是用来指导系统开发人员和视觉设计人员在开发或升级改版相关系统时,用以保证系统的视觉和交互行为的()和()。 C. 一致性 D. 兼容性 下面哪个命令是用来定义shell的环境变量的()。 D. export Python中不支持的数据类型有()。A.char 关于对象概念的描述中,说法错误的是()。 A.对象就是C语言中的结构变量

以下哪些是Scala语言的特点()。ABCD 下面属于Golang的关键字的是()。 A.func C. struct MVC设计模式的目的是()。 D.在逻辑上将视图、模型和控制器分开 下列不属于关系-对象映射的映射信息是()。 A.程序包名到数据库库名的映射 在Struts实现的MVC框架中()类是包含了execute方法的控制器类,负责调用模型的方法,控制应用程序的流程。 A. Action 关于Struts2框架,下列哪些说法是正确的()。 B. Struts2框架的运行环境是web容器 C. Struts2框架的主要作用是处理http请求 SSH框架具体指的是()。 A.Spring B.Struts C.Hibernate 敏捷的基本框架不包含() D.以上都不是 scrum框架是是一种团队管理工作的方式,()种角色、()种工件、()种会议 A.3、3、4 敏捷软件测试需要从()角度出发,引导开发人员能够从()的角度去思考和设计软件实现。C.客户,客户 scrum框架包含的会议有()ABCD 敏捷软件测试方法有() A.探索性测试 B. 基于脚本的手工测试 C. 自动化测试 ()的特性有极高的数据持久性、对等的系统架构、无限的可扩展性、无单点故障、简单、可依赖。 C. OpenStack Swift LGPL v2.1是LGPL v2的分支,重命名为() C. GNU较宽松公共许可证

软件开发十钟关键技术

软件开发十钟关键技术 本文列出了当今计算机软件开发和应用领域最重要十种关键技术排名,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通,但至少应该对它们非常熟悉。 一、XML 在十种技术中,最重要的一种技术我想应该非XML 莫属。这里不仅仅指XML 规范本身,还包括一系列有关的基于XML 的语言:主要有XHTML ,XSLT ,XSL ,DTDs ,XML Schema (XSD), XPath, XQuery和SOAP。如果你现在还对XML 一无所知,那么赶快狂补吧。XML 是包含类似于HTML 标签的一个文本文件,在这个文件中定义了一个树型结构来描述它所保存的数据。 XML 最大的优点是你既可以在这个文本文件中存储结构化数据,也可以在其中存储非结构化数据——也就是说,它能包含和描述“粗糙的”文档数据,就像它描述“规则的”表格数据一样。 XHTML 是目前编写HTML 的首选方法;因为XHTML 本身就是格式良好的XML ,与通常畸形的HTML 文档相比,XHTML 格式文档更容易处理。 XSLT 和XSL 是对XML 文档进行转换的语言。它们可以将XML 文档转换成各种格式,比如另一个文本文件、PDF文件、HTML文件、逗号分割的文件,或者转换成其它的XML 文档。 DTDs和XML Schema用来描述XML文件所包含的数据内容的类型,使你不用编写定制的代码就能对XML 文档的内容进行“有效性”检查,使内容强行遵守给出的规则。 XPath 和XQuery 是查询语言,用它们可以从XML 文档中吸取单个的数据项或者数据项列表。XQuery的功能特别强大,因为它对XPath查询进行了扩展。实际上,XQuery和XML 的关系就像SQL 之于关系数据库一样。 SOAP是Web services间进行通讯的标准协议。你不必知道SOAP协议的所有细节,但 是你应该熟悉其常用规则及其工作原理,这样你才能使用它。 二、Web Services Web 服务是XML 流行后的直接产物。因为XML 可以描述数据和对象,XML 大纲可以保证XML 文档数据的有效性,因为XML 的基于文本的规范,因而XML 文档极其适合于作为一种跨平台通讯标准的基本格式。如果你还没有接触过Web服务,那么过不了多久 你肯定会碰到它,所以必须熟练掌握Web服务,最好是精通它,因为它是迄今为止应用程 序间跨不同种类机器、语言、平台和位置通讯的最简单的一种方式。不管你需不需要它,Web 服务都会是将来互用性的主要趋势。 XML工作组的John Bosak曾说过:“XML使得Java有事可做”,么/那们也可以说我eb 服务使得所有语言都有事可做。Web 服务让运行在大型机上的COBOL 应用程序与运行在 手持设备上的应用程序相互沟通;让Java小应用与。NET服务器相互通讯,让桌面应用与Web 服务器

软件开发质量保证方案

1软件开发质量保证方案 1.1 质量管理内容 1.1.1编制和评审质量计划 制定质量保证计划:依据项目计划及项目质量目标确定需要检查的主要过程和工作产品,识别项目过程中的干系人及其活动,估计检查时间和人员,并制定出本项目的质量保证计划。 质量保证计划的主要内容包括:例行审计和里程碑评审,需要监督的重要活动和工作产品,确定审计方式,根据项目计划中的评审计划确定质量保证人员需要参加的评审计划。明确质量审计报告的报送范围。 质量保证计划的评审:质量保证计划需要经过评审方能生效,以确保质量保证计划和项目计划的一致性。经过批准的质量保证计划需要纳入配置管理。当项目计划变更时,需要及时更改和复审质量保证计划。 1.1.2“过程和工作产品”的质量检查 根据质量保证计划进行质量的审计工作,并发布质量审计报告。 审计的主要内容包括:是否按照过程要求执行了相应的活动,是否按照过程要求产生了相应的工作产品。本项目中对质量的控制主要体现在不同阶段的审计当中。 1.1.3不符合项的跟踪处理 对审计中发现的不符合项,要求项目组及时处理,质量保证人员需要确认不符合项的状态,直到最终的不符合项状态为“完成”为止。

1.2 质量管理责任分配 我公司在开发项目上按照规范化软件的生产方式进行生产。每个项目除配备了项目开发所需角色外,还专门配备了质量保证小组、配置管理小组、测试小组来确保质量管理的实施,下面针对这三种角色进行说明: 1.2.1质量保证小组职责 质量保证小组作为质量保证的实施小组,在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证小组的主要职责是:以独立审查方式,从第三方的角度监控软件开发任务的执行,分析项目内存在的质量问题,审查项目的质量活动,给出质量审计报告。就项目是否遵循已制定的计划、标准和规程,给开发人员和管理层提供反映产品和过程质量的信息和数据,使他们能了解整个项目生存周期中工作产品和过程的情况,提高项目透明度,从而支持其交付高质量的软件产品。 质量保证人员依据质量保证计划,通过质量审计报告向项目经理及有关人员提出已经识别出的不符合项,并跟踪不符合项的解决过程,通过审计周报或者审计月报向项目经理提供过程和产品质量数据,并与项目组协商不符合项的解决办法。 质量保证小组的检测范围主要包括:项目的进度是否按照项目计划执行,用户需求是否得到了用户的签字确认,软件需求是否正确的反映了用户的需求,是否将每一项用户需求都映射到软件需求;系统设计是否完全反映了软件需求;实现的软件是否正确的体现了系统设计;测试人员是否进行了较为彻底的和全面的测试;客户验收和交接清单是否完备;对于系统运行中出现的问题,维护人员是否记录了详细的维护记录;配置管理员是否按照配置管理计划建立了基线,是否严格控制变更过程,是否对配置库进行了维护。 1.2.2配置管理小组职责 配置管理活动的目的是通过执行版本控制、变更控制、基线管理等规程,借

软件项目集成开发流程及文档

软件项目集成开发 一、项目组织架构 A 项目经理 负责分析、设计和协调工作。随时监控各开发人员的工作,包括内容是否与要求发生偏差,进度是否滞后等等,同时给每个开发人员明确的任务书。 在项目周期内项目经理最好不要更换。大项目需要配备专门的系统分析师和系统设计师。 B 开发人员 熟悉针对软件开发的编程工具,并具有丰富的编程经验,负责完成不同层与模块的编程工作。 开发人员数量视系统模块数量和开发难度而定。 C 业务需求人员 熟悉业务工作流程,有丰富的业务经验。 业务需求人员的选择应覆盖系统所服务的业务部门。 D 文档整理人员 随时整理系统开发过程中相关的技术文档。 作为业务支撑,文档整理人员需熟悉软件开发的流程、文档管理、文档模板。 项目组织架构 项目经理 开发人员 业务需求人员 文档整理人员 测试工程师

E测试工程师 专门进行代码的测试工作,并且计划和执行源代码复审,负责有关返工的任何反馈意见(有条件可配置)。

二、项目流程管理 系统开发的过程必须符合IT 项目开发流程的规律,整个过程应包含但不仅限于以下环节: 需求调研是软件开发的最初阶段。需求调研的结果确立了软件开发的方向。软件设计是后续开发步骤及软件维护工作的基础。 在项目实施的过程中,项目实施者大多把精力放在了编码阶段,而需求调研和系统设计往往不被重视。没有严格的需求调研和分析,最终的软件产品会偏离用户的真正需求。如果没有设计,只能建立一个不稳定的系统结构。如下图所示:

在项目实施过程中,以上各个流程都不应该被忽略(重大项目更是如此),任何一个环节的遗失都可能引起项目方向的偏差,甚至失败。项目管理者可以在此基础上,完善项目管理流程,以降低项目实施的风险。 三、项目文档管理 项目管理者必须在系统开发过程中做好项目文档管理。项目文档是项目实施的依据,也是项目设计、编码、测试、修正、培训和验收的依据。 根据以上项目流程,项目实施过程中应包含以下所必须的文档:

汽车研发的五大阶段及制造的四大工艺

汽车研发的五大阶段及制造的四大工艺 汽车研发是一个很复杂的系统工程,甚至需要上千人花费几年的时间才能完成;一款汽车从研发到投入市场一般都需要5年左右的时间。不过随着技术的不断进步,研发的周期也在缩短,当然,我们说的是正向设计,事实上很多国内的厂家都是逆向设计,但即使是逆向设计同样也需要很多的时间。我们可以仿制别人的外观,但是我们无法仿制别人的工艺,我们依然需要进行大量的机构分析、材料分析、力学分析等,依然需要去试制、测试、检测等等,这些研发的过程是无法省略的。 不同的汽车企业其汽车的研发流程略有不同,下面讲述的是正向开发的一般研发流程: 一.市场调研阶段 一个全新车型的开发需要几亿甚至十几亿的大量资金投入,如果不经过很细致的市场调研可能就会“打水漂”了;现在国内有专门的市场调研公司,汽车公司会委托他们对国内消费者的需求、喜好、习惯等做出调研,明确车型形式和市场目标,即价格策略,很多车型的失败都是因为市场调研没有做好。譬如:当年雪铁龙固执的在中国推广两厢车,而忽视了国人对“三厢”的情有独钟,致使两厢车进入中国市场太早,失去了占领市场的机会。 二.概念设计阶段 概念设计主要分三个阶段:总体布置、造型设计、制作油泥模型。 1.总体布置 总布设计是汽车的总体设计方案,包括:车厢及驾驶室的布置,发动机与离合器及变速器的布置、传动轴的布置、车架和承载式车身底板的布置、前后悬架的布置、制动系的布置、油箱、备胎和行李箱等的布置、空调装置的布置。 2.造型设计 在进行了总体布置草图设计以后,就可以在其确定的基本尺寸的上进行造型设计了。包括外形和内饰设计两部分。设计草图是设计师快速捕捉创意灵感的最好方法,最初的设计草图都比较简单,它也许只有几根线条,但是能够勾勒出设计造型的神韵,设计师通过大量的设计草图来尽可能多的提出新的创意。这个车到底是简洁、还是稳重、是复古、还是动感都是在此确定的。 当然,如果是逆向设计,则就不需要这个过程了,把别人的车型直接进行点阵扫描,然后在计算机中进行造型勾画就行了。 3. 制作油泥模型

软件开发者需要掌握的技能

软件开发者需要掌握的技能 现在,有这样一种主流观念,压垮了很多新手软件开发者,那就是你需要学习很多东西才能成为软件开发人员,并且很多人不知道从哪里开始起步。这里我会尝试着具体说明那些在你追求成为软件开发人员的路上将让你受益的必要技术技能。一篇文章当然不能详尽说明作为软件开发者,你可能需要掌握的所有技术技能,但是我会列出最关键的一些技术技能。一、编程语言我认为从这一条开始说起是最合适的。不懂编程语言,怎么能成为一个真正的程序员?不过,关于选择哪种编程语言去学习可能并没有我们想得那么重要这一点,请允许我一笔带过。相反,让我们谈一谈为什么我们要从一种编程语言开始,而不是试图去学习所有的东西。许多新手程序员会试图一次性或在第一份工作之前学习几种编程语言,以便于有备无患。虽然我认为你最终应该学会一种以上编程语言,但我不建议提前这样做,因为这只会导致混乱,并且会分散你需要学习的其他技能的精力。相反,我建议你应该深入研究,重点学习单一编程语言的来龙去脉,这样你才能对用这种编码语言来写代码信心十足。那么在你决定想要成为什么样的开发人员的时候,怎么样才能尽可能地独树一帜呢?二、如何构造代码在学习了一门编程语言之后

——或者最好是在学习的同时——我坚信,你需要知道的下一件事就是如何正确地构造你的代码。有一个很好的资源来帮助你学习这个非常宝贵的技能:Steven McConnell的《Code Complete 》。我所说的构造代码是什么意思呢?我的意思是,要写出好的,清晰的,易于理解的代码,不需要大量注释,因为代码本身就是一种表达方式。很多软件开发者在他们整个职业生涯都不曾去学习这个技能,这是不幸的,因为这是我——以及其他许多人——判断一个软件开发人员技术和能力的主要方式。良好的代码结构展示了对这种技艺的热衷,而不仅仅是为了完成工作。构建代码是软件开发真正的艺术部分,但它也是至关重要的,因为你和你的同事得花费相当多的时间来维护现有的代码,而不是编写新的代码。具体应该如何正确地组织代码我就不说了,因为我已经给出了一个很好的资源,但是要努力学习如何从一开始就写出好的、干净的代码,而不是事后学习这个技能。我只能保证,即使你是个新手,如果你可以写出好的、干净又简洁的、易懂的,本身就可以表达意思的代码,那么任何面试官看到你的代码都会觉得你是一个有经验的专业人士。并且在一定程度上,或者至少在这条道路上,因为你会将这个职业当作一种专业,而不是一份工作。 三、面向对象的设计这一条是有争议的,特别是如果你正在学习的编程语言并不面向对象,但是有大量的软件开发

软件开发质量保证方案

2 软件开发质量保证方案 (1) 2.1 质量管理内容 (1) 2.1.1 编制和评审质量计划 (1) 2.1.2 “过程和工作产品”的质量检查 (2) 2.1.3 不符合项的跟踪处理 (2) 2.2 质量管理责任分配 (2) 2.2.1 质量保证小组职责 (2) 2.2.2 配置管理小组职责 (3) 2.2.3 测试小组职责 (3) 2.3 质量保证措施 (4) 2.3.1 项目进度 (4) 2.3.2 需求分析 (5) 2.3.3 系统设计 (6) 2.3.4 系统实现 (6) 2.3.5 系统测试 (7) 2.3.6 系统维护 (8) 1 2软件开发质量保证方案 2.1 质量管理内容 2.1.1编制和评审质量计划 制定质量保证计划:依据项目计划及项目质量目标确定需要检查的主要过程和工作产品,识别项目过程中的干系人及其活动,估计检查时间和人员,并制定出本项目的质量保证计划。 质量保证计划的主要内容包括:例行审计和里程碑评审,需要监督的重要活

动和工作产品,确定审计方式,根据项目计划中的评审计划确定质量保证人员需要参加的评审计划。明确质量审计报告的报送范围。 质量保证计划的评审:质量保证计划需要经过评审方能生效,以确保质量保证计划和项目计划的一致性。经过批准的质量保证计划需要纳入配置管理。当项目计划变更时,需要及时更改和复审质量保证计划。 2.1.2“过程和工作产品”的质量检查 根据质量保证计划进行质量的审计工作,并发布质量审计报告。 审计的主要内容包括:是否按照过程要求执行了相应的活动,是否按照过程要求产生了相应的工作产品。本项目中对质量的控制主要体现在不同阶段的审计当中。 2.1.3不符合项的跟踪处理 对审计中发现的不符合项,要求项目组及时处理,质量保证人员需要确认不符合项的状态,直到最终的不符合项状态为“完成”为止。 2.2 质量管理责任分配 我公司在开发项目上按照规范化软件的生产方式进行生产。每个项目除配备了项目开发所需角色外,还专门配备了质量保证小组、配置管理小组、测试小组来确保质量管理的实施,下面针对这三种角色进行说明: 2.2.1质量保证小组职责 质量保证小组作为质量保证的实施小组,在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证小组的主要职责是:以独立审查方式,从第三方的角度监控软件开发任务的执行,分析项目内存在的质量问题,审查项目的质量活动,给出质量审计报告。就项目是否遵循已制定的计划、标准和规程,给开发人员和管理层提供反映产品和过程质量的信息和数据,使他们能了解整个项

开发文档介绍

开发文档介绍 软件开发文档是软件开发使用和维护过程中的必备资料。它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导,帮助,解惑的作用,尤其在维护工作中,文档是不可或缺的资料。 软件文档可以分为开发文档和产品文档两大类。 开发文档包括:《功能要求》、《投标方案》、《需求分析》、《技术分析》、《系统分析》、《数据库文档》、《功能函数文档》、《界面文档》、《编译手册》、《QA 文档》、《项目总结》等。产品文档包括:《产品简介》、《产品演示》、《疑问解答》、《功能介绍》、《技术白皮书》、《评测报告》。用户文档《安装手册》、《使用手册》、《维护手册》、《用户报告》、《销售培训》等。 开发文档 1. 《功能要求》-- 来源于客户要求和市场调查,是软件开发中最早期的一个环节。 客户提出一个模糊的功能概念,或者要求解决一个实际问题,或者参照同类软件的一个功能。有软件经验的客户还会提供比较详细的技术规范书,把他们的要求全部列表书写在文档中,必要时加以图表解说。这份文档是需求分析的基础。 2. 《投标方案》-- 根据用户的功能要求,经过与招标方沟通和确认,技术人员开 始书写《投标方案》,方案书一般包括以下几个重要的章节:前言-- 项目背景、公司背景和业务、技术人员结构、公司的成功案例介绍等。需求分析-- 项目要求、软件结构、功能列表、功能描述、注意事项等。技术方案-- 总体要求和指导思想、技术解决方案、软件开发平台、网络结构体系等。项目管理-- 描述公司的软件开发流程、工程实施服务、组织和人员分工、开发进度控制、软件质量保证、项目验收和人员培训、软件资料文档等。技术支持-- 公司的技术支持和服务介绍、服务宗旨和目标、服务级别和响应时间、技术服务区域、技术服务期限、授权用户联系人等。系统报价-- 软、硬件平台报价列表、软件开发费用、系统维护费用等。项目进度-- 整个项目的进度计划,包括签署合同、项目启动、需求分析、系统分析、程序开发、测试维护、系统集成、用户验收、用户培训等步骤的时间规划。 3. 《需求分析》-- 包括产品概述、主要概念、操作流程、功能列表和解说、注意 事项、系统环境等。以《功能要求》为基础,进行详细的功能分析( 包括客户提出的要求和根据开发经验建议的功能) ,列出本产品是什么,有什么特殊的概念,包括哪些功能分类,需要具备什么功能,该功能的操作如何,实现的时候该注意什么细节,客户有什么要求,系统运行环境的要求等。这里的功能描述跟以后的使用手册是一致的。 4. 《技术分析》-- 包括技术选型、技术比较、开发人员、关键技术问题的解决、 技术风险、技术升级方向、技术方案评价,竞争对手技术分析等。以《需求分析》为基础,进行详细的技术分析( 产品的性能和实现方法) ,列出本项目需要使用什么技术方案,为什么,有哪些技术问题要解决,估计开发期间会碰到什么困难,技术方案以后如何升级,对本项目的技术有什么评价等。 5. 《系统分析》-- 包括功能实现、模块组成、功能流程图、函数接口、数据字典、 软件开发需要考虑的各种问题等。以《需求分析》为基础,进行详细的系统分析( 产

软件项目技术路线

软件项目技术路线 篇一:大型软件系统技术路线分析 大型软件系统技术路线分析 纵观全球大型软件系统软件系统技术发展路线,历经了二十多年的时间,逐步从vb、.NET向J2EE java全面迁移,迄今为止,所有的集团客户和高端政府机关在大型软件系统技术的选择上,几乎清一色的选择JAVA品台,而且面向集团化的大型软件系统定位的企业,如九思软件、东软集团,也统统在此路线上完成系统的架构和功能设计。 在国外,JAVA技术已成为解决大型应用的事实标准,符合J2EE规范的应用服务器则是构建面向对象的多层企业应用的中间核心平台。因其具有易移植性,广开放性、强安全性和支持快速开发等特性,成为面向对象开发组织应用的首选平台。参照文档如下:基于J2EE应用服务器支持EJB组件开发技术,包括消息队列、负载均衡机制和交易管理等。支持中大型网站和中大型组织应用等需要大规模跨平台、网络计算的领域。软件构造有几个不可逆转的发展方向:XML数据结构、面向对象的构件技术、网络化应用。其中Java 因为与平台无关、安全、稳定、易开发、好维护、很强的网络使用性等, 而成为主流环境。J2EE是企业级应用的标准。 J2EE平台提供了一个基于组件的方法,来设计、开发、装配及部署企业级应用程序,并提供了多层的分布式的应用模型、组件再用、一致化的安全模型以及灵活的事务控制机制。使之具有重用的能力,并集成了基于XML的数据交换一个统一的安全模式及灵活的事务控制。 J2EE应用程序由组件构成。一个J2EE组件是自包含的,与其相关的语气它组件通信的类及文件集成到J2EE应用程序的功能软件单元。J2EE规范定义了下面一些组件:1)、运行在客户端的应用客户程序及小程序。 2)、运行于服务器网络的Servlet&Jsp组件。 3)、运行于服务端的企业逻辑组件。 J2EE组件用Java语言编写,通过相同的方法编译。J2EE组件与标准Java类的不同之处在于J2EE组件集成到了应用程序中,与J2EE规范兼容,并部署到负责运行、管理的J2EE服务器上。 基于J2EE企业级应用服务器的结构 基于J2EE的企业级应用服务器是基于Web Services 的新一代应用服务器。在设计上突出了XML的应用,比如XML在本地化的存储及各种处理;通过SOAP与.NET及通过IIOP 与CORBA的连接等。 Web Server 基于对本系统需求的深入分析,我们建议采用B/A/D应用模式,这样,这样,跨系统平台、性能优异的Web Server是我们必须要认真考虑的。 Servlets 是网络化的组件, 被应用于网络服务器的功能的扩展。它从客户主机(如: 浏览器)得到命令和要求,并将内容反馈给主机,实现从HTML界面传递到网络商务系列。无论如何, Servlets是不必要连接到网络服务器上的,它们可被作为普通的命令要求组件,Servlets 更适合于实现简单要求的需要,并且不需要应用软件服务器的管理。 JSP与Servlets非常相似。事实上, 它们的最大区别是JSP为非纯Java代码, 更易于感知。如果希望看到并感觉到配置是与其它配置分开的, 并且易于维护, 可以使用JSP,JSP 擅长于此,它们易于被编写及维护。 XML 当前,对XML的技术应用如火如荼,在我们的系统解决方案中,XML技术的应用也是不可缺的重要组成部分,这就要求我们选择的技术架构必须提供对XML技术强大支持。

软件开发技术常用术语

软件开发技术常用术语 A.I. 人工智能 A2A integration A2A整合 abstract 抽象的 abstract base class (ABC)抽象基类 abstract class 抽象类 abstraction 抽象、抽象物、抽象性 access 存取、访问 access function 访问函数 access level访问级别 account 账户 action 动作 activate 激活 active 活动的 actual parameter 实参 adapter 适配器 add-in 插件 address 地址 address space 地址空间 address-of operator 取地址操作符 ADL (argument-dependent lookup) ADO(ActiveX Data Object)ActiveX数据对象 advanced 高级的 aggregation 聚合、聚集 algorithm 算法 alias 别名 align 排列、对齐 allocate 分配、配置 allocator分配器、配置器 angle bracket 尖括号 annotation 注解、评注 API (Application Programming Interface) 应用(程序)编程接口 app domain (application domain)应用域 appearance 外观 append 附加 application 应用、应用程序 application framework 应用程序框架 Approximate String Matching 模糊匹配 Arbitrary Precision Arithmetic 高精度计算 architecture 架构、体系结构 archive file 归档文件、存档文件

软件项目实施保障措施

项目实施保证 为确保项目的顺利开展和实施,我们分别制定了项目组人员保证方案和软件开发质量保证方案以及项目进度保证方案。 1项目组人员保证方案 为确保项目的顺利开展和实施,项目组的人员配备既有高层次的技术带头人(专家、教授等),也有中坚力量(博士、工程师、研发经理等),还有一般工作人员(具体开发设计工作的人员、试验人员、管理人员等),并实行项目经理、技术负责人质量负责制,加强技术管理的有效性和研发过程的科学性、准确性。 2软件开发质量保证方案 2.1质量管理内容 2.1.1 编制和评审质量计划 制定质量保证计划:依据项目计划及项目质量目标确定需要检查的主要过程和工作产品,识别项目过程中的干系人及其活动,估计检查时间和人员,并制定出本项目的质量保证计划。 质量保证计划的主要内容包括:例行审计和里程碑评审,需要监督的重要活动和工作产品,确定审计方式,根据项目计划中的评审计划确定质量保证人员需要参加的评审计划。明确质量审计报告的报送范围。

质量保证计划的评审:质量保证计划需要经过评审方能生效,以确保质量保证计划和项目计划的一致性。经过批准的质量保证计划需要纳入配置管理。当项目计划变更时,需要及时更改和复审质量保证计划。 2.1.2 “过程和工作产品”的质量检查 根据质量保证计划进行质量的审计工作,并发布质量审计报告。 审计的主要内容包括:是否按照过程要求执行了相应的活动,是否按照过程要求产生了相应的工作产品。本项目中对质量的控制主要体现在不同阶段的审计当中。 2.1.3 不符合项的跟踪处理 对审计中发现的不符合项,要求项目组及时处理,质量保证人员需要确认不符合项的状态,直到最终的不符合项状态为“完成”为止。 2.2质量管理责任分配 我公司在开发项目上按照规范化软件的生产方式进行生产。每个项目除配备了项目开发所需角色外,还专门配备了质量保证小组、配置管理小组、测试小组来确保质量管理的实施,下面针对这三种角色进行说明: 2.2.1 质量保证小组职责 质量保证小组作为质量保证的实施小组,在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证小组的主要职责是:以独立审查方式,从第三方的角度监控软件开发任务的执行,分析项

软件开发技术文档

病案无纸化管理系统 目录: 一、系统简介 二、组织框架 三、物流与功能流程 、系统简介 二、组织框架 1. 机构

1.1、层次 共分三级:公司级、分店部门级和班组织。如图1-1 1.2、现有机构组成 公司级:总经理室; 部门级:分布在具体地区的连锁店(加盟店、特许店),公司各职能部门(人事行政部,财务部、信息管理部、市场营销采购部、企划管理部等)、配送中心班组级:分店和配送中心的管理班组; 1.3、职能与权限 下面我只对与系统开发有关的机构职能进行阐述(按层次说明): 公司级: 1.3.1、总经理室 1.3.1.1、制定公司整体发展策略; 131.2、批准销售计划;协调公司内各部门的工作; 131.3、管理监督和指导下属各分店(部门)的工作; 131.4、决定公司高层人事的变动; 1.3.1.5、分析公司的销售、库存、采购、付款等情况;

1.3.1.6、批准各分店和配送中心的盘点、损益报告及价格政策公司部门级: 1.3.2、人事行政部 1.3. 2.1、负责人员的工资考勤、招聘、培训、建档、考核、晋级、定级、奖惩和解聘; 1.3. 2.2、管理全公司的固定资产以及办公用品 1.3.3、财务部 1.3.3.1、处理公司日常财务事宜; 1.3.3.2、根据销售数据和总经理室或市场营销采购部的要求支付货款,并记录货款流水; 1.3.3.3、根据合同(协议)制定出财务付款计划;对进出发票进行管理; 1.3.3.4、根据分店和配送中心提供的销售、进货、配送、退货、退厂、调价、优惠、损益、报残、盘点数据,对公司进、销、存按进价和售价进行核算; 1.3.4、财务部市场营销采购部 1.3.4.1、实施商品的引进、退货、更新、定位和淘汰; 1.342、制定价格政策(调价和优惠)和促销计划(方案)并付诸实施; 1.3.4.3、为总经理室和其他部门提供相关报表和数据; 1.344、制定付款计划报总经理批准后交财务部实施;

软件开发技术方向(精)

软件开发技术方向 1.培养目标: 本方向以培养学生良好的软件分析、设计、开发、维护、测试等研发能力为目标,通过模块化的学习,使其具备扎实的技术基础、良好的技术素质和优秀的技术应用能力。本专业要求能够运用先进的软件设计方法、开发方法和工程管理方法,进 行软件设计与编程、项目的规范管理和项目的交流与组织协调,同时具备团队协作 精神、技术创新、项目管理和市场开拓能力,能够胜任大中型软件开发和管理的工 程型软件开发工作。 2.培养技能: 1以软件分析、设计、开发、维护、测试等工程研发能力为培养目标; 2使学生对于Java或.net编程语言深入了解和掌握,深刻理解面向对象编程思想; 3使学生对J2EE或.net技术体系有全面的了解,熟练掌握和使用主流框架开发 N层企业级项目; 4培养学生设计和搭建软件开发项目系统架构(平台、数据库、接口和应用架 构和解决开发中各种系统架构问题的能力; 5使学生对企业的项目的开发及管理模式有深入的理解及体验,具有更强的项目开发及团队合作能力; 6让学生通过职业素养的熏陶及培训,获得良好的职业素养、规范的职业工作习惯以及较强的工作能力; 3.主要方向课程(软件工程专业的必修环节外: ?编译原理 ?软件工程形式化方法

?软件设计与体系结构 ?软件开发方向企业定制课程 4.就业趋势: 随着社会的发展,软件开发行业已经成为一个象征高薪的职业,随着软件业的快速发展,软件开发专业人才的人数逐年增长。未来几年,国内外高层次软件人才将供不应求。毕业生主要在各大软件公司、企事业单位、高等院校、各大研究所、国防等重要部门从事软件设计、开发、应用与研究工作,有数据表明,我国软件出口规模达到215亿元,软件从业人员达到72万人,在中国十大IT职场人气职位中,软件工程师位列第一位,软件工程人才的就业前景十分乐观。 就业岗位类型:1 程序开发工程师;2 需求分析师;3 实施工程师;4 售后支持工程师;5 测试工程师等等。 可胜任具体如下岗位:Java软件开发工程师、Java软件测试工程师、Java实施工程师、.NET软件开发工程师、.NET 软件测试工程师、Java网络编程工程师、网站开发、网站维护、就业于电信、金融、保险及大型企业的IT部门,从事海量数据及分布式运算的企业级应用软件开发等等。

软件研发部岗位职责

技术部门岗位职责2 软件研发部 2.1 部门职责 1.应用软件开发方向规划; 2.应用软件开发工具选购; 3.软件系统整体方案规划; 4.应用软件系统开发设计; 5.软件系统测试规划实施; 6.应用软件系统项目评审; 7.应用软件项目疑难问题处理; 8.应用软件疑难故障分析处理; 9.软件人力资源组织/考评; 10.应用软件开发团队组织; 11.应用软件工程师集训学习; 12.应用软件体系框架设计与定制; 13.应用软件技术积累与探索; 14.应用软件开发技术规范编制; 15.应用软件的技术资料管理; 16.应用软件知识产权等相关文档编制; 17.应用软件的鉴定、认证; 18.应用软件的质量体系认证。

2.2 部门经理职责 1.全面负责软件研发部日常管理工作; 2.规范软件体系设计,监督相应的设计开发过程; 3.负责建立软件系统资源库,实现资源重用; 4.负责软件研发团队建设和技术人员的招聘、培养与考评; 5.制定和落实部门项目研发开发计划,总体掌握研发进度。 6.确定软件部技术研究方向,组织人员对关键技术进行攻关和积累; 7.指导/评审/公司项目软件部分的开发活动; 8.解决公司产品线中相关的技术难题,提供技术支持; 9.统筹协调软件研发部与其它部门的关系; 10.负责相关技术资料的整理; 11.负责相关知识产权等技术文档编制; 12.完成公司交办的其它工作。 2.3 部门副经理职责 1.协助经理完成日常管理工作; 2.完成分管的方面技术工作; 3.经理不在时,代经理处理部门事务; 4.按计划推进自己负责项目的实施; 5.参与指导/评审/公司项目应用软件部分的开发活动; 6.协助经理进行团队建设、人员培养和考评; 7.负责相关技术领域的技术积累和整理;

项目质量保证措施与进度保证措施方案

3、项目质量保证措施及进度保证措施 为确保项目的顺利开展和实施,我们分别制定了项目组人员保证方案和软件开发质量保证方案以及项目进度保证方案。 3.1项目组人员保证方案 为确保项目的顺利开展和实施,项目组的人员配备既有高层次的技术带头人,也有中坚力量(高级工程师、研发经理等),还有一般工作人员(具体开发设计工作的人员、试验人员、管理人员等),并实行项目经理、研发技术负责人质量负责制,加强研发技术管理的有效性和研发过程的科学性、准确性。 3.2软件开发质量保证方案 3.2.1质量管理内容 3.2.1.1 编制和评审质量计划 制定质量保证计划:依据项目计划及项目质量目标确定需要检查的主要过程和工作产品,识别项目过程中的干系人及其活动,估计检查时间和人员,并制定出本项目的质量保证计划。 质量保证计划的主要内容包括:例行审计和里程碑评审,需要监督的重要活动和工作产品,确定审计方式,根据项目计划中的评审计划确定质量保证人员需要参加的评审计划。明确质量审计报告的报送范围。 质量保证计划的评审:质量保证计划需要经过评审方能生效,以确保质量保证计划和项目计划的一致性。经过批准的质量保证计划需要纳入配置管理。当项目计划变更时,需要及时更改和复审质量保证计划。

3.2.1.2“过程和工作产品”的质量检查 根据质量保证计划进行质量的审计工作,并发布质量审计报告。 审计的主要内容包括:是否按照过程要求执行了相应的活动,是否按照过程要求产生了相应的工作产品。本项目中对质量的控制主要体现在不同阶段的审计当中。 3.2.1.3不符合项的跟踪处理 对审计中发现的不符合项,要求项目组及时处理,质量保证人员需要确认不符合项的状态,直到最终的不符合项状态为“完成”为止。 3.3质量管理责任分配 我公司在开发项目上按照规范化软件的生产方式进行生产。每个项目除配备了项目开发所需角色外,还专门配备了质量保证小组、配置管理小组、测试小组来确保质量管理的实施,下面针对这三种角色进行说明: 3.3.1 质量保证小组职责 质量保证小组作为质量保证的实施小组,在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证小组的主要职责是:以独立审查方式,从第三方的角度监控软件开发任务的执行,分析项目内存在的质量问题,审查项目的质量活动,给出质量审计报告。就项目是否遵循已制定的计划、标准和规程,给开发人员和管理层提供反映产品和过程质量的信息和数据,使他们能了解整个项目生存周期中工作产品和过程的情况,提高项目透明度,从而支持其交付高质量的软件产品。 质量保证人员依据质量保证计划,通过质量审计报告向项目经理及有关人员提出已经识别出的不符合项,并跟踪不符合项的解决过程,通过审计周报或者审计月报向项目经理提供过程和产品质量数据,并与项目组协商不符合项的解决办法。

BST3.0应用软件开发平台技术手册范本

B S T3.0应用软件开发平台 用户技术手册 南天电子信息产业股份 FED软件中心

目录 概述 第一部分 BST3.0应用软件开发平台基本功能 第一章BST3.0软件开发平台的结构和流程控制第二章系统命令 第三章变量操作命令 第四章字符串操作命令 第五章文件操作命令 第六章屏幕(SCREEN)表配置和命令 第七章存折打印机(PR2) 配置和命令 第八章刷卡器(BP) 配置和命令 第九章FIT表配置和命令 第十章流水打印机配置和命令 第十一章读卡机命令 第十二章IC卡命令和配置表 第十三章辅助模块命令和配置 第十四章通信命令 第十五章添加设备的命令接口 第二部分 BST3.0应用软件二次开发 第一章用户自定义命令的开发 第二章通信动态库的开发 第三章调试 第三部分 BST3.0 SCRIPT使用手册

概述 BST3.0应用软件开发平台是在BST2.0应用软件开发平台的基础上,根据BST 应用需求,增加了屏幕部分对WEB和FLASH的支持,增加了嵌的解释器,支持SCRIPT 编程模式,以及单步和屏幕重试功能。BST3.0应用软件开发平台更稳定,具有更好的扩展性,更容易完成BST 应用系统的开发。为熟练使用BST3.0应用系统软件开发平台进行二次开发,对此平台结构及功能模块应有充分了解,为缩短二次开发周期,请有关人员仔细阅读本手册。 因时间仓促,有不足之处,请使用者谅解,并将需要改善的意见反馈给FED 软件中心,帮助BST3.0应用系统软件开发平台的完善。

第一部分 BST3.0应用软件开发平台基本功能 第一章 BST3.0开发平台的结构和基本功能 1.1 BST3.0软件开发平台的组成部分 BST3.0软件开发平台功能完善、定制灵活、便于二次开发及其测试维护,它是由接口清晰且相互独立的子功能模块有机地结合在一起而行成的。 BST3.0软件开发平台由以下几个大的部分组成: 1.系统主控模块 协调平台部各功能模块的工作。 2.设备控制模块 由一系列与具体设备相应的设备控制模块组成,每一个设备控制模块对应于一个相应的硬件设备模块,在BST应用系统中,设备是一个广义上的设备,除传统上的外部设备如打印机、BP、读卡机等设备外,还有一些特殊的设备,如屏幕设备,在系统中称之为“screen”,它实际上包括了显示器、键盘和鼠标的输入输出,这三个设备是在“screen”设备中统一处理的。另外,还有通信设备(实际上是通信子系统,它被当作一个设备操作)和时间设备(“time”,用于检测退出时间是否到达)等。 3.设备接口模块 负责屏蔽BST应用系统中设备的硬件特性,使用统一的方式(统一的接口)对设备进行操作。应用系统使用设备时通过设备接口模块操作设备,可保证以同样方式操作所有设备。 4.流程控制模块 负责应用系统的流程控制,完成特定交易控制,接受主机命令,保存程序运行状态的文件等。 5.通信处理子系统 以操作设备的方式完成BST应用系统与主机间的通信。

相关文档
最新文档