docs(sdlc): content-sized columns in Word, trace record with test cases, PSRs presented at minuted meetings

This commit is contained in:
Thanakorn
2026-10-02 16:35:31 +07:00
parent 64b1be55d8
commit 203b541c59
139 changed files with 322 additions and 170 deletions
+10 -8
View File
@@ -155,20 +155,21 @@ export function softwareDesign() {
};
}
/** 13. Traceability Record. */
/** 13. Traceability Record — completed once the test cases exist, so it is issued with them. */
export function traceabilityRecord() {
const date = '2026-03-06';
const date = '2026-07-31';
const rows = [];
let group = '';
for (const [id, text] of CRS) {
const g = id.slice(0, 4);
if (g !== group) { group = g; const name = SCOPEGROUP(g); rows.push([`${g}: ${name}`, '', '', '', '', '', '']); }
const t = traceOf(id);
rows.push([id, text, t.sr.join(', '), t.sr.map(srTopic).join(' / '), t.un.join(', ') || '-', t.un.map(unitTopic).join(' / ') || '-', t.ev || '-']);
rows.push([id, text, t.sr.join(', '), t.sr.map(srTopic).join(' / '), t.un.join(', ') || '-', t.un.map(unitTopic).join(' / ') || '-', t.tc]);
}
const traced = CRS.map(([id]) => traceOf(id));
const withUnits = traced.filter((t) => t.un.length).length;
const byDocument = traced.filter((t) => !t.un.length).length;
const withTests = traced.filter((t) => t.tcs.length).length;
return {
dir: '2-SI Process (12 Work Product)/13.Traceability record',
name: `${CODE} Traceability Record ${bud(date)} V1.0 NoC`,
@@ -182,20 +183,21 @@ export function traceabilityRecord() {
]),
body: [
'## วัตถุประสงค์ (Objective)',
'เอกสารที่เชื่อมโยงความต้องการของลูกค้า → ความต้องการซอฟต์แวร์ → การออกแบบ (Software Unit) ณ วันที่ออกแบบระบบ เพื่อยืนยันความครบถ้วนของ Customer Requirements ก่อนเริ่มพัฒนา และลดความเสี่ยงของความต้องการที่ตกหล่น การสอบกลับไปยัง Test Case และผลการทดสอบจะเพิ่มใน Traceability Record ฉบับส่งมอบ หลังจัดทำ Test Case and Test Procedures',
'เอกสารที่เชื่อมโยงความต้องการของลูกค้า → ความต้องการซอฟต์แวร์ → การออกแบบ (Software Unit) → Test Case จัดทำพร้อม Test Case and Test Procedures เพื่อยืนยันว่าความต้องการทุกรายการมีการออกแบบและการทดสอบรองรับก่อนเริ่มทดสอบระบบ ผลการทดสอบสรุปใน Traceability Record Table ฉบับส่งมอบ',
'## Traceability Matrix',
table(['CR ID', 'CR Topic', 'SRS ID', 'SRS Topic', 'Unit ID', 'Unit Topic', 'หลักฐานอื่น (Document)'], rows),
'หมายเหตุ: ความต้องการที่เป็นเอกสาร การอบรม หรือหลักฐานด้านคุณภาพ สอบกลับไปยังเอกสารส่งมอบที่เป็นหลักฐานในคอลัมน์ "หลักฐานอื่น" แทน Software Unit',
table(['CR ID', 'CR Topic', 'SRS ID', 'SRS Topic', 'Unit ID', 'Unit Topic', 'Test Case ID'], rows),
'หมายเหตุ: ความต้องการที่เป็นเอกสาร การอบรม หรือหลักฐานด้านคุณภาพไม่มี Software Unit และ Test Case จึงยืนยันด้วยเอกสารส่งมอบตามแผน ซึ่งสรุปไว้ใน Traceability Record Table ฉบับส่งมอบ',
'## สรุปความครอบคลุม',
table(['รายการ', 'จำนวน'], [
['ความต้องการของลูกค้าทั้งหมด (CR01–CR14)', CRS.length],
['เชื่อมโยงกับความต้องการซอฟต์แวร์ (SRS)', CRS.length],
['เชื่อมโยงกับ Software Unit', withUnits],
['ยืนยันด้วยเอกสารส่งมอบ (ไม่มี Software Unit)', byDocument],
['เชื่อมโยงกับ Test Case', withTests],
['ยืนยันด้วยเอกสารส่งมอบตามแผน (ไม่มี Software Unit)', byDocument],
['ความต้องการซอฟต์แวร์ทั้งหมด (SR01–SR09)', SRS.length],
['Software Unit ทั้งหมด', UNITS.length],
], ['', 'r']),
'ความต้องการทุกรายการเชื่อมโยงกับความต้องการซอฟต์แวร์ และเชื่อมโยงกับ Software Unit หรือเอกสารส่งมอบที่เป็นหลักฐาน Test Case ของแต่ละ Software Unit จะกำหนดใน Test Case and Test Procedures (WP 6.0) ก่อนรอบทดสอบระบบ',
'ความต้องการทุกรายการเชื่อมโยงกับความต้องการซอฟต์แวร์ ความต้องการที่มี Software Unit เชื่อมโยงกับ Test Case ใน Test Case and Test Procedures (WP 6.0) ครบทุกรายการ ส่วนที่เหลือยืนยันด้วยเอกสารส่งมอบตามแผน',
].join('\n\n'),
secretary: P.NoC, reviewer: P.YaB, approver: P.SeV,
}),