什么是软件开发生命周期?
SDLC是管理创建和维护软件过程的一系列步骤。
SDLC定义:
SDLC代表软件开发生命周期。软件开发生命周期本质上是一系列步骤或阶段,它们为开发软件并在整个生命周期中管理软件提供框架。虽然没有特定的技术或单一方法来开发应用程序和软件组件,但组织使用已建立的方法,并遵循模型来应对不同的挑战和目标。这些方法和模型通常围绕标准,例如ISO / IEC 12207,该标准为软件系统的开发,获取和配置建立了指导。
软件开发方法
最常用的软件开发模型包括:
瀑布开发过程瀑布:这种技术将传统方法应用于软件开发。不同学科和单位的小组完成项目的整个阶段,然后再进入下一步或下一阶段。因此,业务结果是在单个阶段而不是在迭代框架中提供的。
敏捷开发流程敏捷:适应性规划,演化开发,快速交付,持续改进以及对外部因素的高度快速和灵活的响应都是敏捷方法的关键组成部分。开发人员依靠高度协作,跨职能的框架 - 具有明确的原则和目标 - 来加速开发过程。
精益软件开发精益软件开发(LSD):该方法依赖于精益制造环境中使用的技术和实践来建立更有效和快速的开发文化。这些技术和实践包括消除浪费,放大学习,在过程的最后阶段做出决策,快速交付,赋予团队权力,拥抱诚信以及尽可能广泛地查看开发。
DevOps软件开发DevOps:该技术结合了“开发”和“操作”功能,以构建专注于协作和通信的框架。它旨在实现流程自动化,并引入一个专注于持续发展的环境。了解Veracode如何实现DevOps。
迭代软件开发迭dai开发:顾名思义,迭代软件开发侧重于增量编码方法。该方法围绕较短的开发周期,通常涉及较小的开发。它还包含重复循环:初始化步骤,迭代步骤和项目控制列表。迭dai开发通常用于大型项目。
螺旋软件开发螺旋开发:该框架结合了不同的模型,基于在给定的开发过程或情况下最有效的模型。因此,对于不同的组件或适合同一软件开发计划的不同项目,它可能依赖于瀑布,敏捷或DevOps。Spiral使用基于风险的分析方法来确定特定情况的最佳选择。
V模型软件开发V模型开发:该方法被认为是瀑布式开发方法的扩展。它围绕测试方法展开,并使用专注于验证和验证的V形模型。
Veracode产品如何融入SDLC
查看交互式信息图
SDLC流程的阶段
健全的SDLC策略可提供更高质量的软件,更少的漏洞以及更少的时间和资源。它不仅有助于开发和维护软件,还可以在废弃代码时提供优势。Veracode可以将自动安全测试集成到SDLC流程中。以下是有效处理任务的方法:
第1步:计划
SDLC阶段的计划,50px.png
软件规划和要求
任何计划的第一步都是制定计划流程。在此阶段,组织必须确定发布主题,内容和时间表。这通常包括诸如收集最终用户要求,确定要包含在发布中的用户故事以及规划发布阶段和日期等活动。
此阶段的主要考虑因素包括:
确保应用程序满足业务需求。
参与威胁建模/安全设计。
选择在开发过程中使用的语言和库。
将测试用例映射到业务和功能需求。
您可以使用的工具
Veracode在线学习:该服务包括安全架构与设计和威胁建模课程。
你知道吗?
VER17_059_WebImages_SDLC_Charts_Step1A_v2.png
需求阶段的软件缺陷
64%的缺陷源于需求阶段。[1]
第2步:代码和构建
SDLC阶段码 - 构建 - 50px.png
代码和构建
此阶段包括应用程序的实际工程和编写 - 同时尝试满足规划阶段建立的所有要求。
此阶段的主要考虑因素包括:
培训开发人员安全编码。
在编写代码时查找并修复代码中的缺陷和安全漏洞。
以安全的方式使用开源组件。
减少开发人员等待测试结果所花费的非生产时间。
您可以使用的工具
Veracode Greenlight:在您的IDE中查找代码中的安全缺陷并查看上下文补救建议,以帮助您在几秒钟内解决问题。
Veracode开发人员沙箱:个人开发人员或开发团队根据所需的安全策略评估新代码 - 不影响当前生产中的应用程序版本的合规性报告,也不会影响将代码提交到主分支之前的报告。
你知道吗?
VER17_059_WebImages_SDLC_Charts_Step2A_v2.png
软件开发延迟了依赖性
80%的Dev和QA团队因依赖性而遇到延迟。[2]
VER17_059_WebImages_SDLC_Charts_Step2B.png
开发人员安全培训和电子学习
接受电子教学的开发人员修复了20%的漏洞。
VER17_059_WebImages_SDLC_Charts_Step2C.png
持续发展和整合
持续开发和构建可帮助团队以最快20倍的速度发布应用程序。[3]
第3步:测试
软件测试
在此阶段,团队根据要求测试代码,以确保产品正在解决问题并按预期执行。此阶段包括进行所有类型的性能,QA和功能测试,以及非功能测试,例如UX测试。虽然测试传统上是在开发阶段之后进行的,但采用最佳实践方法的组织正在转向整个SDLC的连续自动化测试。
此阶段的主要考虑因素包括:
使用多种测试方法测试应用程序的安全策略,包括静态,动态,软件组合分析和手动渗透测试。
使用与被测试系统相同的语言和协议,进行全面的性能,功能,单元和集成测试。
您可以使用的工具
Veracode静态分析:将单个打包应用程序上载到Veracode Application Security Platform以启动扫描并获得通过/失败结果。
你知道吗?
VER17_059_WebImages_SDLC_Charts_Step3A_v2.png
持续的软件测试
Freeform Dynamics和CA Technologies进行的2017年研究发现,49%的IT和测试专业人员认为持续测试对于满足不断变化的业务需求和期望非常重要。
VER17_059_WebImages_SDLC_Charts_Step3B.png
开发人员沙箱经常扫描
在检查完成的代码之前,经常在开发人员沙箱中进行扫描,使开发人员能够比仅进行策略扫描修复多48%的缺陷。
第4步:阶段
软件升级
在发布阶段,团队将软件部署到生产服务器上。这包括在各种环境(包括私有数据中心和云)以及公共云资源中打包,管理和部署多个复杂版本。
此阶段的主要考虑因素包括:
跟踪发布及其组件的进度。
从手动发布流程转移到自动化流程,其中发布软件基于业务决策。
添加安全测试作为最终质量检查的一部分。
你知道吗?
VER17_059_WebImages_SDLC_Charts_Step4A_v3.png
DevOps发布和自动化
72%的高级DevOps采用者完全使用发布自动化工具,但令人震惊的是,83%的IT专业人士表示他们仍然使用电子表格作为处理版本的主要方式。[4]
第5步:部署和监控
软件部署和监控
在此阶段,产品正在生产中并被客户使用。监控应用程序的性能和用户体验对于持续改进至关重要。组织建立反馈循环以确保开发人员和测试人员可以使用操作数据。
此阶段的主要考虑因素包括:
继续测试和监控生产中的应用程序。
在更新或更改应用程序时重新评估应用程序的性能,安全性和用户体验。
您可以使用的工具
Veracode动态分析(发现和动态测试):查找,保护和监控所有Web应用程序 - 而不仅仅是您了解的应用程序。
Veracode手动穿透测试:笔式测试人员进行模拟攻击以获得完整的保证。
你知道吗?
VER17_059_WebImages_SDLC_Charts_Step5A_v2.png
识别问题会影响软件交付
80%的解决时间用于识别问题。[5]
VER17_059_WebImages_SDLC_Charts_Step5B.png
过多的软件返工
表现较差的人在过度返工时花费的时间高达22%。[6]
建立强大的软件开发过程的好处
当今日益复杂的软件开发环境需要优雅而全面的解决方案。开发人员必须兼顾众多工具和技术,同时生成在数字业务级别执行的代码。团队必须解决一系列问题,包括API,移动和云环境的编码。太多的工具缺乏开发人员所需的灵活性,而且许多工具也具有陡峭的学习曲线。
采用能够检测应用程序安全漏洞并以自动方式集成风险数据和指标的工具至关重要。引入集成安全方法并在SDLC中构建保护的组织能够降低风险,降低成本并加快开发速度。他们能够开发新的应用程序并不断更新现有软件而不会牺牲安全性。Veracode平台提供全套工具和API,以确保组织实现最佳保护级别。
将安全测试嵌入您的SDLC
有效的AppSec计划是将关键保护策略纳入SDLC方法的计划。这些包括:
单元测试
安全单位测试
所有对安全性敏感的代码都应该有一个相应的测试套件,用于验证每个安全决策的每个结果是否正常工作。虽然这种方法需要付出很多努力,但它可以极大地提高在漏洞出现之前捕获漏洞的可能性。一个有效的程序可以识别一些事情:编码中的任何变化都不会太小而不能忽视,任何漏洞都可能导致灾难性故障,并且在将任何软件投入生产之前始终运行整个测试套件至关重要。更重要的是,必须协调单元测试,并且还必须解决第三方漏洞和风险。
黑盒测试
黑盒测试/动态测试
这种方法也称为动态分析安全测试(DAST),是应用程序安全性的关键组件 - 它是SDLC框架的一个组成部分。该技术可以查找攻击者在应用程序在生产环境中运行时可能利用的漏洞。它实时运行并完成任务,无需实际访问代码,也无需了解应用程序的底层结构。简单地说:它会显示漏洞 - 包括输入/输出验证问题,服务器配置错误或错误以及其他特定于应用程序的问题 - 正如攻击者所看到的那样。Veracode的DAST解决方案提供从开始到生产的全面扫描应用程序。该黑匣子分析 在调试代码,目录,剩余源代码和资源文件中搜索,以查找SQL字符串,ODBC连接器,隐藏密码或用户名以及恶意个人可用于破解应用程序的其他敏感信息。
白盒测试
白盒测试/静态分析
及时发现和修复编码漏洞的能力至关重要。Veracode的白盒测试解决方案使用静态分析来发现常见缺陷,而无需实际执行软件。实际上,该解决方案分析所有代码 - 包括所有主要框架中的第三方组件和库 - 以确保最高级别的保护。白盒测试工具可以快速扩展以满足激进的最后期限,并且可以轻松无缝地融入软件开发生命周期,同时满足合规性要求。