【软件构造】课件精译(三)软件生命周期与配置管理

news/2024/11/28 20:42:57/

一、本章概述

1、软件开发的生命周期
2、传统软件开发模型(瀑布模型、增量模型、V模型、原型法、螺旋模型)
3、敏捷开发和极限编程
4、协同软件开发
5、软件配置管理
6、Git
7、总结

二、本章目标

了解软件开发的一般过程
了解传统软件过程模型的原理,包括线性和迭代模型(瀑布模型、增量模型、原型法、螺旋模型和V模型)
了解并实践敏捷开发
了解软件配置管理(SCM)
学习如何将Git用于日常的SCM任务(用于个人开发的基本命令,用于协作开发的高级命令)。

三、正文

1、软件开发的生命周期

软件开发的生命周期(SDLC):从零到一
计划→分析→设计→实施→测试和整合→维护
在这里插入图片描述
软件生命周期中的多版本:从一到多
示例一: Microsoft Windows (1985-2016)
在这里插入图片描述
集中软件生命模式
在这里插入图片描述

2、传统软件处理模型

两个基本类型:线性、迭代
现有模型:瀑布模型、增量模型、V模型、原型法、螺旋模型
关键质量考虑
用户参与(适应变化),开发效率,功能管理复杂度,软件质量

瀑布模型:利用使用,应对变化代价高。
开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
在这里插入图片描述
增量模型
将整个产品分成不同的增量,逐一完成。
以增量的方式实施瀑布模型。系统被分解成很多小的开发工程,部分系统被构建来产生最后的系统,通常首先实现优先级最高的需求。一旦开始开发某增量,则该增量对应需求被冻结。

百度百科
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。

在这里插入图片描述
V模型(用于验证和确认)
V模型是瀑布模型的扩展,强化测试。
在这里插入图片描述
编码阶段结束后,工艺步骤向上弯曲,形成典型的V形,而不是以线性方式向下移动。
论证开发生命周期的每个阶段与其相关测试阶段之间的关系。
水平轴和垂直轴分别表示时间或项目完整性(从左到右)和抽象级别(最粗的纹理抽象最高)。
原型法
原型法是指开发软件的原型,其模拟最终产品的几个方面,甚至完全不同。
过程:
确定基本需求,包括输入输出信息。软件细节可以被忽略。
开发最初的原型,只包括用户接口。
客户测试原型并提供对于增加和改变的反馈。
修订和增强原型:通过反馈来改善原型。
好处:
在项目早起可以获得用户的反馈。
用户判断软件是否符合规格说明。
对软件进行估算。
螺旋模型
一种风险驱动的过程模型。基于给定项目的独特风险模式,螺旋模型指导团队采用一个或多个流程模型的元素,例如增量法、瀑布法或原型法。
在这里插入图片描述

3、敏捷开发

提倡适应性规划、演化开发、尽早交付和持续改进,并鼓励对变化作出快速和灵活的响应。
“人”以及“人与人的互动”胜于“过程”和”工具”
可运行的软件胜于面面俱到的文档
客户合作胜于合同谈判
响应变化胜于遵循计划
在这里插入图片描述

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

极致用户参与、极致小规模迭代、极致V&V(指verification and validation)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
敏捷开发方法:eXtreme Programming (XP)
在这里插入图片描述
结对编程
在这里插入图片描述
在这里插入图片描述
任务板和进度监控
在这里插入图片描述
在这里插入图片描述
敏捷开发方法:Scrum
在这里插入图片描述

百度百科
Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法:Scrum of Scrums.

4、协同软件开发

开源
在这里插入图片描述
开源开发模型
在这里插入图片描述
(图上内容比较简单,就不翻译了
模型细节
在这里插入图片描述

5、软件配置管理(SCM)和版本控制系统(VCS)

软件配置管理(SCM)
SCM的任务是追踪与控制软件中的变化,SCM实际任务是版本控制和建立基线。
在这里插入图片描述
生命周期和配置项(CI)
软件配置项是软件配置管理的基本单位,任何需要管理的要素都时软件配置项(源代码、数据、文档、软硬件、环境等)
软件配置项(SCI)和基线
基线是在某时间点上,通过评审和认可后的版本,作为后续变化的基点。
CMDB and Check-in/Check-out for Auditing
在这里插入图片描述
CMDB (Configuration Management Database) 即配置管理数据库
在这里插入图片描述

百度百科
软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。
软件配置项(SCI):软件生存周期各个阶段活动的产物经审批后即可称之为软件配置项。

版本: 给软件某个状态唯一的表示
对于个人:通过版本版本控制可以实现回滚、版本比较、版本历史转移、融合版本等功能。
对于团队:在程序员间交流以及分享/融合作品。记录不同开发人员的工作,以便于审计。
分支和演进图
在这里插入图片描述
在这里插入图片描述
分支: 在分支上进行并行开发,如测试新功能;其他人员不想在新功能完成之前涉及新功能;分支对单个开发人员也很有用;通过正确的设置,任何程序员都可以从任何位置拉出或推送到任何位置,从而在合作模式中创造出极大的灵活性。
版本控制系统(VCS)
本地版本控制系统
在这里插入图片描述
中心式版本控制系统
在这里插入图片描述
在这里插入图片描述
分布式版本控制系统
在这里插入图片描述
在这里插入图片描述
版本控制术语
仓库、工作副本、文件、版本、改变(Chage)或不同(diff)、Head(当前版本)
版本控制系统的特性
可靠的、多文件、有意义的版本、回退、比较版本、查看历史等。
融合、责任跟踪、以及允许一个程序员独自工作一段时间,允许多个程序员共享未完成的工作。

6、Git

在这里插入图片描述
Git仓库
Git仓库的三个部分:.git目录、工作目录、Staging区域(在内存中)
每个文件属于以下三个状态之一:Modified、Staged(这个文件被修改了并且加到了staging区域)、Committed(工作目录和git目录下保持一致)
Git中的对象图
Git的所有操作都是在一个图数据库上进行的,从另一台机器/服务器复制git项目意味着复制整个对象图。
对象图长什么样?
对象图是一个有向无环图(DAG)
在这里插入图片描述
在这里插入图片描述
Commits:对象图中的节点
不重复保存各版本中没有发生变化的文件,每个文件的每个版本只保存一次,多个提交可共享副本。
在这里插入图片描述
在Git中管理变化
传统的VCS:
在这里插入图片描述
Git:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过git commit向对象图添加
在这里插入图片描述
通过git push和git pull发送或接收对象图
在这里插入图片描述
Git支持分支和融合
分支是在版本控制下对对象的复制,以便修改可以沿两个分支平行进行。
在这里插入图片描述
在这里插入图片描述
在Git中创建和融合分支
在这里插入图片描述
在这里插入图片描述
Git支持协同开发
下图是本地仓库与远程仓库:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GitHub
基于Web的Git服务器和Internet托管服务。
它提供了Git的所有分布式版本控制和SCM功能
以及添加自己的功能。
它为每个项目提供访问控制和几个协作功能,如bug跟踪、功能请求、任务管理和wiki。
私有和免费存储库(用于开源项目)
GitHub工作流程
基本流程:commit,branch,merge
协同流程:fork(将他人的代码复制到自己的仓库)、pull request(修改他人代码后,向其他人发送pull请求,以决定是否接受)
在这里插入图片描述
在这里插入图片描述

7、总结

软件开发的生命周期(SDLC)
传统软件开发模型(瀑布模型、增量模型、V模型、原型法、螺旋模型)
敏捷开发和极限编程
协同软件开发
软件配置管理(SCM)
Git


http://www.ppmy.cn/news/749378.html

相关文章

软件研发部管理制度

为加强对公司软件研发部门工作管理,缩短开发周期,提高软件开发质量,降低开发成本,提高开发效率,特制定软件研发部管理制度。 第一章、总则 为保证日常工作正常有序的进行,让开发中各个环节更紧凑&#xf…

酒店计算机管理系统维护合同,酒店计算机管理系统维护合同协议书范本.pdf

编号: _____________ 酒店计算机管理系统维护合同 甲 方: ________________________________________________ 乙 方:___________________________ 签订日期: _______年______月______ 日 第 1 页 共 4 页 甲方: 乙方&…

【半监督医学图像分割 2023 MICCAI】SCP-Net

文章目录 【半监督医学图像分割 2023 MICCAI】SCP-Net摘要1. 简介2. 方法2.1 自交原型预测2.2 典型预测不确定性2.3 无监督原型一致性约束SPCCCPCC 3 实验与结果3.1 数据集和评价指标3.2 实施细节3.3 与其他方法的比较3.4 消融研究 4. 总结 【半监督医学图像分割 2023 MICCAI】…

佳宜合同管理软件(企业版)

《佳宜合同管理软件 》是一款通用的合同管理软件,软件操作简单方便,界面美观大方,可方便的帮助你对供货商和客户的合同进行管理,协助您完成应收应付款分析,自动统计所有供货商和客户的应收应付款额,为您大大…

2023 Thinkphp企业客户关系管理CRM系统PHP源码

资源简介 PHP客户关系CRM管理系统源码 Thinkphp企业crm管理系统php源码 PHPCRM客户关系管理系统源码功能实现 1.公海管理:公海类型、客户公海。 2.线索管理:我的线索、线索列表、线索状态、线索来源。 3.客户管理:我的客户、客户列表、成…

软件项目管理第4版课后习题[附解析]第一章

软件项目管理第4版课后习题[附解析]系列文章目录第一章第二章第三章第四章第五章第六章第七章第八章第九章第十章第十一章第十二章第十三章第十四章第十五章第十六章期末复习题型分册版-练习版无答案(无大题版)期末复习题型分册版-有答案版(无…

spring boot企业合同管理系统 毕业设计源码161456

springboot企业合同管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对企业合同等问…

(附源码)spring boot企业合同管理系统 毕业设计 161456

springboot企业合同管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对企业合同等问…