第二章 个体软件过程
第一节 质量管理基本策略
为什么要了解并且掌握个体软件过程(PSP)
DevOps"开发在前,运维在后"
高质量开发对于价值流动的意义—The Three Ways
个体软件工程师的技能、过程直接影响产物质量
PSP是极少数专注于提升个体软件工程师工程技能的方法
为什么在DevOps语境之下,仍然需要关注PSP? 下属说法中正确的有哪些?
A.这是提升开发质量,确保价值顺畅流动得看需要
B.软件开发是有系统可以运维的前提
C.不学习PSP,就不知道应该如果开发软件
D.个体软件工程师的开发对最终产品乃至整个系统的质量至关重要
正确答案:A、B、D你选对了
质量是什么?
软件质量为“与软件产品满足规定的和隐含的需求能力有关的特征或者特性的全体”。[ANSI/IEEE STd 729]
软件质量为内外两部分的特性:其外部质量特性面向软件产品的最终用户,其内部质量特性则不直接面向最终用户。《代码大全》
软件质量为软件产品可以改变世界,使世界更加美好的程度。从用户的角度考察软件质量,用户满意度是最为重要的判断标准。
[Tom Demarco]
软件质量为对人(用户)的价值。这一定义强调了质量的主观性即对同一款软件而言,不同的用户对其质量有不同的体验。
[Gerald Weinberg]
面向用户的质量观
定义质量为满足用户需求的程度。在这个定义中,就需要进一步明确:
用户究竟是谁?
用户需求的优先级是什么?
这种用户的优先级对软件产品的开发过程产生什么样的影响?
怎样来度量这种质量观下的质量水平?
典型用户的期望
这款软件产品必须能够工作;
这款软件产品最好有较快的执行速度;
这款软件产品最好在安全性、保密性、可用性、可靠性、兼容性、可维护性、可移植性等方面表现
优异;
PSP质量策略
用缺陷管理来替代质量管理;
高质量产品也就意味着要求组成软件产品的各个组件基本无缺陷;
第二节 PSP基本流程
什么是PSP(personal software process)?
- PSP是包括了数据记录表格、过程操作指南和规程在内的结构化框架。
- 一个基本的PSP流程包括策划、设计、编码、编译、单元测试以及总结等阶段。
- 在每个阶段,都有相应的过程操作指南,用以指导该阶段的开发活动
- 所有的开发活动都需要记录相应的时间日志与缺陷日志。
一个典型的PSP过程
PSP不同级别包含了不同过程元素
PSP过程度量
PSP基本度项
- 规模
- 时间
- 缺陷
- 日程(TSP)
PSP时间度量(时间日志)
时间日志示例
PSP缺陷度量(缺陷日志)
规模度量的意义和困境
规模度量是链接其他度量项的纽带,是估算的基础
规模度量的困境
精确的度量方式往往不便于早期规划;
有助于早期规划的度量往往难以产生精确度量结果;
LOC VS.FP(功能点)?
间接估算
基于代理的估算(PROBE)
模糊逻辑和相对大小估算
PROBE原理示例
相对大小矩阵
某一个相对大小矩阵(C++语言)
行数 仅供参考 软件估算追求什么样的结果
为什么要度量?
·关于度量的争议
度量体现着决策者对试图要实现的目标的关切程度(特别重要,就去度量)
·“高质量的开发是计划出来的"
·如何构建度量体系—GQM方法
第三节 PSP质量路线图
质量路径 Quality Journey
为了追求极高的质量,你有哪些手段?
Step 1:各种测试
Step 2:进入测试之前的产物质量提升 (如果你扔给测试人员是一堆垃圾,那测完了改完了还是一堆垃圾。)
Step 3:评审过程度量和稳定
Step 4:质量意识和主人翁态度
Step 5:个体工程师review过程的度量和稳定化
Step 6:诉诸设计
Step 7:缺陷预防
Step 8:用户质量观其他质量属性
不同缺陷消除方式消除缺陷的效率
设计、代码评审
关于PSP质量策略,下面各种说法当中,哪一种不恰当:
A.用缺陷管理替代质量管理
B.重点是关注模块(即个体软件工程师工作范围)的质量
C.应该进行充分的测试来保障质量
D.通过高质量评审来保障质量
正确答案:C你选对了
测试消除缺陷的典型流程
- 发现待测程序的一个异常行为;
- 理解程序的工作方式;
- 调试程序,找出出错的位置,确定出错原因;
- 确定修改方案,修改缺陷;
- 回归测试,以确认修改有效;
评审发现缺陷典型流程
- 遵循评审者的逻辑来理解程序流程;
- 发现缺陷的同时,也知道了缺陷的位置和原因;
- 修正缺陷;
PSP质量策略续
·用缺陷管理来替代质量管理;
·高质量产品也就意味着要求组成软件产品的各个组件基本无缺陷;
·各个组件的高质量是通过高质量评审来实现的;
如何开展有效的评审
·评审检查表
·质量控制指标
·其他因素
评审检查表
·基于一个共识
“软件工程师未经提醒,会反复犯类似的错误"
·具体做法
- 将历史项目当中的缺陷整理分析,找出改进机会
- 整理形成检查表
- 使用检查表辅助开展个人评审
- 定期更新检查表
质量控制指标之一
·PQI(5个数据乘积)
设计质量:设计的时间应该大于编码的时间
设计评审质量:设计评审的时间应该大于设计时间的50%
代码评审质量:代码评审时间应该大于编码时间的50%
代码质量:代码的编译缺陷密度应当小于10个/千行
程序质量:代码单元测试缺陷密度应当小于5个/千行
PQI与集成测试缺陷之间的关系
关于时间日志,下述说法中比较贴切的是:
A.时间日志精确程度(例如:天、小时或者分钟)应当依据项目需要而定。
B.时间日志只能帮助我们知道每个开发活动消耗的时间。
C.时间日志是帮助工程师判断工程能力的手段之一。
D.每一个工程活动(设计、编码、UT等等)在时间日志中只能有唯一的一条记录。
正确答案:C你选对了
质量控制指标之二
评审的速度
- 评审的速度(Review Rate)是一个用以指导软件工程师开展有效评审的指标
- 高质量的评审需要软件工程师投入足够的时间进行评审
- 在PSP的实践中,代码评审速度小于 200LOC/小时,文档评审速度小于 4Page/小时
评审的其他因素
·环境
·评审时机
·个人评审和小组评审
·缺陷预防
本讲小结
·为了确保DevOps中价值顺畅流动,个人级别的软件
开发质量起着至关重要的作用;
·PSP为高质量开发提供了良好基础
·度量、估算和计划
质量管理策略
高质量策略补充
·评审目标是发现所有错误
·先做好,再做快
·无缺陷编程(The Third Way) 编程就如同是在石头上雕刻,你应该要小心谨慎。
下述各个说法中,哪一种说法描述是在缺陷日志的缺陷描述中应该出现的。
A.系统蓝屏了。
B.程序没有响应了。
C.运行结果错误。
D.循环控制变量没有初始化。
正确答案:D你选对了
第二章 个体软件过程相关推荐
- 《个体软件过程》—第8章8.2节认真制订承诺
本节书摘来自异步社区<个体软件过程>一书中的第8章8.2节认真制订承诺,作者[美]Watts S. Humphrey,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 《个体软件过程》—第1章1.1节什么是软件工程
本节书摘来自异步社区<个体软件过程>一书中的第1章1.1节什么是软件工程,作者[美]Watts S. Humphrey,更多章节内容可以访问云栖社区"异步社区"公众号查 ...
- 《个体软件过程》—第1章1.3节个体软件过程
本节书摘来自异步社区<个体软件过程>一书中的第1章1.3节个体软件过程,作者[美]Watts S. Humphrey,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 软件工程-第二章 软件过程
第二章 软件过程 目录 第二章 软件过程 2.1 软件过程概念 一.软件生命周期 二.软件过程 三.软件过程模型 四.软件过程评估 2.2 传统模型---早期提出的 一.瀑布模型 / 经典生命周期模型 ...
- 《个体软件过程》目录—导读
版权声明 个体软件过程 Introduction to the Personal Software Process, First Edition by Wattss. Humphrey Copyrig ...
- 【黑金原创教程】【TimeQuest】【第二章】TimeQuest模型角色,网表概念,时序报告...
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- 《软件开发工具》(第二章)
第二章:软件开发过程及其组织 做好软件的关键: 关键在于两个转换没有顺利地通过:首先是从用于的理解到程序员的理解,其次是从程序员的理解到程序的实现 大型软件开发中的困难表现在哪些方面: 1) 一致性的 ...
- 《计算传播学导论》读书笔记——第二章文本分析简介
<计算传播学导论>读书笔记--第二章文本分析简介 第一节 文本分析研究现状 常用文本挖掘技术 第二节 文本分析与传播学研究 (一)为什么文本挖掘技术逐渐受到传播学者的关注 (二)不同文本分 ...
- 全球首份AR报告第二章:AR的工作原理
这里写链接内容 全球首份AR报告第二章:AR的工作原理 继智能手机.平板电脑之后,虚拟现实(VR)与增强现实(AR)有潜力成为下一个重大通用计算平台. 从当前来看,更多的公司选择从VR领域进行切入,各 ...
最新文章
- DotNetNuke CSS hierarchy
- Rspamd 将收到的spam/ham转了到指定邮箱
- PHP和MySQL处理树状、分级、无限分类、分层数据的方法
- 手写自己的MyBatis框架-语句执行处理
- 递归用函数、存储过程实现的效果
- 关于RT-Thread的背景和成长
- [置顶] C语言中各种数据类型的长度 sizeof char, short, int, long, long long
- 隐藏a标签seo_SEO网站优化,新手SEO常犯的五个错误!
- python格式化字符串漏洞_Python字符串格式化的方法(两种)
- 科学计算机度转弧度,角度弧度换算器在线(70°角度转换弧度)
- DXGI抓屏优化扩展:GPU硬件编码保存文件即录像为MP4和FLV,外加麦克风+计算机声音
- 【微信云开发】简记操作:删除云开发环境
- 远程公司内网服务器【内网穿透】
- Iterator 怎么使用?有什么特点?
- java word 题目导入_Java导入导出Excel和Word
- js正则表达式检测邮箱地址是否正确
- 视频剪辑工具,图片批量添加背景,支持图片、视频背景
- 2019 校内赛 RPG的地牢猎手(bfs+优先队列)
- 视频主观质量评价和视频客观质量评价
- python100题
热门文章
- 云服务器磁盘挂载_云小课 | 磁盘容量不够用?小课教你来扩容!
- python四大高阶函数求导_4个python常用高阶函数的使用方法
- php json csv,比JSON更简单,随便记数据的CSV介绍,以及PHP解析方法-csv文件怎么打开...
- python自动化办公选择题_python自动化开发-[第一天]-练习题
- layui表格 设置默认排序_layui table对表格数据处理后的排序问题
- PyTorch教程(三):索引与切片
- 人人都能学会的 Python 多线程指南!
- Python 人脸识别就多简单,看这个就够了!
- matlab绘图 excel,『在matlab上如何导入excel表格然后画图』excle表格如何使用绘图笔...
- js 强校验 弱校验_还在手写表单校验逻辑?试试spring validation吧