讨论一下如何软件质量问题

http://www.jdon.com/jivejdon/thread/31311.html

原帖在上面

既然jdon是讨论软件设计方式的论坛,那么目标是为了提高软件质量。
我开个帖子想跟大家讨论一下软件质量的考核标准。

这个问题应该贴到 "设计性质论坛"。

软件质量实际就是软件的最大追求是什么:这个问题从Jdon开坛以来已经讨论非常清楚,请不明白的人静心看看以前的发言,见下面贴
http://www.jdon.com/jivejdon/thread/24333.html
[该贴被banq于2007年04月17日 15:31修改过]

讨论一下如何软件质量问题

麻烦那些没有耐心的人看清题目,明白我们讨论什么。
[该贴被Coolyu0916于2007年04月17日 16:35修改过]

什么是衡量一个软件的标准。我提出一些选项,希望大家排序一下。

正确性--程序能正确运行,得出相应结果
健壮性--能够在用户进行错的操作时不崩溃
效率--良好的客户响应
可移植性--指跨操作系统的移植,linux,unix,windows
可运行性--系统可以正常运行
兼容性--如果是for win则对98 2000等兼容,如果是web,则是浏览器的兼容
高负载能力--这个就不用解释了,多用户并发

这是我想到的,可能不完全,清大家补充。

这些标准中缺少了一个非常重要的质量标准:

灵活性:也就是拓展性和维护性。

而这个标准也是OO诞生的根本原因,如果一个程序员的思维中没有这个重要因素,而且不把它看成是软件的核心和灵魂,那么关于OO所有争论就驴头不对马嘴的讨论。

当然,对于程序员个人来说,要意识到:灵活性重要性,需要很多项目的锻炼和经验。如果没有项目经验,来讨论软件质量问题就非常可笑。
[该贴被banq于2007年04月17日 17:47修改过]

那么能给出灵活性的定义么??

就像我说每一种性质的时候都说明该点说明的特性一样做一下解释。

可维护性可以增加进去,拓展性如何体现在软件质量体系中那??

注意:本帖讨论软件质量,跟OO无关,请不要聊与本帖无关话题,版主希望不要特例。

灵活性就是能够为将来因为客户需求变化而导致软件维护修改时,能够更方便更快地完成修改和拓展。

如果最终客户改了主意,或者提出功能修改要求,我们做软件的需要花很大力气很长时间才能完成,而且一动涉及软件全身,改一下某个功能的小毛病,却引起了其他功能不正常。

或者有的软件功能实现纠缠在一起,不是作者自己就没法修改,就是他自己,过了一年,也忘记原来怎么编的,看了文档也搞不清楚,这样,新的功能就无法加到原来的软件中,这就无法拓展了。

我打个比喻,就是请来bill gates他也没办法在你乱七八糟的软件上增加新功能。

没有灵活性的软件最终可能作者自己都失去信心,跳槽或转行,这些都是过去血泪经验啊。

楼上说得非常好,可是我们看看你说的都是面对谁的那??

你提出修改的问题以及修改的难度,可是这个是对于程序员的难度,而不是面对客户的难度。

质量这个词面对的客户,我们买个冰箱说质量不好,是想说我把外形改成圆的难度很大么??我们应该是想说这个冰箱不制冷了。所以个人感觉灵活性不应当属于软件质量问题。

至于你说的灵活性问题,我们可以再开贴讨论。

>可是这个是对于程序员的难度,而不是面对客户的难度
呵呵, 程序员有难度了,客户本来要求你3天完成,你拖了一个星期才完成,客户不是也为难了?到底给不给你做项目呢?

现在的客户都是企业,企业之间都是竞争的,谁快谁就能胜出,如果一个企业因为你的软件功能修改延误了新的财务功能实现计划,不是拖客户后腿吗?

>我们应该是想说这个冰箱不制冷了
软件可不只是冰箱这样产品哦,冰箱有形状,软件看不到形状.

那就以你熟悉的冰箱为例子吧:客户说这个冰箱不制冷了,你去修,但是没修好,说里面电路复杂,或者修了一年,客户怎么办?

好了,不接你这个帖子了,不打扰你.

以最快的速度、最低的代价满足你购买时还没有预见到的需求或者是你购买后条件变化导致的新需求,这就是所谓的软件质量(之一)。想想你买软件时是否有试运行、服务期限、新版本免费升级等条款?--那当然是你所购买软件产品的重要组成部分。

有多少人愿意购买不考虑灵活性的“绝版”软件呢?

to banq
>>呵呵, 程序员有难度了,客户本来要求你3天完成,你拖了一个星期才完成,客户不是也为难了?到底给不给你做项目呢?

这属于无理取闹的要求,就像我要求软件公司2个小时以内必须给我进行更新一样,这本是不合理的。如果是软件原来的bug,升级是为了改进,这个是免费的。但是如果是需求变更会有费用问题的,我们提出的任何一项需求都会被计算成本,然后给我一份报价的。客户也会从自我成本来考虑的。

>>软件可不只是冰箱这样产品哦,冰箱有形状,软件看不到形状.
我买冰箱是为了保鲜,这是功能,要是电视也能保鲜我不需要买冰箱,我一直再说功能优先,也就是这个东西是为了实现什么功能的。软件也是,它帮助我实现了功能。banq不是说要有抽象么,所谓冰箱就是一种抽象的称呼,所谓冰箱代表了具备保鲜功能的一个设备。软件也是,crm就代表了客户关系管理的功能集合。

>>那就以你熟悉的冰箱为例子吧:客户说这个冰箱不制冷了,你去修,但是没修好,说里面电路复杂,或者修了一年,客户怎么办?
软件出现bug问题当然要求软件公司修改,这是必然。如果不能按照合同执行我们有权利追讨费用,如果造成我们损失,比如数据丢失等,我们还会要求索赔。

to zhouxu
>>以最快的速度、最低的代价满足你购买时还没有预见到的需求或者是你购买后条件变化导致的新需求,这就是所谓的软件质量(之一)。想想你买软件时是否有试运行、服务期限、新版本免费升级等条款?--那当然是你所购买软件产品的重要组成部分。
我们称之为合理的速度,就是双方互相协商,要在期限内完成项目实施,延期了我们会扣除违约金,你可以找一份合同看看,上面没有关于灵活性的规定。试运行、服务期限、新版本免费是有这种规定,但是通常不会规定在1个月内必须升级一个新的版本。如果涉及大版本升级会要求付费,付费金额双方协商解决。

>>有多少人愿意购买不考虑灵活性的“绝版”软件呢?
我们关心的是服务。合同中的条款必然是死的,如果可以允许客户不断提出新需求,软件公司就没有办法赚钱了。

不知道我上面解释的是否清楚。我大部分时间是作为客户的身份来面对厂商,我在论坛里面说得都是我觉得中国软件欠缺的问题。我这里想讨论软件质量问题就是想告诉大家客户关心的是什么。

我通常极为珍视客户提出的需求,甚至期望他们会提出更多一点,因为我们程序员缺乏的就是领域知识--通过一个客户我们可以了解一个行业。

赚钱靠的是物美价廉的产品,不能靠一单一单的。若不是为了灵活适应更多的客户,努力形成产品,我们费劲心血搞出的模型会有多大意义呢。

>>赚钱靠的是物美价廉的产品,不能靠一单一单的。若不是为了灵活适应更多的客户,努力形成产品,我们费劲心血搞出的模型会有多大意义呢。

首先不说你说的观点是否正确,我们先从产品角度来说明问题。如果你的软件是个产品,那么你希望它变更么??一旦变更就必须有人来维护它,产品成本会上升,最终你会陷入到产品不同扩展的漩涡当中。这在企业而言就是失败的产品,好的产品是能够满足大多数目标客户的要求,而不需要修改。你见过office为谁修改过么?见过oracle为谁修改过么??见过websphere为谁修改过么??消费者可以选择是否购买商品,但是一旦要求修改就必须作为项目,那价钱就不仅仅是增加一个功能的钱,而是要乘以二,乘以三。

>>我通常极为珍视客户提出的需求,甚至期望他们会提出更多一点,因为我们程序员缺乏的就是领域知识--通过一个客户我们可以了解一个行业。
解决领域知识是需要算法的,完全靠架构是解决不了问题的。因为你必须具备将业务模型转化为数学模型的能力,也就是我在http://www.jdon.com/jivejdon/thread/31338.html中强调的,必须以什么作为基础。

再说一下产品问题,是否价廉物美就一定能够成功,这是一种方法,但是并不是唯一的方法,我们打开MBA的教程,看到很多大的企业并不是靠价廉物美起家的。比如三星,一开始产品主要投放在超市、便利店等地方,但是惨淡经营,后来三星将产品从这些地方全部撤出,成立专门的专卖店,价格提高了很多,反而火了起来。从品牌价值到企业效益都有了很大提高。

to Coolyu0916
>如果你的软件是个产品,那么你希望它变更么??
当然是客户希望变更,不过这是好事,如果你的设计水平够高,那就是机会。

>最终你会陷入到产品不同扩展的漩涡当中
需要不断扩展的软件,也就意味着需求旺盛。

>你见过office为谁修改过么?见过oracle为谁修改过么??
office、oracle...呵呵,从我用以来已经记不清有多少个版本了--当然是无数的版本和补丁,如果不是为了人修改那是为了什么?

>解决领域知识是需要算法的,完全靠架构是解决不了问题的。
你又来了,你的思维好想有点问题,难道我说过“完全靠架构”这几个字吗?

关于物美价廉就不说了,你是消费者你自己明白。

楼上的,你始终是以程序员的角度去思考问题。

>>当然是客户希望变更,不过这是好事,如果你的设计水平够高,那就是机会。
你做一个产品需要调研,当推出一个版本以后需要下一个版本的时候你当然也需要去调研,问问用户还最希望得到什么版本,但是这是下一个版本的事情,不是本版本中的问题。比如一个ERP的产品,一个企业想增加收发公网邮件的功能,也许很简单,从程序员的角度是完全可以做,但是从老板来说就不能做,除非我要给所有的客户都提供收发公网邮件的功能。让我增加这个功能我会收很多钱,因为我需要人来为这个单独的功能进行维护,这是产品领域最忌讳的事情。

>>需要不断扩展的软件,也就意味着需求旺盛。
需求旺盛你不代表你要不惜一切满足客户的所有需求,合同是什么就是什么,产品里面我要考虑那些是共性,那些是特例,共性的我会添加到下个版本,特例的就不能予以考虑,除非费用让我动心。如果是项目,需求变更必须控制在可能范围内,超过了合同的内容就不能考虑,或者重新签订补充合同。


>>你又来了,你的思维好想有点问题,难道我说过“完全靠架构”这几个字吗?
你没有说过,可是有人说过,我只是希望大家不要受到影响,所以我一再强调这个问题。

>>office、oracle...呵呵,从我用以来已经记不清有多少个版本了--当然是无数的版本和补丁,如果不是为了人修改那是为了什么?
你你想想看看,是所有使用他的人都升级了那,还是单独为了某个客户而进行了升级。

>>关于物美价廉就不说了,你是消费者你自己明白。
IBM的东西说不上价廉物美吧,可是我没有办法不去选择,招标的时候都是一样的,我们公布在网上,可是国内的做不了,做了要求达不到要求。

[该贴被Coolyu0916于2007年04月18日 10:29修改过]