带你读《SAS数据分析开发之道 软件质量的维度》第二章质量2.1质量的定义(三)-阿里云开发者社区

开发者社区> 人民邮电出版社> 正文

带你读《SAS数据分析开发之道 软件质量的维度》第二章质量2.1质量的定义(三)

简介: 带你读《SAS数据分析开发之道 软件质量的维度》第二章质量2.1质量的定义
+关注继续查看

一个新的质量词汇

为了对软件质量进行初步的评估,我们假设存在以下 SAS数据集 :

datasample;

lengthchar1$20char2$20;char1="IloveSAS";char2="SASlovesme";

run;

 

我们现在需要评估以下 SAS代码的质量,该代码模仿的是提取 转换 加载

(ETL)或其他软件中一个更大的数据转换模块 :

datauppersample;setsample;

char1=upcase(char1);char2=upcase(char2);

run;

 

那么,上面代码的质量是高、低还是介于两者之间呢?换句话说,我们会继续雇    佣编写该代码的 SAS从业人员,还是因他犯了低级错误而解雇他呢?这里就存在质量陷阱。考虑到 ISO和IEEE的质量定义,如果不知道软件背后的目标、需求和要求, 我们就无法判断这是一个高质量软件还是低质量的软件。

接下来,我们需要找出要求创建上述代码的经理所发来的邮件   :请将样本数据集转换成大写形式,15 分钟后我要用它进行演示。

此时,我们就能了解最终的项目需求,确定这是一个高质量的代码,因为它满足了所有的要求,而且是迅速创建完成的。唯一的功能性需求是需要大写,而且推测出唯一的性能需求是操作速度,因为经理要求迅速编写并执行代码。它并不是完美无缺的,但实现了客户指定的商业价值。

但现在假设,该经理发送了下面这封电子邮件对软件做出要求     :

请创建一个能将样本数据集中所有字符变量变成大写形式的模块。该模块在DATA   步骤中应能够被调用为宏,而且应该指定被大写化为一个参数的数据集。字符变量应该能被不断地识别和完成大写化,而无须手动搜索变量名称。

上述要求和说明规定软件要有完全一致的功能性至少用于样本数据集时是如,但实际更具动态性和复杂性。该经理要求的是一个模块化解决方案,因此,可能需要创建一个 SAS宏。而且,考虑到宏要求数据集和变量名称是动态的,模块应该能重复利用,在其他情境和后续数据集中依然能执行相同的功能。如果该小组之后需要在更大的数据集中实现多个变量的大写化——手动编码可能需要较长的时间,那么模块的重复利用将是非常有益的。

假设是后者这种比较复杂的要求,那么最初创建的转换代码可能就是低质量的。    它能满足最终的功能目标(所有的变量都是大写形式的),但无法满足性能需求——模块化、动态和可重用。第 18章会介绍能满足这些附加性能需求的SAS解决方案。代码复杂性增加,就要考虑质量特性、复杂性和开发时间三者之间的相互关系,这是    软件开发中固有的权衡分析。

 

质量维度

假设质量具体运用到软件开发领域,我们依然需要抛开软件需求,对软件进行描述,显示质量特征(性能需求)的高低程度。例如,回到原来的问题   :如果我不知道该经理发送给开发人员的这封对软件要求做出规定的邮件,那么我该如何凭空描述代码的质量呢?

如果非要说,我可能会将这个代码与有类似功能的理论上的代码相比较,然后用      “质量相对较低”来描述这个代码。更有可能的是,我会说这个代码不是“生产软件”,参照可能存在的理论性要求评估这个代码,看它是否有关键的基础架构支撑,是否有相关性,是否有多个用户或者有较长的预期使用期限。然而,使用软件质量模型最大的一个好处是不涉及质量便可讨论软件的性能。例如,我可以说这个代码缺少稳定性、   复用性及模块化——模块化是在不涉及需求和要求的情况下评估软件的。

使用软件质量模型创建的这个专用词汇有益于开发环境,因为这个派生的词汇对软件性能评估是非常重要的。只有按照明确的科技要求,使用统一的命名法,我们才能在软件中加入并评估质量。有时,我们说软件“缺乏模块化和复用性”要比简单地强调它“没有质量”更具体有效。尽管利益相关者对某些具体产品的质量维度不做要求,但他们会有一个公认的模型和词汇来讨论质量。

 

数据质量和数据产品质量

SAS文献中,我们所说的质量通常指的是数据质量,从更狭义的角度来讲,指的是数据产品的质量,如分析报告等。实际上,在数据分析开发中,质量实际表示    的不是软件或代码质量。这与传统的软件开发文献形成鲜明的对比,传统的软件开发    文献描述的是软件质量的特征以及设计和创建软件质量所使用的方法。

在传统软件开发环境中,软件本身就是终端产品,而数据分析开发环境通常将数    据产品看作是终端产品,是商业价值的来源,考虑到这一点,质量落脚点的转变也是    有所期待的。但遗憾的是,让数据质量和数据产品质量来代替代码质量,这使数据分    析开发环境无法在 SDLC 中融入性能需求。因此,在确定要求、设计、开发、测试、接受和操作环节中,代码质量都是位居数据质量之后的。

如果支撑数据产品的软件质量不过关,那么这些数据产品的质量又如何能让人信服呢?为了解释清楚这个稀松平常的悖论,我借用一个朋友的分析来进行说明,这个朋友在国防部工作时遇到了一个军衔上有三星的将军,他坚持认为SAS   生成的分析报表的一些线条(紫色不够深),只关注数据产品的质量,却毫不关心支撑数据产品的软件的质量。这个软件可靠吗,耐用吗,容易受漏洞威胁吗,能够扩展吗,如果将军因战术需要而要求轻微调整分析结果,那么该软件便于修改和改作他用吗?不,与代码质量相关的这些问题他一概不问,而只问:“你能把这个紫色加深吗?”

本书的目的不是淡化数据质量和数据产品质量的重要性,而是将代码质量和数据质量放在了同等重要的位置上,因为基础不良的好建筑是没有的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始。 数据指针:当前内存缓存区,输入数据所在位置。 PDV:Program Data Vector,在DATA步中所有涉及的变量被编程当前向量的一部分。 2. SAS编程基础 2.1 SAS逻
1488 0
SAS进阶《深入分析SAS》之数据汇总和展现
SAS进阶《深入分析SAS》之数据汇总和展现 1. 通过Print过程制作报表 proc print <data=数据集>; run; 选项: obs=修改观测序号列标签 noobs不显示观测序列号 id语句在输出中取代观测序列 var选择输出的变量 where语句选择输出的观测 总结如下: proc print data=数据集<选项&g
1164 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 KEEP 规定在数据集中保留的变量 DROP 规定在数据集中删除的变量 ARRAY 定义一个数组 RENAME
1387 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和END之间的语句 DO WHILE 重复执行直到条件为假则退出循环 DO UNTIL 重复执行直到条件为真则退出循环 DO OVER 对隐含下标
1240 0
SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集
SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集 前言:在学习完《SAS编程与商业案例》后,虽然能够接手公司的基本工作,但是为了更深入的SAS学习,也为了站在更高的一个层次上去掌握和优化公司工作,故而又咬紧牙关加紧学习《深入解析SAS》.就目前的两本书的对比,显而易见的是本书比《SAS编程…》要厚的多,再者内容更新是2015年著,最后是内容详实
1746 0
SAS进阶《深入解析SAS》之SAS数据挖掘的一般流程
SAS进阶《深入解析SAS》之SAS数据挖掘的一般流程 1. 所谓数据挖掘,是指通过对大量的数据进行选择、探索与建模,来揭示包含在数据中以前不为人所知的模式或规律,从而为商业活动或科学研究提供帮助和服务。 2. 数据挖掘重要的两个类别:有监督分析(SupervisedAnalysis),无监督分析(UnsupervisedAnalysis)。 有监督分析属于目标
1072 0
472
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载