สร้างแผนทางเทคนิคโดยละเอียด
ข้อมูลจําเพาะกําหนดสิ่งที่คุณต้องสร้าง แผนทางเทคนิคกําหนดวิธีที่คุณสร้าง หน่วยนี้ครอบคลุมเทคนิคการวางแผนขั้นสูงสําหรับสถานการณ์บราวน์ฟิลด์ขององค์กร
ทบทวนพื้นฐานของแผน
ไฟล์ plan.md ทําหน้าที่เป็นเอกสารการออกแบบของคุณเชื่อมช่องว่างระหว่างข้อกําหนดระดับสูงใน spec.md และงานการดําเนินงานที่เป็นรูปธรรมที่ตามมา แผนทางเทคนิคที่ครอบคลุมประกอบด้วย:
- ภาพรวมสถาปัตยกรรม: มุมมองระดับสูงของวิธีที่ส่วนประกอบโต้ตอบ
- กลุ่มเทคโนโลยีและการตัดสินใจที่สําคัญ: เอกสารที่ชัดเจนเกี่ยวกับตัวเลือกเทคโนโลยีพร้อมเหตุผล
- ลําดับการใช้งาน: ความคืบหน้าเชิงตรรกะของขั้นตอนการใช้งาน
- การตรวจสอบรัฐธรรมนูญ: ตรวจสอบอย่างชัดเจนว่าโซลูชันที่เสนอนั้นสอดคล้องกับหลักการของโครงการ
- สมมติฐานและคําถามเปิด: เอกสารสมมติฐานและคําถามที่ยังไม่ได้รับการแก้ไข
เมื่อคํานึงถึงพื้นฐานเหล่านี้ เรามาสํารวจข้อควรพิจารณาในการวางแผนขั้นสูงสําหรับการพัฒนาองค์กรกัน
การแยกข้อกังวล - ข้อมูลจําเพาะกับแผน
การแยกข้อกังวลระหว่างข้อกําหนดและแผนทางเทคนิคเป็นสิ่งสําคัญ แม้ว่าข้อมูลจําเพาะจะยังคงเสถียรและมุ่งเน้นไปที่ "อะไร" แต่แผนสามารถพัฒนาได้เมื่อคุณทดลองกับแนวทาง "อย่างไร" ที่แตกต่างกัน
สมมติว่าข้อมูลจําเพาะของคุณต้องการคุณลักษณะการอัปโหลดเอกสารสําหรับพอร์ทัลพนักงานภายใน ข้อมูลจําเพาะกําหนดความต้องการของผู้ใช้: ขีดจํากัดขนาดไฟล์ รูปแบบที่รองรับ คําติชมการอัปโหลด และการควบคุมการเข้าถึง แผนทางเทคนิคแปลข้อกําหนดเหล่านี้เป็นการตัดสินใจทางสถาปัตยกรรมที่เป็นรูปธรรม: บริการที่เก็บข้อมูล Azure ที่จะใช้ วิธีจัดโครงสร้าง API กลไกการรับรองความถูกต้องที่จะนําไปใช้ และวิธีตรวจสอบความถูกต้องของไฟล์ หากคุณตัดสินใจที่จะเปลี่ยนจากเทคโนโลยีหนึ่งไปเป็นอีกเทคโนโลยีหนึ่ง เช่น การย้ายจากที่เก็บข้อมูล Azure Blob ไปยังไฟล์ Azure คุณจะอัปเดต plan.md ในขณะที่ spec.md ยังคงไม่เปลี่ยนแปลงเป็นส่วนใหญ่ ข้อกําหนดของคุณลักษณะจะไม่เปลี่ยนแปลง มีการเปลี่ยนแปลงเฉพาะแนวทางการใช้งานเท่านั้น
ตรวจสอบโครงสร้างและเนื้อหาของแผน
แผนทางเทคนิคที่ครอบคลุมประกอบด้วยส่วนสําคัญหลายส่วนที่กําหนดแนวทางการใช้งานของคุณโดยรวม
ภาพรวมสถาปัตยกรรม
ภาพรวมสถาปัตยกรรมให้มุมมองระดับสูงของวิธีที่ส่วนประกอบโต้ตอบ สําหรับคุณสมบัติการอัปโหลดเอกสาร สถาปัตยกรรมอาจอธิบาย:
"ใช้ปลายทาง /api/documents/upload API แบ็คเอนด์ใหม่เพื่อจัดการการอัปโหลดไฟล์แบบหลายส่วน ส่วนหน้าของ React มีคอมโพเนนต์ DocumentUpload ใหม่พร้อมตัวเลือกไฟล์และตัวบ่งชี้ความคืบหน้า เมื่อผู้ใช้เลือกไฟล์ ส่วนหน้าจะตรวจสอบขนาดและประเภทก่อนอัปโหลด ส่วนหลังได้รับไฟล์ ตรวจสอบความถูกต้องอีกครั้ง จัดเก็บไว้ในที่เก็บข้อมูล Azure Blob และบันทึกข้อมูลเมตาในฐานข้อมูล SQL หลังจากอัปโหลดสําเร็จส่วนหน้าจะรีเฟรชรายการเอกสารเพื่อแสดงไฟล์ใหม่"
บทสรุปนี้สร้างโฟลว์โดยรวมโดยไม่ต้องเจาะลึกรายละเอียดระดับโค้ด ช่วยให้มั่นใจได้ว่าทุกคนเข้าใจองค์ประกอบหลักและการโต้ตอบ
กลุ่มเทคโนโลยีและการตัดสินใจที่สําคัญ
แผนนี้จัดทําเอกสารทางเลือกและเหตุผลด้านเทคโนโลยีอย่างชัดเจน ส่วนนี้ป้องกันความสับสนในอนาคตว่าเหตุใดจึงเลือกห้องสมุดหรือบริการเฉพาะ
ตัวอย่างการตัดสินใจด้านเทคโนโลยี:
- ส่วนหลัง: .NET 8 Web API พร้อม Azure.Storage.Blobs SDK v12 สําหรับการดําเนินการ Blob
- ส่วนหน้า: React 18 ด้วยคอมโพเนนต์อัปโหลดของ Ant Design เพื่อความสอดคล้องของ UI
- การรับรองความถูกต้อง: ใช้โทเค็น Microsoft Entra ID ที่มีอยู่จากบริบทการรับรองความถูกต้องของพอร์ทัล
-
ที่เก็บข้อมูล: คอนเทนเนอร์ที่เก็บข้อมูล Azure Blob ชื่อ
employee-documents. - ฐานข้อมูล: ขยายฐานข้อมูล SQL ที่มีอยู่ด้วยตาราง DocumentMetadata (คอลัมน์: Id, UserId, FileName, BlobUrl, UploadDate, FileSize)
การตัดสินใจแต่ละครั้งควรสอดคล้องกับข้อกําหนดข้อกําหนดและหลักการของรัฐธรรมนูญ หากรัฐธรรมนูญของคุณกําหนดให้ "ใช้บริการ Azure สําหรับทรัพยากรระบบคลาวด์ทั้งหมด" แผนจะเลือกที่เก็บข้อมูล Azure Blob อย่างชัดเจนและอ้างอิงหลักการนี้
ลําดับการใช้งาน
แผนสรุปลําดับของขั้นตอนการดําเนินการ แม้ว่าจะไม่ละเอียดเท่ากับรายการงานที่สร้างขึ้นในภายหลัง แต่ลําดับนี้ให้ความคืบหน้าเชิงตรรกะตั้งแต่การตั้งค่าจนเสร็จสมบูรณ์
ลําดับการใช้งานทั่วไปสําหรับคุณลักษณะการอัปโหลดเอกสาร:
- การอัปเดตสคีมาฐานข้อมูล: สร้างตาราง DocumentMetadata ด้วยดัชนีและข้อจํากัดที่เหมาะสม
- การพัฒนา API ส่วนหลัง: ใช้ปลายทาง POST /api/documents/upload พร้อมการตรวจสอบไฟล์ การรวมที่เก็บข้อมูล Blob และการคงอยู่ของข้อมูลเมตา
- การสร้างคอมโพเนนต์ส่วนหน้า: สร้างคอมโพเนนต์ DocumentUpload ด้วยการเลือกไฟล์ การตรวจสอบฝั่งไคลเอ็นต์ และการแสดงความคืบหน้าในการอัปโหลด
- บูรณาการ: ต่อสายส่วนประกอบส่วนหน้าเข้ากับ API ส่วนหลัง จัดการการตอบกลับ และอัปเดตรายการเอกสาร
- การเสริมความแข็งแกร่งด้านความปลอดภัย: ใช้การตรวจสอบความถูกต้องของประเภทไฟล์ฝั่งเซิร์ฟเวอร์ การจํากัดขนาด และการตรวจสอบความถูกต้อง
- การจัดการข้อผิดพลาด: เพิ่มข้อความแสดงข้อผิดพลาดที่ครอบคลุมสําหรับความล้มเหลวของไคลเอ็นต์และฝั่งเซิร์ฟเวอร์
- การทดสอบ: สร้างการทดสอบหน่วยสําหรับวิธีการ API และการทดสอบการผสานรวมสําหรับขั้นตอนการอัปโหลด
ลําดับนี้ช่วยให้แน่ใจว่าองค์ประกอบพื้นฐาน (สคีมาฐานข้อมูล) มีอยู่ก่อนที่จะมีการใช้ส่วนประกอบที่ขึ้นต่อกัน (API ที่เขียนไปยังฐานข้อมูล) แต่ละขั้นตอนสร้างขึ้นจากงานก่อนหน้านี้ ซึ่งช่วยลดโอกาสที่จะเกิดปัญหาการบูรณาการ
การตรวจสอบรัฐธรรมนูญ
แผนประกอบด้วยส่วนการตรวจสอบที่ตรวจสอบวิธีแก้ปัญหาที่เสนออย่างชัดเจนกับรัฐธรรมนูญ การตรวจสอบนี้ป้องกันการล่องลอยทางสถาปัตยกรรมและรับประกันความสอดคล้องกับหลักการของโครงการ
หากรัฐธรรมนูญของคุณมี "ที่เก็บข้อมูลทั้งหมดต้องใช้บริการ Azure" และ "API ต้องตรวจสอบอินพุตทั้งบนไคลเอ็นต์และเซิร์ฟเวอร์" ส่วนการตรวจสอบแผนจะยืนยัน:
- "การใช้ที่เก็บข้อมูล Azure Blob เป็นไปตามข้อกําหนดของบริการ Azure"
- "การใช้การตรวจสอบความถูกต้องทั้งในคอมโพเนนต์ React (ไคลเอ็นต์) และ .NET API (เซิร์ฟเวอร์) สอดคล้องกับหลักการรักษาความปลอดภัยในการป้องกันเชิงลึก"
- "ตรงตามข้อกําหนดการรับรองความถูกต้องของ Microsoft Entra ID โดยใช้บริบทการรับรองความถูกต้องของพอร์ทัลที่มีอยู่"
การตรวจสอบนี้ทําหน้าที่เป็นจุดตรวจ หากแผนเสนอบางสิ่งที่ละเมิดรัฐธรรมนูญ AI มักจะตั้งค่าสถานะ หรือคุณสังเกตเห็นระหว่างการตรวจสอบ การจัดการกับความขัดแย้งของรัฐธรรมนูญในขั้นตอนแผนจะป้องกันการทําซ้ําในภายหลัง
สมมติฐานและคําถามเปิด
แผนที่สร้างขึ้นมาอย่างดีจะบันทึกสมมติฐานและคําถามที่ยังไม่ได้รับการแก้ไข ความโปร่งใสนี้ช่วยให้คุณระบุปัญหาที่อาจเกิดขึ้นก่อนเริ่มการใช้งาน
ตัวอย่างสมมติฐาน:
- "สมมติว่าคอนเทนเนอร์ Azure Blob Storage 'เอกสารพนักงาน' มีอยู่และได้รับการกําหนดค่าสําหรับการเข้าถึงแบบส่วนตัว"
- "สมมติว่าฐานข้อมูล SQL ที่มีอยู่มีความจุเพียงพอสําหรับข้อมูลเมตา"
- "สมมติว่าการสแกนไวรัสของไฟล์ที่อัปโหลดอยู่นอกขอบเขตสําหรับการทําซ้ํานี้"
ตัวอย่างคําถามเปิด:
- "ผู้ดูแลระบบควรมีความสามารถในการลบเอกสารที่อัปโหลดของผู้ใช้รายอื่นหรือไม่"
- "เราจําเป็นต้องบันทึกการตรวจสอบสําหรับความพยายามในการเข้าถึงเอกสารทั้งหมดหรือไม่"
- "ระบบควรส่งการแจ้งเตือนทางอีเมลเมื่อมีการอัปโหลดเอกสารหรือไม่"
การบันทึกสมมติฐานและคําถามเหล่านี้จะช่วยป้องกันการคืบคลานของขอบเขตและทําให้มั่นใจได้ว่าผู้มีส่วนได้ส่วนเสียจะจัดการกับการตัดสินใจที่สําคัญก่อนที่จะเริ่มการเข้ารหัส หากสมมติฐานพิสูจน์ได้ว่าไม่ถูกต้องในระหว่างการใช้งาน คุณสามารถอัปเดตแผนได้ตามนั้น
สร้างแผนโดยใช้ /speckit.plan
GitHub Spec Kit สร้างแผนผ่าน /speckit.plan คําสั่งใน GitHub Copilot Chat คําสั่งนี้ใช้ทั้ง spec.md และ constitution.md เป็นอินพุตเพื่อสร้างการออกแบบทางเทคนิคที่ครอบคลุม
ก่อนเรียกใช้คําสั่ง ให้พิจารณาว่าบริบทอื่นใดที่ AI ต้องการ โค้ดเบส การตั้งค่าเทคโนโลยี และข้อจํากัดด้านโครงสร้างพื้นฐานที่มีอยู่ของคุณล้วนมีอิทธิพลต่อแผน การให้บริบทนี้ล่วงหน้าจะให้ผลลัพธ์ที่แม่นยําและนําไปใช้ได้จริงมากขึ้น
สําหรับคุณลักษณะการอัปโหลดเอกสารในสถานการณ์พอร์ทัลพนักงานภายใน คุณอาจระบุบริบทดังนี้:
"พอร์ทัลที่มีอยู่ใช้ส่วนหน้า React กับแบ็คเอนด์ .NET 8 Web API เราจําเป็นต้องรวมคุณสมบัติการอัปโหลดเข้ากับสแต็กนี้ ใช้ Azure Blob Storage สําหรับการคงอยู่ของไฟล์ ต้องมีการรับรองความถูกต้องของ Microsoft Entra ID สําหรับการดําเนินการอัปโหลดทั้งหมด พอร์ทัลมีฐานข้อมูล SQL ที่พร้อมใช้งานสําหรับการจัดเก็บข้อมูลเมตาอยู่แล้ว"
บริบทนี้จะแนะนํา AI ให้สร้างแผนที่เข้ากับสถาปัตยกรรมที่มีอยู่ของคุณได้อย่างราบรื่น แทนที่จะเสนอโซลูชันกรีนฟิลด์ที่ไม่สอดคล้องกับสแต็กปัจจุบันของคุณ
เรียกใช้คําสั่งการวางแผน
เปิด GitHub Copilot Chat ใน Visual Studio Code แล้วป้อน/speckit.plan หาก AI ขอข้อมูลเพิ่มเติม ให้ระบุบริบททางสถาปัตยกรรมของคุณ GitHub Copilot ประมวลผลข้อมูลจําเพาะ รัฐธรรมนูญ และบริบทพิเศษของคุณเพื่อสร้าง plan.md
ขั้นตอนการวางแผนอาจใช้เวลาสักครู่เนื่องจาก AI พิจารณาแนวทางต่างๆ ตรวจสอบกับรัฐธรรมนูญของคุณ และจัดโครงสร้างผลลัพธ์ให้เป็นเอกสารการออกแบบที่สอดคล้องกัน
ตรวจสอบและตรวจสอบแผน
การสร้างแผนเป็นเพียงขั้นตอนแรกเท่านั้น การตรวจสอบที่สําคัญช่วยให้มั่นใจได้ว่าแผนมีความถูกต้อง สมบูรณ์ และสอดคล้องกับความต้องการของโครงการของคุณ
ตรวจสอบความครอบคลุมของข้อกําหนดข้อมูลจําเพาะ
เปรียบเทียบแผนกับ spec.md อย่างเป็นระบบ ทุกข้อกําหนดในข้อกําหนดควรจับคู่กับแนวทางการนําไปใช้ในแผน
ตัวอย่างเช่น ถ้า spec.md ต้องการ "แสดงข้อความแสดงข้อผิดพลาดสําหรับไฟล์ที่มีขนาดเกิน 50 MB" แผนควรอธิบายว่าการตรวจสอบนี้เกิดขึ้นที่ใดและอย่างไร หากแผนละเว้นการตรวจสอบความถูกต้องนี้ แสดงว่าแผนไม่สมบูรณ์หรือข้อกําหนดต้องการคําชี้แจง
ตรวจสอบความสอดคล้องตามมาตรฐานทางเทคนิค
ตรวจสอบให้แน่ใจว่าตัวเลือกเทคโนโลยีของแผนสอดคล้องกับมาตรฐานและแนวทางปฏิบัติที่ดีที่สุดขององค์กรของคุณ หากทีมของคุณกําหนดมาตรฐานเกี่ยวกับไลบรารีหรือรูปแบบเฉพาะแผนควรสะท้อนถึงการตั้งค่าเหล่านี้
คําถามที่ต้องพิจารณา:
- สถาปัตยกรรมที่เสนอเหมาะสมกับระบบที่มีอยู่หรือไม่
- ไลบรารีที่เลือกได้รับการอนุมัติให้ใช้ในสภาพแวดล้อมของคุณหรือไม่
- ตัวเลือกเทคโนโลยีสอดคล้องกับนโยบายการรักษาความปลอดภัยและการปฏิบัติตามข้อกําหนดขององค์กรหรือไม่
- มีรูปแบบที่กําหนดไว้สําหรับฟังก์ชันการทํางานที่คล้ายคลึงกันที่ควรปฏิบัติตามหรือไม่?
สําหรับคุณลักษณะการอัปโหลดเอกสารในสภาพแวดล้อม Azure ให้ตรวจสอบว่า Azure Blob Storage เป็นบริการที่ได้รับอนุมัติ ว่าวิธีการรับรองความถูกต้องสอดคล้องกับมาตรฐานข้อมูลประจําตัวขององค์กร (เช่น การใช้ Microsoft Entra ID) และ Schema SQL ที่เสนอเป็นไปตามแบบแผนการตั้งชื่อฐานข้อมูล
ตรวจสอบการปฏิบัติตามรัฐธรรมนูญ
แผนควรมีการตรวจสอบอย่างชัดเจนว่าโซลูชันที่เสนอนั้นสอดคล้องกับข้อกําหนดของรัฐธรรมนูญ ตรวจสอบส่วนการยืนยันนี้อย่างรอบคอบเพื่อให้แน่ใจว่าไม่มีการละเมิดหลักการ
ถ้ารัฐธรรมนูญของคุณกําหนดให้ "ข้อมูลลับทั้งหมดต้องถูกเก็บไว้ใน Azure Key Vault" และแผนเสนอการจัดเก็บสตริงการเชื่อมต่อที่เก็บข้อมูล Azure ใน appsettings.jsonแสดงว่ามีข้อขัดแย้ง ควรแก้ไขแผนเพื่อดึงสตริงการเชื่อมต่อจาก Key Vault ในขณะรันไทม์
การละเมิดรัฐธรรมนูญที่ค้นพบระหว่างการวางแผนนั้นง่ายต่อการแก้ไข การละเมิดรัฐธรรมนูญที่ค้นพบระหว่างการตรวจสอบโค้ดหรือการปรับใช้การผลิตมีค่าใช้จ่ายสูงและก่อกวน
ทําซ้ําและปรับแต่งแผน
แผนมักจะต้องมีการปรับแต่งหลังจากการสร้างครั้งแรก อย่าคาดหวังความสมบูรณ์แบบในการลองครั้งแรก ใช้ความสามารถในการชี้แจงของ GitHub Copilot เพื่อปรับปรุงคุณภาพของแผน
จัดการกับความคลุมเครือและช่องว่าง
หากแผนมีข้อความที่คลุมเครือ เช่น "ใช้การจัดการข้อผิดพลาดที่เหมาะสม" ให้กดเพื่อดูข้อมูลเฉพาะ ข้อผิดพลาดใดบ้างที่อาจเกิดขึ้น ข้อผิดพลาดแต่ละข้อควรจัดการอย่างไร? ข้อมูลข้อผิดพลาดใดที่ควรบันทึกเทียบกับการแสดงต่อผู้ใช้
ใช้ GitHub Copilot Chat เพื่อถามคําถามติดตามผล: "ข้อผิดพลาดเฉพาะใดที่ปลายทางการอัปโหลดควรจัดการ" หรือ "จะเกิดอะไรขึ้นหากที่เก็บข้อมูล Azure Blob ไม่พร้อมใช้งาน" AI สามารถขยายส่วนที่คลุมเครือให้เป็นข้อกําหนดที่เป็นรูปธรรม
ตรวจสอบความถูกต้องของความเป็นไปได้ทางเทคนิค
ตรวจสอบว่าสถาปัตยกรรมที่เสนอนั้นเป็นไปได้ในทางเทคนิคตามข้อจํากัดของคุณ หากแผนเสนอให้อัปโหลดไฟล์ 50 MB แบบซิงโครนัสผ่าน Web API ที่มีการหมดเวลา 30 วินาที แสดงว่ามีปัญหาเกิดขึ้น ไฟล์ที่มีขนาดมากกว่า 50 MB อาจต้องมีการอัปโหลดเป็นกลุ่มหรือหมดเวลาที่เพิ่มขึ้น
ปรึกษากับสมาชิกในทีมที่มีความเชี่ยวชาญที่เกี่ยวข้อง ถ้าแผนเสนอการเปลี่ยนแปลง Schema ฐานข้อมูล ให้ตรวจทานกับผู้ดูแลระบบฐานข้อมูล หากต้องใช้ทรัพยากร Azure ใหม่ ให้ตรวจสอบกับวิศวกรโครงสร้างพื้นฐานว่าสามารถเตรียมใช้งานได้
พิจารณาข้อกําหนดที่ไม่ทํางาน
ตรวจสอบให้แน่ใจว่าแผนตอบสนองความต้องการที่ไม่ทํางานจากข้อกําหนด: ประสิทธิภาพ ความปลอดภัย ความสามารถในการปรับขนาด การบํารุงรักษา การเข้าถึง
สําหรับการอัปโหลดเอกสาร ให้ยืนยันว่าแผนประกอบด้วย:
- ประสิทธิภาพ: การอัปโหลดควรเสร็จสมบูรณ์เร็วแค่ไหน ปริมาณการอัปโหลดพร้อมกันสูงสุดคือเท่าใด
- ความปลอดภัย: ไฟล์ถูกสแกนหามัลแวร์อย่างไร มีการควบคุมการเข้าถึงอย่างไร บันทึกการตรวจสอบถูกเก็บไว้ที่ใด
- ความสามารถในการปรับขนาด: ระบบจัดการกับปริมาณการอัปโหลดที่เพิ่มขึ้นอย่างไร ขีดจํากัดความจุของพื้นที่จัดเก็บข้อมูลคืออะไร
- ความสามารถในการบํารุงรักษา: ไฟล์ที่อัปโหลดจะถูกล้างอย่างไรเมื่อพนักงานออกจากองค์กร
- การช่วยสําหรับการเข้าถึง: UI การอัปโหลดเป็นไปตามมาตรฐาน Web Content Accessibility Guidelines (WCAG) 2.1 AA หรือไม่
หากแผนละเว้นข้อควรพิจารณาเหล่านี้ ให้เพิ่มข้อควรพิจารณาเหล่านั้นอย่างชัดเจน ข้อกําหนดที่ไม่ทํางานมักจะกลายเป็นความคิดหลังการนําไปใช้หากไม่ได้รับการแก้ไขในการวางแผน
ประเมินความเป็นไปได้และความสมบูรณ์
ประเมินว่าแผนให้คําแนะนําที่เพียงพอสําหรับการนําไปใช้หรือไม่ แผนที่คลุมเครือเกินไป ("ใช้การอัปโหลดไฟล์") จะไม่เป็นประโยชน์ แผนที่กําหนดไว้มากเกินไป ("ใช้โค้ด 47 บรรทัดพอดี") มีข้อจํากัดมากเกินไป
ระดับรายละเอียดที่เหมาะสมให้ทิศทางที่ชัดเจนโดยไม่ลบความยืดหยุ่นทั้งหมด แผนควรตอบ:
- ส่วนประกอบใดที่ต้องสร้างหรือแก้ไข
- ส่วนประกอบเหล่านี้มีปฏิสัมพันธ์อย่างไร
- ใช้เทคโนโลยีและไลบรารีอะไรบ้าง
- ลําดับการดําเนินการคืออะไร?
- ขั้นตอนการยืนยันใดที่รับรองความถูกต้อง
หากคุณไม่สามารถจินตนาการถึงวิธีการใช้คุณลักษณะจากแผนได้ ก็ต้องมีรายละเอียดเพิ่มเติม หากแผนรู้สึกเหมือนกําลังเขียนโค้ดให้คุณ อาจละเอียดเกินไป
ระบุองค์ประกอบที่ขาดหายไป
มองหาช่องว่างในแผน การละเว้นทั่วไป ได้แก่ :
- การจัดการข้อผิดพลาด: ระบบจัดการกับความล้มเหลวของเครือข่าย ข้อผิดพลาดในการจัดเก็บ หรือปัญหาฐานข้อมูลอย่างไร
- ข้อควรพิจารณาด้านประสิทธิภาพ: มีข้อกังวลเกี่ยวกับความเร็วในการอัปโหลด ผู้ใช้พร้อมกัน หรือขีดจํากัดพื้นที่เก็บข้อมูลหรือไม่
- กลยุทธ์การทดสอบ: ต้องเขียนการทดสอบอะไรบ้างเพื่อตรวจสอบการใช้งาน
- วิธีการย้อนกลับ: หากการปรับใช้ทําให้เกิดปัญหา คุณจะย้อนกลับการเปลี่ยนแปลงได้อย่างไร
แก้ไขช่องว่างเหล่านี้โดยการแก้ไข plan.md ด้วยตนเองหรือให้บริบทเพิ่มเติมและสร้างส่วนที่เกี่ยวข้องใหม่
สร้างใหม่ด้วยบริบทที่ละเอียด
หากแผนเริ่มต้นพลาดเป้า ให้ระบุบริบทที่เฉพาะเจาะจงมากขึ้นและสร้างใหม่ ตัวอย่างเช่น หากแผนแนะนําให้ใช้ฐานข้อมูลใหม่ แต่คุณจําเป็นต้องใช้ฐานข้อมูลที่มีอยู่ ให้ชี้แจง: "ใช้ฐานข้อมูล EmployeePortal ที่มีอยู่ เพิ่มตาราง DocumentMetadata ลงในฐานข้อมูลนี้แทนที่จะสร้างตารางใหม่"
สร้างแผนใหม่ด้วยการ /speckit.plan รวมบริบทที่อัปเดตนี้ AI จะปรับแนวทางให้เหมาะสม
แก้ไขแผนด้วยตนเอง
เนื่องจาก plan.md เป็นไฟล์ Markdown คุณจึงสามารถแก้ไขได้โดยตรง หาก AI แนะนําแนวทางที่ถูกต้อง 90% แต่ต้องการการปรับเปลี่ยนเล็กน้อย ให้แก้ไขไฟล์แทนที่จะสร้างทุกอย่างใหม่
ตัวอย่างเช่น ถ้าแผนเสนอชื่อคอนเทนเนอร์ Blob เฉพาะ แต่องค์กรของคุณมีแบบแผนการตั้งชื่อ ให้อัปเดตชื่อคอนเทนเนอร์ใน plan.md โดยตรง
ทํางานร่วมกับสมาชิกในทีม
ในสภาพแวดล้อมของทีม ให้แชร์ plan.md เพื่อตรวจสอบ นักพัฒนาหรือสถาปนิกอาวุโสสามารถตรวจสอบการตัดสินใจทางสถาปัตยกรรมก่อนเริ่มการใช้งาน การตรวจสอบโดยผู้เชี่ยวชาญนี้จะตรวจจับปัญหาที่การตรวจสอบอัตโนมัติอาจพลาดไป
การตรวจสอบทีมยังสร้างความเข้าใจร่วมกัน เมื่อนักพัฒนาหลายคนทํางานกับคุณลักษณะ การทบทวนแผนร่วมกันจะช่วยให้มั่นใจได้ว่าทุกคนรู้แนวทางและสามารถระบุความขัดแย้งที่อาจเกิดขึ้นกับงานอื่นๆ ที่กําลังดําเนินอยู่ได้
จัดทําเอกสารการตัดสินใจด้านสถาปัตยกรรม
แผนควรบันทึกไม่เพียงแต่สิ่งที่คุณจะสร้าง แต่เหตุใดคุณจึงเลือกสถาปัตยกรรมที่เฉพาะเจาะจงเพื่อช่วยให้นักพัฒนาในอนาคตเข้าใจบริบทการตัดสินใจ
พิจารณาทางเลือกในการบันทึก
เมื่อคุณเลือกระหว่างวิธีการที่ใช้งานได้หลายวิธี ให้บันทึกทางเลือกที่คุณพิจารณาและเหตุผลที่คุณเลือกวิธีใดวิธีหนึ่งมากกว่าวิธีอื่น
สําหรับการจัดเก็บแฟ้ม คุณอาจพิจารณาสามวิธี:
- ที่เก็บข้อมูล Azure Blob: เลือกเพื่อความคุ้มค่า ความสามารถในการปรับขนาด และการรวมเข้ากับสภาพแวดล้อม Azure ที่มีอยู่
- ไฟล์ Azure: ถูกปฏิเสธเนื่องจากค่าใช้จ่ายที่สูงขึ้นสําหรับการจัดเก็บไฟล์ขนาดใหญ่และค่าใช้จ่ายของโปรโตคอล Server Message Block (SMB) ที่ไม่จําเป็น
- SQL Database FILESTREAM: ถูกปฏิเสธเพื่อหลีกเลี่ยงการเพิ่มขนาดและความซับซ้อนของฐานข้อมูล
เอกสารนี้ป้องกันไม่ให้นักพัฒนาในอนาคตตั้งคําถามว่าเหตุใดจึงไม่ใช้วิธีการที่ง่ายกว่า เหตุผลในการตัดสินใจจะถูกเก็บรักษาไว้แทนที่จะสูญหายไปตามกาลเวลา
บันทึกสมมติฐาน
แผนตั้งสมมติฐานเกี่ยวกับระบบ โครงสร้างพื้นฐาน และข้อจํากัดขององค์กรที่มีอยู่ ทําให้สมมติฐานเหล่านี้ชัดเจน
ตัวอย่างสมมติฐานสําหรับการอัปโหลดเอกสาร:
- คอนเทนเนอร์
employee-documentsAzure Blob Storage ถูกจัดเตรียมโดยทีมโครงสร้างพื้นฐานก่อนเริ่มการพัฒนา - การรับรองความถูกต้องของพอร์ทัลที่มีอยู่ให้โทเค็น Microsoft Entra ID ที่ผ่านการตรวจสอบแล้วซึ่งสามารถเชื่อถือได้สําหรับการระบุตัวตนของผู้ใช้
- ฐานข้อมูล SQL มีความจุเพียงพอสําหรับตารางข้อมูลเมตาอื่นโดยไม่ต้องขยายที่เก็บข้อมูล
- โครงสร้างพื้นฐานเครือข่ายรองรับการอัปโหลด HTTP ขนาด 50 MB โดยไม่มีข้อจํากัดของพร็อกซีหรือไฟร์วอลล์
หากสมมติฐานใด ๆ พิสูจน์ได้ว่าไม่ถูกต้องในระหว่างการใช้งาน คุณสามารถทบทวนแผนและปรับเปลี่ยนตามนั้นได้ สมมติฐานที่จัดทําเป็นเอกสารทําให้การวิเคราะห์ผลกระทบตรงไปตรงมาเมื่อสถานการณ์เปลี่ยนแปลง
วางแผนสําหรับวิวัฒนาการในอนาคต
พิจารณาว่าฟีเจอร์อาจพัฒนาไปอย่างไร และตรวจสอบให้แน่ใจว่าสถาปัตยกรรมของคุณรองรับส่วนขยายที่เป็นไปได้
สําหรับการอัปโหลดเอกสารข้อกําหนดในอนาคตอาจรวมถึง:
- รองรับไฟล์ประเภทอื่นนอกเหนือจาก PDF และ DOCX
- การใช้การแชร์ไฟล์ระหว่างพนักงาน
- การเพิ่มการกําหนดเวอร์ชันเอกสาร
- การเปิดใช้งานการอัปโหลดไฟล์หลายไฟล์จํานวนมาก
- การผสานรวมการสแกนไวรัส
หากสถาปัตยกรรมของคุณทําให้ส่วนขยายเหล่านี้ทําได้ยาก ให้พิจารณาว่าควรปรับการออกแบบเริ่มต้นหรือไม่ คุณไม่ได้ใช้คุณสมบัติในอนาคตในตอนนี้ แต่คุณหลีกเลี่ยงการวาดภาพตัวเองให้อยู่ในมุมที่ทําให้การเปลี่ยนแปลงในอนาคตเจ็บปวด
แบ่งปันและรักษาแผนระหว่างการดําเนินการ
แผนจะกลายเป็นข้อมูลอ้างอิงของคุณตลอดการนําไปใช้ นักพัฒนาควรปรึกษาแผนอย่างสม่ําเสมอเพื่อให้แน่ใจว่าโค้ดของตนสอดคล้องกับสถาปัตยกรรมที่จัดทําเป็นเอกสาร
แบ่งปันแผนกับผู้มีส่วนได้ส่วนเสีย
หลังจากสรุปแผนแล้ว ให้แบ่งปันกับผู้มีส่วนได้ส่วนเสียที่เกี่ยวข้องเพื่อตรวจสอบความถูกต้อง:
- ผู้จัดการผลิตภัณฑ์: ตรวจสอบว่าแผนส่งมอบข้อกําหนดข้อมูลจําเพาะทั้งหมด
- ทีมรักษาความปลอดภัย: ยืนยันว่าการควบคุมความปลอดภัยเป็นไปตามมาตรฐานขององค์กร
- ทีมโครงสร้างพื้นฐาน: ตรวจสอบให้แน่ใจว่าทรัพยากร Azure ที่เสนอสามารถเตรียมใช้งานและกําหนดค่าได้
- ทีมสถาปัตยกรรม: ตรวจสอบความสอดคล้องกับหลักการสถาปัตยกรรมองค์กร
การตรวจสอบผู้มีส่วนได้ส่วนเสียนี้จะจับปัญหาก่อนเริ่มดําเนินการ ถ้าคําติชมของทีมรักษาความปลอดภัยเผยให้เห็นว่าการรับรองความถูกต้องที่เสนอไม่เพียงพอ ให้อัปเดตแผนก่อนที่จะเขียนโค้ด
อัปเดตแผนตามต้องการ
แผนเป็นเอกสารที่มีชีวิต เมื่อคุณพบในระหว่างการใช้งานว่าวิธีการไม่ทํางานตามที่ตั้งใจไว้ ให้อัปเดตแผนเพื่อสะท้อนถึงแนวทางใหม่
หากคุณวางแผนที่จะจัดเก็บความคืบหน้าในการอัปโหลดใน localStorage ของเบราว์เซอร์ แต่พบว่าสิ่งนี้ทําให้เกิดปัญหาในโหมดการเรียกดูแบบส่วนตัว ให้อัปเดตแผนเพื่อใช้สถานะในหน่วยความจําแทน บันทึกว่าเหตุใดการเปลี่ยนแปลงจึงจําเป็นเพื่อให้เหตุผลถูกเก็บรักษาไว้
ให้ plan.md ซิงโครไนซ์กับการใช้งานจริง เมื่อแผนและรหัสแตกต่าง แผนจะสูญเสียมูลค่าเป็นเอกสารอ้างอิง
- แนวทางการรักษาความปลอดภัยตรงตามข้อกําหนดขององค์กรหรือไม่
- การออกแบบ Schema ฐานข้อมูลเป็นไปตามแบบแผนการตั้งชื่อหรือไม่
หากแผนแนะนําให้ใช้ฐานข้อมูล แต่พอร์ทัลที่มีอยู่ของคุณมีอยู่แล้ว นั่นอาจเกินความจําเป็น หากแผนเสนอเทคโนโลยีที่ทีมของคุณหลีกเลี่ยง ให้บันทึกเหตุผลหรือปรับแผน
ข้อผิดพลาดทั่วไปในการวางแผนที่ควรหลีกเลี่ยง
หลีกเลี่ยงข้อผิดพลาดทั่วไปเหล่านี้เมื่อสร้างและตรวจสอบแผน:
ข้ามขั้นตอนการวางแผน: การข้ามจากข้อกําหนดไปยังโค้ดโดยตรงโดยไม่มีแผนจะเพิ่มความเสี่ยงที่จะเกิดข้อผิดพลาดทางสถาปัตยกรรม เวลาที่ลงทุนในการวางแผนจ่ายเงินปันผลโดยป้องกันการทําซ้ํา
การยอมรับแผนโดยไม่มีการตรวจสอบ: แผนที่สร้างโดย AI เป็นจุดเริ่มต้น ไม่ใช่การออกแบบขั้นสุดท้าย ตรวจสอบอย่างมีวิจารณญาณและตรวจสอบกับบริบทเฉพาะของคุณเสมอ
การนําไปใช้อย่างจํากัดมากเกินไป: แผนควรเป็นแนวทาง ไม่ใช่กําหนดทุกรายละเอียด เว้นที่ว่างให้นักพัฒนาตัดสินใจทางยุทธวิธีที่เหมาะสมระหว่างการใช้งาน
เพิกเฉยต่อความขัดแย้งของรัฐธรรมนูญ: หากแผนละเมิดหลักการของรัฐธรรมนูญ ให้จัดการกับความขัดแย้งทันที ปรับแผนให้สอดคล้องกับหรือปรับปรุงรัฐธรรมนูญหากจําเป็นต้องแก้ไขหลักการ
ลืมอัปเดตแผน: เมื่อการใช้งานเปิดเผยข้อมูลใหม่ ให้อัปเดต plan.md แผนเก่าทําให้นักพัฒนาในอนาคตเข้าใจผิดและลดมูลค่าของเอกสารของคุณ
Summary
แผนทางเทคนิคจะเปลี่ยนข้อมูลจําเพาะของคุณให้เป็นสถาปัตยกรรมที่นําไปใช้ได้จริง สร้างแผนโดยใช้ /speckit.plan บริบทที่เหมาะสมเกี่ยวกับสแต็กเทคโนโลยีและโครงสร้างพื้นฐานของคุณ ทบทวนแผนอย่างมีวิจารณญาณเพื่อให้แน่ใจว่าครอบคลุมข้อกําหนดข้อกําหนดทั้งหมด สอดคล้องกับรัฐธรรมนูญของคุณ และให้คําแนะนําในการนําไปใช้อย่างเพียงพอ ใช้แผนที่ตรวจสอบแล้วเพื่อเป็นแนวทางในการสร้างและการใช้งานงาน ปฏิบัติต่อ plan.md เป็นเอกสารที่มีชีวิตที่พัฒนาไปพร้อมกับความเข้าใจของคุณและให้บริบทที่มีคุณค่าสําหรับวงจรชีวิตการพัฒนาทั้งหมด