精华内容
下载资源
问答
  • 高效组织的配置管理计划

    千次阅读 2014-08-19 06:53:19
    根据IEEE 828和CMM/CMMI,配置管理计划常常被认为是一份文档,确实的,对于一个大项目而言,往往需要制定项目自身的配置管理计划。但不是所有的组织都是软件外包组织,不是每个项目针对的是不同的客户。在非软件外包...

    作者:张克强    作者微博:张克强-敏捷307

            根据IEEE 828和CMM/CMMI,配置管理计划常常被认为是一份文档,确实的,对于一个大项目而言,往往需要制定项目自身的配置管理计划。

    但不是所有的组织都是软件外包组织,不是每个项目针对的是不同的客户。

    在非软件外包的高效软件开发组织中,推荐的配置管理计划应有三个层面。

    首先是组织层面,一般,提供统一的配置管理服务,不会允许每个团队自己搭建配置管理服务器。所以对于组织级的配置管理服务要有所约定,约定的主要内容有:

    • 如何建立项目文档目录?

    • 如何建立产品级目录?

    • 如何建立代码目录?

    • 配置项如何命名?

    • 配置库的备份和恢复如何进行?谁来进行?

    • 什么情况下拉分支?什么情况下合并到主干? 关于分支主干要提供多种模式,或者放开限制,让产品线或者项目组选择。

    • 如何进行变更? 一般应当在组织级进行定义和发布。如果放到项目层面,变更流程的制定太费功夫;当然有些大项目是有足够的预算和特殊情况需要专门定义项目级的变更。

    • 对产品线和项目如何开展配置审计?

    • 有什么推荐的配置管理实践?

         组织级配置管理规程或者指南的更新频率在每年一次左右。


    其次是产品线层面。对于特定产品线,已经存在大量的源代码和文档,那么结合实际,这个产品线在配置管理存储时有哪些约定? 

    • 比如对代码配置项和非配置项有所说明,不要假设每个团队新人都是代码配置管理达人,小心自以为是的新手加入一些自以为是的垃圾。虽然可以删除,但发现再删除,其本身就是成本。

    • 比如哪些依赖项值得存储?

    • 比如哪些区域是机密,权限另外管理

    • 比如那些代码是核心代码,如果改动需要资深人员复核。

    • 本产品线的主干和分支策略是什么? 守护主干?还是先锋主干?无分支?还是单分支?还是多分支?

    • 比如约定团队统一一致的工作环境:都把Java装在C:/java,把eclipse装在D:/eclipse


    最后是项目层面。在有了上述组织级和产品线级的配置管理约定后,项目层面的配置管理计划中最关键的是需要明确人员、基线和项目特殊配置项。其中基线的安排必须与项目本身生命周期的选择相匹配,最重要而言,必须匹配于里程碑。

    在这样的三层结构下,为项目高效计,不需要单独写项目的配置管理计划,只需把项目级的配置管理约定写入项目计划即可,一般的篇幅不超过1页。

    展开全文
  • 如何制定软件项目测试计划

    千次阅读 2012-10-15 11:20:04
    如何制定软件项目测试计划 摘要 随着测试走向规范化管理,测试计划成为测试经理...在越来越多公司的软件开发中,软件质量日益受到重视,测试过程也从一个相对独立的步骤越来越紧密嵌套在软件整个生命周期中,这样,如

    如何制定软件项目测试计划

    摘要 随着测试走向规范化管理,测试计划成为测试经理必须完成的重要任务之一,本文根据实践经验结合理论,探讨如何制定软件项目测试计划。
      关键字 测试计划 变更
      正文
      软件测试计划作为软件项目计划的子计划,在项目启动初期是必须规划的。在越来越多公司的软件开发中,软件质量日益受到重视,测试过程也从一个相对独立的步骤越来越紧密嵌套在软件整个生命周期中,这样,如何规划整个项目周期的测试工作;如何将测试工作上升到测试管理的高度都依赖于测试计划的制定。测试计划因此也成为测试工作的赖于展开的基础。
      一个好的测试计划可以起到如下作用
      1. 避免测试的“事件驱动”
      2. 使测试工作和整个开发工作融合起来
      3. 资源和变更事先作为一个可控制的风险
      测试计划的模板在各个公司中都大同小异,在个人实践中发现,测试计划制定中存在的问题具有相似性,下面重点就这些相似的问题谈谈如何制定软件项目测试计划。
      问题一:测试阶段划分
      就通常软件项目而言,基本上采用“瀑布型”开发方式,这种开发方式下,各个项目主要活动比较清晰,易于操作。整个项目生命周期为“需求-设计-编码-测试-发布-实施-维护”。然而,在制定测试计划时候,有些测试经理对测试的阶段划分还不是十分明晰,经常性遇到的问题是把测试单纯理解成系统测试,或者把把各类型测试设计(测试用例的编写和测试数据准备)全部放入生命周期的“测试阶段”,这样造成的问题是浪费了开发阶段可以并行的项目日程,另一方面造成测试不足。
      合理的测试阶段应遵循下面划分方法:

    如何制定软件项目测试计划 - wangwuxian17 - 软件测试的博客


      照上图所述,相应阶段可以同步进行相应的测试计划编制,而测试设计也可以结合在开发过程中实现并行,测试的实施即执行测试的活动即可连贯在开发之后。值得注意的是:单元测试和集成测试往往由开发人员承担,因此这部分的阶段划分可能会安排在开发计划而不是测试计划中。
      问题二:系统测试阶段日程安排
      划分阶段清楚了,随之而来的问题是测试执行需要多长的时间?标准的工程方法或CMM方式是对工作量进行估算,然后得出具体的估算值。但是这种方法过于复杂,可以另辟专题讨论。一个可操作的简单方法是:根据测试执行上一阶段的活动时间进行换算,换算方法是与上一阶段活动时间1:1。1~1。5左右。举个例子,对测试经理来说,因为开发计划可能包含了单元测试和集成测试,系统测试的时间大概是编码阶段(包含单元测试和集成测试)1到1。5倍。这种方法的优点是简单,依赖于项目计划的日程安排,缺点是水分太多,难于量化。那么,可以采用的另一个简单方法是经验评估。评估方法如下:
      1. 计算需求文档的页数,得出系统测试用例的页数
      需求页数:系统测试用例页数 ≈ 1:1
      2. 由系统测试用例页数计算编写系统测试用例时间
      编写系统测试用例时间 ≈ 系统测试用例页数×1小时
      3. 计算执行系统测试用例时间
      编写系统用例用时:执行系统测试用时 ≈ 1:2
      4. 计算回归测试包含的时间
      系统测试用时:回归测试用时≈ 2:1
      注:以上比值是个人工程经验值,需要更正比值的测试经理可以在具体实践中收集数据。
      基于以上方法优点是需求为已知的,可以利用已知来推算未知,适用于需求是已知且相对稳定的情况下;缺点是处于研发状态的项目,需求不清晰的时候比较难计算。现套用一个例子加于说明:需求文档页数为500,系统测试用例页数推算为500,则编写系统测试用例时间为500小时,执行系统测试用例时间为1000小时,回归测试需要500小时,加起来总共为2000小时,按一天8小时计算,共计250个工作日/人;假如一个月为22个工作日,则共计约11人/月,即投入4个人需要3个月左右时间工作量完成。当然,这是系统测试需要的全部时间。根据测试阶段划分原则,设计用例时间可以和开发同步进行,只需在测试阶段中安排的时间为1500小时即4人2个月工作量。
      (测试经理在编写测试计划时候,测试进度中的计划开始/结束时间往往用如2005010-20051201的具体时间划分方式,这样引起的问题是当项目计划进行变更的时候,测试计划时间不得不随时调整,这种变更可能是频繁而琐碎的,可以替代的办法是取消这种方式,采用30工作日/2人或者2人月这种工作量记录方式,这样一来,只需在项目计划中跟踪阶段的具体开始时间即可,不必反复修改测试计划。)
      值得注意的是:国内大多数公司的测试时间都是不足的,不可能按照这样的理想比例进行运作,因为测试执行的时间实际上不可能占据整个项目周期的1/2,甚至要短于其中任何一个项目阶段时间。即使是微软的测试结束原则也并不是完成所有必需的测试,而是测试在按计划结束的那一天结束!

    在测试时间不足的情况下,可参考下面项目计划变更时的做法,因为计划变更也涉及到测试时间不足的情况。
      问题三:变更的控制
      测试计划改变了已往根据任务进行测试的方式,因此,为使测试计划得到贯彻和落实,测试组人员必须及时跟踪软件开发的过程,对产品提交测试做准备,测试计划的目的,本身就是强调按规划的测试战略进行测试,淘汰以往以任务为主的临时性。在这种情况下,测试计划中强调对变更的控制显得尤为重要。
      变更来源于以下几个方面
      1. 项目计划的变更
      2. 需求的变更
      3. 测试产品版本的变更
      4. 测试资源的变更
      测试阶段的风险主要是对上述变更所造成的不确定性,有效的应对这些变更就能降低风险发生的几率。要想计划本身不成为空谈和空白无用的纸质文档,对不确定因素的预见和事先防范必须做到心中有数。
      对于项目计划的变更,除了测试人员及时跟进项目以外,项目经理必须认识到测试组也是项目成员,因此必须把这些变更信息及时通知到项目组,使得整个项目得到顺延。项目计划变更一般涉及都是日程变更,令人遗憾的是,往往为了进度的原因,交付期限是既定的,项目经理不得不减少测试的时间,这样,执行测试的时间就被压缩了。在这种情况下,测试经理常常固执的认为进度缩减的唯一的方法就是向上级通报并主观认为产品质量一定会下降,这种做法和想法不一定是正确的。由于时间不足,不能“完美”的执行所有测试,为了保证质量,第一种办法是调整测试计划中的测试策略和测试范围,实践中测试经理常常忽略测试计划的这个章节。调整的目的是重新检查不重要的测试部分,调换测试的次序和减少测试规模,对测试类型重新组合择优,力求在限定时间内做最重要部分的测试,可以把忽略部分留给确认测试或现场测试。其他应对办法包括减少进入测试的阻力,例如降低测试计划中系统测试准入准则;分步提交测试,例如改成迭代方式增量测试;减少回归测试的要求,例如开发人员实时修改,在测试计划中对缺陷修复响应时间和过程进行约定;和公司QA商量进行简化配置管理,跳过正式发布环节;缺陷进行局部回归而不是重新全部测试等等。
      第二:项目进行过程中最不可避免的就是需求的变更。那么,测试计划中就不能进行控制和约束的吗?答案是未必。当制定计划时,如果项目需求处于动态变化时,在测试用例章节就要进行说明。

    许多测试经理在编制测试用例时往往没有把测试用例和测试数据进行区分,因此,造成的问题是当需求变化时辛辛苦苦设计的数据就作废了。在这时,假使面临一个需求动态的项目,必须在计划中对需求变更造成的测试(设计)方式变化进行说明,例如采用用例和数据分离、流程和界面分离、字典项和数据元素分离的设计方式,然后等到最终需求确定后细化测试设计;另一个方面是最好制定一个变更周期的约定――尤其在执行测试阶段发现需求的变更――定义变更的最大频度和重新测试的界限,计划从一定程度上能够降低不可预期需求变化造成的投入损失。值得注意的是:需求发生变更时测试经理额外的工作是记住要在需求跟踪矩阵上做记录。
      对于测试产品版本的变更,除了部分是由于需求变更造成之外,很有可能是由于修改缺陷引发的问题或配置管理不严格造成。众所周知,测试必须是基于一个稳定的“基线”进行,否则,因反复修改造成测试资源和开发资源的浪费是可观的。合理的测试计划在章节中应增加一个测试更新管理的章节,在此章节明确更新周期和暂停测试的原则。例如,小版本的产品更新不能大于每天三次,一个相对大的版本不能每周大于1次,规定紧急发布产品仅限于何种类型的修改或变更,由谁负责统一维护和同步更新测试环境。测试计划通常制定了准入和准出准则,这是不够的,要考虑测试暂停的时候,产品错误发布或者服务器数据更新就是一个例子,暂停的时候如果测试经理不进行跟踪,可能发生测试组等待测试而没人通知继续测试的情况,所以,增加更新周期和暂停测试原则是很有必要的。
      最后,测试资源的变更是源自测试组内部的风险而非开发组风险,当测试资源不足或者冲突,测试部门不可能安排如此多的人手和足够时间参与测试时,在测试计划中的控制方法与测试时间不足相类似。没有测试经理愿意承担资源不足的测试工作,只能说公司本身是否具备以质量为主的体系或者项目经理对产品质量的重视程度如何决定了对测试资源投入的大小,最终产品质量取决因素不仅仅在于测试经理。为了排除这种风险,除了象时间不足、测试计划变更时那样缩减测试规模等等方法以外,测试经理必须在人力资源和测试环境一栏标出明确需要保证的资源,否则,必须将这个问题作为风险记录。规避风险的办法可能有:
      一,项目组的需求和实施人员参与系统测试;
      二,抽调不同模块开发者进行交叉系统测试或借用其他项目开发人员;
      三,组织客户方进行确认测试或发布β版本。
      尽管上面尽可能的描述了测试计划如何制定才能“完美”,但是还存在的问题是对测试计划的管理和监控。一份计划投入再多的时间去做也不能保证按照这份计划进行实施。好的测试计划是成功的一半,另一半是对测试计划的执行。对小项目而言,一份更易于操作的测试计划更为实用,对中型乃至大型项目来看,测试经理的测试管理能力就显得格外重要,要确保计划不折不扣的执行下去,测试经理的人际谐调能力,项目测试的操作经验、公司的质量现状都能够对项目测试产生足够的影响。另外,计划也是“动态的”!不必要把所有的因素都可能囊括进去,也不必要针对这种变化额外制定“计划的计划”,测试计划制定不能在项目开始后束之高阁,而是紧追项目的变化,实时进行思考和贯彻,根据现实修改,然后成功实施,这才能实现测试计划的最终目标――保证项目最终产品的质量!
      软件开发是一项复杂的、创造性的协作式游戏。作为游戏它自然存在着乐趣,所以程序员们才会乐此不疲,前仆后继。首先、这种快乐源于一种创造事物的快乐。其次、这种快乐来自于一种开发出对别人有用的东西时所带来的满足感。第三、快乐源自开发过程中,亲眼看到软件按自己预先设想的那种效果运行时所带来的迷人魅力。第四、快乐源自开发过程中持续学习的快乐。最后、快乐源自开发过程中,我们能象诗人一样,仅凭自己的想像,来建造自己的城堡时带来的快乐。编程的快乐在于它不仅满足了我们内心深处进行创建的渴望,而且还唤醒了每个人内心的情感。不幸的是,同样作为游戏它也有苦恼的一面:首先、苦恼来自追求完美主义。其次、苦恼来自总是由他人来设定目标、供给资源、提供信息。第三、苦恼来自于寻找琐碎的BUG却是一项枯燥的、重复性的活动。第四、人们通常希望在项目接近结束时,能收敛得快一些,然而,情况却是越接近完成,收敛得越慢。最后、苦恼来自当投入大量的辛苦劳动后,产品发布时却面临着陈旧过时的危险。作为软件开发者,我们别无选择,只有适应它们,就这样痛并快乐着地面对每一天。
      来自领导的信息只有25%被下级知道并正确理解,从下到上的反馈信息不超过10%,平等交流的信息则可达到90%以上。平等造就信任,信任增进交流。有效地进行适当的意见交流,对一个组织的气候和生产力会产生有益和积极的影响。使顾客满意并和他们面对面地交流,才是蠃得市场的关键。
                                 ——引自《管理智典》
      管理是一种控制性游戏,在游戏面前,你只有二种选择:或者,你确信自己能蠃,于是投入足够多的能量来蠃得一切;或者,你不进行这个游戏,放弃它。然而,作为软件项目管理者,你也应该知道,早投入、高风险才会有高回报。逃避风险是致命的,因为这也会让你得不到与风险同在的利益,久而久之,你就会面临着被市场淘汰的危险。风险是"遭受损失的可能性",由条件、结果以及周围的环境构成。风险和问题的区别在于:风险是尚未发生的问题,而问题是业也成真的风险,昨天的风险可能会是今天的问题。风险管理主要包括下面几个方面:
      第一、风险识别:
      从头脑想像中抽取出各种风险并加以筛选,再加上在整个开发过程中,保持持续不断的风险发现机制,以发现新的风险。
      第二、风险分析:
      对风险出现的可能性和潜在的危害性进行量化分析。
      第三、应急计划:
      如果识别出的风险真的出现,你将采取的应急措施。
      第四、风险缓解:
      为了使应急计划得以有效实施,必须在风险转化为真之前所采取的措施。
      第五、持续的监控:
      跟踪需要管理的风险,寻找风险出现的迹象。
      项目面临的某些风险可能是致命的,发生时会使项目严重滞后或直接废弃。这类风险是最需要管理的,但有效的管理它们也许会使你与你的上级发生冲突(如时间上最后期限等),对于这类风险往往超出了你的管理权限,可以先将它们列为项目假定风险,然后把它们转交给上级来管理。风险可能出自技术、政治、经济、资源或其它各个方面,几乎无所不在,并且会对项目开发、市场占有率或是达到项目目标(如进度、预算、质量等)造成灾难性后果。但在所有软件项目中,通常会共存五大核心风险,分别如下:
      第一、缺乏合理的进度安排
      这是导致项目滞后的最主要的原因。首先、它源于开发人员们普遍存在的乐观主义精神,我们总是期待在实现过程中不会碰到困难,然而我们的构思是有缺陷的,因此总会发现BUG。其次、它源于一种错误的认识,人员数量和开发时间是可以互换的,既投入两倍的人数会在一半时间内完成开发工作。然而,这种理论却忽略了随着人数的增加,相应的也会增加新人培训和人们相互交流所需的负担,另外,还有任务重新分配所造成工作中断带来的负担,正如Alistair Cockburn所说:"最有效的交流方式是面对面的交流"当3、5个人的时候很容易做到这种交流方式,随着人数的增长,再也很难做到这种交流方式。交流成本的增加与培训新人所需时间成本的增加、以及任务重分配导致工作中断成本的增加,直接导致一种结果:向进度落后的项目中增加人手,只会使进度更加落后。
      第三、源于空泛的估算,管理人员特别是高层管理人员为了满足顾客期望的日期而造成的不合理进度安排。如果分配的时间一开始就不够,不管高层领导威胁有多么吓人,工作也无法按时完成,如果人们察觉到管理者可能滥用权力来惩罚自己,他们就会感觉到威胁,没有安全感。安全感的缺乏会让人们反对变化,而在所有成功项目中,变化是唯一不变的要素之一,除非感到安全,否则人们就不会去迎接变化,只会按部就班,这样往往丧失了很多走捷径的好机会,而这些机会原可以大大缩减时间进度的。第四、如果你没有认真估算产品规模,那么你预计的进度就是空中楼阁,唯一的依据只是你的希望。在估计产品规模时,除了正常的时间计算以外,不但应该将"可能需要做"的事情所需工作时间加上,还要将某些"可能不需要做"的事情所需工作时间加上。项目的超期不应归咎于开发者的低效率。
      最后、项目的滞后不是一下子造成的,而是在一天天的不知不觉中造成的,有无数种方法可以浪费一天的时间,但是没有任何方法可以拿回一天的时间。高层管理者的不良反应肯定会对信息的完全公开造成压制;相反,仔细区分状态报告、毫无惊慌地接收报告、决不压制下级,将能鼓励诚实的进度汇报,而这会使你在第一时间掌握实际进度,把握先机,及早做出正确的修订,从而避免了晚期才获得这些实际信息时,那种无力挽天时的无奈。此外、也可以在项目管理中设定一个合理的进度安排和一个具有挑战性的期望目标完成时间。期望目标和合理进度不同,期望目标完成时间,可以设为项目完成的成功率在30%左右时的日期,这样很具有挑战性,但不能强迫要求必须完成此期望目标。毕竟,合理进度安排才是更合理的时间安排。另外、需要指出的是现代敏捷方法论对此进行了有效改进,如XP(极限编程)中,就利用用户素材与CRC卡,进行优先级划分并进行快速增量迭代开发,针对原来开发的产品或第一次迭代开发后的原型完成的功能量,来计算功能点,从而估算每个CRC卡的功能点,得到总功能点来推导出比较准确的进度安排。
      第二、需求的变化
      从项目的角度来说,需求总是向着膨胀的方向在变化。就连去掉某些已经做好的东西,也是一种膨胀,因为它增加了工作量。开发人员交付的是用户满意程度,而不仅仅是实际的产品,用户的实际需要会随着程序的构建和使用而变化。要知道,一个活着的软件必须面对变化,只有死掉的软件才不会有需求变化(没人用了),我们应该尽早面对现实,而不是逃避,事先为它们做好思想准备。变化是好事不是什么坏事。同样,现代敏捷方法论强调对需求变化的快速响应,如XP(极限编程)就采用快速增量迭代开发,来在短时间内开发出功能不断增强的原型软件提交给用户使用的方法,来快速响应需求的变化。
      第三、人员的变更
      在我们有些管理者中,总是假设开发者都是可以随便替换的,新员工马上可以取代离去的老员工,多么愚蠢的假设。解雇员工或高的员工替换率最大的影响,是使软件项目失去了连续性。这是在抱着这种假设的团队文化中,大量员工会在项目进行到一半时离开,新来员工往往需要1到3个月的上道时间,在这段时间内,他们做不了什么,还经常需要其它老员工的帮助,从而浪费了其它老员工很多不必要时间,导致项目进展更加缓慢,最终造成项目的很大损失。
      另外、还有一种现象在中国软件事业中普遍存在,当正在进行一个项目时,另一个项目由于进度落后或最后期限等原因所致,高层管理者就会从你的团队中抽掉一些人去到另一个项目中补墙。这种拆东墙补西墙的作法,往往导致的结果是两个项目都会落后,因为它不仅十分错误作了团队人员可以随意替换的假设,而且还作了将开发人数与开发所需时间可以互换的错误假设。盲目的认为,投入大量人数后,新人马上会投入新的工作,这样项目开发所需时间就会成倍缩短。在这种组织文化中,是不会形成一支稳定的团队的,成员整天只会忙碌着补自已的墙或为别人补墙,充当着类似消防员的角色,那儿有火那儿就有我们的身影。
      同样,现代敏捷方法论非常注重人的能力,如XP中通过权力下放、教练角色、将团队紧密围在一起并结对编程、小团队组成等方式,来组成一个强有力的团队,由于有凝聚力,所以很少有大的人员变动,他们往往可以完成两倍于他们人数所能完成的任务。非常小的团队能够产生非常大的物质生产力,有时候,小团队可以在很短时间内创造奇迹,而大型团队极少能做到。但是,小团队却往往得不到足够的政策支持,从而导致任由团队超编,这是一种病态组织文化所致。作为管理者必须明确知道,拥有一支稳定的、有凝聚力的开发团队是组织最大的财富,而不是障碍。
     第四、规约崩溃
      这种情况只有两种结果:要么发生,要么不发生,不会有不同程度的影响。但它真的发生时,它会直接毁灭你的整个项目。在项目启动之初,项目各方需要通过一系列商谈来确定需求的范围,规约崩溃就是指这个谈判过程的崩溃。在商谈期间,很多时候当遇到严重冲突时,由于双方都不愿意让步,但又不想放弃这个项目,从而导致这些冲突被掩盖起来。最终项目便朝着一个带着缺陷的、含混不清的目标前进了,被掩盖的问题暂时不会打扰你,但不是永远。尽管你可以含混说明一个产品,但不能含混构造一个产品,所以,最终在项目晚期这些问题将发生,在大半甚至所有预算时间和金钱都已付出的时候,此时,任何一方不再全力支持,都将使项目被取消。任何规格文档中的含糊标志着不同的系统参与者之间存在着未解决的冲突。只要在开发过程中有多个参与者,就一定会有冲突存在。谈判困难而调解容易,如果两个人的利益是完全或部分相斥的,预先做好安排,准备好请双方通过调解来解决冲突。同样,现代敏捷方法论通过客户的积极参与胜过合同谈判的方试,来尽早发现和避免规约崩溃。
      第五、低效率
      对于项目成功而言,项目人员的素质、人员的组织和管理是比使用的工具或采用的技术方法更重要的因素。团队质量是项目成功最大的决定因素,对人的关注、激励和培养胜过一切。项目管理人员的职责不是要人们去工作,而是给人们创造工作的可能。创造力来自于个人,而不是组织架构和流程,项目管理者面临的中心问题就是如何设计架构和流程,来提高而不是压制人们的主动性和创造力。通过权力的向下委派,从而产生了改进的质量、提高的生产率、高涨的士气,进而使中心的权威实际上得到了加强。就整体而言,组织机构会更加融洽和繁荣。增加加班时间只会降低生产力,压力之下的人们无法更快地思考既也会降低生产力。使用压力和加班的真正原因是为了在项目失败时让人们看上去能好受一些。
      正式的过程改进程序需要花钱、花时间,特定的过程改进工作还会延缓项目进度,尽管最终会体现生产力上的收获,它们也不可能抵消花在过程改进上的时间。多种技术的改进程序(如CMM提级)很可能让项目比不实施这些程序完成得更晚,对于人员超编的项目,标准过程会为多余的人们制造出足够的工作,让所有人都忙个不停,尽管很多是无用的,这也导致生产率低下。人员超编的团队往往生产率低下,因为它们团队内部耦合度提高,会议时间、重复劳动和无效工作都会增加。理想的人员安排是在项目的大部分时间里由小型核心团队来做设计工作,在开发的最后阶段再逐渐加入大量人手。如果不大幅度减少调试的时间,就没办法让项目大幅度提前完成,而要成比例减少调试时间,就需要成比例增加设计所需时间,因为绝大多数的错误源于接口缺陷,编码前进行的正规而完善的设计,可以大幅度减少错误。同样,现代敏捷方法论通过注重人、快速迭代开发、自组织的团队和提倡可持续的开发速度,来避免跑的过快导致团队精力耗尽、出现短期行为而导致崩溃的问题,从而保持了稳定的生产率。
      精兵简政是失败公司使用的办法,它让员工负担失败的责任。成功公司的目标应该正好相反:兴旺、发达、而人性化。
                                  ——引自《最后期限》
      企业的最大风险则与价值相关:在低价值的项目上浪费资源,付出高价值的机会成本,就这是企业最大风险。勇于承担风险是好事,但必须由收益来导航,愿意承担多少风险,必须取决于能获得多少收益。真正的项目评估不是倾向于不断削减成本,来提高价值,而是在风险与价值之间取得平衡点。通过不确定的价值和不确定风险组合效果的净收益图,来指导你把资本投入到最适当的地方。我们每个软件从业人员都必须明白:顾客真正需要的,是我们能够给他的、某种他想得到的利益。

     组件级测试
      很显然,首先必须开发单个组件,然后才能将它们"装配"成功能系统。因为组件可以进行早期测试,所以在 TAP 中端到端测试是从组件测试开始的。在组件测试中,随着环境的建立,适当的测试也分别实施于各个不同的单个组件上。功能测试和性能测试在组件测试阶段都相当有价值,它们帮助诊断了在整个环境构建前和构建中的各种缺陷。
      组件测试中的功能测试
      组件级功能测试验证了每个组件所执行的事务。这包括了组件或系统所要求的任何数据转换和组件所处理的事务的业务逻辑的验证。在应用程序功能的开发中,基础设施测试(infrastructure testing)验证并量化整个环境中的数据流量,并以这种方式来同时进行功能和性能测试。数据完整性必须当数据在组件间传递时进行验证。例如,XML 测试在逐个事务地验证 XML 数据内容,并在需要时验证正式 XML 结构(元数据结构)。对组件测试来说,诸如 IBM Rational Robot 这样的自动可扩展的测试工具可以大大的减少用在 GUI 测试和非GUI组件的功能测试上的时间和精力。Rational Robot 的脚本语言支持对外部 COM DDLs 的调用,是非 GUI 对象测试的理想工具。此外,Rational Suite TestStudio 和 Rational Team Test 所附带的新的 Web 和Java 测试功能,提供了测试 J2EE 架构和使用 java 语言来编写测试脚本的附加功能。
      组件级可伸缩性测试和性能测试
      与这些功能测试并行的是组件级可伸缩性测试,在环境中检验每个组件来确定其事务(或者说容量)的限度。一旦有足够的应用功能来创建业务相关的事务,事务特征测试(transcation characterization testing)就被用来确定业务事务中的各个定量描述,包括消耗的带宽和后台 CPU 以及内存的占用率。资源测试(Resource testing)将这个概念扩展到多用户测试,从而确定应用程序和子系统或模块中全部的资源消耗。最后,配置测试(configuration testing)可以用来确定哪些硬件、操作系统、软件、网络、数据库或者其他配置上的变更可以优化性能。与功能测试一样,有效的自动工具如 Rational Suite TestStudio 和 Rational Team Test 所提供的那些工具可以极大地简化可伸缩性测试和性能测试。在这种情况下,创建、计划和驱动多用户测试以及监控资源利用率的能力是有效且成功完成资源测试、事务特征测试和配置测试的基础。
      系统级测试
      系统 "装配"完成后,对环境的整体测试就可以开始了。同样,端到端架构测试需要对整个环境的功能以及性能/可伸缩性进行验证。
      系统级功能测试
      集成是首要考虑的问题之一。集成测试 ( Integration Testing ) 从数据的角度检查了整体系统是否完成了集成。也就是说,需要互相交互的硬件或软件组件是否通讯正常?如果是,那么,在它们间传递的数据是否正确呢?如果可以,数据应当在系统组件传送的中间阶段被访问和验证。例如,当数据被写到临时数据库中时,或者数据在被目标组件处理之前已经存在于消息队列中时,就应该对数据进行验证。在这些组件边界对数据进行访问能够为数据完整性验证和数据问题的描述提供一个重要的附加尺度。如果在两个数据传输点之间检测出数据错误,那么有缺陷的组件必定是位于这两个传输点之间。 系统级可伸缩性测试和性能测试
      可以通过创建一个测试来回答以下关于环境的可伸缩性或者完成情况的问题:
      ·在系统仍能维持可以接受的响应时间下,最多可以有多少用户同时访问它?
      ·我的高可用性架构是否可以按照设计的那样工作?
      ·在加入新的应用程序或者对正在使用的应用进行更新后会发生什么情况?
      ·最初使用时,系统应该如何配置以支持我们所期望的用户数?6个月之后该如何配置呢?一年之后呢?
     
      ·我们只能得到部分功能--设计是否合理?
      这些问题的答案可以通过一定的测试技术来获得, 包括可伸缩性/负载测试、性能测试、配置测试、并发测试、压力和容量测试、可靠性测试,以及失败转移(failover)测试。
      在系统容量方面,总体环境测试通常是从可伸缩性/负载测试开始的。这种测试方法逐渐增大目标环境上的负载,直到某些性能要求如最大响应时间达到极限或者特定的资源被耗尽。这些测试的目的在于确定事务处理和用户容量的上限,它们经常会和其他测试手段结合起来以优化系统性能。 性能测试与可伸缩性/负载测试相关,它通过测试特定的业务场景来确定环境是否满足所设定的负载和事务组合的要求。(图 4)
      与组件级配置测试并行的是系统级配置测试,它提供了特定的硬件和软件设置下的权衡信息,同时也提供了有效的资源分配所需的度量标准和其他信息。

    如何制定软件项目测试计划 - wangwuxian17 - 软件测试的博客
    图 4:性能测试:系统具有特定的用户负载时能够按照要求执行吗?

      并发测试(concurrency testing)(图 5)剖析了当多个用户同时访问同一段应用代码、同一个模块或者数据库纪录时的效果。它鉴别并度量了系统加锁和死锁的级别以及系统中单线程代码和加锁信号的使用。从技术角度讲,并发测试可以归为一种功能测试,不过它常常和可伸缩性/负载测试配合使用,因为它需要多用个户或者虚拟用户来驱动系统。
    如何制定软件项目测试计划 - wangwuxian17 - 软件测试的博客
    图 5:并发测试能够识别死锁和其他并发访问问题

      压力测试(stress testing)(图 6)在系统达到饱和(指资源如 CPU、内存耗尽等情况)时来测试系统以判断其行为是否发生变更,或者是否会对系统、应用程序和数据产生不利影响。容量测试(volume testing)是和压力测试及可伸缩性测试相关联的,它可以确定整个系统能够处理的事务容量。通过压力和容量测试能够知道系统分别在处理突发的访问量增加或进行持续的大容量活动时所具有的弹性,这不包括那些因为内存泄漏或者队列溢出所引发的失败。
    如何制定软件项目测试计划 - wangwuxian17 - 软件测试的博客
    图 6:压力测试能够确定高容量使用时的效应

      一旦应用环境开始工作并进行了性能优化,可以在 75%到 90%的环境利用率下进行一项长期可靠性测试(reliability testing),用来发现任何与较长的运行时间有关的问题。在应用了冗余和负载平衡的环境中,失败转移测试(failover testing)(图 7)分析理论上的失败过程并测试和测量总体失败转移进程及其对终端用户的影响。本质上,失败转移测试回答了这样一个问题:"如果一个特定的组件运行失败,用户还可不可以在最小的中断下继续进行访问和处理?"
    如何制定软件项目测试计划 - wangwuxian17 - 软件测试的博客
    图 7:失败转移测试:如果组件X失败,那么将发生什么情况呢?

      最后,如果在环境中使用了第三方软件,或者主机供应商及其他外部来源所提供的组件,那么 SLA(Service level Agreement服务水平协议)测试则可以用来确保双方合同规范中所规定的终端用户响应时间,以及流入和流出的数据量。一个典型的协议通常会指明在既定时间范围内的活动容量和一个特定的最长响应时间。
      一旦外部数据或软件到位后,对这些来源进行持续监控是明智的做法,这样就可以在问题发生时快速的采取补救措施,将对终端用户的影响降到最小。 与组件级的可伸缩性测试一样,Rational suite TestStudio、Rational TeamTest 和其他类似的工具提供了一些高级的,多用户的测试能力,它们可以用来高效进行上述的大多数或者全部的可伸缩性和性能测试。
     一个实际例子
      也许举一个例子是说明的最好办法。请考虑下面的情况:
      通过 eRetailer 构建一个公共的 Web 书店,并在它的内容层中使用了四种由内容提供的 Web 服务。第一种服务提供目录,包括书名,介绍语和作者。第二种服务提供所有产品的当前库存信息。第三种是价格服务器,它提供商品定价信息,并根据购买者的所在地提供运费和税费信息并完成交易。最后一种服务用来保存用户档案和历史购买纪录。 表示层将用户通过 UI 图形界面输入的请求转换成 XML 并发送给相应的内容服务器。接着响应 XML 就会通过表示层转换成 HTML 并服务于用户会话。每一种内容层的服务都会根据需要更新其他的服务。(参见图 8)例如,在用户的历史购买纪录发生变更时,价格服务器必须更新相应的用户档案服务。
    如何制定软件项目测试计划 - wangwuxian17 - 软件测试的博客
    图8:典型的 eRetailer 应用程序的访问点

      对上述的系统来说,一个端到端测试策略的起点是分别对内容层的每种服务同时应用功能测试和可伸缩性/负载测试。XML 请求被提交给每种内容服务,而相应的响应 XML 文档则被捕获,从而对它的数据内容或者响应时间进行评估。随着这些内容服务逐个的集成到系统中,通过向 Web 服务器提交事务,功能测试和可伸缩性/负载测试也都可以在集成系统中进行。事务可以贯穿整个站点进行验证,不论是为功能测试(使用 SQL 查询)还是为可伸缩性/负载测试。
      在系统开发过程中,应用于所有访问点的单个测试可以被用来调协各个服务,以便使其能够在整个系统中正常运作――无论从数据内容(功能性)还是性能方面(可伸缩性)来说。当前端发现问题时(比如,通过浏览器),那些原来用来测试单个组件的测试用例和数据可以帮助我们快速定位错误位置。
      网络建模的优点
      作为设计过程的一部分,无论在硬件获取之前还是在最初的测试阶段中,为不同的网络架构进行建模都可以扩大端到端测试的优点。因为它可以帮助设计更有效和低错误率的网络。在部署之前进行网络基础设施的建模可以帮助指出性能的瓶颈所在,以及路由表和配置中的错误。此外,在测试中获取的应用程序事务物证可以输入到这种模型中,用来识别和分离应用程序的"chattiness" 和基础设施中的潜在问题。
      结束语
      端到端测试从一个概括的质量角度对计算环境进行测试和分析。每一个组件的可伸缩性和功能性在开发阶段和前期的质量评估中都进行了单个测试和集成测试。这为开发的有效性提供了诊断信息,同时为系统的发布提供了高度的质量保证。端到端测试为管理当今架构和分布式计算环境的复杂性提供了一个全面而可靠的解决方案。 当然,在需要做大量的测试和分析时,端到端测试要求有相当的专业技术和经验来组织、管理和实践。但是从商业角度来说,那些应用端到端测试的组织能够得到应用软件、系统性能和可靠性上的高度保证。最终,这些组织将获得质量的提高所带来得种种好处:更好的顾客关系,较低的运营成本和巨大的收入增长。
      在过去的六年中,RTTS 作为 IBM Rational 的伙伴之一,开发并完善了自己的端到端测试方法,并与数以百计的客户一起努力确保了应用的功能性、可靠性、可伸缩性和网络性能。
    展开全文
  • 在前面的课程中,我们介绍了一些常见的安全产品。但实际上,解决公司的安全问题,并不是部署了这些安全产品就万事大吉了。安全防护的过程是一个与黑客...因此,我们常说“建立一个安全体系很简单,运营好一个安全体.

    在这里插入图片描述

    在前面的课程中,我们介绍了一些常见的安全产品。但实际上,解决公司的安全问题,并不是部署了这些安全产品就万事大吉了。安全防护的过程是一个与黑客持续进行攻防对抗的过程,黑客总是能够发现新的方法,绕过安全产品的防护,实施攻击。

    如果黑客绕过安全产品,我们应该如何及时发现黑客的攻击呢?具体来说,我们应该如何对黑客的攻击路径和攻击产生的影响进行统计分析?以及在发现黑客的攻击之后,我们要如何提取攻击特征,补充安全产品的检测规则呢?这些都是我们需要持续关注的事情。因此,我们常说“建立一个安全体系很简单,运营好一个安全体系却很复杂”。

    我们经常会使用 SIEM(Security Information and Event Management,安全信息和事件管理),来帮助我们运营一个安全体系。通过 SIEM,我们可以将散落于各个系统、设备和安全产品中的日志进行汇总和梳理,快速串联出黑客的完整攻击路径,更高效地完成安全体系运营的工作。

    那 SIEM 究竟是如何高效运营安全体系的呢?下面,我们一起来看。

    SIEM 有哪些功能?

    我们先来说一下 SIEM 是什么。简单来说,SIEM 就是一个基于各类日志,提供安全运营和管理能力的统一平台。基于这个定义,我们来总结一下 SIEM 的功能。

    首先是收集日志。对 SIEM 来说,需要收集的日志来源于操作系统、路由器、数据库等业务设备,防火墙、WAF、IDS 等安全产品,以及业务前后端本身。

    在收集到大量的日志之后,SIEM 会对数据进行分析统计,将海量的日志进行筛选和总结,给予安全运营人员最精简的结果,提高分析效率。经过数据分析之后,安全运营人员就能够快速发现并处理各类安全事件了。

    最后,SIEM 还需要提供完整的运营流程。比如,通过工单功能完成安全事件的管理,通过报表追踪各安全产品产生的报警、发起的安全事件、数据的流动情况等,清晰地表现出公司的安全现状和能力。

    没有 SIEM 平台之前,安全运营人员需要对这些安全事件和报警进行人工处理和记录,不仅效率较低而且容易出现纰漏。有了 SIEM 平台之后,我们就可以将整个运营工作线上化,大大提升运营的效率和质量。

    SIEM 是如何落地的?

    不知道你有没有发现,我一直强调“运营”这个词。相比我们之前讲过的安全产品,SIEM 更加注重运营。因此,落地 SIEM 可不仅仅是部署一款安全产品这么简单。

    我们之前提到的安全产品(防火墙、WAF、IDS 等)都是以技术为导向的。换一句话说,这些安全产品效果好不好,实际上取决于技术和检测规则。只要技术实现上能够满足性能要求,规则上能够尽可能多地覆盖攻击特征、检测黑客行为、减少误伤,就很容易落地并产生收益。

    但是 SIEM 不一样。我在说 SIEM 的核心功能的时候,你可能很快联想到,可以使用经典的日志分析组件 ELK,去实现 SIEM 的各个功能。所以你看,SIEM 其实不存在特别明显的技术挑战。

    那为什么很多公司在规划做一个 SIEM 的时候,最终都“虎头蛇尾”、不了了之了呢?原因就是我们一直强调的“运营”能力不足。运营能力不足让这些公司做出来的 SIEM 空有一个架子,无法实际落地,也就无法产生应有的价值。

    那么问题来了,SIEM 究竟该如何落地呢?下面,我就结合 SIEM 落地的流程图,带你一起分析。
    在这里插入图片描述

    1. 制定计划

    首先,当我们决定要做 SIEM 的时候,需要制定一个长期的计划。依据公司的安全情况,这个长期可能意味着 1-3 年的持续投入。

    在部署一些成熟的安全产品(比如,防火墙、WAF 等)时,公司只需要在采购和研发时进行一次性投入,之后再花费少量的资源运维就可以了。所以,这些安全产品的落地就是发现问题、解决问题的过程。

    但是,SIEM 并不是一个通用的安全产品,每个公司都需要花费大量时间磨合 SIEM 的设计、部署和运转。因此,我们需要制定长期的、体系化的落地计划。通常这个计划分三个阶段:设计阶段、建设阶段和运营阶段。在 SIEM 启动之前,我们就要预估:每个阶段投入的人力、时间、成本;每个阶段的需求和预期产出;每个阶段按月或者按季度的时间节点等。这些确定下来之后,还要公司同步确认才行。

    2. 设计阶段

    计划制定完成之后,就进入设计阶段了。在设计阶段,我们首先需要明确公司对 SIEM 的需求,或者说,我们希望 SIEM 能够解决哪些问题。这些问题和需求都是从哪里产生的呢?

    其实,在建设安全体系,引入了部分的安全产品之后,我们在安全运营上会感受到很多痛点。比较常见的,由于安全设备过多,我们在实际分析日志的时候,需要一个一个登录这些设备查找日志,这大大降低了我们的工作效率。

    这个时候,很多人会提出搭建一个 SIEM 平台来解决这些痛点。但实际上,这些痛点都是很宽泛的需求。这些需求没有很清晰地定位出,SIEM 平台究竟需要收集哪些设备上的哪些日志,我们又应该以什么样的格式存储和整合这些日志。

    所以,为了给 SIEM 一个清晰的定位,我们需要总结出一份详细的需求列表。我认为可以从三方面来总结。

    第一方面:SIEM 需要管理哪些设备,收集哪些数据。

    这个列表需要根据我们的实际运营工作来进行总结。一般来说,我们可以根据黑客的攻击路径来进行梳理。

    比如,在 Web 攻击中,黑客首先需要发起 HTTP 请求。那么黑客会先在前端进行操作,然后 HTTP 请求经过防火墙、WAF,最终到达服务端。因此,前端、防火墙、WAF 和服务端对应的请求日志,我们都需要收集。

    如果涉及进一步的权限提升,那黑客需要在服务器内进行操作,或者通过路由器、交换机访问其他服务器。所以,这些服务器、网络设备和 IDS 中的行为日志,同样需要收集。

    第二方面:安全运营目前遇到的痛点的典型场景是什么,预期的解决方案又是怎么样的。

    安全运营最大的痛点有两个,一是日志分散,二是日志无法关联。通过日志收集功能,我们已经将日志进行了汇总,解决了日志分散问题。那日志间的关联问题该怎么解决呢?

    我们来看一个例子。

    一次 Web 攻击要收集的日志有很多:网关上记录的一次 HTTP 请求,WAF 上对应的一次判定记录,服务端可能记录的具体请求参数。如果黑客攻击成功,那么系统上还可能留下一次命令执行的记录。如果我们想要将这些日志进行串联,还原完整的攻击链路,就必须要求 SIEM 在各个日志中能记录特殊的标记。在 Web 请求中,这些特殊的标记通常是用户 ID、IP 或者设备 ID 等。

    更复杂一些的,当 HIDS 发现了一起攻击时,你可能需要回溯黑客是怎么进入系统的,那我们就需要将 HIDS 中的日志,和 NIDS、WAF 等其他日志进行关联。但是,这些日志类型不同,没有能够贯穿始终的标记。这个时候,就需要 SIEM 能够通过额外的信息进行关联。比如,通过登录日志中的用户和 IP 关联 HIDS 和 NIDS 日志等。对这些关联关系的梳理和定义,决定了 SIEM 需要以什么形式存储日志。

    第三方面:完整的安全运营流程是什么。

    我们最终设计出来的 SIEM,肯定不只是简单地堆砌一些功能。对于运营工作来说,工具和标准化流程同样重要。如果在实际工作中,运营人员使用线上工具,执行的却是线下流程。这种状态切换导致的时间消耗,对于运营工作来说反而得不偿失。因此,在数据分析完成之后,我们需要依据运营工作的需求,整合出 SIEM 需要的管理功能(比如。工单、报表),形成一个完整的运营流程。

    通过对这些需求的分析和整理,我相信你已经能够清晰地预估 SIEM 的完整形态了。那么,不管是你自己设计、研发,还是采购商业的 SIEM 平台,你都能够进行合理地功能分析和收益评估了。

    3. 建设阶段

    在完成需求设计之后,就进入 SIEM 平台的建设阶段了。首先,SIEM 要收集各种设备和应用的日志,每个公司的设备和应用都有很多,我们没有能够取巧的方式,只能一个一个进行对接。可想而知,SIEM 的建设一定是一个十分漫长的过程。SIEM 的实施周期长、成本大,所以我们的预期常常很高,很容易产生达不到预期的失落感。

    那么,我们应该如何去建立正确的预期呢?最简单有效的方法就是建立短期预期,并且快速迭代。比如,在最开始的建设阶段,SIEM 只需要满足日志管理,也就是满足我们在一个统一的平台查看各个日志即可,至于如何去分析数据、产出报表,我们可以放到下一个迭代周期去规划。在明确了这些可实现的预期之后,我们就能理清每个迭代周期的工作,也能够增强公司对 SIEM 这个长期项目的信心,从而获得更好地支持。

    4. 运营阶段

    在收集到部分常用日志,有了基础的数据分析能力之后,安全运营人员就可以使用 SIEM 平台进行运营分析工作了。

    但是,SIEM 平台的运营和建设阶段并不是完全独立的。因为,SIEM 平台的建设需要通过不断的短期迭代进行推进。SIEM 平台建设迭代周期主要参考的,就是运营阶段 SIEM 平台的使用情况和产生的需求。

    这样一来,SIEM 平台就能够以不断满足安全运营需求为导向,持续完善自身功能,最终大大提升安全运营人员的工作效率。

    SIEM 落地中有哪些常见问题?

    现在,相信你已经知道 SIEM 平台落地的几个主要步骤了。除此之外,我还想强调 SIEM 落地中几个常见的问题。

    第一个:垃圾数据太多。

    如果你接触过大数据分析,你应该听说过“Garbage in,garbage out”。SIEM 的本质其实也是一个大数据分析的平台,它同样对数据的质量有着极高的要求。

    因此,在考虑 SIEM 的数据收集需求时,我们需要思考清楚哪些日志对 SIEM 有用,基于这些日志,你是否能够解决安全运营问题。这样一来,SIEM 就不会变成一个只用来存储大量无用数据的“垃圾场”了。

    第二个:数据维度缺失。

    数据维度缺失对 SIEM 来说,同样是一个致命伤。为什么这么说呢?SIEM 中的数据都是需要长期积累的,某些历史数据一旦缺失就很难有办法补充。因此,经常会出现在使用 SIEM 的过程中,我们突然发现某些关键字段缺失,导致事件排查中断。

    比如,对于一次网络请求,我们可能会记录的日志字段包括:时间、源 IP、目标 IP 等。但是,当出现一起安全事件时,你除了要知道是哪个 IP 发起的请求,可能还需要进一步挖掘是哪个用户或者哪个进程发起的这次请求。这个时候,如果数据维度缺失了,就会出现没有日志可以进行关联的情况,分析运营工作也就无法继续下去了。

    第三个:人员投入不足。

    SIEM 平台实际上是对安全运营工作的一个线上化呈现,而运营工作始终是需要依靠人来进行主导的。很多公司乐观地认为有了 SIEM 平台,就不需要专门的人员来维持安全运营工作了。

    事实上,SIEM 只是一个管理的工具,它无法自己运行,需要有人去使用它。除此之外,随着安全的对抗升级,运营工作的需求也会不断更新,SIEM 自身的迭代升级会一直持续。因此,SIEM 需要有一个完整的安全团队来进行长期的维护。

    总结

    好了,今天的内容讲完了。我们来一起总结回顾一下,你需要掌握的重点内容。

    安全的发展,前期在于技术建设,长期在于运营升级。SIEM 就是在安全运营升级过程中,为公司提升效率、加强管理的一个工具。SIEM 通过收集各个系统和设备的日志,能够为我们提供安全统一管理的基础数据。然后,通过对常见的数据分析和报表展示,SIEM 可以帮助我们快速排查安全事件、进行事件管理,同时满足数据报表甚至合规审查的需求。

    你可能听说过这样一句话“技术总是短期内被高估,在长期内又被低估”。SIEM 也是一样。SIEM 的落地和生效是一个长期发展的过程,很难在短期内有十分明显的收益。所以,我们需要做好长期规划、明确需求,同时拆解目标,一步一个脚印去迭代发展,才能最终将 SIEM 长期稳定地运营和使用起来。

    思考题

    最后,我们来看一道思考题。

    如果你的公司使用了很多安全产品,你想要对这些产品进行统一的管理和运营。那么,你需要 SIEM 收集哪些日志、提供哪些数据分析的能力,来帮助你进行高效运营呢?

    欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!

    下一讲

    SDL:怎样才能写出更“安全”的代码?

    展开全文
  • 一个计划的人

    千次阅读 2016-12-19 10:00:21
    一个成功者都是善于定制计划,按时完成计划,勤于总结计划的人,每个人都拥有自己的梦想,而实现的关键就是像成功者一样对待自己的人生计划,那么成功同样属于每个有心人。有计划的人,才会产生强大的行动力,才会...

    每一个成功者都是善于定制计划,按时完成计划,勤于总结计划的人,每个人都拥有自己的梦想,而实现的关键就是像成功者一样对待自己的人生计划,那么成功同样属于每个有心人。有计划的人,才会产生强大的行动力,才会充满激情的去工作,因为他知道下一步该做什么,目标明确的人,一定会成功。一座摩天大厦在建成之前,其实已经在建筑家的计划中设计好了,梦想在很多人看来是难以实现的,其实梦想是可以用计划来量化的,只要化整为零,就一定会建成人生的梦想大厦。事情本身并没有难易之分,难与易的分别取决于每个人的信念是否坚定,思想是否深刻,情绪是否热忱,计划是否周密,行动是否高效。开始设计自己的人生吧,制定一个最可行的计划,充满激情的去前进,享受人生旅途中的每一个幸福快乐时刻!

         正如西方的那句谚语一样,“如果你不知道你要到哪儿去,那么通常你哪儿也去不了。”为成功制定一份书面计划,有人将成功界定在良好的教育背景和先天的环境条件上。虽然这也是事业发展的条件之一,但远远不能带来真正地成功。成功的事业还需要准确的,文字性的计划。确定自己的职业目标,规划自己的职业生涯,提高自己的就业能力,制定自我发展的行动计划,对于个人的发展来说必不可少。作为当代的大学生,更要早早的树立自己的职业目标,做一个有计划的人。

    展开全文
  • 作为一个软(ku)件(bi)工(de)程(ma)师(nong),你有没有觉得做什么事都没时间?没时间学习新东西,没时间去回顾、整理原来写的烂代码,没时间写单元测试,没时间给接管你项目的家伙写文档,没时间思考,没时间喘气,没...
  • 发现问题,找到方法,以下13个高效工作的秘诀,懂得人没几、正确做事,更要做正确的事 “正确地做事”强调的是效率,重视做件工作的最好方法;“做正确的事”强调的是效能,重视时间的最佳利用——这包括...
  • 当我们配置机器的时候,通常需要在同一时间内做许多操作,Anisble提供了一个工具叫playbooks。使用playbooks,我们就可以一次性、对多台机器进行多个操作动作。这种部署方法,可以确保配置的一致性,或者用来执行...
  • 加单、减单、插单时刻变化,生产计划和生产节奏频频打乱?马上到交期了,原材料还没到?仓库堆积如山,能用的没几样,保管起来苦不堪言,坏掉了损失惨重?……细细追究,所有这些问题,其实都是生产计划盲目、杂乱、...
  • mini-MBA学习总结:建设高效团队和决策与执行 1 学习资料 http://minimba.eceibs20.com 2 学习内容介绍:   建设高效团队 这部分主要介绍了建立正确的领导思维方式、团队建设的不同阶段与...
  • 不知道从什么时候开始,坚持每天提前1小时到公司给自己列出当日计划。并且自己的日计划、月计划和年计划关联。...直到最近听公司的在线课程《高效时间管理》,才发现原来时间管理也是有一些方法论和定律的。
  • 新的一年,如何做好日计划、月计划与年计划

    千次阅读 多人点赞 2021-02-15 00:34:16
    计划”这词,对大家来说都并不陌生。无论是国家、企业,还是个人,都有相应的计划。就个人而言,有的人有明确的长期目标与短期目标,有的人根本没有清晰的目标,每天都保持着得过且过的状态。这篇文章,原标题是...
  • 软件测试-制定测试策略

    千次阅读 2016-05-30 18:41:29
    通常的软件测试中,需要制定合理的测试策略来保证测试的进行。制定测试策略时要综合考虑一些因素,现总结如下,希望...制定测试策略的最主要原因是为了更高效、更有计划、更有目的测试。测试策略是预先规划好的,又...
  • 高效人士的八习惯

    千次阅读 2010-11-24 10:41:00
    、主动积极:在问题发生前,预先采取行动。态度积极的人总是做好准备,采取行动,并承担行动的责任。积极性高的人不会把失败原因归结于周围环境和条件。 二、以终为始:根据你的价值观,确定你的方向和目标及达成...
  • 高效人士的七好习惯

    千次阅读 2011-07-04 15:41:23
    习惯二、以终为始☆习惯三、要事第一☆习惯四、双赢思维☆习惯五、知己解彼☆习惯六、统合终效☆习惯七、不断更新基本原则篇☆介绍☆持续成熟模式☆原则☆思维☆流程☆产能/产出平衡效能的原则每一个崇高人生都是由...
  • 高效软件开发团队的特征

    千次阅读 2006-07-10 18:05:00
    ? 高效的软件开发团队是建立... 一个具有明确的而且有挑战性目标的团队比目标不明确或不具有很大的挑战性目标的团队效率高得多,通常技术人员往往会因为完成了某个明确的任务,而且这个任务的完成具有挑战性的意义而感
  • 第四章_如何编写份高质量的测试计划

    千次阅读 热门讨论 2021-05-17 15:01:54
    (1)测试计划是我们在进行测试工作前的一个高效保障,也是进行高质量测试的基础前提 (2)提前编写测试计划,能够在测试工作中去除盲目性,目标以及时间规划更加明确 (3)测试计划能够高效的缩短测试时长,提高...
  • 高效程序员的45习惯》

    千次阅读 2012-07-12 13:17:46
    1 做事 “出了问题,第一重要的是确定元凶,找到那个人!一旦证实了是他的错误,就可以保证这样的问题永远也不会再发生了。” 指责不会修复bug,把矛头对准问题的...一个重大的错误应该被当作是一次学习而不是指
  • 如何高效学习

    千次阅读 2019-02-24 21:45:40
    写在开头 授人以鱼不如授人以渔 学习六步曲 目标 首先,你需要确认你要学什么(当然,这可能是废话...比如你要学习java,你可以先从网上找一找别人画的脑图,对java有一个大致的了解,每学一个小的知识点,就...
  • 高效的笔记方法——思维导图

    千次阅读 2007-09-10 15:59:00
    行,句地做笔记?但是,你是否知道这种传统记录笔记的方法并不能有效地帮助我们学习和思维。 因为科学家们发现人的大脑对句子的处理并不是有序的。 英国的托尼 ? 巴赞就发明了种创新性的笔记方法,...
  • 如果要我说出项每人都必须掌握的技能,那我想大概就是“自学”吧。 中学时,学霸的定义不就是上课时老师在上面讲课,他在下面页地“快进”,甚至刷着习题么? 大学时,学霸算什么,整个学期不上课不写...
  • 表示型的方法,代表作如(Siamese-CNN,Siamese-RNN),它们将待比较的两个句子通过同一个编码器映射到相同的向量空间中,这种简单的参数共享的方法有着很好的线上性能,但是由于模型本身没有去考虑两个句子编码...
  • 高效管理时间的个人观点分享

    千次阅读 多人点赞 2015-07-21 12:17:43
    要给自己的计划分类,个人主要是分为了一下几类:超长期计划(几十年),长期计划(3-5年),短期计划一个月之内),周计划(每周要完成的任务),简述 超长期计划: 主要是对自己人生观和价值观的塑造,比如看...
  • 玩转飞书日历,体验高效办公!

    千次阅读 2019-10-24 14:55:12
    琐事不断,“心”事连篇,是时候用高效、便捷、连接你我的智能日历,合理高效地安排时间,组织会议,从而建立高效的管理与和谐共赢的员工关系。 日历,这时间管理器,可能是人类最古老的历史实物。从原始的...
  • 只有全公司上下和各部门目标协调统一,人人目标明确,大家才能力往处使,共同努力实现企业的目标。而有效的目标管理,除了要求管理者对企业发展方向和战略进行深入思考外,有效运用好的方法和工具,将目标管理切实...
  • 高效程序员的40好习惯和行为方式

    千次阅读 2012-07-06 09:33:02
    一个好的习惯,开头都会相应有一个唱反调的句子哦。 1 做事 “出了问题,第一重要的是确定元凶,找到那个人!一旦证实了是他的错误,就可以保证这样的问题永远也不会再发生了。” 指责不会修复bug,把矛头对准...
  • 高效工作节省时间的一些小技巧

    千次阅读 2018-09-01 10:54:21
    弄清高效之前要先清楚什么是有效,毕竟花时间做无用功算不上效率,更谈不上高效。所以,在做事情之前务必要清楚做这件事是否值得,是否有必要投入时间和精力,即使做应该分配多少资源。 要对时间贪得无厌 时间是...
  • 要成为高产、高效的Web开发者,...下面是10个提高效率的步骤,虽然不能保证解决你在开发中的所有问题,但至少是非常实用的,可以简化你的Web开发流程,使开发的每一个环节快速、流畅。还可以帮助你节省大量的时间,以便
  • 高效人士必备的高效工具与原则

    千次阅读 2010-12-10 14:50:00
    <br />工具:招聘面试的STAR原则 招聘面试是HR经理的项重要工作内容,每成功的经理人都必须具备高超的招聘面试技巧,使合适的人在合适的岗位上,创造岗位高绩效。 所谓STAR原则,即Situation...
  • 在我们为公司创造价值的同时,老板们给我们发工资,同时给我们搭建了一个提升自己能力的舞台(或者说叫平台)。 可以这样说,我目前和我公司里的同事关系非常融洽,大家一起协作一起提升,但我不能说,公司是...
  • 高效人士睡觉前做的10件事

    千次阅读 多人点赞 2015-04-09 07:16:58
    他们制定一个待办事项列表,并且在开始工作前为列表设定优先级。这让他们进入下一个工作日时感觉做好了准备,更自信,更少压力。你可以通过写下你第二天要做的最重要的3到5个任务来引入这个改变生活的技巧。如果因为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,103
精华内容 15,641
关键字:

如何制定一个高效的计划