敏捷开发是什么

敏捷是个科学的做事情的方式。

敏捷开发有几个角色

  1. PO(Product Owner),就是项目经理
  2. SM(Scrum Master),就是team leader
  3. DEV
  4. QA,就是测试(按理上是不一样的,但是实际情况常常是一样的)

四个会议

  1. 敏捷计划会
    • 任务明确、需求分析、故事点切割
    • Sprint: 迭代或冲刺,一般为一个月一次
  2. 每日立会
    • 对着任务展板,总结昨天,计划今天,表达阻碍
  3. 敏捷评审会
  4. 敏捷回顾会,一般一个月一次

Capability Maturity Model Integration

CMMI 会有一些概念

Process Area 相当于一个 Checklist,每一个都代表做好软件开发的某一个方面。

Goal 是 PA 的细分要求。

Practice 是 Goal 的细分实践。

最终就是检查 Practice 有没有达到,评估师通过举手表决。

评估方法有三种:

  1. SCAMPI A
  2. SCAMPI B
  3. SCAMPI C

实践 “SCAMPI A”

如何证明,证明就要讲证据

  1. 书面直接证据
  2. 书面间接证据
  3. 访谈的证据
    必须有1。2和3必须有一个。

通过评估只是给评估师的2-6个项目,并不代表其他项目或者未来的项目能够达到标准。

CMMI 的目标是支持企业的商业目标,不是为了增加管理成本而不提高收益。

拿公司聚餐举例

Level 1: 初始级

  • 不用做什么计划,提前一点订好座位
  • 当天下班大家一哄而去
  • 现场点菜,然后大吃一顿

Level 2: 受管理级(做好项目)

  1. 老大家想吃什么?板有什么期望呢?预算多少呢?(需求管理,RM)
  2. 要做个计划才行?(项目计划,PP)
  3. 有人督促计划进行?(项目计划跟踪,PMC)
  4. 酒水需要另外买(采购,SAM)
  5. 统计出席情况以及各菜式的“吃剩”情况(度量,MA)
  6. 菜式统计、买酒的协议、计划等文档要统一管理起来(配置管理,CM)
  7. 老板对我不放心,还派个人来监督我(质量保证,PPQA)

此外,还需要进行风险管理?调查人吃什么菜有什么指南?

Level 3: 已定义级(让项目能够重复做好)

  • 经过一段时间积累,以下活动都有明确的知道文档:

    • 如何写文档
    • 如何组织吃饭现场活动
    • 如何确定餐单

    • (RD TS VER VAL PI IPM)
  • 对于确定餐单、选定酒水供应商方面采用决策分析的办法(DAR)

  • 进行风险管理(RSKM)

  • 简历了相应的培训制度(OT)

  • 另外,为了让组织聚餐的活动越做越好,成立了专门的SEPG来负责过程改进(OPF OPD)

无法有个数字说成功率是多少!

Level 4: 定量管理级(可以说出项目的成功率)

  • 积累了大量聚餐活动的CPI、SPI数据
  • 积累了大量的聚餐满意度数据
  • 当前反应聚餐活动的CPI、SPI、满意度等在一定范围内波动
  • 根据当前CPI、SPI,可预测聚餐活动的最终成本

根据历史数据,算出了性能基线、性能模型。(组织过程性能,OPP)
聚餐活动进行时,利用性能基线、性能模型进行定量管理。(定量项目管理,QPM)

已经可以比较准确的预测最终结果

Level 5: 持续优化级(在有数据的基础上做出改进,从而优化数据结果)

原因分析(CAR)
采用新技术,公司定下新的目标(OID)

统计过程控制,以野炊的方式煮饭举例

电饭煲煮饭相对于野炊的方式有什么优势?
稳定!

并不是越高级越好

  • 稳定重复做的某类型项目时,才适合4、5级
  • 创新型的公司,不易做4、5级
  • 一般来说3级要比2级好
  • 符合公司商业目标才是最好的

软件工程是什么

在网上搜索工作机会的时候,“软件工程”这个词又一次映入我的眼帘。

我不是软件工程专业的,所以对于“软件工程”这个词语感到些许的陌生。于是我就网上查了查。

软件工程的出现是为了解决软件危机的。随着不断出现的新技术,软件工程也在慢慢更进。

主要有哪些软件危机呢?

  1. 软件的时间和金钱话费不可预期
  2. 不符合客户的产品需求
  3. 没有完善的文档,不方便协作
  4. 产品有严重问题,无法运行
  5. 没有可维护性,发现问题也难以修改

为了应对这些问题,软件工程就创造出来各种阶段、模型和流程。通过这些让一个软件的制作“有迹可循”。

之前我接触过CMMI,它可以对企业的软件质量管理流程做一个评价,分为五个等级

  1. 初始级
  2. 受管理
  3. 已定义
  4. 定量管理
  5. 持续优化

它是描述软件组织的软件能力成熟度,它是过程改进的一套模型。

当我们描述一个公司的软件能力是不是成熟,就是它是不是有一套模型约束它。

MySQL复制表结构,复制数据

或许是要在现实的工作中走一遭才知道哪些东西是重要的吧。

今天在做mysql的题目时,遇到了一个题目——两种方式复制表结构,复制数据,创建新表。
平常接触的都是检索,这种复制还是头一次见。

复制涉及两个对象,新表旧表
复制的内容也有两种,结构数据

方向都是旧表复制到新表。

可以同时复制结构和数据,使用

1
CREATE TABLE 新表 SELECT * FROM 旧表;

也可以单独复制结构,使用

1
CREATE TABLE 新表 LIKE 旧表;

还有一种比较奇特的,不会复制主键类型和自增方式(可以看到是“同时复制”的魔改版,单纯就是把数据丢弃了)

1
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2;

注:所有“SELECT”出来的结果只包含数据结构和数值,如果想复制主键、自增、存储引擎、索引这些属性还是得使用“LIKE”,这也就需要用到下面的复制数据了。

如果只是单纯想复制数据,使用(不同之处是“INSERT INTO”)

1
INSERT INTO 新表 SELECT * FROM 旧表;

这是两个表的结构相同的情况,如果不同呢?使用

1
INSERT INTO 新表(字段1, 字段2, .......) SELECT 字段1, 字段2, ...... FROM 旧表;

另外,“CREATE TABLE”时会看到一般用来起别名的“AS”冒出来,不用慌,它可要可不要。MySQL :: MySQL 8.0 Reference Manual :: 13.1.20.5 CREATE TABLE ... SELECT Statement里面有这样的标示。

尝尝树莓派

树莓派的好处在于它不仅是个Linux主机,还可以通过GPIO引脚实现很多功能。这都是让人着迷的点。

由于我没有屏幕,我收到树莓派后经历了这几个过程才能够顺利开机:

  1. SD卡刷系统
  2. “/boot”里创建空的文件“ssh”,目的是打开ssh功能
  3. 用网线将树莓派接上网络,找到树莓派的ip地址
  4. ssh pi@192.168.1.200,密码是“raspberry”。

接下来就是任意驰骋了!

(先占个坑,更多内容随后更新。)

软件测试工程师需要了解的Linux

虽然我使用linux好几年了,但是还是需要对软件测试工程师需要了解的linux知识做个梳理。
当前本人还没有入行软件测试,因此可能受困于当前的认识。

总的来说,软件测试工程师不是做运维,对于linux系统的维护不需要了解很多。只需要能够操作linux,也就是输入命令,熟练就好了。
根据我的经验,冗长的选项是菜鸟的天敌。我选择以命令长度排序的方式将工作中常用的命令列出来,是便于上手体验命令和之后的复习。
我看到有些人按功能将命令分类,我想在遗忘这些命令的时候我们脑子中也是以功能的方式组合这些命令的。但这里我偏偏就要一个不常见的排序方式列出来。
就是为了实现更多的神经连接方式,助力回忆。

毕竟,命令的详细用法可以查手册和自己的笔记,按功能也可以看很多别人的文章,何必看这篇呢。

按命令长度排序

越短的命令越可以无脑使用体验效果。
越长的命令功能越强大。

可以不指定对象的命令

  1. ls
  2. pwd
  3. vi
  4. clear
  5. top
  6. ps
  7. history
  8. ifconfig
  9. df
  10. du
  11. free

可以看到可以不指定对象的命令除了少数几个基本都是对当前状况的查看。

可以只指定对象的命令

指定一个对象

  1. cd
  2. touch
  3. mkdir
  4. tail
  5. wget
  6. rm
  7. cat
  8. tac
  9. more
  10. less
  11. head
  12. nl

基本都是对一个文件的查看或创建。

指定两个对象

  1. mv
  2. cp
  3. scp

就是移动和复制。

必须添加选项的命令

  1. chmod
  2. chown
  3. find
  4. grep

一些查询和简单的文件权限和归属修改。