第 1 章 第一部分 软件项目管理
1.1 传统的 软件项目管理流程
可行性分析阶段:可行性分析报告
需求阶段:需求说明书、需求规格(分析)说明书
设计阶段:概要设计说明书、详细设计说明书
开发阶段:软件开发框架、重点难点攻关
测试阶段:测试用例、测试报告
运维阶段:运维手册、运维报告
运营阶段:运营手册、运营报告
小结:
测试工作 简述: 软件 的实际承载能力, 例如Tomcat实际承受 并发350 、 独立接口 和集成阶段测试 。
运维工作 简述:7*24 小时 服务,每天系统的报告,异常数量连接数 。
运营工作 简述 : 生产环境出问题怎么解决,需要完整解决系统问题 的 流程,统计业务量 、需求 指 标量 报告。
1.2 敏捷 的软件项目管理流程
需求阶段:产品需求说明书
设计阶段:流程设计、数据库设计、接口设计
开发阶段:软件开发框架、重点难点攻关
测试阶段:测试用例、测试报告
运维阶段:运维手册、运维报告
运营阶段:运营手册、运营报告
小结:
对于 复杂度高的项目需要一个稳定的团队,大家的思路和框架流程都熟悉 ;
对于 简单的项目增删改查,这时需要的 只是 简单的人员
1.3 项目 评审
需求评审:对需求进行质询,明确需求内容、范围
设计评审:确认设计方案、重点难点解决方案,依据评审结果进行开发工作量评估
测试用例评审:确认用例覆盖度
小结:
项目真正 的目 、 明确需求 、 内容 、范围 、 并 构建最终 明确文档( 只可 微调) 。
会议评审 主要 对于 每个人的对于 方案 的解决方法,
解决 需求确认,评审确认后的时间概念:选择团队中的某一个人( 中间 人只做参考-中级程序员) , 根据中间点来确定工作量的完成 时间 。
沟通 交流培育的成本,五个人和十个人不一定 时间 就能提前 , 技术是细节 重要 的是 测试 和评审
1.4 测试流程
开发人员自测、交叉测试
第一轮测试
第二轮测试
UAT (用户验收)测试
准生产环境测试
生产环境验证
小结 :
第一轮: 是代码提交测试
第二轮:测试 人员 集成测试
主要 解决 版本 问题 等git 的版本控制根据我们的环境来定义我们的版本,例如truck 版本
测试 人员发布版本 UAT测试 内网测试
准生产 环境 和 上产环境时 保持 一致 生产环境验证
注意 : 测试环节是保证系统安全上线的最关键环节,每一轮测试都需要提供独立的测试环境。
1.5 上线 流程
产品人员提出上线申请
测试人员将代码部署至 UAT 环境
产品人员进行 UAT (用户验收)测试
运营人员进行准生产环境测试
运营人员进行生产环境验证
第 2 章 软件 架构设计
2.1 业务架构 分解
2.2 技术 架构 —部署 要求
高可用架构 的重要性
数据 的前瞻性 提前 备份防范
安全 十分总要 、例如 :增加安全组 进行 安全扫描才能上线
安全 漏洞:框架漏洞 黑客 脚本,
根据 业务线选择 上线时间
各类数据 缓存要求
缓存小结 :
字典 类数据 采用本地缓存效率 更高
用户数据动态 数据采用 分布式 缓存
其余 放在 表结构 等定长 文本 放入 mysql
2.3 技术架构—分布式 CAP 理论
一致性( C ):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性( A ):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分区容忍性( P ):一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里
应用 服务器集群架构
业务 拆分
分布式 数据的一致性解决 方法 :
每 500 万 一个库 群组 做分库
冷热 数据的区分和隔离 时间 的分片原则 每一小时 就会生成一个库
基于 所有的东西都拆分开
2.4 技术 架构 —— 架构设计 误区
一味追随大公司的解决方案
为了技术而技术
企图用技术解决所有问题
第 3 章 技术杂谈
3.1 技术 杂谈 ——jvm 调尤
jvm 优化
j vm 学习 方向
jvm 逻辑 问题
3.2 技术杂谈—内存参数设置
vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
-vmargs 说明后面跟随的是JVM的参数设置
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
3.3 技术杂谈—数据库的四个隔离级别
数据库操作面临的问题:脏读、不可重复读、幻读、更新丢失。
为了避免上面出现的几种情况,在标准 SQL 规范中,定义了 4 个事务隔离级别:
读未提交( Read Uncommitted )
读已提交( Read Committed )
可重复读取( Repeatable Read )
序列化( Serializable )
3.4 技术杂谈— Spring 中的事务传播特性
PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
PROPAGATION_NESTED :如果一个活动的事务存在,则运行在一个嵌套的事务中 . 如果没有活动事务 , 则按 TransactionDefinition.PROPAGATION_REQUIRED 属性执行
3.5 技术杂谈—程序员的职业生涯
1-3 年,初级:做好增删改查功能,熟练使用开发框架,培养良好的思维习惯
3-5 年,中级:能够完成简单系统的设计,独立完成系统的开发
5-10 年,高级:深入理解技术原理,配合架构师完成架构落地,解决重点难点问题
10 年以上,架构师:项目评审、架构设计、技术选型、重点难点分析、技术攻关、沟通与协调、提升理论知识
第 4 章 指出 问题
接口 流程: 写完代码 要给接口 方 提供可用完成的接口 。
评估 工作: 项目的评估到个人工作的评估,工作 量 评估 范围 取决 于中间 评估人。
任务 完成: 每个人 接任务的时候要清除自己的工作目标必须有时间的约束 。
工作 范围: 说任何话 做任何事都要有范围的,不然都是错的 。
测试 人员:测试 人员是 最重要的 环节 ,决定项目能否上线的必须流程。