docs(sdlc): list every stakeholder in the project plan
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// 3-Other Document: Stakeholder Register, Project Charter, Traceability Record Table, Training Report, List of Evidence.
|
||||
import { P, TEAM, CODE, PROJECT_TH, COMPANY_TH, ORGANIZER_PM, RECORDER, START, END, SCOPE, CRS, TRAINING_DATE, ACCEPT_DATE, TEST_FROM, TEST_TO, BASELINE_COMMIT, ORIGIN, BACKUP, DEV_START } from './project.mjs';
|
||||
import { P, TEAM, OTHER_STAKEHOLDERS, CODE, PROJECT_TH, COMPANY_TH, ORGANIZER_PM, RECORDER, START, END, SCOPE, CRS, TRAINING_DATE, ACCEPT_DATE, TEST_FROM, TEST_TO, BASELINE_COMMIT, ORIGIN, BACKUP, DEV_START } from './project.mjs';
|
||||
import { SRS, UNITS, TEST_CASES, traceOf, srTopic, unitTopic } from './engineering.mjs';
|
||||
import { CORRECTIONS, PERIODS, MEETINGS, TASKS } from './history.mjs';
|
||||
import { bud, thLong, thRangeLong, table, bullets, numbered, daysBetween } from './lib.mjs';
|
||||
@@ -29,10 +29,7 @@ export function stakeholderRegister() {
|
||||
[4, P.ThS.th, P.ThS.id, 'Developer', 'พัฒนาระบบตามการออกแบบ ดูแลความปลอดภัย การติดตั้ง และการสำรองข้อมูล', 'R (Responsible), C (Consult)'],
|
||||
[5, P.PaNg.th, P.PaNg.id, 'QA / Tester', 'จัดทำและดำเนินการทดสอบ ตรวจสอบ Work Products และติดตามการแก้ไขข้อบกพร่อง', 'R (Responsible), C (Consult)'],
|
||||
[6, P.YaB.th, P.YaB.id, 'Document Control', 'ควบคุมรหัสเอกสาร เวอร์ชัน การอนุมัติ การจัดเก็บ และหลักฐานของโครงการ', 'R (Responsible)'],
|
||||
[7, 'หัวหน้าฝ่ายคลังสินค้าและพนักงานคลัง', '—', 'ผู้ใช้งานหลัก', 'ให้ข้อมูลกระบวนการทำงาน ทดสอบการใช้งาน และใช้งานระบบจริง', 'C (Consult), R (Review)'],
|
||||
[8, 'ฝ่ายขายและฝ่ายจัดซื้อ', '—', 'ผู้ใช้งาน', 'ให้ข้อมูลกระบวนการเอกสารขายและจัดซื้อ และทดสอบการใช้งาน', 'C (Consult)'],
|
||||
[9, 'ฝ่ายบัญชีและการเงิน', '—', 'ผู้ใช้งาน', 'ให้ข้อมูลการวางบิล รับชำระ จ่ายชำระ และการบันทึกบัญชี', 'C (Consult)'],
|
||||
[10, 'ผู้ดูแลระบบ (System Administrator)', '—', 'ผู้สนับสนุน', 'ติดตั้ง ตั้งค่า เฝ้าระวัง สำรองและกู้คืนระบบ', 'C (Consult), I (Inform)'],
|
||||
...OTHER_STAKEHOLDERS.map(([name, role, duty, engagement], i) => [7 + i, name, '—', role, duty, engagement]),
|
||||
], ['c', '', 'c', '', '', '']),
|
||||
'หมายเหตุ: รหัสระดับการมีส่วนร่วม (Engagement Level) ได้แก่ A: Approve, R: Responsible, C: Consult, I: Inform ตามแนวทาง RACI Matrix เพื่อระบุระดับการมีส่วนร่วมในแต่ละบทบาท',
|
||||
'## ช่องทางการสื่อสาร',
|
||||
@@ -40,7 +37,7 @@ export function stakeholderRegister() {
|
||||
[1, 'รายงานความก้าวหน้า (Progress Status Record)', 'ทุกงวดรายงาน', P.ApS.id, 'ทีมโครงการและ Project Sponsor'],
|
||||
[2, 'ประชุมติดตามโครงการ (Minutes of Meeting)', 'ตามจุดตรวจสอบที่กำหนดในแผนงาน', P.ApS.id, 'ผู้เกี่ยวข้องทั้งหมด'],
|
||||
[3, 'รายงานข้อบกพร่องและการแก้ไข', 'เมื่อพบข้อบกพร่อง', `${P.PaNg.id} / ${P.ThS.id}`, `${P.ApS.id} และผู้รับผิดชอบที่เกี่ยวข้อง`],
|
||||
[4, 'คำขอเปลี่ยนแปลง (Change Report)', 'เมื่อมีการร้องขอ', P.ApS.id, `${P.SeV.id} และคณะพิจารณา`],
|
||||
[4, 'คำขอเปลี่ยนแปลง (Change Report)', 'เมื่อมีการร้องขอ', P.ApS.id, `${P.SeV.id} (Project Sponsor)`],
|
||||
], ['c']),
|
||||
].join('\n\n'),
|
||||
secretary: P.ApS, reviewer: P.YaB, approver: P.SeV,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// PM work products 1–2: Statement of Work, Work Schedule, Software Project Plan, Customer Requirements.
|
||||
import { P, TEAM, CODE, PROJECT_TH, COMPANY_TH, ORGANIZER, ORGANIZER_PM, RECORDER, START, END, WPS, SCOPE, CR_GROUPS, CRS, DEV_START, TEST_FROM, TEST_TO } from './project.mjs';
|
||||
import { P, TEAM, OTHER_STAKEHOLDERS, CODE, PROJECT_TH, COMPANY_TH, ORGANIZER, ORGANIZER_PM, RECORDER, START, END, WPS, SCOPE, CR_GROUPS, CRS, DEV_START, TEST_FROM, TEST_TO } from './project.mjs';
|
||||
import { TASKS, VERIFICATION_ROUNDS, VERIFICATION_RULES } from './history.mjs';
|
||||
import { bud, thLong, thRangeLong, thShort, table, bullets, numbered, daysBetween, doc } from './lib.mjs';
|
||||
import { workProduct, head } from './format.mjs';
|
||||
@@ -205,6 +205,10 @@ export function softwareProjectPlan() {
|
||||
[5, `Document Control (${P.YaB.id})`, P.YaB.th, P.YaB.email, 'ควบคุมรหัสเอกสารและเวอร์ชัน / จัดเก็บและตรวจสอบความครบถ้วนของเอกสาร / ประสานการทบทวนและอนุมัติ / บันทึกประวัติการเปลี่ยนแปลงเอกสาร'],
|
||||
[6, `Project Sponsor (${P.SeV.id})`, P.SeV.th, P.SeV.email, 'อนุมัติขอบเขต งบประมาณ และการเปลี่ยนแปลง / ตัดสินใจเชิงกลยุทธ์ / ทดสอบการยอมรับและตรวจรับส่งมอบ / อนุมัติปิดโครงการ'],
|
||||
], ['c']),
|
||||
'### 5.2 ผู้มีส่วนได้ส่วนเสียอื่น (Other Stakeholders)',
|
||||
'ผู้มีส่วนได้ส่วนเสียนอกทีมโครงการตาม Stakeholder Register ซึ่งร่วมให้ข้อมูล ทดสอบ และรับการอบรมตามแผนงาน',
|
||||
table(['ลำดับ', 'ผู้มีส่วนได้ส่วนเสีย', 'บทบาท', 'การมีส่วนร่วมในโครงการ', 'ระดับการมีส่วนร่วม'],
|
||||
OTHER_STAKEHOLDERS.map(([name, role, duty, engagement], i) => [i + 1, name, role, duty, engagement]), ['c']),
|
||||
sec(6, 'Project Estimate'),
|
||||
'### 6.1 Size of the Software Work Products',
|
||||
table(['ลำดับ', 'Work Product', 'ปริมาณ (ประมาณการ)'], [
|
||||
@@ -279,7 +283,7 @@ export function softwareProjectPlan() {
|
||||
'แผนรองรับสำหรับกรณีงานไม่แล้วเสร็จตามกำหนด (Non-Completed Task)',
|
||||
table(['ลำดับ', 'สถานการณ์', 'สาเหตุที่พบบ่อย', 'ผลกระทบที่อาจเกิด', 'แผนรองรับเมื่อเกิดเหตุ', 'ผู้รับผิดชอบ'], [
|
||||
[1, 'งานไม่เสร็จภายในกำหนด (Due Date)', 'ประเมินเวลาผิดพลาด หรือทรัพยากรไม่เพียงพอ', 'กระทบ Timeline และกำหนดส่งมอบ', 'ประชุมด่วนเพื่อประเมินสถานะ จัดลำดับความสำคัญใหม่ ปรับแผน และแจ้งลูกค้าอย่างเป็นทางการ', P.ApS.id],
|
||||
[2, 'งานล่าช้าเพราะขาดบุคลากร', 'ลาป่วย ลาออก หรือไม่พร้อมปฏิบัติงาน', 'งานค้างสะสมและภาระงานกระจุกตัว', 'จัดทำเอกสารส่งมอบงาน ถ่ายทอดความรู้ให้ผู้ปฏิบัติแทน และขออนุมัติจัดหาผู้ช่วยเฉพาะงาน', `${P.ApS.id} / ฝ่ายบุคคล`],
|
||||
[2, 'งานล่าช้าเพราะขาดบุคลากร', 'ลาป่วย ลาออก หรือไม่พร้อมปฏิบัติงาน', 'งานค้างสะสมและภาระงานกระจุกตัว', 'จัดทำเอกสารส่งมอบงาน ถ่ายทอดความรู้ให้ผู้ปฏิบัติแทน และขออนุมัติจัดหาผู้ช่วยเฉพาะงาน', `${P.ApS.id} / ${P.SeV.id}`],
|
||||
[3, 'งานค้างเพราะรอข้อมูลจากผู้ใช้', 'ผู้ให้ข้อมูลส่งความต้องการหรือข้อมูลตั้งต้นล่าช้า', 'ไม่สามารถพัฒนาหรือทดสอบต่อได้', 'แจ้งเตือนเป็นลายลักษณ์อักษร แยกงานที่ยังไม่พร้อมออก และนัดยืนยัน Timeline ใหม่', `${P.ApS.id} / ${P.SeV.id}`],
|
||||
[4, 'งานไม่เสร็จเพราะพบข้อบกพร่องซ้ำซ้อน', 'ความซับซ้อนสูงหรือขาดการทดสอบระยะแรก', 'เกิดความล่าช้าในการพัฒนาและทดสอบ', 'จัดลำดับข้อบกพร่องตามความรุนแรง แยกงานแก้ไขออกจากงานพัฒนาใหม่ และทดสอบซ้ำ', `${P.ThS.id} / ${P.PaNg.id}`],
|
||||
[5, 'งานล่าช้าเพราะต้องแก้ความต้องการ', 'ขอบเขตเปลี่ยนหลังเริ่มงาน', 'กระทบแผนงานและสิ่งส่งมอบ', 'จัดทำ Change Report อย่างเป็นทางการ ประเมินผลกระทบ และขออนุมัติก่อนดำเนินการต่อ', `${P.ApS.id} / ${P.SeV.id}`],
|
||||
@@ -344,7 +348,7 @@ export function customerRequirements() {
|
||||
`เอกสารฉบับนี้จัดทำขึ้นเพื่อบันทึกและสรุปความต้องการของลูกค้า (Customer Requirements) ตามกระบวนการ ISO/IEC 29110 สำหรับใช้เป็นพื้นฐานในการจัดทำ Software Requirements Specification, การออกแบบระบบ, การทดสอบ และการตรวจรับ ของ${PROJECT_TH}`,
|
||||
'## ผู้มีส่วนได้ส่วนเสีย (Stakeholders)',
|
||||
table(['ลำดับ', 'ชื่อ', 'ตำแหน่ง', 'บทบาท'], [
|
||||
[1, P.SeV.th, 'ผู้บริหาร (CEO)', 'Project Sponsor อนุมัติและตัดสินใจเชิงกลยุทธ์'],
|
||||
[1, P.SeV.th, P.SeV.pos, 'Project Sponsor อนุมัติและตัดสินใจเชิงกลยุทธ์'],
|
||||
[2, P.ApS.th, 'ผู้จัดการโครงการ', 'บริหารโครงการและควบคุมการเปลี่ยนแปลง'],
|
||||
[3, P.NoC.th, 'นักวิเคราะห์ระบบ', 'เก็บและวิเคราะห์ความต้องการ จัดทำเอกสาร'],
|
||||
[4, 'หัวหน้าฝ่ายคลังสินค้าและพนักงานคลัง', 'ผู้ใช้งานหลัก', 'ให้ข้อมูลกระบวนการรับเข้า จ่ายออก โอนย้าย และตรวจนับ'],
|
||||
|
||||
@@ -124,7 +124,7 @@ export function acceptanceReport() {
|
||||
[4, 'ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง', `Correction Register ${CORRECTIONS.length} รายการ แก้ไขและตรวจสอบครบ`, 'ผ่าน'],
|
||||
[5, 'เอกสารคู่มือผู้ใช้ ผู้ดูแลระบบ และการบำรุงรักษาครบถ้วน', 'Software User Document, Product Operation Guide, Maintenance Document', 'ผ่าน'],
|
||||
[6, 'Source Code และเอกสารจัดเก็บใน Repository พร้อมชุดสำรอง', 'Project Repository, Project Repository (Backup)', 'ผ่าน'],
|
||||
[7, 'ผลการตรวจสอบ Work Products โดยผู้ตรวจสอบอิสระ', 'Verification Results รอบที่ 4', 'ผ่าน'],
|
||||
[7, 'ผลการตรวจสอบ Work Products (Verification)', 'Verification Results รอบที่ 4', 'ผ่าน'],
|
||||
], ['c', '', '', 'c']),
|
||||
'## สรุปผลการตรวจรับ',
|
||||
table(['รายการ', 'ผลสรุป'], [
|
||||
|
||||
@@ -32,7 +32,7 @@ export function softwareRequirements() {
|
||||
'เพื่อแปลงความต้องการของลูกค้าที่ได้รับอนุมัติแล้วให้เป็นความต้องการเชิงเทคนิคของซอฟต์แวร์ ครอบคลุมมาตรฐาน โครงสร้าง ส่วนประกอบ ความสัมพันธ์ ประสิทธิภาพ ส่วนเชื่อมต่อ ความปลอดภัย ฐานข้อมูล และการจัดการข้อผิดพลาด เพื่อใช้เป็นเอกสารอ้างอิงหลักในการออกแบบระบบ พัฒนา และทดสอบ',
|
||||
'## ผู้มีส่วนได้ส่วนเสีย (Stakeholders)',
|
||||
table(['ลำดับ', 'ชื่อ', 'หน่วยงาน/ตำแหน่ง', 'บทบาท'], [
|
||||
[1, P.SeV.th, 'ผู้บริหาร (CEO)', 'Project Sponsor อนุมัติความต้องการ'],
|
||||
[1, P.SeV.th, P.SeV.pos, 'Project Sponsor อนุมัติความต้องการ'],
|
||||
[2, P.ApS.th, 'ผู้จัดการโครงการ', 'บริหารจัดการโครงการ'],
|
||||
[3, P.NoC.th, 'นักวิเคราะห์ระบบ', 'จัดทำและควบคุมความต้องการซอฟต์แวร์'],
|
||||
[4, P.ThS.th, 'นักพัฒนาระบบ', 'พัฒนาระบบตามความต้องการ'],
|
||||
|
||||
@@ -28,6 +28,13 @@ export const P = {
|
||||
YaB: { id: 'YaB', th: 'คุณเยาวลักษณ์ บางชมภู', en: 'Yaowalak Bangchomphoo', role: 'Document Control', pos: 'เจ้าหน้าที่ควบคุมเอกสาร', email: 'yaowalak.b@brn.co.th' },
|
||||
};
|
||||
export const TEAM = [P.SeV, P.ApS, P.NoC, P.ThS, P.PaNg, P.YaB];
|
||||
/** Stakeholders outside the project team: [name, role, responsibility, engagement]. */
|
||||
export const OTHER_STAKEHOLDERS = [
|
||||
['หัวหน้าฝ่ายคลังสินค้าและพนักงานคลัง', 'ผู้ใช้งานหลัก', 'ให้ข้อมูลกระบวนการทำงาน ทดสอบการใช้งาน และใช้งานระบบจริง', 'C (Consult), R (Review)'],
|
||||
['ฝ่ายขายและฝ่ายจัดซื้อ', 'ผู้ใช้งาน', 'ให้ข้อมูลกระบวนการเอกสารขายและจัดซื้อ และทดสอบการใช้งาน', 'C (Consult)'],
|
||||
['ฝ่ายบัญชีและการเงิน', 'ผู้ใช้งาน', 'ให้ข้อมูลการวางบิล รับชำระ จ่ายชำระ และการบันทึกบัญชี', 'C (Consult)'],
|
||||
['ผู้ดูแลระบบ (System Administrator)', 'ผู้สนับสนุน', 'ติดตั้ง ตั้งค่า เฝ้าระวัง สำรองและกู้คืนระบบ', 'C (Consult), I (Inform)'],
|
||||
];
|
||||
export const ORGANIZER = `${P.ApS.th} (Project Manager) , ${P.NoC.th} (System Analyst)`;
|
||||
export const ORGANIZER_PM = `${P.ApS.th} (Project Manager)`;
|
||||
export const RECORDER = `${P.YaB.th} (Document Control)`;
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user