Component Based Software Engineering

20
Component Based Software Engineering Master of Software Engineering + Master of Information Technology 2010/2011 Conf.dr.ing. Ioana Șora http://www.cs.utt.ro/~ioana/cbse

description

Master of Software Engineering + Master of Information Technology 2010/2011 Conf.dr.ing. Ioana Șora http://www.cs.utt.ro/~ioana/cbse. Component Based Software Engineering. Introduction. What is this course about ? - PowerPoint PPT Presentation

Transcript of Component Based Software Engineering

Page 1: Component Based Software Engineering

Component Based Software Engineering

Master of Software Engineering +Master of Information Technology

2010/2011Conf.dr.ing. Ioana Șora

http://www.cs.utt.ro/~ioana/cbse

Page 2: Component Based Software Engineering

Introduction

• What is this course about ?– A journey in searching for the “holy grail” of

software “integrated circuits”

Page 3: Component Based Software Engineering

Introduction

• What is this course about ?– A journey in searching for the “holy grail” of

software “integrated circuits”

Page 4: Component Based Software Engineering

Advantage 1: Software construction

Application

Software construction vs. creation: application is developed as an assembly of “integrated circuits”

Page 5: Component Based Software Engineering

Advantage 2: Reuse

C1

C1

C1

Application 1

Application 2

Software “integrated circuits” are reusable entitiesIt pays off to have as many applications that reuse an entity

Page 6: Component Based Software Engineering

Advantage 3: Maintenance & Evolution

C1 Application

C1new

update

Maintenance and upgrading can be done by replacing parts, maybeeven at runtime

Page 7: Component Based Software Engineering

What are the “Entities” to compose ?

• Functions

• Modules

• Objects

• Components

• Services

• …2010

2000

1990

1980

1970

1960 1968: Douglas McIlroy: “Mass Produced Software Components”

1998: Clemens Szyperski: “Component Software – Beyond Object Oriented Programming”

Page 8: Component Based Software Engineering

Introductory Reading

• Mahesh Dodani: “From Objects to Services: A Journey in Search of Component Reuse Nirvana”, in Journal of Object Technology, 2004. http://www.jot.fm/issues/issue_2004_09/column5/

• Roger Sessions: “Fuzzy Boundaries – Objects, Components and Web Services”, in ACM Queue Magazine, 2005. http://queue.acm.org/detail.cfm?id=1039533

• Doug McIlroy, Mass Produced Software Components, 1969.

http://cm.bell-labs.com/cm/cs/who/doug/components.txt

Page 9: Component Based Software Engineering

Principles for reuse by composition

• Key requirements for Black-Box reuse:– Abstraction: an “Entity” is known by its

“interface”

– Encapsulation: the “insides” of an “Entity” are not exposed to the outside

Page 10: Component Based Software Engineering

Commonalities of Reusable Entities

• All are blobs of code that can do something

• All have interfaces that describe what they can do.

• All live in a process somewhere.

• All live to do the bidding of a client.

• All support the concept of a client making requests by “invoking a method.”

From [ACM Queue]

Page 11: Component Based Software Engineering

Reusable Entities by Location and Environment

From [ACM Queue]

Environment: the hosting runtime environment for the Entity and the Client (Examples: Microsoft .NET, WebSphere EJB)

Page 12: Component Based Software Engineering

From [ACM Queue]

Page 13: Component Based Software Engineering

From [ACM Queue]

Page 14: Component Based Software Engineering

From [ACM Queue]

Page 15: Component Based Software Engineering

Fuzzy Boundaries: Objects, Components, Services

Example: plain Java Class From [ACM Queue]

Page 16: Component Based Software Engineering

Fuzzy Boundaries: Objects, Components, Services

Modern frameworks, compilers and IDE’s make it very easy to:

Transform Dog Class into a Distributed ComponentorTransform Dog Class into a Web Service

Problem: this power of transformation creates fuzzy boundaries between concepts

From [ACM Queue]

Page 17: Component Based Software Engineering

Objects-Components-Services

Entities for Reuse and Composition•Abstraction

•Encapsulation

Objects Components Services•Location: same process

•Inheritance

•Polymorphism

•Location: different processes, same environment

•Usually some runtime infrastructure needed

•No state

•No shared variables

•Location: different environments

•More emphasis on interface/contract/service agreement

•Mechanisms for dynamic discovery

•Dynamically composable

Page 18: Component Based Software Engineering

Reusable Entitiesmade more usable and more

composable• Issues:

• Interface description – what should contain a complete description ?

• Composition – how are components glued together ? (do I have to write much glue code ?)

• Discovery – where and how to find the component/service you need ?

• Dynamic aspects – when to do discovery/selection/composition

• Less stress on binary implementation – crossing platform/model boundaries

Page 19: Component Based Software Engineering

Course Outline• Reuse

• The broad reuse landscape

• Components• Basic concepts in CBSE• Modelling components with UML 2.0• Component Models and Technology

• Short overview of industry standards

• Architectural components• Case study: the Fractal component model

• Component contracts• Component specification techniques• Component integration vs Predictable composition

• Services• Key concepts in service oriented computing• Web Services as an example in SOC• Service composition

Page 20: Component Based Software Engineering

Bibliography• No single textbook !• Specific chapters from various books

– Ian Sommerville, Software Engineering, 8th edition, chapters 18,19,31– Ivica Crnkovic, Magnus Larsson. Building reliable component based

software systems, Artech House, 2002. chapters 1,2,4,9

• Articles and technical reports– Active research field: The ACM CBSE conferences series:

http://cbse-conferences.org/2012/

• Important: the course webpage: http://www.cs.utt.ro/~ioana/cbse – Slides– Bibliographic pointers per each topic– Lab assignements– Announcements