这些设计应尽可能满足使用者相对重要的属性要求,并对不确定性留有适当的余量。因此,设计员真正需要的是一个多功能函数。但是我们曾经躲避过这个问题,现在我们同样要避开它。原因是这样的函数在软件设计的上下文中是不可能导出的,所以没有一个设计者试图要导出它。
但在十分有限的条件下(以后会解释),设计员在把客观现实加入到它的设计机制中时会感到很大的压力。这通常涉及到我们以前遇到过的处理过程的发展,并需要应用值函数。简单的讲就是为各属性形成一个加权平均值。例如,我们可以用V(S)来代表软件设计值,如下:
V(S)={c1 x 属性1的值}+{c2 x 属性2的值}+{c3 x 属性3的值}+…+{cn x 属性n的值} (1)
c1、c2、c3…cn为加权因数。
用从0到100这一标准范围来代表每一个属性及复合属性是很方便的。在这种情况下,强制(c1+c2+c3+…+cn=1)。(查普曼,1980年)。
为了示范值函数的应用,我们假定一个设计员想要从三个候选设计中作一个最终选择。同时我们假定对设计员的压力限于以下三个:经济性、可靠性和耐用性。三个设计的相关数据见表1.6。
X、Y、Z每个设计的图表说明了每个设计标准的估计参数值。必须注意到,我用系统运行费用每年几千英镑来反映其经济性。可靠性的评估使用实用性的百分数,也就是说,软件预期正常运行时间百分比。系统处理大量错误时的容错百分数反映其耐用性。我们首先要为每个属性建立一个值函数。
值函数----单一属性 一个值函数仅仅表示某一特殊属性不同‘量’的愿望。我们按照意愿的先后排列所有可能的属性值来构建值函数。最不希望的赋值为0,最希望的赋值100,其余的在0到100之间适当的赋值。这样我们就根据影响我们的三个标准得出了值函数,见表1.7。
函数应尽可能的体现使用者的属性值。必须指出,尽管我们以前举的是两个线性函数的例子,但是该函数并非必须是线形的。我们把最糟的结果放在水平轴线的左边,最佳的结果放在水平轴线的右边。这意味着如果按照经济性,较低的计算结果为首选,从左到右可能性逐渐增加。另两个结果从左到右安升序排列。我们现在需要把所有设计的结果作为一个整体。
值函数----多属性 我们根据经济性、可靠性、耐用性,使用表达式(1)来评估这三个设计:
V(S)={c1 x 属性1的值}+{c2 x 属性2的值}+{c3 x 属性3的值} (2)
现在只剩下给加权因数c1、c2、c3赋值了,这些值必须反映对设计员的相应压力大小。
总之,如果要使用多属性值函数作重大的决定就一定要谨慎小心。理论上讲,首先必须满足独立。只有参数选择是在任何一对独立于其他属值性的属性之间进行时这种情况才满足。例如,如果评估耐用性都为20%的两种设计,则运行费用每年25000英镑、可靠性为97%的设计优先于运行费用每年30000英镑、可靠性为99%的设计,如果两种设计的耐用性都变为15%,那么会有同样的选择。不难想象条件改变的情况。我们的例子可能很恰当。可能在许多使用者的眼里,象上面那样耐用性降低了,可靠性应该更重要了,而选择应该是相反的。
第二个困难在于加权因数的选择。我们在练习1.3中可以看到加权因数一个偶然的改变就会产生新的最佳设计方案。仅仅是设计员对压力的反应并非评估加权因数的充分机制。有必要采用更加正式的方法来得到他们。这包括向使用人员问一些假定问题,特别是如果包括大量的标准,通常会很耗时间。查普曼(1980)给出了这些方法恰当的描述。
最后的也是最重要的困难是许多重要的设计标准是很难计量的。举一个可文护性的方面例子,很难为其构思一个优先的方法,所以任何基于数字的选择机制都同样难以执行。
因此,一个设计员想使用值函数处理大量的选择工作是不可能的。更合适的是他用以使用者直觉地参数选择为基础的简单的处理技术作为一个大致的筛选来排除那些最不可能的选择。只有当设计方案的数量被减少到相当小时,才能产生最完善的评估技术。
软件工程分析与设计
查尔斯.伊斯蒂尔
伦敦大学
戈登.戴文斯
函授大学
出版:马克葛鲁.希尔书籍(联合王国)有限公司
英国伯克郡梅登海德
Selection
1.1 PROBLEM-SOLVING AND DECISION-MAKEING
It is helpful at this stage to introduce the ideas of problem solving, a structure for which was first described by Dewey (1910). The stages identified by John Dewey were: What is the problem? What are the alternatives? Which alternative is best? You should now be in a position to identify a resemblance between Dewey’s three stages and the software life cycle.
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] 下一页