Você está na página 1de 34

Arquitetura de Software

Prof. Dr. Ronaldo Martins da Costa


Objetivos

 Entender a importância e natureza dos sistemas de software.

 Identificar o porquê do surgimento da arquitetura de


software.

 Contextualizar o papel deste novo profissional e campo de


estudo.

2
Programa

 Arquitetura de software
 Estilos Arquiteturais
 Requisitos Arquiteturais
 Análise Arquitetural
 Projeto Arquitetural
 Arquiteturas de Domínio Específico
 Arquiteturas de Interface com o Usuário
 Avaliação Arquitetural de um Sistema de Informações
 Avaliação Arquitetural de um Sistema de
Telecomunicações
3
Calendário

4
Introdução

O que é um software?

É a parte do computador que você Xinga!

5
Introdução

 4 décadas atrás, software constituía uma pequena, senão ínfima,


parcela dos sistemas computacionais quando comparado ao
hardware.

6
Introdução

 Hoje software é responsável por significativa porção dos sistemas


computacionais. Encontra-se software nas mais diversas
aplicações.

7
Introdução

 Software tem aumentado tanto que as técnicas de abstração


utilizadas até o final da década de 90 já não são mais
suficientes para lidar com os novos problemas envolvendo o
projeto de software no nível de sistema.

8
Evolução Tecnológica

 Entre 1942 e 1945: criação do ENIAC na Universidade da


Pensilvânia.

 1944: criação do EDVAC.

 1946 a 1952: John Von Neumann e colaboradores


desenvolveram o computador do Instituto de Estudos
Avançados de Princeton.

 1950 a 1960: Produção limitada de software. Programas


geralmente pequenos.

9
Evolução Tecnológica

 A indústria de computadores passou a ser um ramo de


negócio muito lucrativo e competitivo.

 Pouco a pouco o software passou a constituir uma


tecnologia-chave utilizado nas mais diversas áreas.

 Acompanhando este avanço, o software tornou-se um fator


de inovação tecnológica.

10
Evolução Tecnológica

 Apesar do grande avanço e importância que essa nova


tecnologia passou a ter, inexistem ferramentas oferecendo
suporte ao desenvolvimento de software e pouco se conhece
sobre seu processo de desenvolvimento.

 No intuito de estruturar o crescimento e organizar a


construção e manutenção de software surge pela primeira
vez o termo ENGENHARIA DE SOFTWARE numa conferência
em Garmisch na Alemanhã em 1969.

11
Evolução Tecnológica

 A idéia central da engenharia de software é fazer uso de


princípios de engenharia a fim de produzir, a baixo custo,
softwares que operem corretamente e com eficiência.

 Assim, à medida que a tecnologia de software conquistava


mais espaço, diversos paradigmas de engenharia de software
surgiram.

 Face à necessidade de lidar com sistemas maiores e cada vez


mais complexos, a técnica de abstração foi utilizada para
reconhecer padrões, analisar e especificar sistemas.
12
A Natureza dos Sistemas de Software

 Software não se restringe apenas a programas, mas também


envolve toda documentação necessária para instalação, uso,
desenvolvimento e manutenção dos programas.

 Assim, pode-se questionar: Quão bem bolado é um sistema?

...

 Um sistema é bem bolado quando ele faz o que o usuário(s)


quer(em).

13
A Natureza dos Sistemas de Software

 Mas existem alguns fatores que devem ser considerados e


que nem sempre os usuários exigem num sistema:

 Confiabilidade

 Manutenibilidade

 Reusabilidade

14
A Natureza dos Sistemas de Software

 Confiabilidade:

 Geralmente definida em termos de comportamento estatístico,


ou seja, qual a probabilidade do sistema operar como desejado
durante um determinado período de tempo.

15
A Natureza dos Sistemas de Software

 Manutenibilidade:

 Assim como em outros sistemas, um software está sujeito a


mudanças. Neste contexto a manutenibilidade se aplica no
sentido de reparos de possíveis defeitos que possam existir ou
no sentido de evolução para satisfazer novos requisitos.

16
A Natureza dos Sistemas de Software

 Reusabilidade:

 Mesmo sendo possível hoje trabalhar com software em nível de


componentes, ainda não é tão claro o conceito de adquirir um
componente de software como o fazemos com hardware.
 Embora, a intenção de um software de qualidade é tratar desta
maneira os componentes, como exemplo, pode-se mencionar a
utilização de componentes de interface gráfica, utilizados para
criação de janelas e menus.

17
O que é Arquitetura de Software?

 Para lidar com a complexidade e tamanho de sistemas,


engenheiros de software têm utilizado de princípios de
projeto.

 Mas à medida que os sistemas tornam-se cada vez maiores e


mais complexos entra em cena a Arquitetura de Software
como uma disciplina para obter os melhores resultados a
baixo custo.

18
O que é Arquitetura de Software?

 À medida que o tamanho e complexidade dos sistemas de


software, os problemas envolvidos no desenvolvimento
extrapolam as questões de estruturas de dados ou
algoritmos.

 Surge então uma nova necessidade, o desenvolvimento de


software orientado para arquitetura.

19
O que é Arquitetura de Software?

 Desenvolvimento no nível arquitetural compreende questões


como:

 Seleção de alternativas de projeto.

 Escalabilidade e desempenho.

 Organização e estrutura geral de controle.

 Protocolos de comunicação e sincronização.

 Atribuição de funcionalidades a componentes do projeto.

20
O que é Arquitetura de Software?

 É importante ser capaz de reconhecer estruturas de dados


comuns já utilizadas em sistemas já desenvolvidos
possibilitando ao projetista de software compreender as
relações existentes entre os sistemas e desenvolver novos
sistemas contemplando esta relação.

 Esta compreensão possibilita a tomada de decisão sobre


alternativas de projetos.

21
O que é Arquitetura de Software?

 É essencial uma descrição arquitetural do sistema a fim de


analisar e descrever aos propriedades de sistemas
complexos.

 O conhecimento destas notações formais por parte dos


engenheiros possibilita a apresentação novas possibilidades
e sistemas.

22
O que é Arquitetura de Software?

 Esta cada vez mais claro a importância da arquitetura de


software.

 Em 1995 David Garlan e Dewayne Perry definiram arquitetura


de software como:

“A estrutura dos componentes de um programa/sistema, seus


inter-relacionamentos, principios e diretrizes guiando o projeto
e evolução ao longo do tempo”

23
O que é Arquitetura de Software?

 Arquitetura de software é o estudo da organização global dos


sistemas de software bem como do relacionamento entre
subsistemas e componentes.

 A arquitetura de software tem amadurecido buscando


englobar e explorar notações, ferramentas e técnicas de
análise.

24
A necessidade e o papel da Arquitetura
de Software

 Com base no que foi visto, percebe-se que a idéia básica de


arquitetura de software é a de que um sistema de software
em elevado nível de abstração pode ser descrito através de
susbsistemas ou componentes distintos interrelacionados.

 A arquitetura de software tenta analisar as propriedades do


software no nível de subsistema ou módulos.

25
A necessidade e o papel da Arquitetura
de Software

 A arquitetura de software pode:

 Atuar como uma estrutura a fim de atender aos requisitos de


sistema.
 Ser utilizada como aspecto técnico para o projeto de sistema
bem como suporte na estimação de custos e na gerência do
processo.
 Servir como base para a análise da consistência e da
dependência.
 Prover suporte ao reuso.

26
A necessidade e o papel da Arquitetura
de Software

 O processo de desenvolvimento de software vai da


concepção do sistema (quando os requisitos são elicitados e
analisados) até a implementação.

 O Esquema a seguir ilustra...

27
A necessidade e o papel da Arquitetura
de Software

Requisitos Decomposição da funcionalidade

1. Compreender as
funcionalidades do sistema

Possíveis Arquiteturas (de referência)


soluções
2. Particionamento das
funcionalidades

3. Implementação de uma
arquitetura
Arquitetura selecionada
Implementação
28
A necessidade e o papel da Arquitetura
de Software

1. Uma forma de compreender a funcionalidade e os serviços a


serem oferecidos pelo sistema é compreender a
funcionalidade oferecida por sistemas similares.

2. Antes da implementação de uma arquitetura, a


funcionalidade do sistema é particionada a fim de identificar
possíveis subsistemas ou módulos.

3. Durante a implementação, decisões já foram tomadas e


uma única arquitetura é implementada.
29
A necessidade e o papel da Arquitetura
de Software

 Arquitetura de um sistema envolve a divisão de funções entre


subsistemas ou módulos bem como os mecanismos de
divisão de funções entre subsistemas ou módulos e os
mecanismos de interação entre os módulos e a
representação da informação compartilhada.

30
A necessidade e o papel da Arquitetura
de Software

 Consideração sobre o que foi visto:

 Um arquiteto de software deve possuir conhecimento profundo


do domínio onde o sistema a ser desenvolvido será utilizado,
das tecnologias relevantes e dos processos de desenvolvimento.

 O arquiteto também deve ter um foco nas implicações que os


objetivos organizacionais terão sobre as opções técnicas.

 Construir modelos para o problema, buscando achar uma


solução e explorando abordagens alternativas.

31
A necessidade e o papel da Arquitetura
de Software

 Habilidades e tarefas esperadas de um arquiteto de software:


Habilidades desejadas Atribuições
Compreensão profunda do domínio e das Modelagem
tecnologias pertinentes
Entendimento de aspéctos técnicos para Análise de compromissos/viabilidade
desenvolvimento de sistemas bem
sucedidos
Técnicas de elicitação, técnicas de Prototipação, simulação, realização de
modelagem e métodos de experimentos
desenvolvimento
Entendimento das estratégias de negócio Análise de tendências tecnológicas
da instituição onde atua
Conhecimento de produtos, processos e Atuação como mentor de arquitetos
estratégias de concorrentes 32 novatos
Resumo

 Arquitetura de software é:

 a estrutura global dos sistemas;

 capturada através da organização dos sistemas;

 descrita em elevado nível de abstração;

33
Exercícios

1. Defina Arquitetura de Software com suas próprias palavras.

2. O que torna arquitetura de software um tópico relevante


hoje em dia?

3. Quais as qualificações necessárias em uma arquiteto de


software?

4. Faça uma discussão em grupo buscando identificar os


benefícios de se considerar a arquitetura de software
durante o desenvolvimento de um sistema.

34

Você também pode gostar