วันศุกร์ที่ 28 กันยายน พ.ศ. 2555

ตอบคำถามบทที่ 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 วัน

ตอบคำถามบทที่ 2


1. จงเปรียบเทียบจุดเด่นจุดด้อยของระเบียบวิธีปฎิบัติของวิศวกรรมซอฟต์แวร์ ระหว่างวิธีเชิงโครงสร้าง (Structured Approach) และวิธีเชิงวัตถุ (Object-Oriented Approach)
    ตอบ วิธีเชิงโครงสร้าง
              จุดเด่น  1. เป็นวิธีการวิเคราะห์ออกแบบเชิงโครงสร้าง
                             2. มีการแบ่งระบบออกเป็นส่วนย่อยๆ
                             3. มีลักษณะเป็นลำดับชั้น
              จุดด่อย 1. การวิเคราะห์และรวบรวมข้อมูลมีการแยกออกเป็นส่วนๆ ทำให้ใช้เวลานาน
                             2. ต้นทุนสูง
                             3. เนื่องจากใช้เวลานาน ทำให้เสี่ยงต่อการเปลี่ยนแปลงความต้องการของผู้ใช้
            วิธีเชิงวัตถุ
              จุดเด่น  1. การวิเคราะห์และออกแบบทำได้อย่างรวดเร็ว
                             2. รองรับระบบงานที่มีความซับซ้อนสูง
                             3. ทันต่อการเปลี่ยนแปลงความต้องการของผู้ใช้
              จุดด่อย 1. ต้องใช้ผู้ที่มีความสามารถความเชี่ยวชาญในการเขียนโปรแกรมสูง
 2. Waterfall model แตกต่างจาก Spiral model อย่างไร จงอธิบายตามความเข้าใจของนักศึกษา
    ตอบ  Waterfall model แตกต่างจาก Spiral model 2 อย่างด้วยกัน คือ

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

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

ตอบคำถามบทที่ 1


ตอบคำถามบทที่ 1

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

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

3. จงยกตัวอย่างศอฟต์แวร์ที่นักศึกษาคิดว่าเป็นซอฟต์แวรืที่มีคุณภาพ แล้วนำมาวิเคราะห์หาคุณลักษณะของซอฟต์แวร์ที่ดี ว่าตรงตามคุณลักษณะใดบ้าง
ตอบ ยกตัวอย่าง Microsoft office  โคยคุณสมบัติที่ดีของซอฟต์แวร์ทางด้าน Software Engineering คือ
การใช้งานที่ง่ายที่คุณต้องการ
ในปัจจุบันการใช้งาน Microsoft office ผู้ใช้จะไม่ต้องกังวลในเรื่องของการใช้งาน เพราะสามารถจะเรียนรู้การใช้งานได้ด้วยตัวเอง เนื่องจากมีรูปแบบที่เรียบง่ายในการใช้งาน และไม่ยุ่งยากถึงแม้จะเป็นรุ่นใหม่ก็
เข้าถึงเครื่องมือที่เหมาะกับงานที่กำลังทำอยู่ได้ง่ายขึ้น ค้นหาคำสั่งที่จำเป็นต้องใช้ได้ทุกเมื่่อและทุกตำแหน่งที่คุณต้องการเรียกใช้
ความสามารถด้านประสิทธิภาพ Microsoft Office  เป็นโปรแกรมที่ได้รับการยอมรับในประสิทธิภาพการทำงาน เนื่องจาก ส่วนติต่อกับผู้ใช้ที่ (User Interface) ใช้งานง่าย ตรงตามความต้องการของผู้ใช้ และการใช้งานทรัพยากรทางด้าน Hardware ไม่สูงมากทำให้ประหยัดทรัพยากรการทำงานมากขึ้น
สร้างฐานข้อมูลได้รวดเร็ว ไม่ต้องเสียเวลาเรียนรู้และสามารถนำคอมโพเนนต์กลับมาใช้ใหม่ได้
4. นักศึกษาคิดว่า "นักวิศวกรรมซอฟต์แวร์" ควรมีทักษะความรู้ ความเชี่ยวชาญในด้านใดบ้าง จงอธิบาย
ตอบ        1. ในการเป็นวิศวกรรมที่ดีจะต้องเรียนรู้และคำนึงถึงความต้องการของผู้ใช้ และทำการออกแบบให้ผู้ใช้สามารถเข้าใจได้ง่ายยิ่งขึ้น

                2. ควรจะมีทักษะการใช้โปรแกรม ให้มีความชำนาญหลายๆโปรแกรม เพื่อลดเวลา และต้นทุนในการทำงาน                                                                                                                                            
                3. จะต้องมีความรับผิดชอบต่องานที่ได้รับมอบหมาย
                4. จะต้องตรงตามความต้องการของลูกค้า ตรงต่อเวลา และตรงกับงานที่ได้รับหมอบหมาย

Chapter 6


 Requirements Engineering Processes

Objectives
1.      เพื่ออธิบายถึงกิจกรรมที่สำคัญของการทำ Requirements และความสัมพันธ์ต่างๆ
2.      แนะนำเทคนิคการค้นหาและวิเคราะห์ Requirements
3.      อธิบายการยืนยัน Requirements และหน้าที่ของผู้ตรวจทาน
4.      อธิบายหน้าที่ของการจัดการ Requirements ในการสนับสนุนกระบวนการทางวิศวกรรมของ Requirements อื่น

Topics Covered
1.      การศึกษาความเป็นไปได้
2.      การค้นหาและการวิเคราะห์
3.      การตรวจทานยืนยันความเที่ยงตรง
4.      การบริหารจัดการ



Requirements engineering processes
1.      กระบวนการที่ใช้สำหรับ Requirements มีหลากหลายขึ้นอยู่กับโดเมนของระบบงาน ,ผู้เกี่ยวข้องและองค์กรที่ทำ Requirements
2.      อย่างไรก็ตามกิจกรรมที่เหมือนกันก็คือ
3.      การค้นหา (ล้วงความลับ)
4.      การยืนยันความเที่ยงตรง
5.      การบริหารจัดการ

Requirements engineering

Feasibility studies
1.      การศึกษาความเป็นไปได้ ช่วยตัดสินใจว่าคุ้มค่าหรือไม่
2.      การศึกษาแบบใกล้ชิด ตรวจเช็คว่า
3.      ว่าระบบจะส่งผลตอบแทนตามเป้าหมาย
4.      ว่าระบบสามารถทำได้ด้วยเทคโนโลยีปัจจุบัน และไม่เกินงบประมาณ
5. ว่าระบบสามารถนำไปใช้ร่วมกับระบบอื่นๆ ที่ใช้อยู่ปัจจุบัน
Feasibility study implementation
1.      ขึ้นอยู่กับการประเมินข้อมูล (ว่าต้องการอะไร) การเก็บข้อมูล การเขียนรายงาน
2.      คำถามของคนในองค์กร
3.      อะไรจะเกิดขึ้นถ้าไม่ได้นำไปใช้?
4.      ปัญหาในกระบวนการปัจจุบันมีอะไรบ้าง?
5.      ระบบใหม่จะช่วยได้อย่างไร?
6.      จะมีปัญหาในการรวบรวมหรือไม่?
7. สิ่งอำนวยความสะดวกที่จะรองรับระบบที่เสนอขึ้นมามีอะไรบ้าง?

Elicitation and analysis
1.      บางครั้งเรียกว่า การค้นหาความต้องการ
2.      ประกอบด้วยเจ้าหน้าที่เทคนิคทำงานร่วมกับลูกค้า เพื่อหาโดเมนของแอปพลิเคชั่น , บริการที่ระบบจะมีให้รวมถึงข้อจำกัดในการใช้งาน
3. อาจประกอบด้วย ผู้ใช้ , ผู้บริหาร , วิศวกรที่ซ่อมบำรุง , ผู้เชี่ยวชาญโดเมน , สหภาพ ฯลฯ เหล่านี้เรียกว่า ผู้มีส่วนได้-ส่วนเสีย (Stakeholders)

Problems of requirements analysis
1.      Stakeholders ไม่ทราบความต้องการที่แท้จริงของตัวเอง
2.      Stakeholders แจ้งความต้องการด้วยภาษาที่เข้าใจเองฝ่ายเดียว
3.      Stakeholders มีความต้องการขัดแย้งกันเอง
4.      องค์กรและปัจจัยการเมือง อาจส่งผลถึงความต้องการ
5. ความต้องการเปลี่ยนไปในระหว่างการทำวิเคราะห์ Stakeholders คนใหม่ เข้ามามีส่วนร่วมทำให้ภาวะทางธุรกิจเปลี่ยนไป






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

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

ATM stakeholders
1.      ลูกค้าของธนาคาร
2.      ตัวแทนจากต่างธนาคาร
3.      ผู้จัดการธนาคาร
4.      เจ้าหน้าที่ที่เคาน์เตอร์
5.      ผู้บริหารอ่านข้อมูล
6.      ผู้จัดการด้านความปลอดภัย
7.      ฝ่ายการตลาด
8.      วิศวกรผู้ดูแลฮาร์ดแวร์และซอฟแวร์
9.               ผู้ออกกฎหมายควบคุมธนาคาร

Viewpoints
1.      วิวพอยต์ คือ การจัดวางโครงสร้างความต้องการ เพื่อแสดงมุมมองของผู้มีส่วนได้เสียที่มีความคิดเห็นแตกต่างกัน
2.                การวิเคราะห์มุมมองหลายๆ ด้านนั้นสำคัญ เนื่องจากวิธีที่คุณต้องการที่จะวิเคราะห์ความต้องการ มิได้มีเพียงทางเดียว

Types of viewpoint
1.      ผู้ที่ติดต่อด้วย
2.      คือคนหรือระบบที่ติดต่อกับระบบ เช่น ATM ลูกค้า และอ่านข้อมูลบัญชีเงินฝาก ก็คือ ทัศนะของผู้ติดต่อ
3.      ผู้ได้รับผลประโยชน์ทางอ้อม
4.      คือผู้ได้รับผลประโยชน์ มิได้เป็นผู้ใช้ระบบ แต่มีอิทธิพลต่อความต้องการ เช่นใน ATM ผู้จัดการ , เจ้าหน้าที่รักษาความปลอดภัย ก็จะมีทัศนะทางอ้อม
5.      โดเมน
6. คุณสมบัติและข้อจำกัดของโดเมน ซึ่งมีผลต่อความต้องการ ใน ATMก็คือมาตรฐานการสื่อสารระหว่างธนาคาร

Viewpoint identification
1.      การจำแนกทัศนะ โดยใช้
2.      ผู้ให้และผู้รับบริการจากระบบ
3.      ระบบที่ติดต่อโดยตรงกับระบบที่กำลังทำใหม่
4.      กฎระเบียบและมาตรฐาน
5.      แหล่งของธุรกิจและความต้องการในหน้าที่รอง
6.      วิศวกรผู้พัฒนาระบบและยังคงรักษาระบบนั้นไว้
7. มุมมองของนักการตลาดและนักธุรกิจอื่นๆ


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

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

Effective interviewers
1.      ต้องมีใจเปิดกว้าง , ยินดีรับฟังเจ้าของระบบ ไม่ควรคิดล่วงหน้าว่าความต้องการควรเป็นอะไร
2. ควรตั้งใจถามหรือนำเสนอ แต่ไม่ควรถามแบบตอบไม่ได้ เช่น        “ What do you want? ”

Scenarios
1.      บทละครเป็นตัวอย่างจริงที่แสดงให้เห็นว่าระบบใช้งานได้อย่างไร
2.      ควรจะมีสิ่งต่างๆ ดังนี้
3.      บอกสถานการณ์ตอนเริ่มเรื่อง
4.      บอกการดำเนินเรื่อง
5.      บอกสาเหตุของความผิดพลาดที่อาจจะเกิดขึ้น
6.      ข้อมูลเกี่ยวกับกิจกรรมที่เกิดพร้อมๆกัน
7. บอกสถานะของเรื่องตอนจบ




Use cases
1.      Use-cases เป็นเทคนิคแบบบทละคร ที่มีอยู่ใน UML ซึ่งจะอธิบายการติดต่อโต้ตอบของตัวแสดงในเรื่อง
2.      ชุดของ Use-cases จะอธิบายการติดต่อโต้ตอบทั้งหมดของระบบ
3.      ผังเรียงลำดับสามารถช่วยเพิ่มเติมรายละเอียดให้ Use-cases ด้วยการแสดงลำดับชั้นของเหตุการณ์ในระบบ
Social and organisational factors
1.      ระบบซอฟแวร์ที่ใช้ในสังคมและองค์กรจะส่งผลกระทบหรือควบคุมSystem Requirements
2.      ปัจจัยทางด้านสังคมและองค์กรไม่ได้เป็นวิวพอยท์เดียว แต่ส่งผลกระทบต่อวิวพอยท์ทั้งหมด
3.      นักวิเคราะห์ที่ดีต้องสำนึกถึงปัจจัยต่างๆเหล่านี้ แต่ปัจจุบันยังไม่มีหนทางที่จะมาช่วยการวิเคราะห์ได้

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


Focused ethnography
1.      พัฒนามาจากโครงการศึกษากระบวนการควบคุมการจราจรทางอากาศ
2.      ผสมผสาน ethnography กับ prototyping
3.      ปัญหาที่ตอบไม่ได้จากการทำ Prototype ก็ต้องมาดูที่การวิเคราะห์ethnographic
4.      ปัญหาเกี่ยวกับ ethnographic ก็คือ เมื่อศึกษาการปฏิบัติงานที่มีอยู่ในปัจจุบันอาจต้องอาศัยพื้นฐานทางประวัติการทำงานของระบบนั้น ซึ่งอาจเป็นข้อมูลที่ไม่ได้ใช้แล้ว


Scope of ethnography
Ethnography เหมาะสำหรับการหาความต้องการ 2 ชนิด คือ
1.      ความต้องการที่มาจากการทำงานจริงมากกว่าที่เขียนไว้ในระเบียบปฏิบัติงาน
2.      ความต้องการที่มาจาก การร่วมมือกัน และความเข้าใจในหน้าที่รับผิดชอบของผู้อื่น

Requirements validation
1.      เกี่ยวข้องกับการสาธิตให้เห็นว่าความต้องการที่เป็นนิยามของระบบนั้นเป็นสิ่งที่ลูกค้าต้องการจริงๆ
2.      ข้อผิดพลาดที่พบในความต้องการนั้นมีราคาสูง ดังนั้นการยืนยันจึงสำคัญ
3. การแก้ข้อผิดพลาดจาก Requirements หลังจากส่งมอบงานจะแพงเป็น 100 เท่าของการแก้ข้อผิดพลาดจากการใช้งาน

Requirements checking
1.      ยืนยัน – ฟังก์ชั่นของระบบได้ตามความต้องการหรือไม่?
2.      สม่ำเสมอ – ขัดแย้งกันเองหรือไม่?
3.      ครบถ้วน – ฟังก์ชั่นที่ลูกค้าต้องการครบหรือไม่?
4.      เป็นจริงได้ – ความต้องการสามารถทำให้เป็นจริงได้ ภายใต้งบประมาณที่และเทคโนโลยีที่มีอยู่หรือไม่?
5. ตรวจทานได้ - ความต้องการสามารถตรวจทานได้

Requirements validation techniques
1. Requirements reviews
2. ทำการวิเคราะห์ด้วยตัวเองอย่างมีระบบ
3. Prototyping
4. ใช้ตัวต้นแบบตรวจเช็ค – อ่าน Text บทที่ 17
5. Test-case generation
6. ใช้ข้อทดสอบตรวจเช็คความต้องการ

Requirements reviews
1.      ทำการรีวิวสม่ำเสมอในช่วงที่ทำ Requirements
2.      ทั้งลูกค้าและคู่สัญญา ต้องร่วมมือกันตรวจสอบ
3. รีวิว (เอกสารทั้งหมด) อย่างเป็นทางการ หรือไม่เป็นทางการ       การติดต่อสื่อสารที่ดีระหว่างผู้ที่พัฒนาโปรแกรม , ลูกค้า และผู้ใช้ สามารถลดปัญหาได้ในตอนต้น

Review checks
1. ตรวจทานได้ – ความต้องการนั้นนำไปใช้ทดสอบได้หรือไม่
2. เข้าใจได้ – ความต้องการนั้นเข้าใจได้
3. ติดตามได้ – สามารถติดตามต้นตอของความต้องการได้
4. ปรับตัวได้ - สามารถปรับปรุงได้โดยไม่กระทบต่อความต้องการอื่นๆ

Requirements management
1.      เป็นกระบวนการบริหารการแก้ไขปรับปรุงความต้องการ ในขณะที่พัฒนาระบบ
2.      ความต้องการส่วนใหญ่จะไม่ครบถ้วนและไม่สอดคล้องต่อเนื่องกัน
3.      ความต้องการที่เพิ่มขึ้นเนื่องจากภาวะธุรกิจเปลี่ยนไป ทำให้ต้องทำความเข้าใจในระบบใหม่ให้ดีขึ้น
4. มุมมองที่ต่างกันบ่อยครั้งจะขัดแย้งกันเอง

Requirements change
1.      ลำดับความสำคัญเปลี่ยนแปลงไประหว่างการพัฒนาระบบ
2.      ลูกค้าระบุความต้องการขัดแย้งกับผู้ใช้ระบบ
3. ธุรกิจและสภาพแวดล้อมของระบบเปลี่ยนไปในช่วงพัฒนาระบบ


Enduring and volatile requirements
1.      ความต้องการที่ยั่งยืน คือ ความต้องการที่มั่นคงได้มาจากกิจกรรมหลักของลูกค้า เช่น โรงพยาบาลจะมีหมอ และพยาบาล
2.      ความต้องการที่เปลี่ยนง่าย คือ ความต้องการที่เปลี่ยนในช่วงพัฒนาหรือช่วงที่ใช้งานแล้ว เช่น ในโรงพยาบาลความต้องการมาจากนโยบายการดูแลสุขภาพ
 
Requirements management planning
1. ในระหว่างกระบวนการทำความต้องการต้องมีแผน ;
2. วางแผนที่จะระบุความต้องกาออกมา
3. วางแผนบริหารการเปลี่ยนแปลง
4. นโยบายสืบสวนย้อนรอย
5. ใช้เครื่องมือช่วย เช่น CASE

Traceability
1.      คือความสามารถที่จะสืบหาแหล่งที่มาของความต้องการและรูปแบบของระบบ
2.      สืบหาแหล่งที่มา – เชื่อมโยงความต้องการไปยังผู้ลงทุนที่เสนอความต้องการ
3.      สืบหาความต้องการ – เชื่อมโยงระหว่างความต้องการที่พึ่งพากัน
4. สืบหารูปแบบ - เชื่อมโยงระหว่างความต้องการและการออกแบบ


CASE tool support
1.      ที่จัดเก็บ
2.      ควรบริหารการจัดเก็บความต้องการในที่ที่ปลอดภัย
3.      บริหารการเปลี่ยนแปลง
4.      กระบวนการบริหารการเปลี่ยนแปลงเป็นกระบวนการ Workflow ซึ่งสามารถแสดงสถานภาพได้ และมีข้อมูลวิ่งไป-มาระหว่างสถานภาพเหล่านั้นเป็นแบบกึ่งอัตโนมัติ
5.      การบริหารการสืบย้อนรอย
6. ควรจัดให้มีการเชื่อมโยงระหว่างความต้องการเดิมและความต้องการที่เพิ่มขึ้นใหม่โดยอัตโนมัติ

Requirements change management
1.      ควรจะนำไปใช้กับทุกกระบวนการที่ทำให้ความต้องการเปลี่ยนไป
2.      หลักการ
3.      วิเคราะห์ปัญหาให้พิจารณาระหว่างปัญหาและคำขอเปลี่ยนแปลง
4.      วิเคราะห์การเปลี่ยนแปลง และค่าใช้จ่ายประเมินผลกระทบของการเปลี่ยนแปลงนั้น
5. ดำเนินการเปลี่ยน แก้ไขเอกสารความต้องการและเอกสารอื่นๆ ตามที่เปลี่ยนแปลง



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

Chapter 5


การวิเคราะห์ความต้องการ

ข้อกำหนดความต้องการ (requirement specification) เป็น[ข้อกำหนดที่กำหนดขึ้นในกระบวนการพัฒนาระบบ โดยก่อนจะลงมือพัฒนาจะมีการวิเคราะห์ความต้องการ หลังจากเราวิเคราะห์เสร็จก็จะมากำหนดความต้องการว่ามีอะไรบ้าง โดยความต้องการที่เรากำหนดขึ้นมานั้นนำมาใช้ประโยชน์ได้ 2 อย่าง คือ
มองในมุมมองของเจ้าของงาน จะใช้เป็นตัวอ้างอิงการเปิดประมูลให้กับผู้ที่จะทำการพัฒนา
เป็นส่วนหนึ่งในสัญญาเพื่อใช้ในการชำระค่าจ้าง กล่าวคือ ถ้าทำไม่ได้ตามข้อกำหนดความต้องการก็อาจจะไม่ชำระค่าจ้าง เป็นต้น
ประเภทของความต้องการ
User Requirement - เป็นความต้องการที่รวบรวมจากผู้ใช้ระบบโดยตรง เช่น ลำดับของช่องที่จะให้กรอกข้อมูล, จะกรอกอย่างไร, เรียงลำดับอย่างไร, ขนาดตัวอักษร, สีอะไร เป็นต้น
System Requirement – ความต้องการของระบบ เช่น ระบบต้องสามารถส่งข้อมูลผ่านระบบเครือข่ายได้, ข้อมูลต้องเก็บได้ทั้งที่ Server และ Work Station เป็นต้น
Software Specification – รายละเอียดทางด้านเทคนิคของซอฟต์แวร์ว่าต้องทำอะไรได้บ้าง
ความต้องการแบ่งออกได้เป็น 3 กลุ่มใหญ่ ๆ
Functional Requirement คือ Requirement หรือสิ่งที่ระบบควรจะทำ , หน้าที่หลักของระบบที่จะต้องทำ เช่น
ผู้ใช้ต้องสามารถค้นหาจากฐานข้อมูลทั้งหมด ก็ได้หรือ ค้นหาจากส่วนหนึ่งส่วนใดของฐานข้อมูลก็ได้
ระบบจะต้องมีโปรแกรมที่ช่วยให้อ่านเอกสารได้
Non-functional Requirement คือ Requirement อื่นๆที่ไม่ใช่หน้าที่หลักๆที่ต้องทำ แต่เป็นคุณสมบัติอื่นๆที่เราอยากได้จากระบบ เช่น ความปลอดภัยของระบบ, ความเชื่อถือได้ของระบบ, เวลาตอบสนอง, มีความสามารถทางด้าน I/O, ความสามารถในการเชื่อมต่อกับระบบอื่นๆ ตัวอย่างเช่น ระบบบัญชี โดยที่หน้าที่หลักของระบบบัญชีคือ บันทึกข้อมูล Transaction รายวัน, จะต้องมีการทำสรุปยอดบัญชีได้ สิ่งเหล่านี้คือสิ่งที่ระบบบัญชีควรทำคือ Functional Requirement แต่ถ้าบอกว่าต้องมีการใส่รหัสผ่าน สามารถเชื่อมโยงอินเทอร์เน็ตได้ , เชื่อมโยงกับระบบบัญชีของบริษัทอื่นได้ อันนี้ไม่ใช่หน้าที่หลัก ของระบบบัญชี แต่มันคือ Non-functional Requirement
Domain Requirement คือ เป็นเงื่อนไขอื่นจากสภาวะแวดล้อมที่ทำให้ระบบทำงานได้ หรือ เป็นการมองที่ว่าระบบที่พัฒนามานี้จะไปทำงานร่วมกับระบบอื่นๆหรือสภาวะแวดล้อมอื่นๆในองค์กร มันจะต้องมีความต้องการอื่นๆภายนอกมากระทบบ้างหรือไม่ เช่น เราออกแบบระบบบัญชี เมื่อนำไปใช้ จะไปทำงานร่วมกับระบบอื่นๆเช่นไปทำงานร่วมกับระบบการสมัครสมาชิกของ ชมรมคอมพิวเตอร์ ของ ม.นเรศวร โดยนำระบบบัญชีไปใช้ในส่วนการรับสมัคร เป็นต้น

Chapter 4


Project หมายถึง การดำเนินกิจกรรมตามแผนงานที่ได้จัดทำขึ้น โดยแต่ละกิจกรรมจะมีวันเริ่มต้นและสิ้นสุด เพื่อบรรลุเป้าหมายหรือวัตถุประสงค์ที่กำหนดไว้ ภายใต้ระยะเวลา แหล่งทรัพยากร และงบประมาณที่กำหนดไว้
Project Management หมายถึง กระบวนการในการกำหนด วางแผน ชี้แนะ ติดตาม และควบคุมโครงการพัฒนาระบบให้สามารถดำเนินการได้ตามระยะเวลาและงบประมาณที่กำหนดไว้ได้
Project Manager
เป็นผู้ที่คอยดูแล ให้คำแนะนำ ควบคุม และติดตามผลการดำเนินงานของโครงการ ให้เป็นไปตามแผนงานที่กำหนดขึ้น เพื่อบรรลุวัตถุประสงค์ในการพัฒนาระบบร่วมกัน
หน้าที่ของ Project Manager
•          กำหนดขอบเขตของโครงการ
•          วางแผนและจัดตั้งทีมงาน
•          จัดตารางการดำเนินงาน
•          กำกับและควบคุมโครงการ
ทักษะของ Project Manager
•          ความเป็นผู้นำ
•          การจัดการ
•          แก้ปัญหาต่าง ๆ ที่เกิดขึ้น
•          บริหารทีมงาน
•          การบริหารงานเมื่อเกิดการเปลี่ยนแปลงหรือในสภาวะที่มีความเสี่ยง
Project Management Process
แบ่งออกเป็น 4 ระยะ
•          ระยะการเริ่มต้นโครงการ
•          ระยะการวางแผนโครงการ
•          ระยะดำเนินโครงการ
•          ระยะปิดโครงการ

ระยะที่ 1: การเริ่มต้นโครงการ
•          จัดตั้งทีมงานจัดทำโครงการ
•          จัดทำแผนการในการเริ่มต้นโครงการ
•          จัดทำกระบวนการบริหารโครงการ
•          จัดทำสมุดโครงการ
ระยะที่ 2: การวางแผนโครงการ
•          แสดงรายละเอียดขอบเขตของโครงการและความเป็นไปได้
•          แบ่งกิจกรรมทั้งหมดของโครงการ
•          ประมาณการใช้แหล่งทรัพยากรและวางแผนการใช้ทรัพยากรนั้น
•          จัดตารางระยะเวลาดำเนินการในเบื้องต้น
•          วางแผนการติดต่อสื่อสารกับผู้ที่เกี่ยวข้องในระหว่างการพัฒนาระบบ
•          จัดทำมาตรฐานในการดำเนินงาน
•          ระบุและประเมินความเสี่ยง
•          ประมาณการใช้งบประมาณ
•          จัดทำรายงานแสดงสถานะของงาน (Statement of Work : SOW)
•          จัดทำ Baseline Project Plan
ระยะที่ 4: ดำเนินโครงการ
•          ดำเนินงานในแต่ละกิจกรรมที่วางแผนไว้
•          ติดตามผลการปฏิบัติงานของทีมงาน
•          คอยติดตามการเปลี่ยนแปลง
•          บำรุงรักษาชุดเอกสารของโครงการ
•          แจ้งความคืบหน้าในการดำเนินงาน

ระยะที่ 4: ปิดโครงการ
•          ปิดโครงการ
•          ทบทวนการดำเนินงานหลังปิดโครงการ
•          สิ้นสุดสัญญาในโครงการพัฒนาระบบ
เทคนิคการบริหารโครงการ
•          Gantt Chart
•          PERT/CPM Chart
Gantt Chart
•          พัฒนาขึ้นโดย Henry L. Gantt ในปี 1917
•          เป็นกราฟแท่งในแนวนอนซึ่งแสดงขอบเขตของระยะเวลาของกิจกรรมแต่ละขั้นตอน
•          โดยรายชื่อกิจกรรมจะถูกแสดงไว้ในแนวตั้งทางด้านซ้ายมือ
•          ระยะเวลาการทำงานจะแสดงในแนวนอนของแผนภาพ
กิจกรรม
•          1. รวบรวมความต้องการ
•          2. ออกแบบรายงาน
•          3. ออกแบบหน้าจอ
•          4. ออกแบบฐานข้อมูล
•          5. จัดทำเอกสาร
•          6. เขียนโปรแกรม
•          7. ทดสอบโปรแกรม
•          8. ติดตั้งโปรแกรม
PERT/CPM Chart
•          PERT Chart : Project Evaluation and Review Technique Chart
•          CPM Chart : Critical Path Method
PERT Chart
•          เป็นแผนภาพแสดงกิจกรรมของโครงการที่เชื่อมโยงกันในลักษณะของเครือข่าย (ข่ายงาน) ทำให้ทราบว่าจะต้องดำเนินกิจกรรมใดให้เสร็จสิ้นก่อนกิจกรรมถัดไป
•          โดยแต่ละกิจกรรมจะแทนด้วยเส้นลูกศร และเชื่อมโยงกันด้วยวงกลม (เรียกว่า โหนด) เพื่อบอกให้ทราบถึงจุดเริ่มต้นและจุดสิ้นสุดของแต่ละกิจกรรม
•          เหมาะสำหรับโครงการใหม่ที่ไม่เคยเกิดขึ้นเลย
•          การกำหนดเวลากิจกรรมของ PERT Chart จึงเป็นการกำหนดในรูปของความน่าจะเป็น (Probabilistic)

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

Critical Path : เส้นทางวิกฤต
•          หมายถึง เส้นทางที่ใช้เวลาในการดำเนินกิจกรรมรวมของโครงการนานที่สุด และกิจกรรมที่อยู่บนเส้นทางวิกฤตจะเรียกว่า กิจกรรมวิกฤต Critical Activity
การหาเส้นทางวิกฤต
•          เป็นการหาเส้นทางที่ใช้เวลานานที่สุดและเหลือเวลาน้อยที่สุด
•          ต้องทราบระยะเวลาโดยประมาณของแต่ละกิจกรรม กำหนดได้ 2 วิธี
–        Deterministic
–        Statistic
การกำหนดระยะเวลาด้วย Statistic
•          แยกแยะกิจกรมของโครงการ
•          กำหนดกิจกรรมที่ต้องดำเนินให้เสร็จสิ้นก่อนดำเนินกิจกรรมต่อไป
•          กำหนดระยะเวลาทั้งหมด 3 ค่า
–        เวลาทำกิจกรรมให้เสร็จสิ้นเร็วสุด Optimistic
–        เวลาทำกิจกรรมให้เสร็จสิ้นช้าสุด Pessimistic
–        เวลาทำกิจกรรมให้เสร็จสิ้นที่เป็นไปได้มากที่สุด Realistic
นำค่าทั้ง 3 มาคำนวณหาค่าใช้จริงเพียงค่าเดียว เรียกว่า ค่า ระยะเวลาคาดหวัง Expected Time โดยใช้สูตร
                ET = o + 4r + p
                           6


Chapter 3



วิศวกรรมระบบ(System Engineering)
วิศวกรรมระบบ
        ระบบ
        ระบบ ( System) หมายถึง กลุ่มขององค์ประกอบต่างๆ ที่สัมพันธ์กัน พึ่งพาอาศัยกัน และต้องปฏิสัมพันธ์กันเพื่อให้บรรลุวัตถุประสงค์ร่วมกัน
        ระบบในแวดวงพัฒนาสสารสนเทศเป็นระบบที่ประกอบไปด้วยฮาร์ดแวร์ ซอฟต์แวร์ และบุคลากร เพื่อประมวลผลข้อมูลให้ได้เป็นสารสนเทศที่ต้องการ ซึ่งก็คือ ระบบที่นำคอมพิวเตอร์มาสนับสนุนการทำงาน หรือ Computer-base System มีส่วนประกอบหลักๆ ดังนี้
1. ซอฟต์แวร์ (Software) คือโปรแกรมคอมพิวเตอร์
2. ฮาร์ดแวร์ (Hardware) ได้แก่ อุปกรณ์อิเล็กทรอนิกส์ที่ใช้ประมวลผล อุปกรณ์เชื่อมต่อ
3. บุคลากร (People) ได้แก่ ผู้ใช้ และผู้ควบคุมการทดงาน ของฮาร์ดแวร์และซอฟต์แวร์
4. ฐานข้อมูล (Database) คือส่วนจัดเก็บข้อมูลและสารสมเทศของระบบ
5. เอกสาร (Documentation) คือ เอกสารรายละเอียดทั้งหมดของระบบ
6. กระบวนการ (Procedure) ได้แก่ขั้นตอนการทำงานของระบบ
นอกจากองค์ประกอบข้างต้นและวัตถุประสงค์หลักขององค์กรแล้ว Computer-base System ยังต้องใช้องค์ความรู้อีกหลายด้านเพิ่มเติม เพื่อกำหนดวิธีการทำงานของระบบให้สามารถบรรลุวัตถุประสงค์อื่นๆ อีกด้วย บางครั้งจึงเรียกระบบลักษณะดังกล่าวว่า Socio-technical System ซึ่งมีคุณสมบัติ 3 ประการได้แก่
1. เป็นระบบที่มีคุณลักษณะ Emergent Properties คือ คุณลักษณะที่ไม่สามารถวัดได้จากระบบย่อยใดระบบหนึ่ง แต่จะต้องวัดจากการทำงานโดยรวมของระบบ
2. พฤติกรรมของระบบไม่แน่นอน บางครั้งระบบอาจแสดงผลลัพธ์ที่แตกต่างออกไปจากเดิม เนื่องจากข้อมูลนำเข้าที่มีลักษณะเฉพาะ หรือบางครั้งระบบอาจมีการตอบสนองในลักษณะอื่นขึ้นอยู่กับผู้ใช้ระบบ
3. เป็นระบบที่ถูกเพิ่มความสามารถให้บรรลุวัตถุประสงค์อื่นๆ นอกเหนือจากวัตถุประสงค์หลัก ทำให้ต้องมีการปรับปรุงระบบให้เข้ากับวัตถุประสงค์อื่นๆ เหล่านั้น ซึ่งอาจส่งผลให้การทำงานของระบบเกิดล้มเหลวได้
3.2 วิศวกรรมระบบ
        โดยส่วนใหญ่ เมื่อระบบทำงานผิดพลาดและไม่สามารถแก้ไขที่กระบวนการของระบบได้โดยตรง จึงต้องแก้ไขที่ซอฟต์แวร์ด้วยการเพิ่มประสิทธิภาพ หรือดัดแปลงการทำงานให้เข้ากับสภาพแวดล้อมที่เป็นสาเหตุในขณะนั้น บางครั้งอาจทำให้ประสิทธิภาพของซอฟต์แวร์ลดลง และส่งผลให้ลูกค้าไม่พอใจในที่สุด ในสถานการณ์ดังกล่าวอาจมองว่าปัญหาเกิดจากซอฟต์แวร์ไม่มีประสิทธิภาพ แต่แท้จริงแล้ว ปัญหาเกิดจากการออกแบบระบบ ที่ไม่ได้คำนึงถึงส่วนประกอบอื่นของระบบโดยเฉพาะสภาพแวดล้อมที่มีอิทธิพลต่อ ระบบ
        วิศวกรมระบบ (System Engineering) หมายถึง กระบวนการศึกษาและวิเคราะห์ของระบบที่มีความสลับซับซ้อน เพื่อสนับสนุนการทำงานในส่วนของวิศวกรรซอฟต์แวร์ กิจกรรมของวิศวกรรมระบบ จะถูกดำเนินไปพร้อมๆ กัน มีดังนี้
        1. กำหนดวัตถุประสงค์ของระบบ
        2. กำหนดขอบเขตระบบ
        3. แบ่งระบบออกเป็นส่วนๆ ตามฟังก์ชันการทำงานหรือคุณสมบัติของระบบ
        4. พิจารณาความสัมพันธ์ของส่วนประกอบต่างๆ ที่เกี่ยวข้องทั้งหมด
        5. กำหนดความสัมพันธ์ของปัจจัยนำเข้า ประมวลผล และผลลัพธ์
        6. พิจารณาปัจจัยที่มีส่วนเกี่ยวข้องในระบบ ไม่ว่าจะเป็นฮาร์ดแวร์ ซอฟต์แวร์ ฐานข้อมูล หรือแม้แต่ผลิตภัณฑ์ซอฟต์แวร์อื่นๆ เป็นต้อ
        7. กำหนดความต้องการในส่วนของการดำเนินการและฟังก์ชันทั้งระบบ
        8. สร้างแบบจำลองระบบ เพื่อใช้วิเคราะห์และพัฒนาให้สอดคล้องกับแบบจำลองซอฟต์แวร์ที่สร้างขึ้น
        9. นำเสนอและแลกเปลี่ยนข้อคิดเห็นกับผู้ที่เกี่ยวข้องกับระบบ ไม่ว่าจะเป็นผู้ใช้ระบบ เจ้าของระบบ หรือแม้แต่ผู้ที่เกี่ยวข้องกับผลประโยชน์ที่มีต่อระบบ



3.3 กระบวนการวิศวกรรมระบบ
        กระบวนการวิศวกรรมระบบ ประกอบไปด้วยขั้นตอนการทำงานทั้งหมด 7 เฟส ได้แก่

รูปที่ 3.1 แสดงกระบวนการวิศวกรรมระบบ (System Engineering Process)
        1. การกำหนดความต้องการ (Requirement Definition)
กระบวนการของวิศวกรรมระบบ เริ่มต้นด้วยการวิเคราะห์ภาพรวมของทั้งองค์กร เพื่อกำหนดนิยามความต้องการของระบบให้ชัดเจน ด้วยการกำหนดหน้าที่ว่าระบบควรทำอะไรได้บ้าง
2. การออกแบบระบบ (System Design)
เป็นการกำหนดรายละเอียดของฟังก์ชั่นในแต่ละส่วนประกอบของระบบ โดยมีกระบวนการย่อยดังนี้
1. แบ่งส่วนความต้องการ (Partition Requirement) วิเคราะห์ความต้องการและจัดโครงสร้างด้วยการแบ่งกลุ่มความต้องการด้วยวิธีที่เหมาะสม
2. กำหนดระบบย่อย (Identify Sub-System) นำระบบใหญ่มาแบ่งส่วนออกเป็นระบบย่อย ด้วยวิธีการหรือแนวทางที่เหมาะสม
3. กำหนดความต้องการในแต่ละระบบย่อย (Assign Requirement) กำหนดความต้องการของแต่ละระบบย่อย ซึ่งต้องสอดคล้องกับความต้องการทั้งหมดของระบบ และจะซับซ้อนขึ้นเมื่อความต้องการมีการเปลี่ยนแปลง
4. กำหนดฟังก์ชันของแต่ละระบบย่อย (Specify Sub-system Functionality) ซึ่งต้องสอดคล้องกับความต้องการของแต่ละระบบย่อยด้วย
5. กำหนดส่วนประสานของระบบย่อย แต่ละระบบย่อยจะต้องเตรียมส่วนประสานไว้บริการระบบย่อยอื่นๆ เพื่อการผนวกรวมระบบ


รูป 3.2 แสดงกระบวนการออกแบบระบบ
        3. การพัฒนาระบบย่อย (Sub-system Development)
เป็นการนำระบบย่อยที่ถูกกำหนดรายละเอียดไว้แล้วในระยะการออกแบบ มาสร้างตามรายละเอียดที่กำหนดไว้ ตามกระบวนการที่เหมาะสม การพัฒนาระบบย่อยโดยทั่วไปจะดำเนินการแบบขนาน เมื่อพบปัญหาจะต้องย้อนกลับไปแก้ไขทันที เนื่องจากการแก้ไขระบบหลังจากการผลิตเสร็จเรียบร้อยแล้วนั้น จะทำให้เกิดต้นทุนที่สูงมาก จึงต้องหันมาแก้ไขที่ซอฟต์แวร์เอง ซึ่งความซับซ้อนของซอฟต์แวร์นั้นมีลักษณะเป็นลูกโซ่ คือ ต้องเริ่มแก้ตั้งแต่ข้อกำหนดความต้องการ งานออกแบบ มาจนถึงโค้ดโปรแกรม จึงทำให้การแก้ไขซอฟต์แวร์นั้นเป็นเรื่องยาก
        4. การผนวกรวมระบบ (System Integration)
ระบบย่อยใดที่พัฒนาเสร็จสิ้นแล้ว จะถูกผนวกรวมเข้าด้วยกันจนกลายเป็นระบบที่เสร็จสิ้นสมบูรณ์ โดยใช้แนวทางที่เรียกว่า Big Bang ซึ่งเป็นการผนวกรวมระบบย่อยทั้งหมดในคราวเดียวกัน ซึ่งมองเห็นข้อผิดพลาดได้ยาก Incremental Integration Process เป็นการผนวกรวมระบบย่อยที่ละระบบ ทำให้มองเห็นความผิดพลาดของระบบได้ง่าย เมื่อผนวกรวมระบบแล้วต้องมีการทดสอบระบบอีกครั้ง
        5. การติดตั้งระบบ (System Installation)
เมื่อตรวจสอบประสิทธิภาพของระบบจนมั่นใจว่าระบบสมารถติดตั้งได้แล้ว ก็ทำการติดตั้งระบบให้ผู้ใช้ ใช้งาน และต้องทำการติดตามประสิทธิภาพการทำงานของระบบหลังการติดตั้งด้วย เมื่อพบข้อผิดพลาดก็ดำเนินการแก้ไขให้ถูกต้อง
        6. การเปลี่ยนแปลงระบบ (System Evolution)
ในช่วงระยะเวลาของการใช้งานระบบ  อาจเกิดการเปลี่ยนแปลงของสิ่งต่างๆ ทั้งในส่วนของระบบเองและสิ่งแวดล้อมระบบ โดยเจ้าระบบอาจต้องการแก้ไขข้อผิดพลาด รวมทั้งแก้ไขความต้องการของระบบเดิมให้เป็นไปตามความต้องการใหม่ เมื่อทุกฝ่ายที่เกี่ยวข้องกันตัดสินใจเปลี่ยนแปลงระบบ จะต้องวางแผนอย่างรอบคอบ เนื่องจาการเปลี่ยนแปลงระบบต้องใช้ต้นทุนค่อนข้างสูง
        7. การปลดระวางระบบ (System Decommission)
การปลดระวางระวางระบบ หมายถึง การเลิกใช้ระบบหลังพบว่าระบบไม่สามารถใช้งานได้อีกต่อไป
ข้อแตกต่างและความสัมพันธ์ระหว่างกระบวนการวิศวกรรมระบบกับกระบวนการวิศวกรรมซอฟต์แวร์ มีดังนี้
        1. ขอบเขตของการแก้ไขงานในระหว่างการพัฒนาระบบ
        เมื่อทีมงานสามารถกำหนดระบบที่จะพัฒนาได้แล้วหากในระหว่างการดำเนินงานอยู่ นั้นมีการเปลี่ยนแปลงความต้องการบางอย่างละการเปลี่ยนแปลงได้รับการอนุมัติ การแก้ไขจึงเป็นเรื่องยาก จึงต้องแก้ไขที่ตัวซอฟต์แวร์ของระบบซึ่งง่ายกว่า
        2. ความสัมพันธ์ของงานด้านวิศวกรรม
        ระบบหนึ่งระบบอาจต้องประยุกต์ใช้งานวิศวกรรมลายด้าน ทั้งนี้เพื่อให้ส่วนประกอบต่างๆของระบบ ทั้งฮาร์ดแวร์ ซอฟต์แวร์ บุคลากร และข้อมูลส่วนอื่นๆ มีความสัมพันธ์สอดคล้องกันเป็นอย่างดี เพื่อป้องกันการเกิดข้อผิดพลาดที่ไม่อาจคาดการณ์ได้ จึงต้องอาศัยวิศวกรหลายคนเพื่อรับผิดชอบงานแต่ละด้าน
3.4 ระบบกับองค์กร
        หากต้องการพัฒนาระบบงานใดระบบงานหนึ่งให้มีประสิทธิภาพและประสิทธิผล ทีมงานจะต้องทำความเข้าใจในองค์กรที่เป็นเจ้าของระบบนั้นด้วย
        วิธีที่จะทราบว่า เทคโนโลยีที่จะนำมาใช้ในองค์กรจะส่งผลกระทบต่อส่วนอื่นขององค์กรอย่างไร ทำได้โดยการศึกษาถึงความสัมพันธ์ระว่างองค์ประกอบทั้ง 5 ส่วนได้แก่

รูป 3.3 แบบจำลองของ H.J. Leavitt แสดงความสัมพันธ์เมื่อนำเทคโนโลยีไปใช้ในองค์กร
        1. บุคลากร (People) ศึกษาคุณสมบัติด้านกำลังความสามารถ และวุฒิภาวะ
        2. วัฒนธรรม (Culture) ศึกษาคุณสมบัติด้านทัศนคติ พฤติกรรม ทักษะการปรับตัว และการเรียนรู้
        3. เทคโนโลยี (Technology) ศึกษาเทคโนโลยีปัจจุบันและผลกระทบที่เกี่ยวข้องกับเทคโนโลยีใหม่ ระดับการใช้งานเครื่องมือ มาตรฐาน และระเบียบวิธีปฏิบัติ
        4. โครงสร้าง (Structure) ศึกษาโครงสร้างบุคลากร โครงสร้างองค์กร
        5. ภาระหน้าที่ (Task) ศึกษาด้านภาระหน้าที่ปัจจุบัน ความซับซ้อนของงานที่ได้รับมอบหมาย และวิธีการทำงาน

วันพฤหัสบดีที่ 27 กันยายน พ.ศ. 2555

Chapter 2



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

หัวข้อ
Software คืออะไร ?

Software Process คืออะไร ?

Software คืออะไร ? 

- คือ คอมพิวเตอร์โปรแกรมที่รวมถึง Documentation
- Software ถูกพัฒนาขึ้นมา 2 ลักษณะ
- Customize software – เป็น Software ที่ถูกพัฒนาขึ้นมาใช้ภายในองค์กร
- Generic software – เป็น Software ที่ถูกพัฒนาขึ้นมาเพื่อขาย
- Generic sw. มุมมองในการสร้างจะถูกเผื่อเอาไว้หมด แต่ Customize sw. จะทำเฉพาะที่ต้องการเท่านั้น
- เช่น ระบบบัญชี ถ้าเราจะพัฒนาขึ้นมาใช้ในองค์กร เราจะพัฒนาขึ้นมาเท่าที่ระบบบัญชีในบริษัทใช้เท่านั้น แต่ตรงข้ามถ้าพัฒนาเพื่อขาย เราต้องพิจารณาให้กว้างมากกว่า ว่าถ้าเกิดกรณีอื่นๆจะเป็นไงบ้าง ทำให้Software 2 ตัวนี้มีความต่างกันมาก แต่ที่ต่างกันมากที่สุด คือ Requirement

Software Process คืออะไร ? 

คือกระบวนการที่ทำการพัฒนา Software ให้ประสบผลสำเร็จ แบ่งเป็น 4Process ใหญ่ๆ
- Specification – เป็นกระบวนการกำหนดคุณสมบัติของ software ที่พัฒนา
- Development – เป็นขั้นตอนการพัฒนา software
- Validation – เป็นขั้นตอนการตรวจสอบความถูกต้องของ software ให้ตรงกับความต้องการ
- Evolution – เป็นกระบวนการทำให้ software มีวิวัฒนาการ เป็นการปรับเปลี่ยนเพิ่มสิ่งดีๆเข้ามาและเอาสิ่งที่ไม่ดีหรือไม่จำเป็นออกไป ซึ่งจะเปลี่ยนแปลงไปตามเทคโนโลยีหรือตามความต้องการของผู้ใช้

Software Process Model คืออะไร ?
คือแบบจำลองของกระบวนการการพัฒนา software ของ 4 ขั้นตอนที่กล่าวมา เราสามารถเขียนเป็นแผนภูมิหรือรูปภาพที่อ่านแล้วเข้าใจง่ายซึ่งจะเป็นแล้วแต่มุมมองของผู้ทำการพัฒนา
มุมมองที่น่าสนใจ
1. Work Flow - เป็นการให้ความสำคัญกับลำดับการทำงานเป็นหลัก ว่าจะทำงานโปรเซสอะไรก่อนหลัง
2. Data Flow – เป็นการให้ความสนใจกับข้อมูลเป็นหลัก ( นิยมใช้ DFDในการเขียน )
3. Role / Action – เป็นการสนใจว่าใคร ทำหน้าที่อะไรบ้าง , ก่อนหรือหลังหรือพร้อมกัน
วิธีการที่ใช้ในการพัฒนา
- Waterfall Model – เป็นการทำงานเหมือนน้ำตกเป็นขั้นๆลงมา
- Evolution Model – เป็นการทำไปปรับปรุงไปให้ดีขึ้นเรื่อยๆ
- Formal Transformation Model – เป็นการพัฒนาอย่างเป็นทางการและเข้มงวด มีการวัดผลที่ชัดเจนและรัดกุม ส่วนใหญ่ใช้กับงานความปลอดภัยที่สำคัญ มีผลกระทบที่รุนแรง เช่น software ควบคุมการจราจรทางอากาศ , software ที่ใช้ติดตามอัตราการหายใจของคนไข้
- Reusable Object Model – เป็นการพัฒนาเป็นชิ้นย่อยๆ โดยแต่ละชิ้นมีการออกแบบที่กว้างพอให้นำไปใช้ใหม่ในภายหลังได้

ตัวอย่างภาพ Spiral Model


ตัวอย่างภาพ V and V Model


Waterfall Model

ตัวอย่างภาพ Spiral Model


ตัวอย่างภาพ V and V Model


Waterfall Model


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) ซึ่งการใช้งานที่ง่ายและจดจำง่าย รูปแบบหน้าจอไม่ซับซ้อนจนเกินไป เข้าใจได้ง่าย สะดวก และเรียนรู้ได้เร็ว
4.ด้านการบำรุงรักษา(Maintainability) การปรับปรุงการอัพเกรดเวอร์ชั่น ไฟล์ข้อมูลเก่ายังสามารถใช้ในเวอร์ชั่รใหม่ๆได้ ไม่ส่งผลต่อข้อมูลที่มีอยู่เดิม
5.ความแข็งแรง(Robustness) กระบวนการสามารถทำงานต่อได้แม้นว่ามีปัญหาที่ไม่คาดการณ์เกิดขึ้น

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

Summery Chapter 1
วิศวกรรมซอฟต์แวร์ คือ การวางฐานโดยใช้หลักการทางวิศวกรรมเพื่อให้ซอฟต์แวร์มีความน่าเชื่อถือ และสมารถใช้งานได้อย่างมีประสิทธิภาพ และราคาต่ำที่สุด

กระบวนการพัฒนาซอฟต์แวร์ มี 4 Process
1.การกำหนดความต้องการ(Specification) การกำหนดความต้องการที่ชัดเจน โดยมีเงื่อนไข ผลิตเพื่อใคร  และใช้อย่างไร 
2.การพัฒนาระบบ(Development) การพัฒนาระะบบเพื่อให้ใช้งานทีมีประสิทธิภาพขึ้น โดยการออกแบบก่อนการพัฒนา
3.การตรวสอบ(Validation) การทดสอบเพื่อให้ซอฟต์แวร์ตรงตามความต้องการของผู้ใช้หรือไม่
4.การปรับปรุงระบบ(Evolution) การปรับเปลี่ยนเพื่อให้ซอฟแวร์มีวิวัฒนาการที่ดีขึ้น และสามารถเปลี่ยนแปลงตามยุคสมัยได้ดีขึ้น 
Software Process Model แบบจำลองการพัฒนาซอฟต์แวร์
1.แบบที่มีมุมมองลักษณะเฉพาะทาง อาจมีการแสดงเป็นรูปภาพ
2.แบบที่มีมุมมองกระบวนการทำงาน มีตัวอย่าง ดังนี้
 -Work Flow ลำดับความสำคัญของขั้นตอนการทำงาน เช่น Flowchart , Microsoft Visio
 -Data Flow ลำดับความสำคัญของข้อมูล เช่น Data Flow Diagram
 -Role/Action ลำดับความสำคัญของใครทำอะไร แบ่งหน้าที่ User Case Diagram
3.แบบจำลองทั่วๆไป มีตัวอย่างดังนี้
 -Waterfall แบบจำลองแบบน้ำตก/Evolutionary Development แบบพัฒนาระบบไปเรื่อยๆ
 -Formal Transformation แบบทางการ มีรูปแบบการทำงานที่ชัดเจน/reusable Object Model แบบแยกระบบการทำงานย่อยๆ แล้วค่อยมารวมกัน

Computer-Aided Software Engineering(CASE) ซอฟต์แวร์ที่พัฒนาขึ้นเพื่อมาสร้างซอฟต์แวร์ด้วยกันเอง
-Upper-CASE การพัฒนาที่รองรับในช่วงแรกๆ เช่น การเก็บความต้องการ การออกแบบ
-Lower-CASE การพัฒนาโดยการเขียนโปรแกรม การทดสอบคววามผิดพลาด


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

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

หน่วยงานที่กำหนดประมวลจริยธรรม Code of Ethics คือ ACM/IEEE ให้กับวิศวกรรมซอฟต์แวร์ มีข้กำหนด 8 ข้อดังนี้
1.PUBLIC วิศวกรรมซอฟต์แวร์จะต้องปฎิบัติหน้าที่โดยคำนึงถึงผลประโยชน์ส่วนรวมด้วย
2.CLIENT AND EMPLOYER วิศวกรรมซอฟต์แวร์จะต้องคำนึงถึงความต้องการของลูกค้าและนายจ้าง
3.PRODUCT วิศวกรรมซอฟต์แวร์จะต้องผลิตผลงานตามหลักสูงสุดของหลักวิชาการ
4.JUDGMENT วิศวกรรมซอฟต์แวร์จะต้องตัดสินใจอย่างอิสระ เป็นตัวของตัวของตัวเอง โดยยึดมั่นในหลักวิชาการ
5.MANAGEMENT  วิศวกรรมซอฟต์แวร์จะต้องเผยแพร่การรักษาจริยธรรมนี้ ในฐานะผู้บริหาร หรือหัวหน้า
6.PROFESSION  วิศวกรรมซอฟต์แวร์จะต้องยึดมั่นในคุณธรรม และรักษาชื่อเสียงในวิชาชีพโดยคำนึงถึงผลปรโยชน์ส่วนรวม
7.COLLEAGUES  วิศวกรรมซอฟต์แวร์จะต้องให้ความเป็นธรรม  และสนับสนุนเพื่อนร่วมงาน
8.SELF  วิศวกรรมซอฟต์แวร์จะต้องพัฒนาตัวเองอยู่เสมอ

อุปสรรคการักษาประมวลจริยธรรรม
1.ขัดแย้งกับนโยบายยหลักการของผู้บริหารสูงสุด
2.นายจ้างเป็นปฎิบัติอย่างไร้จริยธรรม
3.เข้าร่วมในการสร้างอาวุธทำลายอย่างรุนแรง