幕后花絮:JMP® Live 中的软件开发 (2021-EU-PO-732)Aurora Tiffany-Davis,SAS JMP 高级软件开发人员
了解幕后情况,了解我们如何开发 JMP Live 软件。开发软件不仅仅是坐在键盘前编写代码。了解我们在工作“编写代码”部分之前、期间和之后使用的工具和流程。
了解我们如何:
- 了解想要什么。
- 定义成功是什么样子的。
- 编写代码。
- 发现问题(这样我们的客户就不必再发现问题了)。
- 维护软件。
自动生成的成绩单...
|
脚本
|
| 大家好,我是 Aurora Tiffany-Davis, |
| JMP Live 团队和今天我想和大家讨论一下 |
| JMP Live 团队如何开发软件。 |
| 首先,我想让你想象一下软件开发是什么样子的 |
| 就像你一样。如果你自己不是开发者,并且 |
| 你脑海中的画面可能被电视和 |
| 你看过的电影。 |
| 你可能会想象一个独自工作的古怪天才, |
| 并且开发软件的过程非常简单。他们 |
| 认真思考一个问题。他们写了一些代码 |
| 然后他们确保它能正常工作。而且很可能确实如此, |
| 因为,毕竟,它们是一个 |
| 天才。如果我们都是好莱坞所说的天才, |
| 这个过程可能对我们有用,但实际上我们只是人类, |
| 因此我们需要的不仅仅是 |
| 首先,我们并不是孤军奋战。我们 |
| 合作,我们有一个流程可以帮助我们 |
| 开发高质量的软件。我要指出的是, |
| 一个正确的软件开发流程。您的 |
| 流程在不同公司会有所不同,甚至 |
| 在公司内部。但我今天要做的是引导你们了解 |
| 如果我要开发一个新功能,我会怎么做 |
| JMP 直播。 |
| 首先,在我坐下来写代码之前,我必须 |
| 确实需要这样做。必须有真正的人 |
| 有人在 JMP Live 中发现了一些 |
| 并没有像他们想象的那样发挥作用,也就是说 |
| 一个好的说法,他们发现了一个错误,或者他们有一个 |
| 请求新功能。我们会跟踪这些问题 |
| 内部系统,所以我要做的第一件事就是去 |
| 该系统并找到一个高优先级的问题,这是一个好的 |
| 匹配我的技能,开始思考,然后开始 |
| 谈论它。接下来我要做的是尝试理解 |
| 通过与人交谈来满足需求。什么样的用户会 |
| 需要此功能吗?他们怎么样 |
| 会使用它吗?那么我会在自己的机器上运行 JMP Live, |
| 并开始研究新功能可能适合的地方 |
| 进入 JMP Live,因为已经 |
| 存在。然后我会调出代码并开始思考 |
| 通过新代码如何适应我们的代码库。 |
| 一旦我认为自己已经充分理解了这一需求,我 |
| 会进入设计阶段。这里又是我的第一个 |
| 下一步是与人交谈。我会和用户交谈 |
| JMP 内部经验丰富的专家,我会与我的 |
| 并询问,“你是否参与过类似的功能 |
| 以前做过这部分工作吗?你以前做过这部分代码吗? |
| 然后我会开始充实设计。我可能会写文章 |
| 画出图表,然后分享,这样我就可以 |
| 确保团队的其他成员通常 |
| 对方向感到满意 |
| 我要搬进来了。现在我要坐下来开始写一些 |
| 代码。为此,我将使用集成开发 |
| 环境,这是一个有很多 |
| 旨在帮助我们更好地完成工作的功能。 |
| 现在我已经写了一些代码,我的第一步是找到 |
| 我刚刚创造的问题。我只是个凡人,所以机会 |
| 我第一次尝试就写出 100% 完美代码的可能性非常小。 |
| 我的第一步是 |
| 使用静态分析。静态分析不运行代码, |
| 它看起来就像写在一张纸上 |
| 论文。可以类比一下 Microsoft Word 中的拼写检查。拼写检查 |
| 无法告诉我我是否写出了引人入胜的作品 |
| 小说,但它可以告诉我是否在某处漏掉了逗号。 |
| 静态分析对代码进行这样的操作。 |
| 现在我已经发现并解决了这些非常明显的问题,我的 |
| 下一步是寻找不太明显的问题, |
| 为此,我将使用自动化测试套件。我们有 |
| 针对我们的代码编写了广泛的测试。自动化 |
| 测试确实运行代码,或者更确切地说,它运行的是 |
| 代码,提供一定的输入,并期望一定的输出。 |
| 坐下来写下这些是非常有价值的练习 |
| 测试,因为有时当我坐下来写一个新的测试 |
| 任何功能,它迫使我真正理清我的想法 |
| 软件首先应该如何工作。 |
| 它还提供了真正重要的保障,以防止 |
| 同事将来可能会不小心破坏此功能。因此 |
| 这是找到的好方法 |
| 问题。一旦我编写并运行了这些自动化 |
| 测试,我将进行一些手动测试。我可能会运行 JMP |
| 在我的本地机器上或在我们拥有的几台服务器之一上 |
| 在办公室里四处探索,尝试一些东西,确保 |
| 它按照我的方式工作 |
| 我认为应该如此。我甚至可能会查看数据库 |
| 负责 JMP Live 的运营,并跟踪 |
| 用户、帖子、群组、评论,并确保记录 |
| 按照我期望的方式书写。 |
| 现在我谨慎乐观地认为我已经写了一些好东西 |
| 代码,我创建了一个有用的 |
| 功能。下一步是向我的同事征求意见。我会 |
| 经过同行评审。现在在 JMP Live 中,我们将 100% |
| 我们通过同行评审编写的代码,原因是 |
| 我们认为它非常有价值。 |
| 我可能错过了什么,因为我只是有点 |
| 对某事视而不见。或者可能是 |
| 我团队中的其他人可能知道我 |
| 缺乏。在评论中,评论者经常会 |
| 从练习中获得了很多价值,因为他们可能 |
| 了解一些新技术。 |
| 现在团队对我们创造的 |
| 一些好的代码,我最终会提交我的代码或将其签入 |
| 源代码存储库。 |
| 我们有一个持续构建系统,可以监视我们 |
| 提交代码,当我们这样做时,它 |
| 分析它。它会查找一些非常基本的信息,例如,文件是否 |
| 以正确的方式和正确的地点命名?它还将重新播出 |
| 静态分析,它将重新运行我们的整个自动化测试 |
| 套件。这样做是为了防止有人忘记这样做 |
| 更常见的情况是 |
| 自从上次 |
| 运行了自动化测试套件。 |
| 所以它会进行所有这些分析,当它通过时 |
| 此步骤,代码现在可供 |
| 开发团队采取 |
| 看看它。第一个注意到这一点的人是测试人员 |
| JMP Live 和 JMP 团队的专家 |
| 更广泛地说。他们是测试专业人员。这就是他们的工作 |
| 他们的整个职业生涯都致力于此,并且他们确实很擅长此道。 |
| 他们可能会重新运行自动化测试套件。他们可能会添加更多测试 |
| 到我们的套件。他们可能会手动运行 JMP Live 并四处寻找 |
| 一般来说。他们可能会在本地运行 JMP Live 并假装 |
| 作为用户,这绝对是疯狂的。 |
| 用户能做的最疯狂的事情是什么?让我们看看软件如何 |
| 对此做出回应。他们的测试非常有创意 |
| 场景。他们还可能在各种场景上运行该软件 |
| 不同的浏览器和操作系统,以确保我们的 |
| 软件灵活且强大。 |
| 一旦他们批准了这个新功能,现在 |
| 可在我们的下一个软件版本中使用。 |
| 现在让我缩小范围并向您展示整个过程。 |
| 这可真是太多步骤了。我们真的会为所有人做这些吗? |
| 我们的软件更改?信不信由你,我们确实会这样做。然而,这 |
| 过程规模很大,取决于 |
| 工作。如果我们有一个非常简单明显的错误,我们会采取步骤 |
| 但我们会很快完成。 |
| 另一方面,如果我们有一个非常复杂的新功能, |
| 在这个过程的每一步,我们都会放慢速度。 |
| 我们会花时间和精力确保 |
| 我们做对了。 |
| 现在,任何需要时间的事情都要花钱,那么为什么 |
| JMP愿意在软件质量上投入这笔钱吗? |
| 原因很简单。我们为自己的工作感到自豪, |
| 想要生产出好的产品。 |
| 下一个原因就不那么理想化了。我们知道 |
| 无论我们的 |
| 在我们的产品中,如果我们没有找到它们,我们的 |
| 顾客会这样做,这对生意不利。所以我们 |
| 希望能将其最小化。 |
| 现在没有流程可以交付 |
| 绝对完美。因此我们诚挚邀请您继续参与 |
| JMP 社区。请访问 community.jump.com 并让我们 |
| 知道 JMP Live 是否有任何功能,如果它不起作用 |
| 你认为应该如何,或者任何你想要的新事物 |
| 以便将来观看。 |
| 这种现实世界的反馈对我们来说非常有价值,而且 |
| 我们非常欢迎它。 |
| 这就是我今天要告诉你们的全部内容,但我真的希望 |
| 祝您探索之旅愉快。谢谢 |
| 你。 |
自动化和脚本基础数据分析与建模数据混合和清理质量与工艺工程分享和交流结果