Subject Oriented Computing
Michelet del Carpio Chávez
05/11/2015
Copyleft - Michelet del Carpio
1
Roteiro
• Introdução
• Subject Oriented Programming
• Subject Oriented Design
• Conclusões
05/11/2015
Copyleft - Michelet del Carpio
2
Introdução
• Estilo de programação ‘maduro’ - 1993
• Crítica o ‘purismo’ da orientação a objetos e
suas limitações
• Extensão visionária do paradigma OO
• Enfatiza os conceitos de Identidade e Subjective
Visions
05/11/2015
Copyleft - Michelet del Carpio
3
Modelo OO
05/11/2015
Copyleft - Michelet del Carpio
4
Modelo Subject Oriented
05/11/2015
Copyleft - Michelet del Carpio
5
Exemplo I: Classe Árvore
Lenhador
Ave de Rapinha
05/11/2015
Copyleft - Michelet del Carpio
6
Exemplo II – Pequeno sistema
de consulta de Extrato
05/11/2015
Copyleft - Michelet del Carpio
7
Subject Oriented Programming
(1/5)
 Objetivos

Viabilizar a composição de software de forma
separada.

As aplicações componentes não devem ser
explicitamente dependentes entre si

As aplicações componentes devem cooperar de
forma livre e estar bem conectadas

Deve ser possível incluir novas aplicações sem ter de
alterar as existentes [Har93]
05/11/2015
Copyleft - Michelet del Carpio
8
Subject Oriented Programming
(2/5)

Conceitos e princípios
Baseado na teoria de objetos
 Orientado a Subjects: A programação está dirigida pelos
estados do objeto e as especificações do seu
comportamento relacionados a um interesse particular
[Bal06]
 Interesse: É uma expectativa ou objetivo do stakeholder
 Composição de especificações

Relações de composição

Especificações de integração

05/11/2015
Copyleft - Michelet del Carpio
9
Mas ... o que é um Subject?

De acordo com Harrison e Ossher o termo
subject define um conjunto de especificações de
estados e comportamentos que refletem a uma
concepção do mundo (identity).

Qualquer objeto pode ser visto como uma
composição de vários subjects, onde cada
subject pode ser controlado separadamente.
05/11/2015
Copyleft - Michelet del Carpio
10
Subject Oriented Programming
(3/5)
 Descrição
SOP é um paradigma de programação proposto
por Harrison e Ossher (da IBM)
 Qualquer objeto pode ser visto como uma
composição de vários subjects, donde cada
subject pode ser gerenciado separadamente.
 A implementação mais conhecida de SOP é a
linguagem Hyper/J

05/11/2015
Copyleft - Michelet del Carpio
11
Subject Oriented Programming
(4/5)
 Ferramental

Hyper/J


05/11/2015
–
É uma aplicação Java que permite a composição de
classes Java de acordo com regras de composição
definidas num arquivo.
IBM® VisualAge® for C++ Version 4
Copyleft - Michelet del Carpio
12
Subject Oriented Programming
(5/5)
 Vantagens
SOP é um paradigma genérico de programação
que permite a separação de interesses.
 Facilita o rastreamento de requisitos -casos de
uso ou histórias (XP)- em código fonte.
 SOP facilita a compreensão do sistema
 Permite a definição de padrões estruturais
complexos.

05/11/2015
Copyleft - Michelet del Carpio
13
Opinião de outros autores...
 SOP
é uma aplicação avançada do conceito de
separação de interesses [Gie06]
 SOP
representa um enfoque para computação
distribuída e é uma tentativa para descentralizar
o desenvolvimento.[McR99]
05/11/2015
Copyleft - Michelet del Carpio
14
Opinião de outros autores...

SOP é uma extensão do modelo clássico de OO.Ela
aproveita os recursos de padrões de projeto compostos
(composite design patterns) [Dir97] como sua melhor
metodologia de implementação.[Oss99]

Enquanto POO suporta a seleção automática de um
método para determinado tipo de mensagem dentro de
um conjunto de classes, o paradigma orientado a
subjects suporta a combinação (ou junção) de métodos
para uma mensagem dentre diferentes subjects [Kic97]
05/11/2015
Copyleft - Michelet del Carpio
15
Subject-Oriented Design (SOD)

Contexto:



05/11/2015
Ciclo de vida de modelos de software.
Manter informações coerentes entre requisitos,
modelos e código é uma atividade custosa (se for
feita...)
Aproveitando as características de SOP, Clarke,
Harrison, Ossher e Tarr apresentam um novo
método de projeto orientado a subjects (SOD)
Copyleft - Michelet del Carpio
16
Subject-Oriented Design

Características:



05/11/2015
SOD é um modelo de projeto que está dividido em
subject designs. Cada elemento encapsula um
interesse num modelo OO.
Segundo A. Solberg, um modelo de projeto completo
é conseguido através da composição de subjects,
onde cada subject representa um requisito do sistema
ou interesse.
Por outro lado, cada subject design modela todas e
somente aquelas partes do sistema de software que
pertencem àquele interesse.
Copyleft - Michelet del Carpio
17
Subject Oriented Design

Exemplo de modelo – Avaliador de
Expressões

05/11/2015
O exemplo, detalhado por P. Tarr, consiste numa
ferramenta CASE, um dos subjects é o avaliador
de expressões.
Copyleft - Michelet del Carpio
18
Subject Oriented Design
05/11/2015
Copyleft - Michelet del Carpio
19
Conclusões


Subject Oriented Computing é um enfoque
baseado na especificação de requisitos cujo
objetivo é a síntese de modelos de projeto
OO por meio de design subjects.
A pesar sua utilidade na descrição de
interesses e funcionalidades do sistema -de
forma estrutural- ainda falta pesquisa e
resultados sobre a parte funcional dos
subjects ou mesmo ferramentas que apóiem
sua representação.
05/11/2015
Copyleft - Michelet del Carpio
20
Bibliografia







[Cla99] S. Clarke, W. Harrison, H. Ossher, and P. Tarr. Separating concerns
throughout the development lifecycle. In Proceedings of the 3rd ECOOP
Aspect-Oriented Programming Workshop, Lisbon, Portugal, June 1999.
[Dij76] Dijkstra, E. W. (1976). A discipline of programming. Englewood Cliffs N.J:
Prentice Hall.
[Dir97] Dirk Riehle (1997). Composite design patterns. Conference on Object
Oriented Programming Systems Languages and Applications. Proceedings of
the 12th ACM SIGPLAN conference on Object-oriented programming, systems,
languages, and applications ; 218 - 228
[Har93] Harrison, W. , Ossher H. (1993). Subject-Oriented programming (a
critique of pure objects). ACM SIGPLAN Notices 28, 411-428.
[GIE06] Holger Giese, A. V. (2006). Separation of non-orthogonal concerns in
software architecture and design. Software and Systems Modeling, 136-169.
[Kic97] Kiczales, L. M. (1997). Aspect-Oriented Programing. Palo Alto, CA:
Xerox Palo Alto Research Center.
[McR99] McReynolds, Ruggins, Galli, Mayer (1999). Distributed Characteristics
of Subject Oriented Programming: An Evaluation with the Process and Object
Paradigms.
05/11/2015
Copyleft - Michelet del Carpio
21
Bibliografia





[Oss97] Ossher, Kaplan, Katz, Harrison and Kruskal, Specifying
Subject-Oriented Composition, Theory and Practice of Object Systems,
Vol. 2(3), pp. 179-202, 1996.
[Oss99] Ossher H., Tarr P. Using Subject-Oriented Programming to
Overcome Common Problems in Object-Oriented Software
Development/Evolution. PROC INT CONF SOFTWARE ENG . pp. 687688. 1999
[Bal06] Pavel Balabko, A. W. (2006). Systemic classification of concernbased design methods in the context of enterprise architecture. Inf Syst
Front, 115-131.
[Sol05] Solberg, A., Simmonds, D., Reddy, R., Ghosh, S., & France, R.
(2005). Using Aspect Oriented Techniques to Support Separation of
Concerns in Model Driven Development. COMPSAC 2005. 2 pp. 121126. Computer Software and applications Conference,.
[Tar99] Tarr, P., Ossher, H., Harrison, W., Sutton, S.M. “N Degrees of
Separation: Multi-Dimensional Separation of Concerns” to appear in:
Proc. ICSE’99
05/11/2015
Copyleft - Michelet del Carpio
22
Download

Subject Oriented Computing [Programming] - IME-USP