软件开发和维护(SDM)
数据科学家可能需要构建(或参与构建)可部署系统,用于数据分析或将数据分析结果付诸实践。为此,他们应熟悉基本的软件开发原则和实践知识。
请注意,本知识领域借鉴了CS2013的软件工程(SE)知识领域。
请注意,开发和测试将在下文中分别论述,测试是开发过程的组成部分,为了便于阅读,下文将两者分开。
范围 | 能力 |
---|---|
|
|
子领域 | |
SDM-软件设计与开发-T1、T2、E |
SDM-软件测试-T1、T2、E |
SDM-软件设计与开发
数据科学家应了解设计原则及其对模块化、可重用性和安全性等问题的影响。设计、实施和测试是软件开发中紧密结合的组成部分。在本知识领域中,为了方便阅读,我们将设计和测试能力分别列出。
知识
T1:
- 编码和设计标准。
- 与信息管理/数据库系统集成。
- 软件生命周期。
- 数据生命周期。
T2:
- 项目管理方法。
E:
- 与嵌入式、过程控制和/或通信系统集成。
技能
T1:
- 解释项目编码标准。
- 解释项目设计标准。
- 说明如何与信息管理/数据库系统集成或交互。
- 解释所有领域不同测试范例/需求的范围和类型。
- 单独实施一个符合设计规范的小型软件项目。
- 开发并完成符合设计规范的团队软件项目。
- 执行既定的设计、文档和实施标准。
- 在简单程序上执行基本的软件生命周期。
- 在简单的数据产品上执行基本的数据(科学)生命周期。
- 与信息管理/数据库系统整合或交互。
T2:
- 执行特定的项目管理方法。
- 规范和设计一个符合利益相关者要求的团队软件项目。
- 作为领导者,完成项目开发,满足利益相关方的要求。
- 实施数据科学生命周期,在软件生命周期的适当阶段建立数据驱动决策。
E:
- 与嵌入式、过程控制和/或通信系统集成或交互。
品行
T1:
- 具有协作精神和职业道德的团队成员,认识到建立在尊重、多样性和协作基础上的团队的价值。
- 遵守项目编码和设计标准的信念。
- 善于倾听、善于提出想法、善于谈判,具有协作精神和灵活性。
- 坚定地致力于以生命周期的思维方式处理数据和软件项目。
- 敏锐地认识到使用测试驱动开发的好处。
T2:
- 专业和道德领导力。遵循尊重、善于倾听、负责人等原则,领导项目完成。
- 已承诺和专业精神促进和鼓励遵守项目编码和设计标准
SDM-软件测试
数据科学家应了解在软件开发和部署过程中进行良好测试的重要性。
知识
T1:
- 测试范例/需求。
- 单元/执行。
- 集成。
- 界面/用户。
- 回归/持续。
- 系统。
- 安全。
T2:
- 程序中潜在的安全问题。
- 缓冲区和其他类型的溢出。
- 条件竞争。
- 初始化不当,包括权限选择不当。
- 未检查输入。
- 假设成功和正确。
- 未验证假设。
技能
T1:
- 定义并解释所有领域不同测试范例/需求的范围和类型。
- 为以下项目设计基本测试:
- 单元/执行。
- 集成。
T2:
- 使用或从大数据集中提取代表性数据,一边在集群上大规模运行之前现在小规模上测试算法。
- 为以下项目制定测试规范:
- 界面/用户。
- 回归测试。
- 系统。
- 安全。
- 执行以下测试(由他人构建):
- 界面/用户。
- 回归测试。
- 系统。
- 安全。
- 使用统计显著性测试评估程序结果。
- 描述软件系统可能存在的风险类型。
- 描述安全编码和防御性编码实践。
E:
- 设计、开发和执行所有领域的测试。
品行
T1:
- 敏锐地认识到并重视使用测试驱动开发的好处。
- 致力于从测试驱动的角度进行基本的软件和数据项目开发,尤其是单元/执行和集成测试。
T2:
- 致力于从测试驱动的角度进行软件和数据项目开发,特别是与安全、界面/用户、回归/持续和系统测试相关的方面。
E:
- 致力于从测试驱动开发的角度全面处理软件和数据项目。