1 / 50

290342 Software Development Process

290342 Software Development Process. บทที่ 5 การออกแบบซอฟต์แวร์ (1). อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี. เนื้อหา. ความหมายของการออกแบบซอฟต์แวร์และวิศวกรรมการออกแบบ ระดับของกระบวนการออกแบบซอฟต์แวร์

Download Presentation

290342 Software Development Process

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 290342 Software Development Process บทที่ 5การออกแบบซอฟต์แวร์ (1) อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี

  2. เนื้อหา • ความหมายของการออกแบบซอฟต์แวร์และวิศวกรรมการออกแบบ • ระดับของกระบวนการออกแบบซอฟต์แวร์ • กลยุทธ์และระเบียบวิธีในการออกแบบซอฟต์แวร์ • แบบจำลองการออกแบบ (Design Model) • หลักการออกแบบซอฟต์แวร์ • หลักการพื้นฐานในการออกแบบซอฟต์แวร์ • แบบจำลองที่ใช้ในการออกแบบ

  3. การออกแบบซอฟต์แวร์ Quality Customer’ requirement product or system Translate by design

  4. การออกแบบซอฟต์แวร์ Maintenance Maintenance Test Test Implementation Implementation Design With Design Without Design

  5. การออกแบบซอฟตแวร์ การออกแบบซอฟตแวร หมายถึง กระบวนการกําหนด สถาปตยกรรม สวนประกอบ สวนต่อประสาน และ ลักษณะดานอื่นๆ ของระบบ สิ่งที่ไดจากการออกแบบก็คือ แบบจำลองการออกแบบ(Design Model)นั่นเอง การออกแบบซอฟตแวร์ เปนการนําขอกําหนดความตองการของ ผูใชมากําหนดรายละเอียดโครงสรางภายในของซอฟตแวร เพื่อ นําไปใชในการเขียนและทดสอบโปรแกรมในระยะการสรางซอฟต์แวร์

  6. วิศวกรรมการออกแบบ วิศวกรรมการออกแบบเป็นการรวบรวมหลักการ แนวความคิด และวิธีปฏิบัติที่นำไปสู่การพัฒนาระบบคอมพิวเตอร์ที่มีคุณภาพสูง เป็นกิจกรรมหลักอย่างหนึ่งของวิศวกรรมคอมพิวเตอร์ มีเปาหมาย คือ การสรางแบบรางของระบบ หรือมีการนําเสนอระบบในแตละด้าน ใหมีคุณสมบัติ 1. firmness 2. commodity 3. delight ***** ทุกข้อดังกล่าว คือ คุณภาพ ****

  7. กระบวนการออกแบบซอฟต์แวร์กระบวนการออกแบบซอฟต์แวร์ • จะมีลักษณะการทำงานซ้ำๆเนื่องจากต้องนำความต้องการของระบบที่ผ่านการวิเคราะห์แล้วในแต่ละด้าน มาแปลงเป็นข้อกำหนดของการออกแบบ ได้แก่ • ข้อมูล • ฟังก์ชันการทำงาน • ส่วนประสาน

  8. ระดับของกระบวนการออกแบบซอฟต์แวร์ระดับของกระบวนการออกแบบซอฟต์แวร์ • การออกแบบเชิงสถาปัตยกรรม Architectural Design • การออกแบบในรายละเอียด Detailed Design

  9. กลยุทธ์ในการออกแบบซอฟต์แวร์กลยุทธ์ในการออกแบบซอฟต์แวร์ • กลยุทธ์ทั่วไปในการออกแบบซอฟต์แวร์ (General Strategy) • เป็นกลยุทธ์ในการออกแบบซอฟต์แวร์ทั่วไป เช่น • Top-Down and Bottom-up • Divide-and Conquer • Design Pattern • Stepwise Refinement

  10. ระเบียบวิธีการออกแบบซอฟต์แวร์ระเบียบวิธีการออกแบบซอฟต์แวร์ • การออกแบบเชิงฟังก์ชัน (Function-OrientedDesign) • การออกแบบเชิงวัตถุ (Object-orientedDsign) • การออกแบบโดยใช้ข้อมูลเป็นศูนย์กลาง (Data-structureCenteredDesign) • การออกแบบคอมโพเน้นท์ (Component-baseDesign: CBD)

  11. การออกแบบซอฟต์แวร์ จากขั้นตอนการวิเคราะห์จะทำให้ได้ข้อมูล เพื่อจะนำไปสร้างแบบจำลองทั้ง 4 ประเภท ซึ่งจะนำไปใช้ต่อในขั้นตอนการออกแบบ Scenerio-based elements องค์ประกอบเชิงฉากบรรยาย: use-case diagram Class-based elememts องค์ประกอบเชิงคลาส : class diagram Flow-oriented elements องค์ประกอบเชิงกระแส : Data flow diagram Behavioral elements องค์ประกอบเชิงพฤติกรรม : State diagram, Sequence diagram

  12. การแปลงจำลองการวิเคราะห์เป็นแบบจำลองการออกแบบการแปลงจำลองการวิเคราะห์เป็นแบบจำลองการออกแบบ

  13. แบบจำลองการออกแบบ (Design Model) Data/Class Design Architecture Design Interface Design Component-level Design

  14. หลักการออกแบบซอฟต์แวร์หลักการออกแบบซอฟต์แวร์ การออกแบบควรแสดงให้เห็นถึงรูปแบบสถาปัตยกรรมที่เลือกใช้อย่างชัดเจนและมีแบบแผน        การออกแบบควรมิลักษณะเป็นโมดูล     การออกแบบควรนำเสนอด้านข้อมูล สถาปัตยกรรม ส่วนประสาน และคอมโพเน้นท์ที่ชัดเจน      ควรออกแบบคอมโพเน้นท์ให้มีอิสระต่อกัน ควรออกแบบให้ส่วนประสานระหว่างคอมโพเน้นท์กับสภาพแวดล้อมภายนอกมีความซับซ้อนน้อยที่สุด

  15. หลักการออกแบบซอฟต์แวร์หลักการออกแบบซอฟต์แวร์ การออกแบบควรนำข้อมูลมาจากการวิเคราะห์ระบบ และใช้ระเบียบวิธีปฏิบัติเดียวกัน สัญลักษณ์ที่ใช้ในการออกแบบควรสื่อความหมายได้ชัดเจน และเป็นมาตรฐาน งานออกแบบควรมีโครงสร้างที่ดี เพื่อการแก้ไขที่ง่ายและใช้ต้นทุนน้อย การออกแบบในระดับคอมโพเน้นท์มีลักษณะแบบ FunctionalIndependence คือ ฟังก์ชันงานมีความเป็นอิสระต่อกัน ไม่ขึ้นต่อกัน คอมโพเน้นท์ของซอฟต์แวร์จะต้องมีลักษณะการขึ้นต่อกันน้อยที่สุด (LooselyCoupled)

  16. หลักการพื้นฐานในการออกแบบซอฟต์แวร์หลักการพื้นฐานในการออกแบบซอฟต์แวร์ Abstraction Refinement Architecture Patterns Modularity Information Hiding Refactoring Functional independence

  17. Abstraction การกำหนดสาระสำคัญ โดยสามารถกำหนดสาระสำคัญได้หลายระดับ เป็นแนวคิดพื้นฐานในการออกแบบ Procedural Abstraction Data Abstraction

  18. Procedural Abstraction open details of enter algorithm implemented with a "knowledge" of the object that is associated with enter

  19. Procedural Abstraction “Open” 1. เดินไปที่ประตู 2. ยื่นมือไปที่ลูกบิด 3. หมุนลูกบิด 4. ดึงประตู 5. เดินเข้าประตู

  20. Data Abstraction door manufacturer model number type swing direction inserts lights type number weight opening mechanism implemented as a data structure

  21. Refinement การลงรายละเอียดเพิ่มเติมรายละเอียดกระบวนการทำงาน จากประโยคที่ระบุหน้าที่ไปทีละขั้นตอน จนกว่าจะได้ประโยคภาษาโปรแกรม open walk to door; reach for knob; open door; repeat until door opens turn knob clockwise; walk through; if knob doesn't turn, then close door. take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat

  22. Architecture สถาปัตยกรรมซอฟต์แวร์ (SoftwareArchitecture) หมายถึง การแสดงความสัมพันธ์ระหว่างระบบย่อยและส่วนประกอบ (คอมโพเน้นท์) เพื่อกำหนดโครงสร้างหรือระบบภายในซอฟต์แวร์ เป้าหมายของการออกแบบสถาปัตยกรรมคือ ให้เป็นกรอบในการออกแบบส่วนประกอบของระบบให้เป็นในทิศทางเดียวกันและอยู่บนสถาปัตยกรรมเดียวกัน

  23. Patterns การใช้โครงสร้างตัวแบบมาช่วยแก้ปัญหาการออกแบบ โดยนำหลักและวิธีการแก้ปัญหาชนิดหนึ่งชนิดใดจากตัวแบบ จะสามารถนำไปใช้กับปัญหาชนิดเดียวกันที่เกิดขึ้นซ้ำได้ การใช้ pattern จะช่วยให้งานผลิตซอฟต์แวร์ดำเนินไปได้อย่างรวดเร็ว ประหยัดเวลาในการออกแบบ

  24. Modularity การแบ่งระบบหรือซอฟต์แวร์แยกออกเป็นส่วนๆ แต่ละส่วน เรียกว่า “โมดูล” (Module) ซึ่งจะประกอบกันได้เพื่อทำงานตามความต้องการ

  25. Modularity module development cost cost of software module integration cost optimal number number of modules of modules

  26. Information Hiding โมดูลจะต้องซ่อนรายละเอียดการทำงานไว้ ไม่ว่าจะเป็นอัลกอริทึมหรือข้อมูลของโมดูล เพื่อป้องกันการเข้าถึงข้อมูลภายในโมดูลโดยไม่จำเป็น

  27. Information Hiding module • algorithm controlled • data structure interface • details of external interface • resource allocation policy clients "secret" a specific design decision

  28. Refactoring เป็นเทคนิคในการปรับโครงสร้างการออกแบบ เป็นการจัดระเบียบใหม่ เพื่อให้งานออกแบบองค์ประกอบย่อย หรือตัวโค้ดมีลักษณะที่ง่ายขึ้น โดยไม่ไปเปลี่ยนแปลงพฤติกรรมของการทำงาน

  29. ตัวอย่าง Refactoring Collapse Hierarchy A superclass and subclass are not very different. Merge them together.

  30. ตัวอย่าง Refactoring Inline Method A method's body is just as clear as its name. Put the method's body into the body of its callers and remove the method. intgetRating() { return (moreThanFiveLateDeliveries()) ? 2 : 1; } booleanmoreThanFiveLateDeliveries() { return _numberOfLateDeliveries > 5; } intgetRating() { return (_numberOfLateDeliveries > 5) ? 2 : 1; }

  31. Functional independence การออกแบบให้โมดูลมีความเป็นอิสระต่อกัน โมดูลที่เป็นอิสระต่อกันจะง่ายต่อการบำรุงรักษา การประเมินระดับของความเป็นอิสระของโมดูล ประเมินได้จาก ความแข็งแกร่งของโมดูล (Cohesion) ความสัมพันธ์ระหว่างโมดูล (Coupling)

  32. Functional independence ความเป็นอิสระ โมดูล Modular Design

  33. Cohesion Functional Cohesion Sequence Cohesion Communicational Cohesion Procedural Cohesion Temporal Cohesion Logical Cohesion Coincidental Cohesion Good Bad

  34. Functional Cohesion M1 Compute price M2 Select Seat M3 Verify Customer

  35. Sequence Cohesion M1 Function A Function B Function C

  36. Communicational Cohesion book M1 Find Title of Book Find Price of Book Find Publisher of Book Find Author of Book

  37. Procedural Cohesion M1 Function A Function B Function C

  38. Temporal Cohesion M1 Time to initial Time to + x Time to + 2x

  39. Logical Cohesion M1 Go by Car Go by Train Go by Boat Go by Plane

  40. Coincidental Cohesion M1 Function A Function B Function C Function E Function F

  41. Coupling Data Coupling Stamp Coupling Control Coupling Common Coupling Content Coupling Good Bad

  42. Data Coupling Edit student record Edit student record Student name Student ID Student address course Student record EOF Student record EOF Student ID Retrieve student record Retrieve student record XData Coupling  Data Coupling

  43. Stamp Coupling Edit student record Student name Student ID Student address course Student record EOF Student Retrieve student record

  44. Control Coupling Edit student record Student ID Done (True or false) Student record EOF flag Retrieve student record

  45. Common Coupling Module M1 --- --- Change A1 to Zero Global: A1 A2 A3 Variables: V1 V2 Module M21 --- --- sum = V2+A2 Module M13 --- --- Increment A3

  46. Content Coupling M1 M12 Module 12 --- --- Goto D1 M13 M21 --- --- D1

  47. Target of Module Design High Cohesion Low Coupling low cohesion high cohesion High coupling Low coupling

  48. แบบจำลองที่ใช้ในการออกแบบ • กลุ่ม StructuralDescription (StaticView) • กลุ่ม BehavioralDescription (DynamicView)

  49. แบบจำลองที่ใช้ในการออกแบบ • กลุ่ม StructuralDescription (StaticView) เช่น • ArchitectureDescriptionLanguageADU • ClassAndObjectDiagram • ComponentDiagram • DeploymentDiagram • EntityRelationshipDiagramERD • InterfaceDescriptionLanguageIDL • JacksonStructureDiagram • StructureChart

  50. แบบจำลองที่ใช้ในการออกแบบ • กลุ่ม BehavioralDescription (DynamicView) ได้แก่ • ActivityDiagram • CollaborativeDiagram • DataFlowDiagram • DecisionTable • FlowchartandStructureFlowchart • SequenceDiagram • Pseudo-codeandProgramDesignLanguagePDL

More Related