Day01_软件基础
文章目录
1. 软件的概念
-
软件: 程序 + 文档
-
文档概念: 是交付给客户的一整套解决方案
-
文档的意义:
-
让使用者更好使用
-
让运维更好的维护软件
-
2. 文档的类型
-
开发文档
- 开发文档包括: 《功能要求》、《投标方案》、《需求分析》、《技术分析》、《系统分析》、《数据库文档》、《功能函数文档》、《界面文档》、《编译手册》、《QA文档》、《项目总结》等。
-
产品文档
- 《产品简介》、《产品演示》、《疑问解答》、《功能介绍》、《技术白皮书》、《评测报告》
-
管理文档
- 《安装手册》、《使用手册》、《维护手册》、《用户报告》、《销售培训》等
-
需求文档
-
软件设计
-
项目计划
-
项目报告
-
用户使用手册
3. 软件分类
-
应用程序: 是为了满足用户特定的需求而研发的程序
-
操作系统: 管理软件和硬件的一整套方案
-
PC:
- Windows | Linux(服务器操作系统) | Mac
-
移动端:
- Android | 鸿蒙(管理软件和硬件的一整套操作系统) | IOS
-
-
驱动程序: 连接操作系统和硬件的桥梁
-
其他程序:
-
编译程序: 用高级程序设计语言编写的源程序,翻译成等价的机器语言程序
-
数据库: 按照数据结构来组织, 存储和管理数据的仓库(增删改查)
-
4. 程序设计语言
-
高级程序语言:
- 解释型语言 : 一边翻译, 一边执行
- Python PHP JS
- 编译型语言 : 先编译, 再执行
- C语言 Java
- 解释型语言 : 一边翻译, 一边执行
-
汇编语言: 将机器语言进行简单封装
-
机器语言: 二进制代码
5. 软件研发
5.1 编码
概念 : 为了解决某个问题, 将人脑的思路, 方法, 用程序语言编写成代码的过程
5.2 软件开发
- 流程 :
- 版本计划
- 需求分析
- 软件设计
- 编码
- 调试
5.3 软件研发
概念 : 不只是软件开发, 是从需求澄清(分两个部分)、版本计划、需求分析、软件设计、UI设计、测试计划、测试设计、代码编写、测试执行、最终验收交付的全过程
- 流程 :
- 需求
- 设计
- 开发(编码)
- 测试
- 上线
- 维护
- 升级
- 废弃
5.4 软件需求规格说明书(SRS)
- 需求澄清(分两个部分)
- 产品跟客户
- 产品跟开发
5.6 开发设计
5.6.1 概要设计
概念 : 建立系统的总体结构, 划分功能模块, 定义各个功能模块的接口
5.6.2 详细设计
概念 : 设计各个模块的具体实现算法, 确定各个模块间接口的详细内容
- 环境 : 网络 硬件 服务 数据库 操作系统
- 部署 : 将程序配置安装到网络硬件环境中, 使他能被用户使用
- 接口 : 是一系列已经被编译的, 可以被调用的函数库
- 硬件接口 : HDMI USB
- 软件接口 : 分为
- 内部接口 :
- 外部接口 :
5.7 软件的生命周期
- 需求
- 设计
- 开发(编码)
- 测试
- 上线
- 维护
- 升级
- 废弃
5.8 软件公司人员架构
- 项目经理(PM)
- 产品经理
- 架构师
- 需求分析师(BA)
- UI(UE / UX / UCD)
- 前端
- 后端
- 测试
- QC(质量控制) - 控制结果
- QA(质量保证) - 控制过程
- 实施
- 运维
5.9 软件架构
- 客户端(CS架构: 更新时要更新客户端,使用自己的协议
- 服务端(SS架构:
- 浏览器(BS架构: 没客户端,不需要更新客户端,使用http协议
6. 项目
6.1 项目介绍
- 一个项目一般会有十几个模块,一个模块大概十五个左右的接口
- 开发和测试的比例,在国外1:2 - 1:5,国内相反
- 每一千行代码,会有10-20个缺陷,好的开发可以保持在5个左右
- 简单功能的测试,测试用例的数量一般在80-100;逻辑复杂的测试用例一般在30条;每个测试人员一天发现的bug数量在3-5个
- 一个迭代(Sprint)的时间在1-2个月
6.2 项目的发布流程
- 项目发布的话肯定是测试结束了的,然后测试这边会出一个测试报告,如果时间充足的话就会出一个详细的测试报告,如果时间比较急的话,我们会发一个邮件,邮件内容包含我们项目目前的一个质量,还有市面的一些问题是否达到了我们的发布标准,然后把邮件发送给相关人员,包含产品经理,开发,项目经理,告诉他们我们的产品达到了上线标准,可以上线了。之后开发会做一个新的上线的包,然后会给到相应的人员部署生产环境,然后我们测试会在生产环境在简单测试一下基本的功能有没有问题。如果没有问题就可以正常发布,如果有问题的话就需要做一个版本的回滚。
7. 软件研发的模型
1. 瀑布模型
- 上一阶段的结果 , 是下一阶段的输入
- 相邻的两个阶段具有因果关系 , 可以反向验证上一阶段的结果
- 上下次序固定 , 不可改变
- 中间任何一个环节出错 , 都必须返回重做 , 代价极大
- 优 点 :
- 有利于大型项目的人员组织和管理
- 有利于开发方法和工具的使用
- 可以提高软件的质量和效率
- 缺点 :
- 收集需求的时间太长
- 修改代价太大
2. 敏捷模型
- 概念: 是一种以人为核心, 迭代、循序渐进的开发思想。在敏捷开发中 , 软件项目的研发被切分为多个阶段 , 各个阶段要具备
独立运行 , 独立交付
的特征, 敏捷模型有四大部分:概念、计划、实施、交付。
-
概念阶段:市场调研,可行性分析和风险评估
计划阶段:立项,项目总体报告计划
实施和交付阶段:分为多个sprit,每个sprit又分为多个build。在sprit阶段,要进行测试需求分析,测试设计和计划,每个sprit阶段里面的build需要完成编码、用例编写、搭建环境、冒烟测试、执行测试提交BUG修复BUG、缺陷回归、测试报告的过程,最后一个build结束后要进行版本回归,将之前的用例和BUG重跑一遍,通过后就进入到了sprit的交付阶段,交付阶段需要进行show BUG 和show CASE 用户UAT,所有sprit跑完以后进行产品回归,将之前所有的用例和BUG重跑一遍,进入到产品交付阶段,需要提交SHOW CASE 和SHOW bug 及用户UAT的东西。
-
Scrum : 是敏捷的一种典型的管理实践
- 迭代 : 在进行较大规模的项目时 , 将研发过程分为若干轮次 , 每一个轮次都是一个迭代
- 轮次 : 项目 -> 计划 -> 分析 -> 设计 -> 实现 -> 报告
- 站立会 : 分享项目进度 , 交流问题
- 看板 : 所有员工每天的工作任务, 问题和解决方法(哪些完成 , 哪些没完成 , 哪些实现了)
- 用户故事 : 用户需求
- 燃尽图 : 描述剩余工作的进度图