You are on page 1of 51

Chng 1

2004, HONG MINH SN

H thng iu khin phn tn


Chng 8: Cng ngh hng i tng trong iu khin phn tn
13.09.06

Chng 8: Cng ngh i tng trong iu khin phn tn


8.1 8.2 8.3 8.4 8.5 8.6
2004, HONG MINH SN

Qui trnh cng ngh phn mm Cng ngh i tng l g Ngn ng m hnh ha thng nht UML Khi nim i tng phn tn M hnh COM/DCOM Lp trnh vi COM/DCOM
Ti liu: T ng ha ngy nay 5/04-8/04 (CD: \papers\ ) UML Reference Manual (CD:\UML\refman.pdf) Dr. GUI on COM and ATL (CD: \com-dcom\)

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

8.1 Qui trnh cng ngh phn mm

BI TON

GII PHP

TH GII THC

Phn tch

M ha Th nghim TH GII THIT K

2004, HONG MINH SN

M HNH PHN TCH Thit k

M HNH THIT K

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

Phn tch yu cu (Requirement analysis)


Bi v: Khch hng thng khng bit l h mun g, nhng h bit chc chn l h khng mun g Cho nn: Cn phi cng vi khch hng lm r nhng yu cu v phm chc nng, v giao din s dng Kt qu: M hnh c t (Specification Model), mt phn ca hp ng Cn mt ngn ng m hnh ha d hiu trao i gia khch hng v nhm phn tch
2004, HONG MINH SN

Tr li cu hi: Khch hng cn nhng g

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

Phn tch h thng (System analysis)


Phn tch mi lin h ca h thng vi mi trng xung quanh Tm ra cu trc h thng v cc thnh phn quan trng nh ngha chc nng c th ca cc thnh phn Nhn bit cc c im ca tng thnh phn Phn loi cc thnh phn, tng qut ha, c bit ha Nhn bit mi lin h gia cc thnh phn Kt qu: M hnh h thng (System model) Cn mt ngn ng m hnh ha trao i gia cc thnh vin trong nhm phn tch v vi nhm thit k Tr li cu hi: Nhng g s phi lm
2005 - HMS
5

Chng 8: Cng ngh hng i tng trong KPT

2004, HONG MINH SN

Thit k h thng (System Design)


Da trn m hnh h thng, xy dng cc m hnh chi tit phc v sn sng m ha/ci t Bao gm:
Thit k cu trc (structured design): chng trnh, kiu d liu, i tng, quan h cu trc gia cc i tng v kiu) Thit k tng tc (interaction design): quan h tng tc gia cc i tng Thit k hnh vi (behaviour design): s kin, trng thi, php ton, phn ng Thit k chc nng (funtional design): tin trnh hnh ng, hm, th tc)
2004, HONG MINH SN

Kt qu: M hnh thit k (cc bn v v li vn m t) Tr li cu hi: Lm nh th no

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

Cc bc khc
M ha/ci t (Coding/Implementation): Th hin m hnh thit k bng mt ngn ng/cng c lp trnh c th Th nghim (Testing, Verification): Chy th, phn tch v kim chng:
Th n v (Unit Test) Th tch hp (Integration Test)

2004, HONG MINH SN

G ri (Debugging): Tm ra v sa cc li chng trnh chy (cc li logic) Xy dng ti liu (Documenting): Xy dng ti liu pht trin, ti liu hng dn s dng o to, chuyn giao Bo tr, bo dng
2005 - HMS
7

Chng 8: Cng ngh hng i tng trong KPT

8.2 Cng ngh (hng) i tng l g?


Cc ni dung ca cng ngh phn mm, c xy dng trn c s phng php lun hng i tng M hnh ha hng i tng Phn tch, thit k hng i tng Lp trnh hng i tng Phn mm thnh phn i tng phn tn ... Cng ngh hng i tng c vai tr then cht trong cng nghip phn mm hin nay v trong tng lai
2005 - HMS
8

Chng 8: Cng ngh hng i tng trong KPT

2004, HONG MINH SN

i tng l g?
M hnh/i din ca mt i tng vt l:
Tank, Heater, Furnace Motor, Pump, Valve Sensor, Thermometer, Flowmeter Control Loop, Control System

Hoc mt i tng logic ("conceptual object):


Trend, Report, Button, Window Matrix, Vector, Polynomial
2004, HONG MINH SN

ng gi d liu + php ton p dng

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

Mt i tng c...
Hnh vi

Cc thuc tnh (attributes) Trng thi (state) D liu Quan h Hnh vi (behavior) Cc php ton c tnh phn ng
2004, HONG MINH SN

sa, cn, chy chy khi gp nguy him


Trng thi

t th sc khe
Cn cc Thuc tnh

Cn cc (identity) Ng ngha/trch nhim (semantic/responsibilities)

Tn: Rex ID: 007

mu lng: vng ging: Berge


Ng ngha

Ch gi nh
2005 - HMS
10

Chng 8: Cng ngh hng i tng trong KPT

Nguyn l c bn ca phng php lun hng i tng


Tru tng ha (abstraction): gip n gin ha vn , d s dng li ng gi d liu/che du thng tin (data encapsulation/ information hiding): nng cao gi tr s dng li v tin cy ca phn mm Dn xut/tha k (subtyping/inheritance): gip d s dng li m phn mm v thit k
2004, HONG MINH SN

a hnh/a x (polymorphism): gip phn nh trung thc th gii thc v nng cao tnh linh hot ca phn mm
2005 - HMS
11

Chng 8: Cng ngh hng i tng trong KPT

Ti sao li hng i tng


Phng php lun hng i tng cho php t duy mc tru tng cao nhng gn vi th gii thc Th gii thc cu thnh bi cc i tng v mi lin h gia chng M hnh nht qun cho ton b qui trnh cng ngh phn mm Tru tng ha vn tt hn Bn vng hn vi thay i Kh nng s dng li cao Kh nng ph hp vi nhiu qui m khc nhau H tr tt hn cho pht trin cc h tin cy v an ton H tr tt hn cho x l cnh tranh
2005 - HMS
12

Chng 8: Cng ngh hng i tng trong KPT

2004, HONG MINH SN

S tin ha ca cng ngh i tng


i tng phn tn thng minh, cng ngh Agent

Cng ngh i tng thnh phn phn tn Kin trc i tng phn tn (DCOM, CORBA)
2004, HONG MINH SN

Phn mm thnh phn (JavaBeans, ActiveX, VBX) PM module (Khi hm, Th vin ng)

Cng ngh RPC

Phng php lun hng i tng (Phng php lp trnh, m hnh ha, phn tch v thit k)

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

13

Vai tr ca cng ngh i tng trong cc h thng iu khin?


Vai tr ca cng ngh phn mm trong cc h thng iu khin? C mt cng c phn mm no trong h thng iu khin khng c lp trnh hng i tng? V d v cc i tng c th:
Cc khi chc nng: PID, AI, AO,... Cc khi ha Windows Controls, ActiveX-Controls: th, phm bm, ca s, bnh cha, van iu khin, bng ti,... OPC server, Web server,...

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

14

8.3 Ngn ng m hnh ha UML


M hnh l g?
Mt nh x th gii thc (ang tn ti hoc cn xy dng) M t th gii thc t mt gc nhn Cc dng m hnh:
M hnh ton hc M hnh ha M hnh my tnh
2004, HONG MINH SN

Mt m hnh tt cn n gin nhng th hin c cc c tnh quan trng cn quan tm ca th gii thc "Khng c m hnh no chnh xc, nhng c mt s m hnh c ch!"
2005 - HMS
15

Chng 8: Cng ngh hng i tng trong KPT

M hnh lm g?
Tru tng ha (n gin ha) vn Phng tin giao tip trong nhm pht trin Phng tin giao tip gia nhm pht trin v khch hng Phng tin phn tch, thit k v kim chng Ti liu phn mm Cn mt ngn ng m hnh ha tt v mt phng php m hnh ha thch hp !

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

16

Th no l mt ngn ng m hnh ha tt
n gin, trc quan, d hiu, d xy dng ( ha) Kh nng biu din mnh (ton, vn bn, ha) Kh nng thc thi (my tnh, vn bn, ha my tnh) Linh hot, kh m Nht qun: cho sut qui trnh cng ngh phn mm Chun ha quc t

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

17

UML: Unified Modeling Language


Ngn ng m hnh ha rt mnh, c y cc c tnh tt nu H tr m hnh ha hng i tng, hng thnh phn v cc phng php lun khc Thng nht Rumbaughs OMT, Booch94 v Ivar Jacobsons Use Case Cht lc, tha k nhiu phng php lun khc Ngn ng m hnh ha trung lp Kt hp biu tng ha + vn bn Chun cng nghip (OMG consortium: www.omg.org), c t hin ti V1.5
2005 - HMS
18

Chng 8: Cng ngh hng i tng trong KPT

2004, HONG MINH SN

M hnh ha cu trc
Static view
Biu lp: class, interface, inheritance, association, ...

Use case view


Biu use case: use case, scenario, ...

Implementation view
Biu thnh phn: component, package, module, ...

Deployment view
Biu phn b: node, processor, component,...
2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

19

Lp, i tng v giao din


Mt lp l thc thi ca cc i tng c chung:
Ng ngha Thuc tnh Quan h Hnh vi

Mt giao din l mt kiu dch v ca i tng, v d


Truy nhp thuc tnh Thc hin cc php ton

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

20

V d: H thng iu khin

Controller
w y Sensor
B z
-1

u Actuator

2004, HONG MINH SN

Process

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

21

Lp v giao din trong UML


<<Interface>> Device + getStatus()

Sensor - rangeMin : double - rangeMax : double + getValue() + getStatus() # doGetValue()


2004, HONG MINH SN

Signal Generator + initValue() DigitalMeter + display()

Thermometer + getValue()

Pressure Sensor + getValue()

LevelIndicator + getValue()

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

22

Quan h lp/i tng


Generalization/Specialization: Tha k (Inheritance), Dn xut (Subtyping) Association: Quan h chung chung Aggregation: Quan h s hu Composition: Quan h cu thnh Dependency: Quan h s dng

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

23

Quan h lp trong UML


+input Sensor 1 +controller +valves 1..* 1
2004, HONG MINH SN

<<active>> Controller

+output Actuator

Thermometer

+sensors *

ControlSystem

Valve

+plant <<friend>>

<<friend>>

Plant PT2

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

24

Quan h lp - Meta model


Class relationship

Generalization

Association

Dependency

Aggregation
2004, HONG MINH SN

Composition

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

25

Use case

Operator 1

Operator 2

Operator Interface System


Startup&Shutdown H/A Reconfiguring

2004, HONG MINH SN

Engineer

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

26

M hnh ha hnh vi
Hnh vi i tng:
Biu trng thi (Statecharts) Biu hnh ng (Activity diagramm)

Tng tc gia cc i tng


Biu trnh t (Sequence diagram) Biu cng tc (Collaboration diagram)

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

27

Biu trng thi (b iu khin)


IDLE start MANUAL entry: ^output.setValue(um) do: ^input.getValue do: u=calcOutput exit: updateState setAuto( true )[ u ~ um ] stop AUTOMATIC entry: ^input.getValue do: u = calcOuput do: ^output.setValue(u) exit: updateState

setAuto( false ) changeParams / setAuto(false)

2004, HONG MINH SN

WAITING onTimer[ auto = false ] onTimer[ auto = true ]

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

28

Biu hnh ng (calcOutput)


Read Setpoint

Scaling

Calculate Error

Calculate Output
2004, HONG MINH SN

Time event? y
2005 - HMS
29

Chng 8: Cng ngh hng i tng trong KPT

Tng tc i tng
1: call A 2: return B A 1: send B 2: send Event

A 1: send
2004, HONG MINH SN

B 2: callback

B 2: read File

1: write

System manager

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

30

Biu trnh t
Operator Start : Button click ( ) H/A : Button TempControl Loop : ControlSystem H/A-Indicator : LED SetpointInput : Slider TempCtrl : Controller setManual ( ) display (Yellow) setInput ( ) setValue (0 ) setpoint ( )

click ( )

start ( ) init ( )

setAutomatic ( )

2004, HONG MINH SN

display (Green) process ( )

Ta

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

31

Biu cng tc
3: display (Yellow) 10: display (Green) H/A-Indicator : LED TempControlLoop : ControlSystem 9: setAutomatic ( ) 8: init ( ) 11: process ( ) 2: setManual ( ) H/A : Button 1: click ( )

SetpointInput : Slider

Operator 4: setValue ( )

5: setpoint ( )

2004, HONG MINH SN

TempCtrl : Controller Start : Button 7: start ( ) 6: click ( )

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

32

Tm tt
Use case v kch bn cho phn tch yu cu, phn tch h thng Biu lp cho thit k cu trc Biu tng tc cho thit k giao din v quan h tng tc gia cc i tng Biu trng thi cho thit k hnh vi i tng v thit k c th cc php ton Biu hnh ng cho thit k thut ton, chi tit thc thi php ton

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

33

8.4 Khi nim i tng phn tn


Cu hi: Lm th no gi mt hm thnh vin ca mt i tng vit trn C++ t mt chng trnh khc?
// File A.h class A { int x; public: A(int y = 0) : x(y) {} int getX() const {return x; } void setX(int y) {x = y;} ... }; // Prog1.cpp #include <conio.h> #include "A.h" A obj(5); void main() { obj.setX(6); while (!kbhit()) {} } Chng 8: Cng ngh hng i tng trong KPT
2004, HONG MINH SN

// Prog2.cpp #include "A.h" void main() { int i = obj.getX(); ... }

2005 - HMS

34

// File A.h class A { int x; public: A(int y = 0) : x(y) {} int getX() const {return x; } void setX(int y) {x = y;} ... }; A obj(5);

2004, HONG MINH SN

// Prog1.cpp #include <conio.h> #include "A.h" void main() { obj.setX(6); while (!kbhit()) {} }

// Prog2.cpp #include "A.h" void main() { int i = obj.getX(); ... }

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

35

i tng phn tn l g?
i tng phn tn l cc i tng phn mm trong mt h thng phn tn, c kh nng giao tip ngm, c th s dng t xa (t mt chng trnh khc, t mt nt mng khc) Ging vi i tng c in
C nhng c tnh ca i tng c in (thuc tnh, php ton, hnh vi, trng thi, cn cc)

Khc vi i tng c in:


2004, HONG MINH SN

Khng gn vi mt ngn ng lp trnh Khng gn vi mt nn ci t, nn mng C th to, hy v gi hm t xa

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

36

Mu thit k: Proxy
S dng i tng t xa thng qua mt i din (Proxy)
A
1: request ( ) 2: request ( )

B
proxy server

client

2004, HONG MINH SN

<<abstract> Base request( )

Client

Server request( )

server

Proxy request( )

... server->request()

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

37

Mu thit k: Broker + Marshaling/Unmarshaling


S dng i tng trung gian (Broker) Proxy thc hin giao tip vi Server mt cch trong sut, khng ph thuc c ch truyn thng c th pha di
A
1: op (params )

B
4: op (params )

client
2: dispatch (datagram)

proxy

server
3: upcall(op_data)

2004, HONG MINH SN

broker_A

IPC

broker_B

Marshaling: ng gi d liu thnh mt bc in, m ha cn cc i tng, tn hm cn gi v cc tham s Unmarshaling: Ngc li vi Marshaling.


2005 - HMS
38

Chng 8: Cng ngh hng i tng trong KPT

Mu thit k: Broker + Marshaling/Unmarshaling

Client

<<Interface>> Base + op()

Proxy + op() Broker


2004, HONG MINH SN

ServerBase + upcall()

+ dispatch()

//... extract operation data if (op_name == "op") op(params); else //... other operations

Server + op()

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

39

Mu thit k: Adapter
S dng mt i tng c sn thng qua giao din thch ng (Adapter)
Client Server op( )

old->old_op()

Adapter op( )

old

Adaptee old_op( )

2004, HONG MINH SN

class Adapter : public Server { Adaptee *old; public: void op() { old->old_op(); } ... };
2005 - HMS
40

Chng 8: Cng ngh hng i tng trong KPT

Kin trc tng th


A
1: op ( )

B
4: upcall( )

5: op( )

client

proxy
2: dispatch ( )

adapter
3: dispatch ( )

server

broker_A

IPC

broker_B

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

41

Mu thit k: Interface Mapping


// Server.idl // Interface Definition // Language interface Server { bool op(); }; IDL-to-C++ Compiler IDL-to-C++ // Proxy.h Compiler class Server_p { public: boolean op() { // Marshaling Codes } ... } Broker // ServerImp.cpp class Server_s { virtual bool op()=0; virtual upcall() { ... op(); } }; class MyServer: public Server_s { bool op() { ... } }; Chng 8: Cng ngh hng i tng trong KPT
2004, HONG MINH SN

// Client Program // Client.cpp #include <Proxy.h> void main() { Server_p *obj = NewObject("ServerID"); bool result = obj->op(); ... obj->DeleteObject(); } 2005 - HMS
42

8.5 M hnh COM v DCOM


COM (Component Object Model)
Chun ca Microsoft, ch yu thc hin trn nn Windows Kin trc giao tip bc cao gia cc thc th phn mm (i tng thnh phn) trong h thng L nn tng cho cc cng ngh khc: OLE, ActiveX-Control, ASP, ADO, ... Cng ngh then cht trong cc sn phm ca Microsoft ngy nay H tr rt mnh trong cc sn phm phn mm khc
2004, HONG MINH SN

DCOM (Distributed COM)


Giao thc h tr giao tip vi COM qua mng Kin trc i tng phn tn (so snh vi CORBA)

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

43

i tng COM v giao din COM


Application Object Application Object

Interface Pointer Interface Function Table pointer Pointer to Function1 Pointer to Function2 Pointer to Function3 ...
2004, HONG MINH SN

Function1(...) { ... } Function2(...) { ... } Function3(...) { ... }

...

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

44

Giao tip vi COM


Qu trnh client client server object

Giao tip ni trnh

Qu trnh client client Proxy server proxy


2004, HONG MINH SN

Qu trnh dch v cc b server Stub object

COM Engine

Giao tip lin qu trnh 2005 - HMS


45

Chng 8: Cng ngh hng i tng trong KPT

Giao tip qua mng vi DCOM


Client
CoCreateInstance()

Proxy Security Provider DCE RPC

Stub Security Provider DCE RPC

Component

COM Runtime
(Remote) Activation

Protocol Stack

Protocol Stack
CoCreateInstance()

2004, HONG MINH SN

SCM
DCOM networkprotocol

SCM

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

46

8.6 Lp trnh vi COM/DCOM


To mt i tng COM S dng mt i tng COM

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

47

To mt i tng COM
nh ngha giao din v cn cc i tng bng IDL
/* COM-IDL */ [ object, uuid(793D8ABD-3E1B-11D3-A3E3-00A0C910AB98) ] interface ISensor : IUnknown { // Eigenschaften [propget] HRESULT status([out, retval] short *pVal); [propget] HRESULT rangeMin([out, retval] double *pVal); [propget] HRESULT rangeMax([out, retval] double *pVal); // Methoden HRESULT getValue([out, retval] double *pVal); // ... }; [ uuid(793D8ABE-3E1B-11D3-A3E3-00A0C910AB98) ] coclass Sensor { [default] interface ISensor; }; 2005 - HMS
48

Chng 8: Cng ngh hng i tng trong KPT

2004, HONG MINH SN

Dch sang C++ vi IDL-Compiler


/* C++ */ class ISensor : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE virtual HRESULT STDMETHODCALLTYPE virtual HRESULT STDMETHODCALLTYPE virtual HRESULT STDMETHODCALLTYPE ... // Marshaling Codes };

get_status(short *pVal) = 0; get_rangeMin(double *pVal) = 0; get_rangeMax(double *pVal) = 0; getValue(double *pVal) = 0;

Dn xut lp v thc thi i tng COM


/* C++ */ class Thermometer { public: virtual HRESULT virtual HRESULT virtual HRESULT virtual HRESULT }; : public ISensor

2004, HONG MINH SN

get_status(short *pVal) get_rangeMin(double *pVal) get_rangeMax(double *pVal) getValue(double *pVal)

{...} {...} {...} {...} 2005 - HMS


49

Chng 8: Cng ngh hng i tng trong KPT

Bin dch m thc thi i tng ng k vi h iu hnh Windows trn cc trm ci t v trm s dng

Cc bc trn c th thc hin n gin vi s h tr ca Visual C++ v ATL/COM Wizard

2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

50

S dng mt i tng COM


/* C++ */ ISensor *pSensor; HRESULT hr = CoCreateInstance(CLSID_Sensor, 0, CLSCTX_ALL, IID_ISensor,(void**)&pSensor); if (SUCCEEDED(hr)) { double value = 0; pSensor->getValue(&value); //... } //... pSensor->Release();
2004, HONG MINH SN

Chng 8: Cng ngh hng i tng trong KPT

2005 - HMS

51

You might also like