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