Software Cost (ต้นทุนของซอฟต์แวร์)
คนส่วนมากจะคิดว่าฮาร์ดแวร์มีค้นทุนสูงว่าซอฟต์แวร์ แต่ที่ตริงแล้วการใช้งานซอฟต์แวร์ที่มีลิขสิทธิ์นั้นมีต้นทุนค่าใช้จ่ายที่แพงกว่าฮาร์ดแวร์
1. ต้นทุนหรือค่าใช้จ่ายในการปรับเปลี่ยน บำรุงรักษาซอฟต์แวร์จะเท่ากับหรือใกล้เคียงกับต้นทุน
ของฮาร์ดแวร์
2. ต้นทุนในการบำรุงรักษาซอฟต์แวร์จะมีค่ามากกว่าการพัฒนาซอฟต์แวร์ขึ้นมาใหม่
3. นักวิศวกรรมซอฟต์แวร์จะต้องมีการวิเคราะห์ และพิจารณาในการบำรุงรักษา หรือปรับเปลี่ยน
ระบบโดยพิจารณาจากต้นทุนเป็นหลัก
ซอฟต์แวร์ คืออะไร ?
1. ซอฟต์แวร์ คือ ชุดคำสั่งที่ใช้ในการควบคุมการทำงานของคอมพิวเตอร์ หรือเอกสารประกอบ
2. ซอฟต์แวร์ คือ โปรแกรมคอมพิวเตอร์ และเอกสารประกอบ
ซอฟต์แวร์ที่ ผลิตขึ้นมี 2 ลักษณะ คือ
1. พัฒนาขึ้นเพื่อใช้งานภาพในองค์กร
2. พัฒนาขึ้นเพื่อจำหน่ายในเชิงพาณิชย์
Software Engineering ?
คือ การนำหลักการทางวิศวกรรมมาใช้กับทุกขั้นตอนของการของการพัฒนาซอฟต์แวร์ ตั้งแต่ก่อนพัฒนา จนได้ซอฟต์แวร์
ความท้าทายทางด้านวิศวกรรมซอฟต์แวร์
1. Legacy การพัฒนาโปรแกรมใหม่ให้สามารถทำงานร่วมกับโปรแกรมเดิมได้
2. Heterogeneity ความไม่เข้ากันของฮาร์ดแวร์และซอฟต์แวร์
3. Delivery ความจำกัดด้านเวลา ความผิดพลาดในเรื่องของเวลา
ความแตกต่างของ Computer Science และ Software Engineering
1. Computer Science จะเน้นทางด้านทฤษฎี หลักการความรู้พื้นฐานที่จะเป็นต่อการนำไปประยุกต์
ใช้ในชีวิตประจำวัน
2. Software Engineering จะเน้นการปฎิบัติจริงโดยนำ ทฤษฎีของ Computer Science มาใช้ในทุก
ขั้นตอนของการผลิตซอฟต์แวร์
ความแตกต่างระหว่าง System Engineering และ Software Engineering
- System Engineering จะเกี่ยวข้องกับทุกๆ ขั้นตอนของการพัฒนาระบบ ทั้งด้าน ฮาร์ดแวร์ ซอฟต์แวร์ และโพรเสซ
- System Engineering จะเกี่ยวข้องกับการกำหนดรายละเอียดของระบบ การออกแบบระบบทางด้านสถาปัตยกรรม การรวมระบบและพัฒนา
Software Process คือ กระบวนการที่พัฒนาซอฟต์แวร์ให้ประสบความสำเร็จ แบ่งออกเป็น 4 ขั้นตอน
1. Specification การกำหนดความต้องการของระบบ โดยสอบถามจาก User
2. Development การพัฒนาระบบ รวมถึงการออกแบบระบบ
3. Validation การทวนสอบ คือขั้นตอนของการทดสอบการทำงานของระบบว่าตรงตามความ
ต้องการของผู้ใช้งานหรือไม่
4. Evolution การปรับปรุงระบบ ในอนาคตเมื่อความต้องการในการใช้งานระบบเปลี่ยนไป จะต้อง
ทำงานปรับปรุงระบบให้ตรงกับความต้องการที่เปลี่ยนไปด้วย
Software Process Model คือ แบบจำลองในการพัฒนาซอฟต์แวร์ มีอยู่ 3 มุมมอง(แบบ)
1. Workflow มุมมองเน้นกิจกรรมของโปรแกรม นิยมเขียนด้วย Flowchart
2. Data-Flow มุมมองเกี่ยวข้องกับข้อมูลเป็นหลัก นิยมเขียนด้วย Data flow Diagram
3. Role/Action มุมมองที่ให้คววามสำคัญว่าใครทำอะไร นิยมเขียนด้วย User case Diagram
แบบจำรองทั่วๆ ไป เช่น
1. Waterfall แบบจำลองน้ำตก
2. Evolutionary development แบบจำลองของการพัฒนาแล้วเพิ่มเติมไปเลื่อยๆ
3. Formal transformation แบบจำลองที่เป็นระเบียบชัดเจนผิดพลาดไม่ได้
4. Integration from reusable มุมมองการนำ Component กลับมาใช้ใหม่
CASE (Computer-Aided Software Engineering) คือ ซอฟต์แวร์ที่พัฒนาขึ้นมาเพื่อใช้สร้างซอฟต์แวร์
- Upper-CASE ขั้นตอนการพัฒนาในช่วงแรก เครื่องมือที่ใช้ เช่น MS-Project, Visio, E-Draw
- Lower-CASE ขั้นตอนการเขียนโปรแกรม การทดสอบ เครื่องมือที่ใช้ เช่น MS-Studio, Eclipse,
Edit Plus
คุณสมบัติของซอฟต์แวร์ที่ดี
1. Maintainability ต้องมีความสามารถในการบำรุงรักษา จะต้องมีการเปลี่ยนแปลงเพื่อตอบสนองต่อ
ความต้องการของผู้ใช้ที่เปลี่ยนแปลงไป การเปลี่ยนแปลงจะต้องไม่ส่งผลกระทบต่อการทำงาน
ของระบบ
2. Dependability ความสามารถในการพึ่งพา ความน่าเชื่อถือ ต้องผ่านการตรวจสอบในทุกฟังก์ชัน
3. Efficiency ความสามารถในด้านประสิทธิภาพ เช่น ประหยัดทรัพยากรของเครื่อง
4. Usability ความสามารภในการใช้งาน เช่น ความสะดวก ความปลอดภัย สามารถเรียนรู้การใช้งาน
ได้เร็ว
ความรับผิดชอบทางจริยธรรมของนักวิศวกรรมซอฟต์แวร์
1. ความลับ นักวิศวกรรมซอฟต์แวร์ จะต้องรักษาความลับของลูกค้าและนายจ้างแม้จะไม่มีการลง
นามเป็นรายลักษณ์อักษร
2. ความสามารถ ไม่อวดความสามารถที่ไม่เป้นจริงและไม่ควรรับงานที่ไม่ถนัด
3. เคารพสิทธิทางปัญญา จะต้องระมัดระวังไม่ละเมิดกฎหมาย
4. ไม่ควรใช้ความถนัดทางด้านเทคนิคการใช้งานคอมพิวเตอร์ ผิดวัตถุประสงค์ เช่น ปล่อยไวรัส
ACM ได้ร่วมมีกับ IEEE กำหนด Code of Ethics ขึ้น ซึ่งก็คือประมวลเบื้องจ้นที่นักวิศวกรรมซอฟต์แวร์ต้องปฎิบัติร่วมกัน มีทั้งหมด 8 ข้อ
1. Public จะต้องทำหน้าที่โดยคำนึงถึงผลประโยชน์ส่วนรวมด้วย
2. Client and Employer ต้องคำนึงถึงความต้องการของลูกค้าและนายจ้าง
3. Product จะต้องผลิตผลงานด้วยมาตรฐานสูงสุดตามหลักวิชาการ
4. Judgment ต้องตัดสินใจได้อย่างอิสละ และเป็นตัวของตัวเอง
5. Management หากนักวิศวกรรมซอฟต์แวร์ เป็นผู้บริหารหรือผู้จัดการจะต้องสนับสนุนและเผยแพร่
หลักจริยธรรม
6. Profession ต้องยึดมั่นในคุณธรรม รักษาชื่อเสียงในวิชาชีพของตนเอง
7. Colleagues ต้องมีความเป็นธรรมและสนับสนุนเพื่อนร่วมงาน
8. Self จะต้องพัมนาตนเองอยู่เสมอ