Soluções        Serviços          Atendimento       Governo        Consultoria T.I      Treinamento

Software

A arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares. O termo também se refere à documentação da arquitetura de software do sistema. A documentação da arquitetura do software facilita: a comunicação entre os stakeholders, registra as decisões iniciais acerca do projeto de alto-nível, e permite o reuso do projeto dos componentes e padrões entre projetos.

Índice

  • 1 Introdução
  • 2 História
  • 3 Descrevendo arquiteturas
    • 3.1 Linguagem de descrição de arquitetura
    • 3.2 Visões
    • 3.3 Padrões de arquitetura
  • 4 Exemplos de arquitetura
  • 5 Notas e Referências
  • 6 Ver também
  • 7 Ligações externas

Introdução

O campo da ciência da computação tem lidado com problemas associados, como a complexidade da informação, desde sua criação.[1] Os primeiros problemas de complexidade foram resolvidos pelos desenvolvedores através da escolha da estrutura de dados, do desenvolvimento de algoritmos e pela aplicação de conceitos de separação de escopos. Embora o termo arquitetura de software seja relativamente novo na industria, os princípios fundamentais deste campo vem sendo aplicados esporadicamente pela engenharia de software desde o inicio dos anos 80. As primeiras tentativas de capturar e explicar a arquitetura de software do sistema foram imprecisas e desorganizadas – freqüentemente caracterizadas por um conjunto de diagramas.[2] Durante o decorrer da década de 90 houve um esforço concentrado para definir e codificar os aspectos fundamentais desta disciplina. Inicialmente um conjunto de padrões de projeto, estilo, melhores práticas, descrição de linguagens, e lógica formal foram desenvolvidas durante este período.

A disciplina de arquitetura de software é centrada na idéia da redução da complexidade através da abstração e separação de interesses. O glossário do site oficial SOFTWARE ENGINEERING INSTITUTE (Instituto de Engenharia de Software) [3] descreve que arquitetura de software é a estrutura ou estruturas de um sistema, com todos os elementos de software vendo e tendo suas propriedades vistas por todos os outros elementos e relacionamentos.

Sendo a arquitetura de sistema uma disciplina em maturação, sem regras claras, a ação do arquiteto é ainda uma composição de arte e ciência. Os aspectos de arte da arquitetura de software são devido ao fato que os sistemas de software comerciais suportam alguns aspectos de um negócio ou missão. Como o direcionamento de negócio chave para o suporte sistemas são descrito nos cenários como requisitos não-funcionais de sistema, também conhecidos como atributos de qualidade, que determinam como um sistema ira se comportar.[4] Cada sistema é único devido a natureza do negócio que ele suporta, tal que o nível dos atributos de qualidade exigidos de um sistema como compatibilidade, extensibilidade, confiabilidade, manutenabilidade, disponibilidade, segurança, usabilidade, dentre outros – irão variar com cada aplicação.[4]

Para trazer a perspectiva do usuário para dentro da arquitetura de software, pode-se dizer que a arquitetura de software dá a direção dos passos que serão tomados e as tarefas envolvidas em cada área de especialidade e interesse do usuário, por exemplo, stakeholders de sistemas de software, os desenvolvedores de software, o grupo de suporte ao software do sistema operacional, aos testadores e usuários de negocio final. Neste sentido, a arquitetura de software se torna a ligação das múltiplas perspectivas que um sistema traz nele embutido. O fato de que estas várias perspectivas diferentes possam ser postas juntas em uma arquitetura de software padrão justifica e valida a necessidade de criação da arquitetura de software antes do desenvolvimento do software para que projeto alcance a maturidade.

História

A origem da arquitetura de software como um conceito foi primeiramente identificado no trabalho de pesquisa de Edsger Dijkstra em 1968 e David Parnas no início de 1970. Estes cientistas enfatizaram a importância das estruturas de um sistema de software e a criticidade da identificação da sua estrutura.[5] O estudo deste campo aumentou de popularidade desde o inicio de 1990 com os trabalhos de pesquisa concentrando-se nos padrões de estilo de arquitetura, linguagens de descrição de arquitetura, documentação de arquitetura, e métodos formais.[6] Muitas instituições de pesquisa tais como a Carnegie Mellon University e a University of California, Irvine estavam realizando muitas pesquisas no campo da arquitetura de software. Mary Shaw e David Garlan da Carnegie Mellon escreveram um livro intitulado Software Architecture: Perspectives on an Emerging Discipline em 1996, o qual trazia a tona conceitos da arquitetura de software, tais como componentes, conexões, estilos, etc. Os esforços do UCI's (Institute for Software Research) na pesquisa da arquitetura de software foram inicialmente direcionado para os estilos de arquitetura, descrições de linguagens arquitetura, e arquiteturas dinâmicas.

ANSI/IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems[1] foi a primeira norma padrão na área de arquitetura de software, e foi recentemente adotada pelo ISO como ISO/IEC DIS 25961.

Descrevendo arquiteturas

Linguagem de descrição de arquitetura

As Linguagens de descrição de arquitetura (LDAs) são usadas para descrever a arquitetura de software. Vários diferentes LDAs foram desenvolvidas por diferentes organizações, incluindo Wright (desenvolvido por Carnegie Mellon), Acme (desenvolvido por Carnegie Mellon), xADL (desenvolvido por UCI), Darwin (desenvolvido por Imperial College London), DAOP-ADL (desenvolvido pela University of Málaga). Elementos comuns de uma LDA são componente, conexão e configuração.

Visões

A arquitetura de software é normalmente organizada em visões[7], as quais são análogas aos diferentes tipos de plantas utilizadas no estabelecimento da arquitetura. Na Ontologia estabelecida pela ANSI/IEEE 1471-2000, visões são instancias de pontos de vista, onde um ponto de vista existe para descrever a arquitetura na perspectiva de um conjunto de stakeholders e seus consortes.

Algumas possíveis visões são:

  • Visão funcional/lógica
  • Visão de código.
  • Visão de desenvolvimento/estrutural
  • Visão de concorrência/processo/thread
  • Visão física/evolutiva
  • Visão de ação do usuário/feedback

Várias linguagens para descrição da arquitetura de software foram inventadas, mas nenhum consenso foi ainda alcançado em relação a qual conjunto de símbolos ou sistema representação deve ser adotado. Alguns acreditam que a UML ira estabelecer um padrão para representação de arquitetura de software. Outros acreditam que os desenvolvimentos efetivos de software devem contar com a compreensão única das restrições de cada problema, e notações tão universais são condenadas a um final infeliz porque cada uma prove um notação diferenciada que necessariamente torna a notação inútil ou perigosa para alguns conjuntos de tarefas. Eles apontam a proliferação de linguagens de programação e a sucessão de tentativas falhas para impor uma simples 'linguagem universal' na programação, como uma prova da tendência do software para a diversidade e não para padrões.

Padrões de arquitetura

  • DODAF [2]
  • MODAF [3]
  • TOGAF [4]
  • Zachman framework [5]
  • Federal Enterprise Architecture [6]

Exemplos de arquitetura

Há muitas formas comuns de projetar módulos de software de computador e suas comunicações, entre elas:

  • Cliente-Servidor
  • Computação distribuída
  • P2P
  • Quadro Negro
  • Criação implícita
  • Pipes e filtros
  • Plugin
  • Aplicação monolítica
  • Modelo em três camadas
  • Analise de sistema estruturada (baseada em módulos, mas usualmente monolíticas em dentro dos módulos)
  • Arquitetura orientada a serviço
  • Arquitetura orientada a busca

Notas e Referências

  1. ↑ University of Waterloo (2006). A Very Brief History of Computer Science. Página visitada em 2006-09-23.
  2. ↑ IEEE Transactions on Software Engineering (2006). Introduction to the Special Issue on Software Architecture. Página visitada em 2006-09-23.
  3. ↑ SEI (2010). Glossary?. Página visitada em 2010-01-31.
  4. a b SoftwareArchitectures.com (2006). Intro to Software Quality Attributes. Página visitada em 2006-09-23.
  5. ↑ SEI (2006). Origins of Software Architecture Study. Página visitada em 2006-09-25.
  6. ↑ Garlan & Shaw (2006). An Introduction to Software Architecture. Página visitada em 2006-09-25.
  7. Clements, Paul. Documenting Software Architectures: Views and Beyond. 2 ed. Boston: Addison-Wesley, 2003. pp. 13-15 p. ISBN 0201703726

Ver também

  • Padrões de projeto de software
  • Antipadrões de software
  • Modelagens de dados padrões
  • Matriz de estrutura de dependência
  • Arquitetura de negócio
  • Arquitetura de dados
  • Arquitetura de processo
  • Arquiteto de software

Ligações externas

  • Software architecture definitions at Carnegie Mellon University Software Engineering Institute
  • Software architecture vs. software design
  • Worldwide Institute of Software Architects
  • Grady Booch's Handbook of Software Architecture project
  • SoftwareArchitectures.com Independent resource of information on the discipline
  • International Association of Software Architects
  • Microsoft Architecture Journal
  • Pangea - Professional and Academic Network to the Growing and Evolution of Architecture (Portuguese)
  • Blog da OCTO Technology Brasil, empresa de consultoria em Arquitetura de Sistemas de Informação
Obtida de "http://pt.wikipedia.org/w/index.php?title=Arquitetura_de_software&oldid=27486721"

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Desktop

Desktop, expressão inglesa oriunda de desktop publisher (editor de textos de mesa). São os computa [ ... ]


Symfony

article thumbnail

Symfony

Projeto padrão do Symfony Desenvolvedor Sensio Labs Versão está [ ... ]


Inteligência organizacional

Inteligência Organizacional é a capacidade coletiva disponível em uma organização para identifi [ ... ]


Microsoft Forefront

Microsoft Forefront Desenvolvedor Microsoft Plataforma Microsoft Windows La [ ... ]


Sistema de informação de gestão

Sistema de informação de gestão ou sistema de informações gerenciais (SIG; do inglês, manageme [ ... ]


Nanotecnologia do carbono

article thumbnail

A nanotecnologia do carbono é o ramo da nanotecnologia que estuda a manipulação de estruturas de  [ ... ]


Gestão de riscos em segurança

O gerenciamento de riscos em segurança é a essência da segurança corporativa, que atua no sent [ ... ]


ERP

Sistemas Integrados de Gestão Empresarial (SIGE ou SIG), em inglês Enterprise Resource Planning (E [ ... ]


Qualidade de software

A qualidade de software é uma área de conhecimento da engenharia de software que objetiva garant [ ... ]


Indústria de software

A Indústria de Software é o conjunto dos negócios que envolvem o desenvolvimento, a manutençã [ ... ]


Teoria da informação

article thumbnail

A Teoria da informação ou Teoria matemática da comunicação é um ramo da teoria da probabilidad [ ... ]


Software

article thumbnail


OpenOffice.org Writer. Software, logiciário ou suporte lógico é uma sequência de in [ ... ]


Django (framework web)

Django Desenvolvedor Lawrence Journal-World Lançado em 21 de Julho de 2005  [ ... ]


Rede de computadores

article thumbnail

A Wikipédia possui o portal:
Portal das tecnologias de informação Uma rede de comp [ ... ]


Business-to-business

Business to Business - B2B é o nome dado ao comércio associado a operações de compra e venda, de [ ... ]


E-mail marketing

E-mail marketing é a utilização do e-mail como ferramenta de marketing direto, respeitando norma [ ... ]


Teste de penetração

article thumbnail

O teste de penetração é um método que avalia a segurança de um sistema de computador ou de um [ ... ]


Teoria de sistemas

A teoria de sistemas estuda, de modo interdisciplinar, a organização abstrata de fenômenos, indep [ ... ]


Licitação

Licitação é o procedimento administrativo para contratação de serviços ou aquisição de pro [ ... ]


Ferramenta CASE

Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abran [ ... ]


Business Intelligence - Inteligência empresarial

Inteligência empresarial (em inglês Business Intelligence), refere-se ao processo de coleta, orga [ ... ]


Padrão de projeto de software

Um Padrão de Projeto de Software ou Padrão de Desenho de Software, também muito conhecido pelo te [ ... ]


Comércio eletrônico

Comércio eletrônico (português brasileiro) ou comércio electrónico (português europeu) ou e-co [ ... ]


ISO da segurança da informação

ISO 27001 Origem: Wikipédia, a enciclopédia livre. ISO/IEC 27001 é um padrão para sistema de g [ ... ]


C++

article thumbnail

Origem: Wikipédia, a enciclopédia livre. C++
Programa Olá Mundo, escrito em C++. [ ... ]


Gestão estratégica de empresas

Gestão estratégica de empresas (em língua inglesa: strategic enterprise management — SEM) é um [ ... ]


Model-view-controller (MVC)

article thumbnail


Um diagrama simples exemplificando a relação entre Model, View e Controller. As linhas sól [ ... ]


Antivírus

article thumbnail

Os antivírus são programas de computador concebidos para prevenir, detectar e eliminar vírus de [ ... ]


Gerenciamento de serviços de TI

O gerenciamento de serviços de TI tem por objetivo prover um serviço de TI com qualidade e alinh [ ... ]


CodeIgniter

CodeIgniter Desenvolvedor EllisLab, Inc. Lançado em 28 de Fevereiro de 2006  [ ... ]


Parque Tecnologico Capital Digital (Cidade Digital)

Toda a informação será disponibilizada através do site da secretaria de Ciência e Tecnologia do [ ... ]


Computador

article thumbnail

Um assistente pessoal digital. Um computador pessoal. Columbia, um supercomp [ ... ]


EAD - Educação a distância

Tele-educação, Educação a Distância ou Ensino a Distância (EaD) [nota 1] é a modalidade de en [ ... ]


Lista de softwares Públicos

em 11/11/2011LISTA DE SOFTARES PÚBLICOSSoftware Público Brasileiro InVesalius  (542 [ ... ]


Web 2.0

article thumbnail

Web 2.0 é um termo criado em 2004 pela empresa americana O'Reilly Media[1] para designar uma segu [ ... ]


Microsoft

article thumbnail

Microsoft Microsoft Corporation Logotipo da Microsoft Slogan “We i [ ... ]


Sistema Integrado de Aprendizagem de Produtos e Serviços

Sistema Integrado de Aprendizagem de Produtos e Serviços - Sinapse (acrônimo) é o nome de uma met [ ... ]


Computação em nuvem

article thumbnail

A nuvem (cloud) é o símbolo da Internet. O conceito de computação em nuvem (em inglê [ ... ]


Eclipse

article thumbnail


Eclipse é um IDE desenvolvido em Java, seguindo o modelo open source de desenvolvimento de softw [ ... ]


COA - Control Oriented Architecture

Control Oriented Architecture - COA é uma arquitetura de camadas de controle que permite configur [ ... ]


Engenharia de software

Engenharia de software é uma área do conhecimento da computação voltada para a especificação,  [ ... ]


Modelo em espiral

O Modelo em espiral é um processo de desenvolvimento de software que combina elementos de projeto [ ... ]


Sistemas complexos

Um sistema é dito ser um sistema complexo quando suas propriedades não são uma consequência natu [ ... ]


ITIL

Information Technology Infrastructure Library (ITIL) é um conjunto de boas práticas a serem aplica [ ... ]


linguagem C

article thumbnail


C Paradigma Programação estruturada
Programação imperativa
Programação procedu [ ... ]


SOA - Arquitetura orientada a Serviços

article thumbnail

Service-Oriented Architecture (SOA), pode ser traduzido como arquitetura orientada a serviços, e é [ ... ]


Kohana Framework

Kohana é um framework para aplicações web de código aberto, escrito em PHP 5 que adota o padr [ ... ]


Sharepoint

Plataforma de colaboraçãoO Windows Sharepoint Services (WSS) é uma plataforma de colaboração vo [ ... ]


Melhoria de Processos do Software Brasileiro

O MPS.BR ou Melhoria de Processos do Software Brasileiro é simultaneamente um movimento para a melh [ ... ]


ISO/IEC 9126

article thumbnail

ISO/IEC 9126 é uma norma ISO para qualidade de produto de software, que se enquadra no modelo de qu [ ... ]


Artigos Relacionados

Pluriverso - Inteligência em Tecnologia

Pluriverso - Inteligência em Tecnologia


Ed.Centro Sul, 2°Andar, SCIA, Qd. 14, Conj. 07, Lt 1, S. Ind.
CEP: 71.250-135, Brasília-DF.  
Como Chegar
| Atendimento  


+55 (61) 4141.5555

Serviços

Desenvolvimento de Software
Oursourcing de T.I
Consultoria em Tecnologia
Licitação com o Governo

Produtos

ERP, CRM, Colaboração
Cloud Computing

Soluções
Soluções em Outsourcing de Tecnologia
Integração de Software
Avaliação de nível tecnológico
Cálculo de custos de T.I
Softwares customizados


Porque escolher a Pluriverso

Blog Corporativo
Blog do Software

Conheça a Pluriverso
quem somos
verticais de atuação
portifólio
casos de sucesso

Atendimento
contatos
sala de imprensa
como chegar
Trabalhe conosco

desenvolvimento de software