IT入门知识第三部分《软件开发》(3/10)

目录

IT入门知识大纲第三部分《软件开发》

1. 软件开发生命周期(SDLC)

1.1 需求分析

1.2 软件设计

1.3 程序编码

1.4 软件测试

1.5 项目部署

1.6 运行维护

2. 软件开发方法论

2.1 瀑布模型

2.2 敏捷开发

2.2.1 Scrum

2.2.2 Kanban

2.3 DevOps

3. 版本控制系统

3.1 Git

3.1.1 分布式架构

3.1.2 快速合并

3.1.3 支持离线工作

3.2 SVN

3.2.1 集中式架构

3.2.2 原子提交

3.2.3 对二进制文件的支持

4.结语


IT入门知识博客文章大纲第三部分《软件开发》

在当今数字化时代,软件开发已成为推动创新和企业发展的核心动力。本文将深入探讨软件开发的生命周期、方法论以及版本控制系统,为读者提供全面的软件开发知识。

1. 软件开发生命周期(SDLC)

软件开发生命周期(Software Development Life Cycle,SDLC)是指软件开发从提出、实现、使用维护到停止使用退役的过程。这个过程包括多个阶段,每个阶段都有明确的目标和任务,以确保软件项目的成功完成。软件开发生命周期是一套标准化的流程,用于指导软件从概念化到最终交付的全过程。以下是SDLC的主要阶段:

1.1 需求分析

需求分析是软件开发的第一步,目的是收集和分析用户需求,确定软件的目标和功能。这一阶段的输出通常是需求规格说明书,为后续开发提供明确的指导。

1.2 软件设计

设计阶段包括系统架构设计、用户界面设计和数据库设计。设计的目标是将需求转化为软件架构和详细设计文档。

1.3 程序编码

编码阶段是将设计文档转化为可执行代码的过程。开发者需要遵循编码规范,确保代码的质量和可维护性。

1.4 软件测试

测试是验证软件是否满足需求和质量标准的过程。测试包括单元测试、集成测试、系统测试和验收测试等多个层次。

1.5 项目部署

部署阶段是将软件发布到生产环境,供用户使用。部署策略的选择对软件的可用性和稳定性至关重要。

1.6 运行维护

维护阶段是软件生命周期的持续过程,包括错误修复、功能更新和性能优化等。

软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。软件生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,也有将以上阶段的活动组合在内的迭代阶段,即迭代作为生命周期的阶段。

软件开发生命周期的发展历程中,不同的生命周期模型被提出和实践,如瀑布模型、快速原型模型、迭代模型等,以满足不同项目和团队的需求。敏捷软件开发是近年来给软件生命周期带来最多活力的方法之一,它强调短迭代开发,以更好地响应变化和迎接竞争。

2. 软件开发方法论

软件开发方法论提供了不同的框架和流程,以确保软件开发的效率和质量。

2.1 瀑布模型

瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。

瀑布模型是一种线性顺序的软件开发方法,它将软件开发过程划分为一系列阶段性的活动,每个阶段完成后才能进入下一个阶段。这种方法的优点在于其结构清晰,但缺点是不够灵活,难以适应需求的快速变化。

2.2 敏捷开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发是一种以人为核心、迭代、增量的软件开发方法论。它强调团队协作、客户反馈和快速响应变化。敏捷开发的核心是人和交互,以及快速、灵活的响应变化的能力。它通常采用如Scrum或Kanban等框架来指导开发过程。关于敏捷开发我专门写了一篇文章详细介绍,感兴趣可前往阅读:敏捷开发:拥抱变化,持续交付价值的艺术_产品敏捷开发-CSDN博客

三大角色
产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,制定软件的发布日期和交付的内容,同时有权利接收或拒绝开发团队的工作成功。
流程管理员(Scrum Master)
主要负责整个Scrum流程再项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5-10人左右,每个成员可能负责不同的技术方面,但要求每个成员必须要有很强的自我管理能力。同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。

四个仪式
Sprint计划会(Sprint Planning Meeting):在每个Sprint开始时召开,由全体人员参加。这个会议主要有两件事情要确定。①确定当前Sprint的目标 ②选定当前Sprint要处理的最具价值的用户故事,创建Sprint Backlog(需求列表)

每日站会(Daily Scrum Meeting):一般在15分钟以内。团队成员相互交流任务的进展,计划以及遇到的困难。

Sprint评审会(Sprint Review Meeting):又叫Sprint演示会、Sprint展示会等,是团队用来展示当前Sprint开发成果的会议。

Sprint回顾会(Sprint Retrospective Meeting):用来回顾在当前结束的Sprint中的工作、进行经验总结、反思,并拟定响应的改进措施。

2.2.1 Scrum

Scrum是一种敏捷框架,通过定期的迭代(称为Sprint)来完成产品开发。Scrum强调团队自组织、透明沟通和持续改进。

2.2.2 Kanban

Kanban是一种可视化的项目管理方法,通过限制在制品(WIP)来优化流程效率。Kanban适用于那些需要快速响应和持续交付的软件开发项目。

Kanban板的介绍: Kanban是一种可视化的项目管理方法,它帮助团队成员理解工作流程,并管理任务和流程。Kanban板通常是一个看板,上面有多个列,代表工作的不同阶段。

流动和限制理论:

流动:工作项在系统中从一个阶段移动到另一个阶段。
限制:识别和管理工作流程中的瓶颈,以优化整体效率。

2.3 DevOps

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

DevOps是一组实践,旨在自动化和整合软件开发(Dev)和信息技术运维(Ops)的过程,以便更快地构建、测试、发布软件。DevOps的核心在于文化变革,强调开发和运维团队之间的协作和通信。

DevOps包含development和operations,是开发和运营维护的总称。软件设计过程中,应对开发部门、运维部门进行协调,确保各项工作流程与方法高效使用,为项目管理工作提供可靠参考。基于devops软件开发源于2009年欧洲传统IT模式,对解决运维管理问题起到关键作用。为巩固软件设计与开发结果,将开发、运维与测试结合一起,形成了DevOps软件开发管理模式。

基于DevOps软件开发可对测试环境进行应用,同时可将数据包融入到软件环境中。DevOps立足全局角度,对开发效果进行分析,加强人员之间的合作与交流也是软件开发设计工作重点,应对其进行合理安排。在devops框架下,对软件进行开发可实现自动化操作,使得人机交互方案应用具有可行性。 

传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。

需要频繁交付的企业可能更需要对DevOps有一个大致的了解。Flickr发展了自己的DevOps能力,使之能够支撑业务部门“每天部署10次”的要求──如果一个组织要生产面向多种用户、具备多样功能的应用程序,其部署周期必然会很短。这种能力也被称为持续部署,并且经常与精益创业方法联系起来。 从2009年起,相关的工作组、专业组织和博客快速涌现。

DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。

以下几方面因素可能促使一个组织引入DevOps:

1、使用敏捷或其他软件开发过程与方法

2、业务负责人要求加快产品交付的速率

3、虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍

4、数据中心自动化技术和配置管理工具的普及

5、有一种观点认为,占主导地位的“传统”美国式管理风格(“斯隆模型 vs 丰田模型”)会导致“烟囱式自动化”,从而造成开发与运营之间的鸿沟,因此需要DevOps能力来克服由此引发的问题。

DevOps经常被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。

DevOps对应用程序发布的影响

在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下 [1]:

(1)减少变更范围

与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。

(2)加强发布协调

靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。

(3)自动化

强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)

3. 版本控制系统

版本控制系统(version control system),是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。用的比较多的如svn,git等。版本控制系统(VCS)是软件开发中不可或缺的工具,它帮助开发者管理代码的变更历史,促进团队协作。

3.1 Git

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper

Git是目前最流行的分布式版本控制系统。它以其速度、效率和强大的分支管理功能而受到开发者的青睐。Git支持离线工作,易于合并代码,并且能够处理大型项目。Git 代码提交注释管理规范请参考我往期文章:Git 代码提交注释管理规范_git提交备注规范-CSDN博客

3.1.1 分布式架构

Git的分布式架构允许每个开发者在本地拥有完整的代码库,包括所有分支和标签。这为团队协作提供了极大的灵活性。

3.1.2 快速合并

Git的合并操作非常快速,即使是在大型项目中也能轻松处理代码合并。

3.1.3 支持离线工作

Git允许开发者在没有网络连接的情况下工作,这对于移动开发者或网络不稳定的环境非常有用。

Git官网地址:Giticon-default.png?t=N7T8https://git-scm.com/

3.2 SVN

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

SVN(Subversion)是一个集中式版本控制系统,它允许开发者在单一的服务器上管理项目。SVN易于使用,对二进制文件友好,适合需要集中控制的项目。

3.2.1 集中式架构

SVN的集中式架构使得项目的所有历史和状态都存储在中央服务器上,这有助于集中管理和控制。

3.2.2 原子提交

SVN的原子提交确保了每次提交都是完整的,避免了部分提交的问题。

3.2.3 对二进制文件的支持

SVN对二进制文件的支持较好,适合需要管理大量二进制资源的项目。

4.结语

软件开发是一个不断进化的领域,随着技术的不断进步,新的工具和方法论层出不穷。理解并掌握软件开发生命周期、方法论和版本控制系统,对于任何软件开发团队来说都是至关重要的。通过这些工具和实践,我们可以更高效地构建高质量的软件,满足用户的需求并推动技术的发展。随着DevOps文化的普及和敏捷实践的深入,软件开发的未来将更加注重协作、自动化和持续交付。让我们拥抱变化,不断学习和创新,共同塑造软件开发的新篇章。

感谢以下文章,提供参考:

1、软件生命周期_百度百科

2、瀑布模型_百度百科

3、敏捷开发_百度百科

4、DevOps(过程、方法与系统的统称)_百度百科

5、敏捷开发:拥抱变化,持续交付价值的艺术_产品敏捷开发-CSDN博客

6、什么是敏捷开发?-CSDN博客

7、VCS(版本控制系统)_百度百科

8、GIT(分布式版本控制系统)_百度百科

9、SVN_百度百科

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/719868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

告别盲目投放,Xinstall全方位监测App广告效果

在移动互联网高速发展的今天,App广告已成为品牌与消费者沟通的重要桥梁。然而,如何确保广告投放的精准性和效果性,成为广告主们关注的焦点。在这个数据驱动的时代,Xinstall以其专业的App广告效果统计功能,为广告主们提…

将Typora中图片从指定路径移动到当前文件夹下(准确位置为:XX.md文件所在目录/XX.assets/)

1、背景介绍 最开始时候,将复制到Typora中的图片放在了指定位置。但是在进行迁移(在别的电脑上打开md文件),会发现发送过来的文件不包含图片,导致文件内容缺失。解决办法就是将图片放在XX.md文件所在目录/XX.assets/。 2、方法 2.1 做好文件备份 2.2 替换图片链接中的…

使用MyBatisPlus让数据库和实体类字段自动映射

文章目录 使用MyBatisPlus让数据库和实体类字段自动映射需求场景假如没有映射把映射放到sql语句中使用MyBatisPlus提供的注解简化映射 使用MyBatisPlus让数据库和实体类字段自动映射 需求场景 数据库表中的字段名字,与实体类中的属性名字不一致,我们想…

使用PaddleNLP 从0构建一个属于你自己的心理大模型

项目源于:EmoLLM心理大模型,一直就有用paddle实践心理大模型的想法,终于实现了哈~。接下来就手把手带大家一块做一个心理大模型吧!!! 简单画了个框架图: 环境配置 In [ ] # !git clone -b develop https…

新安装的gcc编译出现编译器内部错误

在原本的环境中已经安装gcc了,但是版本比较低,想用新的版本。 重新下载安装gcc源码编译安装 make install安装好之后想用新的gcc来编译 先改下头文件搜索路径,xxxxxx就是安装后的include/c/xxx/这个路径 CPLUS_INCLUDE_PATH xxxxxx:$CPL…

建筑幕墙甲级设计资质:申请条件与评分标准

建筑幕墙甲级设计资质的申请条件与评分标准可以清晰归纳如下: 申请条件 一、企业基本情况 独立企业法人资格:企业需具有独立企业法人资格。注册资本:注册资本不少于300万元人民币。 二、技术人员条件 主要技术负责人或总工程师&#xff…

Nuxt.js 深入浅出:目录结构与文件组织详解

title: Nuxt.js 深入浅出:目录结构与文件组织详解 date: 2024/6/18 updated: 2024/6/18 author: cmdragon excerpt: 摘要:本文详述了Nuxt.js框架中关键目录与配置文件的作用及使用方法,包括布局设定、页面结构管理、插件集成、静态资源处理…

1999-2020年各地级市农村居民人均纯收入数据

1999-2020年各地级市农村居民人均纯收入数据 1、时间:1999-2020年 2、指标:年份、城市、农村居民人均纯收入 3、来源:区域年鉴、各省市年鉴 4、范围:地级市,具体每年城市数量参看下文图片,具体城市名单…

macbook屏幕录制技巧,这2个方法请你收好

在当今数字化时代,屏幕录制成为了一项不可或缺的技能,无论是教学演示、游戏直播,还是软件操作教程,屏幕录制都能帮助我们更直观地传达信息。MacBook作为苹果公司的标志性产品,其屏幕录制功能也备受用户关注。本文将详细…

【小白专用24.6.18】C# SqlSugar:连接数据库实现简单的,增、删、改、查

【小白专用 已验证24.6.18】C# SqlSugar操作MySQL数据库实现增删改查-CSDN博客 通过NuGet包管理器搜索SqlSugar(MySql还要安装MySql.Data、Newtonsoft.Json)包并安装 SqlSugarClient db new SqlSugarClient(new ConnectionConfig(){ConnectionString …

计数类DP——AcWing 900. 整数划分

计数类DP 定义 计数类DP主要是通过动态规划的方法来计算满足特定条件的方案数、组合数等数量相关的问题。 运用情况 需要计算不同排列、组合或情况的数量。问题具有明显的阶段性,且每个阶段的选择会对后续阶段产生影响。可以通过逐步构建较小规模问题的解来推导…

mumu 模拟器如何模拟指纹识别?

最近在帮朋友解决一些任务时,有些比较复杂的任务需要批量使用模拟器,但是模拟器存在一个缺点,就是缺少很多物理功能,比如说陀螺仪、温度传感器和生物识别模块等等,但是有些任务是需要这些功能的。没有办法,…

vue3-openlayers 使用tianditu,wmts和xyz等source加载天地图切片服务

本篇介绍一下使用vue3-openlayers加载天地图切片,三种方法: 使用tianditu(ol-source-tianditu内部实现其实用的wmts)使用wmts(ol-source-wmts)使用xyz(ol-source-xyz) 1 需求 vue…

为什么动态代理接口中可以不加@Mapper注解

为什么动态代理接口中可以不加Mapper注解 如下图: 我们上面的UserMapper上面没有加Mapper注解,按道理来说UserMapper这个类应该是注入不到IOC容器里面的,但是为什么我们程序的运行效果仍然是正常的呢?这是因为你的启动类上加了m…

zabbix“专家坐诊”第242期问答

问题一 Q:snmp检查用的什么性能啊?设备多了就检测失败,实际是能通的。 A:把大批量请求取消,把异常获取不到的监控项都禁用 Q:是这个吧,显示不一样。 A:什么版本?用的是v3…

ggpicrust2包:简化和直观化微生物功能预测分析

简介 ggpicrust2是一个强大的R语言包,旨在简化和直观化PICRUSt2输出的分析。通过预定义的图表和函数,研究人员可以轻松生成关于微生物功能预测的统计图,并提供丰富的自定义选项。本文将演示如何使用ggpicrust2包进行分析和可视化。 安装ggp…

VBA学习(9):按指定名单一键删除工作表

今天继续给大家聊VBA编程中工作表对象的常用操作,主要内容是如何批量删除工作表;也就是删除单个工作表、删除全部工作表和删除指定名单内的工作表。 1.删除单个工作表 删除工作表需要使用到工作表对象的delete方法,语法格式如下&#xff1a…

Python单行代码:一招鲜,吃遍天

大家好,在Python编程中,我们时常需要高效、简洁的代码来解决复杂的问题。今天,我将向大家介绍10个非常有用的Python单行代码。 一行代码指的是将复杂的任务浓缩在一行代码中完成。它充分利用Python的简洁和强大,使代码更简洁、更…

智能穿梭,无缝连接:迈威通信助力AGV智慧物流系统高效运转

随着智能制造模式的兴起,在工业4.0和“中国制造2025”的推动下,智能物流迎来了重大的发展机遇。AGV作为智慧仓储物流系统的“关键角色”之一,通过联系、调节离散型物流管理系统,使各环节有效地衔接起来,实现全厂物流运…

git使用摘樱桃的方式,实现特定需求进行提交合并

文章目录 先checkOut到主要的分支(需求提交到这) 然后双击点别的需求分支,对提交内容选定 进行摘樱桃操作 然后双击回到主要分支,会发现那2个提交内容代码已经在主要分支的本地里,选中其 右键选择Squash Commits进行合并 标注自己的需求标题提交名更改后, 最后进行push推送到…