Object Oriented Development with UML 11/20/2018 Object Oriented Development with UML 11-12, 18-19 November 2006 At Sipa Chiangmai Introduction to UML โดย รศ. รังสิต ศิริรังษี อ. สายัณห์ อุ่นนันกาศ
Brief OOAD History วิวัฒนาการของโปรแกรมเชิงวัตถุ 11/20/2018 Brief OOAD History วิวัฒนาการของโปรแกรมเชิงวัตถุ SIMULA I (1962-65) , Simula 67 (1967) Smalltalk (1970s) Alan Kay C++ (1980s) Bjarne Stroustrup ,ADA (US Department of Defense) Eiffel 1990 (B. Meyer) , Java (sun) ทศวรรษที่ 1980 : เทคนิคที่ใช้ในการพัฒนาระบบ ได้แก่ SA/SD ที่นำไดอา-แกรมต่าง ๆ มาใช้ในการพัฒนาระบบ ได้แก่ Flow charts, Data flow diagrams , State transition diagrams ทศวรรษที่ 1990 ได้เกิดวิธีการพัฒนาระบบเชิงวัตถุขึ้นมากมาย ระหว่างปี ’89 - ’94, ได้เกิดวิธีการพัฒนาเชิงวัตถุขึ้นเพิ่มขึ้นจาก 10 – 50 วิธี "OO method wars"
วิวัฒนาการของวิธีการพัฒนาระบบเชิงวัตถุ 11/20/2018 วิวัฒนาการของวิธีการพัฒนาระบบเชิงวัตถุ
11/20/2018 UML History เป็นผลลัพธ์มาจากการรวมกันของวิธีการพัฒนาเชิงวัตถุที่มีชื่อเสียงในช่วงต้นทศวรรษที่ 90 : Grady Booch (Rational), Object Oriented Analysis and Design Jim Rumbaugh (GE), Object Modeling Technique Ivar Jacobson (Ericsson), Object-oriented Software Engineering: A Use Case Approach (Objectory)
What is UML? UML ย่อมาจาก Unified Modeling Language Unified 11/20/2018 What is UML? UML ย่อมาจาก Unified Modeling Language Unified รวมสิ่งที่ดีที่สุดจากวิธีการพัฒนาเชิงวัตถุที่มีอยู่ในขณะนั้น โดยมี Booch, Rumbaugh, และ Jacobson เป็นผู้บุกเบิกหลักของ UML Modeling ใช้สำหรับการนำเสนอตามมุมมองของสิ่งที่มีอยู่จริง เพื่อให้สามารถนำไปใช้กับการออกแบบและพัฒนาซอฟต์แวร์เชิงวัตถุ Language UML เป็นภาษาที่ใช้สัญลักษณ์เชิงภาพกราฟิกในการนำเสนอตามกฎเกณฑ์และวิธีการที่กำหนดไว้
11/20/2018 What is the UML? UML เป็นภาษาที่ใช้ในการวิเคราะห์และออกแบบระบบเชิงวัตถุ ประกอบไปด้วยกฎเกณฑ์ต่าง ๆ สามารถใช้ในการสร้างแบบจำลองได้หลายแบบ ไม่ได้มีการกำหนดว่าแบบจำลองใดที่นักออกแบบจำเป็นต้องสร้าง UML เป็นมาตรฐานสำหรับการ visualizing, specifying, constructing, documenting
11/20/2018 Why UML? ง่ายต่อการทำความเข้าใจ เนื่องจากใช้สัญลักษณ์ภาพกราฟิกในการนำเสนอการออกแบบ เป็นส่วนสำคัญที่สุดในการพัฒนาระบบเชิงวัตถุและ SDLC นำเสนอกลุ่มของ Best Engineering Practices ที่ได้รับการพิสูจน์แล้วว่าประสบความสำเร็จในการพัฒนาระบบขนาดใหญ่ที่มีความซับซ้อนสูง ช่วยในการสื่อสารระหว่างบุคลากรภายในทีม แสดงรายละเอียดที่สำคัญของการออกแบบ และช่วยในการตรวจสอบสถาปัตยกรรมของการออกแบบระบบ ไม่ขึ้นกับโปรแกรมภาษาที่ใช้ เป็นพื้นฐานสำคัญสำหรับการทำความเข้าใจกับ modeling language สนับสนุนแนวคิดการพัฒนาระดับสูง เช่น frameworks, patterns และ components
Creating the UML UML 1.1 UML 2.0 UML 1.5 UML 1.4 UML 1.3 UML 1.0 11/20/2018 Creating the UML UML 2.0 2004 UML 1.5 2003 UML 1.4 2001 UML 1.1 OMG Acceptance, Nov 1997 public feedback UML 1.3 Final submission to OMG, Sep ‘97 First submission to OMG, Jan ´97 UML 1.0 UML partners Web - June ´96 UML 0.9 OOPSLA ´95 Unified Method 0.8 Other methods Booch method OMT OOSE
Contributions to the UML 11/20/2018 Contributions to the UML Harel Statecharts Meyer Before and after conditions Gamma, et al Frameworks and patterns, HP Fusion Operation descriptions and message numbering Booch Booch method Embley Singleton classes and high-level view Rumbaugh OMT Wirfs-Brock Responsibilities Jacobson OOSE Shlaer - Mellor Object lifecycles Odell Classification
UML Diagrams Dynamic Views ชนิดของไดอาแกรมใน UML: Structural diagrams 11/20/2018 UML Diagrams ชนิดของไดอาแกรมใน UML: Structural diagrams Behavioural diagrams Requirements Views Use Case Deployment Class Logical Views Physical Views Component Package Activity Collaboration State Sequence Dynamic Views
Classification of Diagram Types 11/20/2018 Classification of Diagram Types Diagram Static/Dynamic Use case Dynamic Class Static Package Sequence Collaboration Statechart Activity Component Deployment
Collaboration Diagram 11/20/2018 State Daigram Implementation Diagram Activity Diagram Statechart Diagram UMLDiagram Package Diagram Static Structure Diagram Usecase Diagram Class Diagram Use case Class Diagram Component Diagram Scenerio Interaction Diagram DePloyment Diagram Collaboration Diagram Sequence Diagram
11/20/2018 Use Case Diagrams ใช้สำหรับกำหนดความต้องการของระบบ ผ่านมุมมองของผู้ใช้ โดยเน้นไปที่ความสัมพันธ์ที่เกิดขึ้นในระบบ ประกอบไปด้วยเหตุการณ์ต่าง ๆ ที่ถูกกำหนดไว้อย่างสมบูรณ์โดยผ่าน actor และแสดงการโต้ตอบระหว่าง actor และระบบ Use Case Actor Identify Movie Open Account Customer Clerk Return Movie In-Store Telephone Review Customer Customer Account Status
Class Diagrams มีความสำคัญมากที่สุดใน UML 11/20/2018 Class Diagrams มีความสำคัญมากที่สุดใน UML ใช้ในการกำหนดคลาส รวมไปถึงการติดต่อกันระหว่างคลาส ในรูปของ ความร่วมมือระหว่างกัน ตลอดจนความสัมพันธ์ระหว่างกัน เป็นต้น Multiplicity Class Aggregation Customer 1 Abstract Class Rental Invoice Rental Item {abstract} 1..* 1 0..1 Composition Generalization Association Checkout Screen DVD Movie VHS Movie Video Game
State Diagrams (statechart) 11/20/2018 State Diagrams (statechart) ใช้สำหรับการแสดงวงจรชีวิตของคลาสหนึ่ง ๆ โดยการกำหนดสถานะการทำงานของระบบที่ประกอบไปด้วย states, transitions, และ events เป็นหลัก Guard Event Transition [more videos] /get next video customer appears Validate [account valid] Check-Out Action /get first video do/check do/check-out account video [no more videos] Activity Check-Out [account not Complete State valid]
11/20/2018 Sequence Diagrams ใช้สำหรับแสดงการทำงานของออปเจคในช่วงเวลาที่กำหนด โดยประกอบไปด้วยการรับส่งแมสเสจที่มีการติดต่อระหว่างออปเจค :CheckoutMgr Cust:Customer :Inventory :RentedItems :Employee 1: find customer() 2: search (string) 3: enter movie() 4: search (string) Object Activation Message 5: rent (movie) 6: add(Cust, item) Lifeline 7: printInvoice() 8: generateRentalTotal()
Collaboration Diagrams 11/20/2018 Collaboration Diagrams เป็นไดอาแกรมที่แสดงการติดต่อกันระหว่างออปเจค โดยเน้นไปที่โครงสร้างการจัดองค์กรของออปเจคที่มีการรับและส่งค่าแมสเสจ :Rented Items Object 5: add(customer, movies) 1: enter_customer() 8: generateRentalTotal() 3: enter_movies() 2: IsValidCust(CustId) 7: print invoice() :Check-out Manager :Customer :Clerk 4:GetMovieByBarcode() :Inventory Message
11/20/2018 Activity Diagram มีลักษณะคล้ายกับ data flow diagram โดยปกติแล้วจะเป็นการแสดงรายละเอียดของกิจกรรมต่าง ๆ ที่มีความซับซ้อนสูงและเกิดขึ้นภายใน use case Start State Identify Caller Action State Decision Obtain Name & Address Open Account? Current Customer? [no] [no] [yes] [yes] End State Create Account
11/20/2018 Packages Packages จะทำหน้าที่จัดเก็บระบบที่มีความซับซ้อนมากออกเป็นส่วน ๆ ที่มีการจัดกลุ่มตาม coherent ที่เกิดขึ้น หลาย ๆ โปรเจคจะใช้ packages ในการแสดงรายละเอียดที่ use cases ที่เกี่ยวข้องในการส่งมอบงาน Clerk User Interface (to business Customer Data system) Business System Client Rental Screen Class Package
11/20/2018 Component Diagram ใช้สำหรับแสดงรายละเอียดของคอมโพเนนท์ต่าง ๆ ที่ใช้ภายในโปรแกรม ในช่วงเวลาของ runtime ซึ่งจะรวมไปถึง source code, binary code และ executable component Component «library» DB Server Interface (dbsvr.dll) Interface «library» Application Framework Dependency «application» Video Workstation Supplied by (vstation.exe) Microsoft Note
11/20/2018 Deployment Diagram ยอมให้ผู้ใช้สามารถมองเห็นถึงวิธีการ (How) ที่ซอฟต์แวร์ถูกนำไปใช้ โดยปกติจะใช้สำหรับการกำหนด configuration ของระบบตามมุมมองของสถาปัตยกรรมทางด้านฮาร์ดแวร์เป็นหลัก Node Communication Association :Store Server Server DB Phone Clerk Terminal :Clerk Client «TCP/IP» Store Check Out Terminal Server :Clerk Client «TCP/IP» App
Most used UML Diagrams: 11/20/2018 Use-Case Diagram Class Diagram Sequence Diagram
Combination: Quick Iteration Between Code and Models 11/20/2018 Combination: Quick Iteration Between Code and Models Java Source Code
UML Diagrams Are Key Artifacts 11/20/2018 UML Diagrams Are Key Artifacts Use-Case Diagram Class Diagram State Diagram Domain Expert Use-Case 1 Actor A Actor B Use-Case 2 Customer name addr withdraw() fetch() send() receive() <<entity>> Deployment Diagram Use-Case 3 Class Document FileManager GraphicFile File Repository DocumentList FileList Package Diagram User Interface Definition (Code Generation) Collaboration Diagram Component Diagram Source Code edit, compile, debug, link Sequence Diagram Executable System
Software Lifecycle Activities 11/20/2018 Software Lifecycle Activities Requirements Elicitation Requirements Analysis System Design Object Design Implemen- tation Testing Implemented By Verified By Expressed in Terms Of Structured By Realized By class... ? class.... ? Application Domain Objects Use Case Model Implementation Domain Objects SubSystems Source Code Test Cases
11/20/2018 More Information… Martin Fowler, Kendall Scott: UML Distilled second edition. Publisher: Addison-Wesley. Doug Rosenberg with Kendall Scott: Use Case Driven Object Modeling with UML. Publisher: Addison-Wesley. Larman, Craig.(1998) Apply UML and Patterns : Third Edition, Prentice Hall Grady Booch, et al: The Unified Modeling Language User Guide. Publisher: Addison-Wesley. James Rumbaugh, et al: The Unified Modeling Language Reference Manual. Publisher: Addison-Wesley. Ivar Jacobson, et al: Unified Software Development Process. Publisher: Addison-Wesley.
Some UML Tools Vendor Main UML Tool Vendor Main UML Tool 11/20/2018 Some UML Tools Vendor Main UML Tool Vendor Main UML Tool Visual Paradigm VP UML NoMagic MagicDraw Embarcadero GDPRO IBM Rose/RoseRT CA(Platinum) Paradigm Plus Riverton How Excel Software MacA&D/WinA&D RogueWave RW-UML Studio i-Logix Rhapsody SparxSystems Enterprise Architect MicroGold With Class Silverrun Silverrun JD Disclaimer: This chart is based on the claims of the tool vendors and does not represent an endorsement. While we do generally recommend Together Control Center as a general purpose UML-compliant OOA/D tool, we will recommend other tools when appropriate. Microsoft Visio Sybase PowerDesigner Borland Together GentleWare Poseidon Objecteering Objecteering U of CA Irvine ArgoUML Popkin Object Architect Visual System Visual Analyst