幕后花絮:JMP® Live 中的软件开发 (2021-EU-PO-732)级别:初学者
Aurora Tiffany-Davis,JMP 高级软件开发人员,SAS
了解幕后故事,了解我们如何开发 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 不起作用,则知道是否有任何相关信息 |
| 你认为应该的方式,或者任何你想要的新东西 |
| 将来看看。 |
| 这种真实世界的反馈对我们来说非常有价值,而且 |
| 我们非常欢迎它。 |
| 这就是我今天要给你的所有东西,但我真的希望 |
| 您享受其余的 Discovery 体验。 感谢 |
| 你。 |
最佳峰会数据访问和操作电子海报质量和可靠性