60
By Assoc. Prof. Rangsit Sirirangsi Package, Component & Deployment Diagram Object Oriented Development with UML

Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

By Assoc. Prof. Rangsit Sirirangsi

Package, Component & Deployment Diagram

Object Oriented Development with UML

Page 2: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

นยาม packageเพอจดเกบสวนตาง ๆ ใหอยในรปของกลมทสามารถจดการไดงาย

วตถประสงคของการสราง package ไดอาแกรมแสดงมมมองดานบนสดของความตองการของระบบ แสดงความสมพนธแบบ Dependency ระหวางกน เพอแสดงลอจกการท างานของระบบทมความซบซอน

What is package Diagram?

Page 3: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Package Diagram

การออกแบบโครงสรางของระบบทมความยดหยนจะชวยเพมความสามารถในการจดการกบความเปลยนแปลงไดดขน

การเพมความยดหยนใหกบโครงสรางของระบบเชงวตถไดแก การออกแบบความสมพนธระหวางคลาสรวมไปถง package

Packages เปนเทคนคทเหมาะสมทจะใชกบระบบทมขนาดใหญ ซงสามารถทจะจดการไดโดยไมตองเจาะลกถงรายละเอยด ซงจะชวยใหนกออกแบบสามารถทจะท าความเขาใจกบระบบไดงายขน

Page 4: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Using a package to simplify a collaboration

Complex Collaboration

Identifying Sub -

Collaboration

Replacing

with Package

Page 5: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Dependency between Package

Package ใน UML ใชความสมพนธแบบ dependency นนคอความสมพนธแบบใดกตามทเกดขนระหวางคลาสใด ๆ ใน package ทตางกนจะสงผลใหเกด package dependency เสมอ

ความสมพนธแบบ dependency แสดงใหเหนวาหากมการเปลยนแปลงเกดขนในแพกเกจหนงอาจสงผลใหเกดความเปลยนแปลงในแพคเกจทเกยวของดวย

P2 P1

Page 6: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Difference View between Package & Class

ความสมพนธระหวาง Package น าเสนอมมมองในระดบบนสด ขณะทความสมพนธระหวางคลาสน าเสนอมมมองในระดบลาง

ทงสองมมมองน าเสนอระบบเดยวกน ดงนนตองสอดคลองกนเสมอ

Page 7: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

General Guidelines

ก าหนดชอของ Packages ใหสอความหมายไดอยางชดเจน ประยกตใช Packages เพอลดความซบซอนของไดอาแกรม ในกรณทตองการระบถงระดบของสถาปตยกรรมทใชควรระบ Stereotypes ลงบน

Packages ควรระวง Cyclic Dependencies ทเกดขนระหวาง Packages Package Dependencies ควรสะทอนถงความสมพนธภายในเปนหลก Packages ควรมลกษณะเปน High Cohesion

Page 8: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Coupling & Cohesion Concepts

High Coupling & Loosely Cohesion

Loosely Coupling & High Cohesion

Page 9: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Java Package

java package เปนกลมของคลาส interface หรอ package ยอมทมลกษณะคลายกนหรอใกลเคยงกน

Package ในจาวาสามารถจดหมวดหมไดเปน 2 แบบ ไดแก built-in package และ user-defined package

built-in packages ไดแก lang, awt, javax, swing, net, io, util, sql etc.Advantage of Java Package1) Java package ถกใชในการจดหมวดหมคลาสและ interfaces เพอสะดวกตอการบ ารงรกษา

2) Java package จดเตรยมกลไกในการปองกนการเขาถงไว3) Java package ชวยลดความยงยากเกยวกบการตงชอ

Page 10: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Java Package

ตวอยาง Package ในจาวา

Page 11: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

How to access package from another package?

การเขาถง package จากภายนอกสามารถท าได 3 วธ ไดแกimport package.*; กรณนทก ๆ คลาสและ interface ทอยภายใน package นจะถกเขาถงได แตไมรวมถง subpackages

import package.classname; กรณนมเพยง package.classname ทถกระบไวเทานนทสามารถเขาถงได

fully qualified name กรณนชอทถกระบไวเทานนทสามารถเขาถงได โดยไมจ าเปนตอง

import แตตองใช fully qualified name ทกครงทมการเขาถง class หรอinterface

Page 12: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

import package.*;

package pack;

public class A {

public void msg() {

System.out.println("Hello");

}

}

package mypack;

import pack.*;

class B {

public static void main(String args[]){

A obj = new A();

obj.msg();

}

}

Page 13: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

import package.classnamepackage pack;

public class A {

public void msg() {

System.out.println("Hello");

}

}

package mypack;

import pack.A;

class B {

public static void main(String args[]){

A obj = new A();

obj.msg();

}

}

Page 14: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Using fully qualified namepackage pack;

public class A {

public void msg() {

System.out.println("Hello");

}

}

package mypack;

class B {

public static void main(String args[]){

pack.A obj = new pack.A(); //using fully qualified name

obj.msg();

}

}

Page 15: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Package ทก ๆ คลาสตองเปนของ package หนง ๆ ในกรณทไมมการก าหนดไวจะเปนของpackage ทไมมการตงชอไว

ชอของ package เปน string (ทแยกดวย“.”) เชน java.lang, dk.itu.oop.lesson2.

ชอของคลาสเปนชอของ package ตามดวย “.” ตอทายดวยชอของคลาส เชน java.lang.String.

แตละคลาสสามารถประกาศ package ได เชน package dk.itu.oop.lesson3;

package com.itmju.oop.lesson3;

import com.itmju.oop.lesson1.Ball;

import java.awt.*;

import static java.lang.System.out;

public class MovingBall extends Ball {

private Component myComponent;

public MovingBall(String color) {

super(color);

out.println("A ball is created");

} //

...

}

Page 16: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Beginners guide to access...

ค าแนะน าสวนใหญ ไดแกก าหนดใหทกฟลดเปน private

สรางเมธอด getter ทก ๆ ฟลด แตเมธอด setter เทาทจ าเปน

package com.itmju.oop.lesson1;

public class Ball {

private int x, y;

private String color;

public Ball(String color) {

this.color = color;

x = 0;

y = 0;

}

public void move(int dx, int dy) {

x += dx;

y += dy;

}

public int getY() {

return y;

}

public int getX() {

return x;

}

}

Page 17: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Access Modifiers in java

Modifiers ในจาวาม 2 แบบ: access modifiers และ non-access modifiers access modifiers ในจาวาใชก าหนดขอบเขตในการเขาถงแอททรบวต เมธอด คอนสตรคเตอร หรอคลาส

แบงไดเปน 4 ชนดprivatedefaultprotectedpublic

สวน non-access modifiers ไดแก static, abstract, synchronized, native, volatile, transient และอน ๆ

Page 18: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

private access modifier

กลไกในการเขาถงแบบ private สามารถเขาถงไดเฉพาะทอยภายในคลาสเดยวกนเทานน

public class A {

private int data=40;

private void msg() {

System.out.println("Hello");

}

}

class B {

public static void main(String args[]) {

A obj=new A();

System.out.println(obj.data) ; //Compile Time Error

obj.msg(); //Compile Time Error

}

}

Page 19: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

default access modifier ในกรณทไมมการก าหนด modifier ไวจาวาจะใช default แทน ซงการเขาถงสามารถท าไดเฉพาะภายใน package เดยวกน

package pack;

class A {

void msg() {

System.out.println("Hello");

}

}

package mypack;

import pack.*;

class B {

public static void main(String args[]) {

A obj = new A(); //Compile Time Error

obj.msg(); //Compile Time Error

}

}

Page 20: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

protected access modifier

สามารถเขาถงไดภายใน package เดยวกน และภายนอก package สามารถเขาไดเฉพาะจากกลไกของคลาสสบทอดเทานน สามารถประยกตใชงานไดกบแอททรบวต เมธอด และคอนสตรคเตอรเทานน

package pack;

class A {

void msg() { System.out.println("Hello"); }

}

package mypack;

import pack.*;

class B extends A {

public static void main(String args[]) {

B obj = new B();

obj.msg();

}

}

Page 21: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

All Access Modifier

สรปการใชงานของ access modifiers ในจาวา

Access

Modifier

Within

class

Within

package

Outside

package by

subclass only

outside

package

Private Y N N N

Default Y Y N N

Protected Y Y Y N

Public Y Y Y Y

Page 22: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Access Modifiers

กลไกการเขาถง member ภายในคลาส A: private เขาถงไดเฉพาะภายในคลาส A default เขาถงไดเฉพาะใน package ตวเองไดแก คลาส A, B และ C

protected เขาถงไดภายใน package และ ภายใน subclasses เชน S

public เขาถงไดจากคลาสทงหมดกลไกการเขาถง member ภายในคลาส B: default คลาสจะมองเหนไดเฉพาะภายใน

package ของตวเอง ไดแก Package1

Page 23: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Package – Example

OrderCustomer

Location Item

Stock Item Order Item

Sales

Warehouse

Page 24: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Package Visibility

คลาสภายใน package สามารถก าหนดสทธในการเขาถงได

ในกรณทเปนคลาสแบบ Public จะถกเขาถงไดจาก packages อน ๆ

สวนคลาสทเปนแบบ private จะสามารถเขาถงไดโดยคลาสทอยภายใน package เดยวกนเทานน PackageB

Class B1

Class B2

PackageA

Class A1

Class A3

Class A2

Public visibility Private visibility

Page 25: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

UML : import & access

Package import เปนความสมพนธโดยตรงระหวางคลาสและ imported package ซงการเรยกใชชอของสมาชกสามารถท าไดโดยไมตองระบชอของ Package ตามล าดบ นนคอ contents ของ imported package ถอเปนสวนหนงของ namespace X<<import>>Y<<import>>Z (Transitive)

สวนคยเวรด access หมายถง contents ของ imported package ไมไดเปนสวนหนงของ namespace แตเปนการอางถงโดยไมมการรวบรวมไวในnamespace เดยวกน X<<access>>Y<<access>>Z (Non - Transitive)

Page 26: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

X Y

Import

«import»A

B +C-D

+E

A

B +C-D

+E

X Y

Y::C

Y::E

«import»

Page 27: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

A

B +C-D

+E

X Y«access»

X Y

Access

«access»A

B +C-D

+E

Page 28: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Dependencies on Packages

java.sql

CourseCatalog<<subsystem>>

University Artifacts

ความสมพนธแบบ dependencies เกดขนในpackage ปกต

ดงนน CourseCatalog subsystem ไมสามารถ reuseไดโดยปราศจาก packages ทขนแกกน

CourseCatalog ขนอยกบ:

java.sql package ทใชในการเขาถงขอมลจากRDBMS

University Artifacts package ทใชในการเขาถงขอมลภายใน Course Registration System

Page 29: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

SubSystem

SubSystem ใชน าเสนอพฤตกรรมของหนวยงานยอยในระบบการจดท า SubSystem เพอชวยใหขนตอนการพฒนาสามารถจดการไดงายบางครงถกนยามวาเปน Package ทประกอบดวย interfaces ตงแตหนงหรอมากกวาทใชส าหรบสนบสนนการใหบรการจาก SubSystem

SubSystem interface ไมใชสงเดยวกบ Java Interface แตเปนคลาสทถกเรยกใชโดย SubSystem

<<subsystem>>

Subsystem Name

Interface

Interface

Subsystem

Page 30: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Packages ประกอบไปดวยคลาสตาง ๆClient รองขอโดยการเรยกใชบรการจากคลาสทอยภายใน package เพอด าเนนการตามพฤตกรรมทก าหนดไว

SubSystem เปนการท างานรวมกนระหวางกลมของรนไทมออปเจคClient รองขอให SubSystem เองด าเนนการตามพฤตกรรมทก าหนดไว

SubSystem ถอจดกงกลางระหวาง package และคลาส มลกษณะเดยวกบ package ในกรณทมการจดกลมของคลาสอน ๆ ทใชงานรวมกน

มลกษณะเดยวกบคลาสเนองจากมพฤตกรรมทถกก าหนดไว โดยอาศยการท างานผาน interface ทก าหนดไว

Difference between Package & Subsystem

Page 31: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

เปาหมายหลกของการสราง SubSystem กเพอหอหมหรอปกปดสวนทเปนพฤตกรรมการท างานไว เมอ Client รองขอการบรการจาก SubSystem จะไมมการตดตอโดยตรงกบสวนของการพฒนา (implementation)

Client ตองตดตอกบ SubSystem ผานกลไกของ interface ทก าหนดไวเทานน สวนทเปน Implementation ของ Subsystem จะถกปกปดไวจาก Client เสมอ

การท างานผาน interface คอการก าหนดใหทก ๆ คลาสภายใน SubSystem มลกษณะ invisible จากคลาสทอยภายนอก นนคอการใช package visibility ของโปรแกรมภาษาเชงวตถนนเอง

Encapsulation

Page 32: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Interface Based Programming

interface Iuser {

String getFirstName();

}

class User implements Iuser {

public String getFirstName() { return "foo“; }

}

class UserFactory {

public IUser getUser() {

return new User();

}

}

class Client {

public static void main(String[] args)

{

IUser user = new UserFactory().getUser();

System.out.println(" "+user.getFirstName());

}

}

class UserService implements Iuser {

public String getFirstName() {

return "bar"; }

}class UserFactory {

public IUser GetUser() {

return new UserService(); }

}

User

UserFactory

IUser

<<Interface>>

+getUser()

+getFirstName()

+getFirstName()

Page 33: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

เปนผลตอเนองมาจาก encapsulation หากมการปกปดพฤตกรรมของ Subsystemทงหมดออกจากสวนอน ๆ การเปลยนแปลงเกดขนภายใน SubSystem ยอมจะไมสงผลกระทบตอสวนอน ๆ ตราบใดท interface ยงคงไมเปลยนแปลง

interface ใชปองกนไมใหระบบเกดความเสยหายอนเนองมาจากการเปลยนแปลงทเกดขนภายนอกระบบนนเอง

Insulation from change

Page 34: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

เนองจาก Client ไมสามารถเขาถง SubSystem ไดโดยตรง ดงนนจงเปนเรองงายทจะเปลยนแปลงกลไกภายในหรอเปลยน SubSystem ทงหมดใหมได โดยไมสงผลกระทบตอ Client ตราบใดท interface ยงคงไมมการเปลยนแปลง

เชนในกรณของการเปลยนแปลง SubSystem ใหมดงรป สามารถใชในการอพเกรดสวนประกอบตาง ๆ ของระบบไดตามตองการ

Replaceable Implementation

Page 35: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

SubSystem ปกปดรายละเอยดการท างานภายในออกจากสงทอยภายนอก นนหมายถง Client ทเรยกใช SubSystem ไมจ าเปนตองสนใจ How ของการท างานภายในแตอยางใด แตสนใจเฉพาะ What ของสงทตองการเทานน

ดงนนจงถอวา SubSystem ยกระดบของ abstraction ภายในระบบเพมขน ซงสงผลตอการท าความเขาใจการท างานของระบบงายขน

Abstraction

Page 36: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

นอกจากขอดทงหมดซงเปนมมมองจาก SubSystem แลว ยงมขอดอน ๆ ไดแก การออกแบบ SubSystem อยางถกตองในสวนของพฤตกรรมและการท างานของระบบชวยใหเกดการ reuse ระหวางระบบได

SubSystem ทประกอบไปดวย package ของพฤตกรรมการท างานตาง ๆ พรอมกบ interface ทก าหนดไว เนองจากมลกษณะเปน abstract ตอกลไกการท างานภายใน ดงนนจงสะดวกตอการน าไปใชในระบบอน ๆ ไดโดยงาย

Reuse

Page 37: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

การออกแบบ SubSystem ทดจะชวยใหผทมสวนเกยวของในการพฒนาระบบ สามารถมองเหนไดตงแต ภาพรวมของระบบจนถงรายละเอยดการท างานในทายทสด

ลกษณะเดยวกบกระบวนการแบบ Top-Down Design

เพมความสะดวกในการแบงงานของเปนระบบยอยตาง ๆ

Top Down Process with Subsystem

Page 38: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Subsystem Usage

SubSystem ใชแบงระบบออกเปนสวน ๆ ทไมขนตอกน :แยกงานแตละสวนออกจากกนอยางชดเจนพฒนาไดตราบใดทสวนทเปน interfaces ไมมการเปลยนแปลง

สามารถน าไปน าไปใชในลกษณะทเปน distributed ได เปาหมาย

เพอใหมลกษณะ Loose coupling เพอความ Portability ในกรณทตองการท างานใน

platform ทแตกตางกนใช interface เพอปองกนการเปลยนแปลง การพฒนาสามารถท าไดอยางอสระ

A

<<subsystem>>

B

<<subsystem>>

C

<<subsystem>>

Page 39: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Packages Vs. Subsystems

UIjava.awt

Member

Workflow

External System

Interface

Payment

Information

Toy

<<subsystem>>

Billing

System Interface

Sales

<<subsystem>>

Shipping

Company Interface

Page 40: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Implementation Diagrams

น าเสนอมมมองทเกยวของกบการพฒนาทประกอบไปดวยโครงสรางของซอรสโคด และโครงสรางการท างานในชวงเวลารนไทม

ประกอบไปดวยไดอาแกรมสองชนด ไดแกComponent diagramDeployment diagram

Page 41: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

เปนการน าเทคนคเดมมาประยกตใชใหม โดยการแยกระบบออกเปนสวน ๆ ใหอยในรปของโมดล หรอ components ทสามารถน ากลบมาใชใหมได สรางซอฟตแวรจาก component ทมอยแลว สราง components ทสามารถน ากลบไปใชใหมในระบบทแตกตางกน แยกสวนการพฒนา components ออกจากการพฒนาระบบ

Component-based software development

A Software System

Pre-fabricated

Components

Page 42: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

What is component ?

เปนสวนประกอบของซอฟตแวรทน ามาประกอบกนเปนแบบจ าลอง Component และสามารถน าไปใชไดทนทโดยไมจ าเปนตองมการแกไข

คณลกษณะของ Componentเปนซอฟตแวรขนาดเลกทสามารถประมวลผลไดดวยตวเอง และสามารถน าไปประกอบกบ Component อน ๆ ได

การน าไปใชถกด าเนนการผาน interface ทออกแบบไวเปนอยางดมความเปนอสระดงนนจงไมกอใหเกดปญหาเมอน าไปใชกบ Components อน สวนกลไกในการพฒนาภายในจะถกปกปดไวเสมอ

ใน UML Component ถอเปน SubSet ของ SubSystem

Page 43: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Benefits of CBSD

Reusability : สามารถน ากลบมาใชใหมไดFlexibility : เพมความยดหยนในการพฒนาระบบ สามารถใชงานไดหลากหลายMaintenance ease : เพมความสะดวกในการบ ารงรกษาTime Effective : เพมความรวดเรวในการพฒนาระบบCost Effective : ลดคาใชจายในการพฒนาระบบReliability : เนองจากผานการทดสอบมาแลวเปนอยางด Less Complexity : ผใชไมจ าเปนตองทราบรายละเอยดภายในของการพฒนาคอมโพเนนท

Page 44: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Component Diagram

เปนการน าเสนอโครงสรางความสมพนธระหวาง component ของระบบ และแสดงถงวธการท components ทประกอบกนเปน components ขนาดใหญหรอระบบทถกพฒนาขนชวยใหมองเหนภาพรวมของระบบทก าลงจะถกสรางขนชวยเพมระดบความเขาใจและการสอสารใหถกตองชดเจนยงขนชวยใหการจดสรรงานส าหรบทมงานพฒนาเปนไปอยางชดเจน

Page 45: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Component Diagram

รปแบบ component :<<executable>> โคดโปรแกรมทใชในการรน<<file>> แฟมขอมลทประกอบไปดวยซอรสโคด<<library>> static หรอ dynamic library<<table>> ตารางในฐานขอมล<<document>> เอกสาร

ใน UML 1.4 สญลกษณ component จะถกน าเสนอผานรปสเหลยมทประกอบดวยสองสเหลยมเลกทปรากฏอยดานซายมอ

Login.dll

Page 46: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

jcomponentImageObserver

image

Component ไดอาแกรมประกอบไปดวย Component packages Components Interfaces Dependency relationships

เชนเดยวกบ Package การตดตอกบ Component จะถกก าหนดใหด าเนนการผาน interface โดยใชความสมพนธแบบ Dependency เสมอ

Concept of Component

Page 47: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Component Diagram

Component ไดอาแกรมเปนสวนทมความส าคญมากในการพฒนาระบบงานขนาดใหญ เพอใชส าหรบการน าเสนอคอมโพเนนททใชอยภายในระบบ คอมโพเนนทอาจมลกษณะคอนขางซบซอน เชน ในกรณทมการพฒนารวมกบActiveX หรอ JavaBeans เปนตน

Component ไดอาแกรมมกจะถกละเลยเสมอในทางปฏบต ทงนเนองมาจากการท างานทปรากฏในไดอาแกรมสวนใหญจะเปนออกแบบในระดบทลกลงไป และใชส าหรบการระบ configuration ของซอฟตแวรนนเอง

Page 48: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Component Dependencies

Dependency ในระดบของ source code จาก Component A ไปยง B จะหมายถงรปแบบของภาษาทก าหนดให dependency เกดจาก A ไปยง B

ในการ compiled อาจหมายถงวาหากมการเปลยนแปลงใน B เกดขนอาจตองการคอมไพล A ใหม

Dependencies ตองไมมลกษณะเปน transitive หาก A depends on B และ B depends on C สวนทเปน B จะมลกษณะเปน

เครองปองกนการเปลยนแปลงทเกดขนจาก A ไปยง C

RegistrarFinance

Page 49: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Component Diagram

Course Course

Offering

Student Professor

Course.dll

People.dll

Course

User

Register.exeBilling.exe

Billing

System

Page 50: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment diagrams

deployment ไดอาแกรมจะเปนการแสดงสถาปตยกรรมแบบ run-time ของโปรเซสเซอร อปกรณและซอฟตแวรคอมโพเนนททรนอยบนสถาปตยกรรมนน ๆ รวมไปถง middleware ทท าหนาทในการเชอมตอกบคอมพวเตอรอน ๆ

จะถอเปนการก าหนดรายละเอยดขนตอนสดทาย ของระบบ ทเรยกวา System Topology โดยประกอบไปดวยรายละเอยดของฮารดแวรและซอฟตแวรทรนอยในหนวยนน ๆ

deployment ไดอาแกรมจะถกน าเสนอในรปของ graph ของโหนดทเชอมตอกนโดยมการตดตอระหวางกน โหนดอาจประกอบไปดวย component instances ซงแสดงใหเหนวาคอมโพเนนทจะท างานหรอ runs อยบน node นน ๆ ในท านองกลบกนคอมโพเนนทอาจประกอบไปดวยออปเจค ซงจะแสดงใหเหนวาออปเจคนนจะเปนสวนหนงของคอมโพเนนท

Page 51: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

คณสมบตของ Deployment deployment ไดอาแกรมอาจใชในการแสดงใหเหนวา Component ใดทรนอยกบ nodes ใด และแสดงการเคลอนยายของ Component จาก node หนงไปยงnode อน ๆ

ใชสญลกษณ stereotype รวมกบความสมพนธแบบ dependency

Page 52: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment diagrams for ?

จดประสงคในการสราง deployment ไดอาแกรมเพอแสดงรายละเอยดตาง ๆ ทเกยวของกบการตดตงระบบในรปของซอฟตแวรและฮารดแวรทเกยวของกน

แสดงรายละเอยดของ dependencies ทระบบทขนอยกบระบบเดมแสดงใหเหนถงโครงสรางพนฐานของ hardware/network ขององคกร

นอกจากใชส าหรบการน าเสนอ Topology ของระบบแลวยงสามารถใชเปนขอมลส าคญในการพจารณาการท างานดงตอไปน Performance Scalability Maintainability Portability

Page 53: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment for ?

ระบบทเหมาะสมส าหรบการน าเสนอผาน Deployment ไดอาแกรม ไดแกEmbedded systems ทใชฮารดแวรตาง ๆ ควบคมการท างานClient/server systems ทมการแยกสวนของกลไกการตดตอกบผใชออกจากสวนทเปนขอมลของระบบ

Distributed systems ทประกอบไปดวยหลาย ๆ เซรฟเวอรทมความสามารถในการโอนยายขอมลจากโหนดหนงไปยงโหนดอน ๆ ได

Page 54: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment : Client-Server

Page 55: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment : Distributed System

Page 56: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

MVC Architecture

server1:

client:

j1:Jsps1:Servlet server2:

browser: Internet

:WebServer

:DB

:ServletContainer

b1:Bean

Intranet

:html

:html

view:browser/jsp/servletcontroller: jsp/servletmodel: BeanObjects

Page 57: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment diagrams V1

Page 58: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment diagrams V2

Page 59: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment diagrams V3

Page 60: Object Oriented Development with UML Package, Component ... · Coupling & Cohesion Concepts High Coupling & Loosely Cohesion Loosely Coupling & High Cohesion . Java Package

Deployment diagrams V4