220 likes | 368 Views
Subject Oriented Computing. Michelet del Carpio Chávez. Roteiro. Introdução Subject Oriented Programming Subject Oriented Design Conclusões. 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
E N D
Subject Oriented Computing Michelet del Carpio Chávez Copyleft - Michelet del Carpio
Roteiro • Introdução • Subject Oriented Programming • Subject Oriented Design • Conclusões Copyleft - Michelet del Carpio
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 Copyleft - Michelet del Carpio
Modelo OO Copyleft - Michelet del Carpio
Modelo Subject Oriented Copyleft - Michelet del Carpio
Exemplo I: Classe Árvore Lenhador Ave de Rapinha Copyleft - Michelet del Carpio
Exemplo II – Pequeno sistema de consulta de Extrato Copyleft - Michelet del Carpio
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] Copyleft - Michelet del Carpio
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 Copyleft - Michelet del Carpio
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. Copyleft - Michelet del Carpio
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 Copyleft - Michelet del Carpio
Subject Oriented Programming (4/5) Ferramental – Hyper/J É 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
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. Copyleft - Michelet del Carpio
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] Copyleft - Michelet del Carpio
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] Copyleft - Michelet del Carpio
Subject-Oriented Design (SOD) • Contexto: • 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
Subject-Oriented Design • Características: • 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
Subject Oriented Design • Exemplo de modelo – Avaliador de Expressões • O exemplo, detalhado por P. Tarr, consiste numa ferramenta CASE, um dos subjects é o avaliador de expressões. Copyleft - Michelet del Carpio
Subject Oriented Design Copyleft - Michelet del Carpio
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. Copyleft - Michelet del Carpio
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. Copyleft - Michelet del Carpio
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. 687-688. 1999 • [Bal06] Pavel Balabko, A. W. (2006). Systemic classification of concern-based 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. 121-126. 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 Copyleft - Michelet del Carpio