目录
1.软件构造过程
重点:根据需求,选出最合适的开发过程。
选择合适过程模型的依据:
①用户的参与程度(软件构造过程适应变化的能力)
②开发效率/管理复杂度
③开发出的软件质量
1.1传统软件开发流程
1.1.1瀑布过程
(1)瀑布模型的特点
①线性推进
②阶段划分清楚
③整体推进
④无迭代
⑤管理简单
⑥无法适应变化(因为只有在整个过程结束才能看到软件的全貌,一旦完成了软件的开发,若想改变某一功能则只能从头开始开发软件,类似于面向过程编程)
(2)优点
①直观,符合人们认知,管理简单
(3)缺点
①需要提交大量的文档(由于是分阶段开发,因此每个阶段都需要设计里程碑,提交大量的文档)
②无法适应需求的变化
(4)开发过程
需求--->设计--->编程--->测试--->维护
(5)适用场景
适用于成熟了的项目,团队接手项目之后如庖丁解牛般行云流水。
1.1.2增量过程
(1)与瀑布过程的关系
若软件是由多个功能模块组成的,每个可以拆分出来形成一个小的产品,比如开发教务管理系统,有教师登录过程、教师选择教室、教务处排课等,增量模型就是把软件切块,每一个块都是可执行可被验证的产品,然后在每一个块上边运用瀑布过程。
(2)特点
①线性推进
②增量式(多个瀑布的串行)
③无迭代
④比较容易适应需求的增加(因为只需要推倒某一块即可,无需把整一个软件重建)
(以上引用自博客软件工程--增量模型详解_吴声子夜歌的博客-CSDN博客_增量模型)
(3)缺点
(以上引用自博客软件工程--增量模型详解_吴声子夜歌的博客-CSDN博客_增量模型)
(4)增量模型例子
(以上引用自博客软件工程--增量模型详解_吴声子夜歌的博客-CSDN博客_增量模型)
1.1.3 V模型
为了测试,平常只有编码阶段才会写程序,每一个阶段都可被测试,
(摘自V模型_DavidBigHero的博客-CSDN博客)
(1)目的
为了改进软件的开发效率和质量。
(2)过程
(摘自V模型_DavidBigHero的博客-CSDN博客)
(3)缺点
仅仅把测试作为编码之后的一个阶段,未在需求阶段就进入测试。(怎么在需求阶段就进入测试?)
1.1.4原型模型(重点)
场合:用户需求不明确。先开发个原型(界面。。或代表简单功能的),展现给客户,用户对原型进行修改。问题,把原型设计的特别好,用户以为你做好了,但其实你只有个模型,根本没写代码。
(1)过程
快速设计产品原型,所谓原型,即指一个产品的概念实现,然后展现给客户,接着与客户交流,不断修改原型,把原型设计好后再进行开发。
(2)特点
迭代,降低成本,风险小,缩短开发周期,加快工程进度。
(3)适用范围
客户需求不明确,客户对产品开发的参与度高,可以和客户疯狂交流。
1.1.5螺旋模型(重点)
软件工程--螺旋模型详解_吴声子夜歌的博客-CSDN博客_螺旋模型
(1)特点
迭代
(2)适用范围
大型工程。
1.2敏捷开发
小步快跑,快速迭代。四点。
(1)本质
小步快跑,快速迭代。
每次产生的都是一个小产品,然后快速迭代,每次迭代处理一个小规模增量。
强调结对编程(即一个人编程一个人观察程序是否对)。
强调自动化测试、集成。
(2)与传统开发的区别(重点)
①人的交流重要于开发过程和开发工具。
②有效的软件重要于完整的文档。
③与客户合作重要于合同的谈判
④及时反馈于需求变化重要于遵循原来的计划
(3)更详细见
软件开发模式之敏捷开发(scrum)_android_Mr_夏的博客-CSDN博客_敏捷开发
1.3强推几篇文章
软件工程——瀑布模型、快速原型模型、增量模型、螺旋模型_「已注销」的博客-CSDN博客_瀑布模型软件工程 瀑布模型、原型模型、喷泉模型和V模型的优缺点及适用场景_zhang_bryant的博客-CSDN博客_喷泉模型常见的软件开发过程模型优缺点及适用范围 -- 思维导图_proplume的博客-CSDN博客_软件过程模型有哪些软件工程 瀑布模型、原型模型、喷泉模型和V模型的优缺点及适用场景_zhang_bryant的博客-CSDN博客_喷泉模型软件工程——瀑布模型、快速原型模型、增量模型、螺旋模型_「已注销」的博客-CSDN博客_瀑布模型
1.4第一节需要掌握的知识点
①给需求能选出合适的开发过程(重点在原型模型和螺旋模型,选择题)
②传统模型和敏捷模型的区别(四点)
2.版本控制工具
2.1基本概念
①软件配置项:软件中发生变化的基本单元(如文件)
其它:
2.2三种类型的版本控制工具
2.2.1本地版本控制工具
2.2.2集中式版本控制工具
2.2.3分布式版本控制工具
3.Git的使用 (以下都是重点)
(1)指令(重点)
(2)工作目录和本地端仓库是真实存在的两个文件,但是暂存区在本地系统中是没有相对应的区域的,它是通过每个文件的状态来体现的,即文件有一个标识位,为0时表示不在暂存器中,为1表示在暂存区中。
(3)通过版本对象形成的图是有向无环图。
(4)每个版本的父版本只可能有三种情况,0、1、2,0就是root结点,1就是通过commit形成的,2就是通过merge形成的。但是每个版本的子版本是任意多的,且创建子版本的时间和版本库的复杂程度是没有关系的,它是一个常量。
(5)head指当前工作的版本。
(6)其余的见word文档
4.语言的分类
4.1建模语言
UML概述及UML图详解_爱书不爱输的程序猿的博客-CSDN博客_uml
本次课重点在类图 。
UML图:类图 --详细介绍_长齐克斯的博客-CSDN博客_uml类图
5.代码重构
指的是不改变功能的前提下优化代码。