Desenho e documentação de arquitectura de software e de aplicações empresariais João Pascoal Faria Laboratório de Engenharia de Software 10 de Novembro de 2003 Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Definição de arquitectura de software Arquitectura = desenho de alto nível Sentido mais estrito: estrutura de alto nível do sistema de software (nível mais elevado da decomposição do sistema em partes) Sentido mais lato: conjunto de decisões significativas acerca da organização do sistema de software, compreendendo • nível mais elevado da decomposição do sistema em partes (estrutura de alto nível), normalmente apresentada segundo diferentes vistas - vista lógica (arquitectura lógica) - vista de classes (pelo menos coisas modeladas como classes) - vistas físicas (arquitectura física) - vista de componentes de software (empacotamento de software em unidades de produção e distribuição/substituição independente) - vista de deployment (infra-estrutura de máquinas e redes sobre a qual correm os componentes de software) - vista de processos (distribuição, concorrência) • tipos de blocos básicos de construção de cada parte (classes Java, tabelas, páginas HTML, etc.) • especificação de comportamentos envolvendo colaborações entre as várias partes do sistema (mecanismos importantes) Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Uma forma de reutilização de conhecimento (1) fonte: http://www.fe.up.pt/~aaguiar/patterns/ Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Uma forma de reutilização de conhecimento (2) MS.NET fonte: http://www.fe.up.pt/~aaguiar/patterns/ Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Conceito de Padrão de Software fonte: http://www.fe.up.pt/~aaguiar/patterns/ Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Tipos de Padrões de Software “Design Patterns” • Os primeiros a merecer atenção alargada • Incidem sobre soluções para problemas de projecto • Popularizados pelo [Gamma95] e [Buschmann96] “Architectural Patterns” • Fornecem orientações em como estruturar sistemas e subsistemas de software com o intuito de lhes conferir determinadas propriedades “Idioms” • Padrões de um nível de abstracção mais baixo por serem específicos a uma determinada linguagem de programação • Descrevem como implementar aspectos particulares recorrendo às capacidades específicas de uma linguagem fonte: http://www.fe.up.pt/~aaguiar/patterns/ Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Forma dos Padrões de Software fonte: http://www.fe.up.pt/~aaguiar/patterns/ Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Exemplo de padrão de desenho – Padrão Observer (1) Intenção Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Exemplo http://www.fe.up.pt/~jpf/teach/LES/Observer.htm Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Exemplo de padrão de desenho – Padrão Observer (2) Solução - Estrutura http://www.fe.up.pt/~jpf/teach/LES/Observer.htm Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Exemplo de padrão de desenho – Padrão Observer (3) Solução - Colaborações http://www.fe.up.pt/~jpf/teach/LES/Observer.htm Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Exemplo de padrão de arquitectura de aplicações empresariais – Model View Controller Controller Model View Controller (MVC) is one of the most quoted (and most misquoted) patterns around. It started as a framework developed by Trygve Reenskaug for the Smalltalk platform in the late 1970s. Since then it has played an influential role in most UI frameworks and in the thinking about UI design. (...) fonte: http://www.martinfowler.com/eaaCatalog/modelViewController.html Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Padrões de software Bibliografia [Gamma95] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns – Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. [Buschmann96] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal, Pattern [Fowler03] Martin Fowler, Patterns of Enterprise Application Architecture , Addison-Wesley, 2003 Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Arquitectura de aplicações Web com Java no servidor (1) fonte: http://www.fe.up.pt/~jlopes/teach/2002-03/AW/foils/01-intro-appl-web.pdf Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Arquitectura de aplicações Web em plataforma Java no servidor (2) fonte: http://www.fe.up.pt/~jlopes/teach/2002-03/AW/foils/01-intro-appl-web.pdf Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Arquitectura de aplicações Web em plataforma Java no servidor (3) fonte: http://www.fe.up.pt/~jlopes/teach/2002-03/AW/foils/01-intro-appl-web.pdf Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Arquitectura de aplicações Web em Microsoft.NET (1) Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#› Arquitectura de aplicações Web em Microsoft.NET (2) Desenho e documentação de arquitectura de software e de aplicações empresariais, LEIC, LES, João Pascoal Faria, 10 de Novembro de 2003 ‹#›