Saturday, September 29, 2012

Chapter 11 User Interface Design


กระบวนการออกแบบหน้าจอ UI (User Interface)



ตัวอย่าง เทคนิคการประเมิน User Interface

-แบบสอบถาม user feedback
-บันทึกวีดีโอ user เมื่อใช้ระบบ ว่ามีความรู้สึกอย่างไรบ้าง
-เขียนโปรแกรมทำหน้าที่แอบเก็บข้อมูลการใช้งานของ user ว่า user ทำอะไรบ้าง
-เพิ่มช่องทาง comment ในโปรแกรม

การนำเสนอข้อมูล

1. แบบ Static Information – จะถูกกำหนดไว้ในตอนเริ่มต้น และไม่มีการเปลี่ยนแปลงอีก 
2. แบบ Dynamic Information จะมีการเปลี่ยนแปลงข้อมูลระหว่างการทำงานกับ user
2.1 แบบ Digital จะเน้นเป็นแบบตัวเลข เป็นการ Sampling ค่าขึ้นมา
2.2 แบบ Analogue เน้นการแสดงผลเป็นแบบรูปภาพ ค่าต่อเนื่องกันไป 

ปัจจัยที่จะดูว่าเมื่อไรควรจะใช้การนำเสนอแบบใด

1. ดูว่าต้องการข้อมูลขัดเจนแค่ไหน 
2. ต้องการความเร็วในการแสดงข้อมูลหรือไม่
3. ต้องการที่จะให้มีการทำอะไรด้วยหรือเปล่า 
4. ถ้าเป็นการแสดงผลแบบ Direct manipulation จะต้องเป็นการนำเสนอข้อมูลแบบ Dynamic
5. ต้องการข้อมูลเป็นตัวเลขหรือไม่ 
6. การเปรียบเทียบข้อมูลสำคัญแค่ไหน 

การใช้สี

- อย่าใช้สีมากเกินไป 
- อนุญาตให้ user ปรับแต่งการใช้สีได้
- พยายามใช้สีที่คงเส้นคงวา สอดคล้องกัน เช่น ฟอร์มรับข้อมูลควรจะมีสีโทนเดียวกัน
- หลีกเลี่ยงสีที่ตัดกัน 
- เปลี่ยนสีถ้าสถานะมีการเปลี่ยนแปลงไป
- ระวังเรื่องสีที่ไม่สามารถแสดงได้ในบาง Resoltion อย่างในเว็บเพจ สีที่แสดงออกมาได้จริง ( ประมาณ 255 สี ) ในเครื่องทั่วไปส่วนใหญ่เราจะเรียกว่า Safe Color Pallette 

Tuesday, September 25, 2012

Chapter 7 System Models


System modeling

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

มุมมองจากภายนอก (External perspective) ซึ่่งแสดง context หรือ สิ่งแวดล้อม

มุมมองด้านพฤติกรรม (Behavioural perspective) แสดงพฤตกรรมของระบบ 

มุมมองด้านโครงสร้างของข้อมูล (Structural perspective) รวมถึงสถาปัตยกรรมของข้อมูล

ชนิดของ Model มี 5 แบบคือ

1. Data processing model แสดงการประมวลผลข้อมูลเป็นหลัก
2. Composition model แสดงส่วนประกอบของสิ่งที่สนใจ
3. Architectural model แสดงระบบโดยรวม และระบบย่อยๆ
4. Classification model แสดงคุณสมบัติที่คล้ายกัน
5. Stimulus/response model แสดงปฏิกิริยาตอบสนองที่มีการกระตุ้นจากสิ่งเร้า



Context models


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




จากรูปจะเห็นว่าระบบตู้เบิกเงิน ATM นั้นมีระบบย่อยๆ ที่เกี่ยวข้องถึง 6 ระบบ คือ ระบบรักษาความปลอดภัย (Security system) ระบบบัญชีที่สาขา (Branch accounting system) ระบบฐานข้อมูลบัญชี (Account database) ระบบการให้บริการ (Branch counter system) ระบบฐานข้อมูลการใช้งาน (Usage database) และ ระบบการบำรุงรักษา (Maintenance system)
การทำงานของตู้เบิกเงิน ATM มีดังนี้ เมื่อลูกค้าต้องการเบิกเงินจากตู้ ATM ก็จะต้องไปตรวจสอบ username และ password จากระบบรักษาความปลอดภัย และสถานการณ์เงินจากระบบฐานข้อมูลบัญชี จากนั้นจึงจะจ่ายเงินให้ และบันทึกข้อมูลการใช้ไว้ที่ ฐานข้อมูลการใช้งาน เพื่อใช้ในการตรวจสอบภายหลัง และปรับปรุงยอดคงเหลือที่ ฐานข้อมูลบัญชี และ ฐานข้อมูลบัญชีที่สาขาต่อไป ส่วนระบบการบำรุงรักษาจะทำหน้าที่ในการสำรองข้อมูล ดูแลระบบให้ทำงานได้อย่างต่อเนื่อง


Process models

Process models จะแสดงขั้นตอนการทำงานทั้งภาพรวม และ รายละเอียด และการใช้ Data flow model จะช่วยให้เข้าใจขั้นตอนและลำดับการการทำงานของระบบ

Behavioural models

Behavioural models ใช้อธิบายพฤติกรรมโดยรวมของระบบ ซึ่งมี 2 แบบคือ
• Data-flow models : แสดงการไหลของข้อมูลในระบบ
• State machine models : แสดงเหตุการณ์และการตอบสนองภายในระบบ



Data-flow models

ใน Data-flow model นั้นมีการใช้เครื่องมือที่เรียกว่า Data-flow diagram เพื่อแสดงการไหลของข้อมูลภายในระบบตั้งแต่ต้นจนจบ ทั้งนี้ผู้ใช้ที่ไม่มีความรู้เรื่องคอมพิวเตอร์เลยก็สามารถจะเข้าใจและสามารถตรวจสอบความถูกต้องของระบบที่กลังวิเคราะห์อยู่ได้
Data flow diagrams เรียกโดยย่อว่า DFD จะมองที่ฟังก์ชั่นการทำงานเป็นหลัก (Functional perspective) และพิจารณาการไหลของข้อมูลไปในแต่ละฟังก์ชั่น ในกรณีที่ระบบมีความซับซ้อนมากและมีระบบย่อยหลายระบบ DFD ก็จะแสดงการไหลของข้อมูลระหว่างระบบย่อยก็ได้ ซึ่ง DFD สามารถจะทำได้ในหลายๆ level เช่น Level 1 แสดงการไหลของข้อมูลระหว่างระบบ Level 2 ก็ขยายรายละเอียดและเจาะจงไปในแต่ละระบบย่อย เป็นต้น



Data Models

ในการพัฒนาซอฟต์แวร์ขนาดใหญ่นั้นจะมีข่อมูลจำนวนมากและมีขนาดใหญ่ จำเป็นที่จะ
ต้องมีระบบฐานข้อมูล (Database) มารองรับ ซึ่งจะใช้เทคนิคที่เรียกว่า ERA modeling (Entity-Relation-Attribute) 

 Attribute หมายถึงชื่อ Field เช่น C-date หมายถึงวันที่สร้าง (Create date) หรือ M-date หมายถึงวันที่มีการแก้ไข (Modification date) เป็นต้น
Entity หมายถึง แฟ้มข้อมูลหรือที่เก็บข้อมูล เช่น Design หมายถึงรายละเอียดผู้พัฒนาซอฟต์แวร์ ซึ่งในระบบนี้ประกอบด้วย Node Link และ Label เป็นต้น 



Inheritance models

สิ่งที่เรียกได้ว่าเป็นจุดเด่นของรูปแบบ Object oriented คือ ลำดับชั้นของวัตถุ (Object hierarchy) และการถ่ายทอดคุณสมบัติ (Inheritance)

Multiple inheritance

นอกจาก Object จะสามารถถ่ายทอดคุณสมบัติจาก Parent object สู่ Child object ได้แล้ว Object ยังสามารถถ่ายทอดคุณสมบัติข้ามไปยัง Object อื่นๆได้ด้วยซึ่งเรียกว่า Multiple inheritance ดังรูป


Object behavior modeling

เพื่อที่จะให้เห็นพฤติกรรมของ Object ในภาษา UML จะใช้ Behavior modeling ในการแสดงขั้นตอน หรือ กระบวนการ ตั้งแต่ต้นจนจบ เพื่อติดตามการทำงานของแต่ละ Object ดังรูปแสดงพฤติกรรมของการสั่งสื่ออิเลคทรอนิกส์





สรุป

การจัดทำ System model ของระบบเป็นเครื่องมือที่ช่วยนักวิเคราะห์ระบบให้เข้าใจหน้าที่การทำงานของระบบ และใช้เป็นสื่อกลางเพื่อสื่อสารกับลูกค้า ในมุมมองจากภายนอก (External perspective) มุมมองด้านพฤติกรรม (Behavioural perspective) มุมมองด้านโครงสร้างของข้อมูล (Structural perspective) รวมถึงสถาปัตยกรรมของข้อมูล แต่อย่างไรก็ตามการทำ System model ก็ยังคงมีขีดจำกัดอยู่ เช่น ใช้ไม่ได้กับความต้องการแบบ non-function หรือไม่มีรายละเอียดของแต่ละขั้นตอนที่ชัดเจนเพียงพอ นอกจากนี้ยังทำให้เกิดเอกสารอย่างมากมายเกินความจำเป็น ในบางกรณีซับซ้อนและยากที่ผู้ใช้จะสามารถเข้าใจได้

Thursday, September 20, 2012

Chapter 6 Requirements Engineering


วิศวกรรมความต้องการคืออะไร(Requirements engineering )

                การรวบรวมข้อมูลความต้องการต่างๆ ระบบ ไม่ว่าจะเป็น ข้อกำหนดหรือความต้องการต่าง ๆ ของผู้ใช้งาน เอกสารข้อมูล ฮาร์ดแวร์ ข้อบังคับขององค์กร รวมทั้งกฎหมาย ในรูปแบบของ “Engineering” ซึ่งคำว่า “Engineering” ในที่นี้หมายถึง เป็นระบบ และมีการกระทำแบบซ้ำ

RE มีความคล้ายคลึงหลายอย่างกับ System Analysis ในหลักการแล้ว System Analysisจะใช้สำหรับวิเคราะห์ ระบบธุรกิจซึ่งจะเจาะจงไปในทางระบบธุรกิจมากกว่าแต่ RE จะเจาะจงทั้งในระบบธุรกิจและระบบคอมพิวเตอร์ด้วย

กระบวนการของวิศวกรรมความต้องการ(Requirements engineering process)


คือกลุ่มของกิจกรรมที่ใช้สร้าง บทกำหนดของความต้องการ (Requirement definition) และ การระบุความต้องการ (requirement specification) ที่บรรจุเอกสารความต้องการ (requirement document หรือ software requirement document) เอกสารชุดนี้นับเป็นจุดเริ่มต้นในการพัฒนาในขั้นตอนต่อไป (การออกแบบ, การเขียนโปรแกรม, การทดสอบ และการบำรุงรักษาระบบ) เพราะฉะนั้นข้อกำหนดความต้องการจึงต้องมีการชัดเจน สอคล้องกัน ขั้นตอนต่างๆ ของกระบวนการ requirement engineering ยังไม่มีชัดเจนเนื่องจากขึ้นอยู่กับว่าแต่ละองค์กรจะมีระบบอย่างไร


ขั้นตอนที่ 1 Software Specification กระบวนกำหนดความต้องการ

Requirements engineering process







1. Feasibility Study ศึกษาความเป็นไปได้ เช่น งบประมาณ เวลา Software Hardware
2. Requirement elicitation and analysis สกัดความต้องการ เพื่อให้รู้ว่าความต้องการของระบบ
มีอะไรบ้าง
3. Requirement specification กำหนดความต้องการ
4. Requirement validation ขั้นการตรวจสอบว่าตรงจามความต้องการหรือไม่


ขั้นตอนที่ 2 Software design and implementation

Design เป็นขั้นตอนการออกแบบและเขียนโปรแกรม
Implementation การนำไปใช้งาน

Debugging process แบบจำลองการแก้่ไขโปรแกรม

1. หาตำแหน่งที่ผิดพลาดของโปรแกรม
2. ออกแบบว่าจะแก้ไข ข้อผิดพลาดที่เกิดขึ้นอย่างไร
3. ซ่อมบำรุง ทำการแก้ไข
4. ทดสอบการแก้ไข ว่าถูกต้องและผ่านหรือไม่

ขั้นตอนที่ 3 Software validation การทดสอบซอฟต์แวร์

Verification ทดสอบว่าซอฟต์แวร์ที่พัฒนาขึ้นตรงกัยความต้องการหรือไม่ โปรแกรมเมอร์ทดสอบ
Validation ทดสอบว่าตรงกับความต้องการของลูกค้าหรือไม่

Testing Process

1. Component or unit testing การทดสอบทีละส่วน ทีละระบบ
2. System testing การทดสอบทั้งระบบรวมกัน
3. Acceptance testing การทดสอบเพื่อการยอมรับ จากผู้ใช้งานจริง และใช้ข้อมูลจริง

ขั้นตอนที่ 4 Software evolution ขั้นตอนในการเปลี่ยนแปลงโปรแกรมตามความต้องการของ User

เป็นขั้นตอนการปรับปรุงโปรแกรมให้ทันยุคทันสมัย

The Rational Unified Process คือ คอมพิวเตอร์ที่ช่วยในการสร้างซอฟต์แวร์ RUP เขียนอยู่บน UML
การเขียนโปรแกรมแบบ UML มี 3 มุมมอง
1. แสดงขั้นตอนการทำงานให้เห็นเป็นขั้นๆ
2. แสดงให้เห็นกิจกรรมว่ามีอะไรบ้าง
3. แสดงให้เห็นถึงการปฎิบัติงานที่ดี



RUP phase model แบ่งออกเป็น 4 ขั้นตอน (โดยแต่ละขั้นมีการทำซ้ำบ่อยครั้ง)

***สถาปัตยกรรม มีจุดเด่น คือ การค้นหาความเสี่ยงและวิเคราะความเสี่ยง
1. Inception ระยะเริ่มต้นของการดำเนินงาน กำหนดขอบเขตหน้าที่หลักของระบบ
2. Elaboration ทำความเข้าใจระบบ
3. Construction ออกแบบ เขียน ทดสอบ โดยแบ่งออกเป็นส่วนๆ โดยให้ Programmer ช่วยกัน
เขียน แล้วค่อยนำมารวมกัน หลังจากนั้นจะได้ ซอฟต์แวร์ และ เอกสารของซอฟต์แวร์

ข้อปฎิบัติการใช้ RUP

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

Monday, September 17, 2012

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

Friday, September 14, 2012

ตอบคำถาม 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.ไม่ควรใช้ความถนัดทางด้านคอมพิวเตอร์ผิดวัตถุประสงค์ หาประโยชน์ใส่ตนเองในทางที่ผิด

Tuesday, September 11, 2012

Chapter 4 Software Project Management


กิจกรรมที่ผู้จัดการโครงการต้องทำ คือ

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


Project Planning

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


Project Plan Structure 

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

Thursday, September 6, 2012

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 การปลดระวางหรืเลิกใช้งาน ระบบเดิมต้องทำการเชื่อมต่อกับระะบใหม่ให้ได้ก่อนที่จะปลดละวาง โดยมีการสำรองข้อมูลไว้เพื่อป้องกันการผิดพลาด