技术开发 频道

QA力保软件外包安全

【IT168 分析评论】

    经典

    法约尔的一般管理理论

    亨利·法约尔(1841~1925),是西方古典管理理论在法国的最杰出的代表。他提出的一般管理理论对西方管理理论的发展具有重大的影响。

    法约尔曾就读于圣艾蒂安国立矿业学院,1860年作为一个采矿工程师进入法国康门塔里—福尔香色采矿冶金公司,他此后的一生可分为四个阶段:

    第一阶段(1860~1872年):在这12年间,他作为一个年轻的管理人员和技术人员,主要关心的是采矿工程方面的事情。

    第二阶段(1872~1888年):在这16年中,他被提升为几个矿井的经理。这一阶段他主要考虑的是决定这些矿井经济情况的各种因素,这促使他对管理进行研究。

    第三阶段(1888~1918年):1888年,法约尔被任命为总经理,当时公司处于破产的边缘。他按照自己的管理思想对公司进行了改革和整顿,把原来濒于破产的公司治理得欣欣向荣。

    第四阶段(1918~1925年):法约尔于1918年退休,直到去世前,他一直致力于宣传他的管理理论。

    泰勒和法约尔两人都对古典管理理论做出了重大的贡献,但他们两人的管理理论的侧重面不同。

    法约尔虽然也是工程师出身,但他担任企业最高领导达30年之久。他的研究是从“办公桌前的总经理”开始而向下发展的。他的管理理论是以作为一个整体的大企业为研究对象的。他认为,有关管理的理论和措施不仅适用于企业,也适用于军政机关和有关组织等。因而他的管理理论被叫做“一般管理理论”。

    法约尔将管理活动分为计划、组织、指挥、协调和控制等五大管理职能,他根据自己长期的管理经验得出了14项管理原则。

    管理之所以能够走进大学讲堂,依赖于法约尔的卓越贡献。一般管理思想的系统性和理论性强,对管理五大职能的分析为管理科学提供了一套科学的理论框架,其中某些原则甚至以“公理”的形式为人们接受和使用。

    软件外包服务可能会给企业带来很多不希望的风险,例如不正当的做法、数据损坏和泄露、编码质量的低劣以及病毒等。

    为了解决这些问题,在将应用软件开发外包时,IT人员应该制订相应的流程并且将应用软件和数据分离,以确保编码的质量和数据的安全性和保密性。

    IT人员需要对可接受性、标准的遵循、系统和批量测试等诸多方面进行内部控制。所有这些测试及相关的测试环境都应该在质量保证(QA)控制之下,以确保实际资料或客户数据的完整性和保密性。

    IT人员还应该在内部进行所有这些测试,建立和加强严格的监督和测试程序,向质量控制人员提供必要的资源。

    IT人员还应向这些质量控制人员提供软件开发者和项目经理的资料,提供文献、数据库版本、时间和独立安全的测试设施,以确保新的应用符合所需的标准,并且能够正常地运行。

    确保软件编码的质量具有一定的挑战性,特别是在开发人员不熟悉业务的时候。开发规范没有被严格执行、开发人员的经验和技能不足、流程的定义不明确以及安全措施不严格等情况的出现可能会造成额外的隐患。

    IT人员应该确保开发流程定义清晰,质量保证(QA)能够以审计检查的方式进行,才能够保证编码质量和数据的安全。

    了解现有程序的运行

    降低风险、保证编码质量和数据保密性的第一步是了解现有程序是如何进行的。

    由于企业内部往往可能有很多个应用软件开发项目,涉及的外包服务提供商也不止一个,IT人员应该建立一套通用的开发方法,包括数据库和工具。

    IT人员和质量保证人员应该在检查质量的同时进行流程和技术上的评估,看看外包服务提供商是否与要求的访问控制、时间期限、规格、质量和安全标准都能保持一致。

    在进行评估的时候,要了解哪些部分能够达到要求,哪些部分则不能,同时IT人员应该努力找出偏差的根本原因。

    偏差通常是源于外包服务提供商的能力、沟通、开发流程以及安全标准几个方面的组合。外包服务提供商和企业都应有一些控制措施以便于及早发现问题。这些措施可以帮助IT人员建立一个包含各种最优做法的清单,以利于沟通、质量控制和安全保证等必要流程的执行。

    通过沟通形成共识

    有效的应用软件开发需要持续的、大量的正式和非正式的沟通,尤其是在与分散于各地的第三方进行合作开发时。这种情况下建立和利用非正式的关系交换意见的可能性是非常小的。

    另外,对于很多软件开发者来说,英语并非他们的母语,在定义、语言和用法上的细微之处通常会引起沟通的障碍。

    应用软件开发外包需要外包服务提供商同时具备行业和业务知识,这又给开发工作增加了一些难度,大大增加了由于不切实际的预期而产生沟通错误和彻底失败的可能性。

    IT人员应该通过正式的沟通日程表严格控制与外包服务提供商之间的沟通,包括每周与应用软件开发人员进行讨论,每两周或每个月与项目经理进行工作总结。

    这些讨论应该包括项目总体进展、任务澄清和项目时限等内容,总结应采取书面的形式,并经过确认,以避免含糊不清。

    由于外包服务提供商总是倾向于仅仅按照合同书面意思而非合同实质内容来工作,因此,IT人员应该尽可能将所有的要求和细节都写入合同中,以避免不必要的误解、额外的成本和时间的拖延。

    加强质量的监督和控制

    除了沟通,适当的监督和控制对得到规定质量的编码来说是必须的。应该根据最优做法提前为外包服务提供商、测试人员和质量保证人员制定相关的政策和流程。

    另外,还应该采用自动化技术支持合作和追踪工作。集中的进度报告、特例报告、问题追踪、建议和决定、责任制、坚持标准和版本控制等都是所需要的。

    质量保证人员的中心任务是建立有利于应用软件开发的监测、流程、技术和质量控制体系,确立实体间的合作方式,管理应用软件的开发,遵循相应的规范。

    这些问题的界定在项目开始时常常没有明确地列在合同中,一些IT人员错误地认为服务水平协定是惟一应该遵循的标准。服务水平协定主要集中于预算和成本方面,没有考虑流程监测和质量的评价。

    为了保证开发人员的工作进展,确保应用软件和数据在物理和逻辑方面都安全,每一开发阶段都需要自我控制和监督。

    敏感数据不可外泄

    不管外包服务提供商是在国内还是国外,与外包服务提供商共享知识产权都会给企业带来不必要的风险。一个值得推荐的解决方法是如果有可能的话尽量避免与第三方分享任何敏感数据。

    要做到这一点就要在企业内部进行所有的测试。事实上,在内部完成所有的开发和测试工作不仅仅有助于企业数据的安全性,而且能确保质量。

    有效地降低外包的风险同样需要物理安全性、系统隔离和技术安全性。很显然,外包环境和企业内部环境应该设置相应的权限,限制进入某些应用开发所使用的区域、数据库和系统。

    IT人员可能需要采用一些保密的程序,将电脑的软驱去除、禁止使用USB接口和打印机。

    另外,IT人员可能需要限制某些或所有外包服务提供商应用软件开发人员进入企业系统,仅仅允许某些特定的人员进入系统查看敏感数据,而且在查看数据的时候要采用一些特定的客户端工具。

    及早制订测试计划

    一旦应用软件接受功能测试,应用软件开发人员应该将编码交给系统构建人员。系统构建人员将负责建立数据库和进行版本控制、配置管理、测试数据和输入以及测试系统。

    质量保证人员应该负责监测所有的构建和测试活动,确保所有工作的有效性、保密性、可量测性、安全性。开发和测试会耗费大量的时间,因此,在项目早期制订一个测试计划是非常重要的。

    这个计划应该围绕所有的内容,而且用于硬件、软件、人力和执行时间方面的预算也应该充足。许多项目往往是由于测试上的预算不足才导致整个项目超出预算和时间期限的。

    最后,为了尽量降低系统出现BUG所带来的风险,通常会专门安排开发和测试小组中的某些人员解决BUG问题。

    质量保证部门要把好关

    质量保证人员应该负责所有的变更管理和版本释放管理。因为质量保证人员负责这些内容,所以有些公司的系统构建和测试人员都属于质量保证部门。

    然而,这不是必须的,而且从职业发展角度来看也不是很好。比如开发人员、测试人员应主要提高应用软件开发和系统方面的技能,一段时间之后,这些岗位上的人员可能就会转换角色。

    另一方面,质量保证人员主要应具备流程、版本释放和变更方面管理的能力。

    有些公司错误地让质量保证部门直接向开发部门汇报,原因是他们认为质量保证部门是应用软件开发生命周期上的一个环节。这样的组织结构会造成利益上的冲突。

    质量保证部门应该独立于开发和测试部门。这样做有助于更好地满足业务需求,有效地授权使用编码,确保保密性和安全性,对质量保证的额外要求也能够很好地重视。

    质量保证部门应当是公司的看门人,避免企业过早地把编码外泄。

    IT人员应该在企业内部履行所有的质量控制职能,为了避免利益冲突,应该让质量保证部门向企业运作部门汇报,而不是向应用软件开发部门汇报。

    除此之外,IT人员还应该确保在整个项目执行期间沟通渠道的开放和畅通,质量控制措施高于标准的服务水平协议,同时预算和费用标准在合同中认真界定。

    信息安全管理BS7799

    软件开发和服务过程中的安全

    目标:维护应用系统软件和信息的安全性。

    应该严格控制项目和软件开发环境。负责应用程序开发的管理人员还应该负责项目和开发环境的安全。他们应该确保对所有提议的系统变更进行审查,检查这些变更是否破坏系统和操作环境的安全。

    变更控制程序

    为最大限度地减少信息系统崩溃,应对变更实行严格控制。应该强化正式的变更控制过程。应确保不破坏安装和控制的程序,只赋予程序员访问他们工作需要的那一部分系统的权限,在进行任何变更前必须获得正式的许可和批准。

    许多组织都维护一个用户测试新软件的环境,这个环境将开发环境和生产环境分隔开。这就提供了一个方法,既控制新软件,又可以保护用于测试目的的操作信息。

    对软件包变更的限制

    不鼓励对软件包进行变更。使用服务提供商提供的软件包应尽可能不做变更。在确实需要修改软件包的情况下,应考虑以下几点:

    a)内置的控制措施和完整性进程被破坏的风险;

    b)是否获得服务提供商的同意;

    c)当标准程序更新时从服务提供商获得所需要变更的可能性;

    d)在发生变化时组织是否负责以后软件维护的影响。

    如果变更是不可避免的,那么应保留原始软件,只对确定的副本进行变更。所有的变更应得到完整的测试并进行记录,这样将来需要对软件进行升级时可以重新应用这些变更。

    隐蔽通道和特洛伊代码

    隐蔽通道可以通过某些间接和模糊的方法暴露信息。激活通道的方法有两种:更改系统中安全和不安全用户都可访问的参数或者将信息嵌入数据流。

    特洛伊代码以非法的隐蔽的方式影响系统,这些代码是接收者或程序用户不需要的。

    在出现隐蔽通道或特洛伊代码的地方,应考虑以下方法:

    a)只从信誉较好的地方购买程序;

    b)购买使用源代码的程序,这样可以检测代码;

    c)使用经过评估测试的产品;

    d)在操作使用前检查所有源代码;

    e)安装后控制对源代码的访问和修改;

    f)只允许证明值得信赖的人员使用关键系统。

    外包的软件开发

    当软件开发外包时,应考虑以下几点:

    a)许可管理、代码所有权和知识产权

    b)质量证明和完成工作的准确性

    c)在出现第三方事故时的第三者义务条款;

    d)对代码质量的合同要求;

    e)在安装前进行测试检查是否有特洛伊代码。

0
相关文章