software engineering
วิชาการ # cstu20 เอกสารอานประกอบสไลดชุดที่ 2 ( 01Software_Process.ppt) http://course.cs.tu.ac.th Introduction to software engineering 3. formal system development
เปนการเปลี่ยนความตองการของลูกคาใหเปนสมการทางคณิตศาสตร formal transformation เปนการเปลี่ยนสมการทางคณิตศาสตรใหเปน code integration and system testing คือการทดสอบระบบสุดทาย หลังจากเปลี่ยนมาเปน code เรียบรอยแลว โดยมากหากพัฒนามาดวยวิธีนี้ การ testing มักจะไมพบขอผิดพลาดหรือผิดพลาดนอยมาก formal specification
ปญหาของ formal system development 1.ตองการทีมงานพัฒนาที่มีความสามารถมาก 2.ในบางระบบไมสามารถใช formal system development ในการพัฒนาได เชน ระบบ user interface หรือระบบที่ไมมีรูปแบบตายตัว
4.Reuse – oriented development Requirement Specification
Component Analysis
Requirement modification
System design with reuse
Development and integration
System validation
กําหนดความตองการของลูกคา component analysis คือ การวิเคราะหวาเราจะใช component ใดบางในการพัฒนาระบบที่ตรงกับความ ตองการของลูกคา ขั้นตอนนี้จะรวมขั้นตอนการคน component ที่มีรวมอยูดว ย ( component search ) requirement modification ในบางครั้งเมื่อรวบรวม component ไดไมครบตามตองการ ก็ตองทําการ เปลี่ยนแปลง specification ใหเหมาะสมกับ component ที่มีอยู หรือ component มีความสามารถในการ ทํางานหลากหลายกวา spec ที่กําหนดไว อาจจะมีการเพิ่ม spec ใหมากกวา spec เดิม การเปลี่ยนแปลง spec ใน ขั้นตอนนี้เรียกวา requirement specification System design with reuse คือ การออกแบบระบบโดยการ reuse เปนหลัก
requirement specification
Process iteration
คือการทําซ้าํ ในปจจุบันการพัฒนา software มักจะไมไดทําตาม process เพียงรอบเดียว แตมักจะใช การทําซ้าํ เพื่อพัฒนา software เพื่อใหตรงกับความตองการมากที่สดุ และในกรณีที่มีการเปลี่ยนแปลงความตองการ จากลูกคาในระหวางการพัฒนา ก็จําเปนที่จะตองสามารถยอนกลับไปพัฒนาจากจุดที่ตองการความเปลี่ยนแปลงได ดังนั้น process iteration จึงมีบทบาทมาก ั generic process model ไดทั้ง 4 ชนิด process iteration สามารถดัดแปลงใชไดกบ process iteration ที่สําคัญมี 2 รูปแบบ คือ incremental development และ Spiral development
iteration
เปนการดัดแปลง evolutionary development แบบ prototyping ใหเหมาะสมกับการพัฒนาระบบขนาดใหญ โดยแบงความตองการของระบบออกเปนสวน ๆ และ เลือกพัฒนาระบบ สวนที่มีความสําคัญที่สุดกอน โดยยึดความตองการของลูกคากอนเปนหลัก เมื่อเริ่มพัฒนาระบบยอยระบบแรกจะไมมี การเปลี่ยนแปลง requirement อีก จนกวาระบบดังกลาวจะถูกพัฒนาจนเสร็จสิ้น และสงใหลูกคาตรวจสอบ หลังจากนั้นลูกคาจะระบุความตองการเพิ่มเติม ( สวนนี้เปนสวนที่เหมือนกับ evolutionary development) เมื่อ ทําการพัฒนาสวนใดสวนหนึ่งจนเสร็จสิ้นแลว จากนั้นจึงทําการพัฒนาตอไปในสวนอื่น ๆ 1. incremental development
ขอไดเปรียบของการพัฒนาแบบ incremental development 1. ในการพัฒนาแบบนี้สามารถสงมอบบางสวนของระบบใหลูกคาไดกอน ซึ่งจะทําใหไดรับการเชื่อถือมากขึ้น 2. สวนที่ถูกพัฒนาในสวนแรก ๆ จะกลายเปนตนแบบ หรือ phototype ใหกับสวนตอ ๆ ไป ที่จะไดรับการพัฒนา ในภายหลัง 3. โอกาสที่จะลมเหลวในการพัฒนาระบบมีนอย ่ ุด มีโอกาสที่จะถูกทดสอบหลาย ๆ ครั้งในการพัฒนา 4. ระบบแรก ๆ ที่ถูกพัฒนาซึ่งเปนระบบที่ความสําคัญมากทีส ดังนั้นจึงมีความผิดพลาดนอย การพัฒนาแบบนี้จะมีขั้นตอนในการพัฒนาวนเปน loop ในแตละ loop อาจจะมี จํานวนขั้นตอนไมเทากัน ขึ้นอยูกบั software engineer จะเลือกใช อยางไรก็ตามสามารถแบงขั้นตอนออกเปน 4 สวนใหญ ๆ คือ 2. spiral development
1. objective setting
คือการตั้งเปาหมายวาใน loop นี้เราจะทําอะไรบาง 2.Rist assessment and reduction ระบุปจจัยที่จะทําใหเกิดความเสี่ยงที่การพัฒนาจะลมเหลว และหาทางแกไข 3. Development and validation หลังจากที่ประเมินความเสี่ยงตาง ๆ แลวก็เลือก model ในการที่ จะพัฒนา เชน ถาใน loop ตองการพัฒนาในสวนของ user interface ก็เลือก evolutionary development ในการพัฒนา แตถา ใน loop นี้ตองการพัฒนาในสวนของ security ก็เลือก formal development สวน waterfall model เหมาะกับการพัฒนา system ยอย ๆ ที่ทํางานในสวนตาง ๆ ของระบบ 4. planning จะทําการวางแผนวาใน loop ตอไปเราจะทําอยางไร และทําการสรุปปญหาทีเกิดขึ้น เพื่อ ไมใหเกิดปญหาอีกใน loop ตอไป