软件构造:软件的开发模型
一、软件的开发模型
这一部分主要介绍几种描述软件开发过程的开发模型,包括传统的软件开发过程模型和现代的敏捷开发。软件开发的步骤非常复杂,包括系统设计、软件设计、编码、测试、发布、维护等许多环节。如果想要系统地、全面地、无遗漏地开发一款软件,我们最好来了解一下软件开发的几种模型。传统开发模型包括两种基本类型:线性过程和迭代过程。我们需要根据开发过程中的用户参与程度、开发效率、管理复杂度、开发出的软件的质量等因素来选择合适的开发过程模型。接下来我们来具体介绍几种模型。
1. 瀑布模型:
瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
特点:线性推进、整体推进、非迭代
优点:管理简单
缺点:无法适应需求的增加或变化
2.增量模型:
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
特点:线性推进、增量式(多个瀑布的串行)、非迭代
优点:比较容易适应需求的增加
3.V-Model:
V模型可以看作是瀑布模型的优化,它依然是线性推进的,瀑布模型中存在的问题大多在V-Model中也存在。V模型中每个开发阶段都有相应的测试对其进行验证,但是测试与开发是串行的而非并行的,也就是说测试需要等到开发完成后再开始。
4.原型过程\迭代模型:
迭代模型是RUP推荐的周期模型。被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。也就是对产品开发的每个活动、阶段或子阶段进行迭代。
特点:迭代推进
优点:开发质量高
缺点:时间代价高
5.螺旋模型:
即根据用户的基本需求,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称之为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品。采用演化模型的开发过程,实际上就是从初始的原型逐步演化成最终软件产品的过程。演化模型特别适用于对软件需求缺乏准确认识的情况。
6.敏捷开发:
敏捷开发即通过快速迭代和小规模的持续改进,以快速适应变化。敏捷宣言包括四个维度:
a.个体和互动高于流程和工具
b.工作的软件高于详尽的文档
c.客户合作高于合同谈判
d.响应变化高于遵循计划
敏捷=增量+迭代,每次迭代处理一个小规模增量
二、软件配置管理和版本控制
1.软件配置管理(SCM):
软件配置管理的作用是追踪和控制软件的变化,包括版本控制和软件配置项。其中软件配置项(SCI)是软件中发生变化的基本单元(例如:文件和行)
2.版本控制(VCS)
a.版本控制中的术语:
仓库(Repository):本地或远程的配置管理数据库(CMDB)
工作拷贝(Working copy):再开发者本地机器上的一份项目拷贝
文件(File):一个独立的配置项
版本(Version):在某个特定时间点的所有文件的共同状态
变化(Change/Diff):即code churn,两个版本之间的差异
head:程序员正在其上工作的版本
b.版本控制分类:
本地版本控制系统:仓库存储于开发者本地机器,无法共享和协作
集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
分布式版本控制系统:仓库存储于独立的服务器同时也存在每个开发者的本地机器(如Git)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗