วันจันทร์ที่ 13 สิงหาคม พ.ศ. 2555

Chapter 3 สรุป


Systems Engineering
    เป็นเรื่องของคนในองค์กร บุคคลที่ทำหน้าที่ออกแบบ สร้าง ซ่อมบำรุง ซอฟต์แวร์ และฮาร์ดแวร์ เพื่อให้ระบบดำเนินงานได้ตามต้องการ

Emergent properties *ความน่าเชื่อถือ เป็นคุณสมบัติของระบบ
       สามารถวัดได้จาก
             1. วัดน้ำหนักความสำคัญของระบบ
             2. วัดความเชื่อถือของระบบ
             3. วัดความสามารถในการใช้งานจริง

System Engineering Process *โปรเซส วิศวกรรมระบบ มีอยู่ 7 โปรเซส


1. System requirement definition ขั้นตอนการเก็บรวบรวมความต้องการของระบบ 
           มี 3 ลักษณะ คือ
                   1 Functional requirement ฟังก์ชันการทำงานของระบบมีอะไรบ้าง
                   2 Non-Functional requirement คุณสมบัติที่ไม่เกี่ยวข้อกับการทำงานของระบบ
                         ที่แท้จริง
                   3 Unacceptable สิ่งที่ไม่ต้องการให้เกิดขึ้นกับระบบ เช่น ไฟดับ Server down เป็นต้น


         ปัญหาที่พบในการเก็บความต้องการ
                   1. ความต้องการเปลี่ยนโดยที่ระบบยังพัฒนาไม่เสร็จ อาจเกิดจากเวลาเปลี่ยนความ
                        ต้องการของคนเปลี่ยนตามเวลา เพราะเทคโนโลยีเปลี่ยน
                   2. ระยะเวลาในการพัฒนานาน ฮาร์ดแวร์เปลี่ยน ซอฟต์แวร์เปลี่ยน เทคโนโลยีเปลี่ยน
                   3. กำหนด Non-functional ได้ยาก เพราะสามารถมองเห้นได้เมื่อใช้งานไปแล้วเท่านั้น

1. Inception (ศึกษาภาพรวม) กระบวนการเป็นระยะเวลาการเริ่มต้นของการดำเนินงาน
   - กำหนดขอบเขต
       - กำหนดหน้าที่หลัก

   2. Elaboration (ออกแบบ) ขั้นตอนการทำความเข้าใจของระบบ

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

RUP good practice

1. พัฒนาซอฟต์แวร์แบบซ้ำ ๆ
2. บริหารความต้องการให้ดีความต้องการไหนสำคัญที่สุด
3. ควรใช้ Component ควรใช้ คลาส ที่มีอยู่แล้ว
4. จะนำโมเดลมาช่วยในการออกแบบ
5. จะต้องมีการตรวจสอบซอฟต์แวร์ให้มีคุณภาพอยู่เสมอ
6. ต้องควบคุมการเปลี่ยนแปลงของซอฟต์แวร์ให้น้อยที่สุด 

       Case classification

(สามารถแบ่งออกเป็น 3 ประเภท)

1. จำแนกหน้าที่การทำงาน
2. กระบวนการทำงาน
3. จำแนกการประสานกัน

      


Chapter 3 งานที่ได้รับมอบหมาย


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


Gantt Chart

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



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


เครือข่าย 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 สรุป


Chapter 2
(Software Process)
Waterfall Model
1. Requirements definition กำหนดความต้องการ
2. System and Software design การออกแบบระบบ และออกแบบ SW ลงมือทำและ ทดสอบระบบย่อย ๆ
3. Implementation and unit testing ข้อเสียที่แก้ไขไม่สมบูรณ์จะต้องไปออกแบบใหม่
4. Integration and System testing เชื่อมโยงย่อย ๆต่าง ๆทดสอบระบบใหญ่
5. Operation and maintenance นำไปใช้และบำรุงรักษา

Process ของการทำงาน Model คืออะไร

1. Outline Description กำหนดเค้าโครงร่างว่าเราจะได้อย่างนี้แบบนี้
2. Specification เพิ่ม Spec
3. Development แล้วมาพัฒนาก็จะมีการเพิ่ม Version เข้าไป
4. Validation ตรวจสอบระบบก็จะได้ Version สุดท้าย
                     
Waterfall  model  problems (น้ำตกจำลองปัญหา)
1.พื้นที่ไม่ยืดหยุ่นของโครงงานเข้าไปในขั้นที่แตกต่างทำให้มันที่ยากที่จะตอบสนองให้ความต้องการลูกค้าที่เปลี่ยน
2.แบบตัวอย่างนี้คือเหมาะสมเท่านั้นเมื่อความต้องการดี-ที่ถูกเข้าใจ
3. ระบบธุรกิจเล็กน้อยมีความต้องการคงที่
4.แบบตัวอย่างน้ำตกที่ถูกใช้ส่วนมากกับโครงงานวิศวกรรมระบบมากมายที่ซึ่งระบบถูกพัฒนาที่หลายที่ตั้ง

EVOLUTIONARY DEVELOPMENT


Evolutionary development (การพัฒนา Evolutionary)
1. Problems (ปัญหา)
ขาดแคลนความสามารถที่จะมองเห็นได้กระบวนการ
ระบบโครงสร้างอย่างน่าสงสารบ่อยๆ
ความชำนาญพิเศษ คนที่ใช้ต้องมีทักษะสูง
2.   Applicability (การนำไปใช้)
สำหรับขนาดเล็ก หรือกลาง-ระบบภายใน
สำหรับส่วนของระบบมากมายส่วนติดต่อผู้ใช้
สำหรับระบบช่วงระยะเวลาของการดำรงสั้น
Incremental development Process activities

1. Software Specification = SW-S กำหนดระบบต้อง function เงื่อนไขว่ามีอะไรบ้าง
2. Software design and implementation = SW สร้าง และการออกแบบ SW ให้ตรงกับข้อกำหนด
3. Software validation = SW ทดสอบความถูกต้องของ SW
4. Software evolution = การปรับปรุง SW


                 กิจกรรมในการออกแบบซอฟต์แวร์

-  ออกแบบสถาปัตยกรรม
-  กำหนด Space
-  ออกแบบหน้าจอ
-  ออกแบบส่วนประกอบย่อย
-  ออกแบบส่วนโครงสร้างใหญ่
-  ออกแบบการไหลของระบบ





Spiral delivery
Spiral Development

     เป็นการพัฒนาหนุมเป็นรอบๆ เป็นเกียววนคล้ายก้นหอย แบ่งออกเป็น 4 ส่วน
         1. กำหนดวัตถุประสงค์และความสำคัญ
         2. ประเมินความเสี่ยง
         3. พัฒนา และตรวจสอบความต้องการ
         4. วางแผน



Chapter 2 งานที่ได้รับมอบหมาย

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

2. Waterfall model แตกต่างจาก Spiral model อย่างไร จงอธิบายตามความเข้าใจของนักศึกษา 
    ตอบ ตามความเข้าใจของผม Waterfall model แตกต่างจาก Spiral model 2 อย่างด้วยกัน คือ 1. ขั้นตอนในการพัฒนาระบบ และ 2. การวนกลับไปแก้ไขในขั้นตอนก่อนหน้า Waterfall model จะย้อนกลับไปแก้ไขในขั้นตอนก่อนหรือขั้นตอนที่ผ่านมาแล้ว ก็ต่อเมื่อเกิดปัญหาในการพัฒนา หรือต้องการเพิ่มความต้องการในด้านต่างๆ ให้กับระบบ ซึ่ง Spiral model จะต่างกันคือเป็นการวนซ้ำตั้งแต่ต้นจนจบแล้ววนซ้ำไปเรื่อยๆ  



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

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

สรุป Chapter 1


สรุปบทที่ 1

                            Chapter 1 Introduction to Software Engineering

จุดประสงค์

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

ซอฟต์แวร์ คืออะไร

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


กฎของวิศวกรรมซอฟต์แวร์ประมวลจริยธรรมเบื้องต้น มี 8 ประการ

1. วิศวกรรมซอฟต์แวร์จะต้องทำหน้าที่โดยคำนึงถึงส่วนร่วม

2. วิศวกรรมซอฟต์แวร์ จะต้องคำนึงถึงความต้องการของลูกค้า และนายจ้าง

3. วิศวกรรมซอฟต์แวร์ จะต้องผลิตผลงานโดยมาตรฐานสูงสุด

4. วิศวกรรมซอฟต์แวร์ จะต้องตัดสินใจเป็นอิสระเป็นตัวของตัวเอง โดยยึดหลักตามวิชาการ

5. วิศวกรรมซอฟต์แวร์ ถ้าเป็นผู้บริหารหรือผู้จัดการ จะต้องสนับสนุนเผยแพร่จริยธรรมนี้

6. วิศวกรรมซอฟต์แวร์ จะต้องยึดมั่นในคุณธรรม และยึดมั่นในชื่อเสียงในวิชาชีพ โดยกำหนดผลโดยส่วนร่วม

7. วิศวกรรมซอฟต์แวร์ จะต้องเป็นธรรม และสนับสนุนเพื่อนรวมงาน

8. วิศวกรรมซอฟต์แวร์ จะต้องพัฒนาตัวเองอยู่เสมอ

อุปสรรคในการประมวลในจริยธรรมเบื้องต้น

1. ขัดแย้งในหลักการกับผู้บริหารสูงสุด
2. นายจ้างปฏิบัติอย่างไร้จริยธรรม
3. เข้าร่วมอาวุธร้ายแรง

Chapter 1 งานที่่ได้รับมอบหมาย


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

1.2 จงอธิบายเกี่ยวกับ Software Crisis ตามความเข้าใจของนักศึกษา

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

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

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

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