Newsgroup: it.scienza.informatica
Titolo: Aspect Oriented Programming

Buongiorno a tutti,
con questo messaggio vorrei iniziare con voi,
(se ne sarete interessati :-), una discussione
riguardo alcune "tecniche emergenti" che in
questi ultimi anni stanno popolando il 'campo'
della programmazione orientata agli oggetti.
Mi riferisco in particolare alla cosiddetta
AOP (Aspect Oriented Programming), proposta,
per dirla in termini molto semplicistici, come
una tecnica per migliorare il concetto di
separation of concerns nello sviluppo di software
OOP e non solo.
L'AOP, ancora ad uno stato iniziale di
crescita (quello che era l'OOP una quindicicina
di anni fa) si sta evolvendo sotto diversi approcci.
I "cardini" di riferimento sono quelli che riporto,
(con un minimo commeto) in coda al msg in modo che,
sempre per chi fosse a digiuno della cosa, possa
darci un'occhiata.
E veniamo al punto....
+ avete gia' avuto modo di affrontare queste problematiche ?
+ cosa ne pensate ?
+ quali sono -veramente- i problemi che in una applicazione
  reale rendono l'OOP a volte "limitata" ?
+ quali secondo voi saranno le applicazioni che piu' sentiranno
  il beneficio di tale approccio ?
Chiudo, scusandomi per il post forse eccessivamente lungo,
ricordandovi che ho cercato di rimanere apposta generico,
ponendo piu' domande e fornendo gia' alcuni link, per dare
spazio, se eventualmente interessati, ad un discorso
possibilmente ampio...
Grazie per l'attenzione.
Fabrizio
http://microservo.webhop.org
-------------------------------------------------
1.
* Aspect Oriented Programming *
http://www.parc.xerox.com/aop
Xerox Palo Alto Research, che, grazie a Gregor Kiczales,
ha dato inizio ai primi studi.
Le loro ricerche si stanno 'concretizzando' nel progetto
AspectJ, una estensione "ad aspetti" per Java.
www.aspectj.org
2.
* Adaptive Programming *
http://www.ccs.neu.edu/research/demeter/
College of Computer Science, Northeastern University
mantenuto da Karl J. Lieberherr.
La loro implementazione si 'sintetizza' nel metodo
Demeter concretizzato nel progetto DemeterJ altra
estensione di Java.
3.
* Subject Oriented Programming *
http://www.research.ibm.com/sop/
della IBM Research, basato sul loro studio riguardo
il Multi-Dimensional separation of concerns
e concretizzato nei progetti per C++ (nel VisualAge),
Java (con HyperJ) e Smalltalk (ancora in sviluppo).
4.
* Composition Filters *
http://trese.cs.utwente.nl/composition_filters/
mantenuto dalla TRESE Group
e per finire non poteva mancare anche
5.
* Intentional Programming *
research.microsoft.com/ip/
alla Microsoft Research che a dir la verita' ricontrollando
ora il link ottengo un bel "This page has expired"....
Non si smentiscono mai... :-)
-------------------------------------------------

 della programmazione orientata agli oggetti.
.....
Ho atteso qualche giorno, ma vedo che nessuno sembra interessato.
Io lo sarei. Perň non so quasi nulla dell'aspect oriented programming.
Ne ho sentito parlare e so che "deriva" dagli studi sulla Separation of
Concerns. Stiamo quindi, suppongo, a livello di design di sistemi di
dimensioni medio-grosse. Anche se suppongo la cosa si possa poi
applicare a qualunque sistema.
Ho provato a seguire un paio dei link da te proposti ma senza trovare
nulla che mi permetta un'infarinatura generale ridotta in una pagina (si
tratta praticamente di studiarsi un intero sistema o linguaggio o
altro). Ammetto che non ci ho dedicato piů di una 15na di minuti. Ma il
tempo libero č quello che č. Se ci fosse una discussione la seguirei, ma
pare che nessuno ti abbia seguito. Peccato.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 altro).
E' quello che vorrei fare; ho raccolto e analizzato parecchia documentazione
(veramente non tanta oltre a quella che si trova sui siti che ho gia' dato e
qualche numero di IEEE Software) e il problema, oltre a quello che  hai
citato tu, e' l'inesistenza di una trattazione organica dell'argomento.
Tempo permettendo cerchero' di raccogliere le idee ed esporle in una
sintetica ma completa documentazione.
L'unico doc. che a mio parere puo' velocemente introdurti e':
http://aspectj.org/documentation/papersAndSlides/ECOOP1997-AOP.pdf
anche se, a mio parere, non riesce ad esprimere globalmente il problema.
Ho notato poi proprio ora che alla xerox hanno riorganizzato
l'intera area relativa all'AOP; e' stato tutto spostato su
http://aosd.net/
che, cosa piu' interessante, gestisce una mailing list sull'argomento.
--
Fabrizio
http://microservo.webhop.org
----------------------------------------------------------
 " Abbiamo preso sul serio qualcosa
     con cui ci e' permesso solo giocare
       o viceversa ? "
                              <Albert Hofmann>
----------------------------------------------------------

 Purtroppo ho visto anch'io... ad ogni modo il thread e' sempre
aperto...
ti rispondo in e-mail che con il gruppo ci incastra poco.
Se qualcun'altro č interessato si faccia vivo in e-mail e torniamo al
NG.



Salve,
ho letto il post ma non ho ancora dato nemmeno un'okkiata alle risorse.
Sono uno studente di ing. informatica e mi interessano le novita' .
Purtroppo, credo ke nel poco tempo libero a disposizione ognuno cerki di rafforzare e studiare cio' ke e' gia' confermato, cio' ke e' di produzione.
Come si sa, una tecnologia in fase di ricerca impiega una decina d'anni ad entrare in commercio, e una 15-ina per standardizzarsi.
Sarebbe interessante una tesi per questo argomento, ma niente di piu' adesso....
Investire del tempo per qualcosa ke avra' riscontro (forse) fra 10 anni non e' produttivo:))A meno ke non fai parte di un gruppo di ricerca.
E' una tecnica di programmazione/progettazione ke puo' implementarsi con un linguaggio di programmazione OOP?
Oppure ha bisogno di un linguaggio a parte? Stanno lavorando su qualcosa di concreto?
Qualke societa' sta investendo su tale argomento?
Grazie.
--
WEbdOM webmaster di 
www.metronic.it
 
il sito sulla telefonia ai prezzi che cercavi
Iscriviti a Pillol@ - la newsletter sulla telefonia (e non solo).

Grazie.
Grazie a te per l'intervento.
Fabrizio
http://microservo.webhop.org
--


Ho atteso qualche giorno, ma vedo che nessuno sembra interessato.
I miei $.10, in velocita'. L'idea di base e' che esistono aspetti 
di comportamento che esistono, sono percepibili e definibili ed 
hanno un impatto osservabile sulla qualita' del software, ma non 
sono incapsulabili nel modello classificazione/scambio messaggi 
proprio dell'approccio OO.
Quando si usa quest'approccio, tali aspetti risultano trasversali
all'intera classificazione, e nei linguaggi OO tradizionali (C++, Java,
Delphi, etc) non esistono meccanismi di implementazione che permettano di
dichiararli pulitamente e di implementarli in modo che godano delle
stesse caratteristiche di sostitubilita', riusabilita' eccetera che ci si
attendono da un buon sistema OO - ma tendono a essere distribuiti e
ripetuti nel codice. 
Ad esempio: politiche di exception handling; logging; vincoli su
reattivita'; etc.
Essi tendono appunto ad essere proprieta' generali desiderabili dal
sistema, non dai singoli oggetti - una cosa che non e' facilmente
esprimibile con linguaggi OO attualmente in uso.
E' importante imho osservare che questi "aspetti" risultano trasversali 
proprio in virtu' dell'approccio di design (classificativo) tipico
della modellazione OO. Modellando in altro modo (ad. es. dichiarativo)
alcuni di questi aspetti diventano facilmente esprimibili, ma "altri" 
diventano trasversali. AOP e' una serie di idee (piu' qualche
implementazione, ad esempio AspectJ per Java) per estendere l'approccio
OO in modo da alleviare o eliminare questo problema.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun


Gia' hai ragione. Adesso ho afferrato il senso. E' appunto un nuovo modo di strutturazione/progettazione , non  linguaggio di programmazione.
Tutto cio' ke riguarda Java inoltre, mi affascina, anke se non sono un programmatore Java (nel senso ke non ho mai scritto una riga di codice).Puo' sembrare strano, e lo e'!
Ho quasi un timore reverenziale verso questo linguaggio, e la sua continua evoluzione e la sua capacita' di adattamento ad ogni situazione e verso ogni tipo di HW e' strabiliante.
Ricordo quando gli scettici dicevano ke era soltanto una moda o quando si diceva era un linguaggio per internet.
La J di Java è una cosa ke ossessionera' i programmatori  sempre di piu'. 
Ho intenzione di studiarmi qualcosa sulla programmazione  AOP.
Spero ke piu' in la si crei una discreta comunita'  anke in Italia. 
Facci sapere le novita'. Magari ke ne dici di tradurre qualcosina?:))))
Grazie per i chiarimenti:)


 diventano facilmente esprimibili, ma "altri" diventano trasversali.
Interessante... potresti ampliare il discorso ? Cosa intendi esattamente
per -modo dichiarativo- ?
Grazie per l'intervento.
--
Fabrizio
http://microservo.webhop.org


: 
Ho spostato il thread su it.scienza.informatica.software-eng - magari
lo facciamo rivivere per un paio di giorni. :-)



Salve raga',
il compilatore AOP per c++ e' utilizzabile oslo per sistemi unix like?
-- 
WEbdOM webmaster di 
www.metronic.it
 
il sito sulla telefonia ai prezzi che cercavi
Iscriviti a Pillol@ - la newsletter sulla telefonia (e non solo).
Metronic.It mobile phone philosophy