• No results found

Ambientes de Desenvolvimento Avançados

N/A
N/A
Protected

Academic year: 2021

Share "Ambientes de Desenvolvimento Avançados"

Copied!
13
0
0

Loading.... (view fulltext now)

Full text

(1)

1

Ambientes de

Desenvolvimento

Avançados

http://www.dei.isep.ipp.pt/~jtavares/ADAV/ADAV.htm

Aula 5

Engenharia Informática

2006/2007 José António Tavares [email protected]

O que é um componente e o

que não é?

Capítulo

4

de: Szyperski, Clemens et al. Component Software - Beyond

(2)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

3

O que é um componente?

z “A software package which offers service through interfaces”

[Peter Herzum and Oliver Sims, “Business Components Factory: A Comprehensive Overview of Component-Based Development for the Enterprise”, John Wiley & Sons, Incorporated, 1999].

z “A coherent package of software artifacts that can be independently developed and delivered as a unit and that can be composed, unchanged, with other components to build something larger”

[D.F. D’Souza and A.C. Wills, “Objects, Components, And Frameworks with UML – The Catalysis Approach” Addison-Wesley, 1998].

z “A component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties.”

[C. Szyperski, “Component Software: Beyond Object-Oriented Programming” Addison-Wesley, 1998].

O que não é um componente?

Component isn’t an object, not in sense of

simply being an object in a Java or C++

program, although it is true at runtime.

(3)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

5

Componentes, Interfaces e

re-entrada.

Capítulo

5

de: Szyperski, Clemens et al. Component Software - Beyond

Object-Oriented Programming. Second Edition

Conteúdo

z Componentes e interfaces

z Interfaces directas e indirectas

z Versões

z Interfaces como contrato

z O que pertence a um contrato?

z Formalidade ou informalidade?

z Características não documentadas

z Callbackse contractos

(4)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

7

Componentes e interfaces

z Interfaces are the means by which components

connect. Technically, an interface is a set of named operations that can be invoked by clients.

z Each operation’s semantics is specified, and this specification plays a dual role as it serves both providers implementing the interface and clients using the interface.

Componentes e interfaces

z A component may either directly provide an

interface or implement objects that, if made available to clients, provide interfaces.

z Interfaces directlyprovided by a component correspond to procedural interfaces of

traditional libraries. Such indirectly

implemented interfaces correspond to object interfaces.

(5)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

9

Interfaces Directas e indirectas

z A procedural (direct) interface to a component is

modeled as an object interface of a static object within the component.

z An object (indirect) interface introduces an indirection called method dispatch or, sometimes, dynamic method lookup.

Interfaces Directas e indirectas

(6)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

11

Interfaces Directas e indirectas

Example of indirection: messages

Versões

z Traditional version management assumes that the versions of a component evolve at a single source. In a free market, the

evolution of versions is more complex and management of version numbers can become a problem in its own right.

z With direct interfaces it suffices to check versions at bind time, which is when a service is first requested.

z In indirect interfaces couple arbitrary third party.

z In a versioned system, care must be taken to avoid indirect coupling of parties that are of incompatible versions.

z The goal is to ensure that older and newer components are either compatible or clearly detected as incompatible.

(7)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

13

Interfaces como contrato

z Interfaces can be viewed as contracts between provider and consumer;

z The contract states what the client needs to do to use the interfaces and what the provider has to implement to meet the services promised by the interface;

z A contract is an appropriate approach, with pre-and post-conditions attached to every operation

z The client has to establish the pre-condition before calling the operation and the provider can rely on the precondition being met whenever the operation is called

z The provider has to establish the post-condition before returning to the client and the client can rely on the post-condition being met whenever the call to the operation returns

z Pre- and post-conditions are not the only way to form contracts.

O que pertence a um contrato?

z contract = signature + behavioral specification;

z specifies requirementsand guarantees, perhaps using pre-and post-conditions;

z refinements(eg revisions) may weaken preconditionsand/or

strengthen post conditions

z might also specify non-functional requirements(eg speed, time complexity, space)

z might also specify safety(“this bad thing will never happen”) and progress(“this good thing will eventually happen”) properties

(8)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

15

Formalidade ou informalidade?

z None of the real-world laws are formal. New

“interpretations” are found every day and tested in court.

z Interface contracts should be as formal as possible to derive all necessary information and to enable formal verification – this is complex and, therefore, rarely used in practice;

z Different parts of a system can be specified using different degrees of formality – the preciseness of the specification have to be balanced against the critically of the target part.

Características não

documentadas

z always possible to observe behavior of implementation (eg testing, debugging, espionage)

z may provide more information than specification

z depending on such information is dangerous

z no guarantee that later versions will behave the same

z no guarantee even that this version always behaves the same

(9)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

17

Callbacks e contractos

z Callbackorup-callis procedure registered withand

subsequently called by a library

z Callbacksare a common feature in procedural libraries

that have to handle asynchronous events.

z A callback usually reverses the direction of the flow of controls, so a lower layer calls a procedure in a higher layer.

z The resulting contract are far less manageable than simple pre- and post-conditions.

z Validity of the library state is specified as part of a contract.

Callbacks e contractos

Client Other party Library Calls Results

Client installs callback Third party calls library Library invokes callback Callback queries library

Callback returns Library returns

Critical part

The intermediate library state at the point of calling the callback may be reveled to clients.

(10)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

19

public delegate void MyDelegate(); // delegate declaration public interface I {

event MyDelegate MyEvent; void FireAway();

}

public class MyClass: I {

public event MyDelegate MyEvent; public void FireAway()

{

if (MyEvent != null) MyEvent();

} }

public class MainClass {

static private void f() {

Console.WriteLine(“Called when the event fires."); }

static public void Main () { I i = new MyClass();

i.MyEvent += new MyDelegate(f); i.FireAway();

} }

Que é têm de especial os

callbacks?

z in layered architecture, calls originate in higher (more abstract) layer and move downwards

z library operations complete before returning to client, who cannot observe intermediate states

z callback usually reverses this flow

z intermediate state of library becomes visible

z client may observe, or even modify, library’s intermediate state

z client certainly observes identity and ordering of callbacks

(11)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

21

O que é que se pode fazer

z unrealistic to restrict behavior of client during

callback (most non-trivial callbacks query library for more information before taking appropriate action)

z library state must remain valid while observable

z hence must remain valid during callbacks

z no longer sufficient to give pre- and post-conditions for library

Re-entrada nos objectos

(re-entrance)

z The object re-entrance is the situation in which an object´s method is invoked while another method is still executing.

z The real problem is observation of an object undergoing a state transition with inconsistent intermediate states becoming visible. Considering object re-entrance, the problem is when an object´s method is invoked while another method is still executing.

z Recursion and re-entrances become even more pressing problem when crossing the boundaries of components.

(12)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

23

Re-entrada nos objectos

(re-entrance)

User

Interface ModelText Display

Calls Results

Type Write

insertNotification (remove caret mark) (update text display) (redisplay caret mark)

Text view

Message sequence caused by a request to insert a typed character

Re-entrada nos objectos

z

Multi-threading

z problems of recursive re-entrance similar to those of concurrent interaction

z perhaps helps to make objects thread-safe? (ie

protected from unwanted interference from concurrent activities)

z no! thread safety addresses only external re-entrance

z locking prevents other objects from invoking our methods, but cannot prevent us from invoking our own (or self-inflicted deadlocks would result)

(13)

2006/2007 ADAV

Ambientes de Desenvolvimento Avançados

25

Questões

References

Related documents

allocation rule for minimum cost spa nnin g tree p roblems, one s ees that it is intimately.. linked to th e algorithm for nding minimum co st s panning trees that is des crib

If the number of requested callbacks for a list, skill group at a given time is over the limit, it is possible to reject the callback request.. The callback number is checked against

Authorization token from here you will risk with firebase credential given credentials from now that were able to twitter callback url requires a protocol firebase.. For example

The intermediary library modifies relevant code pointer arguments on the stack 1 to point to unique callback stubs within its own address space, and saves the original (untrusted)

Note See Drivers for B-Series Windows Installation, page A-1 , for driver locations on the disk and information about how to determine which devices are installed in your server..

Keep in mind that functions of the Callback Management window (Callback Mode setting, Call Remote Service Center function, management of phone numbers used for the callback

Courtesy Callback Call Flow Courtesy Callback Considerations Configuring Courtesy Callback Lesson 5: Agent Greeting. Agent Greeting Overview Deployment Considerations

T o develop the survey frames, all GMAC, EFMD, and MBA CSC member schools, plus several nonmember institutions representing a cross section of the graduate management