核心代码

2024-09-30

核心代码(共7篇)

核心代码 篇1

4月8日, 山西省代码条码工作会议在太原召开, 山西省质量技术监督局党组成员、副局长王国强出席会议并讲话。会议传达了全国代码条码工作会议精神, 表彰了一批先进集体和先进个人。会议提出, 下一阶段的山西省代码条码工作要巩固核心业务, 发挥独特作用, 创出一片新天地。

会上, 山西省标准化研究院院长武忠生对2012年度全省代码条码工作进行了总结, 分析了当前政府机构改革给代码条码工作带来的机遇、挑战及当前存在的问题, 安排部署了2013年度各项工作任务。要求全省各级代码条码机构全力以赴、务实创新, 将基础工作做实做好, 积极探索应用新领域, 配合省质监局做好企业信用档案库建设工作, 并努力提升科研和服务社会能力, 推动山西省代码条码工作迈上新台阶。

王国强副局长对2012年度山西省代码条码工作在围绕全省经济发展、质量监管等方面所作的工作及取得的成绩给予充分肯定, 要求全省各级代码条码机构要紧紧抓住政府机构改革和职能转变给代码条码工作带来的机遇, 坚定科学发展的信心和决心, 统一思想、提高认识、夯实基础、拓展领域, 用标准化的理念和手段推动山西代码条码工作再上新水平, 实现新跨越。

根据2012年山西省组织机构代码管理中心、中国物品编码中心山西分中心与各市代码管理机构、条码工作站签订的《目标管理责任书》的完成情况, 经过认真考核评比, 评选出17个代码工作先进单位、6个条码工作先进单位和29名代码、条码先进工作者。

被评为先进单位的是:

一等奖:

阳泉市组织机构代码管理中心

运城市条码工作站

二等奖:

晋中市组织机构代码管理中心

太原市组织机构代码管理中心

朔州市条码工作站

晋城市条码工作站

三等奖:

忻州市组织机构代码管理中心

吕梁市组织机构代码管理中心

朔州市组织机构代码管理中心

长治市条码工作站

大同市条码工作站

晋中市条码工作站

先进单位:

清徐县质量技术监督局代码办

大同市南郊区质量技术监督局代码办

潞城市质量技术监督局代码办

阳泉市郊区质量技术监督局代码办

阳城市质量技术监督局代码办

右玉县质量技术监督局代码办

太谷县质量技术监督局代码办

稷山县质量技术监督局代码办

宁武县质量技术监督局代码办

古县质量技术监督局代码办

交口县质量技术监督局代码办

核心代码 篇2

托管代码调用非托管代码, 必定存在参数传递问题, 但其参数传递方法不仅与托管代码之间参数传递方法不同, 而且与托管代码之间参数传递方法也不相同。.NET平台提供了多种参数传递方法, 本文就托管代码调用非托管代码及其参数传递的实现方法进行了研究。

1 托管代码调用非托管代码的方法

托管代码可以通过静态 DLL 入口点的方式来访问非托管代码, DllImport 属性用于指定包含外部方法实现的DLL名称。DllImportAttribute是System.Runtime.InteropServices命名空间的一个属性类, 它提供对从非托管 DLL 导出的函数进行调用所必需的信息, 除必须提供包含入口点的DLL名称外, 其它参数都是可选的。用DllImport属性修饰的方法必须具有static和extern修饰符。

假定动态链接库Test.DLL导出的非托管代码C函数声明如下:

extern “C” __declspec (dllexport) void WINAPI setInt (int value) ;

则C#类中声明外部方法为:

[DllImport ("Test") ]

static extern void setInt (int value) ;

C#代码中, 该方法只有声明, 没有实现。

2 数据传递的各种方法

2.1 基本数据类型参数传递

基本数据类型包括整型、浮点型、布尔型、字符型, C#和C/C++之间存在这些数据类型的对应关系。

2.1.1 参数传入

以C的unsigned int为例, 假定动态链接库Test.DLL导出的非托管代码C函数声明如下:

extern “C” __declspec (dllexport) void WINAPI setUInt (unsigned int value) ;

则C#类中声明外部方法为:

[DllImport ("Test") ]

static extern void setUInt (uint value) ;

该方法只能将托管代码的参数传递到非托管代码。

2.1.2 参数传出

以C的double为例, 假定动态链接库Test.DLL导出的非托管代码C函数声明为:

extern “C” __declspec (dllexport) void WINAPI calc (double* value) ;

或extern “C” __declspec (dllexport) void WINAPI calc (double& value) ;

则C#类中声明外部方法为:

[DllImport ("Test") ]

static extern void calc (ref double value) ;

该方法既能将托管代码的参数传递到非托管代码, 也能将非托管代码的参数返回到托管代码。如果不需要将托管代码的参数传入非托管代码, 则只需要将C#类声明方法参数的ref修改为out即可。

2.1.3 函数返回值传递

如果函数返回值为基本数据类型, 则只需要将void修改为相应的数据类型即可。如果返回值为基本数据类型指针, 则需要将void修改为IntPtr, 并且需要调用System.Runtime.InteropServices.Marshal类的相应方法进行处理。

2.2 字符串参数传递

字符串是应用程序中常用的数据类型, .NET平台提供了string类型。因此字符串参数的传递实际上是.NET的string类型和C/C++中的char[]或char*类型的传递。

2.2.1 参数传入

假定动态链接库Test.DLL导出的非托管代码C函数声明如下:

extern “C” __declspec (dllexport) void WINAPI setString (const char * value) ;

则C#类中声明外部方法为:

[DllImport ("Test") ]

static extern void setString (StringBuilder value) ;

该方法只能将托管代码的参数传递到非托管代码。

2.2.2 参数传出

假定动态链接库Test.DLL导出的非托管代码C函数声明如下:

extern “C” __declspec (dllexport) void WINAPI setString (char * value) ;

则C#类中声明外部方法为:

[DllImport ("Test") ]

static extern void setString (ref StringBuilder value) ;

该方法既能将托管代码的参数传递到非托管代码, 也能将非托管代码的参数返回到托管代码。如果不需要将托管代码的参数传入非托管代码, 则只需要将C#类声明方法参数的ref修改为out即可。

2.2.3 函数返回值传递

如果函数返回值为字符串, 则只需要将void修改为IntPtr, 并且需要调用System.Runtime.InteropServices.Marshal类的相应方法进行处理。

2.3 结构参数传递

基本数据类型和字符串参数只能传递一个数据项, 当数据项较多时, 一般采用结构来描述。传递结构参数时, 必须在C#代码中声明与C/C++结构相对应的结构, 而且考虑效率因素, 一般通过指针或引用传递。如标识屏幕位置的C#结构声明为:

public struct Pos

{

public int x;

public int y;

}

2.3.1 参数传递

假定动态链接库Test.DLL导出的非托管代码C函数声明如下:

extern “C” __declspec (dllexport) void WINAPI movePos (Pos* dest) ;

或extern “C” __declspec (dllexport) void WINAPI movePos (Pos& dest) ;

则C#类中声明外部方法为:

[DllImport ("Test") ]

static extern void movePos (ref Pos dest) ;

2.3.2 函数返回值传递

如果函数返回值为基本数据类型, 则只需要将void修改为IntPtr, 并且需要调用System.Runtime.InteropServices.Marshal类的相应方法进行处理。

2.4 回调函数传递

回调函数在Windows API中经常用到, 其调用关系如图1所示:

假定动态链接库Test.DLL导出的非托管代码C函数声明如下:

typedef void (_WINAPI *callback) (int value) ;

extern “C” __declspec (dllexport) void WINAPI callFunc (callback fn) ;

在C#代码中, 首先要定义委托函数类型public delegate void callback (int value) ;

然后在C#类中声明外部方法callFunc和回调函数实现方法callbackImpl:

[DllImport ("Test") ]

static extern void callFunc (callback fn) ;

static void callbackImpl (int value)

{

Console.WriteLine ("callbackImpl paramter value = {0}.", value) ;

}

采用以下方式调用callFunc方法:callFunc (new callback (callbackImpl) 。回调函数对参数的处理方法与2.1到2.3所述相同。

摘要:基于.NET平台的应用程序开发, 经常会需要调用Windows API等非托管代码DLL, 托管代码和非托管代码之间的参数传递是一个不可缺少的环节。.NET平台提供了多种参数传递方法, 每种方法都有其适用范围, 就托管代码调用非托管代码及其参数传递方法进行了探讨。

关键词:托管代码,非托管代码,调用,参数传递,C#

参考文献

[1]Christian Nagel.C#高级编程 (第4版) [M].李敏波, 译.北京:清华大学出版社, 2006.

[2]Microsoft Corporation, CSharp Language Specification[EB/OL].http://download.microsoft.com/download/3/8/8/388e7205-bc10-4226-b2a8-75351c669b09/csharp%20language%20specification.doc.

[3]Microsoft Corporation.平台调用教程[EB/OL].http://msdn.mi-crosoft.com/zh-cn/library/aa288468 (VS.71) .aspx.

核心代码 篇3

影片《肖申克的救赎》的情节颇为简单,讲述一个银行家安迪被诬陷入狱以后,和监狱里的小贩瑞德成了好友,他最终越狱成功,并将贪污、残暴的监狱长送上了审判席。《肖申克的救赎》并非是展示如何精巧越狱的作品,所有的越狱情节都是在结尾部分用倒叙的形式一鼓作气地将所有之前的铺垫细节串起。

一、知觉代码与剧情

所谓知觉代码是作为一种基本的知觉产物,它又是电影中最为常见的和最基本的一种代码,同时也是物质元素。物理学中我们眼睛所看到的是物种发出的光射入眼睛所形成的。与我们平时所知的“所见即所得”包涵的意义并不相同。阿恩海姆认为:“一个物体的形状,从来就不是这个物体落在眼睛上的形状决定的。”[1]有学者指出,当我们站在远处,看一匹斑马,虽然看不清楚斑马的确切形态与其他形态特征,但是只要我们观察记录它的两个特点:黑白相间的条纹和四条腿就足够了。因此,知觉代码不光是物质世界的反应,还包涵着自己独一无二的信息。

电影《肖申克的救赎》中,知觉代码的运用十分丰富。首先电影的开始部分,我们可以看到主人公安迪在车中酗酒,并且手持手枪同时正在装子弹。虽然没有看到安迪杀人,但是像枪这样的物质会给观众产生一定的意识,那就是主人公要杀人,杀人就会犯罪。

当影片展现到后来,不难发现瑞德是一个在监狱很有能力的人物,可以给狱友弄到格式各样的东西,如香烟、海报还有锤子等。观影者会对瑞德产生某种依赖。其中最重要的是锤子,我们知道锤子是用来凿东西的。安迪向瑞德要锤子,因为他要雕刻石头来打磨监狱中的无聊时光。但是我们认为锤子不仅用来雕刻石头,同时也可以凿墙壁。这时锤子作为一种知觉代码,为我们提供信息,从而推动剧情的发展。

当安迪从禁闭中出来后对瑞德说,他要从监狱出去就会从海边偷渡出国,修葺一条租来的船,在海边度过余生并且让瑞德记住一个地名。这时,常年生活在监狱的瑞德很难理解主人公的言外之意,只是感觉安迪今天有些特别。但是作为观众,我们从这些话语中可以体会到安迪的言外之意那就是他要越狱。这就是语言作为一种知觉代码给我们传递的信息。

二、色调代码与剧情

在日常生活中,科学家发现对不同的颜色人会产生不同的心理和生理感受。例如紫色让人感觉神秘和高贵;绿色给人一种希望、和平、宁静、清新的感觉;红色代表激情和温暖。这就是所谓的心理联想,它不是无故产生的。科学家发现,不同的颜色射入人的眼睛时,会使人产生不同的生理反应。[2]例如心理学家弗艾雷研究发现,彩色光射入人眼时,肌肉会出现收缩现象同时加快血液循环;那么波长越长越明显,波长越短这种现象越不明显。总而言之,长波长的色彩能引起扩张反应;反之收缩反应是由短波长光引起。也即人对色彩反应的是被动的刺激做出的反应。[2]

当这种对色彩的理解运用到电影中时,它不仅可以反应电影的基调还可以积极的推动电影叙事的进行。正如热拉尔·贝东在《电影美学》中分析的那样:“色彩可以向我们展示仁慈情感和印象,可以作用于我们的思想和精神;因此它可以用来推动剧情的发展,直接参与观众的心理氛围的形成。因此电影的色彩具有异常奇妙的心理暗示与叙事价值。[3]

在电影《肖申克的救赎》开始部分,以安迪在车中的场景为例,这时画面偏红色并略带黑色,让观众感觉主人公此时有一种压抑和难以抑制的激动的冲动,加之手中的枪,就不难推断出安迪要做什么。

当安迪刚入狱时,一排犯人站在一个黑色的空间中听典狱长训话。此时的黑色让观众产生一种表示凄惨、悲伤、忧愁的感受,这一色彩不就正反应了当时主人公内心的想法。同时让观众推测安迪的狱中生活会十分的艰苦。

当安迪越狱时,画面中不时出现闪电划破漆黑的夜空。而此时的闪电是白色的,与夜空的黑色呈现极大反差,给观众一种压抑许久即将爆发的感觉。当安迪出狱后,画面急转而亮,光亮的衣服,鲜亮的鞋子,和红色轻快的跑车给人一种舒适和畅快感,从而有效地推动观众的观影体验和电影叙事的进行。

三、风格代码与剧情

所谓风格代码对于影片来说代表导演的叙事风格和特点,以及自己的美学理想、技术特性。从影片的开始到结束,风格代码始终贯穿其中。风格代码包括取景角度与方向、镜头运用和后期剪辑及调度场面等这些电影特有的技术。例如我们观看的角度不同,所产生的心理不同。以电影《巴顿将军》为例,最后巴顿将军站在美国国旗后,这时画面中美国国旗十分巨大,而巴顿将军身影很小,众所周知巴顿将军受人敬仰,但是这样的大将军在美国国旗前又是十分的渺小因此更凸显了美国的伟大。

电影《肖申克的救赎》中,安迪刚入狱时观众是以俯视的角度去观察的,这时的主人公显得十分羸弱。随着情节的深入我们观察安迪的角度开始发生了变化,这时安迪在狱中正为典狱长洗黑钱,在狱友中有一定的地位,伴随着较多仰视的镜头的出现,使观众对安迪产生了敬意,同时推动了剧情的发展。最后当安迪爬过漫长的下水道后,在河里奋力奔跑,这时都是仰视的镜头,使观众加深了对主人公的敬佩。通过角度的变换来讲述故事,也是电影叙事的一种。

四、总结

机构信用代码 篇4

机构信用代码, 是指中国人民银行以金融业务为基础, 按照一定规则赋予每一个机构在全国范围内唯一、不变的编码。机构信用代码以结算账户开户许可证核准号为基础编制, 共18位, 包含有准入管理部门类别、机构类别、行政区划代码等内容。

2什么是机构信用代码证?

机构信用代码证是承载机构信用代码的证书。机构信用代码证由中国人民银行统一式样和内容, 记载机构信用代码、机构名称、注册地址及发证单位等信息。

3机构信用代码证有什么用?

机构信用代码证已逐步在人民银行和银行业金融机构征信业务、信贷业务、账户业务、现金业务、票据业务、外汇业务等领域推广应用, 将成为金融系统及其他经济领域机构客户身份识别的重要手段, 成为机构的“经济身份证”。机构在人民银行和银行业金融机构办理业务时, 出示机构信用代码证, 可以得到更加方便、快捷的金融服务。

4哪些机构可以申领机构信用代码证?

在中华人民共和国境内依法设立、从事经济活动的机关、事业单位、企业、社会团体、民办非企业以及其他组织均可申领机构信用代码证。

5机构在哪里申领机构信用代码证?

机构可按当地人民银行规定, 向当地人民银行或开立基本存款账户的银行业金融机构申领机构信用代码证。

6申领机构信用代码证需要费用吗?

机构申领机构信用代码证不需要任何费用。

7申领机构信用代码证需要提交什么材料?

机构申请机构信用代码证应提交以下资料:

(一) 机构信用代码申请表;

(二) 机构成立时的批准文件或登记证书、营业执照等;

(三) 机构为从事生产、经营活动纳税人的, 出示税务登记证;

(四) 法定代表人 (负责人) 及经办人有效身份证件;

(五) 机构介绍信或授权书;

(六) 中国人民银行要求提供的其他材料。

8机构信用代码系统记录哪些信息?

人民银行建设了机构信用代码系统对外提供服务, 机构信用代码系统记录机构的基本信息, 如名称、登记注册部门、注册地址、成立日期等, 以及机构已有的其他代码, 如登记注册号、纳税人识别号等。机构信用代码系统通过存储机构的信用代码和其他已有代码, 实现机构信用代码与其他代码的索引和关联查询功能。

9怎样查询机构信用代码系统信息?

机构可按照人民银行的规定, 在人民银行分支机构或银行业金融机构申请查询机构信用代码信息。

10机构信用代码的使用优势有哪些?

(一) 经济性强。机构信用代码以结算账户开户许可证核准号为基础, 与机构的经济和信用活动密切相关。机构信用代码系统已应用于人民银行企业征信系统, 通过机构信用代码可以便捷查询企业的信用报告。

(二) 覆盖面广。机构只要有经济活动, 就必须开立和经常使用存款账户, 机构信用代码涵盖了所有从事经济活动的机构。

(三) 实用性高。机构信用代码系统将机构信用代码与其他机构代码建立起对应关系, 通过查询机构信用代码系统可以方便、快捷地了解到某机构在其他部门领取的代码信息。

(四) 便捷性高。全国所有银行业金融机构网点均连通了机构信用代码系统, 机构在开展经济活动、办理金融业务时, 均可对机构信用代码信息进行查验和更新。

11怎样修改机构信用代码系统信息?

认为本机构在机构信用代码系统中的信息有误的, 机构可向发放机构信用代码证的人民银行分支机构或银行业金融机构提出异议申请, 并提交证明代码信息有误的相关证明资料。

12机构信用代码与其他机构代码有什么关系?

机构信用代码与其他部门各类机构代码互不矛盾、互不替代、互不影响。机构信用代码是现有各类机构代码连接的桥梁, 通过机构信用代码可以把现有各类机构代码连接起来, 实现信用信息共享。

13建立机构信用代码制度有什么意义?

(一) 辅助金融机构开展客户身份识别工作。机构信用代码具备的唯一性及机构信用代码系统丰富的客户背景信息查询来源, 有助于金融机构识别机构客户身份, 提升反洗钱工作效率, 逐步解决机构身份资料多头发放、各自独立、难于相互印证的难题, 减少金融机构多头核实信息的工作环节和成本投入。

(二) 提高金融服务水平。机构信用代码与结算账户开户许可证核准号密切相关, 覆盖所有与银行业金融机构发生往来的经济主体。通过机构信用代码, 能够便捷、迅速地实现银行内部、银行与银行之间、银行与监管部门之间的信息整合与共享, 为各类经济主体享受全国范围内统一、优质的金融服务提供便利。

核心代码 篇5

随着电子计算机技术快速地发展,机载软件在民用飞机上的使用越来越广泛,并且扮演着日益关键的角色。许多高安全关键性的机载系统都由机载软件实现主要的控制、监控和维护功能,并且通过系统初步安全性分析过程为这些机载软件分配相应的IDAL等级。对于IDAL级别为A、B和C级的机载软件,RTCA/DO-178B要求除了满足基于需求的测试覆盖率分析外,还需要完成结构覆盖率分析,结构覆盖率分析用于确定基于需求的测试未覆盖到的代码结构,结构覆盖率分析目的的详细信息可参考RTCA/DO-248B FAQ#43。

RTCA/DO-178B并没有限制在源代码层级或者目标代码层级来完成机载软件结构覆盖率分析工作,但在第6.4.4.2节指出:机载软件结构覆盖率分析可以在源代码层级进行,如果软件为A级别并且编译过程中生成了无法追溯到源代码的目标代码,则应该在目标代码层级完成额外的验证工作以保证这些目标代码的正确性。

机载软件在编译过程中会生成额外的目标代码,比如初始化目标代码、内置错误探测目标代码、异常处理目标代码等等。因此,对于A级别软件,如果在源代码层级完成结构覆盖率分析,还应该分析源代码和目标代码之间的追溯性,并对不能追溯到源代码的目标代码进行额外的验证。

本文通过分析机载软件编译过程以及目标代码生成的影响因素研究了源代码到目标代码的追溯性分析方法。

1 机载软件编译过程

机载软件通常采用“高级语言”编写,如Ada、C、C++等编程语言,编译器将“高级语言”源代码翻译成“低级语言”汇编代码的过程称为“编译过程”。典型的编译过程如图1所示,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等过程。

1)词法分析:对输入的源程序字符串进行扫描和分解,从而识别出一个个符号,并转化成机器比较容易使用的内码形式;

2)语法分析:在词法分析的基础上将符号序列分解成各类语法短语,如程序、语句、表达式等;

3)语义分析:语义分析检查源程序有无语义错误,为代码生成阶段收集类型信息;

4)中间代码生成:在语法分析和语义分析后,将源程序翻译成中间代码。一般而言,中间代码是独立于具体硬件的记号系统,在某种程度上解决计算机的指令形式,或者比较容易转化为计算机的机器指令;

5)代码优化:代码优化过程是对前阶段产生的中间代码进行变换或改造,目的是使生成的目标代码更为高效,即节省时间和空间,代码优化遵循等价变换规则;

6)目标代码生成:目标代码生成过程是把中间代码编译成特定机器上的绝对指令代码或可重定位的指令代码或汇编代码,这个阶段的工作涉及到硬件系统功能部件的实现、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后援寄存器的调度。

在大多数情况下机载软件是运行在嵌入式平台上的。由于性能和资源的限制,嵌入式软件大多数在PC等上位机环境中开发,然后加载到嵌入式目标计算中运行。这种情况下,就要用到交叉编译。简单而言,交叉编译就是在一种环境中编译生成能够在另一种环境中运行的目标代码。

因为编译生成的目标代码与硬件环境是紧密相关的,因此将相同的源代码编译为在不同处理器上运行的目标代码时,需要分别对这些目标代码进行追溯性分析。

2 目标代码生成的影响因素

在将源代码编译成目标代码的过程中,应该考虑影响最终生成目标代码的因素,这些因素会影响到源代码和目标代码之间追溯性,包括以下几点:

1)目标处理器:同一系列的新处理器通常使用向上兼容的指令集,但是不同系列或者不同厂商的处理器可能采用不同的指令集。由于目标代码与运行的处理器紧密相关,所以将相同源代码经过编译在不同处理器上运行,可能生成不同的目标代码;

2)编译器选项:对于编译器进行不同的选项设置,可能影响编译的执行过程,进而影响最终生成的目标代码;

3)代码优化层次:代码优化能够提高目标代码的执行效率,但是深层次的优化会对源代码进行重构,从而使源代码和目标代码的追溯关系难以确定;

4)编程语言特征:有些编程语言的特性导致部分目标代码很难发现,例如寄存器使用优化,循环展开优化,C++中多态特性使用等等。

可以看出,影响最终目标代码生成的影响因素有许多,常见的不能追溯到源代码的目标代码包括:初始化代码,内置错误探测,异常处理,数组边界检查等等。

3 源代码和目标代码追溯性分析方法

根据RTCA/DO-178B的要求,如果A级别软件在源代码层级完成结构覆盖率分析,而且编译器生成了无法直接追溯到源代码的目标代码,那么应该对这些目标代码进行额外的验证。因此,为了识别出不能追溯到源代码的目标代码,应该对源代码和目标代码之间进行追溯性分析。通常而言,源代码和目标代码的追溯分析可以采用以下几种方法:

1)全面目标代码分析:对于规模相对较小的机载软件,可以将源代码编译为汇编目标代码,然后通过人工分析的方法来识别出哪些目标代码不是运行源代码所必须的,并对追溯不到源代码的目标代码进行额外的验证以确保其正确性。

2)对源代码结构最小子集进行分析:该方法的主要思路是按照软件编码标准的约束编写样例代码,然后进行编译,并通过人工分析的方法来分析样例代码的目标代码和源代码的追溯关系。在实际软件研制过程中,应该严格遵循软件编码标准,并通过源代码结构最小子集到目标代码追溯性分析来满足机载软件源代码到目标代码的追溯性要求。相对于全面代码分析而言,源代码结构最小子集分析方法的追溯性分析工作量大大减少,而且分析报告可以在多个机载软件项目上重复使用。源代码结构最小子集分析方法如图2所示。

具体过程如下:

(1)编制机载软件编码标准,对软件编码所使用的编程语言、规则、复杂度等进行约束和限制;

(2)按照机载软件编码标准中的约束和限制提取软件源代码结构最小子集,源代码结构是编程语言最基本的组成部分,如加减法等函数结构、循环/比较等逻辑结构等等;

(3)将机载软件项目源代码和源代码结构最小子集进行比较,判定源代码结构最小子集是否覆盖了机载软件项目所有源代码结构;

(4)按照源代码结构最小子集编写样例代码;

(5)在与实际机载软件项目相同的编译环境下使用相同的编译器、设置相同的编译器选项编译样例代码,并生成目标代码;

(6)对样例源代码和样例目标代码做追溯性分析;

(7)生成追溯性分析报告,识别出不能追溯到样例源代码的样例目标代码。

3)基于目标代码的结构覆盖分析:在目标代码层级进行结构覆盖分析的情况下,RTCA/DO-178B不再要求进行源代码到目标代码的追溯性分析。但是,采用该方法时,需要在目标代码层级满足RTCA/DO-178B对A级别软件结构覆盖率要求,包括语句覆盖、决策覆盖、MC/DC覆盖和数据耦合/控制耦合覆盖。

源代码和目标代码追溯性分析可以用于识别出哪些目标代码不能追溯到源代码,但不能用来表明这些额外的目标代码的正确性。对于这些额外的目标代码,应该通过验证来确认它们正确地运行并且不会对机载软件引入异常行为。RTCA/DO-178B中定义了验证方法可以是评审、分析和测试,因此第6.4.4.2节中对不能追溯到源代码的目标代码的验证并不等同于额外的目标代码应满足A级别机载软件结构覆盖率分析的要求。

4 总结

本文分析了机载软件编译过程及生成目标代码的影响因素,并研究了民用飞机A级别机载软件项目源代码到目标代码追溯性分析方法。随着机载软件在民用飞机高安全性系统上的使用越来越广泛,A级别机载软件广泛分布于现代民用飞机飞控、刹车、起落架、显示等系统中,为了满足RTCA/DO-178B第6.4.4.2节对于A级别机载软件结构覆盖率的要求,需要对机载软件源代码到目标代码追溯性进行研究。

摘要:机载软件在某些特定情况下应该分析源代码和目标代码之间的对应关系,RTCA/DO-178B第6.4.4.2节指出:机载软件结构覆盖率分析可以在源代码层级进行,如果软件为A级别并且编译过程中生成了无法追溯到源代码的目标代码,则应该在目标代码层级完成额外的验证工作以保证这些目标代码的正确性。因此,对于A级别软件,如果编译器生成了无法追溯到源代码的目标代码,那么除了完成源代码层级结构覆盖率分析,还应该完成源代码和目标代码之间的追溯性分析,并对不能追溯到源代码的目标代码进行额外的验证。本文研究了源代码到目标代码的追溯性分析方法。

关键词:机载软件,源代码,目标代码,追溯性分析,结构覆盖率

参考文献

[1]RTCA.DO-178B Software considerations in airborne systems and equipment certification[J].Washington DC,1992.

统一代码建设诚信中国 篇6

真正实现“一证一号”

2015年6月11日,国务院印发 《关于批转发展改革委等部门法人和其他组织统一社会信用代码制度建设总体方案的通知》(国发[2015]33号)。方案在落实李克强总理2015年3月提出 “三证合一、单一号码”改革年内务必实现要求的基础上, 明确了相关部门的具体职责。 国家标准化管理部门会同登记部门、组织机构代码管理部门负责制定统一代码标准。组织机构代码管理部门负责管理统一代码资源,建立和运行维护统一代码数据库,为各部门提供信息服务。登记管理部门负责在法人和其他组织注册登记时发放统一代码,将统一代码及相关信息按规定期限回传给统一代码数据库,并及时向社会公开,与其他部门共享。

从唯一、统一、共享、便民和低成本转换等角度综合考虑,我国决定建立覆盖全面、 稳定且唯一的以组织机构代码为基础的法人和其他组织统一社会信用代码制度。其实,我国对于法人和其他组织统一代码标识制度的建设,可以追溯到26年前。1989年,国务院发布 《关于建立企业、事业单位和社会团体统一代码标识制度的通知》推出组织机构代码。然而遗憾的是,26年来,由于缺乏国家层面的法律支持,组织机构代码尽管在50多个政府部门和社会各行各业得到了广泛应用,但没能像公民身份号码那样具有一部国家层面的法律法规,在一定程度上不能强制统一应用, 因此多种机构代码体系仍然在各个行政管理系统中长期存在和使用。

机构代码的不统一,导致各部门之间缺乏有效的协调管理和信息共享工作机制,严重阻碍了我国社会信用体系的建设。此次国务院33号文正式明确了统一代码的顶层制度设计,标志着自2014年以来社会各界关于“一证一号”改革的探讨和争论,终于画上了句号。彻底消除了各地在“一证一号”改革过程中出现的种种乱象,第一次在国家层面确定了统一代码的管理机制和地位,对于促进国家治理体系和治理能力现代化建设,推动社会信用体系建设,具有非常积极的作用。

统一社会信用代码设计为18位,由登记管理部门代码、 机构类别代码、登记管理机关行政区划码、主体标识码(组织机构代码)、校验码五个部分组成。为便于行业管理和社会识别,统一代码的第一、二、三部分体现了登记管理部门、机构类别和登记管理机关行政区划,兼容了当前各登记管理部门行之有效的有含义代码功能。为保证唯一性和稳定性,第四部分设计为主体标识码(组织机构代码),充分体现了以组织机构代码为基础建立法人和其他组织统一社会信用代码制度的要求。为防止出现错误,第五部分设计为校验码。

组织机构代码价值释放

组织机构代码在社会各界得到了广泛应用,其具有以下优点:组织机构代码是无含义码,可适用于所有类型的组织机构;集中赋码机制保证了国家代码数据库的良好质量,为各部门的数据共享和数据应用奠定了基础。从技术上来说, 组织机构代码已经具备了“机构身份证号码”的功能。但是,组织机构代码不能在机构登记注册的同时进行赋码,需要办理注册登记之后再来申领,一定程度上影响了数据的权威性和及时性。

统一代码采用组织机构代码作为主体标识码,并通过预赋码段、源头赋码、信息回传的方式,有效避免了组织机构代码存在的不足;通过立法将统一代码的地位予以明确,使其成为各类机构的唯一通行标识码。统一代码编码结构的设计,充分体现了2013年《国务院机构改革和职能转变方案》 以组织机构代码为基础建立法人和其他组织统一社会信用代码制度的要求,同时最大程度地满足各部门管理需求、降低改造成本。

由此可以看出, 统一代码就是组织机构代码的升级版。通过继承组织机构代码的唯一性、 稳定性、全覆盖性、经济性等优点,并通过国家层面的顶层制度设计有效克服其不足,统一代码将彻底解决我国当前机构代码混乱的局面,全面推动社会诚信体系建设步入正轨。

为实现平稳过渡,国务院33号文规定,“各有关部门应尽快完成现有机构代码向统一代码的过渡。短期内难以完成的部门可设立过渡期,在2017年底前完成。有特殊困难的个别领域,最迟不得晚于2020年底。”此处的有关部门并不仅限于登记管理部门,还包括使用各类机构代码的应用部门。因此,登记管理部门除了应在2015年底前为新设立的机构发放统一代码,还应在过渡期内,在组织机构代码管理部门的协助下,尽快建立统一代码与原有注册登记码的映射关系,逐步完成存量代码向统一代码的转换,保证信息的互联共享。对于应用部门,也应在组织机构代码管理的协助下,尽快完成现有机构代码向统一代码的转换。

全面推行和应用统一代码之后,各政府部门和商业机构都应当在业务和信息系统中以统一代码作为其对法人和其他组织的唯一标识;通过统一代码,在全国范围内实现对自然人、法人和其他组织信用信息的共享和协同,政府部门和社会各界可以方便地获取法人和其他组织主体,以及相关自然人的各种社会行为和监管信息,从而建立起数字化的社会信用体系。

例如,在登记管理环节,通过统一代码实现工商、质检、 税务、公安等监管部门的业务联动,可以实现法人和自然人信用信息的共享,从源头对非诚信机构和个人设立准入门槛;财政、金融、外贸的有关部门, 可以用统一代码作为纽带实现各部门之间信息的互联互通,加强联合监管,防止偷漏税及金融诈骗等问题; 外贸、海关、税务、银行等部门可以通过统一代码高效地解决进出口贸易问题,加强出口退税等管理工作; 公、检、法部门可以利用统一代码, 更有效地采集信息、打击犯罪,保障社会的安全和稳定。

信息与资源共享是前提

与统一社会信用代码制度同步实施的还有“三证合一”登记制度。所谓 “三证合一”就是将企业等组织机构依次申请的工商营业执照、组织机构代码证和税务登记证三证合为一证,提高市场准入效率。在“三证合一”和统一社会信用代码的基础上,我国将逐步实行“一证一号”制度,通过 “一口受理、并联审批、信息共享、结果互认”,实现由一个部门核发加载统一社会信用代码的营业执照。

“一证一号”有突出的现实意义。一是利于信息共享和利用。政府部门、社会公众通过统一社会信用代码,可以有效识别主体身份,并对信息进行关联比对分析,这就为实现信息共享和利用打下了基础。二是有利于提高行政效能, 降低社会成本。统一社会信用代码,多码改为一码、多次办理改为一次办理,简化了办事手续,将进一步激发市场创新创业动力。三是有利于加快推动社会信用体系建设。通过统一社会信用代码,将分散在各地区、各部门、各领域的信用记录归集整合到当事主体的名下,形成完整统一的市场主体信用档案,为褒扬诚信、惩戒失信创造了条件。四是有利于进一步推动简政放权、放管结合、优化服务。通过统一社会信用代码,推动各地区、各部门信息共享,并与社会和市场各方面信息交换整合,形成可供利用的大数据资源, 为政府监管和服务提供支撑保障。

国家标准委主任田世宏在2015年全国组织机构代码工作会议上提出要求,要以勇于担当的精神将改革任务落到实处。要加强领导,组织机构代码工作改革是质监系统改革的一项重要任务,各地质监部门要将其列入重点工作内容,建立领导协调机制积极推进各项具体任务的落实。 要强化协作,加强部门沟通,做好与发改、工商、税务及其他注册登记部门间协作;全国代码中心和各分中心要上下协作,形成合力;各地方要加强沟通交流,做好地方协作。要突出重点,以改革促发展,形成改革发展同步推进的新局面,以强烈的责任感和使命感聚力改革,创新发展,努力开创组织机构代码工作新局面。

充分运用大数据的先进理念、技术和资源,能够提升国家竞争力、提高政府服务和监管能力,有利于政府充分获取和运用信息,更加准确地了解市场主体需求,提高服务和监管的针对性、有效性;有利于顺利推进简政放权,实现放管结合,切实转变政府职能;有利于加强社会监督,发挥公众对规范市场主体行为的积极作用;有利于高效利用现代信息技术、社会数据资源和社会化的信息服务,降低行政监管成本。国务院有关部门和地方各级人民政府要结合工作实际,在公共服务和市场监管中积极稳妥、充分有效、安全可靠地运用大数据等现代信息技术, 不断提升政府治理能力。

2015年全国组织机构代码工作会议就“代码改革与发展”这一主题提出了“三个三”的具体工作部署。第一是落实代码改革与发展的三项工作任务,即做好统一信用代码标准与法规相关工作;做好统一信用代码经费预支持相关工作;推进全国代码系统管理体制改革工作。第二是加强代码信息系统建设的三项重点措施,一要研发四个系统,包括统一信用代码资源管理系统、统一社会信用代码数据交换系统、统一社会信用代码数据核对系统和存量代码转换及映射系统。二要建立“一库三平台”,一库是统一社会信用代码中央数据库,三个平台包括统一代码信息服务平台、 企业标准自我声明备案平台和产品质量信用档案平台。三要实现三个保障,包括信息安全保障、技术开发保障和服务能力保障。第三是拓展代码全方位应用的三个重要方面,即开拓代码在新领域的应用, 深化代码工作在质检系统的应用, 推进代码在电子商务和社会经济领域的应用。

代码审计技术方案 篇7

关键词:代码审计,代码扫描,人工分析

1 代码审计概述

代码安全审计工作通过分析当前应用系统的源代码,在熟悉业务系统的情况下,从应用系统结构方面检查其各模块和功能之间的关联、权限验证等内容;从安全性方面检查其脆弱性和缺陷。在明确当前安全现状和需求的情况下,对下一步的编码安全规范性建设有重大的意义。

通过实施代码安全审计,以较小成本快速发现系统中的代码安全漏洞、快速评估系统代码安全风险,有助于增强系统安全性,抵御黑客恶意攻击,保护信息系统资产。

2 审计适用范围

代码安全审计适用于以C、C++、C#、Java、VB、VB.Net等语言开发的应用程序,以及以Ruby、PHP、ASP、JSP、AJAX和Perl等在内的各种Web技术编写的应用程序。源代码安全审计的对象可以是一个应用程序的全部代码,也可以是其中的一部分代码。

3 代码审计流程

为保证代码审计的客观性、专业性,代码审计由专业的独立第三方或成立独立的专业审计项目组开展。整个代码安全审计流程遵循闭环的管理理念,确保审计发现的问题得到有效确认处理。代码审计流程主要包括系统调研、审计过程、报告输出、问题确认、问题整改和整改确认等环节。

经过整个闭环的审计流程后,系统具备上线条件,可安排系统上线运行,后续开展持续跟踪及每次新版本增量的代码安全审计。

4 代码保密问题

由于代码安全审计工作需要将系统源代码交给第三方,如何保证代码安全,不被有意或无意泄露是一个迫切需要解决的问题。

必须通管理手段及技术手段相结合实施代码防泄露措施,结合我们的项目经验与实际情况,采取如下措施。

4.1 管理措施

对代码安全审计项目成员进行安全意识培训,提出保密要求,并与代码安全审计项目成员签订安全保密协议。

4.2 技术措施

首先部署一台代码安全审计服务器,具备与各系统进行SVN代码同步功能、代码扫描功能、代码反编译功能等,安装各类工具,如notepad++,eclipse等。

服务器部署在一个封闭的生产网络内,部署网络防泄漏系统对数据交互进行监控,并设置策略防止对外拷贝代码文件,从技术上保证代码不泄露出来。

代码安全审计服务器接入运维管控平台,确保在审计服务器上的操作是授权的,可审计的,可溯源的。

所在代码安全审计工作,在特定物理区域通过操作维护终端远程登录到审计服务器上进行。

5 代码审计内容

代码安全审计主要工作内容是对系统的源代码文件进行分析,并对导致安全漏洞的代码构造进行定位。

5.1 内容分类

代码安全审计内容包括以下几大类:输入验证、输出编码、身份验证和密码管理、会话管理、访问控制、加密规范、错误处理和日志、数据保护、通讯安全、系统配置、数据库安全、文件管理、内存管理、通用编码实践。

5.2 OWASP TOP10

同时也包括各种组织公布的常见典型的安全漏洞,如OWASP TOP 10 等。OWASP TOP10 包括:注入、失效的身份认证和会话管理、跨站脚本(XSS)、不安全的直接对象引用、安全配置错误、敏感信息泄漏、功能级访问控制缺失、跨站请求伪造(CSRF)、使用含有已知漏洞的组件、未验证的重定向和转发。

6 代码审计方法

代码安全审计的目标是在海量的代码当中发现存在缺陷的代码,所以需要采用各种手段互相结合,互相补充,以提高代码安全审计的效率与代码安全审计的准确性、审计的全面性。

通常情况下,需要先使用工具对代码进行一个全面的扫描,再结合人工分析,跟踪各种数据流,各种函数、方法的调用。

6.1 代码扫描

通过工具可以全面快速地发现代码中存在的缺陷问题,代码扫描工具通过利用预先定义好的规则从数据流、控制流、语义、结构、配置等几个方面对源代码进行分析。

常见主流商业代码扫描工具有Fortify、Checkmarx、Code Secure、Coverity和Klockwork等,各代码扫描工具都各有特点,有的侧重代码质量,有的侧重代码安全,对于要通过代码安全审计发现安全问题的,建议挑选侧重代码安全审计的工具,如Fortify。

6.2 人工分析

工具扫描的结果都存在不同程度的误报漏报情况,所以需要人工对扫描报告做进一步的分析,确认哪些漏洞是真正存在的;同时,结合系统设计文档资料对系统业务流程进行跟踪分析,重点分析流程中的每个控制点,以发现是否存在业务逻辑设计缺陷。

人工分析代码扫描报告,需要对扫描报告发现的问题点进行上下文跟踪,分析代码块在系统中的互相调用情况,各种参数的传递,函数方法的调用。

6.3 代码反编译

代码的反编译,这里以Java开发的应用作为例子,Java Web应用在开发过程中,有部分框架类的及公用类的代码开发厂家会将代码编译并打成jar包,无法获取到源代码,需要通过把反编译将jar包转成源代码文件,再做进一步分析。

使用jd(Java Decompiler)-gui可以将一个jar包里所有已经编译的class文件同时反编译成Java源代码。

6.4 漏洞验证

当通过代码安全审计发现代码缺陷问题或漏洞后,如何确定漏洞可被利用与漏洞被利用后的影响?最有效的验证方式是模拟黑客手法对漏洞进行利用,而渗透测试是模拟黑客攻击手段的有效测试方式,通过渗透测试,不再单一看待某一漏洞,可以立体化看到此漏洞对于系统的危害程度及严重性。

漏洞验证可通过测试环境进行,当发现可利用的漏洞问题,根据对代码的分析,构造出利用脚本,对系统发起请求,触发漏洞。

漏洞成功利用结果可导致访问本来不可访问的数据、拥有了本来没有的权限、控制了服务器、成功攻击了另外的用户等。

7 代码审计成果

代码安全审计工作完成后,输出系统的审计成果,包括代码安全审计报告、代码安全审计问题跟踪表。其中代码安全审计报告包括发现代码问题的详细分析过程、漏洞验证结果、漏洞加固建议等关键内容,代码安全审计问题跟踪表用于后续对代码问题整改的闭环管理跟踪。

8 总结

上一篇:评价组织下一篇:非洲艺术