TA的每日心情 | 奋斗 2024-11-8 12:09 |
---|
签到天数: 547 天 连续签到: 1 天 [LV.9]测试副司令
|
提出软键质量需求:
质量的需求是被绝对认可的,但质量在软件业的地位还不是十分坚固。人们希望开发出有质量的软件,让用户接受它,但多数软件企业到今天还不想生产出非常高的质量产品,软件的缺陷可以存在,只要不会危机到产品有效性,只要不引起客户的过多抱怨,就满足了。他们认为,如果那样会降低开发效率,延长开发周期,从而丢掉市场,或降低了投资回报等,实际情况真是那样吗? 那么软件质量在市场中的作用是什么?市场到底是怎么影响软件质量的?
市场力量对于软件质量的影响,既有正面的,也有负面的。如果软件产品质量非常糟糕,没有人愿意买它,也就是没有客户,结果就是得不到任何收入。相反,如果我们穷尽时日、耗尽人力、物力和财力去构造绝对完美的软件,那么其过长的开发周期和高昂的成本将决定该企业要么丧失市场机会,要么耗尽所有资源、无力去开拓市场、做营销活动,最终也必然退出市场。所以,置身软件行业的人们都要努力寻找一个难以把握的平衡点:产品要足够好,以至它不会在诸如评估等阶段就马上被否定;同时也不追求十全十美、精雕细琢,否则会囿于时间和金钱而无法达到目的。
前面谈过,软件越来越复杂,软件的复杂性又是软件质量(包括软件可靠性)的另一个敌人。这种复杂性,使软件存在过多的缺陷,即使我们做了很大的努力,构建大型的、让人满意的系统的唯一办法是不要持续地复杂化,必须保持对复杂性的控制力。比如Windows XP系统包含大约4千5百万行代码,这完全不是单独某个人可以理解甚至想象的。如果要想保持对它们的控制,或者说还希望哪怕有一点点可靠性的话,唯一的办法就是剔除没必要复杂的部分,而想尽办法保持对其余部分的复杂性控制。面向对象方法、对象封装技术、模块化设计、组件的构造等等就是朝这个方向努力的。
任何一个正在构建大型系统的人,天天面对的中心议题就是:如何剔除不必要的、人为的、自找的复杂部分,并控制好剩下的、无可逃避的复杂性,即去除不必要的复杂性和不得不处理必然的复杂性。可以找到一些工具,如面向对象技术和语言,帮助我们处理必然的复杂性。例如,Windows操作系统,如果现在让微软公司摈弃过去的一切,重新设计它,肯定没有现在Windows XP这么复杂,也不需要四千五百万代码行。但是,它是从DOS, Windows 3.0/3.1/3.2 到Windows 95/98/NT/2000,一步一步发展过来,复杂性可想而知。另外,作为操作系统,无论是Windows XP、Linux、IBM AIX和SUN Solaris都必须处理Unicode,必须为上百种语言提供用户接口,而且还必须兼容大量厂商生产的、难以计数的不同型号的设备。在现实世界中或市场竞争需要,我们不得不面对外界强加给我们的各种要求,这种必然的复杂性又是客观存在,我们必须通过优化组织、分析隐藏信息和模块化等手段找到办法来处理。 |
|