HIT软件构造第二章第一节知识点总结

一.软件开发的生命周期

1.从无到有

    总的而言有六个周期,分别是计划,分析,设计,实现,测试,部署
    计划:考虑面向的市场,需要的时间,人员分配规划等等
    分析:分析受众等软件需求方的多方面的需求
    设计:将需求落实成文档,如类图,流程图等等
    实现:即通俗来说的写代码的过程
    测试;进行单元测试等
    部署:实际上市运行,进行相关维护等等

2.从有到好

    不断地进行变化,更新,修改bug,以保持软件良好的活力

二.软件开发的传统过程模型

1.线性过程与迭代过程

总的来说,线性过程就是软件的周期为严格的一个过程接着一个过程的执行,如下图所示。
HIT软件构造第二章第一节知识点总结
而迭代过程整体来说流程不变,但是有些流程之间存在着反复的迭代与改进。
HIT软件构造第二章第一节知识点总结

2.目前存在的模型

    总的而言,具体用什么模型还要从软件的需求出发,综合用户的参与度,要求的开发质量等等。

(1).瀑布模型

    特点:按照提出需求,设计,实现,测试,运维的软件开发步骤,严格的一步步向下执行,没有迭代过程,为严格的线性过程,就如同瀑布一样。
    优点:阶段划分清楚,因此管理起来也简单,只要上一步正确,制定好文档,下面阶段就可以实施。
    缺点:比较难以适应需求的变化,因为需求的变化必然导致前面步骤的修改,从而后面的过程都要整体重新进行操作;且可能产生大量的文档。
HIT软件构造第二章第一节知识点总结

(2).增量模型

    特点:其实就是多个瀑布模型的线性叠加,把软件拆分成多个增量,每个增量的内部是一个瀑布模型。
    优点:在瀑布模型的基础上,对需求的增加适应度更高了。
    缺点:由于每个增量还是瀑布模型,因此对需求的改变还是难以适应。
HIT软件构造第二章第一节知识点总结

(3).V字模型

    特点:为瀑布模型的推广,其实就是对概念性的规划要逐一进行对应的验证。
HIT软件构造第二章第一节知识点总结

(4).原型法

    特点:先做出一个适用版本,让用户评审,对发现的问题不断地进行修改;并对一些不确定是否使用的技术等进行试用
    优点:在原型上不断迭代更新,开发质量较好
    缺点:开发用时很长
HIT软件构造第二章第一节知识点总结

(5).演化模型

    特点:多轮迭代,每一轮解决一部分问题,可以看作是多个瀑布模型的相关重复叠加,适合大型软件产品。
    优点:每轮迭代的压力会更小,可不断增加软件功能,开发效果好。
    缺点:管理复杂,开发周期长。
HIT软件构造第二章第一节知识点总结

三.敏捷开发模型

    总的来说,敏捷开发的特点即为通过快速迭代和小规模的持续改进,以快速适应变化;看重人与人之间(包括用户与软件开发者)的交流,软件本身重要性大于文档的记录,相应变化重要性大于硬性计划。因此敏捷开发就是类似于演化模型与原型法的融合加上更快的迭代过程。
HIT软件构造第二章第一节知识点总结

四.软件配置管理与版本控制系统

1.软件配置管理的概念与作用

    软件配置管理:追踪和控制软件的变化,且确定一些版本作为重要的软件的基线。
    作用:我们很多时候需要对多个版本之间合并,或者更新版本但保留以前的副本,在必要的时候回滚到以前版本;尤其是团队的成员之间,就会有更多的对软件内容的交互,产生更复杂的多人协作版本,因此有很好的软件配置管理系统很重要。

2.软件配置管理工具:git

(1).git的基本用法与常识

    总的而言,指令如下图所示,具体的用法网上(包括github)已经十分详细了,就不做具体的用法介绍了。
    其中workspace是工作区,与git本身无关;staging是缓存区,我们其实是无法通过点击的形式来看到这些文件的,主要是使得能够更好的进行管理;local repository是本地仓库,进行git init指令可以创建;而remote repository是远程仓库,也就是平时我们所说的github。
HIT软件构造第二章第一节知识点总结

(2).git的管理机制

    用对象图的形式来整理。就如同文件夹的结构可以看作一棵树,因此我们可以广义的把项目的所有内容以及演化过程看作一个有向无环图,新版本指向上一个版本。
    重要特点:git的操作全部在这个有向图中进行。每次提交看作一个新的版本,若发生变化则额外存储新的内容,加入新的边实现新的内容指向旧内容,否则只是改变指针的位置(不加边),实现高效的存储改变同时保留原历史;HEAD只指向当前分支的当前commit,不过可以手动去修改指针,从而实现指向以前的版本。
HIT软件构造第二章第一节知识点总结

(3).git的分支和合并

    最初始默认只有一个master分支,使用git checkout -b xxx即可创建一个名叫xxx的分支并切换至该分支(没有-b则只是切换),因此该分支指向当前commit的版本,之后进行commit,当前分支指向的内容就会改变。git marge xxx即为xxx与当前分支合并:若两分支存在着一个包含另外一个的情况,则可直接指向最新的那个即可,指向旧版本的那个指针可以直接删除;否则只能创建一个新的版本,把这两个不同的不能融合的版本作为父亲,然后让融合后的指针指向这个版本。
    总之,课件上的两张图形象的说明了这项机制。
HIT软件构造第二章第一节知识点总结
HIT软件构造第二章第一节知识点总结