一、本章概述

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

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

  1. 软件构造 第二章 第一节 软件生命周期和版本控制

    软件构造第二章 第一节 软件生命周期和版本控制 基本内容 Software Development Lifecycle (SDLC) Traditional software process mode ...

  2. 01.软件项目管理与敏捷方法——敏捷项目生命周期详解笔记

    01.软件项目管理与敏捷方法--敏捷项目生命周期详解笔记 00.与其说是船还不如说是熟练的航行技术保证了成功的航行.--George William Curtis 01.敏捷项目是一个按照敏捷宣言宗旨 ...

  3. 软件构造 第一章第二节 软件开发的质量属性

    ​软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality ...

  4. 实验三 Android生命周期

    实验三 Android生命周期 一.实验目的 巩固使用 Eclipse 开发 Android 应用程序方法和步骤. 加深了解和体验 Activity 的生命周期中各状态的变化关系. 掌握 Androi ...

  5. react为什么要废弃三个生命周期?

    参考:https://blog.csdn.net/weixin_40629244/article/details/120827408(重要) 参考:https://blog.csdn.net/Whoo ...

  6. uni-app三种生命周期及页面跳转方法

    uni-app三种生命周期 应用生命周期 应用生命周期函数: onLaunch:当uni-app初始化完成时触发(全局只触发一次) onShow:当uni-app启动,或从后台进入前台显示 onHid ...

  7. 软件构造学习笔记-第三周

    本周介绍了软件开发的几种模型,并重点介绍了Git.Git是分布式版本控制系统,可以通过SSH key建立远程与本地的连接,通过Git Bash中的命令进行文件的上传和下载.对于这门课程,Git的主要作 ...

  8. 奇安信专家:近八成软件存开源漏洞 供应链需全生命周期安全防护

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

  9. 软件生命周期和配置管理

    一.软件开发生命周期(SDLC) 1.从0到1 计划 分析 设计 实施 测试 维护 2.从1到n 很多个版本 二.传统的软件过程模式 两种基本类型: 1.线性 2.迭代 不同模式的关键质量考虑因素: ...

最新文章

  1. C中结构体的存储分配
  2. 一款好用的JS时间日期插件layDate
  3. boost::hana::negate用法的测试程序
  4. 数据库的事务级别介绍与操作
  5. favicon图标制作
  6. 【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例
  7. 数据可视化、模板框架、动态控件、可视化大屏、数据监管、监控平台、图表元件库、数据看板、驾驶舱、统计图表、园区、大屏展示、安防、智慧城市、旅游、健康、医疗卫生、交通、农业、政务、AI、食品、医院、安全
  8. esp8266接入小度语音,小度音箱控制,附开源app控制
  9. 软件架构设计–五视图法
  10. Mac下导入virtualenv报错:its parent directory is not owned by the current user
  11. 李白打酒 c语言,C语言递归调用1:李白打酒
  12. 打印1000-2000年的闰年
  13. 仿热血江湖游戏类46地面物品类
  14. 程序设计训练课程设计
  15. 【工具】60 个相见恨晚的神器工具
  16. kettle-创建资源库
  17. 安装php_soap.dll,php如何安装soap扩展
  18. 【LAS】IJK中las 的自适应配置没有给出?
  19. 最佳编程语言_2020年最佳职业和未来编程语言
  20. MongoDB数据库协议解析及C/C++代码实现

热门文章

  1. 解读波卡崛起之路:DOT大涨,只是顺势而为罢了
  2. Solidworks提示字体Arial Unicode MS安装不正确,PDF文件中一个或多个文本字串可能遗失怎么办...
  3. 无忧全国计算机等级考试超级模拟软件如何安装
  4. HTML+CSS+JS网页设计期末课程大作业 DW个人博客网站制作 web前端开发技术 web课程设计 网页规划与设计
  5. [附源码]计算机毕业设计springboot智慧园区运营管理系统
  6. Android获取屏幕宽度高度并动态设置控件宽度,比例等
  7. 技术沙龙|解读以太坊黄皮书,学习智能合约应用开发(北京)
  8. mail命令发送html格式的电子邮件
  9. 机器学习之必备知识篇
  10. 字典树(Tire树)C++详解,一文让你理解字典树