วันพฤหัสบดีที่ 4 ตุลาคม พ.ศ. 2555

ตอบคำถาม Chapter 3-4


คำถามบทเรียนที่ 3-4



1. จงสร้างปผนภูมิแกนต์ (Gantt Chart)




2. จงสร้างเครือข่าย PERT





3. โครงการนี้ใช้เวลาในการดำเนินงานกี่วัน


จากการพิจารณเครือข่าย PERT ในข้อที่ 2 สามารถนำมาคำนวณเป็นสายงานได้ 3 สายดังนี้
สายงานที่ 1 คือ P-Q-R-S = 31 วัน
สายงานที่ 2 คือ P-T-Z-S = 32 วัน
สายงานที่ 3 คือ X-Y-Z-S = 34 วัน
เนื่องจากโจทย์ไม่ได้กำหนดการเร่งระยะเวลาการดำเนินโครงการ ทำให้โครงการนี้มีระยะเวลา
การดำเนินงาน 34 วัน

4. จงหาเส้นทางวิกฤตพร้อมระบุกิจกรรมวิกฤต


จากข้อที่ 3 สายงานวิกฤตคือ สายงานที่ 3 ใช้ระยะเวลาดำเนินงานสูงสุด 34 วัน

ตอบคำถาม Chapter 2


1. จงเปรียบเทียบจุดเด่นจุดด้อยของระเบียบวิธีปฎิบัติของวิศวกรรมซอฟต์แวร์ ระหว่างวิธีเชิงโครงสร้าง (Structured Approach) และวิธีเชิงวัตถุ (Object-Oriented Approach)วิธีเชิงโครงสร้าง (Structured Approach)จุดเด่น

- เป็นวิธีการวิเคราะห์ออกแบบเชิงโครงสร้าง
- มีการแบ่งระบบออกเป็นส่วนย่อยๆ
- มีลักษณะเป็นลำดับชั้น

 จุดด้อย 

- การวิเคราะห์และรวบรวมข้อมูลมีการแยกออกเป็นส่วนๆ ทำให้ใช้เวลานาน
- ต้นทุนสูง
- เนื่องจากใช้เวลานาน ทำให้เสี่ยงต่อการเปลี่ยนแปลงความต้องการของผู้ใช้
วิธีเชิงวัตถุ

วิธีเชิงวัตถุ (Object-Oriented Approach)


จุดเด่น

- การวิเคราะห์และออกแบบทำได้อย่างรวดเร็ว
- รองรับระบบงานที่มีความซับซ้อนสูง
- ทันต่อการเปลี่ยนแปลงความต้องการของผู้ใช้

จุดด้อย 

- ต้องใช้ผู้ที่มีความสามารถความเชี่ยวชาญในการเขียนโปรแกรมสูง

2. Waterfall model แตกต่างจาก Spiral model อย่างไร จงอธิบายตามความเข้าใจของนักศึกษา


Spiral Model ถูกพัฒนามากจากโครงสร้างพื้นฐานของ Waterfall Model ที่มีการแบ่งแยกขั้นตอน เช่น Concept OfOperation phase, Software Requirements phase, Design phase, Coding phase, Integrationphase, Implement phase เป็นต้น เนื่องจากใน Waterfall model สามารถ ส่งผลลัพธ์ที่ได้ป้อมกลับไปยังขั้นตอนก่อนหน้านั้นโดยที่ไม่ต้องมีการแก้ไขทุกขั้นตอนใหม่หมด แต่ Waterfall Model ยังไม่มีส่วนไปจะมีความสำเร็จที่เป็นไปได้มาน้อยขนาดไหน ฉะนั้น การใช้ Waterfall Model ในแต่ละขั้นตอนจะเกิดการ Feedback บ่อยครั้ง Spiral Model จึงถูกพันกับความเสี่ยงและความเป็นไปได้ที่เกิดขึ้นตลอดจนหาแนวทางแก้ไขเมื่อเกิดข้อผิดพลาด

3. ในฐานะที่นักศึกษาเป็นนักวิศวกรรมซอฟต์แวร์ ควรจะเลือกพิจารณาใช้แบบจำลองกระบวนการผลิตซอฟต์แวร์ (Software Process Model) แบบใด เพราะเหตูใด จงให้เหตุผลประกอบการเลือก

Increment delivery ซึ่งเป็นแบบจำลองการผลิตซอฟต์แวร์ที่มีการพัฒนาโดยแบ่งโปรแกรมออกเป็นส่วนย่อยๆ หลายๆ ส่วน ซึ่งจะทำการพัฒนาเพิ่มเติมไปเรื่อยๆ ที่ละชุด เมื่อพัฒนาจนเสร็จแล้ว จึงนำมารวมกันเป็นระบบใหญ่ แล้วทำการทดสอบระบบทั้งระบบ

เหตุผล

เพราะแบบจำลองนี้ต้องมีการวางแผนโครงสร้างทั้งหมด และกำหนดความต้องการทั้งหมดของระบบจนเสร็จสิ้นก่อน ถึงจะเริ่มพัฒนาระบบทำให้มีการวางแผนก่อนทำงานจะได้ทำงานโดยไม่แก้ซ้ำไปซ้ำมาเมื่อความต้องการเพิ่ม จึงทำให้เราสามารถเขียนโปรแกรมได้ตามแบบแผนโดยทีละขั้นตอน

ตอบคำถาม Chapter 1


1.1) จงยกตัวอย่างของผลกระทบของซอฟแวร์ ทั้งด้านบวกและด้านลบที่มีผลต่อสังคม

ผลในทางบวก
1.ช่วยส่งเสริมความสะดวกสบายของมนุษย์

2.ช่วยทำให้การผลิตในอุตสาหกรรมดีขึ้น มีคุณภาพมีมาตรฐานซึ่งในปัจจุบันใช้เครื่องจักรทำงานอย่างอัตโนมัติ สามารถทำงานได้ตลอด 24ชั่วโม

3.ช่วยส่งเสริมให้เกิดการค้นคว้าวิจัยสิ่งใหม่

4.ช่วยส่งเสริมสุขภาพและความเป็นอยู่ให้ดีขึ้นด้านการแพทย์เจริญก้าวหน้าขึ้นมาก 

5.ช่วยส่งเสริมสติปัญญาของมนุษย์ คอมพิวเตอร์มีจุดเด่นที่สามารถทำงานได้รวดเร็ว มีความแม่นยำ สามารถเก็บข้อมูลต่าง ๆ ได้มาก การแก้ปัญหาที่ ซับซ้อนบางอย่างกระทำได้ดี และรวดเร็ว

6.เทคโนโลยีสารสนเทศช่วยให้เศรษฐกิจเจริญรุ่งเรือง เทคโนโลยีจำเป็นต่ออุตสาหกรรม กิจการค้า ธุรกิจต่าง ๆ กิจการทางด้านธนาคาร ช่วยส่งเสริมงานทางด้านเศรษฐกิจ

7.ช่วยให้เกิดความเข้าใจอันดีระหว่างกัน การสื่อสารโทรคมนาคมสมัยใหม่ช่วยย่นย่อโลกให้เล็กลง โลกมีสภาพไร้พรมแดน มีการเรียนรู้วัฒนธรรมซึ่งกันและกันมากขึ้น

8.ช่วยส่งเสริมประชาธิปไตย ในการเลือกตั้งสมาชิกสภาผู้แทนราษฎร มีการใช้เทคโนโลยีสารสนเทศเพื่อกระจายข่าวสาร เพื่อให้ประชาชนได้เห็นความสำคัญของกระจายระบบ
ผลในทางลบ
1.ทำให้เกิดอาชญากรรม เทคโนโลยีสารสนเทศสามารถนำมาใช้ในการก่อให้เกิดอาชญากรรมได้ โจรผู้ร้ายใช้เทคโนโลยีสารสนเทศในการวางแผนการปล้น วางแผนการ โจรกรรม มีการลักลอบใช้ข้อมูลข่าวสาร มีการโจรกรรมหรือแก้ไขตัวเลข บัญชีด้วยคอมพิวเตอร์

2.ทำให้ความสัมพันธ์ของมนุษย์เสื่อมถอย การใช้คอมพิวเตอร์และอุปกรณ์สื่อสารทำให้สามารถติดต่อสื่อสารกันได้โดยไม่ต้องเห็นตัว การใช้งานคอมพิวเตอร์หรือแม้แต่การเล่นเกมที่มี ลักษณะการใช้งานเพียงคนเดียว ทำให้ความสัมพันธ์กับผู้อื่นลดน้อยลง ผลกระทบนี้ทำให้มีความเชื่อว่า มนุษยสัมพันธ์ของบุคคลจะน้อยลง สังคมใหม่จะเป็นสังคมที่ไม่ต้องพึ่งพาอาศัยกันมาก

3.ทำให้เกิดความวิตกกังวล ผลกระทบนี้เป็นผลกระทบทางด้านจิตใจของกลุ่มบุคคลบางกลุ่มที่มีความวิตกกังวลว่าคอมพิวเตอร์อาจทำให้คนตกงานมากขึ้น มีการใช้งานหุ่นยนต์ มาใช้งานมากขึ้น มีระบบการผลิตที่อัตโนมัติมากขึ้น ทำให้ผู้ใช้ แรงงานอาจว่างงานมากขึ้น ซึ่งความคิดเหล่านี้จะเกิดกับบุคคล บางกลุ่มเท่านั้น แต่ถ้าบุคคลเหล่านั้นสามารถปรับตัวเข้ากับเทคโนโลยี หรือมีการพัฒนา ให้มีความรู้ความสามารถสูงขึ้นแล้วปัญหานี้จะไม่เกิดขึ้น

4.ทำให้เกิดความเสี่ยงภัยทางด้านธุรกิจ ธุรกิจในปัจจุบันจำเป็นต้องพึ่งพาอาศัย เทคโนโลยีสารสนเทศมากขึ้น ข้อมูลข่าวสาร ทั้งหมดของธุรกิจฝากไว้ในศูนย์ข้อมูล เช่น ข้อมูลลูกหนี้การค้า ข้อมูลสินค้า และบริการ ต่าง ๆ หากเกิดการสูญหายของข้อมูล อันเนื่อง มาจากเหตุอุบัติภัย เช่น ไฟไหม้ น้ำท่วม หรือ ด้วยสาเหตุใดก็ตามที่ทำให้ข้อมูลหายย่อมทำ ให้เกิดผลกระทบต่อธุรกิจโดยตรง

5.ทำให้การพัฒนาอาวุธมีอำนาจทำลายสูงมากขึ้น ประเทศที่เป็นต้นตำรับของเทคโนโลยี สามารถนำเอาเทคโนโลยีไปใช้ ในการสร้างอาวุธที่มีอานุภาพการทำลายสูง ทำให้หมิ่นเหม่ต่อสงครามที่มี การทำลายสูงเกิดขึ้น

6.ทำให้เกิดการแพร่วัฒนธรรมและกระจายข่าวสารที่ไม่เหมาะสมอย่างรวดเร็ว คอมพิวเตอร์เป็นอุปกรณ์ที่ทำงานตามคำสั่งอย่างเคร่งครัด การนำมาใช้ ในทางใดจึงขึ้นอยู่กับผู้ใช้ จริยธรรมการใช้คอมพิวเตอร์ซึ่งเป็นเรื่องสำคัญดังเช่น การใช้งานอินเทอร์เน็ตมีผู้สร้างโฮมเพจหรือสร้างข้อมูลข่าว สารในเรื่องภาพที่ไม่เหมาะสม เช่น ภาพอนาจาร หรือภาพที่ทำให้ ผู้อื่นเสียหาย นอกจากนี้ยังมีการปลอมแปลงระบบจดหมาย เพื่อส่ง จดหมายถึงผู้อื่นโดยมีเจตนากระจายข่าวที่เป็นเท็จ ซึ่งจริยธรรมการ ใช้งานเครือข่ายเป็นเรื่องที่ต้องปลูกฝังกันมาก

1.2) จงอธิบายเกี่ยวกับ Software Crisis 

-Software Crisis คือ วิกฤตการณ์ซอฟต์แวร์ ซึ่งเป็นเหตุการณ์ที่บริษัทพัฒนาซอฟต์แวร์มากมายพัฒนาโปรแกรมขึ้นมาได้อย่างไม่มีคุณภาพ การผลิตที่ล่่าช้า ความซับซ้อนของซอฟต์แวร์ มีปัญหาที่เกิดขึ้นบ่อย มีข้อผิดพลาดมากมาย โดยมีการแก้ไขโดยการนำหลักการของ วิศวกรรมซอฟแวร์ เข้ามาประยุกต์กับการผลิตซอฟต์แวร์การอบรมและให้ความรู้และจรรยาบรรณของวิศวกรรมซอฟต์แวร์ จึงทำให้เกิดศาสตร์ทางด้านวิศวกรรมซอฟต์แวร์ขึ้นมา

1.3)จงยกตัวอย่างซอฟต์แวร์ที่นักศึกษาว่าเป็นซอฟตแวร์ที่มีคุณภาพ แล้วนำมาวิเคาะห์หาคุณลักษณะของซอฟต์แวร์ที่ดี ว่าตรงตามคุณลักษณะใดบ้าง


ยกตัวอย่างซอฟต์แวร์ Microsoft Office


1.ด้านความน่าเชื่อถือ(Dependability) 

มีการอัปเดตเวอร์ชั่นที่ดีขึ้นเรื่อยๆ เป็นที่ใช้งานกันอย่างวแพร่หลาย การทำงานซอฟต์แวร์เป็นไปตามหลักการ

2.ด้านประสิทธิภาพ(Efficiency)

ซึ่งการทำงานที่มีมาตรฐานการทำงานที่สูงและมีประสิทธิภาพ ความผิดพลาดน้อยมาก การตอบสนอง และสิ้นเปลืองทรัพยากรน้อยมาก คุ้มค่า
3.ด้านการใช้งานที่ง่ายต่อผู้ใช้(Usability)
ออกแบบส่วนติดต่อกับผู้ใช้อย่างง่ายต่อการใช้งานมี icon ที่สื่อความหมายอย่างชัดเจนทำให้ใช้งานได้ง่ายขึ้น

3.ด้านการบำรุงรักษา(Maintainability)

การปรับปรุงการอัพเกรดเวอร์ชั่น ไฟล์ข้อมูลเก่ายังสามารถใช้ในเวอร์ชั่รใหม่ๆได้ ไม่ส่งผลต่อข้อมูลที่มีอยู่เดิม

4.ความแข็งแรง(Robustness)

กระบวนการสามารถทำงานต่อได้แม้นว่ามีปัญหาที่ไม่คาดการณ์เกิดขึ้น

1.4) นักศึกษาคิดว่า "นักวิศวกรซอฟต์แวร์" ควรมีทักษะความรู้ ความเชี่ยวชาญในด้านใดบ้าง จงอธิบาย


1.มีความรู้ ความสามารถในการเขียนและอ่านแบบจำลองของโครงสร้างโปรแกรม มีทักษะการเขียนโปรแกรมทางด้านคอมพิวเตอร์
2.ความซื่อสัตย์สุจริต การรักษาความลับของลูกค้าและนายจ้าง  
3.ไม่โอ้อวดความสามารถที่เกินจริง และทำงานในด้านที่ตนถนัดมากที่สุด
4.ไม่ควรละเมิดลิขสิทธิ์และสิทธิทางปัญญาของนายจ้างและลูกค้า รวมทั้งของผู้อื่น มาเป็นของตน การมีจริยธรรมในการประกอบวิชาชีพ วิศวกรรมซอฟต์แวร์
5.ไม่ควรใช้ความถนัดทางด้านคอมพิวเตอร์ผิดวัตถุประสงค์ หาประโยชน์ใส่ตนเองในทางที่ผิด

Chapter 5 Software Requirements

ความต้องการ (Requirement) 
ความต้องการ (Requirement) ถือเป็นวัตถุดิบที่สำคัญในการพัฒนาระบบหรือการผลิตซอฟต์แวร์ เพราะความต้องการจะใช้เป็นข้อกำหนดถึงหน้าที่และรายละเอียดต่างๆ ที่ระบบหรือซอฟต์แวร์จำเป็นต้องมีซึ่ง ทีมวิศวกรจะต้องเก็บรวบรวมข้อมูลจากลูกค้าหรือผู้ใช้ แล้วนำมาจำแนกประเภทของความต้องการในด้านต่างๆ และจัดทำเป็นเอกสารข้อกำหนดความต้องการ เพื่อให้ทุกฝ่ายเห็นพ้องต้องกัน เพราะหากทีมงานจัดทำข้อกำหนดความมต้องการไม่ตรงประเด็น อาจทำให้ซอฟต์แวร์ไม่สามารถตอบสนองความต้องการที่แท้จริงได้ และอาจไม่ได้รับความนิยมหรือไม่ได้รับความพึงพอใจจากลูกค้า

กระบวนการของวิศวกรรม Software เข้าใจถึงความต้องการของลูกค้า

1.ค้นหาความต้องการ
2.วิเคราห์ความต้องการ
3.กำหนดความต้องการ
4.ตรวจสอบความต้องการ

Type of Requirements  ประเภทของความต้องการ
  1. User Requirement - เป็นความต้องการที่รวบรวมจากผู้ใช้ระบบโดยตรง เช่น ลำดับของช่องที่จะให้กรอกข้อมูล, จะกรอกอย่างไร, เรียงลำดับอย่างไร, ขนาดตัวอักษร, สีอะไร เป็นต้น
  2. System Requirement – ความต้องการของระบบ เช่น ระบบต้องสามารถส่งข้อมูลผ่านระบบเครือข่ายได้, ข้อมูลต้องเก็บได้ทั้งที่ Server และ Work Station เป็นต้น

ความต้องการด้านซอฟต์แวร์

ในการพัฒนาระบบหรือผลิตซอฟต์แวร์นั้น ต้องอาศัยความต้องการของลูกค้าหรือผู้ใช้ เป็นตัวกำหนดฟังก์ชันการทำงาน รูปลักษณ์ ความสามารถ และรายละเอียดอื่นๆ ของระบบหรือซอฟต์แวร์

Software Specification 

รายละเอียดทางด้านเทคนิคของซอฟต์แวร์ว่าต้องทำอะไรได้บ้าง
ความต้องการแบ่งออกได้เป็น 3 กลุ่มใหญ่ ๆ

1. Functional Requirement คือ Requirement หรือสิ่งที่ระบบควรจะทำ , หน้าที่หลักของระบบที่จะต้องทำ เช่น ผู้ใช้ต้องสามารถค้นหาจากฐานข้อมูลทั้งหมด ก็ได้หรือ ค้นหาจากส่วนหนึ่งส่วนใดของฐานข้อมูลก็ได้ ระบบจะต้องมีโปรแกรมที่ช่วยให้อ่านเอกสารได้

2. Non-functional Requirement คือ Requirement อื่นๆที่ไม่ใช่หน้าที่หลักๆที่ต้องทำ แต่เป็นคุณสมบัติอื่นๆที่เราอยากได้จากระบบ เช่น ความปลอดภัยของระบบ, ความเชื่อถือได้ของระบบ, เวลาตอบสนอง, มีความสามารถทางด้าน I/O, ความสามารถในการเชื่อมต่อกับระบบอื่นๆ ตัวอย่างเช่น ระบบบัญชี โดยที่หน้าที่หลักของระบบบัญชีคือ บันทึกข้อมูล Transaction รายวัน, จะต้องมีการทำสรุปยอดบัญชีได้ สิ่งเหล่านี้คือสิ่งที่ระบบบัญชีควรทำคือ Functional Requirement แต่ถ้าบอกว่าต้องมีการใส่รหัสผ่าน, สามารถเชื่อมโยงอินเทอร์เน็ตได้ , เชื่อมโยงกับระบบบัญชีของบริษัทอื่นได้ อันนี้ไม่ใช่หน้าที่หลัก ของระบบบัญชี แต่มันคือ Non-functional Requirement
3. Domain Requirement คือ เป็นเงื่อนไขอื่นจากสภาวะแวดล้อมที่ทำให้ระบบทำงานได้ หรือ เป็นการมองที่ว่าระบบที่พัฒนามานี้จะไปทำงานร่วมกับระบบอื่นๆหรือสภาวะแวดล้อมอื่นๆในองค์กร มันจะต้องมีความต้องการอื่นๆภายนอกมากระทบบ้างหรือไม่ เช่น เราออกแบบระบบบัญชี เมื่อนำไปใช้ จะไปทำงานร่วมกับระบบอื่นๆเช่นไปทำงานร่วมกับระบบการสมัครสมาชิกของ ชมรมคอมพิวเตอร์ ของ ม.นเรศวร โดยนำระบบบัญชีไปใช้ในส่วนการรับสมัคร เป็นต้น

Sequence Diagram
•Sequence Diagram เป็นแผนภาพที่ใช้อธิบายการทำงานของ Use Case เพื่อแสดงถึงขั้นตอนการทำงานและลำดับของการสื่อสาร (Message) ระหว่าง Object ที่ตอบโต้กัน
•Sequence Diagram จะแสดงอยู่ในรูปแบบ 2 มิติ โดยเส้นประแนวตั้ง (Lifeline) จะนำเสนอในด้านเวลา ส่วนเส้นแนวนอน (Message) จะนำเสนอเกี่ยวกับการโต้ตอบกันระหว่าง Object หรือ Class ต่างๆ









sequence diagram แสดงการทำงานของระบบ ATM

Chapter 4 Software Project Management



กิจกรรมที่ผู้จัดการโครงการต้องทำ คือ
  • เขียนแบบเสนอโครงการ
  • วางแผนและการตารางการทำงาน
  • ประเมินต้นทุน ของการพัฒนาระบบ
  • ติดตามและประเมินผล
  • จัดสรรบุคลากรและประเมิน
  • รายงานนำเสนอทุกๆช่วงรายงาน


Project Planning
 การวางแผนโปรเจคต้องจัดการบริหารตลอดทั้งโครงการ สำคัญที่สุดคือ เวลา และเครื่องมือที่นิยมนำมาวางแผน คือ Microsoft Project
  • Quality Plan แผนคุณภาพของโครงการได้ตามที่วางแผนหรือไม่
  • Validation Plan แผนใช้ในการตรวจสอบของความสมบูรณ์ของความต้องการและขั้นตอนการทำงาน
  • Configuration Management Plan แผนการจัดการขั้นตอนโครงการ และสภาพแวดล้อม
  • Maintenance Plan แผนบำรุงรักษาโครงการ วางแผนการบำรุงรักษาในอนาคต
  • Staff Development Plan แผนการอบรมและประเมินบุคลากร


Project Plan Structure 
โครงสร้างสำคัญของโครงการ ประกอบด้วย
  • บทนำ
  • ลักษณะโครงสร้างองค์กร
  • วิเคราะห์ความเสี่ยง
  • ความต้องการของฮาร์ดแวร์ และซอฟต์แวร์
  • แบ่งงานเป็นขั้นย่อยๆ
  • ตารางการทำงานของโครงการ
  • ติดตามและรายงาน

Chapter 3 Systems Engineering


Topics Covered
  • พิจารณาปัจจัยที่มีส่วนเกี่ยวข้องในระบบ 
  • กำหนดความต้องการในส่วนของการดำเนินการและฟังก์ชันงานทั้งระบบ 
  • สร้างแบบจำลอง เพื่อใช้วิเคราะห์และพัฒนาให้สอดคล้องกับแบบจำลองซอฟต์แวร์ที่สร้างขึ้น 
  • นำเสนอและแลกเปลี่ยนข้อคิดเห็นกับผู้ใช้ระบบ

คุณสมบัติของระบบ
 คือน้ำหนักความสำคัญของระบบ ดูความผิดพลาด ลำดับความสำคัญก่อนหลัง วัดความน่าเชื่อถือของระบบ ความสามารถในการใช้งาน มี 2 ประเภท ดังนี้
  1. คุณสมบัติที่เกี่ยวข้องกับการทำงานโดยตรง เช่น คีย์บอร์ด เป็นต้น
  2. คุณสมบัติที่ไม่เกี่ยวข้องกับการทำงาน เช่น ความน่าเชื่อถือ ความปลอดภัย เป็นต้น

Intruder Alarm System

 ระบบสัญญาณเตือนภัย มีComponent ประกอบด้วย
  1. Sensor รับขข้อมูลจากภายนอก เข้าสู่ระบบ ได้แก่ Movement Sensor
  2. Actuator เปลี่ยนสภาพแวดล้อม เปลี่ยนสัญญาณ ได้แก่ Siren
  3. Communication การติดต่อสื่อสาร ได้แก่ Telephone
  4. Co-ordination โปรแกรมหลักในการทำงาน และประสานงานให้ระบบอื่นทำงาน ได้แก่ Alarm Controller
  5. Interface การติดต่อผู้ใช้ รับและเสนอข้อมูล ได้แก่ Voice Synthesizer

The System Engineering Process 

กระบวนการวิศวกรรมระบบ นิยมใช้ Waterfall V-Model พัฒนาแบบคู่ขนานกันไป


Requirement Definition เก็บความต้องการของระบบจากผู้ใช้

-Functional Requirement มีฟังก์ชั่นการทำงานอะไรบ้างที่เกี่ยวข้องกับระบบ เช่น ตรวจสอบสิทธิ์
-Non-Functional Requirement มีฟังก์ชั่นการทำงานที่ไม่เกี่ยวข้องกับระบบ
-Unacceptable System การไม่ต้องการให้สิ่งนั้นเกิดขึ้นกับระบบ ถ้าเกิดข้อผิดพลาดจะแก้ไขอย่างไร เช่น การล้มของระบบ
ปัญหา ความต้องการเปลี่ยนโดยที่ระบบยังพัฒนาไม่เสร็จ เทคโนโลยีเปลียนทั้งซอฟต์แวร์และฮาร์ดแวร์ การเกิดปัญหาหลังการติดตั้ง

System Design การออกแบบระบบโดยรวมทั้งหมด


  • Partition Requirement การแบ่งความต้องการ วิเคราะห์และแบ่งโครงสร้างด้วยวิธีที่เหมาะสม
  • Identify sub-system กำหนดระบบย่อย นำระบบใหญ่มาแบ่งเป็นระบบย่อยๆที่เหมาะสม
  • Assign requirement to sub-systems กำหนดความต้องการในแต่ล่ะระบบย่อย ต้องสอดคล้องกับความต้องการของระบบทั้งหมด กำหนดส่วนประสานของระบบย่อย ให้สามารถผสานกันได้
  • Specify sub-systems functionality กำนหดหน้าที่การทำงานของระบบย่อย
  • Define sub-systems interfaces การทำให้แต่ละระบบย่อยให้สามารถสื่อสารกับระบบย่อยๆกันอย่างไร

ปัญหา เป็นเรื่องยากที่จะแบ่งความต้องการ ซอฟต์แวร์จะสามารถแก้ปัญหาดีกว่า ฮาร์ดแวร์ และแพตฟอร์มไม่ตรงกัน

Sub-System Development การพัฒนาระบบย่อยๆ 

โดยการแบ่งออกเป็นส่วนๆ แบบคู่ขนาน ซอฟต์แวร์สำเร็จรูปมาพัฒนาเพื่อการตลาด
ปัญหา การสื่อสารในทีมพัฒนา อุปสรรคทางด้านการเมือง ค่านิยมต่างๆ

System Integration นำระบบย่อยๆมารวมกัน และพัฒนาร่วมกัน 

โดยนำระบบที่มีความสำคัญมาผสมผสานกันก่อน เพื่อป้องกันการล้มของระบบ

System Installation ติดตั้งระบบการใช้งานาน

ปัญหา สภาพแวดล้อมและทางกายภาพไม่ตรงกับที่คิดไว้ การต่อต้านจากผู้ใช้ การวางแผนฝึกอบรมให้ผู้ใช้ ไม่ใช้ระบบตามที่ออกแบบมา การเริ่มใช้งานของะบบใหม่กับระบบอื่น
System Evolution ปรับปรุงระบบหลังการใช้งานไประยะหนึ่ง หรือUpdate Version
ปัญหา เกิดความต้องการใหม่ ความต้องการเปลี่ยน เกิดต้นทุนเพิ่มขึ้นในการพัฒนา
System Decommissioning การปลดระวางหรืเลิกใช้งาน ระบบเดิมต้องทำการเชื่อมต่อกับระะบใหม่ให้ได้ก่อนที่จะปลดละวาง โดยมีการสำรองข้อมูลไว้เพื่อป้องกันการผิดพลาด

Chapter 2 Software Process


กระบวนการซอฟต์แวร์ (Software Process)


กระบวนการทางซอฟต์แวร์ คือกรอบงานของการสร้างซอฟต์แวร์ที่มีคุณภาพสูง กระบวนการทางซอฟต์แวร์เป็นตัวกำหนดแนวทางที่ซอฟต์แวร์จะถูกสร้างขึ้น ในขณะที่วิศวกรรมซอฟต์แวร์จะรวมไปถึงเทคโนโลยีในกระบวนการ ได้แก่ วิธีเชิงเทคนิค และเครื่องมือทันสมัยต่างๆ

กิจกรรมพื้นฐานทั้งหมด 4 กิจกรรม ที่ใช้กับกระบวนการผลิตซอฟต์แวร์

1. software specification

นิยามหน้าที่ต่างๆที่ต้องมีในซอฟต์แวร์ และระบุข้อจำกัดต่างๆ ที่เกี่ยวข้องกับกระบวนพัฒนาซอฟต์แวร์ เช่น กฎหมาย , อัตราภาษี , กฎระเบียบต่างๆที่เกี่ยวในการพัฒนาซอฟต์แวร์ 

2. Software Design and Implementation

กิจกรรมนี้ทำการสร้าง / พัฒนาซอฟต์แวร์ให้ตรงกับข้อกำหนด (specification) 

3. software validation

กิจกรรมนี้ทำการตรวจสอบความถูกต้องของซอฟต์แวร์ เพื่อให้เกิดความมั่นใจ ว่าซอฟต์แวร์ที่ผลิตขึ้นได้ตรงกับความต้องการของลูกค้า 

4. software evolution

ในทางปฎิบัติ เมื่อซอฟต์แวร์ใช้งานได้ระยะหนึ่งแล้ว ผู้ใช้หรือลูกค้าอาจมีความต้องการเพิ่มเติมหรือเปลี่ยนแปลงความต้องการบางอย่าง ดังนั้นขั้นตอนการพัฒนาซอฟต์แวร์ ต้องมีการเตรียมการบางอย่างเพื่อจัดการกับเหตุการณ์ที่คาดหมายว่าจะเกิดขึ้นในอนาคต


Waterfall model



ขั้นตอนแบบน้ำตก
  • การวิเคราะห์ความต้องการและความหมาย
  • ออกแบบระบบซอฟแวร์
  • การดำเนินงานและการทดสอบ
  • บูรณาการและการทดสอบระบบ
  • การดำเนินงานและการบำรุงรักษา
ข้อเสียเปรียบหลักของน้ำตกจำลองเป็นความยากลำบากของการเปลี่ยนแปลงรองรับหลังจากกระบวนการเป็นชิ้น ระยะหนึ่งจะต้องมีสมบูรณ์ก่อนที่จะย้ายไปยังขั้นตอนต่อไป


Evolutionary development




การพัฒนาวัตถุประสงค์หลักคือการทำงานร่วมกับลูกค้าและการพัฒนาระบบสุดท้ายจากข้อกำหนดเค้าร่างเบื้องต้น ควรเริ่มต้นด้วยความต้องการความเข้าใจและเพิ่มคุณสมบัติใหม่ที่เสนอโดยลูกค้า
สร้างต้นแบบวัตถุประสงค์คือการเข้าใจความต้องการของระบบ ควรเริ่มต้นด้วยความเข้าใจความต้องการของการชี้แจงสิ่งที่มีความจำเป็นจริงๆ


ปัญหา
  • ขาดการมองเห็นกระบวนการ
  • ระบบมักจะมีโครงสร้างไม่ดี
  • ทักษะพิเศษ (เช่นในภาษาต้นแบบอย่างรวดเร็ว) อาจจะต้องการบังคับใช้
  • สำหรับระบบการโต้ตอบขนาดเล็กหรือขนาดกลาง
  • สำหรับชิ้นส่วนของระบบขนาดใหญ่ (เช่นส่วนติดต่อผู้ใช้)
  • สำหรับระบบระยะสั้นอายุการใช้งาน


Spiral model of the software process



เป็นกระบวนการที่แสดงเป็นเกลียวแทนที่จะเป็นลำดับของกิจกรรม วงในเกลียวแต่ละขั้นตอนในกระบวนการ ไม่มีขั้นตอนที่กำหนดเช่นข้อมูลจำเพาะหรือการออกแบบ รูปในเกลียวได้รับการแต่งตั้งขึ้นอยู่กับสิ่งที่จะต้องความเสี่ยงได้รับการประเมินอย่างชัดเจนและมีมติตลอดกระบวนการ
วัตถุประสงค์เฉพาะสำหรับขั้นตอนการจะมีการระบุ ได้รับการประเมินความเสี่ยงและกิจกรรมวางในตำแหน่งเพื่อลดความเสี่ยงที่สำคัญ