Upload
quentin-blake
View
235
Download
0
Embed Size (px)
Citation preview
Object Orientation in CBD
Object Orientation in CBD
김현우 , 장재현
Contents• What is CBD?• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
2
What is CBD?
• Component-based development– Developing software system based
on component
3
Contents• What is CBD?
– Component
• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
4
Component (1/4)
5
ImplementationImplementationSpecificationSpecification
for(i=0;i<10;i++){ a++; }return a;
for(i=0;i<10;i++){ a++; }return a;
StandardStandardPackagingPackaging
DeploymentDeployment
Component (2/4)
• Software module unit– Reusability– Replace-ability
6
Component (3/4)
• Reusability– Component can be used by some other applications
7
Hospital system A Hospital system B
Reservation
Customer
Patient
Reservation
Doctor
DiagnosisDiagnosis
Reuse
Component (4/4)
• Replace-ability– CBD can be a replacement of rapid change of
customer’s need
8
Hospital system
Reservation
Customer
Diagnosis 2
Diagnosis 1
Diagnosis 1
Replace
Contents• What is CBD?
– Dependency & Granularity
• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
9
Dependency (1/2)
• Tightly-coupled vs. loosely-coupled
10
Address
- homeAddress: string- homeTelno: string
+ getHomeAddress(): string+ setHomeAdress(newAddress): void+ getHomeTelno(): string+ setHomeTelno(newTelno) : void
Address
- homeAddress1: string- homeAddress2: string- homeTelno: string+ getHomeAddress(): string+ setHomeAdress(newAddress): void+ getHomeTelno(): string+ setHomeTelno(newTelno) : void
Dependency (2/2)
• Loosely-coupled– Interface– Abstraction
11
+getHomeAddress() : string+setHomeAddress(in newAddress : string) : void+getHomeTelno() : string+setHomeTelno(in newTelno : string) : void
-homeAddress1 : string-homeAddress2 : string-homeTelno : string
Addres
IAddress
1
*Customer
Interface
Granularity
• Coarse-grained
12
Contents• What is CBD?
– Goal of CBD
• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
13
Goal of CBD
componentcomponent
componentcomponent
componentcomponent
componentcomponent
14
Philosophy of CBD
• Philosophy– “Buy, don’t build”– LEGO®
“buy, don't build” by Fred Brooks
[Brooks 87] Brooks, F. P. Jr. “No Silver Bullet: Essence and Accidents of Software Engineering”Computer 20, 4 (April 1987): 10-9.
15
Contents• What is CBD?• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
16
Why CBD?
• Productivity– reducing code generation
• Quality– using guaranteed component
• Time-to-market– faster than traditional way
17
Contents• What is CBD?• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
18
Process of CBD (1/3)
Component Repository
Domain Analysis Domain Design Component Abstraction
Component DesignComponent ImplementationComponent Qualification
Component Distribution
Component SpecializationCBD DesignApplication Requirement
Component CompositionNew ApplicationNew Application
Component Development
Component-Based Software Development
19
Process of CBD (2/3)
QualificationQualification AdaptationAdaptation CompositionComposition
CQ CA CC
20
Process of CBD (3/3)
White box wrapping
Grey box wrapping
Black box wrapping
ComponentComponentAdaptationAdaptation
21
Component Adaptation (1/3)
Controller Adapter LightsRI_Lights PI_Lights
<Lights control system>
Component Adaptation (2/3)
LightsPI_Lights
<<Interface>>lightG: BooleanlightG: Booleanon_green()off_green()on_red()off_red()
<<Interface>>color: ML_Colorchange(new: ML_Color)on()off()
ControllerRI_Lights
Component Adaptation (3/3)
REFINEMENT AdapterREFINES RI_LightsINCLUDES PI_LightsOPERATIONS on_red = IF color = Red THEN on ELSE LET color BE color = Red IN change(color); on
Adapter
Contents• What is CBD?• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
25
• International
26from IDC
Commercial Component (1/6)
Commercial Component (2/6)
• International (cont’d)
– Focus on technical components than business components
– Componentsource Inc. (ENG) – 1303 components of 293 companies
• “The world's largest source of software components”
– Flashline Inc. (USA) –227 components of 94 companies
• BEA AquaLogic enterprise repository
27
Commercial Component (3/6)
• Domestic
28from KCSC
Commercial Component (4/6)
• Domestic large company– Large SI companies develop technical components
themselves– Operate exclusive responsible team
– Samsung SDS, LG CNS, SK C&C, etc, …
29
Commercial Component (5/6)
• Domestic small company– Simple application – Homepage, Mail, BBS– Recently, even ERP, KMS, CRM
– Component Bank • Component tools, Web application
– Imeca - export to 30 countries• HRM solution, Government integrated administrative system
– N3Soft• Component tools, ERP, KMS, Web log analysis
– Namo Interactive• Web application
30
31
Commercial Component (6/6)
32
We want to detect memory leaks or know code performance and code coverage.We want to collect data on Disk I/O, Network I/O and synchronization wait time
Success story (1/2)
• CBD based integrated framework case
UML based system analysis
System architecture
Components
CBDTest
* ITPlus
Success story (2/2)
Normal
CBD
Human Resource 40% ↓TIME 50% ↓
SW Quality ↑
* ITPlus
Contents• What is CBD?• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
35
Using component (1/3)
STDMETHODIMP CHello::sayHello(BSTR name, BSTR *message){
TCHAR buffer[256];_bstr_t temp = name;::wsprintf(buffer, _T("Mr. %s hello?"),
(TCHAR*)temp);temp = buffer;*message = temp.copy();return S_OK;
}
• Make HelloApp.dll ATL
ATL: Active Template Library
Using component (2/3)
• Register COM+ component from dll file
Component
Using component (3/3)
• in ASP– We can use another component also
<%if Not isEmpty(Request.Form("txtName")) then
Dim helloset hello = CreateObject("HelloApp.Hello.1")dim messagemessage = hello.sayHello(Request.Form("txtName"))Response.Write message
end if%>
COM+ component nameComponent procedure call
Contents• What is CBD?• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
39
Limit of CBD (1/2)
• Platform-dependence
.NET Application
J2EE Application
Message Queue Middleware
SQL Server
JDBCADO .NETProvider
JMSNative
from MSDN
Limit of CBD (2/2)
• Tightly-coupled– RPC
• Synchronous – wait until return
<%if Not isEmpty(Request.Form("txtName")) then
Dim helloset hello = CreateObject("HelloApp.Hello.1")dim messagemessage = hello.sayHello(Request.Form("txtName"))Response.Write message
end if%>
Reference Procedure call
From CBD to SOA (1/4)
Interface
Component
Service
• Service is also component• CBD ≒ SOA
42
From CBD to SOA (2/4)
• Service-Oriented Architecture– “Web service”-based
43
From CBD to SOA (3/4)
Service Broker
Service Consumer
Service Provider
Publish
Connect
Discover
Internet
44
45
From CBD to SOA (4/4)
• Mashup
+
Contents• What is CBD?• Why CBD?• Process of CBD• Commercial Component• Using Component• From CBD to SOA• Summary
46
47
Summary
• CBD takes productivity, quality, reduce of cost and rapid response in market
• Recent concept of service starts from component in CBD
• Component is well-applied OO concept in business
References• Alan W. Brown, “On Components and Objects: The Foundations of
Component-Based Development”, IEEE, 1997• Bertrand Meyer, “ Component-Based Development: From Buzz to
Spark”, IEEE, July 1999• Butlergroup, “Component-Based Development”, Butlergroup
Management Guide, September 1998• George T. Heineman, “Component-Based Software Engineering”,
Addison-Wesley, 2001• Jim Q. Ning, “Component-based Software Engineering”, SAST,
1997• Michael Sparling, “Lessons learned through six years of
component-based development”, ACM, October 2000 p.47-53• 전병선 , “ 객체지향 이야기” , 영진 .COM, 2004 14 장
48