.:: ยินดีต้อนรับเข้าสู่เว็บไซต์ ::.

 

 

 

 

 

05530381 Software Engineering
  วิศวกรรมซอฟต์แวร์
  สังกัด บริหารธุรกิจ, บริหารธุรกิจ
  หน่วยกิต 3 (3-0-3)
อาจารย์ จันทิมา เอกวงษ์

เนื้อหาที่เกี่ยวข้อง

 

 

  • ความรู้เบื้องต้นเกี่ยวกับวิศวกรรมซอฟต์แวร์
  • การวางแผนพัฒนาซอฟต์แวร์
  • Software Process  Model
  • Activity Planning
  • Software Effort  Estimate  การประมาณการ
  • Risk Management
  • Resource  Allocation การจัดสรรทรัพยากร
  • Monitoring and Control
  • Outsource  
  • การพัฒนาซอฟต์แวร์

 

การพัฒนาซอฟต์แวร์

คุณภาพของซอฟต์แวร์สามารถแบ่งประเภทได้เป็น 5 ประเภท คือ
1.คุณภาพด้านการใช้งาน หรือ Usability
2.คุณภาพด้านประสิทธิภาพ หรือ Efficiency
3.คุณภาพด้านความคงทน หรือ Reliability
4.คุณภาพด้านการบำรุงรักษา หรือ Maintainability
5.คุณภาพด้านการนำมาใช้ใหม่ หรือ Reusability
คุณลักษณะของซอฟต์แวร์ที่มีคุณภาพวัดจากผู้เกี่ยวข้อง 3 กลุ่ม คือ
1. ผู้ใช้ ซอฟต์แวร์ที่มีคุณภาพ คือ ซอฟต์แวร์ ที่สามารถทำงานตามที่ผู้ใช้ต้องการได้อย่างถูกต้อง ง่ายต่อการเรียนรู้และใช้งาน
2. ผู้บำรุงรักษาระดับ วัดคุณภาพจากการอัพเกรด และการเปลี่ยนแปลงระบบ เช่น ผู้ใช้ต้องการใช้ระบบจะสถานที่อื่น หรือจากคอมพิวเตอร์เครื่องอื่น ที่แตกต่างกัน ผู้บำรุงรักษาระบบต้องจัดการโดยง่าย สามารถติดตั้ง ซอฟต์แวร์ได้ง่าย การทำงานของซอฟต์แวร์สามารถทำได้ถูกต้องและต้องไม่ลดประสิทธิภาพลงจากเดิม
3. โปรแกรมเมอร์ ซึ่งมีหน้าที่ปรับเปลี่ยนระบบตามที่ลูกค้าต้องการ  ซอฟต์แวร์ที่มีคุณภาพต้องเอื้อประโยชน์ให้สามารถทราบตำแหน่งของคำสั่งที่ผิดพลาดได้ง่าย สามารถเข้าใจและแก้ไขความผิดพลาดได้ง่าย
   ผู้ใช้ทั้งสามกลุ่มมีความหวัง เหมือนกันว่า ระบบต้องมีความน่าเชื่อถือ และมีประสิทธิภาพ   ความน่าเชื่อถือวัดได้จากระดับความถูกต้องของผลลัพธ์จากการทำงานของระบบ ซอฟต์แวร์ ที่มีคุณภาพต้องมีระดับความถูกต้องอยู่ในเกณฑ์สูง   นอกจากนี้ต้องใช้เวลาในการปฏิบัติงาน หรือการตอบสนองกับผู้ใช้อย่างรวดเร็ว ในระยะเวลาที่ผู้ใช้ยอมรับได้ รวมทั้งต้องสามารถเข้าใจและเรียนรู้ได้ง่าย
    การผลิต ซอฟต์แวร์ ที่มีคุณภาพ ถึงแม้ว่าจะทราบหลักการในการสร้างหรือมีความเชี่ยวชาญภาษาโปรแกรมที่ใช้ในการพัฒนา ซอฟต์แวร์ เป็นอย่างดี เท่านั้นไม่เพียงพอ ต้องมีความรู้เรื่องอื่น ๆ ด้วย เช่น ต้องเรียนรู้แนวคิดทางเทคนิค และเครื่องมือต่าง ๆ ที่ช่วยในการออกแบบและพัฒนาโปรแกรม จึงจะสามารถสร้างซอฟต์แวร์ที่มีคุณภาพได้
ทีมงานในการพัฒนาระบบ
    ผู้พัฒนาซอฟต์แวร์ทำหน้าที่สร้างระบบโดยทำงานเป็นทีมงานประกอบด้วยบุคคลต่างๆ  ที่มีความเชี่ยวชาญที่แตกต่างกัน ในขั้นตอนแรกของการพัฒนาต้องมีการพบปะพูดคุยกับลูกค้าและผู้ใช้ระบบ เพื่อวิเคราะห์และกำหนดระบบ โดยทำความเข้าใจถึงหน้าที่ทั้งหมดที่ระบบกระทำได้ เขียนเป็นเอกสารระบุความต้องการเพื่อใช้ในการอ้างอิงในการพัฒนาระบบในขั้นตอนต่อไป ผู้ที่ทำหน้าที่นี้เรียกว่านักวิเคราะห์ระบบ (analyst)
ต่อจากนั้นนักวิเคราะห์ระบบจะทำงานร่วมกับผู้ออกแบบระบบ (designers) เพื่อสร้างรายละเอียดในระดับย่อย ๆ ที่ระบบสามารถกระทำได้ ต่อจากนั้นผู้ออกแบบระบบจากทำงานร่วมกับโปรแกรมเมอร์ (programmers) เพื่อให้ผู้เขียนโปรแกรมสามารถเขียนคำสั่งโปรแกรมตามความต้องการได้อย่างถูกต้อง
หลังจากนั้นเป็นหน้าที่ของผู้ทดสอบระบบ (tester) ทำหน้าที่หาข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม การทำงานของผู้ทดสอบระบบจะทำงานร่วมกับลูกค้าเพื่อพิสูจน์ว่าระบบสามารถทำงานตามที่ลูกค้าต้องการได้ เมื่อลูกค้ายอมรับจะมีการฝึกฝนการใช้โปรแกรมให้กับผู้ใช้ระบบ โดยผู้ฝึก (trainers) ถึงแม้จะมีการส่งมอบระบบให้ลูกค้าแล้ว ไม่ใช่ว่างานในการพัฒนาจะจบ  ถ้ามีข้อผิดพลาดเกิดขึ้นในระบบหรือความต้องการของระบบเปลี่ยนไป ทีมงานบำรุงรักษา (maintenance team) จะเป็นกลุ่มที่ทำหน้าที่รับผิดชอบแก้ไข ปรับปรุง เปลี่ยนแปลงตามความต้องการซึ่งอาจเป็นการแก้ไขการออกแบบ แก้ไขคำสั่งโปรแกรม มีการทดสอบระบบใหม่ และเมื่อมีการปรับเปลี่ยนเกิดขึ้นผู้ฝึกจะต้องสอนหน้าที่ใหม่ที่เพิ่มเติมขึ้นมาให้กับผู้ใช้ระบบเพื่อให้สามารถทำงานได้ตามปกติ
ผู้ใช้ระบบ
   ผู้ใช้ระบบหมายถึง  ผู้ที่เข้ามามีส่วนเกี่ยวข้องกับระบบงานที่ต้องใช้คอมพิวเตอร์ไม่ว่าโดยทางตรงหรือทางอ้อม 
  • ผู้ใช้ระบบโดยตรง (Direct  User) คือผู้ที่ต้องทำงานหรือใช้ระบบโดยเป็นผู้มีหน้าที่หรือมีส่วนเกี่ยวข้องอย่างใดอย่างหนึ่งโดยตรง   ผู้ใช้ระบบโดยตรงอาจมีหลายระดับตั้งแต่พนักงานคีย์ข้อมูลจนถึงผู้บริหาร 
  • ผู้ใช้ระบบโดยอ้อม (Indirect  User) คือผู้ที่ไม่ได้ใช้หรือเข้าไปมีส่วนร่วมในการดำเนินการใช้ระบบด้วยตนเอง อาจให้ผู้อื่นเป็นผู้ใช้ระบบ ผู้ใช้ระบบโดยอ้อม อาจเป็นเพียงผู้ที่รอผลลัพธ์จากการใช้ระบบเท่านั้น
ประเภทของผู้ใช้ระบบ
แบ่งตามความรู้และประสบการณ์
1.  ผู้ใช้หน้าใหม่ด้อยประสบการณ์ (Novice User) ผู้ใช้กลุ่มนี้อาจเป็นผู้ที่มีความรู้น้อยมากในด้านคอมพิวเตอร์และระบบงาน  และยังอาจจะหวาดวิตกเกี่ยวกับการใช้คอมพิวเตอร์หรือการใช้ระบบงาน  การออกแบบสำหรับผู้ใช้กลุ่มนี้คือพยายามที่จะทำให้ผู้ใช้สามารถเรียนรู้และใช้ระบบได้  การใช้นิยามคำศัพท์หรือคำสั่ง ควรเป็นคำที่ผู้ใช้คุ้นเคย  หลีกเลี่ยงระบบงานที่ซ้ำซ้อน  การแสดงผลตอบกลับต้องสื่อความหมายชัดเจน  การให้คำอธิบายเมื่อผู้ใช้ดำเนินการผิดพลาด  มีคู่มือ และระบบมีการให้ความช่วยเหลือโดยแนะเสนออย่างเป็นขั้นตอน
2.  ผู้ใช้ที่มีประสบการณ์และความรู้ระดับกลาง (Knowledgeable  intermittent  user) บางคนมีความรู้ดีในงานและวิธีการใช้คอมพิวเตอร์ แต่จำคำสั่งต่าง ๆ  ไม่ค่อยได้ เพราะไม่ได้ใช้บ่อยนัก  วิธีออกแบบเพื่อช่วยให้ผู้ใช้กลุ่มนี้จดจำคำสั่ง  หรือโครงสร้างระบบงานได้ดี คือ  กำหนดใช้คำสั่งอย่างเป็นระบบ  มีความคงที่ไม่เปลี่ยนรูปแบบไปมา  อาจใช้เป็นเมนูหรือ นำเสนอเป็นสัญลักษณ์ (icon) ต่าง ๆ และต้องมีระบบการป้องกันอันตรายอันเกิดจาการที่ผู้ใช้บังเอิญใช้คำสั่งผิด เพราะจำไม่ได้หรือหลงลืมหรือสับสน  การมีหน้าจอที่ผู้ใช้สามารถเรียกใช้เมื่อต้องการความช่วยเหลือ และคู่มือที่เขียนอย่างเป็นระบบ 
3.  ผู้ใช้ที่ใช้งานประจำหรือผู้เชี่ยวชาญ (Frequent  User / Expert) ผู้ใช้กลุ่มนี้เป็นผู้ที่มีความรู้ความเข้าใจในระบบงานอย่างถ่องแท้  สิ่งที่ผู้ใช้กลุ่มนี้ต้องการคือ ความสามารถในการทำงาน  การประมวลผล และการตอบสนองกลับเป็นไปอย่างรวดเร็ว  ข้อความตอบกลับที่สั้นได้ใจความและไม่ทำให้เสียเวลา  ถ้ากิจกรรมใดผู้ใช้ต้องใช้คำสั่ง มากกว่า 4 ขั้นจึงจะบรรลุจุดมุ่งหมายผู้ใช้กลุ่มนี้ต้องการให้ตนเองสามารถสร้าง Macro หรือวิธีการที่สามารถลดขั้นตอนการดำเนินงานลง  
การวิเคราะห์ความต้องการ
    คือคุณลักษณะหรือรายละเอียดต่าง ๆ ที่กำหนดให้ระบบสามารถทำได้  โดยทั่วไปการพัฒนาระบบใหม่ขึ้นมาแทนระบบเก่านั้นมักจะเกิดจากปัญหาของระบบเดิม หรือความไม่พอใจการทำงานของระบบเดิม  เช่น  ความผิดพลาดในการทำงาน  ต้องการเพิ่มประสิทธิภาพในการทำงาน  ต้องการนำเทคโนโลยีใหม่ ๆ มาช่วยเพื่อสร้างความได้เปรียบในการแข่งขันทางธุรกิจ เป็นต้น  ดังนั้นการวิเคราะห์ความต้องการจึงเป็นการกำหนดปัญหาของระบบ  ค้นหาปัญหาและความต้องการของลูกค้า   ในการพัฒนาระบบถ้าทราบถึงปัญหาที่ชัดเจน  ทราบถึงจุดมุ่งหมายที่ต้องกระทำ  จะทำให้การคิดค้นหาทางแก้ปัญหาได้ง่ายขึ้น
กระบวนการวิเคราะห์ความต้องการ
การบวนการวิเคราะห์ความต้องการมีขั้นตอนดังต่อไปนี้
  • เก็บรวบรวมข้อมูลที่เป็นข้อเท็จจริงต่าง ๆ (Data gathering)
  • วิเคราะห์เพื่อระบุถึงความต้องการต่าง ๆ (Requirement Identification)
  • คัดเลือกส่วนที่เป็นสาระสำคัญและอยู่ในขอบเขตการพัฒนา (Requirement selection)
  • จัดจำแนกและจัดโครงสร้างของความต้องการ (Requirement classification and structuring)
  • จัดลำดับความสำคัญและตกลงเจรจา (Prioritization and negotiation)
  • ตรวจสอบความถูกต้อง (Requirement validation)
  • จัดทำ Requirement specification
    การพัฒนาระบบจะทำการวิเคราะห์ความต้องการ  โดยจัดทำเป็นเอกสารสำหรับผู้เกี่ยวข้อง  2 กลุ่ม  คือ  ลูกค้าและผู้พัฒนา
1.Requirement Definition Document  เป็นเอกสารที่เขียนสำหรับลูกค้า  โดยเขียนด้วยภาษาที่ลูกค้าเข้าใจง่าย  มีการอธิบายถึงปัญหาและสิ่งที่ลูกค้าต้องการ  เป็นภาพรวมของระบบใหม่ที่สามารถกระทำได้  กำหนดไว้ในเอกสารอย่างชัดเจน  เพื่อใช้เป็นหลักฐานแสดงข้อตกลงระหว่างลูกค้าและผู้พัฒนา
2.Requirement Specification Document  เป็นเอกสารที่บรรยายคุณลักษณะของระบบทางด้านเทคนิค  เป็นเอกสารที่ใช้สำหรับนักออกแบบระบบ เพื่อให้สามารถเข้าใจระบบได้ง่าย