380 likes | 586 Views
290353 Object-Oriented Analysis and Design. อ.ธารารัตน์ พวงสุวรรณ thararat@buu.ac.th. บทที่ 1 วงจรการพัฒนาระบบและ รูปแบบการพัฒนาซอฟต์แวร์. เนื้อหา. Definition ที่เกี่ยวข้อง SDLC : System Development Life Cycle แบบจำลองการพัฒนาระบบหรือซอฟต์แวร์ แนวทางการพัฒนาระบบหรือซอฟต์แวร์
E N D
290353Object-Oriented Analysis and Design อ.ธารารัตน์ พวงสุวรรณ thararat@buu.ac.th บทที่ 1วงจรการพัฒนาระบบและ รูปแบบการพัฒนาซอฟต์แวร์
เนื้อหา Definition ที่เกี่ยวข้อง SDLC : System Development Life Cycle แบบจำลองการพัฒนาระบบหรือซอฟต์แวร์ แนวทางการพัฒนาระบบหรือซอฟต์แวร์ แนวคิดการพัฒนาระบบงานเชิงวัตถุ เปรียบเทียบการพัฒนาระบบแบบเดิมกับแบบเชิงวัตถุ เครื่องมือสนับสนุนการพัฒนาระบบ
Definition • Software • Computer programs and associated documentation such as requirements, design models, and user manuals • Software engineering (IEEE standard 612-12(1999) • the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. • System analyst • Responsible for analysis and design of information system
(SDLC: System Development Life Cycle) • หมายถึง ขั้นตอนหรือกระบวนการในการพัฒนาระบบงาน ประกอบด้วย 1. เข้าใจปัญหา (Problem Recognition) 2. ศึกษาความเป็นไปได้ (Feasibility Study) 3. วิเคราะห์ (Analysis) 4. ออกแบบ (Design) 5. สร้าง หรือพัฒนา (Construction) 6. การติดตั้งหรือการปรับเปลี่ยน (Installation, Conversion) 7. บำรุงรักษา (Maintenance)
(SDLC: System Development Life Cycle) • สามารถแบ่งช่วงชีวิตของ information system เป็น 2 ช่วง • Systems development • System operation and support
แบบจำลองการพัฒนาระบบหรือซอฟต์แวร์(Software Development Process Model) • เป็นกรรมวิธีในการพัฒนาซอฟต์แวร์ใช้เพื่อเป็นแนวทางในการพัฒนาซอฟต์แวร์ตั้งแต่เริ่มต้นจนสำเร็จ • แบบจำลองแต่ละแบบมีข้อดีข้อเสียแตกต่างกัน • โมเดลการพัฒนาซอฟต์แวร์สมัยใหม่ตามหลักวิศวกรรมซอฟต์แวร์ มักจะผนวกขั้นตอนหรือกระบวนการที่ทำงานในลักษณะ Iteration, Incremental และ Prototyping • มีการผสมผสานแบบจำลองเข้าด้วยกัน
แบบจำลองการพัฒนาระบบหรือซอฟต์แวร์(Software Development Process Model) • Water Fall Model • Iterative Model • Incremental Model • Spiral Model • Prototype Model • Rapid Application Development (RAD) • Joint Application Development (JAD) • Rational Unified Process(RUP) • Etc.
รูปแบบการพัฒนาซอฟต์แวร์(Software Development Methodologies) • การพัฒนาซอฟต์แวร์แบบโครงสร้าง (Structured Methodologies) เป็นแบบดั้งเดิม • การพัฒนาซอฟต์แวร์แบบเชิงวัตถุ (Object Oriented Methodologies)
Structured Methodologies • ใช้แนวคิดแบบระดับบนสู่ระดับล่าง (Top - down design) • พิจารณางานหลักๆ จากนั้นจึงแตกแยกย่อยเป็นงานเล็กๆ จนถึงขั้นตอนที่แสดงรายละเอียดการปฏิบัติงานต่ำสุด • พิจารณางาน (Process oriented) มากกว่าการพิจารณาเกี่ยวกับข้อมูล (Data oriented) • การออกแบบเชิงโครงสร้าง (Structured Design) • การโปรแกรมเชิงโครงสร้าง (Structured Programming) • เหมาะกับโปรเจ็คที่มีความต้องการจากผู้ใช้ที่แน่นอน
Structured analysis and design (SAD) • Analysis Phase • Determine system requirements • Structuring system process requirements • Logical requirements (logical modeling) • Structuring system data requirements • Design Phase • Database Design (DB Normalization) • Forms and report design (GUI Design)
Analysis Phase • Determine system requirements • Interviewing • Structuring system process requirements • Data Flow diagram (logical process modeling) • DFD Levels (process decomposition) • Context diagram • Logical requirements (logical modeling) • Use decision tree /table (logical choice in conditional statements) • Structuring system data requirements • ER diagram
Structured Methodologies Input number Process1 Calculate salary N N Number<0 End of file Process2 pos=pos+1 Y Y Process3 neg=neg+1 STOP (1)Sequence (3) Repetition (2) Decision
Structured Methodologies • มองปัญหาในรูปของกระบวนการทำงาน จากนั้นให้แตกกระบวนการทำงานดังกล่าวออกเป็นส่วนย่อยๆ เรียกว่า ฟังก์ชัน แล้วจึงนำฟังก์ชันต่างๆมาเชื่อมโยงการทำงานเข้าด้วยกันในภายหลัง • ตัวอย่างภาษาคอมพิวเตอร์ที่ใช้ในการพัฒนา ได้แก่ Pascal, C เป็นต้น
Object Oriented Methodologies • Object-oriented analysis and design (OOAD) • การออกแบบและการโปรแกรมเชิงวัตถุ (OOAD & OOP) • มองทุกอย่างในระบบเป็นวัตถุ (Object) • รองรับระบบงานที่มีความซับซ้อนสูง • เหมาะกับโปรเจ็คที่มีขนาดใหญ่และมีความเสี่ยงในการเปลี่ยนแปลงความต้องการจากผู้ใช้
Object-Oriented Development • มีลักษณะเป็นกระบวนการแบบ Iterative และ Incremental • เรียกว่า Agile Development • ประกอบไปด้วย • การวิเคราะห์ความต้องการระบบ • วิเคราะห์ระบบ • ออกแบบระบบ • พัฒนาและติดตั้งระบบ • บำรุงรักษาระบบ
แนวคิดการพัฒนาระบบงานเชิงวัตถุแนวคิดการพัฒนาระบบงานเชิงวัตถุ • เป็นความคิดที่ใช้ในการสร้างโมเดลของสิ่งที่มีความซับซ้อน โดยมีจำนวนเหตุการณ์ที่เกิดขึ้นจำนวนมากที่เกี่ยวกับเช็ตของวัตถุ • ความสัมพันธ์ของเหตุการณ์ที่เกิดขึ้นเกี่ยวพันและเชื่อมโยงกับวัตถุ • การใช้วิธีการเชิงวัตถุจึงเป็นวิธีการทางเทคนิคที่ทำให้เกิดรูปธรรม
แนวคิดการพัฒนาระบบงานเชิงวัตถุแนวคิดการพัฒนาระบบงานเชิงวัตถุ
หลักการของการคิดเชิงวัตถุหลักการของการคิดเชิงวัตถุ • มองการพัฒนาระบบเหมือนกับการมองโลกแห่งความเป็นจริง • มองสิ่งต่างๆ เป็นวัตถุหรือออบเจ็กต์ แต่ละออบเจ็กต์จะมีคุณสมบัติและการทำงานเฉพาะตัว • ออบเจ็กต์สามารถมีความสัมพันธ์กับออบเจ็กต์อื่นๆ ได้ • ออบเจ็กต์มีคุณลักษณะบางประการคล้ายๆ กัน เราก็จะนำกลุ่มออบเจ็กต์เหล่านั้นมารวมให้อยู่ในกลุ่มเดียวกัน
Object-oriented analysis and design (OOAD) • Based on objects rather than data or processes • Object : a structure encapsulating attributes and behaviors of a real-world entity • Object class : a logical grouping of objects sharing the same attributes and behaviors • An Object can have relation to other objects or classes.
Object-oriented analysis and design (OOAD) • Analysis Phase • Structuring requirements (Use case) • Conceptual data modeling (Class diagram) • Object relationship modeling • Class diagram --> ER Diagram • Design phase • Physical DB design • Design elements : classes, component, system architecture • GUI design
Object Oriented Methodologies • เป็นการคิดและสร้างระบบงานในลักษณะโลกของความเป็นจริง • มองสิ่งต่างๆ เป็นวัตถุหรือออบเจ็กต์ ซึ่งออบเจ็กต์ต่างๆ จะมีความอิสระไม่ขึ้นต่อกัน แต่มีการทำงานร่วมกัน • ตัวอย่างภาษาคอมพิวเตอร์ที่ใช้ในการพัฒนา ได้แก่ Java,C++ ,SmallTalk เป็นต้น
เปรียบเทียบวิธีการแบบเดิมกับวิธีการเชิงวัตถุเปรียบเทียบวิธีการแบบเดิมกับวิธีการเชิงวัตถุ
Key differences between structured and object oriented analysis and design
เครื่องมือสนับสนุนการพัฒนาระบบ (CASE Tools) • CASE Tool (Computer-Aided Software Engineering) • เป็นเครื่องมือที่นำมาใช้สนับสนุนการพัฒนาระบบให้มีความรวดเร็ว มีมาตรฐานและมีคุณภาพมากยิ่งขึ้น • สามารถช่วยสร้างแผนภาพ รายงาน โค้ดโปรแกรม ในระหว่างการวิเคราะห์และออกแบบระบบให้เป็นไปโดยอัตโนมัติ • เป็นโปรแกรมประยุกต์หรือเป็นซอฟต์แวร์ชนิดหนึ่ง ที่ช่วยในการพัฒนาระบบ และสนับสนุนการทำงานในแต่ละขั้นตอนของการพัฒนา
เครื่องมือสนับสนุนการพัฒนาระบบ (CASE Tools) • ประเภทของ Case tools • Upper Case tools • เป็นเครื่องมือที่ช่วยสนับสนุนการทำงานในขั้นตอนต้น ๆ ของการพัฒนาระบบ ได้แก่ ขั้นตอนการวางแผน ขั้นตอนการวิเคราะห์ และขั้นตอนการออกแบบระบบ • Lower Case tools • เป็นเครื่องมือที่ช่วยสนับสนุนการทำงานในขั้นตอนสุดท้ายในการพัฒนาระบบ ได้แก่ ขั้นตอนการออกแบบ ขั้นตอนการพัฒนาและทดสอบระบบ และขั้นตอนการให้บริการหลังการติดตั้งระบบ
เครื่องมือสนับสนุนการพัฒนาระบบ (CASE Tools) • CASE ทั้งสองระดับนี้ มีการทำงานที่ซ้ำซ้อนกันอยู่ บางครั้งองค์กรอาจเลือกใช้งาน CASE Tools ทั้ง 2 ระดับร่วมกันได้ • ตัวอย่างของ Software CASE Tools1. Rational Rose : ใช้สำหรับวาด UML Design for OO(Object Oriented) และ generate code2. Visible Analyst: ใช้สำหรับวาด Context Diagram และ Data flow diagram3. Visual Studio : ทำออกแบบและสร้าง web4. Oracle Enterprise Development Suite5. Paradigm Plus6. Logic Works Suite7. AxiomSys and AxiomDsn8. V32 & X32