软件开发流程的演变流程演变过程,你知道吗?
发表时间:2023-11-06 11:03:47
文章来源:炫佑科技
浏览次数:115
菏泽炫佑科技
软件开发流程的演变流程演变过程,你知道吗?
软件
计算机程序、与计算机系统操作相关的可能文件、文档和数据。
程序简单易懂,是一个可以操作的产品。 比如wps、微信、QQ、网页等都是程序。 例如,需求文档、设计文档、用户手册都是文档。 页面显示的、用户输入的都是数据。
因此,程序、文档、数据的结合就是一个完整的软件。
软件开发过程的演变
流程的演变实际上就是软件开发模式的演变。
软件开发模式是在软件开发中逐渐总结出来的大量经验。 这些经验经过提炼总结,成为发展模式。 比如**个是瀑布模型,后来发展了敏捷开发模型,现在已经发展成为*流行的模型。
下面分别介绍这几种开发模式。
传统瀑布模型
大家都熟悉瀑布,水从上流到下。 瀑布模型也是如此,像水流一样从上到下一步步进行。
需求分析
无论你做什么,分析绝对是必不可少的。 瀑布模型也是如此。 首先要做的是需求分析。
需求文档是产品人员从用户那里理解和收集的内容。 了解用户想要什么后,将其细化为文档。 文档中会清晰的列出系统的通用功能模块、大功能模块的小功能模块,同时也会列出相关的接口和接口函数。 通过这个文档,就确定了产品的UI界面和功能。
设计
需求分析后,开始设计。 设计需要包括两个方面:
界面设计:UI设计师根据需求设计前端界面的设计稿。
编程:设计基本业务处理流程、如何划分模块、接口规范等。
一切设计完成后,开发人员就可以进入编码阶段。
编码
在软件编码阶段,开发将根据设计好的方案通过代码来实现这些方案。
完成
实现相当于开发的代码实现了需求中的功能。
测试
实施完成后,测试人员就可以介入。这就是瀑布模型的过程。 获得代码后,进行测试。
发布维护
测试工作完成后,产品将上线上线,并持续维护产品。
特征
在瀑布模型中,软件开发的各种活动严格地以线性方式进行。 当前活动接受前一个活动的工作结果,并且当前活动的工作结果需要验证。
瀑布模型是一种线性模型。 它在所有发展模式中占有重要地位,是所有其他模式的基础。 其他模型都是在这个线性模型的基础上演化而来的。
瀑布模型的优点是显而易见的。 每个发展阶段都比较清晰。 强调早期规划和需求调查,更适合需求稳定的产品开发。
但由于开发模型是线性的,增加了开发的风险,因此早期的错误可能要到开发后期才被发现。
为了解决瀑布模型中的这些问题,后来慢慢发展出了其他的开发模型。
敏捷开发模式
敏捷开发模式是20世纪90年代以来逐渐引起广泛关注的一种新的软件开发方法。 这种开发模式更适合需求变化频繁、需要快速开发的场景。
常见的敏捷开发模型包括XP和Scrum。 下面分别介绍这两种开发模式。
XP极限编程
XP( )是一种近似螺旋式的发展方法。 它将复杂的开发过程分解为相对简单的小周期。 在每个周期中,项目人员和客户都可以非常清楚开发进度、变化、需要解决的问题、潜在的困难等自动化软件开发,并可以根据实际情况及时调整开发流程。
从上图可以看出,极限编程从三个维度来组织开发流程。
编程方法
首先是编程方法的维度。 在这个纬度上,规定了开发者的开发方式。
简单的设计:XP需要用*简单的方式来实现每一个小需求。 只要这些设计能够满足客户当前的需求,就没有必要做更先进的设计。 这些设计将在后续的开发过程中不断调整和优化。
结对编程:代码由两个人一起完成。 主要考虑编码细节。 另一个人关注整体结构,不断审查**个开发人员编写的代码。
测试驱动开发:测试驱动开发的基本思想是在开发功能代码之前先编写测试代码。 测试代码写完后,编写能够通过测试代码的功能代码。 这使得测试能够驱动整个开发过程。 这样做有助于编写简洁、可用、高质量且高度灵活和健壮的代码。
重构:XP强调简单设计,但简单设计并不意味着没有任何结构的流水线,也不意味着程序设计缺乏可重用性。 XP提倡重构代码,主要是为了减少程序和设计的重复部分,增强程序和设计的可重用性。
小组练习
小组实践从团队合作的角度规定了工作方法。
代码集体所有权:代码集体所有权意味着每个人都对所有代码负责。 这反过来意味着任何人都可以更改代码的任何部分。
编码标准:因为每个人都可以更改代码,所以开发团队中的每个人都需要遵循统一的编程标准。 这样所有的代码看起来就像是一个人写的。 由于统一的编程标准,每个程序员都更容易理解别人编写的代码,这是实现代码集体所有权的重要前提之一。
稳定高速的节奏:只有坚持,球队才有获胜的希望。 将这项赛事视为一场马拉松,而不是全力以赴的冲刺。 要求团队成员保持长期稳定的工作节奏。
持续集成:集成意味着将每个人的代码合并在一起。 团队开发成员需要经常整合他们的工作。 每个集成都通过自动化构建(还包括自动化测试)进行验证,以便尽快发现集成错误。
比喻:为了帮助大家清楚地理解要满足的客户需求和要开发的系统功能,团队需要使用很多生动的比喻来描述系统或功能模块是如何工作的。 例如,对于搜索引擎,系统隐喻可能是“一群蜘蛛在网络上搜寻,寻找要捕获的东西,然后带回家”。
交付与管理
*后一个是发布管理的维度。 交付是将产品送到客户手中。 发布是将产品放到网上并让用户可以使用。 一般来说,交付和发布就是让用户拿到产品并使用它。
小规模发射:有多小? 每次迭代需要 1-3 周。 在每次迭代结束时,团队都会提供可立即使用的经过测试的工作功能。
计划游戏:预测在交付日期之前可以完成多少工作,确定现在和下一步要做什么。 不断回答这两个问题,直接服务于如何实施和调整开发流程。
完整的团队:每个项目贡献者都是“团队”不可或缺的一部分。 该团队是围绕业务代表(“客户”)建立的,他每天与团队坐在一起工作。
现场客户:在XP中软件开发流程的演变流程演变过程,你知道吗?,“客户”不是为系统付费的人,而是实际使用系统的人。 XP 认为客户应该随时为客户解决问题。
从XP开发模型可以看出,开发和客户占主导。 测试工作基本上是通过自动化来进行的。 例如,编码过程中的测试驱动开发和持续集成也包括自动化测试。 总体来说,这种开发模式对开发和测试的要求非常高。 团队中的人必须有非常高的标准才能使这种模式成功运作。 这是开发小型项目的理想情况,也是比较难实现的。
SCRUM
在Scrum模型中,*基本的概念是。 其实就是一个冲刺,或者通俗地说,就是一个迭代周期。
在整个项目开始之前,会有一个产品。 使用产品来管理产品需求。 它是整个项目的概述文件。 它是按业务价值排序的需求列表。 列表项通常采用用户故事的形式。
Scrum 团队从产品中挑选*高优先级的需求进行开发。 选择要求在计划会议上讨论。
经过讨论、分析、估算,得到相应的任务列表,即可调用。
在Scrum中,整个开发过程由几个短迭代周期组成。 短迭代周期称为短迭代周期。 每次的建议长度为两到四个星期。
在每次迭代期间,Scrum 团队都会召开每日站立会议。 利用每日站立会议来回顾目标的进展情况并做出调整以优化第二天的工作。
在每次迭代结束时,Scrum 团队都会交付一个可能可交付的产品增量。
在每次迭代结束时,都会召开审查会议,以便团队向产品所有者和利益相关者展示已完成的功能。
审查会议结束后、下一次计划会议之前,召开回顾会议。 回顾会议的目的是找出过程中哪些地方做得好,哪些地方做得不好,以及团队可以做出哪些改进。
这就是整个SCRUM模型的工作流程。 在每一个,也就是一个迭代周期中,其实都是一个小瀑布。 在每个迭代周期中,都会完成从需求分析-设计-编码-测试-上线的完整流程。 不同的迭代周期可能部分重叠。 例如,如果**个迭代周期已经到达测试阶段,则第二个迭代周期的需求分析可能已经开始。 这种连续的循环迭代继续进行。
发展模式
(and 的组合),涉及软件开发生命周期的所有阶段。
它是一种非常注重开发(Dev)、运维(Ops)、测试人员之间沟通与合作的开发模式。
在这里,它是通过自动化的软件交付流程来使软件的构建、测试和发布变得更快、更频繁、更可靠。
它的出现其实是因为现在的软件需要更快的上线。 如果你想每天在线实现新功能。 但敏捷开发模式无论多快,也只需要一周的时间,无法满足这个要求。 于是大家意识到,要想更快上线,开发、测试、运维必须紧密配合。 因此,更适合用于需求变化频繁、开发、测试和运维需要敏捷的场景。
生命周期
让我们看一下模型中包含哪些阶段。
持续发展
这是软件生命周期中不断开发的阶段。 与瀑布模型不同,软件交付物被分解为多个开发周期短的任务节点,在很短的时间内开发和交付。
此阶段包括规划、编码和构建阶段
规划阶段:可以使用一些项目管理工具,比如JIRA,来管理整个项目
编码阶段:可以使用Git或SVN来维护不同版本的代码
构建阶段:使用打包工具,例如Maven工具,将代码打包成可执行文件
持续测试
在此阶段,不断测试开发的软件。
对于持续测试,可以使用一些自动化测试工具,例如。 它是一个用于 Web 自动化的工具和一个用于应用程序自动化的工具。 自动化工具还需要与测试框架结合使用,比如Java中的JUnit,Java中的JUnit。 有了这些自动化测试工具,就可以对开发出来的软件进行持续的测试。
现阶段,使用容器来实时模拟“测试环境”也非常方便。
持续集成(CI)
新提交的代码一旦通过测试,将会与现有代码持续集成。 这就是持续集成的过程。
这个时候就可以使用了。 这是现在*流行的持续集成工具。 使用它,您可以从 Git 存储库中提取*新代码并生成*终可以部署到测试或生产服务器的构建。
您还可以将其设置为在 Git 存储库中发现新提交的代码时自动触发新构建,也可以在单击按钮时手动触发新构建。 有了这个强大的工具,就可以非常方便地完成持续集成工作。
持续部署
持续集成完成后,代码可以直接部署到各种环境中。 这个阶段需要保证只有通过持续测试的正确代码才能部署到服务器上。
因为如果推出新功能,就会有更多用户使用该产品。 这种情况下,运维人员可能还需要对服务器进行扩容,以容纳更多的用户。 如果能够实现持续部署,就可以通过配置管理工具快速、频繁地执行部署任务。 让产品更快的遇见用户。 这开辟了从开发、测试到上线的快速通道。
在这个阶段,容器化工具也发挥着重要作用。 它可以帮助保持各种环境的一致性。 比如测试环境、生产环境等,因为不同的环境也可能会导致一些bug的出现。
持续监控
部署上线后,就进入持续监控阶段。 这是生命周期中非常关键的阶段。 在线监控可以帮助提高软件质量并监控软件性能。
这也会涉及到运营团队的参与,运营团队也会监控用户在使用产品时的一些错误行为,为未来需求的进一步优化提供数据支持。
这个阶段就可以使用ELK Stack了。 这是一个收集在线数据、分析和展示数据的平台。 通过这个工具,可以自动收集用户行为以及产品的一些线上不良案例。 通过分析这些数据,可以为产品未来的发展方向提供指导。
以上内容就是整个生命周期。
*后,我要感谢所有认真阅读我文章的人。 下面这个网盘链接也是我花了几天时间整理的一个很全面的。 希望也能帮助到有需要的你!
这些资料对于想转行【软件测试】的朋友来说应该是*全面、*齐全的准备仓库了。 这个仓库也陪伴我走过了*艰难的一段路。 希望也能帮到你! 凡事都要趁早,尤其是技术行业,技术能力更要提高。 我希望对您有所帮助……
如果你不想独自疯狂,找不到系统信息,遇到问题得不到帮助,坚持几天就放弃了,你可以点击下面的小卡加入我们的群。 大家可以一起讨论、交流。 会有各种软件测试资料和技术交流。
打字并不容易。 如果本文对您有帮助,请点赞、收藏、关注,给作者一个鼓励。 也方便您下次快速搜索。
B站自学推荐视频:
零基础转行软件测试:38天完成软件测试自学,拿到了Byte的测试职位offer。 堪称B站*好视频!
高级自动化测试:加入华为,加薪20K,2022年*适合自学的自动化测试教程,16800买的,免费分享
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等