hi,我是熵減,見字如面。
用ChatGPT,可以嘗試做很多的事情。
今天我們就來讓ChatGPT做為架構師,來幫我們設計一個賬號系統吧。
我的實驗過程記錄如下,與你分享。
使用者故事
首先,我們從使用者故事開始吧。
提示:我們從使用者故事開始,需要設計一個網站的賬號系統模型,其中包括賬號基礎資訊實體,郵箱驗證實體,手機號驗證實體,三方社交繫結實體,密碼安全實體,登入記錄實體。
ChatGPT反饋為:
資料模型
確認沒有問題,就可以將次轉化為一個資料模型啦。
提示:OK,將以上設計轉化為一個資料模型,並使用markdown表格的形式來描述輸出
ChatGPT輸出為:
類關係圖
模型確認後,就可以輸出類關係圖啦。
我輸入的提示為:幫我輸出類之間的關係圖,用markdown的格式,輸出符合Mermaid的指令碼程式碼
ChatGPT反饋為:
classDiagram
class Account {
+username: string
+password: string
+create_time: datetime
+update_time: datetime
}
class EmailVerification {
+email: string
+verification_code: string
+is_success: boolean
+create_time: datetime
+update_time: datetime
}
class PhoneVerification {
+phone_number: string
+verification_code: string
+is_success: boolean
+create_time: datetime
+update_time: datetime
}
class ThirdPartyBinding {
+third_party_id: string
+third_party_username: string
+create_time: datetime
+update_time: datetime
}
class PasswordSecurity {
+password_security_id: string
+password_strength: string
+password_salt: string
+create_time: datetime
+update_time: datetime
}
class LoginRecord {
+login_time: datetime
+login_ip: string
+create_time: datetime
+update_time: datetime
}
Account "1" --> "0..1" EmailVerification
Account "1" --> "0..1" PhoneVerification
Account "1" --> "0..*" ThirdPartyBinding
Account "1" --> "1" PasswordSecurity
Account "1" --> "0..*" LoginRecord
以上程式碼經過markdown渲染後的圖片為:
增加類屬性
此時,發現Account類中缺失了部分需要的屬性,那就可以讓ChatGPT類增加吧。
提示:Account實體類中,需要增加一個state狀態屬性,一個email_ver狀態屬性,一個phone_ver的狀態屬性,請將變更後的類關係圖,用markdown再次輸出
新返回的markdown程式碼經過渲染後的圖片為:
序列圖
接下來,我們試一下事務變更的序列圖吧。
我輸入的提示為:
ChatGPT返回的程式碼:
sequenceDiagram
participant PhoneVerification
participant Account
participant PhoneVerificationService
participant SMS
PhoneVerification ->> PhoneVerificationService: 驗證透過,傳送訊號
PhoneVerificationService ->> Account: 更新phone_ver屬性
PhoneVerificationService ->> SMS: 傳送驗證碼
經過渲染後的圖片為:
狀態圖
接下來,我們生產一個狀態圖看一下吧。
我輸入的提示為:Account的state狀態有:新註冊,已啟用,已登出,被鎖定等狀態,將這些狀態在Mermaid指令碼中描述出來,用markdown輸出狀態轉換的程式碼
ChatGPT返回的程式碼為:
stateDiagram
[*] --> New: 註冊
New --> Active: 郵箱/手機號驗證透過
Active --> Locked: 多次輸入錯誤密碼
Locked --> Active: 解除鎖定
Active --> Deactivated: 登出
Deactivated --> Active: 恢復
Deactivated --> Archived: 資料保留
Locked --> Archived: 資料保留
Archived --> [*]: 資料清理
經過渲染後的圖片為:
最後
今天的實驗就到這兒啦。
可見,ChatGPT在軟體開發中是一個不錯的助手,它一傢俱有了不錯的生產能力,幫我們做很多事情。
只要我們在每一個問答的回合中,能給ChatGPT正確的提示,它就可以很好的配合我們來完成任務,我就可以持續的發起並推動接下來的步驟。
接下來可以繼續嘗試啦。