Object-Oriented Software Development Software Development Life

Document Sample
Object-Oriented Software Development Software Development Life Powered By Docstoc
					Object-Oriented Technology




               Object-Oriented Software Development
                           Software Development Life Cycle
                         Software Development Process Model

                                     Week #5
                                 Jarungjit Parnjai
                                                          Burapha University, 2002
Object-Oriented Technology




                             Software Development




                                                    Burapha University, 2002
Object-Oriented Technology



                             What Is Software?
     Software is:
          ชุดคาสั่ง (Instructions) ที่ประมวลผลโดยอุปกรณ์สนับสนุนที่
           สามารถกระทางานที่ระบุ และบรรลุประสิทธิภาพที่ต้องการได้
           (computer programs)
          โครงสร้างข้อมูล (Data structures) ทาหน้าที่เก็บสารสนเทศที่
           ใช้ หรือถูกเรียกใช้โดยโปรแกรม
          เอกสาร (Documents) ที่บรรยายวิธีปฏิบัติการ และวิธีการใช้
           งานโปรแกรม


                                                        Burapha University, 2002
Object-Oriented Technology



                             How Does Software Work?
     ชุดคาสั่ง (Instructions) และ ข้อมูล (data) ร่วมกันทางานเพื่อสร้าง
        ลาดับของสถานะแบบไม่ต่อเนื่องภายในคอมพิวเตอร์
          อาจหลายสถานะที่สามารถเป็นไปได้ ที่เวลาใดๆ
          สถานะต่างๆ ของ Software ทาความเข้าใจได้ยาก




                                                            Burapha University, 2002
Object-Oriented Technology


                        Systems and Software Systems
   A System is
         “An organized or connected group of Objects; a whole composed of
           parts in orderly arrangement according to some scheme or plan”

 A software-intensive System (Software System) is
       system ที่ประกอบด้วยระบบ software ระบบย่อย ที่มีบทบาท หรือมีส่วนในการ
           ควบคุมส่วนสาคัญของพฤติกรรมทั้งหมดของระบบ

  Examples of Software Systems
        ระบบควบคุมการบิน, ระบบทางรถไฟ, ระบบซื้อ ขายหลักทรัพย์


                                                            Burapha University, 2002
Object-Oriented Technology



               “Why” Do We Build Software Systems?
     • เพื่อแก้ปัญหาตามความต้องการของ customer
         software ต้องสามารถแก้ปัญหาของผู้ใช้ได้
         software ต้องสามารถทางานที่ผู้ใช้ต้องการได้อย่างถูกต้อง




                                                        Burapha University, 2002
Object-Oriented Technology



               “How” Do We Build Software Systems?
   • โดยกระบวนการ “decomposition” และ “synthesis”
       จาแนกย่อย และสร้างแบบจาลองของปัญหาในรูปแบบที่สามารถ
                                      ้
        ติดต่อสื่อสารกับผู้อื่นได้ (ขันตอนการ Specification/Analysis)
           ข้อมูล/สารสนเทศเกี่ยวกับขอบเขตของปัญหา (problem
           domain) จะต้องเป็นที่เข้าใจตรงกัน
       ทาการสังเคราะห์ (Synthesize) แนวทางการแก้ปัญหา (solution)
        โดยมุ่งเน้นที่ actions หรือ data (ขั้นตอนการ Design
        /Implementation)


                                                       Burapha University, 2002
Object-Oriented Technology


                 Software Development Methodology

                             Notation




           Process                           Tools

                                            Burapha University, 2002
Object-Oriented Technology


                       Software Development Phases
       • Requirement Specification : define problem domain
       • Analysis : what problem to be solved?
       • Design : how to solve the problem?
       • Implementation : how to implement the solution?
       • Testing : how to ensure that the solution can solve the
         problem?
       • Maintenance : how to adjust the solution to accomodate
         change?
       • Retirement : when does the system to be retired?
                                                        Burapha University, 2002
Object-Oriented Technology


            Software Development Life Cycle Model
    • SDLC Model
        ประกอบด้วยจานวนชุดของขั้นตอน ในกระบวนการพัฒนา
        Software (Software Development Process)
                                 ้
        อาจเกิดปัญหาได้ในทุกๆ ขันตอนการพัฒนา
        มีหลาย Model ทีแตกต่างกันในวิธีดาเนินการของขั้นตอน
                              ่
        เช่น Waterfall Model, Incremental Model, Spiral Model เป็น
        ต้น
        แต่ละ Software ใช้ Model ที่แตกต่างกันในการพัฒนา
        แต่ละ Model มีจุดเด่น จุดด้อย ในตัวเอง



                                                     Burapha University, 2002
Object-Oriented Technology


                             Build-and-Fix Model




                                                   Burapha University, 2002
  Object-Oriented Technology
Waterfall Model




                               Burapha University, 2002
    Object-Oriented Technology
Rapid Prototyping Model




                                 Burapha University, 2002
  Object-Oriented Technology
Spiral Model




                               Burapha University, 2002
   Object-Oriented Technology
Incremental Model




                                Burapha University, 2002
Object-Oriented Technology


                             And more...
        • Spiral Model
        • ...




                                           Burapha University, 2002
Object-Oriented Technology



                              The Cost of Change
                                                  60 - 100 x




                                   1.5 - 6 x

                       1x

                     design        development   maintenance
                                                        Burapha University, 2002
Object-Oriented Technology



                    “What Techniques” Can Be Used?
     • ขึ้นอยู่กับสิ่งที่ software engineer มุ่งเน้นระหว่างการสังเคราะห์
       (Synthesis) แนวทางการแก้ปัญหา
        มุ่งเน้น Process (Action)
        มุ่งเน้น Data
        มุ่งเน้น Object




                                                             Burapha University, 2002
Object-Oriented Technology

                   Traditional Software Development
   • ใช้ Structured Analysis & Design Techniques
       พิจารณาเฉพาะ Data (Data-Oriented)
             ตัวอย่างเช่น Data Flow Model, ER (Entity-
              Relational) Model
       พิจารณาเฉพาะ Action (Action-Oriented) ที่เกี่ยวเนื่อง/กระทา
          กับ Data
             ตัวอย่างเช่น Finite State Machine (FSM)
   • ใช้ Structural/Procedural Implementation Techniques
       ใช้ Structured/Procedural Programming Languages
             ตัวอย่างเช่น BASIC, Pascal, C

                                                       Burapha University, 2002
Object-Oriented Technology


              Problems with Traditional Techniques
   • Do Traditional techniques work?
       Yes, they do (at a cost !!!)
   • Problems
       ในปัจจุบัน Commercial Software จานวนมาก ยังคงใช้
        Traditional Techniques
                                              ้
       Software มีขนาดใหญ่ และซับซ้อนมากขึน เพื่อตอบสนองความ
                                   ่
        ต้องการของผู้ใช้และราคาทีถูกลงของ Hardware
       การค้นหาข้อบกพร่องของ Software Design และ
        Implementation ใช้เวลานาน และเสียค่าใช้จ่ายสูง
       การบารุงรักษา Software ทาได้ไม่สะดวก และมีค่าใช้จ่ายเข้ามา
        เกี่ยวข้อง
                                                     Burapha University, 2002
Object-Oriented Technology

                             Software Crisis
   • Software มีการเปลี่ยนแปลง (Change) ตลอดเวลา
       ระบบ Software เดิม (Legacy Software) ไม่สามารถปฏิบัติงาน
        ร่วมกันกับเทคโนโลยีแบบใหม่ได้ (Interoperability)
       ยากแก่การขยายขอบเขตของระบบ
        Software เดิม (Extendability)
       ไม่สามารถนา Software ที่มีอยู่เดิมมาใช้ใหม่ได้
        (Reusuability)
   • มักพัฒนา Software จากเริ่มต้น ไม่ได้พัฒนาจากของเดิมที่มีอยู่


                                                  Burapha University, 2002
Object-Oriented Technology



                             Software Crisis
     • การพัฒนา Hardware เร็วมาก
         ขนาด (Size) ของซอฟแวร์ ใหญ่ขึ้น และเพิ่มความซับซ้อน
           (Complexibility) มากขึ้น
     • แต่การพัฒนา Software ช้า และมี bug
         ค่าใช้จ่าย (Cost) ในการพัฒนา และบารุงรักษาสูง
           (Maintainability)
         ใช้เวลาในการพัฒนา (Time to Market) นาน หรือ
                                    ่
           ได้ซอฟต์แวร์คุณภาพด้อยทีไม่ตรงกับความต้องการของผู้ใช้
     • ช่องว่างระหว่าง Users และ Programmers

                                                  Burapha University, 2002
Object-Oriented Technology


            What are Object-Oriented Techniques?
   • มุมมองใหม่ของ Software Decomposition
       พิจารณาข้อมูล (attribute/data) และ หน้าที/พฤติกรรม
                                                 ่
        (Action/behavior) รวมกันเป็นวัตถุ (Object)
   • เสนอแนวทางใหม่ในการ Synthesis
                                                         ่
      พิจารณาแนวทางการสังเคราะห์ วิธีการแก้ปํญหา โดยมุงเน้นที่ Data
        และ Actions โดยรวมเป็นหน่วยเดียวกันคือ Object
       แยกส่วนของ Data และ Actions ที่ไม่เกี่ยวข้องไว้ ในรูป
        ของ การเรียกใช้ Module
   • พิจารณาขอบเขตของปัญหา (Problem Domain) และสร้างแบบจาลอง
     การแก้ปัญหา (Modeling Objects) ตามสภาพความเป็นจริง (Real
     World)
                                                     Burapha University, 2002
Object-Oriented Technology


            What are Object-Oriented Techniques?
   • พิจารณา software ในรูปแบบของ clients และ servers

                                  request
                      Object                   Object
                        A        result or       B
                        Client     deny         Server

   • servers ซ่อน Implementation ของ Actions ไว้ภายใต้ Interface
   • clients เรียกใช้ได้เฉพาะ Interface ที่ server เปิดให้บริการเท่านั้น



                                                             Burapha University, 2002
Object-Oriented Technology


                             Object-Oriented Software
  • ซอฟต์แวร์เชิงวัตถุ (Object-Oriented Software)
      คือ กลุม หรือชุด(Collection) ของวัตถุทมีหน้าที่รับผิดชอบต่อการ
             ่                              ี่
     จัดการข้อมูลของตนเอง และติดต่อสื่อสารกับวัตถุอื่นๆ โดยส่งข้อความ
     (Message) ให้แก่กันและกัน
                                                          Environment
                                       m1     O2      m5
                             O1
                                                m2          O4
                                  m3                   m4
                                             O3
                                            Program
                                                             Burapha University, 2002
Object-Oriented Technology


                             What is Software Modeling?
     • การสร้างแบบจาลอง (Modeling)
        – เป็นวิธีการวิเคราะห์ และออกแบบ (Analysis and Design) วิธีการ
          หนึ่งที่เน้นการสร้างแบบจาลอง เพื่อให้สามารถเข้าในปัญหาของ
          ระบบ
        – ใช้เป็นเครื่องมือในการสื่อสาร แนวคิดในการพัฒนาระบบ กับบุคคล
          อื่นๆ
     • Visual Modeling
                         ู
          ใช้สัญลักษณ์รปภาพในการสร้างแบบจาลอง


                                                          Burapha University, 2002
Object-Oriented Technology

                              Software Modeling
                   User                     Modeling
                Requirement            (Analysis and Design)



                                              Model
                                          (Specification)




                               Tools                        Manually
                                                             Coding



                                            Program
                                                               Burapha University, 2002
Object-Oriented Technology


                             Models
    • Requirement Analysis Models (Requirement Specification)
         ได้จากกระบวนการวิเคราะห์ความต้องการของผู้ใช้ระบบ
         (Requirement Analysis)
    • Analysis Model
          ได้จากกระบวนการวิเคราะห์หน้าที่การทางานของระบบ (System
         Analysis)
    • Design Model
         ได้จากกระบวนการออกแบบการทางานของระบบ (System Design)

                                                  Burapha University, 2002
Object-Oriented Technology


                             From Analysis to Design
     • Analysis Phase
           – การศึกษา และการทาความเข้าใจเกี่ยวกับ ความต้องการของระบบ
             แนวคิด และ การกระทาต่างๆ ที่เกี่ยวเนื่องกับระบบ
           – เน้น “what happens in the current system?” และ “what is
             required in the new system?”
           – สร้าง “Analysis Model” ที่แสดงถึงองค์ประกอบที่อยู่ในระบบ และ
             ความสัมพันธ์ระหว่างองค์ประกอบเหล่านั้น
               • Use Case Diagram / Requirement
               • Analysis Model Class Diagram
                                                         Burapha University, 2002
Object-Oriented Technology


                             From Analysis to Design
     • Design Phase
           – การสร้าง Solution ที่ตอบสนอง Requirement ที่กาหนดใน
             Analysis Phase
           – “how the system will be constructed without actually building
             it?”
           – Phase หนึ่งใน Software Development Life Cycle
               • water fall : clear cut ระหว่าง analysis และ design
               • iterative : ไม่มี clear cut ระหว่าง analysis และ design

                                                          Burapha University, 2002
Object-Oriented Technology


                             Traditional SDLC
    • ในการพัฒนาระบบที่มีขนาดใหญ่ มี Advantage ของ Clear Cut
      ระหว่าง Analysis และ Design ดังนี้
       – project management
       – Staff Skill and experience
       – Client Decision
       – choice of development environment
    • ความแตกต่างระหว่าง Analysis และ Design ถูกกาหนดโดย รูปแบบ
      ของ Diagram ที่ใช้
       – Analysis ใช้ Data Flow Diagram
       – Design ใช้ Structure Diagram/ Structure Charts
                                                   Burapha University, 2002
Object-Oriented Technology


                             Object-Oriented Approached
    • อาจใช้ Model เดียวกันตลอดวงรอบการพัฒนาซอฟต์แวร์ (Software
      Development Life Cycle)
    • ความแตกต่างระหว่าง Analysis และ Design ถูกกาหนดโดย ปริมาณ
                   ่
      รายละเอียดทีระบุอยู่ใน Model [Rumbaugh 1997]
    • สร้าง Design Model
           • Interaction Diagrams
           • State Diagrams
           • Design Model Class Diagrams


                                                          Burapha University, 2002
Object-Oriented Technology


                      System and Detailed Design
 • การออกแบบระบบอาจทาได้ที่ 2 ระดับ
    – System Design เกี่ยวเนื่องกับสถาปัตยกรรมของระบบในภาพรวม
      และการกาหนด standards
       • การกาหนด standards เช่น การออกแบบ human-computer
           interface
    – Detailed Design เกี่ยวเนื่องกับการออกแบบแต่ละองค์ประกอบย่อย
                                                      ิ
      เพื่อที่จะเติมเต็มสถาปัตยกรรมของระบบ และ ปฏิบัตตาม standard
      ที่กาหนดขึ้น
       • เช่น การออกแบบ Object

                                                   Burapha University, 2002
Object-Oriented Technology


                             System Design
    • การออกแบบสถาปัตยกรรมของระบบในภาพรวม เช่น
       – ระบบที่สร้างขึ้นในยุคหลังๆ มักใช้ ระบบ Client-Server
       – ก่อให้เกิดคาถาม “how processes and objects will be distributed
         to different machine?”
       – System Architect/System Design ต้องตอบคาถามต่างๆ ที่เกิดขึ้น
         และทาหน้าที่ในการตัดสินใจ
    • การออกแบบ Standards สาหรับระบบ เช่น
       – การตัดสินใจเลือก Standards ที่ใช้กับ Use Interface จัดเป็นการ
         ออกแบบ Interface ที่ระดับ system
                                                        Burapha University, 2002
Object-Oriented Technology


                             Detailed Design
    • Detailed design ของ Traditional System/Structured System มัก
      เกี่ยวเนื่องกับการออกแบบ activities ต่างๆ ได้แก่
       – การออกแบบ Inputs
       – การออกแบบ Outputs
       – การออกแบบ Processes
       – การออกแบบ files
    • Detailed design ของ OO System เกี่ยวเนื่องกับการออกแบบ
      activities ต่างๆ ด้านบนเช่นกัน แต่ต้องคานึงถึงแง่มุมของ
       – reusability
       – การกาหนด responsibilities ให้กับ คลาส
                                                      Burapha University, 2002
Object-Oriented Technology


                              Reuse
    • การนาการออกแบบมาใช้ใหม่ (Design Reuse) เกิดขึ้นได้ที่ 2 levels
      ได้แก่
       – การใช้ design patterns
       – คลาสที่ระบุไว้ใน Analysis Phase นามาออกแบบเพิ่มเติมใน
          รายละเอียด ด้วยการนาคลาสเดียว หรือ หลายๆ คลาสที่ได้รับการ
          ออกแบบ และใช้งานอยู่แล้ว กลับมาใช้ใหม่ หรือ ซื้อจาก vendor
          ภายนอก (Components)



                                                       Burapha University, 2002
Object-Oriented Technology


        Assignment of Responsibilities to Classes
    • การกาหนด Responsibilities ให้กับคลาส
       – จัดเป็น main task ของการออกแบบ
       – มักมีหลายทางเลือก
       – ควรกาหนด responsibilities สาหรับ Operation ให้กับคลาสที่
         เหมาะสม




                                                      Burapha University, 2002
Object-Oriented Technology


                             Criteria for Good Design
     • Low Coupling
     • High Cohesion




                                                        Burapha University, 2002
Object-Oriented Technology



                             Summary
         Software, Systems and Software Systems
         Software Crisis
         Software Development Process Model
         Traditional Software Development
         Object-Oriented Software Development




                                                   Burapha University, 2002