我们做家电产品,相对来说,软件其实并不太难,但也会出一些错误。

但软件错误往往修正起来比较快,也不会花很多钱,所以软件问题并没有被很重视。

今天谈谈我的一些思考,属个人观点,不一定对。

一、需求评审的重要性

软件出问题,我认为最大的原因是大家对需求没有搞清楚。

对软件,大家一定要明白一点,软件并不是说我们通常意义上理解的简单的一个程序,而是包括规约和相关文档。具体到家电,我们可以简单的理解为电控规格书,而电控规格书要跟产品的需求相符。

我在讲结构化思维评审时有提到,评审包括了需求评审。不能企划、领导提一个想法过来,就要匆忙去实现,这个不对。

电控吐槽变更多,其实是前端没想清楚,整个团队都有责任,企划前面没定好,评审风险没有提出等等。体系上是有欠缺的。

此外,其他专业模块出问题后,因为软件改起来成本没这么高,改起来也快,解决方案就朝软件方向去走。这又带来了新的软件变更。

通过改软件去修正,到底是不是一个好的解决方案?往往因为成本和周期问题,被认为是好的方案,然而并没有从全局去看。

二、与软件工程师共通的语言

需求大家都定好了,但是它只是一个想要的结果,具体怎么实现,只有软件工程师清楚。

这个时候问题来了,你以为你讲的很清楚,实际上软件工程师会理解为另外一个意思。

且不说绝大部分其他专业的工程师看不懂代码,即使是另外一个软件工程师去读代码,也不一定能完全读懂、不理解错写程序的软件工程师的意图。

去到软件工程师自身,时间久了再去看以前自己写的代码,如果没有多少注释,要去理清楚也要时间,还可能改错了。尤其是大型软件,涉及多个编码文件,代码量去到成千上万行时,不写好总体逻辑及注释,就会把自己看晕。

要解决这个问题,就需要找到一个共通的语言,让大家能交流。我推荐的是软件逻辑图。

其他人不需要懂代码,但能够看得懂逻辑。这样大家就能交流,去识别风险。

举个例子,表达式计算器,它的功能就是用户输入一个计算表达式,然后直接计算出结果:

非常的简单,但不懂软件的人,不知道具体是怎么实现的。如果有个软件逻辑图,那就清晰了:

这个时候,虽然我不是软件工程师,但我可以就这个逻辑图提问,比如:

合不合法具体的判断内容有哪些?

弹出错误提示后,用户点击确定,能不能实现具体报错,是哪个地方输错了?

清空按钮按下去后,光标会定位到哪里?

清空按钮后,显示框可以清空,但结果框是应该保留的,你这个逻辑图写错了。

怎么查看使用帮助?你这里没有提。

这么一问下去,其实你会发现很多问题的产生,是因为你的需求没有讲清楚,你以为软件工程师会按你的想法设计,实际上并没有。

三、良好的编码规范

遵守设计规则,写好注释,良好的编码规范,这样能减少人为失误。

平常我用C#,VB,Python,Ruby编程语言较多,各有优势。

以前我特别烦Python的缩进,喜欢Ruby的自由——我是特别热爱自由不喜欢那么多约束的人。但后来越来越觉得Python这种是比较好的,可读性好。Ruby还有个问题是完全没有类型检查,灵活但容易隐藏潜在的问题。

我们举个例子对比下,因为ruby没有强制格式要求,这个可读性就比较差,很容易写着写着就错了:

Python强制格式要求,读起来比较清晰:

还有一点是变量的命名规则,要定好,这样方便协作,也便于自己识别。

四、考虑真实环境的测试用例

我们在第4讲里提到,为了得到尽可能真实的结果,软件可靠性测试应该尽量在真实的环境下进行。

测试用例有没有根据实际去定,有没有遗漏,有没有考虑到环境应力,这是需要考虑的。

我们在开发测出来的问题,都有时间去更改。每个月我去分析、统计,这些问题更加多的是失误之类的,或者本身需求变更了,还没来得及更新之类的,按标准及文档就判不符合。

测试没测出来,产品出到市场的时候,改起来就很麻烦,即使你有OTA,你不能保证用户有联网,可以完成远程升级。

因此测试用例要考虑真实环境,比如电压、磁场、水压、水温、气温等等一系列的环境应力。

举个例子:

程序的延时,一般是一个定值。为了确认用户家真实环境下,是否有问题。用0.1MPa,0.2MPa,0.3MPa…1.2MPa步进水压去测试,监测一个周期内,这个电控程序的延时是否都能够满足。而不是只在0.25MPa标况下,测试一个点的数据。

数值怎么选才是合理的,这就涉及到对环境应力的详细研究,要搞清楚各个环节都会遇到什么应力,数值会去到多少。需要具体问题具体分析。

本文为《软件可靠性简介》培训课程中摘录的公开内容,关注微信公众号“永恒之地”,后台回复“软件可靠性”,下载培训课件。

系统性谈谈软件可靠性——第7讲:家电软件出问题的一些思考相关推荐

  1. 算法属于计算机服务还是软件,第06讲 服务器软件设计的算法和问题

    第06讲 服务器软件设计的算法和问题 本文由Richard007_lin贡献 ppt1. <计算机通信与网络编程> 计算机通信与网络编程> 第六讲 服务器软件设计的算法和问题 电子科 ...

  2. 宋华振:工业软件发展的难题与思考

    工业软件发展的难题与思考 原创 宋华振 说东道西 今天 最近1-2两年里,关于工业软件的讨论越来越多,最近也和一些业界的朋友交流过这个话题,想谈谈一些观点,请留言拍砖. 一.工业软件首要是人才问题 其 ...

  3. java内部错误2755_内部错误2755.(安装软件出问题啦)

    内部错误2755.(安装软件出问题啦) 來源:互聯網  2009-05-13 01:53:56  評論 分類: 電腦/網絡 >> 操作系統/系統故障 問題描述: 高手帮我看看,这个是出什么 ...

  4. 关于软件产品化的几点思考【转】

    关于软件产品化的几点思考 转自: 汉捷咨询 国内很多软件企业尤其是行业软件企业是从开发一.二个软件项目起家的,而且项目规模和复杂度也不大,依赖其中一两个高手,他们能够在客户适度满意的状态下成功完成项目 ...

  5. 对软件项目开发的一点思考

    今天看到同事写的一些思考,感觉还不错,真的是通过这个项目让他成长起来了. 目录 I 1 引言 1 2 概念 1 3 国内软件项目角色分析 1 4 国内项目的一般性问题 2 5 客户与项目组对需求的认知 ...

  6. 关于测试软件设计过程管理的思考

    关于测试软件设计过程管理的思考 关于测试产品软件建设过程说明 平台测试环节管理 关于平台建设初期报表统计维度的经验 关于测试产品软件建设过程说明 业务方和软件实现团队方怎么能有效的沟通,这个话题一直应 ...

  7. 用友出纳通服务器修改系统日期,用友T3软件出纳通里面如何修改账户的建账日...

    用友T3软件出纳通里面如何修改账户的建账日以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用友T3软件出纳通里面如何修改 ...

  8. 2021 年最佳开源软件出炉,你用过哪些?

    2021 年最佳开源软件出炉,你用过哪些? 转自 | OSC开源社区 本文是 InfoWorld 2021 年公布的<最佳开源软件榜单>翻译稿. InfoWorld 是一家信息技术媒体公司 ...

  9. 对云计算时代软件技术发展的若干思考和实践和软件工程技术思索 读后感

    观<对云计算时代软件技术发展的若干思考和实践>(梅宏)后感 看完这篇文章,感觉云里雾里的,头脑有点蒙了.什么是云计算?云计算有着不同的定义,作者的观点是:云计算在某种意义上,它就是一种新一 ...

最新文章

  1. python文件IO操作
  2. 随机变量X与随机变量函数Y=g(X)的概率分布
  3. 【数组】—冒泡排序选择排序---【巷子】
  4. 解决VScode自动保存时在语句后疯狂加分号
  5. batch入门教程(4)
  6. python基础6-函数的参数
  7. error processing request什么意思_从processing到Touchdesigner小教程
  8. c语言上级题目,C语言上级考试题目.doc
  9. Finereport安装
  10. 利润表模板excel_让财务人看完心动的369个Excel财务分析图表,老板都忍不住点赞...
  11. emoji粉色爱心符号_新的emoji又来袭!你们知道这些表情符号的真正含义吗?
  12. 什么是云计算管理平台
  13. 简简单单做股票读书笔记(1/8)
  14. 23----2013.07.01---Div和Span区别,Css常用属性,选择器,使用css的方式,脱离文档流,div+css布局,盒子模型,框架,js基本介绍...
  15. 【Linux】关于Linux中的权限
  16. leetcode714
  17. html 上下左右箭头按钮,css 上下左右箭头
  18. 我用Three.js创作游戏(一)
  19. 《TCP IP协议 详解》思考总结 · 三
  20. tcpdump for udp

热门文章

  1. linux查看是否开启超线程
  2. openssl 证书验证
  3. Revit模型导出fbx带标准材质
  4. 怎么运用EDIUS中的打字效果
  5. Bitwig Studio v2.4 x64 macOS+Ubuntu+WiN 音乐制作宿主软件下载
  6. android旋转木马轮播图,vue实现旋转木马轮播
  7. [整合]2012-2021全球生态遥感监测报告与数据
  8. word 常规格式排版
  9. ISP三层结构的理解(计算机网络)
  10. 基于RK3399+PID的手持稳定云台的设计与实现