SDL是什么?
SDL能做什么?
SDL做了能不能不出事?
来自甲方领导的三连问:到底做?还是不做?如何做?这是一个很突兀的开始,在接下来的文章中,会介绍怎么去实施SDLC,以及一些细节上的处理,当然做了SDLC,并不能保障不出事,只是能相对的提升一下代码的质量,这就是SDLC最终的初衷.
1、SDL是什么?
来一个灵魂的拷问,SDL是什么,先把官方的解释贴出来?
SDLC(Software Development Life Cycle),即软件生命周期,软件生存周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。
哪SDLC到底是什么:我个人认为随着软件开发工具的不断改进,这为以前所未有的速度构建更先进、更复杂的软件开辟了新的可能性。编写代码只是软件交付过程的一个要素,但规划、管理和沟通同样重要。这就是软件开发生命周期 (SDLC) 发挥重要作用的地方。
2.SDL软件开发生命周期重不重要?
软件开发生命周期为处理软件项目提供了一个结构化的框架,这些项目通常带有高度的不确定性。它使项目利益相关者能够更好地了解需要什么,及早发现问题,降低成本并交付更高质量的软件。
· 它提供了一个定义活动和可交付成果的标准化框架
· 它有助于项目规划、估算等等
· 它使项目跟踪和控制更容易
· 它提高了开发速度
· 降低项目风险
· 它降低了项目管理费用和总体生产成本
3.SDL的阶段是什么?
虽然软件开发通常被认为是简单地编写代码,但实际上在交付之前有许多软件开发生命周期阶段,编程只是其中之一。这些阶段包括需求收集、分析、设计、开发、测试、部署和维护。
4. SDL能做什么?
SDLC 是一种衡量和改进开发过程的方法。它允许对流程的每个步骤进行细粒度分析。SDLC 阶段不一定是线性序列,这取决于所采用的 SDLC 方法,SDLC的阶段实际上可能重叠或改变顺序。
哪到底SDLC能做什么:它如何规划、构建和维护特定软件,可确保所构建软件提高软件的质量、准确度。1.可以为项目的规划、需求、评估提供一些详细的调研的信息,2.在SDLC的体系下进行一个框架性的交付,3提高开发的速度以及代码质量4.降低在开发所犯的成本. 因为SDLC涉及到流程有:需求、分析、设计、编码、测试、部署、运维等阶段。
SDLC系统开发生命周期有主要阶段:
· 需求收集阶段
· 分析阶段
· 设计阶段
· 开发(编码)阶段
· 测试阶段
· 实施(部署)与运维阶段
1. 需求收集
在项目开始之前、需要了解实际需要做什么,这是一个比较重要的过程。需求收集是需求管理的第一步,有需求了才能进行需求分析,因此做好需求收集至关重要。为了确保需求分析的正确性、一致性、完整性和有效性,提高软件开发的效率,为后续的软件开发做好准备。
研发团队和客户认为的最终交付物应该是什么样子,有哪些不同的地方,这是在研发过程中,经常会出现的问题。例如客户最初可能并不确切知道他们需要什么。,在项目的中后期,一旦他们能够测试软件,他们可能会有更清晰的想法。问题在于,现阶段已经为时已晚。开发团队最终可能会投入大量时间和精力来构建一个没有验证的系统,需要花费大量的时间的更改,以使其符合客户的标准和解决方案的愿景,在最初阶段就与客户密切合作以了解他们的痛点并有效地引出需求至关重要。
2. 分析阶段
在分析阶段,需要把上一阶段需求阶段的问题收集之后、确定所需要开发的系统的所有详细的细节.需要分析整个软件在开发过程中涉及的过程以及交付需要注意的细项所涉及的工作量的估计,包括成本和交付时间表.同时评估项目开发以及和交付的在整个项目中的可交付性.
3. 设计阶段
如果项目通过了分析阶段,开发团队可以制定软件如何开展、如何构造整个计划,这就是软件开发生命周期设计阶段。在开发之前需要考虑的因素比较多、比如需要去考虑系统架构和用户界面、系统接口、数据库等等。提前计划并确保涵盖所有功能和非功能方面的工作量,如果不详细的思考在设计阶段的东西、可能会导致在重构项目时需要花更多的成本代价。
4. 开发(编码)阶段
开发(编码)阶段,到底怎么编,是否有规划的标准?开发人员是否遵守编码规则来编写代码?是否有可参考的编码指南?包括整个的开发环境,这都是需要注意的点、要不然很容易产生出二次的安全风险,所以开发开发人员将遵循组织定义的任何编码指南,并使用不同的工具,例如编译器、调试器和解释器。
5. 测试阶段
测试阶段,开发人员将仔细检查软件功能类,需要跟踪、修复和重构重新测试中的任何bug和出现的缺陷。测试过程中要怎么去测、测的方法、测的质量是否按规划进行的,这都是需要思考的问题,如果一味的应付项目的交付的测试是没有价值,所以在测试阶段需要尽早的发现会降低后期的开发成本以及维护成本:
-
是否满足所有要求?
-
开发所用的时间是否合理化?
-
用户的体验感是否达标?
-
是否留更安全的接口进行对接新的业务?
-
是否测试到不存在常见的漏洞?
6. 实施(部署)与运维阶段
当项目到达部署的阶段,就需要把整个项目交付给客户。在项目上线部署之后需要对整个项目等运维,在运维过程中,经常会遇到很不一样的问题、比如系统存在功能性的BUG需要维护、安全性的攻击需要进行应急分析等等业务的跟进.
5. SDL做了能不能不出事?
做了SDL能不能出问题、这是一个比较偏激的问题,也是很多甲方领导在无意识中最想问的一个问题,花了这么的时间,花了这么多的预算,哪到底能不能解决问题,解决不了还不如买一个硬件盒子进行垫脚?其实在这里思考到的一些问题,能否做到精致:
1.软件开发周期的周期有关.开发本身就是一个高投入事情,可想而之不是一个简单的问题?
2.开发过程中能不能理解到用户的需求,之间的沟通是否到位?
3.开发时间长、成本高?在研发过程中、是否考虑到编码的规划,如代码规划、命名方式,开发的习惯等等?
4.维护代价是否高?开发前期人员的投入或者后期人员的投入是否合理化?
5.开发、维护难于度量.比如预估项目大小和难易成熟度?开发是否采用比较成熟的技术栈?
6.项目的需求、管理是否控制到位、是否拥有比较有经验的项目经理对SDLC的理解、开发程度的把控?
7.系统在上线是否规划的进行测试?测试环境和生产环境是否一致等等问题?
8.是否有一个良好的规范、比如代码中bug的跟踪、维护、跟进等等的流程?
实际上还有其他因素的关联,在这里个人认为分为2个大的方向:1.是管理方面是否能做好2.技术规划是否能达到需要.
原文始发于微信公众号(网络安全透视镜):SDL序列课程-第1篇-SDL整体的介绍
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论