软件构造第二章

第2章:软件构建的过程和工具2.1软件生命周期和配置管理
2.1软件生命周期和配置管理
大纲
软件开发生命周期(SDLC)传统软件过程模型(瀑布式,增量式,Vmodel,原型设计,螺旋式)敏捷开发和极限编程(XP)协作软件开发软件配置管理(SCM)Gitas SCM工具摘要
2.1软件生命周期和配置管理本讲座的目标
了解软件开发的一般过程理解传统软件过程模型的理念,包括线性和迭代模型(瀑布式,增量式,原型,螺旋式和V型)了解和实施敏捷开发理解软件配置管理(SCM)学习如何将Git用于日常SCM任务(个人开发的基本命令,协作开发的高级命令)
软件构建
1软件开发生命周期(SDLC)
2.1软件生命周期和配置管理软件系统的组成部分
软件用户
社会环境
技术环境硬件
计划数据文件
商业目标
2.1软件生命周期和配置管理
软件的生命周期
软件开发生命周期(SDLC):从零到一
2.1软件生命周期和配置管理
软件的生命周期
软件生命周期中的多个版本:从1到n
初始版本
更新版本1
废弃版本
更新版本2 …
2.1软件生命周期和配置管理示例1:Microsoft Windows(1985-2016)
2.1软件生命周期和配置管理
“软件是否活着?”
当然可以!任何软件都有自己的生命。 - 软件的“年龄”:生产和使用了多长时间? - 软件的“活力”:在特定时间,市场和用户对它的欢迎程度如何? 期望:任何时候都能持久且充满活力但是, - 软件开发失败(从零到1) - 执行过程中出现故障/错误 - 软件老化/衰减(有效性较低) - 软件死亡
2.1软件生命周期和配置管理软件开发生命周期(SDLC)
这将在“软件过程和工具”(软件工程第3年的轨道)课程中进行研究
1简介
3项目管理。
2软件过程模型
4 UML
5请求工程。
6分析和设计7测试和质量
8维护
9 SCM
软件构建
2传统软件过程模型
2.1软件生命周期和配置管理传统的软件过程模型
两种基本类型: - 线性 - 迭代现有模型: - 瀑布(线性,非迭代) - 增量(非迭代) - V模型(用于验证和验证) - 原型(迭代) - 螺旋(迭代)关键质量考虑因素: - 用户参与(适应变化) - 开发效率,项目管理复杂性 - 软件质量瀑布(顺序,非迭代)
在构思,启动,分析,设计,构建,测试,实施和维护阶段,进展被视为稳步向下流动(如水流)。 易于使用,但事后的变化成本极高。 由Winston W. Royce于1970年定义。
2.1软件生命周期和配置管理增量(非迭代)
产品的设计,实施和测试都是递增的(每次添加一点),直到产品完成。 它逐步应用瀑布模型。 - 系统分解为许多小型开发项目。 - 构建部分系统以生成最终系统。 - 首先解决了最高优先级要求。 - 一旦增加部分被开发,部分的要求就被冻结。
2.1软件生命周期和配置管理增量(非迭代)
2.1软件生命周期和配置管理V模型(用于验证和验证)
V模型表示可以被视为瀑布模型的扩展的开发过程。 - 不是以线性方式向下移动,而是在编码阶段之后向上弯曲工艺步骤,以形成典型的V形。 - 展示开发生命周期的每个阶段与其相关测试阶段之间的关系。 - 水平轴和垂直轴分别表示时间或项目完整性(从左到右)和抽象级别(最粗糙的抽象最粗)。
2.1软件生命周期和配置管理
原型设计(迭代)
软件原型设计是创建软件应用程序原型的活动,即正在开发的软件程序的不完整版本。 - 原型通常模拟最终产品的几个方面,并且可能与最终产品完全不同。 流程: - 确定基本要求:确定基本要求,包括所需的输入和输出信息。通常可以忽略细节。 - Developinitialprototype:开发的初始原型仅包括用户界面。 - 审核:客户(包括最终用户)检查原型并提供有关添加或更改的反馈。 - Reviseandenhancetheprototype:使用反馈可以改善规格和原型。如果引入了更改,则可能需要重复步骤#3和#4。
2.1软件生命周期和配置管理
原型设计(迭代)
优点: - 软件设计人员和实施人员可以在项目早期从用户那里获得有价值的反馈。 - 客户端可以比较所制作的软件是否与软件规范相匹配,根据该软件规范构建软件程序。 - 它还允许软件工程师深入了解初始项目估算的准确性,以及是否可以成功满足提议的截止日期和里程碑。
2.1软件生命周期和配置管理
螺旋(迭代)
螺旋模型是用于软件项目的风险驱动的过程模型生成器。 - 基于给定项目的独特风险模式,螺旋模型指导团队采用一个或多个过程模型的元素,例如增量,瀑布或进化原型。 首先由Barry Boehm于1986年描述。
2.1软件生命周期和配置管理
螺旋(迭代)
软件构建
3敏捷开发
2.1软件生命周期和配置管理
敏捷开发
它倡导适应性规划,演化发展,早期交付和持续改进,并鼓励对变化做出快速灵活的响应。 Agile Manifesto于2001年由17位着名的“程序员”创建。 - 个人和流程与工具之间的互动•自组织和激励很重要,像托管和结对编程这样的互动也很重要。 - 通过全面的文档工作软件•工作软件比在会议中向客户提供文档更有用和受欢迎。 - 合同谈判中的客户协作•在软件开发周期开始时无法完全收集需求,因此持续的客户或利益相关者参与非常重要。 - 响应变更而不是遵循计划•敏捷方法的重点是快速响应变化和持续发展。
两种基本类型: - 线性 - 迭代现有模型: - 瀑布(线性,非迭代) - 增量(非迭代) - V模型(用于验证和验证) - 原型(迭代) - 螺旋(迭代)关键质量考虑因素: - 用户参与(适应变化) - 开发效率,项目管理复杂性 - 软件质量敏捷开发:快速交付
2.1软件生命周期和配置管理
敏捷开发
极端的用户参与极小的迭代极端的V&V
2.1软件生命周期和配置管理
瀑布与敏捷
2.1软件生命周期和配置管理极限编程(XP)
Continuousdelivery
单元测试持续集成
验收测试
结对编程
发布
用户故事值验收测试标准迭代计划
简单设计CRC卡
尖峰解决方案原型
重构
软件增量项目速度计算
增量用户数
测试驱动开发。 (TDD)
Pairprogramming
持续集成
重构
构建自动化
原型
迭代
2.1软件生命周期和配置管理
配对编程
2.1软件生命周期和配置管理任务板和进度监控
软件构建
4协作软件开发
2.1软件生命周期和配置管理
开源
Richard Matthew Stallman(1953-)以自由软件运动,GNU,Emacs,GCC,GPL,FSF而闻名
2.1软件生命周期和配置管理开源开发模型
软件构建
5软件配置管理(SCM)和版本控制系统(VCS)
2.1软件生命周期和配置管理软件配置管理。 (SCM)
SCM是跟踪和控制软件变化的任务。 供应链管理实践包括修订控制和基线的建立。
2.1软件生命周期和配置管理配置项(CI)的生命周期
软件的任何组成部分(源代码,数据,文档,硬件,各种环境)可能会随着软件生命周期中的时间一起更新。 软件配置项(SCI):SCM的基本结构单元。
1.0 1.1 1.2 1.3
File 3File 2File 1Version Labels
最终版本
Beta 1
1.0 1.1 1.2 1.3
1.0 1.1 1.2
1.0 1.1 1.2 1.3 1.4
2.1软件生命周期和配置管理配置项(SCI)和基线
基线是在某个时间点对产品属性的商定描述,作为定义变更的基础。
2.1软件生命周期和配置管理CMDB和签入/签出审核
2.1软件生命周期和配置管理
版本
软件版本控制是将唯一版本名称或唯一版本号分配给计算机软件的唯一状态的过程。 - 在给定版本号类别(主要,次要)内,这些数字通常按递增顺序分配,并对应于软件中的新发展。 - 在细粒度级别,版本控制通常用于跟踪增量不同版本的电子信息,无论该信息是否是计算机软件。
2.1软件生命周期和配置管理您已经使用过的版本控制系统
2.1软件生命周期和配置管理为什么需要对个人进行版本控制
恢复到过去的版本比较两个不同的版本推送版本历史到另一个位置从该位置拉回历史合并版本是同一早期版本的分支为什么需要版本控制 - 团队合作
通信和共享/合并在多个开发人员之间工作
记录不同开发人员的个性化工作以进行审计
2.1软件生命周期和配置管理分支和演进图(SCI或系统)
2.1软件生命周期和配置管理
分行
有时候,一部分开发人员可以继续使用abranch,这是一个并行代码领域,比如试验一个新功能。 其他开发人员不希望在完成之前引入新功能,即使在此期间创建了多个协调版本。 即使是单个开发人员也会觉得创建分支很有用,原因与Alice最初使用云服务器相同,尽管单独工作。 一般来说,拥有许多用于交换项目状态的共享位置会很有用。可能同时存在多个分支位置,每个分支位置由多个程序员共享。通过正确的设置,任何程序员都可以从任何位置拉出或推送到任何位置,从而为合作模式创造了极大的灵活性。
2.1软件生命周期和配置管理版本控制系统(VCS)
本地VCS集中式VCS分布式VCS
2.1软件生命周期和配置管理版本控制系统(VCS)
本地VCS集中式VCS分布式VCS
2.1软件生命周期和配置管理版本控制系统(VCS)
本地VCS集中式VCS分布式VCS
2.1软件生命周期和配置管理版本控制术语
存储库:我们项目中版本的本地或远程存储工作副本:我们可以处理的项目的本地可编辑副本文件:我们项目中的单个文件Versionorrevision:我们内容的记录项目在某个时间点Changeordiff:两个版本之间的差异头:当前版本
2.1软件生命周期和配置管理版本控制系统的功能
它应该允许多个人一起工作: - 合并:组合与普通先前版本不同的版本 - 跟踪责任:谁做了那个改变,谁触及了那行代码? - 并行工作:允许一个程序员自己工作一段时间(不放弃版本控制) - 正在进行的工作:允许多个程序员共享未完成的工作(不破坏其他程序员,不放弃版本控制)
软件构建
5 Git作为SCM工具的一个例子
2.1软件生命周期和配置管理
什么是Git?
初始版本:2005初始作者:LinusTorvalds用于Linux内核的开发。
Linus Torvalds(1969-)
2.1软件生命周期和配置管理管理软件演变过程中的变化
2.1软件生命周期和配置管理
Git存储库
Git存储库有三个部分: - .git目录(存储所有版本控制数据的存储库) - 工作目录(本地文件系统) - 暂存区域(在内存中)每个文件属于以下三种状态之一: - 已修改(工作目录中的文件与git存储库中的文件不同,但不在暂存区域中) - 分段(文件已修改并已添加到暂存区域) - 已提交(文件在工作目录和git中保持相同)目录)
2.1软件生命周期和配置管理
Git中的对象图
我们使用Git进行的所有操作 - 添加,提交,推送,记录,合并,… - 对存储项目中所有文件版本的图形数据结构的操作,以及描述这些文件的所有日志条目变化。 Git对象图存储在存储库的.git目录中。
从另一台机器/服务器复制git项目意味着复制整个对象图。 - git clone对象图是什么样的?
对象图是Git项目的历史,是一个有向无环图(DAG)。
2.1软件生命周期和配置管理
每次提交都是我们整个项目的快照,Git用atreenode代表。对于任何合理大小的项目,大多数文件在任何给定的修订版中都不会改变。存储文件的冗余副本将是浪费,因此Git不会这样做。 相反,Git对象图存储单个fileonce的每个版本,并允许多个提交共享一个副本。 每个提交还有日志数据 - 何时,短日志消息等。
提交:对象图中的节点
2.1软件生命周期和配置管理管理Git中的更改
传统VCS:
在Git中:
2.1软件生命周期和配置管理提交:对象图中的节点
2.1软件生命周期和配置管理使用git commit添加到对象图
2.1软件生命周期和配置管理使用git push和git pull发送和接收对象图
2.1软件生命周期和配置管理Git支持Branch和Merge
分支是修订控制下的对象的重复,以便修改可以在两个分支上并行发生。 将两个分支合并在一起。
2.1软件生命周期和配置管理分支
2.1软件生命周期和配置管理在Git中创建和合并分支
git checkout -b iss53 git commit
git checkout master git checkout -b hotfix git commit
git checkout master git merge hotfix
2.1软件生命周期和配置管理在Git中创建和合并分支
git branch -d hotfix git checkout iss53 git commit
git checkout master git merge iss53
2.1软件生命周期和配置管理Git支持协作
本地存储库和远程存储库
2.1软件生命周期和配置管理Git支持协作
2.1软件生命周期和配置管理Git支持协作
2.1软件生命周期和配置管理
GitHub:基于Web的Git服务器和Internet托管服务。 - 它提供了Git的所有分布式版本控制和SCM功能,以及添加自己的功能。 - 它为每个项目提供访问控制和一些协作功能,如错误跟踪,功能请求,任务管理和维基。 - 私有和免费存储库(用于开源项目)2016年,它有超过1400万个用户,超过3500万个存储库。
GitHub上
2.1软件生命周期和配置管理GitHub工作流程
基本流程:提交,分支和合并协作流程:fork和pull请求
2.1软件生命周期和配置管理GitHub工作流程
2.1软件生命周期和配置管理问题跟踪和请求
软件构建
6总结
2.1软件生命周期和配置管理
摘要
通用软件开发生命周期(SDLC)传统软件过程模型 - 瀑布,增量,原型,迭代敏捷开发协作软件开发软件配置管理(SCM)Git作为SCM工具

猜你喜欢

转载自blog.csdn.net/t03010/article/details/93405469