幕後花絮: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 不起作用,則知道是否有任何相關信息 |
| 你認為應該的方式,或者任何你想要的新東西 |
| 將來看看。 |
| 這種真實世界的反饋對我們來說非常有價值,而且 |
| 我們非常歡迎它。 |
| 這就是我今天要給你的所有東西,但我真的希望 |
| 您享受其餘的探索體驗。 感謝 |
| 你。 |
最佳峰會數據訪問和操作電子海報質量和可靠性