Imprimir Post

Arquitetura de Software para Desenvolvimento – Introdução

Resumo:

O objetivo desta publicação é dar uma visão geral sobre Arquitetura de Software enfatizando o Desenvolvimento de Projetos, com uma breve apresentação de sua composição através do tema: Padrões de Desenvolvimento (Design Patterns) que será abordado de maneira mais aprofundada ao longo das próximas postagens.

Palavras-chaves:

Arquitetura de Software, Design Pattern, Orientação a Objetos, Desenvolvimento.

Texto:

Quando ocorre a citação Arquitetura de Software, soa com uma amplitude mais voltada a Engenharia de Software, porém na relação direta com o desenvolvimento, a Arquitetura de Software é difundida e conhecida atualmente, como uma disciplina de estruturação, alicerce ou planta, no qual é desenhada anteriormente a pratica do desenvolvimento. Na melhor das hipóteses, é apresentada como resultado do conjunto: Desenvolvimento em Camadas (estilo ou modelo da Arquitetura) somado aos chamados Design Patterns (Padrões de Desenvolvimento).

Levando em consideração a evolução histórica do desenvolvimento, tem-se inicialmente o código conhecido como: “código espaguete”. Representado por uma série de linhas de código mal organizadas, repetitivas e com excessivos desvios (comandos GOTO), este tipo de desenvolvimento foi superado com o surgimento da programação estrutural que trouxe por sua vez as chamadas sub-rotinas (funções ou procedimentos), reduzindo então a duplicação de códigos e possibilitando a reutilização destes.

A evolução de maior efeito surgiu, portanto, com a Orientação a Objetos (OO), formada através do conceito objeto como uma representação de elementos do mundo real e incorporando também outros conceitos como: Classe, Encapsulamento, Herança e Polimorfismo que evoluíram em necessidade as práticas utilizadas na programação estrutural, possibilitando agora a manutenção simples dos códigos, criação de bibliotecas reutilizáveis a diferentes projetos, diminuição nos prazos de entrega, facilidade no ato de gerar estimativas de demandas, entre outros. Do ponto de partida Orientação a Objetos, cabe finalmente desbravar os Padrões de Desenvolvimento (Design Patterns).

Padrões de Projetos ou Design Patterns são modelos que consistem em auxiliar os desenvolvedores através de boas práticas, a atingir uma estrutura favorável em seus projetos.

Dica - Arquitetura de Software - Design Patterns

Popularizados pelos especialistas: Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, os Design Patterns foram publicados em 1994 através do livro: Design Patterns: Elements of Reusable Object-Oriented Software. Ao todo, 23 padrões de projetos foram catalogados com o intuito de auxiliar na prevenção de problemas (vivenciados e testados), sendo especificados inicialmente com exemplos nas linguagens C++ e SmallTalk.

Atenção - Arquitetura de Software - Design Patterns

Estes padrões ficaram e são conhecidos hoje por Padrões GoF (abreviação de “Gang of Four” ou “Gangue dos quatro”, remetendo aos autores do Livro).

Você Sabia - Arquitetura de Software - Pattern - Christopher Alexander

Diante da aceitação do livro, o assunto ganhou tamanha força que alcançou outras plataformas como: .NET, Java, PHP e Delphi. Inclusive outros Padrões (Patterns) surgiram através dessa motivação, exemplo estes são: MVC, MVP (Derivado do MVC), MMVM, e, o também abrangente GRASP (contemplando 9 padrões).

Entre os pontos positivos dos Padrões de Desenvolvimento estão:

  • A Reutilização e Flexibilidade de componentes após o desfecho de projetos;
  • A Facilidade no desenvolvimento;
  • A Agilidade no desenvolvimento através da utilização de propostas catalogadas, mapeadas, testadas e aprovadas;
  • Manutenções e modificações sem dificuldade;
  • Elucidação dos princípios básicos da Orientação a Objetos.

Considerações Finais:

Inerente a Arquitetura de Software, os Padrões de Desenvolvimento (Design Patterns), tem sido adotados em larga escala atualmente pelos desenvolvedores, que, com o tempo, variam entre os Patterns disponibilizados, uns de forma experimental e criteriosa, outros de forma rígida e irredutível para atingir o máximo do padrão escolhido, essa última menos segura.

É visto que, em determinados momentos, alguns desenvolvedores tentam utilizar os padrões desenfreadamente como se estivessem dentro de uma “bolha de certezas”, quando isso acontece, na maioria dos casos, o projeto atinge um nível de complexidade muito alto, impossibilitando a manutenção, e, frustrando a criatividade que se limitará a quebra de conceitos empregados por “remendos”, justificando atender aos prazos curtos.

A proposta é que, se utilizem dos padrões com bom senso, alcançando a maturidade de criarem-se soluções próprias (veja que somente neste momento é citada a palavra solução), facilitando a adaptação de quaisquer solicitações do Cliente diante de projetos em andamento (em vigência), ou que serão assumidos posteriormente.

Seguindo essa linha, o modelo em padrões somado a outras estratégias como Desenvolvimento em Camadas, gerenciamento do ciclo de vida de uma aplicação através de ferramentas ALM, adoção de um processo de desenvolvimento ágil, padronização de código, técnicas de programação, modelagem e Orientação a Objetos, podem trazer grandes resultados.

Na próxima publicação será iniciada a série: Arquitetura em Camadas, com um exemplo prático sobre o modelo 3-Tier (aplicação em 3 camadas) .

Referências Bibliográficas:

http://pt.wikipedia.org/wiki/Arquitetura_de_software

http://www.mindspring.com/~mgrand/pattern_synopses2.htm

http://books.google.com.br/books?id=nv4ZbkhP-nsC&pg=PA168&lpg=PA168&dq=c%C3%B3digo+espaguete&source=bl&ots=Z37KsTg3G6&sig=bAf-rWnNGWsLk_tbmtuy0PeAYUE&hl=pt-BR&sa=X&ei=QbawU_GjC8qnsASAg4DgCQ&ved=0CFQQ6AEwCA#v=onepage&q&f=false

http://pt.wikipedia.org/wiki/C%C3%B3digo_espaguete

http://pangeanet.org/profiles/blogs/o-antipadrao-codigo-espaguete

http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturada

http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node7.html

http://www.training.com.br/lpmaia/pub_prog_oo.htm

http://javafree.uol.com.br/topic-5600-O-que-e-Design-Patterns.html

http://en.wikipedia.org/wiki/Design_Patterns

http://pt.wikipedia.org/wiki/Modelo_em_tr%C3%AAs_camadas

http://www.princiweb.com.br/blog/programacao/design-patterns/o-que-sao-design-patterns.html

http://pt.stackoverflow.com/questions/22403/por-que-separar-camadas-quais-os-benef%C3%ADcios-de-uma-arquitetura-multicamada

http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software

http://pt.wikipedia.org/wiki/Arquitetura_multicamada

http://en.wikipedia.org/wiki/Design_Patterns

http://pt.wikipedia.org/wiki/Christopher_Alexander

Sobre o autor

Thiago Richard Vanicore

Thiago Richard Vanicore formou-se em análise e desenvolvimento de sistemas, possui certificação ITIL Foundation V2 e entre seus conhecimentos estão: ASP .Net (WebForms/MVC5/Web API) C#, HTML5, Html/XHtml, CSS3, JQuery, JQuey Mobile, JavaScript, Xml, Ajax, Json, Microsoft SqlServer, MySql, Firebird, Azure, Visual Studio Online, Scrum, UML, CRM, Quality Assurance, CTI (Computer Telephony Integration) MPSBR (Melhoria de Processos do Software Brasileiro).

Link permanente para este artigo: http://linksinergia.com.br/2014/07/02/arquitetura-de-software-para-desenvolvimento-introducao/