本章主要介绍了软件开发的生命周期和软件配置的相关知识,更偏向于开发方式与开发工具的介绍章节。

(一)软件生命周期

从无到有,软件的生命周期如图所示

(二)传统软件开发模型

基本的为线性过程和迭代过程,现在常见的则有瀑布过程、增量过程、v字模型、原型过程和螺旋模型等。

瀑布过程没有迭代,依次推进,结构清晰,管理简单,但无法适应需求的增加与变化。

增量过程为多个瀑布的串行模式,较为适应需求变化。

v字模型为瀑布过程的扩展,存在一个证明和校验的过程来反馈回较前的开发阶段。

原型过程在原型上不断地迭代(评审-反馈-修改)从而满足用户需求,时间代价和开发质量都比较高。

​​​​​​​        ​​​​​​​        ​​​​​​​        

螺旋模型是一种风险驱动的过程模型,通过数轮瀑布模式的迭代来组成复杂的开发过程,每一轮迭代都有者明确的目的,遵循“原型”过程。在进行严格风险评估后才能进入下一轮。

(三)敏捷开发

敏捷开发是指通过快速迭代和小规模的持续改进来快速适应变化,包括3个极限:极限的用户参与,极限的小步骤迭代和极限的验证。

(四)软件配置管理(SCM)与版本控制系统(VCS)

SCM负责追踪和控制软件的变化,核心是版本控制和基线的确立,其中软件配置项指软件中发生变化的基本单元,而基线则是软件变化中的稳定时刻(比如所有文件的最新版本所组成的一个对外发布版本)。

版本是为软件某一时刻所指派的唯一一个编号作为身份标识。常见的VCS包括Local、Centralized和Distributed三种。本地VCS将文件储存在本机,无法共享与协作;集中式VCS将仓库存储在独立的服务器上,可以协作;而分布式VCS将仓库存储在独立服务器和每个开发者的本地机器上,这样在便于协同开发的同时也减少了文件因为意外丢失的情况。

(五)Git

git是进行SCM的工具之一,包括CMDB(配置管理数据库,存储基线和各个配置项随时间发生变化的信息),工作目录和暂存区。git的所有操作都是针对对象图进行的,复制项目意味着复制整个对象图,对象图中A->B表示在B的基础上进行变化形成版本A,不同的提交之间可以进行分支或合并,比如:

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

git在进行存储时,是针对发生变化的文件进行存储,因此不变化的文件不会重复存储,若文件发生了变化,则库中会存储两份不同的文件,分别被不同的版本所指。

git常见命令有git init          git add xxx         git commit -m 'xxx'        git clone [url]

git status         git diff等

git还可与远程仓库链接起来,便于成员之间相互协作,比如github。常用以下命令:

git remote:获取当前配置的所有远程仓库;
git remote add [shortname] [url]:添加一个远程仓库;
git fetch:从远程仓库抓取数据到本地;
git pull: 从一个仓库或者本地的分支拉取并且整合代码;
git push [remote-name] [branch-name]:将本地仓库中的数据推送到远程
仓库;
git remote show [remote-name]:查看某个远程仓库的详细信息;
git remote rm:从本地移除远程仓库;

git可以在开发时使用分支,实际上是对项目进行了复制,这样就能让项目沿着两个分支平行修改。常用命令与示例如图:

(六)软件构造一般过程

编程:语言加环境。语言包括编程语言、建模语言、配置语言、构造语言。

代码评审:包括结对编程,走查,正式评审会议,自动化评审。

动态代码分析:进行充分测试,执行程序并发现不足,保证高覆盖度

调试和测试:测试发现错误,调试寻找错误根源并纠错。

重构:结构与功能不变的条件下优化代码,一些开发环境提供了自动的重构功能。

哈工大软件构造第三章总结相关推荐

  1. 软件构造第三章 第五部分

    ADT和OOP中的等价性 equal和== hashcode()和equals()方法总是一起被重写 "==":引用等价性,指向相同的内存地址, equals():对象等价性,在自 ...

  2. 哈工大软件构造课程知识点总结(三)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  3. 哈工大软件构造课程知识点总结(一)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  4. 哈工大软件构造期末知识点总结

    哈工大软件构造试题构成: 1.30-45分的选择题,10-20题 2.55-70分的简答与设计题,5-6题 考试知识点(不全面): 1.git工具的知识点 2.Java设计模式(一共有23个,主要考察 ...

  5. 2022哈工大软件构造lab1小结(知识点)

    哈工大软件构造lab1小结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 问题一 使用的库 异常处理机制 字符串内容检查 写入文件 问题二 problem 3:画一 ...

  6. 哈工大软件构造 复习

    哈工大软件构造试题构成: 1.30分的选择题 2.70分的简答题 2019考试知识点(重要的,但不涵盖全部考试范围): 1.git工具的知识点(没有考察命令行,考察的主要是git的演变及各部分的作用) ...

  7. 哈工大软件构造课程知识点总结(二)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  8. 哈工大软件构造期末复习

    系列文章目录 哈工大软件构造期末复习(最终章) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 哈工大软件构造期末复习(最终章) 前言 一.github指令 ...

  9. 哈工大软件构造实验一

    哈工大软件构造lab1 实验目标 实验过程 Magic Square 第一部分 要求 实现 第二部分 要求 实现 Turtle Graphics 第一部分 绘制多边形 第二部分 计算方位 第三部分 凸 ...

最新文章

  1. python编程入门与案例详解pdf-Python入门之三角函数sin()函数实例详解
  2. 【读书笔记】JavaScript高级编程(二)
  3. 云计算技术都要学什么?教你分清公有云、私有云和混合云
  4. java中synchronized的用法详解
  5. ITK:单相Chan和Vese密集域水平集分割
  6. Elementui select 设置点击事件,在Change事件前触发
  7. 挂机宝装mysql_挂机宝安装
  8. 4373支队伍报名2020数字中国创新大赛-数字政府赛道 数字战“疫”彰显社会责任...
  9. Java中ArrayList,Vector,LinkedList,HashMap,HashTable,HashSet对比及总结
  10. Jquery中val、text、html的区别
  11. pytorch导入模型
  12. ubuntu11.04(unix 就可以了) 共享文件以及支持上传文件
  13. python输出斐波那契数列_如何用Python输出一个斐波那契Fibonacci数列
  14. Docker Wnmp 搭建
  15. 题目:滑动解锁 蓝桥杯
  16. 微信小程序开发(十二)富文本插件wxParse的使用
  17. 竟成408计算机考研辅导书介绍
  18. 折线图(运营数据分析)--python
  19. MFC多窗口停靠成Tab页并默认选中第一个TAB页
  20. 隐性—显性知识转化技术

热门文章

  1. 基于SSH的服装销售网站,仿阿里旺旺客服,web在线客服
  2. 【云盘项目2 SpringMVC.xml
  3. 物联网传感器市场的六个特点分析
  4. sql yog图形管理工具-varchar类型数据不能输入中文报错问题
  5. Github每日精选(第68期):HTTP客户端哪家强-reqwest
  6. 后端程序员:如果把Java比作恋人.......
  7. 汇千网-华米亮出独立GPU、自研操作系统,新引擎30秒监测血压
  8. 除了计算机学位,这五件事情更重要
  9. 2020华为海思实习生面试记录
  10. [教程]使用 Git 克隆指定分支