Programação com Componentes 2005.2

---

General information:

§       Lecturer: Jacques Robin

§       Teaching assistants: Fábio Moura, Jairson Vitorino

§       When: 2a 08:00-10:00 & 4a 08:00-10:00

§       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., Lyons B. and Fado, D. OMG Press. Wiley. 2004.

§       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

§       Readings:

§       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

§       Readings:

§       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

§       Readings:

§       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

§       Readings:

§       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

§       Readings:

§       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

§       Readings:

§       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

§       Readings:

§       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

§       Readings:

§       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

§       Enterprise Java Beans (EJB)

§       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

§       Readings:

§         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

§       Readings:

§       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

§       Readings:

§       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