购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5.2 设计目标和衡量标准应用示例

下面通过几个示例来展示一下软件设计方案的衡量标准问题。

1.程序代码示例

图1-5a、图1-5b和图1-5c三个设计方案的功能是一样的,都是要在界面上逐次输出“1”到“8”,输出结果为“12345678”。

图1-5 软件设计衡量标准示例一

但这三个方案的质量是不一样的:

● 方案a的质量最差,对输出结果的修改会导致程序代码的多处修改,例如修改输出数字范围、在输出数字间添加空格、要求每个输出数字换行等。

● 方案b和c在碰到修改场景时,质量更好一些,只需要修改一处即可。

● 与方案b相比,c的可修改性又要更好一些,因为方案c将输出范围和输出格式做了分离,修改的定位和影响范围都更加清晰。例如,如果发生了两个修改“输出范围修改为1~20”和“格式修改为数字之间加空格,形如1 2 3…20”,那么b方案需要修改两次printEight方法,而c方案是将printEight方法和PrintNumbers方法各修改一次,相比之下b更容易出现修改后遗症。(本书后面的信息隐藏思想会更好地解释这一问题。)

从美感上考虑:

● 方案a的审美最差,因为太多的冗余,让人感觉拖沓。

● 方案b和c更简洁,看起来更清爽。

● 方案b和c相比,经过分离的方案c的结构更加清晰,更具有美感。

● 方案b比c更加简洁。

所以方案b与c在审美的简洁与结构清晰两个维度上是有折中的,需要人们做选择,考虑到还有质量上的区别,人们通常选择方案c。

2.面向对象示例

以图1-6为例,三个设计方案中init方法的功能也是一样的,都是为了完成模块的初始化工作,包括自有属性(totalcount、ratio、year、point)的初始化和两个成员变量(FinancialReport、WeatherData)的初始化。

但图1-6中的这三个方案在质量和审美上也有明显的不同:

● 方案a存在多种逻辑混杂的问题,结构不清晰(不具美感),修改难定位(质量不佳)。

● 方案b和c的质量和审美都明显好于方案a。

● 方案c在b的基础上做了工作分离,所以方案c更好一些。

图1-6 软件设计衡量标准示例二

图1-6 (续)

3.复杂协作示例

图1-7中的三个不同设计方案的效用(功能)仍然是一样的,都完成了三个数据保存工作:将配置信息保存到conf ig.xml文件、将销售信息和生产信息保存到数据库。

图1-7 软件设计衡量标准示例三

图1-7 (续)

三个方案相比:

● 在质量上,图1-7a对参数设置和销售管理的设计方案可修改性明显较差,弱于图1-7b和图1-7c。图1-7b和图1-7c的质量相当,都有着较好的可修改性和灵活性。

● 图1-7b与图1-7c相比,图1-7c的审美更好,因为它符合一致性:使用了与另外2个功能一样的机制处理参数设置功能。 i4/QS0cti0ZbnGHqXEoB3UBcPtG7uv5LbKodM+t/eTJEdfQxII6rHGvXMftZ4VAB

点击中间区域
呼出菜单
上一章
目录
下一章
×