发布时间:2023-09-21 17:35:06
序言:作为思想的载体和知识的探索者,写作是一种独特的艺术,我们为您准备了不同风格的5篇软件管理方案,期待它们能激发您的灵感。
关键词:项目管理;配置管理;代码自动化生成;.NET
中图分类号:TP315文献标识码:A文章编号:1009-3044(2012)04-0849-03
Solution of Lightweight Software Project Management
ZHAI Jing-xuan
(China University of Mining and Technology, Xuzhou 221116, China)
Abstract: A lightweight software project management solutions. Include the project management, configuration management, project modeling, requirements management, bug management and automatic code generation analysis, and gives useful CASE tool about software project management.省略
“软件危机”是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。“软件危机”于1968年由北大西洋公约组织的计算机科学家第一次提出,并随之诞生了“软件工程”这一学科。软件工程主要目的是研究用工程化方法构建和维护有效的、实用的和高质量的软件,从而避免“软件危机”。
“软件危机”已经提出40多年来,软件工程领域研究成果显著,取得了较大的成就。由于微电子技术的发展和计算机应用的普及,软件成本在计算机成本中所占的比例持续增长,软件项目日趋复杂,软件开发效率的提高也远远落后于信息化普及速度。因此导致“软件危机”问题不仅没有解决,而且愈演愈烈。对于软件工程的研究依然是一个比较热门的领域。软件项目的管理方法研究是软件工程学的研究领域之一,良好的软件项目管理模式对于对提高项目的成功率,减少开发成本和提升软件质量具有促进作用。
软件项目管理主要包括进度管理、成本管理、质量管理、风险管理与配置管理等。要进行有效的过程管理,必须制定科学的管理办法和使用有效的软件项目管理工具。
软件工程发展至今,陆续诞生了CMM(软件能力成熟度模型)、CMMI(能力成熟度模型集成)、RUP(统一软件开发过程)与MSF(微软解决方案框架)等成熟管理模型。这些解决方案对项目管理进行了全面的定义,一定程度上缓解了软件危机问题。诸如,CMMI中定义了详细的项目管理及过程管理模型,适合研发团队进行规范化设计。但对于不具有很高的复杂程度软件研发项目,完全按照CMMI或其它成熟的模型不切合实际,但是又必须以成熟模型为主要参考目标。本文根据实际软件项目管理与研发经验,提出了一种适合于中小型项目的轻量级项目管理解决方案。该方案主要适用于采用平台进行开发的项目团队。
1轻量级项目管理过程
轻量级项目管理过程包括计划、需求、设计、编码、测试、与维护5个阶段。
计划阶段主要工作为调研用户需求,分析系统目标,分析系统开发的可行性,制定初步的项目计划。
需求阶段主要工作内容为与用户沟通,编写完善的“需求规格说明书”。“需求规格说明书”包括软件的功能需求、性能需求、非功能性需求、环境约束和外部接口等。
设计阶段主要包括概要设计和详细设计两个部分,由架构师针对软件的需求设计出系统总体流程、子系统、数据与对象描述、算法和程序接口等。
编码阶段的主要工作内容为将设计描述为可编译的源程序。
测试阶段的主要工作任何为根据需求规格和设计文档,对软件的功能进行验证。测试与需求阶段同步开始,到项目验收前结束。
阶段的主要工作是,对于软件产品进行安装部署,以后还需要根据用户要求和产品实际情况进行维护。
轻量级软件项目管理解决方案的目标是针对中小型软件项目运作的实际情况,建立行之有效的管理体系和沟通机制,提供项目开发效率,保障产品质量,确保项目能如期交付。主要管理的内容是开发过程中的各类文档、进度控制管理、BUG跟踪与代码同步协作开发。
2轻量级项目管理实施
笔者所在的团队主要以为基础开发平台,数据库采用SqlServer系列,软件项目管理方案主要基于以上经验获得。因此本方案主要适用于使用.NET平台的开发的各类中小型项目,B/S与C/S项目均可。方案主要内容为:
2.1项目计划管理
软件项目管理的目的主要是确定项目的范围、进度和费用。项目计划就是要对项目整个实施过程的目标、任务、进度和责任委派做出具体的规定和部署,它在项目管理中处于中心地位。项目计划主要包括设计工作分解结果。此阶段主要使用的工具为:Microsoft Project等。
2.2配置管理
配置管理过程是对处于不断演化、完善过程中的软件产品的管理过程。其最终目标是实现软件产品的完整性、一致性、可控性,使产品极大程度地与用户需求相吻合。它通过控制、记录、追踪对软件的修改和每个修改生成的软件组成部件来实现对软件产品的管理功能。常见的用于支持配置管理的工具有CVS、Subversion、VSS、StarTeam、CC等等。我们选择VSS2005为团队配置管理工具。主要原因是:VSS为轻量级平台,便于部署和迁移;VSS与微软的产品Visual 2008/2010等兼容性非常好。
配置管理模板包括PP(项目计划)、RD(需求)、TS(设计)、V&V(验证与确认)等环节的各类文档,如需求规格说明书、项目计划、RD_用例报告、TS_概要设计说明书、详细设计说明书、数据库设计说明书、安装维护手册、测试计划、测试方案与单元测试记录等。
2.3项目建模
方案采用的建模工具有Enterprise Architect与PowerDesigner。
Enterprise Architect是以目标为导向的软件系统。它覆盖了系统开发的整个周期,除了开发类模型之外,还包括事务进程分析,使用案例需求,动态模型,组件和布局,系统管理,非功能需求,用户界面设计,测试和维护 等。Enterprise Architect是一个完全的UML分析和设计工具,它能完成从需求收集经步骤分析、模型设计到测试和维护的整个软件开发过程。它基于多用户Windows平台的图形工具可以帮助您设计健全可维护的软件。除此,它还包含特性灵活的高品质文档输出。用户指南可以在线获取。
Sybase PowerDesigner是一个"一站式"的企业级建模及设计解决方案,它能帮助企业快速高效地进行企业应用系统构建及再工程(Re-engineer)。使用该工具可以设计数据流程图、概念数据模型与物理数据模型,包括了数据库建模的全过程。该工具在项目中主要用于数据库建模。支持数据库的正向和反向工程,便于数据字典维护与调整。
2.4需求管理与Bug跟踪
我们采用Mantis作为项目管理和Bug跟踪平台。Mantis是一款基于Web的Php+Mysql的开源BUG管理系统,一款简单实用的系统,具有截图功能和强大的报表功 能。Mantis还具有良好电子邮件支持,可将需求与Bug的各种状态定义按照预定设置发送到项目组相应邮箱。
对于新增需求变更,经历提出需求、确认需求、开发需求、测试需求到需求五个阶段,这五个阶段分别由需求工程师、开发工程师、测试工程师与配置管理工程师进行完成。通过Mantis提供的基于Web的协作系统,可以很方便的进行需求变更管理和跟踪。
对于已的项目所产生的Bug,通过Mantis也可以进行记录、跟踪。其邮件提醒功能使得Bug状态一旦发生改变,会立即通知到相关责任人进行处理。同时,其强大的统计和报表功能也便于统计各项目的Bug量,统计测试人员报告的数量等关键值。
2.5代码自动化生成
轻量级项目均采用三层结构进行设计。三层结构模式如图2。
图2三层结构框架
三层结构包含:表示层(UI),业务逻辑层(BLL),数据访问层(DAL),各层特点如下:
数据访问层:主要是对原始数据的操作层。可以操作数据库、文本文档或XML文件等多种数据格式,执行对数据库的增、删、查、改操作。数据访问层还可以通过OR映射进行扩充。
业务逻辑层:是系统的核心层,位于数据层和表示层中间,主要实现业务规则制定与业务流程实现。业务逻辑层直接调用数据层,并接受表示层的调用,起到承上启下的作用。
表示层:表示层是与用户直接交互的一层,主要处理用户的输入操作,提供交互式接口。在项目实现过程中,表示层一般为WebForm或WinForm等形式。
三层结构的划分,体现了“高内聚、低耦合”的设计思想,有效降低层与层之间的依赖,增强各层的复用性,有利于标准化开发。但三层结构也存在着降低性能、级联修改等问题。但轻量级项目一般侧重于业务流程,对于系统性能要求不高,而且计算机芯片的发展使得项目开发效率越来越比性能更重要。因此,轻量级软件项目均采用三层结构设计。
除此之外,还有业务实体层(Model),这个层主要内容是存放可持久化的实体类;通用工具类库(Common),主要用于存放通用的管理类库。类库的存在形式一般为Static类和Static方法。由于开发模式基本相似,所以开发过程中的大量相似代码,如:实体类、数据库操作类、UI界面,均可采用工具生成。.NET平台下比较优秀的代码生成工具有李天平的动软.NET代码生成器Codematic和国外成熟的代码生成器CodeSmith。
轻量级项目采用动软.NET代码生成器为主要生成工具。动软.省略程序员设计的自动代码生成器,Codematic生成的代码基于面向对象的思想和三层架构设计,结合了微软Petshop中经典的思想和设计模式,可以通过反射支持多数据库,支持对连接字符串加密等。Codematic在项目中主要针对数据库中的表或视图生成表示层、业务层、数据层及实体等代码。使得开发人员完全从重复的录入过程中解脱。最新版本的Codematic还支持模板语法,开发人员可根据实际项目需要生成相应的表示层或数据层的SQL代码。以下是动软.NET生成器生成的Visual Studio .NET2010解决方案结构。
3结束语
本文根据中小型研发项目实际需要,提出了一种轻量级开发的项目管理解决方案。方案主要针对项目计划管理、配置管理、项目建模、需求管理与Bug跟踪、代码自动化生成5个方面进行了定义和分析,给出了各过程中最佳的解决方案和管理工具。轻量级的项目管理解决方案已经大量应用于团队所承担的各类研发项目中,与方案实施前相比,开发更高效、项目进度可控,能有效的提高软件产品质量。
参考文献:
[1]季丽萍.浅谈.NET三层结构及其应用[J].福建电脑,2009(6).
[2]李立芳,周小平.软件项目管理活动浅析[J].中国科技信息,2010(10).
[3]范振钧.省略的三层结构实现方法研究[J].计算机科学,2007(4).
[4]孙继红.基于.NET三层架构的网上商城设计与实现[J].电脑编程技巧与维护,2008(16).
[5]于红波.三层结构各层次的实现技术研究[J].山东纺织科技,2008(1).
[6]刘宇翔.软件项目管理的流程设计分析[J].科技资讯,2010(36).
软件项目风险管理方案是在深入分析公司项目管理整体状况、风险管理的现状和问题、风险管理约束条件的基础上,结合经典的软件风险管理理论进行设计的,设计的方案包括两部分内容:软件公司风险管理过程以及风险管理工具和方法。本文对公司风险管理过程风险管理计划制定、风险识别、风险分析、风险监控、风险应对和风险管理工具和方法进行详细的探讨。
【关键词】
风险管理;软件项目;方案设计
1 公司风险管理过程
对于大型软件企业来说,细致和规范化的工作步骤定义有利于项目风险管理的成功。而对于中小型软件企业来说,由于项目规模相对较小,项目周期相对较短,风险的数量以及风险管理的工作量都相对较小,风险管理的步骤可以适当简化。结合经典的风险管理理论以及软件公司的实际情况,本文将软件公司的风险管理过程划分为风险管理计划制定、风险识别、风险分析、风险监控、风险应对这五部分。
由于软件公司的背景情况限制,对公司进行风险管理过程设计应本着提炼风险管理每个阶段的重点环节,把握必要的管理步骤,同时操作过程不像大型项目那样繁琐,要简单方便,投入人力和物力要求不高。
1.1 风险管理计划制定过程
软件公司风险管理计划制定,首先需要获取所承揽项目的相关信息,尤其是项目类型信息,这对软件公司制定风险管理控制的重点、风险临界值、风险预算有重要意义。另外还要收集项目目标、合同约定、软件规模、公司目前的风险承受能力,以及计划在风险管理上的投入等信息,作为制定风险管理计划的依据。由于软件公司项目规模小,项目组人员主要是专职组成,可以由项目经理组织召开规划会议,通过会议的方式对风险管理计划的相关内容进行讨论,在会上制定相关的风险责任人,最终根据会议内容编写风险管理计划。
风险管理计划的制定过程比较简单,首先收集信息,然后确定内容,最终编写文档。这是一种简单成熟的文档编写方法,适合软件公司采用。软件公司在风险管理计划过程中,尤其要注意收集项目信息的全面性,有些信息可能没有成文的资料查阅,需要多方面的沟通和调研。
1.2 风险识别过程
软件公司所承接的软件规模不大,周期相对较短,并且项目具有共性,对其进行风险识别的过程相对简单,主要的精力可以放在对不同类型项目特有的风险因素识别上,保证风险在范围上被广泛识别。
本文设计了软件公司进行风险识别的过程。软件公司首先需要收集资料,对项目类型区分,对内在的风险项目进行识别,这是风险识别。其中收集记录资料有项目信息、风险数据库等历史信息、风险管理计划、项目约束条件、合同文件。项目范围说明书、项目管理计划、章程等。之后辨别风险事件发生的影响形式和主要原因。再通过辨别出来的风险因素影响和风险事件去推测之后可能发生的结果。最后为了方便以后的风险分析和交流组成风险登记册。
1.3 风险分析过程
本文根据软件公司的特点设计了操作简单的风险分析过程。什么是风险分析呢,该工作是在知道什么是风险后将其记录在手册上,随后将其分到某种风险类别上,去掉没有用的风险,接着分析该风险的原因和推动力,再利用之前确定的风险度量估计风险带来的影响,把认为重要的风险因素先按照重要性排个顺序,列出其风险的优先级清单,把不重要的风险因素,按照低级优先度再列清单,其中要是发现了没有出现过的风险类型或者已经识别的现在又没有的因素,就应该重编风险记录本。
1.4 风险监控过程
对于如何实施风险监控,软件公司也做了规划,第一步,考察风险现状,对已经出现的风险重新下定义,并预测其带来的影响。就目前情况而言,风险事件还有很多不确定因素,实施环境时刻在变化,这些变化主要包括已经出现的风险发生的概率、其影响的重要性,什么时候采取措施,环境恶劣的情况下还有可能有其他新的变化,为了应对这些变化,则需要指定相关的负责人,对项目开展过程中的风险进行检测,并每隔一段时间对其重新评估,以此来制定出新的应对方案。第二步,将项目目前状况与风险的最大最小值进行对比,要使项目进展顺利则显示信息应该在其风险范围之内,如果在其范围之外,则应该改变计划,商讨新的应对措施。
2 风险管理工具和方法
目前,风险管理领域的工具和方法主要是定性的方法,缺少适合中小规模企业的、操作简单、技术难度要求不高的工具和方法,尤其是定量的方法。因此为了解决软件公司缺少适合的风险管理工具和方法的问题,本研究对风险管理每阶段软件公司可以采用的工具和方法进行了深入探讨。此部分只对针对软件公司提出的工具和方法进行深入探讨,以往资料中有过详细介绍或应用成熟的方法不再探讨。
2.1 风险管理计划的工具与方法
对于中小规模软件公司,风险管理投入有限,软件公司可采用最简单和直接的方法――专家会议法收集相关信息,进行计划的编制。专家会议是指在一定规章制度的前期下,选出一些优秀专家,按照一定的活动规则召开会议,借助专家的聪明才智,对项目以后的发展情况等做出一定的评估。这种方法有很对有点,其中专家们的意见可以相互参考,相互激发,相互补充,将内部信息最大化,最后做出统一的决定,慢慢的再在统一寄出上再次发生思维碰撞出现其他的奇思妙想,这样就能到达在较短的时间内达到最好的效果,从而制定出最佳方案。
2.2 风险识别的工具与方法
由于软件公司承接的项目类型和特点不同,项目管理的侧重点不同,每个类型项目的风险因素和影响也有所区别,但也有共同之处,这些项目都属于企业信息化建设中的软件开发项目,项目规模不大,开发内容主要是办公自动化、市场经营管理、档案管理、资产管理、项目管理等信息管理系统,项目在实施流程和技术上有相似性,有很多风险是这些项目都可能发生的。因此软件公司的软件项目风险识别工作不仅需要识别软件项目的共性风险因素,还要针对项目类型,研究每个类型项目需要重点识别和控制的风险因素。
软件公司在进行风险识别过程中,可以采用一些常识的判断,或者借鉴以前经历过的项目的经验、教训、资料等,也可以请本公司内或行业内的专家进行指导。
2.3 风险分析的工具与方法
对于软件公司这样的中小规模软件公司来说,采用定性的方法实施简单,节省资源,但是精度不够,采用定量的方法则实施复杂,对资源要求高,结果相对准确。根据软件公司的具体情况,本文对其风险分析过程中可采用的工具和方法进行了深入的探讨,提出了风险度量标准表、层次分析法、故障树风险分析这三种定性和定量相结合的方法。这几种方法便于使用者理解和操作,同时又能达到软件公司这样的中小规模软件风险分析需要。
2.4 风险监控的工具与方法
目前,使用最为普遍的项目跟踪方法是项目跟踪会议。项目的负责人可以通过项目会议在较短的时间内对项目内每个人的工作进展程度进行深入的了解,以便于更好地掌握项目运行时出现的问题,同时根据项目的风险程度决定其投入资源的多少。其中需要检查的项目内容有产品的市场需求、产品的受众群、产品呢的概念、基础设计和编程、基础和功能检测、组成检测、运行能力检测、产品包装,对每个需要检测的环节都做出最好成绩,并依此为模范,争取达到这种优秀水平。项目进行过程中,项目的重难点也会随之变化,会议负责人也应该注意到这点,并及时和上级领导做好沟通,同时做好会议记录。
【参考文献】
该方案可以自动解决安全管理软件同防病毒软件的冲突问题,大大减少了安全管理软件在部署、实施、运维过程中,网管人员的工作量,同时也提高了用户体验,减少了用户的抵触情绪,为企业内网安全方案的落地打下良好的基础。
关键词 安全管理;杀毒软件;代码签名;驱动
中图分类号TP39 文献标识码A 文章编号 1674-6708(2014)116-0212-03
0 引言
从电脑诞生之日起,病毒和各种安全问题就一直困扰着人们。特别是在网络购物越来越普遍,互联网理财越来越普及的情况下,防病毒软件已经成为当前PC的标配。
在企业中,工作PC和服务器的安全问题,就更加重要。企业不仅仅要在每台工作PC和服务器上安装好杀毒软件、防火墙,并且还需要在终端上安装对主机安全更有保障的安全管理软件,如锐捷网络的GSN,华为的TSM,华三的IMC等。这些安全管理软件,一般都具有1X认证、微软补丁更新、外设管理、进程管理、注册表管理、系统服务管理、网络攻击防御、防机密数据泄漏等功能,可以极大的增强企业内网安全,保护企业敏感数据。但是,这些安全管理软件,都不可避免的存在一个共同的问题:那就是安全管理软件同防病毒软件的冲突问题。
有过安全管理软件部署和使用的网络管理员,都应该有这样的体会:除了初次部署时的各种兼容性问题排查,日常运行管理过程中也还会遇到各种各样的冲突问题。也许在安全管理软件升级了,或者防病毒软件升级病毒库之后,冲突问题又忽然爆发。这样的问题,让安全管理方案的落地存在很大的问题,原本为了提高企业内部安全,降低网络管理人员工作而引入安全管理软件,反而成为了一个新的痛苦点。那么,这样的问题有没有办法彻底解决呢。本文主要针对该问题进行一些分析和探讨。
1 什么会有这么多的冲突问题
要解决问题,首先就要先了解问题发生的原因。安全管理软件和防病毒软件为什么会发生这样的冲突呢?这首先要从防病毒软件的病毒检测机制说起,一般来说防病毒软件的检测机制有被动检测和主动检测两种。目前基本上所有防病毒软件都兼具两种检测方式,只是不同的品牌侧重点不同。对于被动检测,也就是根据各种病毒特征(如应用程序PE文件的特征,MD5值、进程名称等)进行判断,杀毒软件通过不断的升级病毒库来增加各种病毒库特征。对于主动检测,其实就是杀毒软件根据应用程序的行为(如调用了哪些敏感API,监听了哪些端口,访问了哪些敏感资源,或者某几种动作的组合)等来进行判断是否存在风险。
从以上分析可以发现,防病毒软件和安全管理软件存在天然的冲突问题,因为安全管理软件事实上从技术的角度来看,和黑客软件的行为有着很大的相似之处。如也会调用一些敏感资源,检查某些文件、注册表,防杀(如恶意用户通过恶意杀掉安全管理软件的进程来逃脱监管)等。不过安全管理软件不会如黑客软件那样,恶意窃取敏感信息,恶意复制、删除、创建恶意文件等,如当年臭名昭著的“熊猫烧香”病毒,就是通过篡改感染用户的各种可执行文件,导致用户主机瘫痪,资料丢失。
也正因为如此,防病毒软件产品也经常将安全管理软件进行误杀。那么,有什么办法来解决这些问题呢?
2 如何防止误杀
要解决误杀问题,首先要解决的就是信任问题。要让杀毒软件信任安全管理软件,目前一般会采用如下一些解决办法:
方法一:用户手动将安全管理软件加入防病毒软件的白名单中(如360的文件白名单)。
方法二:安全管理软件厂商每次版本之前,将安全管理软件申请放到防病毒软件厂商的免杀列表中。
方法三:安全管理软件尽量不调用一些敏感的API,不访问一些敏感的资源,做一些类似病毒的行为。
如上几个方法,似乎可行,但是实际上并不好使。
如方法一,似乎可行,但是首先一点是,对于企业用户,很多人对于IT技术并不熟悉。让其手动添加白名单,特别是一些企业的老员工,更是一窍不通。即使是比较精通IT技术的年轻人,也不一定能够判断出某进程是否安全。
如方法二,首先,该方法是一种企业间的白名单行为。不是所有防病毒厂商都提供这样的服务,特别是一些海外的防病毒软件厂商,在国内只有商,通常是无法联系到厂商的售后的。即使是对于有提供这些服务的防病毒软件厂商,也有问题。如有的厂商需要一定的费用(长期以来,对于安全管理软件厂商来说,也是一个负担),有的厂商审核周期太长,可能需要好几天,甚至一个月。这对于一些面临验收的项目,或者出现严重故障,急需修复BUG的安全管理产品来说,也是不可接受的。更重要的是,加入白名单,很多时候,只能避免安装过程没问题。当进行一些敏感操作时,还是会被误杀。
如方法三,首先,这不太可能,因为安全管理软件需要做一些安全相关的防护,甚至会做到驱动级别,因此不调用敏感API,就无法实现这些功能。一些敏感资源也是必须访问的,如禁用U盘,U盘加密等。这是安全管理软件很常见的一些功能。对于ARP欺骗等网络攻击行为,安全管理软件甚至还需要分析网络报文来对攻击行为进行防御和定位(如锐捷GSN产品中的ARP立体防御解决方案)。
综上所述,如上的这些方案,都无法完全解决这些问题。那么还有其他什么解决方案吗?
解决方案的着眼点,应该还是信任问题。如果通过各种技术来反检测,那么最终可能会演变为一种新的“3Q大战”。那么是否存在第三方的信任机构,来对应用程序提供信任担保呢。事实上,的确有。业界早就存在第三方的安全认证机构,如VeriSign、GlobalSign、StartCom。说起这些机构,大家可能都不熟悉。但是如果谈到https或者ssl,可能大家就比较熟悉了。目前任何银行和电子商务平台,都是必须用到这些技术的。而这些第三方安全认证机构目前提供最多的就是SSL证书。SSL证书是数字证书的一种,通过非对称算法,在客户端和服务端之间建立一条安全的通讯通道。而这个通讯通道建立的前提,就是这些第三方机构提供的电子证书是被业界所有厂商都认可的。如微软的OS就内嵌了VerSign,StartCom的根证书。
SSL主要用于客户机和服务器之间的安全信任问题。类似的,对于应用程序之间的信任,也有一种对应的电子证书:代码签名证书。
代码签名证书能够对软件代码进行数字签名。通过对代码的数字签名来标识软件来源以及软件开发者的真实身份,保证代码在签名之后不被恶意篡改。使用户在下载已经签名的代码时,能够有效的验证该代码的可信度。也就是说,代码签名证书其实主要解决两个问题,一个是软件来源问题,一个是保证代码不被篡改。而代码签名证书,本身有一套非常完善的机制,如使用非对称算法(RSA)来进行代码签名证书的生成和防篡改等,从技术上就能做到证书的防伪造。
因为这个代码签名证书是业界认可的第三方证书,也就是可信的,所以利用代码签名证书的这两个特性,应该可以很好的解决安全管理软件和防病毒软件的冲突问题。经过测试可以发现,国内外的杀毒软件,全部都承认代码签名证书。对于有使用代码签名证书签名的安全管理软件程序,防病毒软件都会认为其是安全的,不会再进行各种误杀和拦截。
既然代码签名证书可以解决这个冲突问题,并且可以防止被防病毒软件误杀,那么木马病毒程序是否可以采用这种方式来避免被防病毒软件杀掉呢?理论上是可以的,但是事实上存在一定难度。因为代码签名证书的申请不是随便谁都可以申请的,是需要提供各种企业执照和证明文件,如果出现这样的病毒。那么对应的企业是需要承担法律责任的。所以,拥有这种代码签名证书的企业需要很小心的保管自己公司的代码签名证书。同时,代码签名证书也是有时效的,超过时效,那么这个代码签名将不会认可,防病毒软件就照杀不误了。如果出现证书丢失等异常情况,也有相应的证书吊销机制可以解决这个问题。
4 如何解决恶意破坏
综上所述,安全管理软件的安装和执行得到了信任,那么是不是安全管理软件和防病毒软件的冲突就可以彻底解决了呢。大部分是已经可以了,但是还不完全,前面我们提到有些恶意用户为了绕开安全监管,会采用防病毒软件的相关机制来破坏安全管理软件的正常运行。一种很典型的做法就是,使用防火墙软件,禁止安全管理软件客户端和服务器端的通讯。这样一样,网络管理人员就无法通过下发安全管理策略,来管理企业网内部的工作PC了。部署安全方案的目的也就无法很好的达成。
除了恶意破坏,还存在如下两种情况,导致客户端无法同服务器端进行通讯,正常的安全管理业务流程失败。
问题一:上网用户由于网络知识有限,不懂如何配置防火墙使安全管理软件客户端能够同服务器端进行通讯。
问题二:上网用户在防火墙判断是否放行时,由于无法作出判断,出于安全起见,禁止安全管理软件客户端访问网络。
对于这些问题,业界还没有好的解决方案,一般只能由管理员帮助上网用户进行配置和解决问题,但是如果企业内部工作PC数量众多,各种工作PC的应用环境复杂,所使用的杀毒软件和防火墙产品、版本和实现机制各不相同,耗费的工作量是巨大的。而且在防火墙升级、工作PC重装操作系统,客户改用其他杀毒软件的情况下,又需要耗费大量的时间进行折腾。而且,网管的技术能力目前在业界也是良莠不齐,很多网管也无法解决这些问题。
通过分析,可以发现当前业界主流的防火墙主要采用2种技术:SPI和NIDS中间层驱动。
SPI:简单一点说就是防火墙中同进程关联的一种报文过滤技术,它能够截获进程发起的网络连接,然后判断该进程是否允许发起这个网络链接。
NIDS中间层驱动:NIDS驱动位于更底层,它能够对网络访问的所有报文进行过滤。但是无法根据进程信息进行过滤。也就是如果其允许目的端口为80的报文通过。那么所有使用目的端口为80进行网络访问的进程发出的网络报文都能够通过。
一般业界的防火墙均采用2两种技术进行组合来实现。这样就可以解决其他进程冒用NIDS中间层驱动允许端口进行访问的问题。也可以解决,NIDS无法定位进程的问题了。
由于基于SPI的防火墙是工作于应用层的,因此能够拦截应用程序发起的网络链接,在某些情况下,就可能将客户端发起的网络链接阻断。
由于基于NIDS驱动的防火墙是工作在核心层的,因此能够拦截所有固定特征的报文。在某些情况下,就可能将客户端发起的网络链接阻断。
因此,要解决客户端同服务器端的通讯不被防火墙阻断,本文可通过实现一个“客户端驱动程序”(如上图所示)来解决该问题。该客户端驱动程序为TDI驱动,与TCP/IP这个TDI驱动同一位置,因此所有网卡收到的报文都将同时拷贝一份给“客户端驱动程序”,不会经过系统自带的TCP/IP驱动和TCP/IP协议栈,因此不会被基于SPI(甚至基于TDI驱动)的防火墙所过滤,而目前能够实现根据程序进行报文过滤的防火墙基本都是使用这两种技术。该“客户端驱动”由于同TCP/IP位于同一位置,因此无法使用Socket等WindowsAPI来实现TCP/IP传输。因此要实现客户端同服务端的通讯,还需要“客户端驱动程序”实现TCP/IP协议的相关功能。由于TCP过于复杂,因此“客户端驱动程序”采用实现UDP相关功能来实现IP报文的传输。“客户端驱动程序”能够防止通讯报文被基于SPI和基于TDI方式进行过滤的防火墙所过滤。
通过以上方式,客户端和服务端通讯的报文还可能被基于NIDS中间层驱动的防火墙给过滤。如瑞星防火墙就默认过滤所有报文,只开放少数必备端口,如80(http)和53(dns).对于使用NIDS驱动进行报文过滤的防火墙,由于上网用户访问网络是一定要访问DNS服务的(DNS的访问端口53),并且NIDS无法得到进程信息。因此可以使“客户端驱动程序”的目的端口采用这些必备端口即可,本文中采用53端口(通过将端口修改为其他一定能够访问的端口也是可以的,53只是一个比较通用的做法,因为大部分人访问网络都是为了访问internet)。
通过以上两种方式,即可解决客户端同服务器端网络通讯被防火墙阻断的问题。下图为实现本方案,客户端程序至少需要实现的模块:
业务解析模块:同业务相关的模块(不同的产品是不一样的),从自定义传输协议栈获取服务器端发送过来的业务信息。将业务信息发送给自定义传输协议栈。
自定义传输协议栈:将业务相关的信息,根据自定义协议,封装到IP报文中。该传输协议栈,本方案只规定了采用UDP协议实现。UDP报文中的内容,不同的产品根据不同要求能够有不同的实现(如报文大小,安全要求程度不一样,应用层的实现都是不一样的)。
客户端驱动程序:TDI驱动,接收服务端发送过来的报文,并转发给自定义传输协议栈处理。接收自定义传输协议栈封装好的报文,并通过网卡转发给服务端。
对于服务器端,需要实现对应的自定义传输协议和业务解析模块,但是不需要实现客户端驱动。因为服务端都是管理员负责管理的,不存在这个防火墙的问题。
本方案既能够应用于Windows操作系统环境下的TCP/IP网络环境,也可以扩展到其他操作系统上的,如Linux和Unix等,因为其网络体系架构基本上是一样的。不过,目前国内的企业网,基本上都是Windows操作系统的终端,采用其他OS的PC很少。
4 结论
虽然目前杀毒软件和防火墙软件功能已经越来越强大。但是,这些软件的功能,主要还是针对用户的操作系统环境,进行病毒的检测和防御。对于安全要求较高的企业网,部署相应的安全解决方案,还是很有必要的。对于一些裸奔(不安装任何杀毒软件和防火墙软件)的PC,其安全性是完全无法保障的,企业信息的泄密几率也大大的增加。但是,安全管理软件同防病毒软件的冲突问题,却使安全解决方案的部署无法达到预期的效果。本文针对这个问题,通过使用“代码签名证书”,基于底层驱动的“客户端驱动程序”,解决了业界普遍存在的安全管理软件和防病毒软件的冲突问题,使安全管理方案的落地有了一个良好的基础。大大提高了企业内网的安全,极大的减轻了企业网网络管理员的工作负担。
参考文献
[1]代码签名证书.http:///link?url=B4VdrnuSOBmgeRYdAsssYwGZ32a4MRZbzMKhLrlu9n-6IhCgYqbOKSqQKGArOFvNdDB8etVjoy0eG-M9yvoGb.
金算盘eERP-B财务管理软件是由金算盘(eAbax)软件有限公司开发。金算盘eERP-B财务管理软件主要为小企业管好钱,管好账,管好固定资产,管好工资,是财务人员的好帮手,将小企业内部信息化与电子商务有机融合,帮助小企业实现全程电子商务化。
一、金算盘eERP-B财务管理软件详细功能
(一)账务处理
1.软件可对科目类别、性质进行管理和修改、复制、合并、拆分、停用,以及恢复处理与财务预算功能,任意定义凭证的输入输出界面,提供语音复读功能和输入算术表达式。2.软件具有外币核算、跟踪查询、自动核销往来账功能,与用户可任意定义通用转账凭证,支持在任一时间进行科目计息,期末结账时系统自动检查提折旧、期末调汇、损益结转、凭证号连续等。
(二)现金银行
1.软件提供收付款单、复币式收付款单、应收应付核销和现金折让功能。2.软件可以设定对账单和银行账相差的天数及手工对账功能。
(三)往来管理
1.软件对往来单位按类型、片区、级别、性质等进行管理及指定往来单位付款条件和折扣率。2.软件提供信用额度管理和应收计息功能。
(四)工资管理
1.软件有一个月内多次发放不同工资项目能力和集成为银行提供工资数据接口。2.软件对工资数据可自定义生成记账凭证和任意生成工资条、工资表、配款表以及个人所得税代扣代缴表。
(五)固定资产管理
1.软件有固定资产进行分部门、类别和提供批量打印固定资产卡片的功能,提供“按现在净值和剩余期间计提折旧”和“按原值和预计使用期间计提折旧”两种方法,对同一固定资产多部门使用和折旧费用多科目核算及对入账前固定资产的多种折旧方法进行管理。2.软件提供“按现在净值和剩余期间计提折旧”“按变动后各因素计提折旧”和“按变动前各因素计提折旧”三种折旧计算以及“不调整以前累计折旧”“重新计算折旧并自动计算累计折旧”两种累计折旧调整方法。
(六)采购管理
1.软件可进行采购订单执行情况管理,查询采购单据、到货情况,并进行技能型定购未到货稽查。2.软件可进行订单中指定商品进行关闭操作,针对不同供应商自动记忆,可处理货到票未到、票到货未到和票货同到业务,控制采购成本和库存积压,进行现金计算,也可挂往来账,自动生成采购凭证,生成采购发票。
(七)销售管理
1.软件可进行销售订单、控制销售成本和短缺商品管理,并能自动跟踪订单、收款单、销售发票。2.软件可依据地区、单位、部门、职员等要素统计销售,掌握商品的发货及结算,自动生成销售凭证。
(八)库存管理
1.软件支持自制产品入库和企业内部材料、商品(产品)领用出库管理,接受捐赠、样品、礼品及采购商品溢余等由其它入库进行管理。2.软件支持对批次管理的商品进行批次盘点,通过“盘点处理”功能自动产生盘盈盘亏单据。
(九)存货核算
1.软件提供库存商品成本调整和调价功能,能对自制入库物品设置实际成本。2.软件对出入库成本、盘盈盘亏成本根据商品对应成本计算方法自动得到,对移动平均、先进先出、后进先出、个别计价商品提供成本计算底稿,对单个、多个、全部商品计算成本及成本或差异差价结转,提供计提存货跌价准备功能。
二、金算盘eERP-B财务管理软件财务管理解决方案
(一)财务管理
操作人员权限管理基础编码管理财务预算管理会计日常业务管理多币种管理账册查询、分析、结账通用转账损益结转和收支结转。
(二)应收、应付管理
1.应收账。物品销售应收借项录入应收计息应收计息贷项应收账。2.应付账。物品采购应收贷项录入应付借项应付账。3.现金银行。收到款项支付款项收付款凭证销售收款采购付款现金、银行日记账。4.工资管理。工资计算工资发放费用计提代扣个人所得税工资账表工资的核算、管理和统计分析。5.固定资产管理。卡片式固定资产信息固定资产增减值变动自动计提折旧并生成记账凭证。6.电子报表。资产负债表现金流量表损益表工作表图形分析报表数据引入引出。
【关键词】软件项目管理 项目计划 管理意识 解决方案
软件行业是一个极具挑战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。
1 项目管理在软件开发中的应用的成因
目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成完全适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。
2软件项目管理常见问题及解决方案
(1)缺乏项目管理系统培训
在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。
解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。
(2)项目计划意识问题
项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。
解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。
(3)管理意识问题
部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。
解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。
(4)沟通意识问题
在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。
解决方案:制定有效的沟通制度和沟通机制,提高沟通意识;采取多种沟通方式,提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位,例如:除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。
(5)风险管理意识问题
有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用
解决方案:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法,掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。
(6)项目干系人问题
在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、工作职责等没有足够了解以至于无法得到完整需求或最终经权威用户代表确认的需求;或者是多个用户代表各说各话、昨是今非,但同时又要求项目尽早交付;项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。
解决方案:项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。
(7)项目团队内分工协作问题
项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任分工不够清晰而造成工作互相推诿、责任互相推卸的现象;有时各阶段不同角色或同阶段不同角色之间的责任分工比较清晰,但是各项目成员只顾完成自己那部分任务,不愿意与他人协作。这些现象都将造成项目组内部资源的损耗,从而影响项目进展。
解决方案:项目经理应当对项目成员的责任进行合理的分配并清楚地说明,同时应强调不同分工、不同环节的成员应当相互协作,共同完善。
3 结束语
实施有效的项目管理绝非易事,对于软件企业而言,这不是一个小的改变,而是一种变革,企业需要为此付出艰苦的努力,同时,成熟有效的项目管理无疑将对企业起着至关重要的作用,项目管理的水平将是企业核心竞争力之一。
参考文献
[1]吴吉义.软件项目管理理论与案例分析.中国电力出版社,2007,08.
[2]李帜,林立新,曹亚波.软件工程项目管理:功能点分析方法与实践.清华大学出版社,2005,03.