Programação
com Componentes 2005.2
General
information:
§
Lecturer: Jacques
Robin
§
Teaching
assistants: Fábio
Moura, Jairson Vitorino
§
When:
2a
§
Where:
Room 4
§
This
page: www.cin.ufpe.br/~if710
§
Newsgroup: depto.courses.grad.if710
Bibliography:
§
Component-based
product line engineering with UML. Atkinson, C., Bayer, J., Bunse. C., Kamsties, E., Laitenberger, O., Laqua,
R., Muthig, D; Paech, B. Wüst, J. and Zettel. J. Component Software Series. Addison-Wesley. 2002.
§
MDA en action (Ingénérie
logicielle guidée par les modèles). Blanc, X. Eyrolles. 2005.
§
MDA
explained (The model-driven architecture: practice and promise). Kleppe, A., Warmer, J. and Bast,
W. Object-Technology Series. Addison-Wesley. 2003.
§
The
Object Constraint Language 2nd Ed. (Getting your models ready for MDA). Warmer,
J. and Kleppe, J. Object-Technology Series.
Addison-Wesley 2003
§
UML
2 Toolkit. Eriksson, H.E, Penker, M.,
§
Pattern-Oriented
Software Architecture: A System of Patterns. Buschmann, F., Meunier, R., Rohnert, H.,
Sommerlad. P. and Stal, M. Wiley. 1996.
§
Programming
.Net components. Juwal, L. O’Reilly. 2003.
§
AspectJ in action (Practical Aspect-Oriented
Programming). Laddad,
R. Manning. 2003.
Evaluation:
§
Individual
multiple-answer final exam: 25% of the grade
§
Group
lecture notes: 15% of the grade
§
Group
oral seminar: 15% of the grade
§
Group
project: 45% of the grade
Grades
breakdown:
§
Oral
seminar:
§
Meeting
advising deadlines: 1 point
§
Relevance:
1 point
§
Conciseness:
1 point
§
Correctness:
1 point
§
Breadth
completeness: 1 point
§
Depth
completeness: 1 point
§
Command/understanding
of material: 1 point
§
Clarity:
1 point
§
Examples:
1 point
§
Oral
skills: 1 point
§
Lecture
notes:
§
Relevance:
2 points
§
Correctness:
2 points
§
Completeness:
2 points
§
Command/understanding
of material: 2 points
§
Clarity:
2 points
§
Project:
§
For
Models:
§
Breath
completeness: 1 point
§
Depth
completeness: 1 point
§
Correctness:
1 point
§
Conciseness:
1 point
§
Modularity
and reusability: 1 point
§
Clarity
and explanations in written report: 1 point
§
For
Code:
§
Breadth
of functionalities: 1 point
§
Functional
tests and robustness: 1 point
§
Performance
tests and efficiency: 1 point
§
Interface
and user-friendliness: 1 point
§
Modularity
and reusability: 1 point
§
Documentation
and comments: 1 point
Seminar
advising:
§
Two
compulsory meeting with adviser: the first two weeks before seminar’s date, the
second one week before.
§
For
the first meeting, the student have ready a detailed outline of the seminar
that indicates the title and planned content of each slide
§
For
the second meeting, the student must have the presentation ready to rehearse it
with the adviser
§
Failure
to meet the first deadline will result in loosing one points from the seminar’s
grade
§
Failure
to meet the second deadline will result in the cancellation of the seminar,
with the adviser presenting the lecture and the student getting the grade zero
for the seminar
Roster:
§
Alexandre
de Souza Frias (asf)
§
Celio Andrade de Santana Junior
(casj)
§
Daniel Marques de Oliveira (dmo)
§
Domingos Rodrigues de Menezes Neto
(drmn)
§
Eudes
Pimentel Canuto (epc)
§
Fernando Valeriano de Almeida Lins
(fval)
§
Gilberto Antonio da Silva Junior
(gasj2)
§
Joao Marcelo Xavier Natario Teixe
(jmxnt)
§
Luis Otavio Peixoto Bastos (lopb)
§
Marcos Aurelio Almeida da Silva
(maas)
§
Mauro Fernando de Holanda Beltrao
Filho (mfhbf)
§
Osmany Barros de Freitas (obf)
§
Pedro Carlos Ferreira Santos (pcfs)
§
Pedro José Silva Leite (pjsl)
§
Ricardo da Motta Lugo Vieira (rmlv)
§
Saulo Lopes da Silva Oliveira (slso)
§
Saulo Souto Ribeiro de Franca
(ssrf)
§
Tiago Buarque Assunção de Carvalho
(tbac)
Unit
1: Software Reuse and Model-Driven Development
Lecture 0:
Course Overview 19/09
§
Jacques
§
Outline:
this page
Lectures 1
& 2: Overview of Software Reuse 26/09, 28/09
§
Jacques
§
§
Reusing software:
issues and research directions: http://citeseer.ist.psu.edu/mili95reusing.html
§
Software reuse:
principles, patterns, prospects: http://citeseer.ist.psu.edu/357780.html
§
Outline:
§
What
is software reuse?
§
Motivation
for software reuse
§
What
artifacts to reuse?
§
Consolidated
software reuse concepts and techniques
§
Subroutines
and functions
§
Modules,
libraries and packages
§
Meta-programming
and generative programming
§
Classes,
objects and inheritance
§
Object
frameworks
§
Cutting-edge
software reuse concepts and techniques
§
Interfaces
and code components
§
Component-based
architectures
§
Model-driven
architecture and model transformations
§
Separation
of concerns and aspects
§
Product
lines
§
Integration
of software reuse concepts and techniques
§
Reuse-oriented
software processes
§
Reuse-oriented
CASE tools
§ Slides: Intro2Reuse.ppt
Lecture 3: Overview
of Model-Driven Architecture and Development 03/10
§
Jacques
§
§
Chapters
1 & 2 of Kleppe, Warmer & Bast
§
Chapter
9 of Eriksson et al.
§
Chapter
1 of Blanc
§
Outline:
§
MDA
key principles
§
Motivation
and historical roots of MDA
§
CIM,
PIM and PSM
§
UML2
and OCL2: modeling languages for MDD
§
Metamodels and MOF
§
Model
transformations QVT and ATL
§
Model
repositories XMI, JMI and EMF
§
Slides:
MDD.ppt
Lecture 4:
Structural Modeling with UML Infrastructure 05/10
§
Jacques
§
§
Chapters
2 & 4 of Eriksson et al.
§
Outline:
§
UML
diagrams
§
UML
meta-model package structure
§
Classes
§
Associations
§
Object
diagrams
§
Packages
§
Templates
§
Active
classes and objects
§
Slides:
UMLStructural.ppt
Lecture 5:
Precise Semi-formal Modeling with OCL 17/10
§
Jacques
§
§
Chapters
1, 2 & 3 of Warmer & Kleppe
§
pp.
301-309 of Eriksson
§
pp.
74-87 of Blanc
§
Outline:
§
What
is OCL?
§
Purposes
of OCL
§
The
OCL meta-model
§
OCL
primitive types
§
OCL
arithmetic operations
§
OCL
boolean operations
§
OCL
string operations
§
OCL
collections
§
OCL
navigation
§
OCL
constraints
§
Class
invariants
§
Method
pre and post-conditions
§
Slides:
OCL.ppt
Lecture 6:
Meta-modeling with MOF and UML Profiles 19/10
§
Jacques
§
§
Chapter
8 of Kleppe, Warmer & Bast
§
Chapter
318-320 of Eriksson et al.
§
Chapter
2 & pp. 67-70 of Blanc
§
Outline:
§
What
is a meta-model?
§
The
four MDA layers
§
Linking
and composing metamodels
§
MOF1.4
§
UML2
Infra-structure
§
MOF2.0
§
UML
Profiles
§
Slides:
Metamodeling.ppt
Lectures 7, 8
& 9: Behavioral Modeling with UML Superstructure 31/10, 07/11, 09/11
§
Jacques
§
§
pp.
145-172, 195-200 & 205-206 of Eriksson et al.
§
pp.
50-57 & 87-94 of Blanc
§
Outline:
§
State
machines
§
Activity
diagrams
§
Action
semantics
§
Concurrency
modeling
§
Time
modeling
§
Slides:
UMLBehavioral.ppt
Lectures 11
& 12: Model Repositories and Transformations 23/11, 30/11
§
Jacques
§
Readings:
§
Chapters
5, 6 & 7 of Blanc
§
ATL: Atlas
Transformation Language, User Manual – version 0.6: http://dev.eclipse.org/viewcvs/indextech.cgi/gmt-home/subprojects/ATL/doc/ATL_User_Manual[v00.09].pdf
§
http://www.w3schools.com/xml/default.asp
§
http://www.w3schools.com/schema/default.asp
§
http://www.w3schools.com/xsl/default.asp
§
Outline:
§
What
is a model repository?
§
Requirements
of model repositories
§
Approaches
to model repositories
§
XML
§
XMI:
an XML-based standard for model persistence and exchanges
§
JMI:
a Java API for model manipulation
§
EMF:
an Eclipse-based, generative model repository
§
What
is a model transformation?
§
Purposes
of model transformation in MDD
§
Current
approaches to model transformations
§
Imperative
object-oriented programming in Java
§
Declarative
programming in XSLT
§
Declarative
specification with dedicated model transformation languages
§
ATL:
an OCL-based model transformation languages
§ Slides: ModelRepositoriesTranformations.ppt
Lecture 13:
Aspect-Oriented Development 07/12
§
Eudes & Pedro F.
§
Readings:
§
Tom Janofsky’s AspectJ Tutorial: http://www.tomjanofsky.com/aspectj_tutorial.html
§
Tom
Janofsky’s AspectJ Slides: http://www.tomjanofsky.com/AspectJ.pdf
§
The Role of
Aspect-Oriented Programming in OMG’s Model-Driven Architecture: www.aspectprogramming.com/papers/AOP%20and%20MDA.pdf
§
Supporting Aspects in
MDA: http://smealsearch2.psu.edu/48453.html
§
An Aspect-Oriented
Model-Driven Framework
§
An Aspect-Oriented
Approach to Early Design Modeling: www.cs.colostate.edu/~georg/aspectsPub/IEE04.pdf
§ Outline:
§
Cross-cutting concerns in object-oriented
development
§
Concepts
of aspect-oriented programming
§
AspectJ
§
AOP
support for C#, C++ and .Net
§
Aspect-oriented
modeling with UML
§
AOD
and CBD
§
AOD
and MDA
§
Slides:
AOD.ppt
Lecture 14:
GUI Modeling with UML 30/01
§
Daniel
& João
§
§
A UML Profile for GUI Layout: http://www.bitfolge.de/pubs/thesis/index.html
§
Chapter 6 of Software
Engineering for Adaptive Hypermedia Systems: http://www.pst.informatik.uni-muenchen.de/
personen/kochn/PhDThesisNoraKoch.pdf
§
The Authoring
Process of the UML-based Web Engineering Approach: http://www.pst.informatik.uni-muenchen.de/
publications/uwe_iwwost01.pdf
§
Outline:
§
UMLWE
notation and method
§
UML profile for GUI layout
§
Slides:
GUIModeling.exe
Lecture 16:
UML Modeling Tools 19/12
§
Luis,
Osmany & Pedro L.
§
Readings:
§
Outline:
§
IBM
Rational Software Modeler
§
Creating
a model
§
Importing
a model
§
Editing
a class diagram
§
Editing
an object diagram
§
Editing
a state machine
§
Editing
an activity diagram
§
Editing
object-flows
§
Structuring
a model in packages
§
Printing
a model
§
Exporting
a model
§
OCL
tool
§
Editing
an OCL expression
§
Adorning
behavioral UML diagrams with OCL expressions
§
Editing
an OCL constraints
§
Adorning
structural UML diagrams with OCL constraints
§
Adorning
MOF meta-models with OCL constraints
§
Importing
and export OCL adorned models and meta-models
§
Slides: UMLTools.ppt
Lecture 21: MDA Tools 11/02 14:00-16:00
§
Alex & Gilberto
§
Readings:
§
Outline:
§
Eclipse
§
EMF
§
Importing
a meta-model
§
Importing
a model
§
Using
the reflective interface
§
Generating
the tailored interface
§
Generating
the tailored model graphical editor
§
Creating
a model with the tailored graphical editor
§
Programming
transformations using the tailored interface
§
Exporting
a model
§
ATL
§
Importing
a source meta-model
§
Importing
a target meta-model
§
Creating
a source model
§
Loading
a transformation rule base
§
Generating
a target model
§
Loading
a query base
§
Generating
code and documentation
Slides: MDATools.ppt
Unit 2:
Component-Based Development and the KobrA Method
Lecture 15:
Overview of Software Components 14/12
§
Jacques
§
Readings:
§
Chapter
7 of Eriksson et al.
§
Chapter
1 of Buschmann et al.
§
Chapter
2 of Löwy
§
pp.
57-67 of Blanc
§
Outline:
§
Definitions
of software components
§
Classes
of software components
§
Executable
components
§
UML
components
§
Component
assembly
§
Executable
component frameworks
§
Architectural
patterns
§ Slides: CBD.ppt
Lectures 17
& 19: KobrA Component Artifacts and Sub-Processes
30/01 & 06/02
§
Jacques
§
Readings:
§
Chapters
2-10, 12 & Appendices A, B of Atkinson et al.
§
Outline:
§
Component
specification artifacts
§
Component
specification coherence and completeness rules
§
Component
specification process
§
Component
realization artifac20
§
Component
realization coherence and completeness rules
§
Component
specification-realization conformance rules
§
Component
realization process
§
Context
realization artifacts
§
Context
realization coherence and completeness rules
§
Context
realization process
§
The
KobrA meta-model
§
The
overall KobrA process
§
Component
composition
§
Component
containment
§
Component
clientship
§
Component
ownership
§
Component
generalization
§
COTS
reuse
§
Architectural
patterns in KobrA
§ Slides: Kobra.ppt, courtesy
of Colin Atkinson and the Kobra team
Lecture 18:
Java Beans 04/02 13:00-15:00
§
Marcos & Domingos
§
§
http://rangiroa.essi.fr/cours/langage/97-javaBeans.pdf
§
http://java.sun.com/docs/books/tutorial/javabeans/
§
http://www.drbob42.com/JBuilder/jb210t.htm
§
http://my.execpc.com/~gopalan/java/ejb.html
§
Outline:
§
Java
Beans
§
Basic
Concepts
§
Bean
Development Kit
§
BeanBox
§
Persistence
§
Bound,
Constrained and Indexed Properties
§
Bean
Customization
§
Using
BeanInfo
§
§
EJB
Architecture
§
EJB
Clients
§
EJB
Servlet Clients
§
EJB
Containers
§
EJB
Component Model (home interface, home object, remote interface, EJB Object,
Enterprise Bean, deployment descriptors)
§
Entity
Beans
§
Stateless
Session Beans
§
Persistent
Session Beans
§
Container-Managed
Persistence
§
Bean-Managed
Persistence
§
Java
Transaction Service (JTS)
§
Java
Naming and Directory Interface (JDNI)
§
EJB
compared to JavaBeans
§
IDE
for JavaBeans and EJB
§
Slides:
JavaBeans.ppt
Lecture 19: KobrA Component
Testing 23/01
§
Fernando & Tiago
§
§
Chapter
1, 3 & 4 of Built-in
Contract Testing: Method and Process
§
Outline:
§
Built-in Contract Testing
§
Test selection techniques
§
Built-in server tester components
§
Built-in testing interface
§
Associations between client and
tester components
§
Associations between server
component and testing interface
§
Associations between tester
component and testing interface
§
The KobrA
BICT development process
§
Slides: KobraTesting.ppt
Lecture 21:
.Net Components 08/02
§
Saulo,
Saulo & Celio
§
§
Chapters 2,3,6,7,8,9,10 of Löwy
§
http://www.w3schools.com/ngws/default.asp
§
Outline:
§
The Common Runtime Language
C#.Net
§
Interface-based
programming
§
.Net Events
§
.Net
Asynchronous calls
§
.Net
threads
§
Persistence
§
Remoting
§
Comparison
with JavaBeans
§
Comparison
with EJB
§
Visual
Studio
§
Slides:
.NetComponents.ppt
Lecture 24: Web Services 08/02
§
Celio
& Ricardo
§
§
http://webservices.xml.com/pub/a/ws/2001/04/04/webservices/index.html?page=1
§
http://www.developer.com/services/article.php/1485821
§
http://www.developer.com/services/article.php/2195981
§
Chapter 1,2,3 of http://java.sun.com/webservices/docs/1.6/tutorial/doc/
§
http://www.15seconds.com/Issue/010430.htm
§
http://www.dotnetjunkies.com/Tutorial/4D13CEFA-D0FD-44BE-8749-8D17B5757564.dcik
§
http://www.w3schools.com/webservices/default.asp
§
http://www.w3schools.com/soap/default.asp
§
http://www.w3schools.com/wsdl/default.asp.
§
Outline:
§
Motivation for Web Services
§
Web Service Architecture
§
SOAP
§
WSDL
§
UDDI
§
Comparison with JavaBeans
§
Comparison with EJB
§
Comparison with .Net Components
§
Exposing a JavaBean
as a Web Service
§
Exposing an EJB as a Web Service
§
Exposing a .Net Component as a Web
Service
§
When to deploy and not deploy one’s
component or application as a web service?
§
Slides: WebServices.ppt
Unit 3:
Project
Lecture 10:
Project Topics 16/11
§
Jacques
§
Outline:
§
Rollerslam simulator component: Osmany
& Pedro L.
§
Rollerslam agent and simulator components: Alex, Osmany
& Gilberto
§
Rollerslam graphics component: Luis & Mauro
§
Rollerslam controller, GUI, and graphics components: Daniel & João
§
UML2
model of DirectX API: Celio &
Ricardo / Daniel & João
§
UML2
model of Eclipse IDE Platform: Eudes & Pedro F.
§
UML2
Profile for C#.Net/C++.Net Components: Saulo & Saulo
§
UML2
Profile for JavaBeans Components: Marcos & Domingos
§
SPEM
Specification of ORCAS-KobrA Process w/BICT: Alex, Gilberto & Osmany
http://www.omg.org/technology/documents/formal/spem.htm
§
Slides:
ProjectTopics.ppt
Lecture 22:
Project Presentation-Feedback 1 13/02
§
UML2
Platform Model Projects, Version 1.0 of:
§
Interfaces
specifying the services provided by the API or Platform
§
OCL2
pre and post conditions of each operation of each interface
§
Class
diagram specifying the data types of each parameter and each return type of
each operation of each interface
§
OCL2
invariants adorning the class diagram
§
For
interfaces with operations which execution trigger state change of underlying
platform, protocol state machine describing the platform state lifecycle
resulting from calls to these operations
§
UML2
Profile Projects, Version 1.0 of:
§
MOF2
meta-model of the underlying platform implementation concepts
§
Specialization
relations attaching each top-level element in the meta-class hierarchy of the
meta-model below some meta-class of the UML2 meta-model
§
Rollerslam
Simulation ORCAS Component Projects:
§
Version 1.0 of PIM Specification
artifacts of each top-level component
§
Provided and required functional
interfaces with OCL2 pre and post-conditions
§
Class diagram adorned with OCL2 constraints
specifying the data type of each parameter and return value of each operation
of each interface
§
Protocol state machine specifying
the state transitions of the component triggered by calls to the operations of
its interface
§
Activity diagram of the whole
simulation (responsibility of team developing the controller and GUI component)
specifying the control flow among components with detailed state change nodes
and object flows
Lecture 23: Exam 15/02
Lecture 24:
Project Final Presentation-Feedback 2 06/03
§
UML2
Platform Model Projects, Version 2.0
§
Same
artifacts than version 1.0 corrected from feedback 1
§
Tested
using EMF on example instances
§
UML2
Profile Projects, Version 1.0 of:
§
Same
artifacts than version 1.0 corrected from feedback 1
§
Tested
using EMF on example instances
§
Rollerslam
Simulation ORCAS Component Projects:
§
Version 2.0 of PIM specification
artifacts of each top-level component corrected from feedback 1 plus:
§
Provided and required testing
built-in contract testing interfaces
§
Version 1.0 of PIM realization
artifacts of each top-level component
§
PIM realization class diagram with
OCL2 invariants, OCL2 pre and post condition for each operation of each class
(including functional classes and self-testing classes), with sub-component
classes linked through ports, stereotyped interfaces, dependencies and
realizations (including functional sub-components and server component tester
sub-components)
§
PIM realization activity diagram
specifying the algorithm of each operation of each class with detailed state
change nodes and object flows
§
PIM realization object diagram with
sub-component instances assembled through ports, stereotyped interfaces,
dependencies and realizations (including functional sub-components and server
component tester sub-components)
§
Version 1.0 of Recursive PIM
specification and realization artifacts of the sub-component embedding
relations down to built-in classes and opaque operations provided by the
targeted platforms
§
For each sub-component, same set of
artifacts than for the top-level components
Lecture 27: Project Presentation-Feedback 3 08/03
§
UML2 Platform Model Projects
§
ATL transformations from PIM to PSM
of Rollerslam simulation components using the
platform model
§
UML2 Profile Projects
§
ATL transformations from PIM to PSM
of Rollerslam simulation components using the profile
§
Rollerslam
Simulation ORCAS Component Projects:
§
Version 2.0 of PIM specification and
realization artifacts for all components and sub-components corrected from
feedback 2
§
Version 1.0 of PSM specification and
realization artifacts for all components and sub-components using the target
platform UML2 profile and UML2 model:
§
PSM provided and required functional
and testing interfaces with OCL2 pre and post-conditions
§
PSM class diagram adorned with OCL2
constraints specifying the data type of each parameter and return value of each
operation of each interface
§
PSM protocol state machine
specifying the state transitions of the component triggered by calls to the
operations of its interface
§
PSM activity diagram of the whole
simulation (responsibility of team developing the controller and GUI component)
specifying the control flow among components with detailed state change nodes
and object flows
§
PSM realization class diagram with
OCL2 invariants, OCL2 pre and post condition for each operation of each class
(including functional classes and self-testing classes), with sub-component
classes linked through ports, stereotyped interfaces, dependencies and
realizations (including functional sub-components and server component tester
sub-components)
§
PSM realization activity diagram
specifying the algorithm of each operation of each class with detailed state
change nodes and object flows
§
PSM realization object diagram with
sub-component instances assembled through ports, stereotyped interfaces,
dependencies and realizations (including functional sub-components and server
component tester sub-components)
Lecture 28: Project Presentation-Feedback 4 22/03
§
UML2 Platform Model Projects
§
ATL transformations from PSM to code
of Rollerslam simulation components using the
platform model
§
UML2 Profile Projects
§
ATL transformations from PSM to code
of Rollerslam simulation components using the profile
§
Rollerslam
Simulation ORCAS Component Projects:
§
Version 2.0 of PSM specification and
realization artifacts for all components and sub-components using the target
platform UML2 profile and UML2 model corrected from feedback 3
§
Version 1.0 of Implementation Java
for all components and sub-components
§
Scope of the implementation
§
Implementation difficulties
encountered and solutions
§
Unit test selection
§
Unit testing results
§
Demo of individual top-level
components
Lecture 29: Project Presentation-Feedback 5 05/04
§
Rollerslam
Simulation ORCAS Component Projects:
§
Version 1.0 of complete simulation
Java implementation
§
Integration test selection
§
Integration testing results
§
Integrated demo of whole simulation
§
Lecture 30: Project Presentation-Feedback 6 19/04
§
Rollerslam
Simulation ORCAS Component Projects:
§
Version 1.0 of Implementation .Net for
all components and sub-components
§
Scope of the implementation
§
Implementation difficulties
encountered and solutions
§
Unit test selection
§
Unit testing results
§
Demo of individual top-level
components
§
Comparison with Java implementation
Lecture 31: Project Presentation-Feedback 7 03/05
§
Rollerslam
Simulation ORCAS Component Projects:
§
Version 1.0 of complete simulation
.Net implementation
§
Integration test selection
§
Integration testing results
§
Integrated demo of whole simulation
§
Comparison with Java implementation
§
Lessons learned through the projects