Arquitectura de Sistemas de Software Ademar Aguiar www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1 Arquitectar... Arquitectar uma pequena cabana parece-nos fácil... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 2 1
Arquitectar... Menos fácil será arquitectar uma casa... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 3 Arquitectar... Ou um prédio de 6 andares... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 4 2
Arquitectar... Ou um arranha-céus de 452 metros de altura... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 5 Arquitectar... Quais as principais diferenças entre estas construções? Dimensões Custos Prazos Processo Competências e equipas Materiais e tecnologias Riscos associados Robustez Longevidade... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 6 3
Arquitectura & Engenharias tradicionais As engenharias tradicionais têm arquitecturas estáveis Edifícios, aviões, automóveis, barcos, pontes, etc. Estas arquitecturas evoluíram ao longo do tempo Por tentativa-e-erro Por reutilização e refinamento de soluções comprovadamente boas Nestes domínios foram conseguidos diversos avanços de engenharia Normalização de métodos de engenharia Produção de novos materiais Definição de novos processos de engenharia Alguns exemplos da Arquitectura Civil Casas, hospitais, lojas, hóteis, aeroportos, fábricas, estádios, cinemas Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 7 Arquitectura de Software Arquitectar software é diferente (mais dificil?)... Invisibilidade Natureza temporal complexa de compreender e com possibilidade de evoluir ao longo do tempo Não obedece a leis físicas Tem que ser facilmente adaptável Evolução rápida das tecnologias subjacentes Mas o papel da arquitectura é o mesmo Controlar complexidade do sistema Garantir a integridade do sistema Assegurar as qualidades do sistema Melhorar a predictabilidade Equilibra forças influenciando o desenvolvimento do sistema e a sua evolução Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 8 4
Níveis de Desenho de Software Que módulos? Como os interligar? Arquitectura módulos interligações Código-fonte algoritmos estruturas de dados Que estruturas de dados? Que algoritmos? Que gestão de memória? Que instruções utilizar? Executável pilhas de rotinas alocação de registos código-máquina Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 9 Uma Definição A arquitectura de software compreende o conjunto de decisões significativas acerca da organização de um sistema de software Definição dos elementos estruturais e interfaces que compõem o sistema (blocos básicos de construção) Especificação de comportamentos envolvendo colaborações entre esses elementos Como é feita a composição dos elementos estruturais e comportamentais em subsistemas maiores Explicita o estilo arquitectónico que guia a organização do sistema. Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 10 5
Tópicos principais Noções fundamentais Estilos clássicos de arquitectura Micro-arquitecturas: design patterns Macro-arquitecturas: frameworks Técnicas e ferramentas... Linguagens para descrição de arquitecturas (ADLs) -ACME (CMU/USC) - Rapide (Stanford) - Wright (CMU) - Unicon (CMU) -... - UML Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 11 Estilos de Arquitectura Pipes & Filters Object-orientation Event-based Layered Systems Repositories Interpreters Process Control... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 12 6
Exemplos do Estilo Layered System 2 camadas 3 camadas mais camadas Graphical User Interface Relational Database Graphical User Interface Business Object Model Graphical User Interface Business Object Model Relational Database Relational Database Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 13 Padrões de Software Existem problemas e soluções recorrentes também em Eng. Software: Arquitectura Análise Desenho Codificação GoF book : 1º livro sobre Padrões de Software Foi apresentado na OOPSLA 94, e é uma co-autoria de um grupo de quatro indivíduos conhecido pelo Gang of Four (GoF). Documenta 23 padrões que descrevem soluções reconhecidamente boas para problemas recorrentes de desenho orientado por objectos [Gamma95]. Os padrões são micro-arquitecturas Descrevem mecanismos abstractos de cooperação entre objectos por forma a resolver um problema recorrente. Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 14 7
Padrões de Software Abstract Factory, Builder, Singleton, Factory Method, Prototype, Adapter, Bridge, Composite, Decorator, Proxy, Chain of Responsability, Command, Flyweight, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor, Master-Slave, Publisher-Subscriber, Blackboard, Reactor, Reflection,...... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 15 Frameworks Orientadas por Objectos As frameworks são uma poderosa ténica de reutilização de software que permitem reutilização de código e desenho. Frameworks + componentes + padrões tecnologia actualmente existente mais capaz de suportar reutilização de software em larga-escala. Application 1 Application 2 Application 3 abstraction Framework code Framework code Application Code 2 Callbacks Hooks Plugins... Application Code 1 Application Code 3 Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 16 8
Aplicação Framework Aplicacional Diversos componentes Framework Aplicacional Aplicação Bibliotecas de Classes Bibliotecas de Classes Bibliotecas de Procedimentos Bibliotecas de Procedimentos Sistema Operativo Sistema Operativo Aplicação OO convencional Aplicação OO com frameworks Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 17 Sobre ADLs Uma ADL deve suportar a definição e descrição de arquitecturas, ie, deve permitir definir: componentes conectores configurações restrições Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 18 9
Arquitectura vs. Design Arquitectura onde as decisões sobre requisitos não-funcionais são tomadas, e os requisitos funcionais são particionados (divididos em módulos) Design onde os requisitos funcionais são satisfeitos Requisitos não-funcionais ( ilities ) Requisitos funcionais (domínios) arquitectura (ADL) design (UML) Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 19 UML como uma ADL Aspectos positivos É bastante acessível Permitiu disseminar em larga escala as práticas de modelação Existem inúmeras ferramentas de modelação para UML Limitações do UML como uma ADL Os modelos estão fracamente interligados com semântica não perfeitamente apropriada à análise e definição de arquitecturas Os conectores não são reconhecidos como elementos de 1ª classe A notação visual ainda não tem um suporte bom para geração da arquitectura física e tecnológica, permite relações ambíguas e escondidas entre diferentes vistas Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 20 10
Bibliografia Software Architecture: Perspectives on an Emerging Discipline de Mary Shaw e David Garlan, publicados por Prentice Hall em 1996. Software Architecture in Practice de Len Bass, Paul Clements e Rick Kazman, 2ª edição, publicados por Addison-Wesley em 2003. Design Patterns - Elements of Reusable Object-Oriented Software de Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, publicado por Addison Wesley em 1995. Diversos artigos. Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 21 Questões? Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 22 11