• Non ci sono risultati.

Android applications are inspired by Multi-Agent Systems

N/A
N/A
Protected

Academic year: 2021

Condividi "Android applications are inspired by Multi-Agent Systems"

Copied!
41
0
0

Testo completo

(1)

21 July 2021

AperTO - Archivio Istituzionale Open Access dell'Università di Torino

Original Citation:

Android applications are inspired by Multi-Agent Systems

Terms of use:

Open Access

(Article begins on next page)

Anyone can freely access the full text of works made available as "Open Access". Works made available under a

Creative Commons license can be used according to the terms and conditions of said license. Use of all other works

requires consent of the right holder (author or publisher) if not exempted from copyright protection by the applicable law.

Availability:

This is the author's manuscript

(2)

Android applications are inspired

by Multi-Agent Systems

a.k.a. What does teaching technologies at university mean? How

to teach Android?

Matteo Baldoni

Universit`

a degli Studi di Torino

Dipartimento di Informatica

DroidCon Torino, February 6-7, 2014

1

Abstract

Any technology, sooner or later, passes away. A certain technology will

eventu-ally be replaced by newer technologies and computer science based technologies

has a quicker turn over than other kinds of technologies. CS students expect to

learn technologies because they are fashionable. Companies expect to hire

stu-dents who are aware of the ultimate trend technologies because they need those

technologies to be competitive in the market. So, everything seems simple: I,

as a teacher, should teach those technologies to students that will be hired by

the companies. Every time I face a new course, especially when it has a strong

technological content, I wonder which is the best way to teach it because while

I am convinced that teachers should be up to date about technologies, I am not

convinced that teachers should teach technologies. The key aspect, however, is

not only on the solution of a problem but also in the problem-posing.

Tech-nologies as part of the problem-posing and solving pedagogical methodology. A

fundamental part of the learning process is the discussion of the problem itself

and the generalization of the discovered process towards a solution. In other

words, a key aspect of teaching is to create “connections”, “links” among

pre-vious technologies and methodologies, even better if they are from unrelated

problems. Event-driven programming, the success of OO technologies for

real-izing frameworks, the achievement of software reuse are just few examples of

topics, which are involved by teaching Android. So, it should not surprise that

I think it is important to teach how strong the relation is between the

organi-zation of a Multi-Agent Systems, and the way in which an Android application

works. Especially in order to achieve a better software reuse. In my opinion,

this is a good way of teaching technologies and of overcoming their premature

departure.

(3)

2

Bio

Dr. Matteo Baldoni has a Ph.D. in Computer Science. He is an associate

profes-sor of Computer Science at the Computer Science Department of the University

of Turin (Italy). He is a member of both the Agent and Service-Oriented

Com-puting group and the Knowledge Representation and Reasoning group. He has

been working for over 15 years on multi-agent systems, computational logics,

declarative programming languages, knowledge representation and reasoning,

interaction protocols. He has also a long-term research experience on Semantic

Web and E-learning.

Matteo Baldoni is co-author of over 100 papers (see http://di.unito.it/

baldonibibcat) on the above topics, and served the research community by

taking part to the organization or to the program committee of several

confer-ences (including IJCAI, AAAI, AAMAS, ICWS), and by working as a reviewer

for major journals. From 2005, he is a member of the Steering Committee of the

workshop “From Objects to Agents” (WOA) and of the workshop “Declarative

Agent Languages and technologies” (DALT) Steering Committee since 2009.

From 2006 to 2010 he chaired the working group “Sistemi ad Agenti e

Multia-gente” (Agent and Multi-agent Systems) of the Italian Association for Artificial

Intelligence (AI*IA). In 2011 and 2013, he was elected also as a member of the

Board of AI*IA.

(4)

Droidcon Torino 2014

Android applications are inspired by

Multi-Agent Systems

a.k.a. What does teaching technologies at university mean?

How to teach Android?

Matteo Baldoni

1

1

(5)

Overview

1

Who I am and Where I am from

2

Teaching technologies

3

Learning is Making Links

4

An example: Agents inspire Android

(6)

Who am I?

I am an Associate Professor

at Dipartimento di

Informatica, Universit`

a degli

Studi di Torino

I am teaching

Programmazione II,

Interazione Uomo Macchina

(Android), both at I level, and

Agenti Intelligenti at II level

I am a member of both the

Agent and Service-Oriented

Computing group and the

Knowledge Representation

(7)

Corso di Laurea in Informatica - I, II, and III level

Three curricula at the first

level, three curricula at the II

level and one at the third level.

The contents of curricula have

been established in

collaboration with Comitato di

Indirizzo whose members are

from University itself, CCIAA

of Torino, and Unione

Industriale of Torino

(8)

Android in our curricula

Where?

Interazione Uomo Macchina

(IUM), third year of the I level

(mandatory for one curriculum,

optional for the remains), 3

CFU, 30 hours (theory and lab)

What?

An introduction to Android

framework (theory),

development of an app for

reading and presenting RSS

from the Dip. di Informatica

(9)

What is the problem of teaching technologies?

Expectations:

CS students expect to learn technologies because they are fashionable

Companies expect to hire students who are aware of the ultimate

trend technologies because they need those technologies to be

competitive in the market.

So, everything seems simple:

I, as a teacher, should teach those technologies to students that will be

hired by the companies!

(10)

What is the problem of teaching technologies?

Expectations:

CS students expect to learn technologies because they are fashionable

Companies expect to hire students who are aware of the ultimate

trend technologies because they need those technologies to be

competitive in the market.

So, everything seems simple:

I, as a teacher, should teach those technologies to students that will be

hired by the companies!

(11)

What is the problem of teaching technologies?

Any technology, sooner or later, passes away

A certain technology will eventually be replaced by newer technologies

and computer science based technologies have a quicker turn over

than other kinds of technologies.

which is the best way to teach technologies?

While I am convinced that teachers should be up to date about

(12)

What is the problem of teaching technologies?

Any technology, sooner or later, passes away

A certain technology will eventually be replaced by newer technologies

and computer science based technologies have a quicker turn over

than other kinds of technologies.

which is the best way to teach technologies?

While I am convinced that teachers should be up to date about

(13)

Learning is Making Links!

The key aspect is not only on the solution of a problem but also in

the problem-posing

Technologies as part of the problem-posing and solving pedagogical

methodology

A fundamental part of the learning process is the discussion of the

problem itself and the generalization of the discovered process

towards a solution

In other words:

A key aspect of teaching is to create ”connections”, ”links” among

previous technologies and methodologies, even better if they are from

unrelated problems

(14)

Learning is Making Links!

The key aspect is not only on the solution of a problem but also in

the problem-posing

Technologies as part of the problem-posing and solving pedagogical

methodology

A fundamental part of the learning process is the discussion of the

problem itself and the generalization of the discovered process

towards a solution

In other words:

A key aspect of teaching is to create ”connections”, ”links” among

previous technologies and methodologies, even better if they are from

unrelated problems

(15)

Learning is Making Links!

Topics involved by teaching Android: Event-driven programming, the

success of OO technologies for realizing frameworks, the achievement

of software reuse

How strong the relation is between the organization of a Multi-Agent

System, and the way in which an Android application works

In my opinion,

this is a good way of teaching technologies and of overcoming their

premature departure

(16)

Let us consider an example

An app with two activities, the first one offers a choice to the user

and the second one visualizes the information associated with the

choice of the user in the previous activity

(17)

Let us consider an example

1 <m a n i f e s t x m l n s : a n d r o i d=" http: // s c h e m a s . a n d r o i d . com / apk / res / a n d r o i d " 2 p a c k a g e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r " 3 a n d r o i d : v e r s i o n C o d e=" 1 " 4 a n d r o i d : v e r s i o n N a m e=" 1.0 " > 5 <u s e s−s d k 6 a n d r o i d : m i n S d k V e r s i o n=" 8 " 7 a n d r o i d : t a r g e t S d k V e r s i o n=" 16 " /> 8 <u s e s−p e r m i s s i o n a n d r o i d : n a m e=" a n d r o i d . p e r m i s s i o n . A C C E S S _ N E T W O R K _ S T A T E " /> 9 <u s e s−p e r m i s s i o n a n d r o i d : n a m e=" a n d r o i d . p e r m i s s i o n . I N T E R N E T " /> 10 <a p p l i c a t i o n 11 a n d r o i d : a l l o w B a c k u p=" true " 12 a n d r o i d : i c o n=" @ d r a w a b l e / i c _ l a u n c h e r " 13 a n d r o i d : l a b e l =" @ s t r i n g / a p p _ n a m e " 14 a n d r o i d : t h e m e=" @style / A p p T h e m e " > 15 < a c t i v i t y 16 a n d r o i d : n a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " 17 a n d r o i d : l a b e l =" @ s t r i n g / a p p _ n a m e " > 18 <i n t e n t − f i l t e r>

19 <a c t i o n a n d r o i d : n a m e=" a n d r o i d . intent . ac tion . MAIN " /> 20 <c a t e g o r y a n d r o i d : n a m e=" a n d r o i d . intent . c a t e g o r y . L A U N C H E R " /> 21 </ i n t e n t − f i l t e r> 22 </ a c t i v i t y> 23 < a c t i v i t y 24 a n d r o i d : n a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . D i s p l a y R S S A c t i v i t y " 25 a n d r o i d : l a b e l =" @ s t r i n g / t i t l e _ a c t i v i t y _ d i s p l a y _ r s s " 26 a n d r o i d : p a r e n t A c t i v i t y N a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " > 27 <meta−d a t a 28 a n d r o i d : n a m e=" a n d r o i d . s u p p o r t . P A R E N T _ A C T I V I T Y " 29 a n d r o i d : v a l u e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " />

(18)

Let us consider an example

1 // . . . 2 p u b l i c c l a s s M a i n A c t i v i t y e x t e n d s A c t i v i t y { 3 // . . . 4 p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { 5 s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 6 s e t C o n t e n t V i e w (R . l a y o u t . a c t i v i t y m a i n ) ; 7 } 8 p u b l i c v o i d s h o w S e l e c t e d R S S ( View v i e w ) { 9 I n t e n t i n t e n t = new I n t e n t ( t h i s , 10 D i s p l a y R S S A c t i v i t y . c l a s s ) ; 11 s w i t c h ( v i e w . g e t I d ( ) ) { 12 c a s e R . i d . e v e n t i n e w s : 13 i n t e n t . p u t E x t r a ( RSS CODE , 0 ) ; 14 b r e a k ; 15 c a s e R . i d . p r o p o s t e s t a g e : 16 i n t e n t . p u t E x t r a ( RSS CODE , 1 ) ; 17 b r e a k ; 18 c a s e R . i d . a p p e l l i e s a m e : 19 i n t e n t . p u t E x t r a ( RSS CODE , 2 ) ; 20 b r e a k ; 21 c a s e R . i d . r i s u l t a t i e s a m e : 22 i n t e n t . p u t E x t r a ( RSS CODE , 3 ) ; 23 b r e a k ; 24 c a s e R . i d . i l e a r n : 25 i n t e n t . p u t E x t r a ( RSS CODE , 4 ) ; 26 b r e a k ; 27 } 28 s t a r t A c t i v i t y ( i n t e n t ) ;

(19)

Let us consider an example

1 // . . . 2 p u b l i c c l a s s D i s p l a y R S S A c t i v i t y e x t e n d s A c t i v i t y { 3 // . . . 4 p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { 5 s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 6 s e t C o n t e n t V i e w ( 7 R . l a y o u t . a c t i v i t y d i s p l a y r s s ) ; 8 I n t e n t i n t e n t = g e t I n t e n t ( ) ; 9 i n t r s s I D = i n t e n t . 10 g e t I n t E x t r a ( M a i n A c t i v i t y . RSS CODE , −1); 11 t e x t V i e w = 12 ( WebView ) f i n d V i e w B y I d (R . i d . myRSS ) ; 13 C o n n e c t i v i t y M a n a g e r connMgr = 14 ( C o n n e c t i v i t y M a n a g e r ) g e t S y s t e m S e r v i c e ( 15 C o n t e x t . CONNECTIVITY SERVICE ) ; 16 N e t w o r k I n f o n e t w o r k I n f o = 17 connMgr . g e t A c t i v e N e t w o r k I n f o ( ) ; 18 i f ( n e t w o r k I n f o != n u l l && 19 n e t w o r k I n f o . i s C o n n e c t e d ( ) ) { 20 new DownloadFeed ( ) . e x e c u t e ( 21 M a i n A c t i v i t y . RSS LINKS [ r s s I D ] ) ; 22 } e l s e { 23 c u r r e n t F e e d = 24 " No n e t w o r k c o n n e c t i o n a v a i l a b l e . " ; 25 t e x t V i e w . l o a d D a t a ( 26 c u r r e n t F e e d , " text / html " , n u l l ) ; 27 } 28 }

(20)

What did I learn?

How to specify an AndroidManifest

How to define an activity

How to call an activity from another activity

Something more is there?

(21)

What did I learn?

How to specify an AndroidManifest

How to define an activity

How to call an activity from another activity

Something more is there?

(22)

What is an agent?

An intelligent agent is:

A computer system capable of flexible autonomous action in some

environment in order to achieve its goals

Object

Has identity

Encapsulates some

state and behaviour

Has interfaces

by/through which

they communicate

with each other

Agent

Has identity

Encapsulates some state and

behaviour

Has interfaces by/through which

they communicate with each

other

Is autonomous

(23)

What is an agent?

An intelligent agent is:

A computer system capable of flexible autonomous action in some

environment in order to achieve its goals

Object

Has identity

Encapsulates some

state and behaviour

Has interfaces

by/through which

they communicate

with each other

Agent

Has identity

Encapsulates some state and

behaviour

Has interfaces by/through which

they communicate with each

other

Is autonomous

(24)

What is an agent?

An intelligent agent is:

A computer system capable of flexible autonomous action in some

environment in order to achieve its goals

Object

Has identity

Encapsulates some

state and behaviour

Has interfaces

by/through which

they communicate

with each other

Agent

Has identity

Encapsulates some state and

behaviour

Has interfaces by/through which

they communicate with each

other

Is autonomous

(25)

What is an agent?

Which object makes the

decision about the execution

of method m?

Object O

2

has no control

over the execution of m: the

decision about whether to

execute m lies entirely with

O

1

.

A

2

is an autonomous agent:

it has control over both its

state and its behaviour

A

1

cannot take for granted

that agent A

2

will execute

action a just because A

1

wants it to

(26)

What is an agent?

Which object makes the

decision about the execution

of method m?

Object O

2

has no control

over the execution of m: the

decision about whether to

execute m lies entirely with

O

1

.

A

2

is an autonomous agent:

it has control over both its

state and its behaviour

A

1

cannot take for granted

that agent A

2

will execute

action a just because A

1

wants it to

(27)

Why agents?

Advantages:

Break the control flow

Decouple components

Achieve a better modularization

Achieve an easier software re-use

(28)

Why agents?

Advantages:

Break the control flow

Decouple components

Achieve a better modularization

Achieve an easier software re-use

(29)

Our example: revisited

1 // . . . 2 p u b l i c c l a s s M a i n A c t i v i t y e x t e n d s A c t i v i t y { 3 // . . . 4 p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { 5 s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 6 s e t C o n t e n t V i e w (R . l a y o u t . a c t i v i t y m a i n ) ; 7 } 8 p u b l i c v o i d s h o w S e l e c t e d R S S ( View v i e w ) { 9 I n t e n t i n t e n t = new I n t e n t ( t h i s , D i s p l a y R S S A c t i v i t y . c l a s s ) ; 10 s w i t c h ( v i e w . g e t I d ( ) ) { 11 c a s e R . i d . e v e n t i n e w s : 12 i n t e n t . p u t E x t r a ( RSS CODE , 0 ) ; 13 b r e a k ; 14 c a s e R . i d . p r o p o s t e s t a g e : 15 i n t e n t . p u t E x t r a ( RSS CODE , 1 ) ; 16 b r e a k ; 17 c a s e R . i d . a p p e l l i e s a m e : 18 i n t e n t . p u t E x t r a ( RSS CODE , 2 ) ; 19 b r e a k ; 20 c a s e R . i d . r i s u l t a t i e s a m e : 21 i n t e n t . p u t E x t r a ( RSS CODE , 3 ) ; 22 b r e a k ; 23 c a s e R . i d . i l e a r n : 24 i n t e n t . p u t E x t r a ( RSS CODE , 4 ) ; 25 b r e a k ; 26 } 27 s t a r t A c t i v i t y ( i n t e n t ) ; 28 } 29 // . . .

(30)

Our example: revisited

1 // . . . 2 p u b l i c c l a s s M a i n A c t i v i t y e x t e n d s A c t i v i t y { 3 // . . . 4 p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { 5 s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 6 s e t C o n t e n t V i e w (R . l a y o u t . a c t i v i t y m a i n ) ; 7 } 8 p u b l i c v o i d s h o w S e l e c t e d R S S ( View v i e w ) { 9 I n t e n t i n t e n t = new I n t e n t ( t h i s , D i s p l a y R S S A c t i v i t y . c l a s s ) ; 10 s w i t c h ( v i e w . g e t I d ( ) ) { 11 c a s e R . i d . e v e n t i n e w s : 12 i n t e n t . p u t E x t r a ( RSS CODE , 0 ) ; 13 b r e a k ; 14 c a s e R . i d . p r o p o s t e s t a g e : 15 i n t e n t . p u t E x t r a ( RSS CODE , 1 ) ; 16 b r e a k ; 17 c a s e R . i d . a p p e l l i e s a m e : 18 i n t e n t . p u t E x t r a ( RSS CODE , 2 ) ; 19 b r e a k ; 20 c a s e R . i d . r i s u l t a t i e s a m e : 21 i n t e n t . p u t E x t r a ( RSS CODE , 3 ) ; 22 b r e a k ; 23 c a s e R . i d . i l e a r n : 24 i n t e n t . p u t E x t r a ( RSS CODE , 4 ) ; 25 b r e a k ; 26 } 27 s t a r t A c t i v i t y ( i n t e n t ) ; 28 } 29 // . . .

This is a

communi-cation not a method

invocation!

There is no reference to

the other activity, there

is no an instruction of

the form o.m(args)

(31)

Our example: revisited

1 // . . . 2 p u b l i c c l a s s D i s p l a y R S S A c t i v i t y e x t e n d s A c t i v i t y { 3 // . . . 4 p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { 5 s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 6 s e t C o n t e n t V i e w ( 7 R . l a y o u t . a c t i v i t y d i s p l a y r s s ) ; 8 I n t e n t i n t e n t = g e t I n t e n t ( ) ; 9 i n t r s s I D = i n t e n t . g e t I n t E x t r a ( M a i n A c t i v i t y . RSS CODE , −1); 10 t e x t V i e w = 11 ( WebView ) f i n d V i e w B y I d (R . i d . myRSS ) ; 12 C o n n e c t i v i t y M a n a g e r connMgr = 13 ( C o n n e c t i v i t y M a n a g e r ) g e t S y s t e m S e r v i c e ( 14 C o n t e x t . CONNECTIVITY SERVICE ) ; 15 N e t w o r k I n f o n e t w o r k I n f o = 16 connMgr . g e t A c t i v e N e t w o r k I n f o ( ) ; 17 i f ( n e t w o r k I n f o != n u l l && 18 n e t w o r k I n f o . i s C o n n e c t e d ( ) ) { 19 new DownloadFeed ( ) . e x e c u t e ( 20 M a i n A c t i v i t y . RSS LINKS [ r s s I D ] ) ; 21 } e l s e { 22 c u r r e n t F e e d = 23 " No n e t w o r k c o n n e c t i o n a v a i l a b l e . " ; 24 t e x t V i e w . l o a d D a t a ( 25 c u r r e n t F e e d , " text / html " , n u l l ) ; 26 } 27 } 28 // . . .

(32)

Our example: revisited

1 // . . . 2 p u b l i c c l a s s D i s p l a y R S S A c t i v i t y e x t e n d s A c t i v i t y { 3 // . . . 4 p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { 5 s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 6 s e t C o n t e n t V i e w ( 7 R . l a y o u t . a c t i v i t y d i s p l a y r s s ) ; 8 I n t e n t i n t e n t = g e t I n t e n t ( ) ; 9 i n t r s s I D = i n t e n t . g e t I n t E x t r a ( M a i n A c t i v i t y . RSS CODE , −1); 10 t e x t V i e w = 11 ( WebView ) f i n d V i e w B y I d (R . i d . myRSS ) ; 12 C o n n e c t i v i t y M a n a g e r connMgr = 13 ( C o n n e c t i v i t y M a n a g e r ) g e t S y s t e m S e r v i c e ( 14 C o n t e x t . CONNECTIVITY SERVICE ) ; 15 N e t w o r k I n f o n e t w o r k I n f o = 16 connMgr . g e t A c t i v e N e t w o r k I n f o ( ) ; 17 i f ( n e t w o r k I n f o != n u l l && 18 n e t w o r k I n f o . i s C o n n e c t e d ( ) ) { 19 new DownloadFeed ( ) . e x e c u t e ( 20 M a i n A c t i v i t y . RSS LINKS [ r s s I D ] ) ; 21 } e l s e { 22 c u r r e n t F e e d = 23 " No n e t w o r k c o n n e c t i o n a v a i l a b l e . " ; 24 t e x t V i e w . l o a d D a t a ( 25 c u r r e n t F e e d , " text / html " , n u l l ) ; 26 } 27 } 28 // . . .

The activity

au-tonomously decide to

read the message!

(33)

Activities as Agents

Advantages:

Break the control flow: each activity has own life cicle

Decoupling components: an activity does not refer directly to another

activity

Achieve a better modularization: an activity is more self-defined

Achieve an easier software re-use: more than one activity may be used

(34)

A Multi-Agent System (MAS)

A multiagent system contains a number of agents which interact through

communication, are able to act in an environment, have different ”spheres

of influence” (which may coincide), will be linked by other (organizational)

relationships

(35)

An Android Device

An Android device contains a number of activities which interact through

communication (intent), are able to act in an mobile device, have different

”spheres of influence” (which may coincide), will be linked by other apps

(36)

Our example: revisited

1 <m a n i f e s t x m l n s : a n d r o i d=" http: // s c h e m a s . a n d r o i d . com / apk / res / a n d r o i d " 2 p a c k a g e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r " 3 a n d r o i d : v e r s i o n C o d e=" 1 " 4 a n d r o i d : v e r s i o n N a m e=" 1.0 " > 5 <u s e s−s d k 6 a n d r o i d : m i n S d k V e r s i o n=" 8 " 7 a n d r o i d : t a r g e t S d k V e r s i o n=" 16 " /> 8 <u s e s−p e r m i s s i o n a n d r o i d : n a m e=" a n d r o i d . p e r m i s s i o n . A C C E S S _ N E T W O R K _ S T A T E " /> 9 <u s e s−p e r m i s s i o n a n d r o i d : n a m e=" a n d r o i d . p e r m i s s i o n . I N T E R N E T " /> 10 <a p p l i c a t i o n 11 a n d r o i d : a l l o w B a c k u p=" true " 12 a n d r o i d : i c o n=" @ d r a w a b l e / i c _ l a u n c h e r " 13 a n d r o i d : l a b e l =" @ s t r i n g / a p p _ n a m e " 14 a n d r o i d : t h e m e=" @style / A p p T h e m e " > 15 < activity 16 a n d r o i d : n a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " 17 a n d r o i d : l a b e l =" @ s t r i n g / a p p _ n a m e " > 18 <i n t e n t − f i l t e r>

19 <a c t i o n a n d r o i d : n a m e=" a n d r o i d . intent . ac tion . MAIN " /> 20 <c a t e g o r y a n d r o i d : n a m e=" a n d r o i d . intent . c a t e g o r y . L A U N C H E R " /> 21 </ i n t e n t − f i l t e r> 22 </ a c t i v i t y> 23 < activity 24 a n d r o i d : n a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . D i s p l a y R S S A c t i v i t y " 25 a n d r o i d : l a b e l =" @ s t r i n g / t i t l e _ a c t i v i t y _ d i s p l a y _ r s s " 26 a n d r o i d : p a r e n t A c t i v i t y N a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " > 27 <meta−d a t a 28 a n d r o i d : n a m e=" a n d r o i d . s u p p o r t . P A R E N T _ A C T I V I T Y " 29 a n d r o i d : v a l u e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " />

(37)

Our example: revisited

1 <m a n i f e s t x m l n s : a n d r o i d=" http: // s c h e m a s . a n d r o i d . com / apk / res / a n d r o i d " 2 p a c k a g e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r " 3 a n d r o i d : v e r s i o n C o d e=" 1 " 4 a n d r o i d : v e r s i o n N a m e=" 1.0 " > 5 <u s e s−s d k 6 a n d r o i d : m i n S d k V e r s i o n=" 8 " 7 a n d r o i d : t a r g e t S d k V e r s i o n=" 16 " /> 8 <u s e s−p e r m i s s i o n a n d r o i d : n a m e=" a n d r o i d . p e r m i s s i o n . A C C E S S _ N E T W O R K _ S T A T E " /> 9 <u s e s−p e r m i s s i o n a n d r o i d : n a m e=" a n d r o i d . p e r m i s s i o n . I N T E R N E T " /> 10 <a p p l i c a t i o n 11 a n d r o i d : a l l o w B a c k u p=" true " 12 a n d r o i d : i c o n=" @ d r a w a b l e / i c _ l a u n c h e r " 13 a n d r o i d : l a b e l =" @ s t r i n g / a p p _ n a m e " 14 a n d r o i d : t h e m e=" @style / A p p T h e m e " > 15 < activity 16 a n d r o i d : n a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " 17 a n d r o i d : l a b e l =" @ s t r i n g / a p p _ n a m e " > 18 <i n t e n t − f i l t e r>

19 <a c t i o n a n d r o i d : n a m e=" a n d r o i d . intent . ac tion . MAIN " /> 20 <c a t e g o r y a n d r o i d : n a m e=" a n d r o i d . intent . c a t e g o r y . L A U N C H E R " /> 21 </ i n t e n t − f i l t e r> 22 </ a c t i v i t y> 23 < activity 24 a n d r o i d : n a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . D i s p l a y R S S A c t i v i t y " 25 a n d r o i d : l a b e l =" @ s t r i n g / t i t l e _ a c t i v i t y _ d i s p l a y _ r s s " 26 a n d r o i d : p a r e n t A c t i v i t y N a m e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " > 27 <meta−d a t a 28 a n d r o i d : n a m e=" a n d r o i d . s u p p o r t . P A R E N T _ A C T I V I T Y " 29 a n d r o i d : v a l u e=" it . unito . di . i u m 1 2 1 3 . r s s r e a d e r . M a i n A c t i v i t y " />

Organization and

agents!

(38)

What did I learn?

How to define an activity: how to define components that act and

sense an environment

How to specify an AndroidManifest: how to specify an organization of

autonomous components that can commit to do something

How to call an activity from another activity: how to obtain an easier

software reuse and increase the decoupling of components by means

of communication

(39)

What did I learn?

How to define an activity: how to define components that act and

sense an environment

How to specify an AndroidManifest: how to specify an organization of

autonomous components that can commit to do something

How to call an activity from another activity: how to obtain an easier

software reuse and increase the decoupling of components by means

of communication

(40)

Conclusions

We are aware of the importance of teaching technologies, both for

students and companies

We are aware that technologies, sooner or later, pass away

Technologies as part of the problem-posing and solving pedagogical

methodology

A key aspect of teaching is to create ”connections”, ”links” among

technologies and methodologies

An example: App as MAS

In my opinion, this is a good way of teaching technologies and of

overcoming their premature departure

(41)

Conclusions

We are aware of the importance of teaching technologies, both for

students and companies

We are aware that technologies, sooner or later, pass away

Technologies as part of the problem-posing and solving pedagogical

methodology

A key aspect of teaching is to create ”connections”, ”links” among

technologies and methodologies

An example: App as MAS

In my opinion, this is a good way of teaching technologies and of

overcoming their premature departure

Riferimenti

Documenti correlati

are said to have migraine appear to have a relatively low biologic threshold for headache; their headaches occur spontaneously or in response to internal and external

While literary writing is an art based on principles of personal style, fiction, and originality, good scientific writing is a craft that builds on clear communication

Giacomo de Angelis, INFN - LNL, Legnaro Domenico Di Bari, University of Bari Alessandro Drago, University of Ferrara Carlotta Giusti, University of Pavia Nunzio Itaco, University

If there exists a bounded open set Ω ⊆ R 2 such that: every trajectory which enters in it will stay inside Ω for all the other times, and such that it does not contains

On information given to the victims, this article makes no reference, in the case of children, to including the expertise of NGOs or agencies most appropriate to deal with children

Enumeration types (or enum) is a user defined data type mainly. used to assign names to constants easy to