software engineering
วิชาการ # cstu20 เอกสารอานประกอบสไลดชุดที่ 1 ( 01Introduction.ppt) http://course.cs.tu.ac.th Introduction to software engineering
เปาหมายของ
SE
คือ การผลิต software product
คือ software system ( ตอไปนี้จะใชคําวา system ) ที่สงมอบใหกับลูกคาพรอมกับ เอกสารที่ใชอธิบายวิธีใช system นั้น ในบางกรณี software product อาจจะเปนเพียงสวนหนึ่งของ software product ที่ใหญกวา software product
แบงออกเปน 2 ประเภท 1. Generic product คือ system ที่ผลิตเพื่อขายใหกับ user ทั่ว ๆ ไปที่ตองการใช system เพื่อจุดประสงคตาง ๆ 2. Bespoke product หรือ Customized product คือ system ที่ผลิตขึ้นอยางจําเพาะ เจาะจงเพื่อใชงานเฉพาะดาน สําหรับลูกคาเพียง 1 หรือ 2 กลุม
software product
คือ ขั้นตอน การทํางานเพื่อผลิต software product ขั้นตอนเหลานี้จะถูก กําหนดโดย software engineer โดยทั่วไป software process มีทั้งหมด 4 ขั้นตอน คือ 1. software Specification การกําหนดบทบาทและหนาที่ของ software และความสามารถที่ ตองการให software มี 2. Software Development การพัฒนาตัว software ใหตรงกับ spec ที่กําหนดไวในขั้นตอน แรก 3. Software Validation ตรวจสอบความถูกตองใหตรงกับสิ่งที่ลูกคาตองการ 4. Software Evolution ตัว software product จะตองถูกพัฒนาตอไปได เมื่อลูกคาตองการ เพิ่มเติมความสามารถสวนใด ของ software นั้น The software process
ในขั้นตอน software process ไมมีอะไรถูกหรือผิด ในการผลิต software ที่แตกตางกัน สามารถใชวิธีการ ที่แตกตางกันได ในขั้นตอนเดียวกัน เวลาที่ใชในแตละขั้นตอน ก็แตกตางกันไป อยางไรก็ตามในการผลิต system บางชนิด ก็จาํ เปนที่จะตองใชขั้นตอนที่เฉพาะเจาะจง ถาเลือกวิธีที่ใชผดิ system ดังกลาว อาจจะมีประสิทธิภาพไมดี พออยางที่ลูกคาตองการ
คือ การใช model แบบงาย ๆ แสดง software process ที่ใชในการผลิต software product โดยสามารถแสดงไดในหลาย ๆ perspective ( มุมมอง ) ตัวอยางของ process perspective 1. workflow perspective แสดง input output 2. dataflow perspective แสดงการใชงาน data และการเคลื่อนยาย data ของทั้งระบบ 3. Role/activity perspective แสดงบทบาทและสิ่งที่บุคคลที่เกี่ยวของกับ software process นั้น ๆ กระทํา Software process model
Software process model
ที่ใชทั่ว ๆ
1. waterfall model 2. Evolutionary development 3. Formal transformation 4. Integration from reusable components
คาใชจายของ software engineering 60 % เปนคาใชจายของการพัฒนาอีก 40 % เปนคาใชจายที่ ใชในการทดสอบระบบ และสําหรับ software product แบบ bespoke product จะตองมีคาใชจายในสวน ของการพัฒนา software ตอไปในอนาคตดวย อยางไรก็ตามคาใชจายเหลานี้จะแตกตางกันไป แลวแตระบบที่เรา ตองการจะพัฒนา และนอกจากนี้คาใชจายยังขึ้นอยูกับ development model ( software process model) ที่เราใชในการพัฒนาดวย คือ software system ที่ชวยในการทํางานใน ขั้นตอนของ software process เชน การวิเคราะหความตองการของลูกคา requirement analysis , system modeling , debugging , testing เปนตน CASE แบงเปน 2 ประเภท 1. upper CASE คือ software ที่ชวยในขั้นตอนแรก ๆ ของ software process เชน requirement CASE = computer – aided software engineering
analysis , system modeling and design 2. lower CASE
คือ software ที่ชวยในขั้นตอนตอจาก upper CASE นั่นเอง เชน programming ,
debugging , testing
ที่ดีควรมีคุณสมบัติอยางไรบาง ? 1. Maintainability ระบบจะตองถูกพัฒนาไดในภายหลัง หากมีความตองการจากลูกคา 2. Dependability ระบบตองมีความเชื่อถือได มีความปลอดภัย software product ที่ดีจะตองไมกอใหเกิด ความเสียหาย ทั้งในแงเศรษฐกิจและอื่น ๆ ในกรณีที่ระบบเกิดความลมเหลวในการทํางาน 3. Efficiency ระบบสามารถทํางานไดอยางมีประสิทธิภาพโดยใช resource นอยที่สุด เชน memory หรือ Software
processor cycle
จะตองมี user interface ( หนาตา ) ที่ใชงานงาย และมีเอกสาร ประกอบการใชงานที่มีประสิทธิภาพอานเขาใจงาย
4. Usability software product
ในศตวรรษที่ 21 เผชิญหนากับความทาทาย 3 อยาง Legacy system ระบบรุนเกาจะตองสามารถพัฒนาและ update ใหสามารถใชงานไดนานและรองรับกับ เทคโนโลยีของคอมพิวเตอรใหม ๆ ได Heterogeneity ระบบจะตองมีการใชงาน software และ hardware อยางมีประสิทธิภาพ ( คํานึงถึงทั้ง 2 ดานในการพัฒนา ) Delivery ระบบจะตองมีระบบการสงสินคาใหกับลูกคาไดอยางรวดเร็ว SE