2.25.2009

Arquiteto de Software ou Programador Senior ou Analista de Sistemas Senior ???

Software Architect or Senior Programmer or Senior System Analyst ?

O que 'e isto ? O que 'e um arquiteto de software ?
Esta posicao profissional existe nas empresas latino americanas ? Existe nas empresas brasileiras ???

Sim, em algumas empresas existe SIM ! Muito poucas existem bem definidas...

Mas na maioria acreditam que um arquiteto de software deva ser um programador senior e um analista de sistemas senior, os dois ! Ou um dos dois. Veja que para se chegar a ser um bom arquiteto de software com CERTEZA, ele teve um dia o papel dedicado de um programador senior, analista de sistemas senior, alguns ate um analista de suporte, mas ele, ele quem ???
O profissional formado em tecnologia da informacao e carreira de base matematica, com pelo menos experiencia em algumas linguagens de programacao, ambiente de sistemas operacionais e estrutura de processamento, que tambem especificou definicoes nao funcionais e funcionais em notacao UML, assim cumprindo o papel de arquiteto de software de um projeto de software. Portanto o mercado de TI NECESSITA deste profissional cada vez mais no Brazil ou Brasil, mas cada vez mais ha uma BAGUNCA nos conceitos e objetivos desta posicao profissional que se confundem com os analistas de sistemas e que assim sao responsaveis pelo design da aplicacao e que trabalham em conjunto com os arquitetos de software, assim como a implementacao fica a cargo dos engenheiros de software, programadores seniors, pleno e juniores, hoje muitos projetos de software se classificam em risco ALTO de resultarem em negativas informacoes nao esperadas pelas empresas, por motivo de nao conseguir mitigar os requisitos funcionais e nao funcionais para uma arquitetura de software boa, desenvolvida de uma forma bem definida e classificada de acordo com o requerimentos a alcancar pelo projeto.

Acredito que estamos em uma fase TRIASSICA na arquitetura de software, muitos irao confundir os papeis, posicoes profissionais e funcoes...

O arquiteto de software de uma aplicacao 'e um profissional que atua em um nivel acima de programadores, analistas de sistemas e DBAs. Sua funcao tem como objetivos compor uma solucao, dado os requisitos de uma aplicacao distribuida ou nao, utilizar as tecnologias disponiveis.
'E responsavel por tomar decisoes tais como :
  • A linguagem de programacao esta adequada a escolha para solucao ?
  • Havera ganhos reais em encapsular a logica de negocios em EJB ou CORBA ?
  • Havera ganhos de mudarmos alguma estrutura ou adicionarmos uma estrutura nova de aplicacao no projeto que ja funciona ?
  • E suficiente esta arvore de objetos para tratar, mitigar, validar as informacoes da aplicacao ?
  • A aplicacao web estara suficiente seguindo o modelo MVC ?
  • As operacoes necessitarem comunicacao assincrona?
  • Utilizaremos XML para interface com outras aplicacoes?
  • Sera necessario disponibilizar WebService ?
  • Existe um framework ? Vamos customizar ? Utilizar uma pronta?(Maioria dos casos)
  • A aplicacao esta modelada orientada a servicos ? Ha necessidade ?
O trabalho do arquiteto de software ser'a em garantir que a aplicacao seja implementada de modo coerente, fazendo o melhor uso possivel das tecnologias empregadas e entregando valor real para os clientes e/ou usuarios da aplicacao com uma relacao custo/beneficio favoravel.

Abaixo a definicoes segundo alguns grupos, empresas que influenciam as atividades de arquitetura de software :

According to the Rational Unified Process: “Software architecture encompasses the significant decisions about the organization of a software system. The selection of the structural elements and their interfaces by which the system is composed together with their behavior as specified in the collaboration among those elements. The composition of the structural and behavioral elements into progressively larger subsystems, the architectural style that guides this organization, these elements, and their interfaces, their collaborations, and their composition. Software architecture is concerned not only with structure and behavior but also with usage, functionality, performance, resilience, reuse, comprehensibility, economic and technology constraints and trade-offs, and aesthetic issues.”[1] [1]
Author : Unified Process: An Introduction


That is a pretty lengthy definition, so let's look at a little simpler definition provided by the SunTone Architecture Methodology: Architecture is a set of structuring principles that enables a system to be comprised of a set of simpler systems each with its own local context that is independent of but not inconsistent with the context of the larger system as a whole.[2] [2]
Author : Sun Microsystems, Inc.


O papel de um arquiteto :

“The ideal architect should be a person of letters, a mathematician, familiar with
historical studies, a diligent student of philosophy, acquainted with music, not ignorant of
medicine, learned in the responses of jurisconsults, familiar with astronomy and
astronomical calculations.”

Isto seria um sonho das empresas...

—Vitruvius, circa 25 BC
Vitruvius was not referring to a software architect, but the basic idea is that the architect
should have the following characteristics. An architect should be a person who is well-
rounded, mature, experienced, educated, learns quickly, a leader, communicates well and
can make the difficult decision when necessary. For architects to be well-rounded, they
must have a working knowledge of the business or problem domain. They can gain this
knowledge through experience or education. In addition, architects must have a broad
knowledge of technology. An architect might have first-hand experience with a particular
technology, but they must have at least a general understanding of competing
technologies to make informed decisions about which technology can work best. A good
architect evaluates all possible solutions to a problem regardless of the technology being
used.


O que um arquiteto de software faz ???

O que difere entre um arquiteto de software comparado a um programador senior ? Esta e um quetionamento COMUM.
O designer da aplicacao e construido, concedido com o que acontece quando um botao e pressionado e um arquiteto de software concede seu apoio como central a resolucao do problema com o que acontece quando 12(doze) mil usuarios pressionam o mesmo botao, entao aparece bem definida o momento que os engenheiros de software(analistas de sistemas/programadores) devem ter trabalho compartilhado com os arquiteto(s) de software do projeto, sendo que a reflexao do arquiteto de software deve estar participativo em todas as camadas do projeto, mas percebeu que o arquiteto de software influencia na arquitetura quando pressionar o botao, mas quem define sao os designers(os Analistas de Sistemas). Um arquiteto mitiga os riscos tecnicos associados com o sistema, riscos usualmente classificados com os niveis de servicos requeridos and podem ocasionalmente ser associados com os requisitos de negocio do projeto de software.


Existem certificacoes boas e associacoes no mundo e grupos formados virtualmente no Brazil com o objetivo de fortificar esta posicao, segue abaixo :

SCEA - Sun Certified Enterprise Architect (Java Enterprise Edition)
http://www.sun.com/training/certification/java/scea.xml

The Carnegie Mellon® Software Engineering Institute (SEI)
http://www.sei.cmu.edu/architecture/definitions.html

International Association of Software Architects (IASA)
http://www.iasahome.org/web/home/home

OMG - Object Management Group
http://www.omg.org


* Eu coloquei parte do texto em portugues e ingles, pois para caracterizar nossa profissao que estes idiomas se entrelacam, pois entre engenheiros de software, arquitetos de softwares, programadores, DBAs nao existe varios idiomas apenas um : 0 e 1, ou seja comunicacao binaria !


No comments:

LinuX road Specialist

Phase 1 – Start Using it Phase 2 –  Read the best books on Linux Phase 3 – Try different distros Phase 4 –  Follow essential Linux websi...