本周介绍了软件开发的几种模型,并重点介绍了Git。Git是分布式版本控制系统,可以通过SSH key建立远程与本地的连接,通过Git Bash中的命令进行文件的上传和下载。对于这门课程,Git的主要作用就是向TA提交实验代码。
软件开发生命周期模型
1.软件开发生命周期模型:从0到1
软件生命周期中的多版本:从1到n
2.软件是具有“生命”的,具有年龄(被制造和使用的时间)、活力(在特定时间的受欢迎程度)等。我们期望软件具有长寿命并保持活力,但是存在许多问题。比如开发的失败,运行时出错,软件功能老化等。
传统的软件开发模型
1.两个基本种类:线性和迭代性
2.目前存在的模型:瀑布型(线性且不迭代)、递增型(不迭代)、V型、原型(迭代)、螺旋型(迭代)
3.考虑的核心问题:用户参与、开发的效率、项目管理复杂度、软件质量
4.瀑布型
在概念、启动、分析、设计、构建、测试、实现和维护的各个阶段稳步向下流动(就像瀑布一样)。易于使用,但事后的改变代价高昂。
2.递增型
软件完成之前,递增地被设计、补充和测试。在这种模型下,系统被分层许多小的开发项目,然后合并生成最终的系统。首先处理最高优先级要求,一旦增加的部分被开发出来,一部分的需求就被冻结了。
3.V型
瀑布型的扩展。编码阶段结束后,处理步骤向上弯曲,呈现V形,而不是瀑布模型的线性模式。下图展示了开发生命周期的每个阶段与其相关测试阶段之间的关系。
4.原型
软件原型是创建软件应用程序原型的活动,即正在开发的软件程序的不完整版本。原型通常和最终版本存在差别。优点是开发者可以在开发最终版本的过程中获得用户反馈,并能根据反馈进行开发策略的调整。
5.螺旋型
是一种风险驱动的软件开发模型。基于给定项目的独特风险模式,螺旋模型指导团队采用一个或多个过程模型的元素,如增量、瀑布或进化原型。
敏捷开发
它提倡适应性规划、渐进式发展、早期完成和持续改进,并鼓励快速灵活地应对变化。它提倡流程和工具上的个人和交互、工作软件代替文档、合同谈判中的客户协作、按照计划应对变化。强调极端用户参与、极小的迭代。
软件配置管理和版本控制
1.软件配置管理的任务是跟踪和控制软件的变化。软件的任何组成部分(源代码、数据、文档、硬件、各种环境)都可以随着软件生命周期的时间而更新。
2.软件版本控制是将唯一版本名或唯一版本号分配给计算机软件唯一状态的过程。在给定的版本号类别(主版本号、次版本号)中,这些编号通常按递增顺序分配,并与软件的新开发相对应。
3.版本控制分为:本地版本控制系统、集中式版本控制系统、分布式版本控制系统
4.版本控制的作用:回溯到之前版本、比较两个不同的版本、将完整版本历史记录推送到另一个位置、合并同一早期版本的分支版本、多个开发人员之间的通信和共享/合并工作等
5.版本控制术语
Repository:项目中版本的本地或远程存储
Working copy:我们可以处理的项目的本地可编辑副本
File:我们项目中的一个文件
Head:当前版本
有关Git
1.对于Git的学习,非常推荐的一个教程:
Git教程 -廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/896043488029600
2.Git常用命令
3.每个文件都术语下列三种状态之一:已修改(工作目录中的文件与git存储库中的文件不同,但不在暂存区域中)、暂存(文件已修改并已添加到暂存区域)、提交(文件在工作目录和git目录中保持相同)。
4.每个提交都是整个项目的快照,Git用树节点表示它。对于任何大小合理的项目,大多数文件在任何给定的修订中都不会更改。存储文件的冗余副本是浪费,所以Git不会这样做。相反,Git对象图存储单个文件的每个版本一次,并允许多个提交共享该副本。