力软敏捷开发框架开发手册
财务价值/回报
在对工作进行优先级排序时要考虑的第一个因素是客户或企业将从某个功能中获得的财务回报:在一段时间内,客户/企业将从该功能中获得或节省多少钱。 对于某些功能,业务案例很明确。 在其他情况下,您必须进行一些创造性的会计工作来发明业务案例,或根据其他主观业务因素做出决定-通常,重要人物想要某事的严重程度。
根据财务回报,尚无明确的业务案例可以通过实现安全框架在应用程序中拥有更好/更简单的安全功能。 安全性及其实现方式通常对企业而言是隐藏的-这不是他们可以看到,使用或从中获利的东西。 您可能会争辩说,通过提高应用程序的安全性,您可以节省未来直接和间接的安全漏洞成本 ,并尝试围绕此建立财务模型。 但是,除非公司或密切竞争对手最近遭受了昂贵且令人尴尬的安全问题困扰,否则很难根据未来的可能性提出令人信服的论据。
开发成本
它需要花费多长时间,建造它需要花费多少成本,并且成本会随着时间变化吗? 尽早构建它更便宜,还是等到您对问题有更多了解以及如何正确解决它之后再等到更好?
以后建立安全性会花费更多吗? 也许。 但是可能不是这样,因为除非有管理或法规遵从性要求来确保正确完成所有工作,否则某些安全性工作有可能根本无法完成。
如果您确实决定尽早进行工作,则由于新的要求,您很有可能不得不稍后再次更改此代码。 因此,这增加了未来的开发成本,而不是节省金钱和时间。
知识–通过研究,我们学到了多少
对于开发团队来说,另一个重要因素是,他们可以通过早日完成工作来了解多少问题空间或设计,或者他们可以学到多少交付项目的能力。 这是技术峰值和原型制作的要点–学习和减少不确定性。
正如迈克·科恩(Mike Cohn)所指出的那样,实施安全框架并不会增加团队对问题空间或产品设计的了解。 对于团队的交付项目能力,技术平台或工具和实践,它没有回答任何重要问题。 团队从实施安全框架中可能学到的东西对项目的成功至关重要。
风险
当然,存在从一开始就无法正确实施安全性的风险。 但是,当我们做出这样的优先级决策时,我们最担心的风险是进度风险(交付关键功能需要多长时间,我们能否按时完成)和基本技术风险(架构是否合理,系统执行并保持负载)。 “是否可以通过较早而不是稍后实施安全措施来减少或消除项目成功的风险?” 在这种情况下,答案是:可能不是。
该项目仍将成功–您无需安全框架即可交付该项目。 假设系统没有上线的时间,不好的事情可能会在以后发生,假设团队如果没有框架就无法很好地保护应用程序,但这不会阻止项目的交付。
安全不是功能
使用这些决策因素(财务价值,成本,知识和风险),没有令人信服的理由在应用程序中构建安全框架。 它不会为企业带来任何收益,不会节省时间,不会告诉我们有关项目或问题领域的任何有用信息,也不会显着降低项目风险或技术风险。
以这种方式对功能进行优先级排序没有错。 错误的是将安全框架视为功能。
不应基于任何这些因素来决定是否实施安全框架。 安全性不是可以与其他功能权衡或因成本而削减的功能。 就像数据完整性不是功能一样。 确保系统正确且一致地将数据写入数据库或文件,并且在出现问题时不会丢失数据或部分更新或复制数据,这是编写系统的必要步骤。 您不确定现在就决定执行此操作,还是永远不会基于“客户价值”,成本或时间,或者是否会通过此操作学到东西。
无论系统类型需要什么样的安全性,都需要构建业务架构。这不是产品管理决定。 做到这一点是开发团队工作的一部分。 他们不能依靠其他人,客户或产品经理来决定是否应该早晚实施安全性。
参考: 在敏捷开发计划中,安全性框架会在Building Real Software博客上失去我们的JCG合作伙伴 Jim Bird的支持。
翻译自: https://www.javacodegeeks.com/2012/07/in-agile-development-planning-security.html
力软敏捷开发框架开发手册