幕後花絮: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 不起作用,請了解是否有任何問題 |
| 你認為應該的方式,或任何你想要的新東西 |
| 將來看看。 |
| 這種現實世界的回饋對我們來說非常有價值,而且 |
| 我們非常歡迎。 |
| 這就是我今天要給你的全部內容,但我真的希望 |
| 您將享受剩餘的 Discovery 體驗。感謝 |
| 你。 |
自動化和腳本編寫基礎資料分析與建模資料混合與清理品質和工藝工程分享和交流成果