SAS 从业人员同时也是软件开发人员!
SAS 将关注的重点放在数据质量上,而不再将软件质量看作是工作的重心。无论是在图书、白皮书、技术文档还是公司发布的职位描述中,SAS所提到的质量大都是指数据或数据产品的质量。
对数据质量的关注以及对传统软件开发工作重点的转移并不是没有道理的,数据分析的发展就是软件的发展,但最终的商业价值并不是来自软件产品本身,而是来自附属的数据产品。为了追求数据质量,数据分析开发环境将会重点向软件功能性需求方面倾斜,而不是只满足软件的性能需求。当SAS 文献描述性能最佳操作时,它通常只提到如何使 SAS软件更加迅速有效,而不会提到软件质量的其他方面。
但是,软件的可靠性、可扩展性、安全性、可维护性或模块化,又或是其他软件质量特征该如何去评估呢?对于所有的SAS 从业人员来讲,包括开发人员、生物统计人员、计量经济学家、研究人员、学生、项目经理、市场分析人员、数据科学家以及其他相关人员等,本书向他们展示了一个软件质量模型。该质量模型是由国际标准化组织(ISO)发布的,旨在促进软件质量的评估和发展。
非技术性的利益相关者,包括项目经理、职能经理、客户、赞助商以及企业分析人员将学习如何识别质量纳入的价值以及质量排除所面临的风险。从对质量更加全面了解的角度来讲,SAS软件质量归根结底相当于 SAS数据质量。
为什么不断地追求SAS软件质量?因为 SAS 从业人员无论背负着什么样的头衔,他们归根结底都是软件开发人员,应该从行业标准及最佳操作中获利。软件质量能够 而且也应该在任何环境中获得较大的发展。
本书的第一个目标是在ISO软件产品质量模型框架中描述并展示 SAS软件的发展。该模型界定了《系统和软件质量要求与评估(SQuaRE)》系列(ISO/IEC 25000:2014)软件质量的特征。通过本书中所介绍的 15个相互联系的软件质量维度,读者将能够理解、评估软件质量,而且更重要的是,能够重视软件质量。
第二个目标是说明软件开发生命周期(SDLC,SoftwareDevelopmentLifeCycle)在提升软件质量方面的重要性以及作用。因此,质量维度是以持久性原则的形式呈现 的,它们能影响软件的规划、设计、开发、测试、校验、接收、部署、操作以及维护。SDLC 是在一个基于需求的框架中展示的,在基于需求的框架中,终端企业需求会带动大量的科技需求,科技需求进而推动软件质量的纳入和排除。需求首先为软件设计 提供基础,但最终也是评估软件质量的参考标准。
第三个目标是在风险管理框架中展示SAS 软件开发。风险管理框架能识别劣质软件对商业价值构成的威胁。在 SAS 领域,劣质数据被看作是对商业价值的一个威胁, 而劣质编码同样能造成项目的失败。本书并不主张将软件质量的每一个维度融合到所 有软件中,我们的目标是实现结构的形式化,通过这一形式化的结构来识别威胁和漏 洞以及它们对软件的威胁。因此,当我们理解了性能需求纳入的优势及其排除的危险 后,才能正确实施性能需求。
本书的目标读者是专业的 SAS从业人员,他们借助 SAS 应用程序使用BaseSAS语言编写软件,建议但不强制要求读者熟练掌握BaseSAS,包括 SAS 宏语言。
其他能够从本书中获益的利益相关者包括赞助商、客户、经理、敏捷软件开发团队成员、软件测试人员以及任何想理解或提高软件性能的人员。从总体来讲,非技术性的利益相关者对SAS 语言或软件开发的理解有限,但也会产生一些能够推动软件项目发展的需求。这些利益相关人员能够从软件特征的引入中获益,而软件特征应该被用于界定软件需求、评估软件性能。
ISO软件产品质量模型与行业、团队规模、组织结构(如职能化组织、项目化组织、矩阵组织)、开发方法[如 Agile(敏捷)、Scrum、Lean、ExtremeProgramming(极限编程)、Waterfall]以及开发人员角色(如开发人员、终端用户开发人员)无关。使用 SAS 客户机工作的研究人员从本书中学习到的内容和一般开发人员获得的见解一样多,这些开发人员可能工作于高度结构化的环境,该环境中的开发、测试和生产服 务器都是独立的。
尽管本书展示的大部分BaseSAS代码可在SAS 界面和计算机运行环境之间移植,但一些输入 / 输出(I/O)和其他系统函数、选项及参数都是操作系统(OS)或界面专用的。本书所使用的编码范例均已通过 SASWindows显示管理器、SASWindows企业向导及 SASUniversityEdition测试。这些应用程序之间的功能性差异会在本书中体现出来,并且会在第10章“可移植性”中讲述。
尽管本书包括几百个 SAS 代码范例,展示了质量特征的有效执行及评估,但本书不同于其他 SAS文献,因为它并非能够代表SAS 软件最佳实践的汇编,它呈现的是SAS代码在支持SDLC 中软件产品质量模型方面的应用。因此,代码范例显示的是软件性能,而不是软件的功能性。
大部分软件图书的组织架构都是围绕着功能性展开——自上而下的行文方式,首先介绍一个功能性目标,然后罗列各种能实现该目标的方法 ;第二种是自下而上的方式,主要介绍某个具体的 SAS 函数、程序及指令的用途和说明。由于本书采用的是ISO 软件产品质量模型,而且重点是介绍性能而不是功能性,所以它没有沿用SAS文献传统的以功能性为中心的结构。相反,全书都是围绕一个动态或静态的性能特征——软件质量的单一维度。每章列举的编码都是比较多的,每实现一个质量目标,我们都会举一个例子,而且还会介绍相关的质量特征以便后期参考和阅读。
本书共包含 3个部分,18章内容。
第一部分——概览。本部分包含 3章,介绍了质量的概念、ISO软件产品质量模型、SDLC、风险管理、Agile和 Waterfall 开发方法、异常处理以及其他比较关键的信息和概念。即便是那些迫不及待想了解后续内容的读者,也应该浏览本部分内容,简单 了解一下数据分析开发环境中软件质量的来龙去脉。
第二部分——动态性能。本部分共包含 9章,介绍了动态性能要求——演示、评估,并通过软件执行验证过的软件质量属性。例如,通过运行编码及评估运行时间和系统资源(如CPU和内存使用)演示软件的效率,包括“可靠性”“可恢复性”“稳健性” “运行效率”“效率”“可扩展性”“可移植性”“安全性”“自动化”9章。
第三部分——静态性能。本部分共包含 6 章,介绍了静态性能要求——通过编码检验而不是运行来评估的软件质量属性。例如,打开并检验编码之后,我们才能确定软件的模块化程度,可以通过人工审校和自动化测试软件来检验,包括“可维护性”“模块化”“可读性”“可测试性”“稳定性”“复用性”6章。
图书结构的标准化便于实现 SAS 编码的可读性,规定图书的格式并不是为了展示最佳操作,而是为了实现标准化。所有使用的代码范例都用小写的字母,但本书中引用的代码还是遵循以下惯例。
■ SAS库用的是大写字母,如 WORK库或者PERM库内的PERM.Burrito数据集。
■ 出现在句子中的SAS数据集,如 Chimichanga数据集或 WORK.Tacos_are_forever数据集。
■ SAS保留字—— 包括计算机程序指令、函数及程序名称都是大写的, 如UPCASE函数或 MEANS程序。
■ DATA步骤也是使用大写字母,例如,若SQL程序被执行,则可删除 DATA步骤。
■ DATA步骤或 SAS程序内使用的变量都用大写字母,如 CHARI变量丢失。
■ SAS用户自定义的格式使用大写字母,如 MONTHS格式。
■ SAS宏指令使用大写字母,且指令前面带有 %,如 %LOCKITDOWN宏指令防止文件访问冲突。
■ SAS宏指令变量使用大写字母,如 &DSN 宏指令变量通常指代数据集名称。
■ 传送到宏指令的 SAS参数使用大写字母,如%GOBIG宏指令调用的DSN参数。